From 6b0483ea089c302c6b04afd79ca40a8b20bca768 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 9 Jul 2025 17:52:55 +0100 Subject: [PATCH 01/33] Suggested Mapping T&Cs added + update to destination action set up --- src/connections/destinations/actions.md | 215 ++++++++++++------------ 1 file changed, 111 insertions(+), 104 deletions(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index 68dd8bef64..322eb4cfe6 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -3,19 +3,22 @@ title: Destination Actions plan: dest-actions --- -The Destination Actions framework improves on classic destinations by enabling you to see and control how Segment sends the event data it receives from your sources, to actions-based destinations. Each Action in a destination lists the event data it requires, and the event data that is optional. +The Destination Actions framework improves on classic destinations by enabling you to see and control how Segment sends the event data it receives from your sources to actions-based destinations. Each Action in a destination lists the event data it requires, and the event data that is optional. -You can also choose which event types, event names, or event property values trigger an Action. These Triggers and mappings make it possible to send different versions of the Action, depending on the context from which it is triggered. +You can also choose which event types, event names, or event property values trigger an Action. These Triggers and Mappings make it possible to send different versions of the Action, depending on the context from which it is triggered. -Each Actions-framework Destination you see in the Segment catalog represents a feature or capability of the destination which can consume data from your Segment source. The Action clearly lists which data from the events it requires, and which data is optional. For example, Amplitude requires that you always send a `LogEvent` , or Slack always requires a `PostMessage`. Each Action also includes a default mapping which you can modify. +Each Actions-framework Destination you see in the Segment catalog represents a feature or capability of the destination which can consume data from your Segment source. The Action clearly lists which data from the events it requires and which data is optional. For example, [Amplitude](/docs/connections/destinations/catalog/actions-amplitude) requires that you always send a `LogEvent` and [Slack](/docs/connections/destinations/catalog/actions-slack) always requires a `PostMessage`. Each Action also includes a default mapping which you can modify. ## Benefits of Destination Actions -- **Easier setup**: Users see fewer initial settings which can decrease the time spent configuring the destination. -- **Increased transparency**: Users can see the exact data that is sent to the destination, and when Segment sends it. For example, users can see exactly when Segment sends an IP address to FullStory or an AnonymousId to Amplitude. -- **Improved customization**: Users can determine how the events their sources trigger and map to actions supported by the destination. For example, define the exact events that are considered purchases by Braze. +The advantages of using Destination Actions include: + +- **Easier setup**: Fewer initial settings which can decrease the time spent configuring the destination. +- **Increased transparency**: You can see the exact data that is sent to the destination and when Segment sends it. For example, users can see exactly when Segment sends an IP address to [FullStory](https://www.fullstory.com/){:target="_blank"} or an AnonymousId to Amplitude. +- **Improved customization**: You can determine which events from your sources trigger actions, and map the events to destination-supported actions. For example, you can define exactly which events are considered purchases by [Braze](https://www.braze.com/){:target="_blank"}. - **Partner ownership**: Partners can own and contribute to any Actions-based destination that use cloud and device mode (web). + ## Available Actions-based Destinations The following Actions-based Destinations are available: @@ -24,24 +27,25 @@ The following Actions-based Destinations are available: ## Destination Actions compatibility -- Destination Actions are available to all customers on all Segment plans. -- Destination Actions do not require that you disable or change existing destinations. However, to prevent data duplication in the destination tool, you should make sure you aren't sending the data through both a standard destination and the Actions destination at the same time. -- You can still use the [Event Tester](/docs/connections/test-connections) with Destination Actions, and event delivery metrics are still collected and available in the destination information pages. -- If you are using Protocols, Destination Actions actions are applied *after* [schema filters](/docs/protocols/enforce/schema-configuration/) and [transformations](/docs/protocols/transform/). If you are using [destination filters](/docs/connections/destinations/destination-filters/), Actions are applied after the filters - meaning that they are not applied to data that is filtered out. -- Destination Actions can not yet be accessed or modified using the Segment APIs. +Destination Actions are available to all customers on all Segment plans. You do not need to disable or change existing destinations to use Destination Actions. However, to prevent data duplication in the destination tool, ensure that you are not sending data through both a standard destination and the Actions destination at the same time. + +- You can use the [Event Tester](/docs/connections/test-connections) with Destination Actions. Event delivery metrics are collected and available in the destination information pages. +- If you are using [Protocols](/docs/protocols/), Destination Actions actions are applied **after** [schema filters](/docs/protocols/enforce/schema-configuration/) and [transformations](/docs/protocols/transform/). +- If you are using [Destination Filters](/docs/connections/destinations/destination-filters/), Actions are applied after the filters. They are not applied to data that is filtered out. +- Destination Actions can not be accessed or modified using the Segment APIs yet. ## Components of a Destination Action -A Destination Action contains a hierarchy of components, that work together to ensure the right data is sent to the destination. +A Destination Action contains a hierarchy of components that work together to ensure the right data is sent to the destination. | Component | Description | | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Global Settings | Define authentication and connection-related information like API and Secret keys. | -| Mappings | Handle the individual calls to the destination. In them, you define what type of call you want to make to the destination, and what Triggers that call. Individual Destination Actions may come enabled with some predefined mappings to handle common events like Screen calls, Identify calls, and Track calls. Mappings have two components that make this possible: **Triggers** and an **Action**. | -| Triggers | Enable you to define *when* the corresponding Action fires. As part of a Trigger, you can use condition-based filters to narrow the scope of the Trigger. Triggers don't support matching on event fields containing `.$` or `.$.`, which reference an array type.

Self-service users can add a maximum of two conditions per Trigger. | -| Actions | Determine the information sent to the destination. In the Configure action section, you map the fields that come from your source, to fields that the destination expects to find. Fields on the destination side depend on the type of action selected. | +| Mappings | Handle the individual calls to the destination. In them, you define what type of call you want to make to the destination and what triggers that call. Individual Destination Actions may come enabled with some predefined mappings to handle common events like Screen calls, Identify calls, and Track calls. Mappings have 2 components that make this possible: **Triggers** and an **Action**. | +| Triggers | Allow you to define when the corresponding Action fires. As part of a Trigger, you can use condition-based filters to narrow the scope of the Trigger. Triggers don't support matching on event fields containing `.$` or `.$.`, which reference an array type.

Self-service users can add a maximum of 2 conditions per Trigger. | +| Actions | Determine the information sent to the destination. In the **Configure action** section, you map the fields that come from your source to fields that the destination expects to find. Fields on the destination-side depend on the type of action selected. | -For example, in the Amplitude (Actions) destination, you define your API and Secret keys in the destination's global settings. Then, the provided Page Calls mapping: +For example, in the Amplitude (Actions) destination, you define your API and Secret keys in the destination's global settings. Then the provided Page Calls mapping: 1. Triggers the action on all incoming Page events. 2. Runs the Log Event action, to map your incoming data to Amplitudes properties. @@ -49,58 +53,59 @@ For example, in the Amplitude (Actions) destination, you define your API and Sec ## Set up a destination action -To set up a new Actions-framework destination for the first time: +To set up a new Actions-framework destination: -1. Log in to the Workspace where you want to add the new destination, go to the Catalog page, and click the Destinations tab. (You can also get to this screen by clicking **Add Destination** either from an existing Source, or from your list of existing destinations.) -2. Click the **Destination Actions** category in the left navigation, then click the destination you want to add. -3. From the preview screen that appears, click **Configure**. -4. If prompted, select the source you want to connect to the new destination. -5. Enter your credentials. This could be an API Key and secret key, or similar information that allows the destination to connect to your account. -6. Next, choose how you want to set up the destination, and click **Configure Actions**. - * You can choose **Quick Setup** to use the default mappings, or choose **Customized Setup** (if available) to create new mappings and conditions from a blank state. You can always edit these mappings later. - * *(Optional)* Click **Suggest Mappings** to get suggested mappings. Learn more about [suggested mappings](#suggested-mappings). -7. Once you're satisfied with your mappings, click **Create Destination**. +1. Log in to the Segment Workspace you want to add your destination to. Go to the **Connections > Catalog** page and click the **Destinations** tab. You can also click **Add Destination** either from an existing Source or from your list of existing destinations. +2. Select the **Destination Actions** category and select the destination you want to add. +3. Click **Add destination** and configure your destination, selecting the source you want to connect to the new destination. +4. Enter your credentials in the **Settings** of your new destination. This could be an API Key and Secret Key, or similar information that allows the destination to connect to your account. +5. Next, go to **Mappings** to configure Actions. Add new mappings and select the Action you would like to use. + * **(Optional)** Click **Suggest Mappings** to get suggested mappings. Learn more about [suggested mappings](#suggested-mappings). +6. Once you're satisfied with your mappings, click **Save and enable**. -> info "" -> You must configure and enable at least one mapping to handle a connected source's event(s) in an Actions-framework destination in order for data to send downstream. -> Events send downstream in the order in which they appear in the mappings UI. There is no mechanism through which you can control the order of events that send to the downstream destinations outside of that. +You must configure and enable at least 1 mapping to handle a connected source's event(s) in an Actions-framework destination for data to flow downstream. +Events flow downstream in the order in which they appear in the mappings UI. There is no mechanism available where you can control the order of events sent to the downstream destinations. ## Migrate a classic destination to an actions-based destination -Moving from a classic destination to an actions-based destination is a manual process. Segment recommends that you follow the procedure below: +Moving from a classic destination to an actions-based destination is a manual process. Segment recommends that you use the following steps to do this: 1. Create the actions-based destination with your development or test source. 2. Copy API keys, connection details, and other settings from the classic destination to the actions-based destination. -3. Refer to the actions-based destination's documentation for information about migrating specific settings. -4. Disable the classic version of the destination, and enable the actions-based version. +3. Refer to the actions-based destination's documentation for information about how to migrate specific settings. +4. Disable the classic version of the destinatio and enable the actions-based version. 5. Verify that data is flowing from the development or test source to the partner tool. -6. Repeat the steps above with your production source. +6. Repeat steps 1-5 with your production source. ### Migrate your destination filters from the classic destination to the actions destination > warning "" -> You can only migrate your destination filters using the Public API if you're on the business tier plan. This functionality isn't available in the Segment app. +> You can only migrate your destination filters using the Public API if you are on the Segment Business Tier plan. This functionality isn't available in the Segment app. To migrate your destination filters to your actions destination from the classic destination: 1. Send a request to the Public API endpoint. - - Use [List Filters from Destination](https://docs.segmentapis.com/tag/Destination-Filters#operation/listFiltersFromDestination){:target="_blank"} . The `destinationId` can be found in the URL while viewing the destination in your Segment workspace. + - Use [List Filters from Destination](https://docs.segmentapis.com/tag/Destination-Filters#operation/listFiltersFromDestination){:target="_blank"}. You can find `destinationId` in the page URL while viewing the destination in your Segment workspace. 2. Grab the response and parse through the `data.filters` object. Each object returned inside the `data.filters` object is an individual filter associated with the specified destination. 4. Send individual `POST` requests to the Public API endpoint. - - Use [Create Filter for Destination](https://docs.segmentapis.com/tag/Destination-Filters/#operation/createFilterForDestination){:target="_blank"} , for each of the filters from step 2. - - Specify the Actions `destinationId`, found in the URL when viewing that destination. The body of the request is the individual filters from step 2. + - Use [Create Filter for Destination](https://docs.segmentapis.com/tag/Destination-Filters/#operation/createFilterForDestination){:target="_blank"}, for each of the filters from step 2. + - Specify the Actions `destinationId`, found in the URL of that destination. The body of the request is the individual filters from step 2. 6. If the bodies of those requests don't already include the field `"enabled": true`, make sure to enable each of those filters after you create them. ### Migrate to an actions-based destination using Destination Filters -For a more comprehensive migration from a classic destination to an actions-based destination, follow the steps outlined below. This implementation strategy is only available for customers on a Segment Business Tier plan with access to [Destination Filters](/docs/connections/destinations/destination-filters/). By adding additional line of defense with Destination Filters, you remove the possibility of duplicate events or dropped events and ensure that events sent before/after a specified `received_at` timestamp are sent to each destination. +For a more comprehensive migration from a classic destination to an actions-based destination, use [Destination Filters](/docs/connections/destinations/destination-filters/). This implementation strategy is only available to customers on a Segment Business Tier plan with access to Destination Filters. By adding an extra line of defense with Destination Filters, you reduce the chance of duplicate events or dropped events and ensure that only events sent before or after a specified `received_at` timestamp are sent to each destination. + +This approach involves configuring a destination filter on both the Classic and Actions destinations. +1. Configure the classic destination filter to block events by the `received_at` field with a certain value. +2. Set up the Actions destination to drop events until the `received_at` timestamp field reaches that same value. -This migration strategy involves configuring a destination filter on both the Classic destination and the Actions destination. Configure the classic destination filter to block events by the `received_at` field with a certain value, and the Actions destination to drop events until the `received_at` timestamp field reaches that same value. Destination Filters within the UI have a limitation where they cannot access any top-level fields, but this is not a limitation for [Destination Filters](https://docs.segmentapis.com/tag/Destination-Filters/){:target="_blank”} created by the [Public API](https://segment.com/docs/api/public-api/){:target="_blank”} using [FQL](https://segment.com/docs/api/public-api/fql/){:target="_blank”}. Because the `received_at` is a top-level field in the payload, you'll need to create a destination filter with the Public API and submit the request with that FQL information described below. +While Destination Filters within the UI cannot access any top-level fields, such as `received_at`, this is not a limitation for [Destination Filters](https://docs.segmentapis.com/tag/Destination-Filters/){:target="_blank”} created by the [Public API](/docs/api/public-api/) using [Filter Query Language (FQL)](/docs/api/public-api/fql/). Since `received_at` is a top-level field in the payload, you need to create a destination filter with the Public API and submit the request with that FQL information described below. -By combining these Filters, Segment sends events through the Classic integration up until a specified time and then blocks events after that time. Then the Actions integration blocks events until that specified time, and only allows events beginning at that specified time. +By combining these Filters, Segment sends events through the Classic integration up until a specified time and then blocks events after that. The Actions integration then blocks events until that specified time and only allows events beginning at that specified time. The following code samples show you how you can create filters for your destinations using the [Create Filter for Destination](https://docs.segmentapis.com/tag/Destination-Filters#operation/createFilterForDestination){:target="_blank”} Public API operation. #### Classic destination -_Endpoint_: `POST` `https://api.segmentapis.com/destination/classic_destination_id_from_url/filters` +Endpoint: `POST` `https://api.segmentapis.com/destination/classic_destination_id_from_url/filters` ``` // JSON BODY : { @@ -119,7 +124,7 @@ _Endpoint_: `POST` `https://api.segmentapis.com/destination/classic_destination_ ``` #### Actions destination -_Endpoint_: `POST` `https://api.segmentapis.com/destination/actions_destination_id_from_url/filters` +Endpoint: `POST` `https://api.segmentapis.com/destination/actions_destination_id_from_url/filters` ``` // JSON BODY : { @@ -137,7 +142,7 @@ _Endpoint_: `POST` `https://api.segmentapis.com/destination/actions_destination_ } ``` -After configuring the Destination Filter on both the Classic and Actions destination, see each destination's Filters tab and enable the filters. After completing the migration, you can disable the Classic destination on the Settings page, and remove each of the filters from both destinations. +After configuring the Destination Filter on both the Classic and Actions destination, go to each destination's **Filters** tab and enable the filters. After completing the migration, you can disable the Classic destination on the Settings page and remove each of the filters from both destinations. ## Edit a destination action You can add or remove, disable and re-enable, and rename individual actions from the Actions tab on the destination's information page in the Segment app. Click an individual action to edit it. @@ -146,77 +151,74 @@ From the edit screen you can change the action's name and mapping, and toggle it ![Screenshot of the Mappings table with several enabled mappings](images/actions-list.png) -When an Action is created, it's disabled by default, to ensure that it's only used after being fully configured. To begin sending data through an Action, enable it on the Actions page by selecting the toggle so that it appears blue. +When an Action is created, it is disabled by default. This ensures that it's only used after being fully configured. To begin sending data through an Action, enable it on the Actions page by clicking the toggle so that it appears blue. ## Disable a destination action -If you find that you need to stop an action from running, but don't want to delete it completely, you can click the action to select it, then click the toggle next to the action's name to disable it. This takes effect within minutes, and disables the action until you reenable it. +If you find that you need to stop an action from running, but don't want to delete it completely, you can select the action and click the toggle next to the action's name to disable it. This takes effect within minutes, and disables the action until you re-enable it. ## Delete a destination action -To delete a destination action: click the action to select it, and click **Delete** (the trash can icon). +To delete a destination action, select the action, click **...** and select **Delete**. This takes effect within minutes, and removes the action completely. Any data that would have gone to the destination is not delivered. Once deleted, the saved action cannot be restored. ## Test a destination action -To test a destination action, follow the instructions in [Event Tester](/docs/connections/test-connections/). You must enable a mapping in order to test the destination. Otherwise, this error occurs: *You may not have any subscriptions that match this event.* +To test a destination action, follow the instructions outlined in [Event Tester](/docs/connections/test-connections/). You must enable a mapping to test the destination. If a mapping is not enabled, the following error message will appear: `You may not have any subscriptions that match this event.` You can also test within the mapping itself. To test the mapping: 1. Navigate to the **Mappings** tab of your destination. 2. Select a mapping and click the **...** and select **Edit Mapping**. -3. In step 2 of the **Set up mappings** page, click **Load event from source** to add a test event from the source, select **Generate sample event** for Segment to generate a sample event for you, or enter your own event. -4. Scroll to step 5 on the page and click **Send test event** to test the mapping and view the response from the destination. +3. In the "Define event trigger" step, click **Load event from source** to add a test event from the source. You can also select **Generate sample event** which allows Segment to generate a sample event for you, or enter your own event. +4. In the "Send test record" step, click **Send test event** to test the mapping and view the response from the destination. > info "Test Mapping might not return the events you're looking for" -> Segment only surfaces a small subset of events for the Test Mapping feature and might not always return the event you're looking for. If you'd like to test with a specific event, copy a specific event from your [Source Debugger](/docs/connections/sources/debugger/) and paste it into the **Add test event** interface. +> Segment only surfaces a small subset of events for the Test Mapping feature and might not always return the event you're looking for. To test with a specific event, copy a specific event from your [Source Debugger](/docs/connections/sources/debugger/) and paste it into the **Add test event** interface. ## Customize mappings -If you use the default mappings for a destination action, you don't *need* to customize the mapping template for the action. You can edit the fields later if you find that the defaults no longer meet your needs. +If you use the default mappings for a destination action, you don't need to customize the mapping template for the action. You can edit the fields later if you find that the defaults no longer meet your needs. -> info "" +> info "Destination limit" > Actions-based destinations have a limit of 50 individual mappings. -To create a custom destination action, start from the Actions tab. -If necessary, click **New Mapping** to create a new, blank action. +To create a custom destination action, start from the Actions tab. If necessary, click **New Mapping** to create a new action. 1. In the edit panel, define the [conditions](#conditions) under which the action should run. -2. Test those conditions to make sure that they correctly match an expected event. - This step looks for events that match the criteria in the [debugger queue](/docs/connections/sources/debugger/), so you might need to Trigger some events with the expected criteria to test your conditions. You can skip the test step if needed, and re-try it at any time. +2. Test those conditions to make sure that they correctly match an expected event. This step looks for events that match the criteria in the [debugger queue](/docs/connections/sources/debugger/), so you might need to trigger some events with the expected criteria to test your conditions. You can skip the test step if needed, and re-try it at any time. 3. Select data models to [enrich your events](/docs/unify/linked-profiles/linked-events/) with. 4. Set up the data mapping from the Segment format to the destination tool format. -- You can click the Source field, then select previously configured Enrichments from the Event Properties tab. -5. Test the mapping with data from a sample event. - The edit panel shows you the mapping output in the format for the destination tool. The **Select Object** option sends the entire object from the event, while the **Edit Object** option lets you map each individual property. You can change your mapping as needed and re-test. + - You can click the Source field, then select previously configured Enrichments from the Event Properties tab. +5. Test the mapping with data from a sample event. The edit panel shows you the mapping output in the format for the destination tool. The **Select Object** option sends the entire object from the event, while the **Edit Object** option lets you map each individual property. You can change your mapping as needed and re-test. 6. When you're satisfied with the mapping, click **Save**. Segment returns you to the Mappings table. 7. In the Mappings table **Status** column, verify that the **Enabled** toggle is on for the mapping you just customized. -> info "" -> The required fields for a destination mapping appear automatically. Click the + sign to see optional fields. +The required fields for a destination mapping appear automatically. Click **+** to see optional fields. -## Suggested mappings +## Suggested Mappings > info "" -> Suggested mappings is fully available for RETL mappings, and is in public beta for event streams and connections. +> Suggested Mappings is fully available for RETL mappings, and is in public beta for event streams and connections. -Segment offers suggested mappings that automatically propose relevant destination fields for both model columns and payload elements. For example, if your model includes a column or payload field named `transaction_amount`, the feature might suggest mapping it to a destination field like `Amount` or `TransactionValue`. This automation, powered by intelligent autocompletion, matches and identifies near-matching field names to streamline the setup. For more information, see [Segment's suggested mappings blogpost](https://segment.com/blog/ai-assisted-magical-mappings/){:target="_blank”} and the [Suggested Mappings Nutrition Label](/docs/connections/reverse-etl/suggested-mappings-nutrition-facts). +Segment offers suggested mappings that automatically propose relevant destination fields for both model columns and payload elements. For example, if your model includes a column or payload field named `transaction_amount`, the feature might suggest mapping it to a destination field like `Amount` or `TransactionValue`. This automation, powered by intelligent autocompletion, matches and identifies near-matching field names to streamline the setup. -> warning "" -> Review the suggested mappings for accuracy before finalizing them as the suggestions aren't guaranteed to be 100% accurate. +To use Suggested Mappings, the workspace owner must first accept the Customer AI Terms and Conditions. Ensure that you review the suggested mappings for accuracy before finalizing them as the suggestions are not guaranteed to be 100% accurate. + +For more information, see [Segment's Suggested Mappings blogpost](https://segment.com/blog/ai-assisted-magical-mappings/){:target="_blank”} and the [Suggested Mappings Nutrition Label](/docs/connections/reverse-etl/suggested-mappings-nutrition-facts). ## Static values -Segment supports 4 static value types in Destination Actions mappings: string, boolean, number, and null. -* To create a string static value, type the string directly into the input field. -* To create boolean, number, and null values, use the **Static values** tab to create the appropriate static value based on its type. +Segment supports 4 static value types in Destination Actions mappings: `string`, `boolean`, `number`, and `null`. +* To create a `string` static value, type the string directly into the input field. +* To create `boolean`, `number`, and `null` values, use the **Static values** tab to create the appropriate static value based on its type. ## Functions In Destination Actions mappings, functions transform event data before it sends to the destination. This enables custom data handling, such as selecting non-null values or formatting fields. ### Coalesce function -The coalesce function takes a primary value and uses it if it is available. If the value isn't available, the function uses the fallback value instead. +The Coalesce function takes a primary value and uses it if it is available. If the value isn't available, the function uses the fallback value instead. ### Case function -The case function allows you to change the casing of a given string value. +The Case function allows you to change the casing of a given string value. ### JSON function @@ -224,15 +226,15 @@ The JSON function allows you to convert an object or array to a JSON encoded str ### Flatten function -The flatten function allows you to flatten a nested object to an object with a depth of 1. Keys are delimited by the configured separator. For example, an object like {a: { b: { c: 1 }, d: 2 } } will be converted to { 'a.b.c': 1, 'a.d': 2 }. +The Flatten function allows you to flatten a nested object to an object with a depth of 1. Keys are delimited by the configured separator. For example, an object like {a: { b: { c: 1 }, d: 2 } } will be converted to { 'a.b.c': 1, 'a.d': 2 }. ### Replace function -The replace function allows you to replace a string, integer, or boolean with a new value. You have the option to replace up to two values within a single field. +The Replace function allows you to replace a `string`, `integer`, or `boolean` with a new value. You have the option to replace up to 2 values within a single field. ### Concatenate function -To combine 2 values in the event variable field, you can concatenate them using plain text and variables together. For example, to prepend the country code to a phone number, enter `+1{{Phone Number}}`. Segment evaluates this field as a string, so placing text next to a variable automatically concatenates them. +To combine 2 values in the event variable field, you can concatenate them using plain text and variables together. For example, to prepend the country code to a phone number, enter `+1{{Phone Number}}`. Segment evaluates this field as a `string`, so placing text next to a variable automatically concatenates them. You can't concatenate event variables and plain text with static values and functions. Adding a static value or function into an input field replaces any previously added event variables and plain text. @@ -241,7 +243,7 @@ You can't concatenate event variables and plain text with static values and func ## Conditions > info "" -> Self-service users can add a maximum of two conditions per Trigger. +> Self-service users can add a maximum of 2 conditions per Trigger. Mapping fields are case-sensitive. The following type filters and operators are available to help you build conditions: @@ -249,8 +251,7 @@ Mapping fields are case-sensitive. The following type filters and operators are - **Event name** (`is`, `is not`, `contains`, `does not contain`, `starts with`, `ends with`). Use these filters to find events that match a specific name, regardless of the event type. - **Event property** (`is`, `is equals to`, `is not`, `is not equals to`, `less than`, `less than or equal to`, `greater than`, `greater than or equal to`, `contains`, `does not contain`, `starts with`, `ends with`, `exists`, `does not exist`). Use these filters to trigger the action only when an event with a specific property occurs. - You can specify nested properties using dot notation, for example `context.app.name`. If the property might appear in more than one format or location, you can use an ANY statement and add conditions for each of those formats. For example, you might filter for both `context.device.type = ios` as well as `context.os.name = "iPhone OS``"` - The `does` `not exist` operator matches both a `null` value or a missing property. +You can specify nested properties using dot notation, for example `context.app.name`. If a property might appear in multiple formats or locations, you can use an `ANY` statement and add conditions for each of those formats. For example, you might filter for both `context.device.type = ios` and `context.os.name = "iPhone OS "`. The `does not exist` operator matches both a `null` value or a missing property. {% comment %} > info "Valid property and trait values" @@ -275,20 +276,22 @@ The available operators depend on the property's data type: | string or numeric | `is less than`, `is less than or equal to`, `is greater than`, `is greater than or equal to` | | boolean | `is true`, `is false` | -You can combine criteria in a single group using **ALL** or **ANY**. Use an ANY to “subscribe” to multiple conditions. Use ALL when you need to filter for very specific conditions. You can only create one group condition per destination action. You cannot created nested conditions. +You can combine criteria in a single group using **`ALL`** or **`ANY`**. Use an `ANY` to “subscribe” to multiple conditions. Use `ALL` when you need to filter for very specific conditions. You can only create one group condition per destination action. You cannot created nested conditions. > info "Unsupported special characters in trigger fields" > Trigger fields don't support double quotes (`"`) or the tilde (`~`) character. -> info "Mapping field limitations" -> In **destination** fields, you can use dot notation to create nested objects and arrays (for example, `info.name` or `info[0].email`), unless the field is enclosed in double quotes (for example, `"user.email"` creates a literal key, not a nested structure). In **source**, dots are only supported for accessing object keys. Literal strings that include a dot (like `user.email`) aren't supported as property names. +## Mapping field limitations +In **destination** fields, you can use dot notation to create nested objects and arrays, such as `info.name` or `info[0].email`. This is not the case if the field is enclosed in double quotes. For example, `"user.email"` creates a literal key, not a nested structure. -> info "Destination Filters" -> Destination filters are compatible with Destination Actions. Consider a Destination Filter when: -> - You need to remove properties from the data sent to the destination -> - You need to filter data from multiple types of call (for example, Track, Page, and Identify calls) -> -> If your use case does not match these criteria, you might benefit from using Mapping-level Triggers to match only certain events. +In **source** fields, dots are only supported for accessing object keys. Literal strings that include a dot, like `user.email`, aren't supported as property names. + +## Destination Filters +Destination Filters are compatible with Destination Actions. Consider a Destination Filter when: +- You need to remove properties from the data sent to the destination. +- You need to filter data from multiple types of call, for example, Track, Page, and Identify calls. + +If your use case does not match these criteria, you might benefit from using Mapping-level Triggers to match only certain events. ## Duplicate Mappings @@ -304,38 +307,42 @@ To duplicate your mappings: Segment creates a disabled mapping with the name "Original Mapping Name (Copy)". You must enable the mapping for data to flow. +## FAQs and troubleshooting -## FAQ and troubleshooting +#### Why does a validation error appears when using the Event Tester? -### Validation error when using the Event Tester +When you send an event with an actions destination Event Tester that doesn't match the trigger of any configured and enabled mappings, an error message that states `You may not have any subscriptions that match this event` will appear. -When you send an event with an actions destination Event Tester that doesn't match the trigger of any configured and enabled mappings, you'll see an error message that states, *You may not have any subscriptions that match this event.* To resolve the error, create a mapping with a trigger to handle the event being tested, or update the test event's payload to match the trigger of any existing mappings. +To resolve the error, create a mapping with a trigger to handle the event being tested, or update the test event's payload to match the trigger of any existing mappings. -### Data not sending downstream +#### Why is the data not sending downstream? -If no mappings are enabled to trigger on an event that has been received from the connected source, the destination will not send any events. Ensure that at least one mapping has been configured and enabled in the destination mappings for an event that you would like to reach downstream. +If no mappings are enabled to trigger on an event that has been received from the connected source, the destination will not send any events. Ensure that at least 1 mapping has been configured and enabled in the destination mappings for an event that you would like to reach downstream. > info "" > Events without mappings enabled to handle them display as being discarded due to "No matching mapping" in a destination's Delivery Overview. -### Multiple mappings triggered by the same event +#### Why are multiple mappings triggered by the same event? + +When an event triggers multiple mappings, a request is generated for each mapping configured to trigger on the event. For example, if two mappings are enabled for the `Subscription Updated` event and both mappings have conditions defined to trigger on the 'Subscription Updated' event, two requests will be generated and sent to the destination for each event - one for each mapping. -When the same event triggers multiple mappings, a request will be generated for each mapping that's configured to trigger on an event. For example, for the *Subscription Updated* event, if two mappings are enabled and both have conditions defined to trigger on the *Subscription Updated* event, the two requests will be generated and sent to the destination for each *Subscription Updated* event. +#### Why is an OAuth "access token expired" message appearing in Segment? +Access tokens generated during initial authorization are short-lived, for example, when you connect a destination via OAuth. The token typically remains valid for 30 minutes to 1 hour. When Segment receives a `401 error` response from a destination after a token expires, it will automatically request the destination for a new token and will then retry the event. Therefore, `401` responses are sometimes expected and do not indicate an event failure. There are 3 event flows when events are received and sent to a destination: -### Oauth "access token expired" message shown in Segment UI -Access Tokens that were generated from initial authorization, for example, when you connect a destination via Oauth, are always short-lived. Commonly, the token remains valid for 30 minutes to 1 hour. When Segment receives 401 error responses from the destination after a token has expired, it will automatically make another request to the destination for a new token and will then retry the event. Therefore, 401 responses are sometimes expected and do not indicate an event failure. There are three event flows when events are received and sent to a destination: +- through source. +- through event tester. +- through actions tester in mapping screen. -- through source -- through event tester -- through actions tester in mapping screen +The underlying systems for these flows have their own copy of the token, which can expire at different points in time. If you see a `401` error in a sample response, it is likely that another request was made afterward to fetch a new token. Then one more request was made to actually send the data in your payload to the downstream destination. -The underlying systems for these flows have their own copy of the token, which can expire at different points in time. -Threfore, if you see a 401 error in a sample response, it is likely that you’ll also see another request was made after it, to ask the downstream destination for a new token. Then one more request was made to actually send the data in your payload to the downstream destination. +#### Is it possible to map a field from one event to another? -### Is it possible to map a field from one event to another? +No. Segment integrations process events through mappings individially. This means that no context is held that would allow you to map a value from one event to the field of a subsequent event. -Segment integrations process events through mappings individially. This means that no context is held that would allow you to map a value from one event to the field of a subsequent event. Each event itself must contain all of the data you'd like to send downstream in regards to it. For example, you cannot send `email` in on an Identify call and then access that same `email` field on a Track call that comes in later if that Track call doesn't also have `email` set on it. +Each event must include all of the data you'd like to send downstream. For example, you can't send `email` field in an Identify call and then access it later on a Track unless that Track call also includes the `email` field. -### I'm getting a 'Couldn't load page' error when viewing or editing a mapping +#### Why do I get a "Couldn't load page" error when viewing or editing a mapping? -This issue can occur due to a browser cache conflict or if an event property name includes a `/`. To resolve it, try clearing your browser cache or accessing the mapping page in an incognito window. Additionally, check if the mapped property name contains a `/`. If it does, rename the property to remove the `/` and update the mapping. +This error might occur due to a browser cache conflict or if an event property name includes a `/` character. To fix this: +- Try clearing your browser cache or opening the mapping page in an incognito/ private window. +- Check whether the mapped property name contains a `/`. If it does, rename the property to remove the `/` and update the mapping. From 53272cf2e8a1e5c0b73ec89edf0ed63c525a2c92 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 9 Jul 2025 17:57:35 +0100 Subject: [PATCH 02/33] Update actions [netlify-build] From 4b9f140b10ffc18e41a64ac921e6b9e6afb678ec Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 9 Jul 2025 18:50:45 +0100 Subject: [PATCH 03/33] wording tweak --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index 322eb4cfe6..2e0f1e073f 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -339,7 +339,7 @@ The underlying systems for these flows have their own copy of the token, which c No. Segment integrations process events through mappings individially. This means that no context is held that would allow you to map a value from one event to the field of a subsequent event. -Each event must include all of the data you'd like to send downstream. For example, you can't send `email` field in an Identify call and then access it later on a Track unless that Track call also includes the `email` field. +Each event must include all of the data you'd like to send downstream. For example, you can't send an `email` field in an Identify call and then access it later on a Track call unless that Track call also includes the `email` field. #### Why do I get a "Couldn't load page" error when viewing or editing a mapping? From 7690170dff991f07cf2f28e9cf88e871a6375bec Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 10 Jul 2025 16:54:53 +0100 Subject: [PATCH 04/33] missing backticks added --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index 2e0f1e073f..c6c4b1691b 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -226,7 +226,7 @@ The JSON function allows you to convert an object or array to a JSON encoded str ### Flatten function -The Flatten function allows you to flatten a nested object to an object with a depth of 1. Keys are delimited by the configured separator. For example, an object like {a: { b: { c: 1 }, d: 2 } } will be converted to { 'a.b.c': 1, 'a.d': 2 }. +The Flatten function allows you to flatten a nested object to an object with a depth of 1. Keys are delimited by the configured separator. For example, an object like `{a: { b: { c: 1 }, d: 2 } }` will be converted to `{ 'a.b.c': 1, 'a.d': 2 }`. ### Replace function From 91f0c716f8850183ce2c8801c31735c7e10f1f98 Mon Sep 17 00:00:00 2001 From: Austin Hsueh Date: Thu, 10 Jul 2025 13:47:51 -0700 Subject: [PATCH 05/33] Add Reddit Pixel Docs and minor update to CAPI doc --- .../actions-reddit-conversions-api/index.md | 2 +- .../catalog/actions-reddit-pixel/index.md | 32 +++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 src/connections/destinations/catalog/actions-reddit-pixel/index.md diff --git a/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md b/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md index b645afe69d..da658603a3 100644 --- a/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md +++ b/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md @@ -60,7 +60,7 @@ Segment creates a SHA-256 hash of the following fields before sending to Reddit. If you implement both the [Reddit Pixel](https://business.reddithelp.com/helpcenter/s/article/reddit-pixel){:target="_blank"} and [Conversions API (CAPI)](https://business.reddithelp.com/helpcenter/s/article/Conversions-API){:target="_blank"} and the same events are shared across both sources, deduplication is necessary to ensure those events aren’t double-counted. -You can pass a unique conversion ID for every distinct event to its corresponding Reddit Pixel and CAPI event. Reddit will determine which events are duplicates based on the conversion ID and the conversion event name. This is the best and most accurate way to ensure proper deduplication, and Reddit recommends this method since there’s less risk of incorrect integration, which can impact attribution accuracy. +The integration automatically pre-maps the Segment `messageId` as the Reddit Conversion ID. If you wish to change this, you can pass a unique conversion ID for every distinct event to its corresponding Reddit Pixel and CAPI event. Reddit will determine which events are duplicates based on the conversion ID and the conversion event name. This is the best and most accurate way to ensure proper deduplication, and Reddit recommends this method since there’s less risk of incorrect integration, which can impact attribution accuracy. To ensure your events are deduplicated: - Create a unique conversion ID for every distinct event. You can set this as a random number or ID. Similarly, you could set this to the order number when tracking purchase events. diff --git a/src/connections/destinations/catalog/actions-reddit-pixel/index.md b/src/connections/destinations/catalog/actions-reddit-pixel/index.md new file mode 100644 index 0000000000..1e477dc756 --- /dev/null +++ b/src/connections/destinations/catalog/actions-reddit-pixel/index.md @@ -0,0 +1,32 @@ +--- +title: Reddit Pixel +--- + +{% include content/plan-grid.md name="actions" %} + +The [Reddit Pixel](https://business.reddithelp.com/s/article/reddit-pixel){:target="_blank"} lets advertisers send Segment events to the Reddit Pixel without any additional manual JavaScript installation. This destination has Segment events pre-mapped to Reddit Pixel events and metadata. You can edit this mapping and create new events - no custom code required. + +## Getting started + +1. From your workspace's [Destination catalog page](https://app.segment.com/goto-my-workspace/destinations/catalog){:target="_blank”}, find the Reddit Pixel destination and select **Add Destination**. +2. Select the source that will connect to the Reddit Pixel destination. +3. Open the destination settings and provide your Pixel ID. This can be found in the [Events Manager](https://ads.reddit.com/events-manager){:target="_blank"}. +4. Configure and map the events you'd like to send to the Reddit Pixel. The destination pre-maps certain Segment events to Reddit Pixel events and metadata, but you can edit these values. You can also set up custom events. + +After enabling the destination, Segment will automatically initialize and load the Reddit Pixel on each page that Segment is tracking based on your mappings. + + +{% include components/actions-fields.html %} + +## Deduplication with the Reddit Conversions API + +If you implement both the [Reddit Pixel](https://business.reddithelp.com/s/article/reddit-pixel){:target="_blank"} and [Reddit Conversions API (CAPI)](https://business.reddithelp.com/s/article/Conversions-API){:target="_blank"} and the same events are shared across both sources, deduplication is necessary to ensure those events aren’t double-counted. + +The integration automatically pre-maps the Segment `messageId` to the Reddit conversion ID. If you wish to change this, you can pass a different unique conversion ID for every distinct event to its corresponding Reddit Pixel and CAPI event. Reddit will determine which events are duplicates based on the conversion ID and conversion event name. This is the most accurate way to ensure proper deduplication. Reddit recommends this method since there’s less risk of incorrect integration, which can impact attribution accuracy. + +To ensure your events are deduplicated: +- Create a unique conversion ID for every distinct event. You can set this as a random number or ID. Similarly, you could set this to the order number when tracking purchase events. +- Include the event in the Reddit Pixel and CAPI. +- Ensure the conversion event name and conversion ID for its corresponding events match. + +For more information on deduplication, see the [Reddit Event Deduplication documentation](https://business.reddithelp.com/s/article/event-deduplication){:target="_blank"}. \ No newline at end of file From fd13503a525fcc33789afb63442763af0479b19c Mon Sep 17 00:00:00 2001 From: akhsueh Date: Mon, 14 Jul 2025 11:07:30 -0700 Subject: [PATCH 06/33] Apply suggestions from code review Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../actions-reddit-conversions-api/index.md | 2 +- .../catalog/actions-reddit-pixel/index.md | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md b/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md index da658603a3..88b1bde2c0 100644 --- a/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md +++ b/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md @@ -60,7 +60,7 @@ Segment creates a SHA-256 hash of the following fields before sending to Reddit. If you implement both the [Reddit Pixel](https://business.reddithelp.com/helpcenter/s/article/reddit-pixel){:target="_blank"} and [Conversions API (CAPI)](https://business.reddithelp.com/helpcenter/s/article/Conversions-API){:target="_blank"} and the same events are shared across both sources, deduplication is necessary to ensure those events aren’t double-counted. -The integration automatically pre-maps the Segment `messageId` as the Reddit Conversion ID. If you wish to change this, you can pass a unique conversion ID for every distinct event to its corresponding Reddit Pixel and CAPI event. Reddit will determine which events are duplicates based on the conversion ID and the conversion event name. This is the best and most accurate way to ensure proper deduplication, and Reddit recommends this method since there’s less risk of incorrect integration, which can impact attribution accuracy. +The integration automatically pre-maps the Segment `messageId` to the Reddit Conversion ID. If you wish to change this, you can pass a unique conversion ID for every distinct event to its corresponding Reddit Pixel and CAPI event. Reddit will determine which events are duplicates based on the conversion ID and the conversion event name. This is the best and most accurate way to ensure proper deduplication, and Reddit recommends this method since there’s less risk of incorrect integration, which can impact attribution accuracy. To ensure your events are deduplicated: - Create a unique conversion ID for every distinct event. You can set this as a random number or ID. Similarly, you could set this to the order number when tracking purchase events. diff --git a/src/connections/destinations/catalog/actions-reddit-pixel/index.md b/src/connections/destinations/catalog/actions-reddit-pixel/index.md index 1e477dc756..0715741030 100644 --- a/src/connections/destinations/catalog/actions-reddit-pixel/index.md +++ b/src/connections/destinations/catalog/actions-reddit-pixel/index.md @@ -4,16 +4,16 @@ title: Reddit Pixel {% include content/plan-grid.md name="actions" %} -The [Reddit Pixel](https://business.reddithelp.com/s/article/reddit-pixel){:target="_blank"} lets advertisers send Segment events to the Reddit Pixel without any additional manual JavaScript installation. This destination has Segment events pre-mapped to Reddit Pixel events and metadata. You can edit this mapping and create new events - no custom code required. +The [Reddit Pixel](https://business.reddithelp.com/s/article/reddit-pixel){:target="_blank"} destination lets advertisers send Segment events to the Reddit Pixel without any additional manual JavaScript installation. This destination has Segment events pre-mapped to Reddit Pixel events and metadata. You can edit this mapping and create new events - no custom code required. ## Getting started 1. From your workspace's [Destination catalog page](https://app.segment.com/goto-my-workspace/destinations/catalog){:target="_blank”}, find the Reddit Pixel destination and select **Add Destination**. -2. Select the source that will connect to the Reddit Pixel destination. -3. Open the destination settings and provide your Pixel ID. This can be found in the [Events Manager](https://ads.reddit.com/events-manager){:target="_blank"}. +2. Select the source that you'd like to connect to the Reddit Pixel destination. +3. Open the destination settings and provide your Pixel ID. This can be found in the Reddit's [Events Manager](https://ads.reddit.com/events-manager){:target="_blank"}. 4. Configure and map the events you'd like to send to the Reddit Pixel. The destination pre-maps certain Segment events to Reddit Pixel events and metadata, but you can edit these values. You can also set up custom events. -After enabling the destination, Segment will automatically initialize and load the Reddit Pixel on each page that Segment is tracking based on your mappings. +After enabling the destination, Segment automatically initializes and loads the Reddit Pixel on each page that you'd like to track based on your mappings. {% include components/actions-fields.html %} @@ -25,8 +25,8 @@ If you implement both the [Reddit Pixel](https://business.reddithelp.com/s/artic The integration automatically pre-maps the Segment `messageId` to the Reddit conversion ID. If you wish to change this, you can pass a different unique conversion ID for every distinct event to its corresponding Reddit Pixel and CAPI event. Reddit will determine which events are duplicates based on the conversion ID and conversion event name. This is the most accurate way to ensure proper deduplication. Reddit recommends this method since there’s less risk of incorrect integration, which can impact attribution accuracy. To ensure your events are deduplicated: -- Create a unique conversion ID for every distinct event. You can set this as a random number or ID. Similarly, you could set this to the order number when tracking purchase events. -- Include the event in the Reddit Pixel and CAPI. -- Ensure the conversion event name and conversion ID for its corresponding events match. +- Create a unique conversion ID for every distinct event. You can set this as a random number or ID, or the order number when tracking purchase events, for example. +- Include the event in both the Reddit Pixel and CAPI. +- Ensure the conversion event name and conversion ID for match across the Reddit Pixel and CAPI. For more information on deduplication, see the [Reddit Event Deduplication documentation](https://business.reddithelp.com/s/article/event-deduplication){:target="_blank"}. \ No newline at end of file From b7be03dd715fbae59b3868d8ef7984373637f493 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Tue, 15 Jul 2025 08:37:48 -0400 Subject: [PATCH 07/33] Update src/connections/destinations/catalog/actions-reddit-pixel/index.md --- .../destinations/catalog/actions-reddit-pixel/index.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/connections/destinations/catalog/actions-reddit-pixel/index.md b/src/connections/destinations/catalog/actions-reddit-pixel/index.md index 0715741030..c911f76b56 100644 --- a/src/connections/destinations/catalog/actions-reddit-pixel/index.md +++ b/src/connections/destinations/catalog/actions-reddit-pixel/index.md @@ -1,5 +1,8 @@ --- title: Reddit Pixel +id: 68383577d2c19626da376944 +private: true +beta: true --- {% include content/plan-grid.md name="actions" %} From 7a8f2220134f0fc1e740c17375ebbf85a0140af5 Mon Sep 17 00:00:00 2001 From: Pedro Mordente Date: Thu, 17 Jul 2025 18:22:16 -0300 Subject: [PATCH 08/33] feat: add roadwayai destination docs --- .../catalog/roadway-actions/index.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/connections/destinations/catalog/roadway-actions/index.md diff --git a/src/connections/destinations/catalog/roadway-actions/index.md b/src/connections/destinations/catalog/roadway-actions/index.md new file mode 100644 index 0000000000..773a7e24be --- /dev/null +++ b/src/connections/destinations/catalog/roadway-actions/index.md @@ -0,0 +1,18 @@ +--- +title: Roadway (Actions) Destination +--- + +{% include content/plan-grid.md name="actions" %} + +[Roadway](https://roadwayai.com/){:target="_blank"} is AI built for growth marketers, operating from marketing attribution from your source-of-truth data sources. Roadway ingests and organizes your visit, user, and billing data to provide end-to-end attribution and AI automation. + +This destination is maintained by Roadway. For any issues with the destination, [contact their Support team](mailto:contact@roadwayai.com). + +## Getting started + +1. From your workspace's [Destination catalog page](https://app.segment.com/goto-my-workspace/destinations/catalog){:target="_blank"} search for "Roadway". +2. Select Roadway and click **Add Destination**. +3. Select an existing Source to connect to Roadway. +4. Go to the [Roadway dashboard](https://app.roadwayai.com/){:target="_blank"}, navigate to your onboarding workspace, go to the **Connect data** step, and find Segment. Generate a workspace API key from there. +5. Enter the **API Key** in the Roadway destination settings in Segment. + From 72a32d1d76073d71d89b96e8cb2672e26bad71ac Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Fri, 18 Jul 2025 08:09:28 -0400 Subject: [PATCH 09/33] Update src/connections/destinations/catalog/actions-reddit-pixel/index.md --- .../destinations/catalog/actions-reddit-pixel/index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-reddit-pixel/index.md b/src/connections/destinations/catalog/actions-reddit-pixel/index.md index c911f76b56..298e875653 100644 --- a/src/connections/destinations/catalog/actions-reddit-pixel/index.md +++ b/src/connections/destinations/catalog/actions-reddit-pixel/index.md @@ -1,7 +1,6 @@ --- title: Reddit Pixel id: 68383577d2c19626da376944 -private: true beta: true --- From 3332b5d3f00d9c518a1a6ca9ae61c372425f7e95 Mon Sep 17 00:00:00 2001 From: Pedro Mordente <1693841+mordente@users.noreply.github.com> Date: Fri, 18 Jul 2025 14:21:46 -0300 Subject: [PATCH 10/33] Update src/connections/destinations/catalog/roadway-actions/index.md Co-authored-by: Sharon Adewusi --- src/connections/destinations/catalog/roadway-actions/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/connections/destinations/catalog/roadway-actions/index.md b/src/connections/destinations/catalog/roadway-actions/index.md index 773a7e24be..0e49a7e67a 100644 --- a/src/connections/destinations/catalog/roadway-actions/index.md +++ b/src/connections/destinations/catalog/roadway-actions/index.md @@ -1,5 +1,7 @@ --- title: Roadway (Actions) Destination +id: 68516bd8ca73bd53f38a0104 +beta: true --- {% include content/plan-grid.md name="actions" %} From 7a5e62eacd43e3627cee2906fa7e60b137153ee7 Mon Sep 17 00:00:00 2001 From: Pedro Mordente <1693841+mordente@users.noreply.github.com> Date: Fri, 18 Jul 2025 14:21:57 -0300 Subject: [PATCH 11/33] Update src/connections/destinations/catalog/roadway-actions/index.md Co-authored-by: Sharon Adewusi --- src/connections/destinations/catalog/roadway-actions/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/roadway-actions/index.md b/src/connections/destinations/catalog/roadway-actions/index.md index 0e49a7e67a..6dfb3ece8c 100644 --- a/src/connections/destinations/catalog/roadway-actions/index.md +++ b/src/connections/destinations/catalog/roadway-actions/index.md @@ -8,7 +8,7 @@ beta: true [Roadway](https://roadwayai.com/){:target="_blank"} is AI built for growth marketers, operating from marketing attribution from your source-of-truth data sources. Roadway ingests and organizes your visit, user, and billing data to provide end-to-end attribution and AI automation. -This destination is maintained by Roadway. For any issues with the destination, [contact their Support team](mailto:contact@roadwayai.com). +This destination is maintained by Roadway. For any issues with the destination, [contact the Roadway Support team](mailto:contact@roadwayai.com){:target="_blank"}. ## Getting started From e2a56f88397d3e3bcb5d78609ef6791c640bbcfc Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:51:18 +0100 Subject: [PATCH 12/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index c6c4b1691b..3acead0a8a 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -7,7 +7,7 @@ The Destination Actions framework improves on classic destinations by enabling y You can also choose which event types, event names, or event property values trigger an Action. These Triggers and Mappings make it possible to send different versions of the Action, depending on the context from which it is triggered. -Each Actions-framework Destination you see in the Segment catalog represents a feature or capability of the destination which can consume data from your Segment source. The Action clearly lists which data from the events it requires and which data is optional. For example, [Amplitude](/docs/connections/destinations/catalog/actions-amplitude) requires that you always send a `LogEvent` and [Slack](/docs/connections/destinations/catalog/actions-slack) always requires a `PostMessage`. Each Action also includes a default mapping which you can modify. +Each Actions-framework Destination you see in the Segment catalog represents a feature or capability of the destination which can consume data from your Segment source. The Action clearly lists which data from the events is required and which is optional. For example, [Amplitude](/docs/connections/destinations/catalog/actions-amplitude) requires that you always send a `LogEvent` and [Slack](/docs/connections/destinations/catalog/actions-slack) always requires a `PostMessage`. Each Action also includes a default mapping which you can modify. ## Benefits of Destination Actions From c91ac04c36b8da8d3817ba83f8c3d841fb9b9799 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:51:32 +0100 Subject: [PATCH 13/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index 3acead0a8a..c4dec8db95 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -13,7 +13,7 @@ Each Actions-framework Destination you see in the Segment catalog represents a f The advantages of using Destination Actions include: -- **Easier setup**: Fewer initial settings which can decrease the time spent configuring the destination. +- **Easier setup**: Destination Actions have fewer initial settings, which can decrease the time spent configuring the destination. - **Increased transparency**: You can see the exact data that is sent to the destination and when Segment sends it. For example, users can see exactly when Segment sends an IP address to [FullStory](https://www.fullstory.com/){:target="_blank"} or an AnonymousId to Amplitude. - **Improved customization**: You can determine which events from your sources trigger actions, and map the events to destination-supported actions. For example, you can define exactly which events are considered purchases by [Braze](https://www.braze.com/){:target="_blank"}. - **Partner ownership**: Partners can own and contribute to any Actions-based destination that use cloud and device mode (web). From 01d48c575c90544e859ef782cefa130ddda5497a Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:51:45 +0100 Subject: [PATCH 14/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index c4dec8db95..fa07247259 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -14,7 +14,7 @@ Each Actions-framework Destination you see in the Segment catalog represents a f The advantages of using Destination Actions include: - **Easier setup**: Destination Actions have fewer initial settings, which can decrease the time spent configuring the destination. -- **Increased transparency**: You can see the exact data that is sent to the destination and when Segment sends it. For example, users can see exactly when Segment sends an IP address to [FullStory](https://www.fullstory.com/){:target="_blank"} or an AnonymousId to Amplitude. +- **Increased transparency**: You can see the exact data that is sent to the destination and when Segment sends it. For example, users can see exactly when Segment sends an IP address to [FullStory](https://www.fullstory.com/){:target="_blank"} or an AnonymousId to [Amplitude](https://amplitude.com/){:target="_blank"}. - **Improved customization**: You can determine which events from your sources trigger actions, and map the events to destination-supported actions. For example, you can define exactly which events are considered purchases by [Braze](https://www.braze.com/){:target="_blank"}. - **Partner ownership**: Partners can own and contribute to any Actions-based destination that use cloud and device mode (web). From 986e5876fa40c878ed592178587802db3d7fc878 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:52:06 +0100 Subject: [PATCH 15/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index fa07247259..d5b7165370 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -16,7 +16,7 @@ The advantages of using Destination Actions include: - **Easier setup**: Destination Actions have fewer initial settings, which can decrease the time spent configuring the destination. - **Increased transparency**: You can see the exact data that is sent to the destination and when Segment sends it. For example, users can see exactly when Segment sends an IP address to [FullStory](https://www.fullstory.com/){:target="_blank"} or an AnonymousId to [Amplitude](https://amplitude.com/){:target="_blank"}. - **Improved customization**: You can determine which events from your sources trigger actions, and map the events to destination-supported actions. For example, you can define exactly which events are considered purchases by [Braze](https://www.braze.com/){:target="_blank"}. -- **Partner ownership**: Partners can own and contribute to any Actions-based destination that use cloud and device mode (web). +- **Partner ownership**: Partners can own and contribute to any Actions-based destination that uses [cloud or device (web) connection modes](/docs/connections/destinations/#connection-modes). ## Available Actions-based Destinations From e174e38a84fbeff0b7411ef98cbddd7cbc55c044 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:52:50 +0100 Subject: [PATCH 16/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index d5b7165370..6e836d6c21 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -32,7 +32,7 @@ Destination Actions are available to all customers on all Segment plans. You do - You can use the [Event Tester](/docs/connections/test-connections) with Destination Actions. Event delivery metrics are collected and available in the destination information pages. - If you are using [Protocols](/docs/protocols/), Destination Actions actions are applied **after** [schema filters](/docs/protocols/enforce/schema-configuration/) and [transformations](/docs/protocols/transform/). - If you are using [Destination Filters](/docs/connections/destinations/destination-filters/), Actions are applied after the filters. They are not applied to data that is filtered out. -- Destination Actions can not be accessed or modified using the Segment APIs yet. +- Destination Actions can't be accessed or modified using the Segment APIs. ## Components of a Destination Action From 0bdfa8f8ad0a41ef02ec7ecc0c14cd5e76fbb4ce Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:53:22 +0100 Subject: [PATCH 17/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index 6e836d6c21..b6cbd8d818 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -73,7 +73,7 @@ Moving from a classic destination to an actions-based destination is a manual pr 1. Create the actions-based destination with your development or test source. 2. Copy API keys, connection details, and other settings from the classic destination to the actions-based destination. 3. Refer to the actions-based destination's documentation for information about how to migrate specific settings. -4. Disable the classic version of the destinatio and enable the actions-based version. +4. Disable the classic version of the destination and enable the actions-based version. 5. Verify that data is flowing from the development or test source to the partner tool. 6. Repeat steps 1-5 with your production source. From 0399d7dce9e86c7415f130d5c552cbbded040317 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:53:40 +0100 Subject: [PATCH 18/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index b6cbd8d818..18512294c5 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -80,7 +80,7 @@ Moving from a classic destination to an actions-based destination is a manual pr ### Migrate your destination filters from the classic destination to the actions destination > warning "" -> You can only migrate your destination filters using the Public API if you are on the Segment Business Tier plan. This functionality isn't available in the Segment app. +> You can only migrate your destination filters using the Public API if you're on the Segment Business Tier plan. This functionality isn't available in the Segment app. To migrate your destination filters to your actions destination from the classic destination: 1. Send a request to the Public API endpoint. From f9e9f2175e75496824997bfff46e01e0b2f1de88 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:54:02 +0100 Subject: [PATCH 19/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index 18512294c5..e93b89105b 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -344,5 +344,5 @@ Each event must include all of the data you'd like to send downstream. For examp #### Why do I get a "Couldn't load page" error when viewing or editing a mapping? This error might occur due to a browser cache conflict or if an event property name includes a `/` character. To fix this: -- Try clearing your browser cache or opening the mapping page in an incognito/ private window. +- Try clearing your browser cache or opening the mapping page in an incognito or private window. - Check whether the mapped property name contains a `/`. If it does, rename the property to remove the `/` and update the mapping. From 37ff46ba0617bba299e99512ef30a237ea7175b7 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:55:25 +0100 Subject: [PATCH 20/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index e93b89105b..dbbb94cef4 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -98,7 +98,7 @@ This approach involves configuring a destination filter on both the Classic and 1. Configure the classic destination filter to block events by the `received_at` field with a certain value. 2. Set up the Actions destination to drop events until the `received_at` timestamp field reaches that same value. -While Destination Filters within the UI cannot access any top-level fields, such as `received_at`, this is not a limitation for [Destination Filters](https://docs.segmentapis.com/tag/Destination-Filters/){:target="_blank”} created by the [Public API](/docs/api/public-api/) using [Filter Query Language (FQL)](/docs/api/public-api/fql/). Since `received_at` is a top-level field in the payload, you need to create a destination filter with the Public API and submit the request with that FQL information described below. +While Destination Filters within the UI cannot access any top-level fields, like `received_at`, this is not a limitation for [Destination Filters](https://docs.segmentapis.com/tag/Destination-Filters/){:target="_blank”} created by the [Public API](/docs/api/public-api/) using [Filter Query Language (FQL)](/docs/api/public-api/fql/). Since `received_at` is a top-level field in the payload, you need to create a destination filter with the Public API and submit the request with that FQL information described below. By combining these Filters, Segment sends events through the Classic integration up until a specified time and then blocks events after that. The Actions integration then blocks events until that specified time and only allows events beginning at that specified time. From 96f57a4e193b126843cca12bb1554fd83e52663c Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:55:45 +0100 Subject: [PATCH 21/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index dbbb94cef4..d23287ca4a 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -151,7 +151,7 @@ From the edit screen you can change the action's name and mapping, and toggle it ![Screenshot of the Mappings table with several enabled mappings](images/actions-list.png) -When an Action is created, it is disabled by default. This ensures that it's only used after being fully configured. To begin sending data through an Action, enable it on the Actions page by clicking the toggle so that it appears blue. +When an Action is created, it's disabled by default. This ensures that it's only used after being fully configured. To begin sending data through an Action, enable it on the Actions page by clicking the toggle so that it appears blue. ## Disable a destination action If you find that you need to stop an action from running, but don't want to delete it completely, you can select the action and click the toggle next to the action's name to disable it. This takes effect within minutes, and disables the action until you re-enable it. From c119f09a1a6c9fbf92b6bcba3854440d3002677f Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:56:38 +0100 Subject: [PATCH 22/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index d23287ca4a..4afa5628c0 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -162,7 +162,7 @@ To delete a destination action, select the action, click **...** and select **De This takes effect within minutes, and removes the action completely. Any data that would have gone to the destination is not delivered. Once deleted, the saved action cannot be restored. ## Test a destination action -To test a destination action, follow the instructions outlined in [Event Tester](/docs/connections/test-connections/). You must enable a mapping to test the destination. If a mapping is not enabled, the following error message will appear: `You may not have any subscriptions that match this event.` +To test a destination action, follow the instructions outlined in the [Event Tester](/docs/connections/test-connections/) documentation. You must enable a mapping to test the destination. If a mapping is not enabled, the following error message will appear: `You may not have any subscriptions that match this event.` You can also test within the mapping itself. To test the mapping: 1. Navigate to the **Mappings** tab of your destination. From 65f1aab588a377624b45a8910132048976b4ef74 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:56:58 +0100 Subject: [PATCH 23/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index 4afa5628c0..ab67f3e84a 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -200,7 +200,7 @@ The required fields for a destination mapping appear automatically. Click **+** Segment offers suggested mappings that automatically propose relevant destination fields for both model columns and payload elements. For example, if your model includes a column or payload field named `transaction_amount`, the feature might suggest mapping it to a destination field like `Amount` or `TransactionValue`. This automation, powered by intelligent autocompletion, matches and identifies near-matching field names to streamline the setup. -To use Suggested Mappings, the workspace owner must first accept the Customer AI Terms and Conditions. Ensure that you review the suggested mappings for accuracy before finalizing them as the suggestions are not guaranteed to be 100% accurate. +To use Suggested Mappings, a user with the [Workspace Owner role](/docs/segment-app/iam/roles/) must first accept the Customer AI Terms and Conditions. Ensure that you review the suggested mappings for accuracy before finalizing them as the suggestions are not guaranteed to be 100% accurate. For more information, see [Segment's Suggested Mappings blogpost](https://segment.com/blog/ai-assisted-magical-mappings/){:target="_blank”} and the [Suggested Mappings Nutrition Label](/docs/connections/reverse-etl/suggested-mappings-nutrition-facts). From 520ee28fda25db0f3b668acdcffd8a369247be15 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:57:17 +0100 Subject: [PATCH 24/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index ab67f3e84a..7695708b5d 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -282,7 +282,7 @@ You can combine criteria in a single group using **`ALL`** or **`ANY`**. Use an > Trigger fields don't support double quotes (`"`) or the tilde (`~`) character. ## Mapping field limitations -In **destination** fields, you can use dot notation to create nested objects and arrays, such as `info.name` or `info[0].email`. This is not the case if the field is enclosed in double quotes. For example, `"user.email"` creates a literal key, not a nested structure. +In **destination** fields, you can use dot notation to create nested objects and arrays, like `info.name` or `info[0].email`. This isn't the case if the field is enclosed in double quotes. For example, `"user.email"` creates a literal key, not a nested structure. In **source** fields, dots are only supported for accessing object keys. Literal strings that include a dot, like `user.email`, aren't supported as property names. From 3ae28212707783a4df5cf8e75bbf01f9efdf909b Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:57:33 +0100 Subject: [PATCH 25/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index 7695708b5d..6ceab371a2 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -289,7 +289,7 @@ In **source** fields, dots are only supported for accessing object keys. Literal ## Destination Filters Destination Filters are compatible with Destination Actions. Consider a Destination Filter when: - You need to remove properties from the data sent to the destination. -- You need to filter data from multiple types of call, for example, Track, Page, and Identify calls. +- You need to filter data from multiple call types, for example, Track, Page, and Identify calls. If your use case does not match these criteria, you might benefit from using Mapping-level Triggers to match only certain events. From a8e2f3792eb53d75cc8a70555fc3220b328e77d6 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:57:51 +0100 Subject: [PATCH 26/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index 6ceab371a2..bd47fa3816 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -291,7 +291,7 @@ Destination Filters are compatible with Destination Actions. Consider a Destinat - You need to remove properties from the data sent to the destination. - You need to filter data from multiple call types, for example, Track, Page, and Identify calls. -If your use case does not match these criteria, you might benefit from using Mapping-level Triggers to match only certain events. +If your use case doesn't match these criteria, you might benefit from using Mapping-level Triggers to match only certain events. ## Duplicate Mappings From f997808cb5da82231f9e557a436cd0432b278fc7 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:58:04 +0100 Subject: [PATCH 27/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index bd47fa3816..23a9fadd15 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -324,7 +324,7 @@ If no mappings are enabled to trigger on an event that has been received from th #### Why are multiple mappings triggered by the same event? -When an event triggers multiple mappings, a request is generated for each mapping configured to trigger on the event. For example, if two mappings are enabled for the `Subscription Updated` event and both mappings have conditions defined to trigger on the 'Subscription Updated' event, two requests will be generated and sent to the destination for each event - one for each mapping. +When an event triggers multiple mappings, a request is generated for each mapping configured to trigger on the event. For example, if two mappings are enabled for the `Subscription Updated` event and both mappings have conditions defined to trigger on the 'Subscription Updated' event, 2 requests are generated and sent to the destination for each event - 1 for each mapping. #### Why is an OAuth "access token expired" message appearing in Segment? Access tokens generated during initial authorization are short-lived, for example, when you connect a destination via OAuth. The token typically remains valid for 30 minutes to 1 hour. When Segment receives a `401 error` response from a destination after a token expires, it will automatically request the destination for a new token and will then retry the event. Therefore, `401` responses are sometimes expected and do not indicate an event failure. There are 3 event flows when events are received and sent to a destination: From 266f983c8cbadfacbdf308bb43f3c64048e4d10a Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:58:12 +0100 Subject: [PATCH 28/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index 23a9fadd15..4b055c3ff7 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -329,7 +329,7 @@ When an event triggers multiple mappings, a request is generated for each mappin #### Why is an OAuth "access token expired" message appearing in Segment? Access tokens generated during initial authorization are short-lived, for example, when you connect a destination via OAuth. The token typically remains valid for 30 minutes to 1 hour. When Segment receives a `401 error` response from a destination after a token expires, it will automatically request the destination for a new token and will then retry the event. Therefore, `401` responses are sometimes expected and do not indicate an event failure. There are 3 event flows when events are received and sent to a destination: -- through source. +- Through a source - through event tester. - through actions tester in mapping screen. From f7e315f22a4ec804fe9de4914cc97d7a7f7b5e60 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:58:17 +0100 Subject: [PATCH 29/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index 4b055c3ff7..364869c6ce 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -331,7 +331,7 @@ Access tokens generated during initial authorization are short-lived, for exampl - Through a source - through event tester. -- through actions tester in mapping screen. +- Through the actions tester on the mapping screen The underlying systems for these flows have their own copy of the token, which can expire at different points in time. If you see a `401` error in a sample response, it is likely that another request was made afterward to fetch a new token. Then one more request was made to actually send the data in your payload to the downstream destination. From 3c8ea07ab6061b4ebe1e45507996a11b9dafe1f0 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:58:26 +0100 Subject: [PATCH 30/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index 364869c6ce..e2b887b4cd 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -330,7 +330,7 @@ When an event triggers multiple mappings, a request is generated for each mappin Access tokens generated during initial authorization are short-lived, for example, when you connect a destination via OAuth. The token typically remains valid for 30 minutes to 1 hour. When Segment receives a `401 error` response from a destination after a token expires, it will automatically request the destination for a new token and will then retry the event. Therefore, `401` responses are sometimes expected and do not indicate an event failure. There are 3 event flows when events are received and sent to a destination: - Through a source -- through event tester. +- Through the event tester - Through the actions tester on the mapping screen The underlying systems for these flows have their own copy of the token, which can expire at different points in time. If you see a `401` error in a sample response, it is likely that another request was made afterward to fetch a new token. Then one more request was made to actually send the data in your payload to the downstream destination. From c18e98be66592fd936d987ae9431d6c3a75e9042 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:58:52 +0100 Subject: [PATCH 31/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index e2b887b4cd..070fe0e235 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -311,7 +311,7 @@ Segment creates a disabled mapping with the name "Original Mapping Name (Copy)". #### Why does a validation error appears when using the Event Tester? -When you send an event with an actions destination Event Tester that doesn't match the trigger of any configured and enabled mappings, an error message that states `You may not have any subscriptions that match this event` will appear. +When you send an event with an actions destination Event Tester that doesn't match the trigger of any configured and enabled mappings, you'll see an error message that states `You may not have any subscriptions that match this event`. To resolve the error, create a mapping with a trigger to handle the event being tested, or update the test event's payload to match the trigger of any existing mappings. From b2cd2c3b24db465155cf4feaaec7cfb046b96765 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 23 Jul 2025 12:59:26 +0100 Subject: [PATCH 32/33] Update src/connections/destinations/actions.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index 070fe0e235..838d6c2008 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -317,7 +317,7 @@ To resolve the error, create a mapping with a trigger to handle the event being #### Why is the data not sending downstream? -If no mappings are enabled to trigger on an event that has been received from the connected source, the destination will not send any events. Ensure that at least 1 mapping has been configured and enabled in the destination mappings for an event that you would like to reach downstream. +If no mappings are enabled to trigger on an event that has been received from the connected source, the destination won't send any events. Ensure that you've configured and enabled at least 1 mapping in the destination mappings for an event that you'd like to reach downstream. > info "" > Events without mappings enabled to handle them display as being discarded due to "No matching mapping" in a destination's Delivery Overview. From e8245bac4266e804e604cbcfc8bde6e32f6efc2b Mon Sep 17 00:00:00 2001 From: stayseesong Date: Wed, 23 Jul 2025 09:04:48 -0700 Subject: [PATCH 33/33] table fix --- src/connections/destinations/actions.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/connections/destinations/actions.md b/src/connections/destinations/actions.md index 0af692b36c..f8ef42a32b 100644 --- a/src/connections/destinations/actions.md +++ b/src/connections/destinations/actions.md @@ -247,6 +247,7 @@ The liquid syntax function enables you to transform event data with fine-grain c Segment supports the following LiquidJS tags and filters for mappings. Segment selected these to ensure performance, security, and compatibility with real-time event processing. Segment disabled unsupported tags and filters to prevent performance degradation or security risks. #### Supported tags + | Tag Name | Description | |-------------------|-------------| | `assign` | Assigns a value to a variable for reuse in the template. | @@ -265,6 +266,7 @@ Segment supports the following LiquidJS tags and filters for mappings. Segment s | `when` | Part of `case` statements for matching specific values. | #### Supported filters + | Filter Name | Description | |--------------------------------|-------------| | `abs` | Returns the absolute value of a number. |