> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cognigy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Inject Transformer

<Warning>
  In Cognigy.AI 2025.25.0, transformers will start using the `axios` library for handling HTTP requests internally instead of `request-promise`. This change occurs to improve security and maintainability. The following HTTP request options will still be supported:

  * **URL configuration** — `uri`, `url`
  * **Request method** — `method`
  * **Request headers and configuration** — `headers`
  * **Request body** — `form`, `json`
  * **Query parameters** — `qs`, `qsStringifyOptions`
  * **Authentication** — `auth`
  * **Connection and network** — `proxy`, `maxRedirects`, `gzip`, `encoding`

  If you use other HTTP request options, review your transformer code to ensure it is compatible with the `axios` library before the release of Cognigy.AI 2025.25.0.
</Warning>

The *Inject Transformer* converts the webhook payload from an external service before you call an [Inject API request](/ai/agents/deploy/endpoints/inject-and-notify), which sends the data to the Flow. With the inject transformer, you don't need a service that translates the webhook payload of the external service into the correct format for the Inject API request. You can handle this conversion in the inject transformer by parsing the payload to return only the necessary values.

You can configure the inject transformer in the `handleInject` function in the [Endpoint settings or via CLI](/ai/for-developers/transformers/overview#working-with-transformers).

## Restrictions

* The inject transformer is supported only for webhook- and socket-based Endpoints.

- The return value is validated against a set of rules. If these rules aren't met, the transformer throws an error. The following rules apply:

  * `userId` is a string with up to 256 characters.
  * `sessionId` is a string with up to 256 characters.
  * `text` is a string with up to 10,000 characters.
  * `data` is an object.

## Transformer Function Arguments

The following table shows an overview of the function arguments:

| Argument | Description                                                                  |
| -------- | ---------------------------------------------------------------------------- |
| endpoint | The configuration object for the [Endpoint](#endpoint-configuration-object). |
| request  | The Express request object with a JSON-parsed body.                          |
| response | The Express response object.                                                 |

### Endpoint Configuration Object

<Accordion title="endpoint Object Properties">
  | Property              | Type      | Description                                                                                                             |
  | --------------------- | --------- | ----------------------------------------------------------------------------------------------------------------------- |
  | `_id`                 | `string`  | The Endpoint's Reference ID.                                                                                            |
  | `channel`             | `string`  | The Endpoint's [channel](/ai/agents/develop/nodes/channels).                                                            |
  | `URLToken`            | `string`  | The URL Token, found in the [Input object](/ai/agents/deploy/endpoints/inject-and-notify#how-to-use-inject-and-notify). |
  | `name`                | `string`  | The Endpoint's name.                                                                                                    |
  | `flowId`              | `string`  | The Reference ID of the specified Flow to which the Endpoint points to.                                                 |
  | `entrypoint`          | `string`  | The Entrypoint of the Endpoint.                                                                                         |
  | `active`              | `boolean` | The flag to activate or deactivate the Endpoint.                                                                        |
  | `nluConnectorId`      | `string`  | ID of the selected NLU connector for the Endpoint.                                                                      |
  | `useAnalytics`        | `boolean` | The flag to collect analytics data for the Endpoint.                                                                    |
  | `storeDataPayload`    | `boolean` | The flag to store data payloads into analytics for the Endpoint.                                                        |
  | `useConversations`    | `boolean` | The flag to collect conversations history for the Endpoint.                                                             |
  | `maskIPAddress`       | `boolean` | The flag to mask sensitive IP addresses in input object and analytics data.                                             |
  | `maskAnalytics`       | `boolean` | The flag to mask sensitive data in analytics for the Endpoint.                                                          |
  | `maskLogging`         | `boolean` | The flag to mask sensitive data in logs for the Endpoint.                                                               |
  | `useContactProfiles`  | `boolean` | The flag to use Contact Profiles for the Endpoint.                                                                      |
  | `useDashbotAnalytics` | `boolean` | The flag to use Dashbot for collecting analytics data.                                                                  |
  | `dashbotApikey`       | `string`  | The API key of the Dashbot bot for analytics collection.                                                                |
  | `dashbotPlatform`     | `string`  | The selected platform of the Dashbot bot for analytics collection.                                                      |
  | `settings`            | `object`  | Optional Endpoint-specific settings. For example, Facebook Page token.                                                  |
  | `handoverSettings`    | `object`  | Settings to configure a handover provider.                                                                              |
  | `createdAt`           | `number`  | Unix timestamp when the Endpoint was created.                                                                           |
  | `lastChanged`         | `number`  | Unix timestamp when the Endpoint was last modified.                                                                     |
  | `createdBy`           | `string`  | Email of the user who created the Endpoint.                                                                             |
  | `lastChangedBy`       | `string`  | Email of the user who last modified the Endpoint.                                                                       |
</Accordion>

## Return Values

The inject transformer returns a valid user ID, session ID, text, and data. These return values need to match the format of the payload of the Endpoint you are using. The payload format is specific to the Endpoint type you use, for example, Alexa or Facebook (Meta) Messenger. Read the documentation of the [specific Endpoint](/ai/agents/deploy/endpoint-reference/overview) to know how to format the payload.

If the inject transformer returns a falsy value, the output is discarded and not sent to the Inject API request.

Here is an example of the correct return format for a webhook-based Endpoint:

```js theme={null}
handleInject: async ({ endpoint, request, response }) => {
    const webhookPayload = request.body;
    
    // Parse the webhook payload and extract necessary data
    const userId = webhookPayload.user.id;
    const sessionId = webhookPayload.session.id;
    const text = webhookPayload.message.text;
    const data = {
        source: webhookPayload.source,
        timestamp: webhookPayload.timestamp
    };
    
    return {
        userId,
        sessionId,
        text,
        data
    };
}
```
