# Integration action traits

As opposed to [local action traits](/foundations-module/actions/local-action-traits.md) and [extension action traits](/foundations-module/actions/extension-action-traits.md), integration action traits apply **only** to *initializable* and *setupable* objects. They are normally used for piping other actions at the end of the current one, if the current action is completed successfully.

They are similar to the extension action traits but have a few notable differences:

* Their methods are always prefixed with `integrate_`.
* The methods are called *after* the extension traits.
* The methods ***can*** return a different exception type so, in case of failure, the result may be wrapped in an exception of the proper type.
* The integration traits inherit different corresponding traits.

Let's use as an example the default `InitializableTrait` that you can find [here](https://github.com/deep-web-solutions/wordpress-framework-foundations/blob/master/src/includes/Actions/Initializable/InitializableTrait.php). If you check the `initialize` method, all the points above should be obvious by looking at the second `elseif` statement.

A good example of an integration trait is the [`SetupOnInitializationTrait`](https://github.com/deep-web-solutions/wordpress-framework-foundations/blob/master/src/includes/Actions/Initializable/Integrations/SetupOnInitializationTrait.php) which automagically calls the `setup` method of an object that initialized successfully and is also setupable.

{% hint style="info" %}
The Foundations module comes with a few pre-built piping actions. Make sure to check them out on GitHub for the initializable objects [here ](https://github.com/deep-web-solutions/wordpress-framework-foundations/tree/master/src/includes/Actions/Initializable/Integrations)and for the setupable objects [here](https://github.com/deep-web-solutions/wordpress-framework-foundations/tree/master/src/includes/Actions/Setupable/Integrations).
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://framework.deep-web-solutions.com/foundations-module/actions/integration-action-traits.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
