Configure a custom action configure-an-action

If you are using a third-party system to send messages or if you want journeys to send API calls to a third-party system, use custom actions to configure its connection to your journey. For example you can connect to the following systems with custom actions: Epsilon, Slack, Adobe Developer, Firebase, etc.

Custom actions are additional actions defined by technical users and made available to marketers. Once configured, they appear in the left palette of your journey, in the Action category. Learn more in this page.

Limitations custom-actions-limitations

Custom actions come with a few limitations listed in this page.

In custom action parameters, you can pass a simple collection, as well as a collection of objects. Learn more about collection limitations in this page.

Also note that the custom actions parameters have an expected format (example: string, decimal, etc.). You must be careful to respect these expected formats. Learn more in this use case.

Custom actions support JSON format only when using request or response payloads.

Best practices custom-action-enhancements-best-practices

When choosing an endpoint to target using a custom action, be sure that:

  • This endpoint can support journey’s throughput, using configurations from the Throttling API or Capping API to limit it. Be cautious that a throttling configuration cannot go below 200 TPS. Any endpoint targeted will need to support at least 200 TPS.
  • This endpoint needs to have a response time as low as possible. Depending of your expected throughput, having a high response time could impact the actual throughput.

A capping limit of 300,000 calls over one minute is defined for all custom actions. In addition, the default capping is performed per host and per sandbox. For example, on a sandbox, if you have two endpoints with the same host (eg: and, the capping will apply for all endpoints under the host. “endpoint1” and “endpoint2” will share the same capping configuration and having one endpoint reach the limit will have an impact on the other endpoint.

This limit has been set based on customers usage, to protect external endpoints targeted by custom actions. You need to take this into account in your audience-based journeys by defining an appropriate reading rate (5000 profiles/s when custom actions are used). If needed, you can override this setting by defining a greater capping or throttling limit through our Capping/Throttling APIs. See this page.

You should not target public endpoints with custom actions for various reasons:

  • Without proper capping or throttling, there is a risk of sending too many calls to a public endpoint that may not support such volume.
  • Profile data can be sent through custom actions, so targeting a public endpoint could lead to inadvertently sharing personal information externally.
  • You have no control on the data being returned by public endpoints. If an endpoint changes its API or starts sending incorrect information, those will be made available in communications sent, with potential negative impacts.

In Journey Optimizer, you can apply data governance and consent policies to your custom actions to prevent specific fields from being exported to third-party systems or exclude customers who have not consented to receive email, push or SMS communication. For more information, refer to the following pages:

Configuration steps configuration-steps

Here are the main steps required to configure a custom action:

  1. In the ADMINISTRATION menu section, select Configurations. In the Actions section, click Manage. Click Create Action to create a new action. The action configuration pane opens on the right side of the screen.

  2. Enter a name for your action.

    note note
    Only alphanumeric characters and underscores are allowed. The maximum length is 30 characters.
  3. Add a description to your action. This step is optional.

  4. The number of journeys that use this action is displayed in the Used in field. You can click the View journeys button to display the list of journeys using this action.

  5. Define the different URL Configuration parameters. See this page.

  6. Configure the Authentication section. This configuration is the same as for data sources. See this section.

  7. Define the Action parameters. See this page.

  8. Click Save.

    The custom action is now configured and ready to be used in your journeys. See this page.

    note note
    When a custom action is used in a journey, most parameters are read-only. You can only modify the Name, Description, URL fields and the Authentication section.

Endpoint configuration url-configuration

When configuring a custom action, you need to define the following Endpoint Configuration parameters:


  1. In the URL field, specify the URL of the external service:

    • If the URL is static, enter the URL in this field.

    • If the URL includes a dynamic path, enter only the static part of the URL, that is, the scheme, the host, the port, and, optionally, a static part of the path.


      You will specify the dynamic path of the URL when adding the custom action to a journey. Learn more.

    note note
    For security reasons, we strongly recommend that you use the HTTPS scheme for the URL. We don’t allow the use of Adobe addresses that are not public and the use of IP addresses.
    Only the default ports are allowed when defining a custom action: 80 for http and 443 for https.
  2. Select the call Method: it can be either POST, GET or PUT.

    note note
    The DELETE method is not supported. If you need to update an existing resource, select the PUT method.
  3. Define the headers and query parameters:

    • In the Headers section, click Add a header field to define the HTTP headers of the request message to be sent to the external service. The Content-Type and Charset header fields are set by default. You cannot delete these fields. Only the Content-Type header can by modified. Its value should respect the JSON format. Here is the default value:

    • In the Query parameters section, click Add a Query parameter field to define the parameters you want to add in the URL.

  4. Enter the label or name of the field.

  5. Select the type: Constant or Variable. If you have selected Constant, then enter the constant value in the Value field. If you have selected Variable, then you will specify this variable when adding the custom action to a journey. Learn more.

    note note
    After you have added the custom action to a journey, you can still add header or query parameters fields to it if the journey is in draft status. If you do not want the journey to be affected by configuration changes, duplicate the custom action and add the fields to the new custom action.
    Headers are validated according to field parsing rules. Learn more in this documentation.

mTLS protocol support mtls-protocol-support

You can now use Mutual Transport Layer Security (mTLS) to ensure enhanced security in outbound connections to Adobe Journey Optimizer custom actions. mTLS is an end-to-end security method for mutual authentication that ensures that both parties sharing information are who they claim to be before data is shared. mTLS includes an additional step compared to TLS, in which the server also asks for the client’s certificate and verifies it at their end.

Mutual TLS (mTLS) authentication is supported in custom actions. There is no additional configuration required in the custom action or journey to activate mTLS; it occurs automatically when an mTLS-enabled endpoint is detected. Learn more.

Define the payload parameters define-the-message-parameters

  1. In the Request section, paste an example of the JSON payload to send to the external service. This field is optional and only available for POST and PUT calling methods.

  2. In the Response section, paste an example of the payload returned by the call. This field is optional and available for all calling methods. For detailed information on how to leverage API call responses in custom actions, refer to this page.

The response capability is currently available in beta.


The payload example cannot contain null values. Field names in the payload cannot contain a “.” character. They cannot start with a “$” character.

You will be able to define the parameter type (e.g.: string, integer, etc.).

You will also have a choice between specifying if a parameter is a constant or a variable:

  • Constant means that the value of the parameter is defined in the action configuration pane by a technical persona. The value will be always the same across journeys. It will not vary and the marketer won’t see it when using the custom action in the journey. It could be for example an ID the third-party system expects. In that case, the field on the right of the toggle constant/variable is the value passed.
  • Variable means the value of the parameter will vary. Marketers using this custom action in a journey will be free to pass the value they wants or to specify where to retrieve the value for this parameter (e.g. from the event, from Adobe Experience Platform, etc.). In that case, the field on the right of the toggle constant/variable is the label marketers will see in the journey to name this parameter.