From a8c03fd8cbb3d45da632a733d11bc91da38fe5c6 Mon Sep 17 00:00:00 2001 From: garethx Date: Tue, 9 Sep 2025 09:39:07 +0100 Subject: [PATCH 001/140] Update Bucket to Reflag Bucket recently rebranded to Reflag, updating this page accordingly. --- .../destinations/catalog/bucket/index.md | 26 ++++++++----------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/connections/destinations/catalog/bucket/index.md b/src/connections/destinations/catalog/bucket/index.md index fd6d353eb7..7f5299c379 100644 --- a/src/connections/destinations/catalog/bucket/index.md +++ b/src/connections/destinations/catalog/bucket/index.md @@ -1,28 +1,24 @@ --- -title: Bucket Destination +title: Reflag Destination rewrite: true id: 5fabc0b00f88248bbce4db48 --- -[Bucket](https://bucket.co/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="blank"} is feature flagging that’s purpose-built for B2B. +[Reflag](https://reflag.com/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="blank"} is feature flags for SaaS that run on TypeScript. - -With Bucket, you can: +With Reflag, you can: - Release features gradually with simple flags. - Gate features based on customer subscriptions. - Iterate fast with adoption metrics and feedback. -This destination is maintained by Bucket. For any issues with the destination, [contact the Bucket Support team](mailto:support@bucket.co). +This destination is maintained by Reflag. For any issues with the destination, [contact the Reflag Support team](mailto:support@reflag.com). ## Getting Started - - - 1. From the Destinations catalog page in the Segment App, click **Add Destination**. -2. Search for "Bucket" in the Destinations Catalog, and select the Bucket destination. -3. Choose which Source should send data to the Bucket destination. -4. Go to [Bucket's Environment Settings](https://app.bucket.co/envs/current/settings/app-environments){:target="blank"} and find and copy the "Publishable Key" for the Production environment. -5. Enter the "Publishable Key" as "Publishable Key" in the "Bucket" destination settings in Segment. +2. Search for "Reflag" in the Destinations Catalog, and select the Reflag destination. +3. Choose which Source should send data to the Reflag destination. +4. Go to [Reflag's Environment Settings](https://app.reflag.com/envs/current/settings/app-environments){:target="blank"} and find and copy the "Publishable Key" for the Production environment. +5. Enter the "Publishable Key" as "Publishable Key" in the "Reflag" destination settings in Segment. ## Identify @@ -35,7 +31,7 @@ analytics.identify('userId123', { }); ``` -Segment sends Identify calls to Bucket as an `identify` event which updates User profiles. +Segment sends Identify calls to Reflag as an `identify` event which updates User profiles. ## Group @@ -47,7 +43,7 @@ analytics.identify('groupId123', { }); ``` -Segment sends Group calls to Bucket as a `group` event which updates Company profiles. +Segment sends Group calls to Reflag as a `group` event which updates Company profiles. ## Track @@ -57,4 +53,4 @@ If you aren't familiar with the Segment Spec, take a look at the [Track method d analytics.track('Login Button Clicked', {}); ``` -Segment sends Track calls to Bucket as a `track` event which updates the Features page. +Segment sends Track calls to Reflag as a `track` event which updates the Features page. From 9cd095c2b7b8f0c1a49e43e21fc4976e58a3582b Mon Sep 17 00:00:00 2001 From: Mohammad nasser Date: Thu, 2 Oct 2025 19:42:01 +0300 Subject: [PATCH 002/140] add docs --- .../catalog/actions-fullsession/index.md | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 src/connections/destinations/catalog/actions-fullsession/index.md diff --git a/src/connections/destinations/catalog/actions-fullsession/index.md b/src/connections/destinations/catalog/actions-fullsession/index.md new file mode 100644 index 0000000000..120193ff78 --- /dev/null +++ b/src/connections/destinations/catalog/actions-fullsession/index.md @@ -0,0 +1,91 @@ +--- +title: FullSession (Actions) Destination +--- + +{% include content/plan-grid.md name="actions" %} + +[FullSession](https://fullsession.io/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank"} provides user behavior analytics software that helps you visualize all user interactions, analyze trends and patterns with laser precision, and optimize your website for peak performance. The Segment integration for FullSession helps accurately identify your customers and track their behavior within the FullSession dashboard. + +This destination is maintained by FullSession. For any issues with the destination, [contact their Support team](mailto:support@fullsession.com). + +## Getting started + +1. From your workspace's [Destination catalog page](https://app.segment.com/goto-my-workspace/destinations/catalog){:target="_blank"} search for "FullSession". +2. Select FullSession and click **Add Destination**. +3. Select an existing Source to connect to FullSession (Actions). +4. Go to the [FullSession setup page](https://app.fullsession.io/settings/setup){:target="_blank"} and copy your **Customer ID** (starts with `cus_`). +5. Enter the **Customer ID** in the FullSession destination settings in Segment. + +and then Analytics.js starts asynchronously loading FullSession's recording snippet on your page and sending data. + +## Identify User + +If you're not familiar with the Segment Specs, take a look to understand what the [identify method](/docs/connections/spec/identify/) does. Identify calls sent to Segment will be transformed and sent to FullSession's identify method to help you track and segment users in your session recordings. + +An example call which does not include a `userId` will send FullSession the value of the `anonymousId` and would look like: + +```javascript +analytics.identify(); +``` + +If an `identify` call does contain a `userId`, that will be the ID sent along to FullSession. + +```javascript +analytics.identify("userId"); +``` + +In addition, Segment will send over along any traits included in the `identify` call. The example call below would send over both `plan` and `logins`. + +```javascript +analytics.identify("userId123", { + plan: "premium", + logins: 5 +}); +``` + +### Specifying user name and email + +Both `email` and `name` are special traits that will be passed to FullSession to be used in their interface for better user identification. These traits are optional. + +```javascript +analytics.identify("userId123", { + email: "john.doe@example.com", + name: "John Doe" +}); +``` + +## Record Event + +If you're not familiar with the Segment Specs, take a look to understand what the [track method](/docs/connections/spec/track/) does. Track calls sent to Segment will be automatically passed directly to FullSession using their event tracking method, including all the properties passed in the event. + +An example call would look like: + +```javascript +analytics.track('Product Purchased', { + order_ID: '2969302398', + category: 'boots', + product_name: 'yellow_cowboy_boots', + price: 99.95, + currency: 'EUR' +}); +``` + +This allows you to correlate specific user actions with session recordings, making it easier to analyze user behavior patterns and identify conversion bottlenecks. + +## Visit Page + +If you're not familiar with the Segment Specs, take a look to understand what the [page method](/docs/connections/spec/page/) does. Page calls sent to Segment will be automatically passed to FullSession to set page-specific attributes and properties. + +An example call would look like: + +```javascript +analytics.page('Product Page', { + category: 'Electronics', + name: 'iPhone 15', + price: 999 +}); +``` + +This helps you understand how users navigate through your site and which pages are most important in their journey. + +{% include components/actions-fields.html %} \ No newline at end of file From 404cb946182c4ddfdc94ec40506f4d9e45890c9e Mon Sep 17 00:00:00 2001 From: Elijah Hunt Date: Fri, 10 Oct 2025 11:03:53 +0200 Subject: [PATCH 003/140] Small fixes for batch 6.4 --- src/connections/destinations/catalog/sherlock/index.md | 2 +- src/connections/destinations/catalog/smyte/index.md | 1 - src/connections/destinations/catalog/totango/index.md | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/connections/destinations/catalog/sherlock/index.md b/src/connections/destinations/catalog/sherlock/index.md index eee50a9015..a2a78f2187 100644 --- a/src/connections/destinations/catalog/sherlock/index.md +++ b/src/connections/destinations/catalog/sherlock/index.md @@ -5,7 +5,7 @@ id: 5a947eee1ad6310001435883 --- Sherlock is the first engagement scoring application for SaaS businesses who want to truly understand user engagement. Build an engagement algorithm and understand the engagement of your users, accounts and segments. -This integration is maintained by Sherlock. For questions or help with your integration, contact [Sherlock support][support@sherlockscore.com]. +This integration is maintained by Sherlock. For questions or help with your integration, contact Sherlock support[support@sherlockscore.com]. ## Getting Started diff --git a/src/connections/destinations/catalog/smyte/index.md b/src/connections/destinations/catalog/smyte/index.md index 914581fdc9..c54d5603d3 100644 --- a/src/connections/destinations/catalog/smyte/index.md +++ b/src/connections/destinations/catalog/smyte/index.md @@ -4,7 +4,6 @@ title: Smyte Destination This destination is maintained by Smyte. -- - - # Getting Started diff --git a/src/connections/destinations/catalog/totango/index.md b/src/connections/destinations/catalog/totango/index.md index ed997bd59c..a404dd8eb7 100644 --- a/src/connections/destinations/catalog/totango/index.md +++ b/src/connections/destinations/catalog/totango/index.md @@ -8,7 +8,7 @@ Segment's Totango destination code is all open-source on GitHub: [JavaScript](ht To get started with Totango and Segment, toggle Totango on in your Segment destinations and add your **Service ID**, which you can find in your Totango settings. -Once you've done that, those new settings will propagate to our CDN (that usually takes around 45 minutes) and Totango will be live on your site! Since Totango is all about identified users, the next thing you'll want to do is add a few API calls with exactly the information Totango needs. We'll show you how.. +Once you've done that, those new settings will propagate to our CDN (that usually takes around 45 minutes) and Totango will be live on your site! Since Totango is all about identified users, the next thing you'll want to do is add a few API calls with exactly the information Totango needs. We'll show you how. **Note:** As part of setup, you should know the user and call `identify` before the `group` call. Remember that every `page` and `track` call that you want to show up in Totango must be tied to a `groupId` (Totango calls this Account ID). , however. From e8c2f4c926a8131e5375e61dc02a9e6e03445fb2 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 10 Oct 2025 15:29:09 +0100 Subject: [PATCH 004/140] Update Sendgrid set up guide --- .../catalog/cloud-apps/sendgrid/index.md | 45 +++++++++++++------ 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md index 532df940eb..0840aacfd4 100644 --- a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md +++ b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md @@ -5,33 +5,50 @@ id: jhr8dT2yHn [SendGrid](http://sendgrid.com){:target="_blank”} is a trusted platform for transactional email and email marketing. -Take your company's analysis to the next level by **adding SendGrid as a Source to Segment.** Segment automatically collects events like `Click` or `Delivered` and objects such as `Recipients` or `Campaigns` and loads them into your data warehouse.  +Take your company's analysis to the next level by **adding SendGrid as a Source to Segment**. Segment automatically collects events like `Click` or `Delivered` and objects such as `Recipients` or `Campaigns` and loads them into your data warehouse.  -## Getting Started +## Getting started + +### Sendgrid API key Adding SendGrid as a Source in Segment requires a SendGrid API key. If you don't yet have a SendGrid API key, first follow these steps within your SendGrid account: 1. Log in to your SendGrid account. -2. Navigate to **Settings > API Keys**, then click **General API Key**. -3. Name the key and, optionally, adjust its settings. -4. Copy the API Key, omitting all spaces. +2. Navigate to **Settings > API Keys**, then click **Create API Key**. +3. Name the key, configure the key permissions, and click **Create & View**. +4. Make note of the API key as it will not be shown again. > info "SendGrid API Key Settings" > Segment recommends providing read permissions for **Email Activity** and **Marketing Activity**. -To finish adding the SendGrid source, return to your Segment Workspace and follow these steps: +### Set up Sendgrid source + +To finish add the Sendgrid source to Segment, return to your Segment Workspace and follow these steps: -1. From the [Source catalog page](https://app.segment.com/goto-my-workspace/sources/catalog){:target="_blank”} in your Segment workspace, enter **SendGrid** and select the SendGrid source that appears. -2. From the SendGrid information panel that appears, click **Add source**. -3. Give the Source a name and add any labels to help you organize and filter your sources. - Segment recommends a name that reflects the source itself, as this name populates the schema name. For example, the source name `SendGrid` creates the schema `SendGrid`. You can add multiple instances if you have multiple SendGrid accounts. -4. Paste the SendGrid API Key you copied above into the Segment interface. Click **Connect**. +1. Navigate to **Connections > Catalog**, and search for "Sendgrid". +2. Click the "Sendgrid" source, and click **Add Source**. This source supports Warehouses as a destination. +3. Give the source a meaningful name and (optionally) add any labels to help you organize and filter your sources. Select all of the Warehouse destinations from the existing connections. +> info "" +> Segment recommends a name that reflects the source itself, as this name populates the schema name. For example, the source name `SendGrid` creates the schema `SendGrid`. You can add multiple instances if you have multiple SendGrid accounts. +4. Add the [SendGrid API Key](#sendgrid-api-key) into the Segment interface. Click **Connect**. ![Screenshot of the Settings page in the setup flow for the Sendgrid source.](images/601347_Key.png) +5. Copy the Webhook URL from Segment and paste it in your Sendgrid account. Navigate to **Settings > Mail Settings > Event Webhook** and add a new event webhook. +6. On the selective sync screen, you have the options to: +> 1. **Select the sync frequency**. The default option is every three hours. +> 2. **Select the start date**. This is the date from which the first sync happens. If left blank, a full synce is initiated. +> 3. **Select the collections to sync**. Only the collections that you select will be synced from the start date. +7. Click **Finish** to complete the integration with your Sendgrid account. +8. You can set the start date from which the sync should start in the **Basic Settings** page. +> info "" +> - Changing the start data after the first sync doesn't change anything unless a full manual sync is initiated. +> - Changing the collections to be synced takes effect after the next sync. The previous data synced for any collection that has been unselected will be in the warehouse. +> - The default value for Source Sync Schedule in 3 hours. To change the sync, schedule send a message to (friends@segment.com@)[mailto:friends@segment.com]{:target="_blank”}. + +9. The first sync starts after you successfully create the source. All the collections and number of rows synced can be reviewed from the Overview tab. +Copy the auto-generated Webhook URL and paste it into SendGrid's Event Notification settings pane under **Settings > Mail Settings**. -6. Copy the auto-generated Webhook URL and paste it into SendGrid's Event Notification settings pane under **Settings > Mail Settings**. ![Screenshot of the Webhook page in the setup flow for the Sendgrid source.](images/694785_Webhook.png) -7. Enable Event Notification in SendGrid. Select **Next** and then **Finish** to complete setup. ### Event URL @@ -89,7 +106,7 @@ Collections are the groupings of resources Segment pulls from your source. In yo ## Troubleshooting -### Invalid Credentials error +### Invalid credentials error If you're getting an "Invalid Credentials" error when setting up the SendGrid source, send a direct ping to the [SendGrid Marketing Campaigns API](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/campaigns.html){:target="_blank”} to test if you're using the correct credentials. From f9a323e2ed64a25d5196d1de0299c6a7dd6903fb Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 10 Oct 2025 15:31:11 +0100 Subject: [PATCH 005/140] sneak a peek [netlify-build] --- .../sources/catalog/cloud-apps/sendgrid/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md index 0840aacfd4..bd99012f98 100644 --- a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md +++ b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md @@ -106,19 +106,19 @@ Collections are the groupings of resources Segment pulls from your source. In yo ## Troubleshooting -### Invalid credentials error +#### Invalid credentials error If you're getting an "Invalid Credentials" error when setting up the SendGrid source, send a direct ping to the [SendGrid Marketing Campaigns API](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/campaigns.html){:target="_blank”} to test if you're using the correct credentials. Make sure you allowlist Segment IP addresses on SendGrid. [Contact Segment](https://segment.com/help/contact/){:target="_blank”} for the list of IP addresses to allowlist. -### Webhook configuration +#### Webhook configuration When you disable your SendGrid source, you'll need to also disable the webhook portion of your configuration. -If you are only able to create one webhook, review your SendGrid [account plan details](https://sendgrid.com/en-us/pricing). On the Sendgrid free plan, you can only have 1 webhook. +If you are only able to create one webhook, review your SendGrid [account plan details](https://sendgrid.com/en-us/pricing). On the Sendgrid free plan, you can only have one webhook. -### Zero data or partial data syncs +#### Zero data or partial data syncs If you haven't subscribed to SendGrid’s marketing campaign features, the object collections do not sync. As a result, you might see “Zero data synced” in your runs on Source Overview page. If you have only selected a few objects to be synced, then only those objects are synced and show up in the Source Overview. From aa96c33fd1ddcfc3ff60df50941a39fe310de413 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 10 Oct 2025 15:57:29 +0100 Subject: [PATCH 006/140] email link fix --- src/connections/sources/catalog/cloud-apps/sendgrid/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md index bd99012f98..d6a1e0b35e 100644 --- a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md +++ b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md @@ -42,7 +42,7 @@ To finish add the Sendgrid source to Segment, return to your Segment Workspace a > info "" > - Changing the start data after the first sync doesn't change anything unless a full manual sync is initiated. > - Changing the collections to be synced takes effect after the next sync. The previous data synced for any collection that has been unselected will be in the warehouse. -> - The default value for Source Sync Schedule in 3 hours. To change the sync, schedule send a message to (friends@segment.com@)[mailto:friends@segment.com]{:target="_blank”}. +> - The default value for Source Sync Schedule in 3 hours. To change the sync, schedule send a message to [friends@segment.com@](mailto:friends@segment.com){:target="_blank”}. 9. The first sync starts after you successfully create the source. All the collections and number of rows synced can be reviewed from the Overview tab. Copy the auto-generated Webhook URL and paste it into SendGrid's Event Notification settings pane under **Settings > Mail Settings**. From 9cd6a8cb9b71af6ef71428d3ab6743728e9ffd34 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 10 Oct 2025 16:38:27 +0100 Subject: [PATCH 007/140] more editing (SendGrid page) --- .../catalog/cloud-apps/sendgrid/index.md | 64 +++++++++---------- 1 file changed, 30 insertions(+), 34 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md index d6a1e0b35e..164537948c 100644 --- a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md +++ b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md @@ -18,53 +18,51 @@ Adding SendGrid as a Source in Segment requires a SendGrid API key. If you don't 3. Name the key, configure the key permissions, and click **Create & View**. 4. Make note of the API key as it will not be shown again. -> info "SendGrid API Key Settings" +> info "SendGrid API Key settings" > Segment recommends providing read permissions for **Email Activity** and **Marketing Activity**. ### Set up Sendgrid source -To finish add the Sendgrid source to Segment, return to your Segment Workspace and follow these steps: +To add the Sendgrid source to Segment, return to your Segment Workspace and follow these steps: 1. Navigate to **Connections > Catalog**, and search for "Sendgrid". -2. Click the "Sendgrid" source, and click **Add Source**. This source supports Warehouses as a destination. -3. Give the source a meaningful name and (optionally) add any labels to help you organize and filter your sources. Select all of the Warehouse destinations from the existing connections. -> info "" -> Segment recommends a name that reflects the source itself, as this name populates the schema name. For example, the source name `SendGrid` creates the schema `SendGrid`. You can add multiple instances if you have multiple SendGrid accounts. -4. Add the [SendGrid API Key](#sendgrid-api-key) into the Segment interface. Click **Connect**. +2. Click the "Sendgrid" source, and click **Add Source**. **Note**: This source only supports warehouses as a destination. +3. Give the source a meaningful name and (optional) add any labels to help you organize and filter your sources. Select all of the Warehouse destinations from the existing connections. + > info "" + > Segment recommends that you give your source a name that reflects the source itself as this name populates the schema name. For example, the source name `SendGrid` creates the schema `SendGrid`. You can add multiple instances if you have multiple SendGrid accounts. +4. Add the [SendGrid API Key](#sendgrid-api-key) to connect Sendgrid to Segment. Click **Connect**. ![Screenshot of the Settings page in the setup flow for the Sendgrid source.](images/601347_Key.png) -5. Copy the Webhook URL from Segment and paste it in your Sendgrid account. Navigate to **Settings > Mail Settings > Event Webhook** and add a new event webhook. -6. On the selective sync screen, you have the options to: -> 1. **Select the sync frequency**. The default option is every three hours. -> 2. **Select the start date**. This is the date from which the first sync happens. If left blank, a full synce is initiated. -> 3. **Select the collections to sync**. Only the collections that you select will be synced from the start date. -7. Click **Finish** to complete the integration with your Sendgrid account. -8. You can set the start date from which the sync should start in the **Basic Settings** page. -> info "" -> - Changing the start data after the first sync doesn't change anything unless a full manual sync is initiated. -> - Changing the collections to be synced takes effect after the next sync. The previous data synced for any collection that has been unselected will be in the warehouse. -> - The default value for Source Sync Schedule in 3 hours. To change the sync, schedule send a message to [friends@segment.com@](mailto:friends@segment.com){:target="_blank”}. - -9. The first sync starts after you successfully create the source. All the collections and number of rows synced can be reviewed from the Overview tab. -Copy the auto-generated Webhook URL and paste it into SendGrid's Event Notification settings pane under **Settings > Mail Settings**. - +5. Copy the auto-generated Webhook URL from Segment and paste it in your Sendgrid account. Navigate to **Settings > Mail Settings > Event Webhooks** and create a new event webhook. ![Screenshot of the Webhook page in the setup flow for the Sendgrid source.](images/694785_Webhook.png) - +6. Set up **Selective Sync**. You have the options to: + > 1. **Configure the source sync schedule**. This is how often the data syncs. The default option is every three hours. + > 2. **Select the start date**. This is the date from which the first sync happens. If left blank, a full sync is initiated. + > 3. **Select the collections to sync**. The collections that you select will be synced from the start date. +7. Click **Finish** to complete connecting your Sendgrid source to Segment. +8. To set the date from which the sync should start, go to **Settings > Basic Settings**, and configure the start date. + > info "" + > Changing the start date after the first sync doesn't change anything unless a full manual sync is initiated. + > + > Changing the collections to be synced takes effect after the next sync. The previous data synced for any collection that has been unselected will be in the warehouse. + > + > The default value for Source Sync Schedule in 3 hours. To change the sync, schedule send a message to [friends@segment.com@](mailto:friends@segment.com){:target="_blank”}. +9. Toggle **Enable source** on to start syncing data. +10. The first sync begins after you successfully create the source. To review the collections and number of rows synced, go to the **Overview** tab. ### Event URL - -SendGrid has a single Event URL location. By using the SendGrid source, you will be using your only Event URL location. If you remove a pre-existing URL, then that location will no longer receive events. +SendGrid has a single Event URL location. By using the SendGrid source, you'll use your only Event URL location. If you remove a pre-existing URL, then that location will no longer receive events. ## Components ### Sync -Segment makes requests to the SendGrid API every three hours. In the initial sync, Segment pulls all SendGrid objects (and their corresponding properties) according to the [Collections Table](#collections) below. If you don't use SendGrid's marketing campaigns features (Legacy or New), these collections will be empty in SendGrid and you'll see "Zero data synced" in your runs. The webhook still processes activity data. +Segment makes requests to the SendGrid API every three hours. In the initial sync, Segment pulls all SendGrid objects (and their corresponding properties) according to the [Collections table](#collections). If you don't use SendGrid's marketing campaigns features (Legacy or New), these collections will be empty in SendGrid and you'll see "Zero data synced" in your runs. The webhook still processes activity data. Segment's sync component pulls and forwards SendGrid resources to Segment using an upsert API. As a result, dimensional data loaded into your warehouse reflects the latest state of the corresponding resource in SendGrid. For example, if `lists.recipient_count` goes from `100` to `200` between syncs, its status will be `200` on its next flush to your warehouse. -The source syncs and warehouse syncs are independent processes. Source runs pull your data into the Segment Hub, and warehouse runs flush that data to your warehouse. Sources sync with Segment every three hours. Depending on your Warehouses plan, Segment pushes the Source data to your warehouse on the interval associated with your billing plan. +The source syncs and warehouse syncs are independent processes. Source runs pull your data into the Segment Hub, and warehouse runs flush that data to your warehouse. Sources sync with Segment every three hours. Depending on your Warehouses plan, Segment pushes the source data to your warehouse on the interval associated with your billing plan. -> info "SendGrid Syncs" +> info "SendGrid syncs" > Segment syncs all objects and properties. [Reach out to support](https://segment.com/help/contact/){:target="_blank”} if you're interested in filtering objects or properties during syncs. ### Streaming @@ -74,14 +72,12 @@ The SendGrid source's streaming component listens in real time for inbound webho > info "" > If you don't use SendGrid's marketing features, this will be the only data that Segment receives from SendGrid. There isn't a way to retrieve email event history from SendGrid, so you will only have access to data that Segment collected after you successfully enabled this integration. - ## Collections Collections are the groupings of resources Segment pulls from your source. In your warehouse, each collection gets its own table. -**Object** collections are updated with each sync. These are pulled using Segment's sync component. - -**Event** collections are append only, represent a user action or activity, and may be likened to fact tables in a traditional data warehouse. Unlike traditional events captured by Segment, you can't forward these events to Destinations you've configured in your Segment workspace. You can only sync these events to a supported data warehouse. +- **Object** collections are updated with each sync. These are pulled using Segment's sync component. +- **Event** collections are append-only, represent a user action or activity, and may be likened to fact tables in a traditional data warehouse. Unlike traditional events captured by Segment, you can't forward these events to destinations you've configured in your Segment workspace. You can only sync these events to a supported data warehouse. | Collection | Type | Description | @@ -114,7 +110,7 @@ Make sure you allowlist Segment IP addresses on SendGrid. [Contact Segment](http #### Webhook configuration -When you disable your SendGrid source, you'll need to also disable the webhook portion of your configuration. +When you disable your SendGrid source, you also need to disable the webhook portion of your configuration. If you are only able to create one webhook, review your SendGrid [account plan details](https://sendgrid.com/en-us/pricing). On the Sendgrid free plan, you can only have one webhook. @@ -122,4 +118,4 @@ If you are only able to create one webhook, review your SendGrid [account plan d If you haven't subscribed to SendGrid’s marketing campaign features, the object collections do not sync. As a result, you might see “Zero data synced” in your runs on Source Overview page. If you have only selected a few objects to be synced, then only those objects are synced and show up in the Source Overview. -In both cases, the webhook still processes event data and syncs it to the warehouse. To view the data synced to the warehouse, navigate to **Connections > Destinations**, select the relevant Warehouse Destination, and then select the Source schema. +In both cases, the webhook still processes event data and syncs it to the warehouse. To view the data synced to the warehouse, navigate to **Connections > Destinations**, select the relevant warehouse destination, and then select the source schema. From cdd7ba0ee81a881a7f436ee9d18f91964ba96ccc Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 10 Oct 2025 16:38:56 +0100 Subject: [PATCH 008/140] does it look better? [netlify-build] --- src/connections/sources/catalog/cloud-apps/sendgrid/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md index 164537948c..33814662d0 100644 --- a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md +++ b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md @@ -3,7 +3,7 @@ title: SendGrid Source id: jhr8dT2yHn --- -[SendGrid](http://sendgrid.com){:target="_blank”} is a trusted platform for transactional email and email marketing. +[SendGrid](http://sendgrid.com){:target="_blank”} is a trusted platform for transactional email and email marketing. Take your company's analysis to the next level by **adding SendGrid as a Source to Segment**. Segment automatically collects events like `Click` or `Delivered` and objects such as `Recipients` or `Campaigns` and loads them into your data warehouse.  From a37b6653082f59538654b8e67bcea6ea6a2e67e7 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 10 Oct 2025 17:23:31 +0100 Subject: [PATCH 009/140] a whole lot of edits [netlify-build] --- .../catalog/cloud-apps/twilio/index.md | 193 +++++++++--------- 1 file changed, 99 insertions(+), 94 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/twilio/index.md b/src/connections/sources/catalog/cloud-apps/twilio/index.md index 7d6322d09c..bc521d9628 100644 --- a/src/connections/sources/catalog/cloud-apps/twilio/index.md +++ b/src/connections/sources/catalog/cloud-apps/twilio/index.md @@ -6,42 +6,49 @@ id: 43bb279b7 [Twilio](http://twilio.com){:target="_blank”} is a developer platform for communications. Software teams use Twilio APIs to add capabilities like voice, video, and messaging to their applications. This enables businesses to provide the right communications experience for their customers. Behind Twilio APIs is a Super Network, a software layer that connects and optimizes communications networks around the world. This is what allows users to reliably call and message anyone anywhere. -## Getting Started - -1. From your workspace's `/sources` page, click `Add source`. - -2. Choose Twilio. - -3. Give the source a nickname and a schema name. The nickname is a label used in the Segment interface, and the schema name is the namespace you query against in your warehouse. Both can be whatever you like, but we recommend sticking to something that reflects the source itself, like `Twilio` for nickname and `twilio` or `twilio_prod` for the schema name. - - **Note**: You can add multiple instances if you have multiple Twilio accounts. That's why we allow you to customize the source's nickname and schema name! - -4. When you click **Connect**, you'll be prompted for your Twilio Account SID. You can find it on your Twilio account under the project settings. - -5. You'll be re-directed to Twilio's app and you'll need to authorize Segment to read from your account data. To authorize, click in the "Allow" button. Once approved, you'll be redirected back to the set up page in the Segment app. - -6. Click on the "Finish" button and you'll be good to go! - -We'll begin syncing your Twilio data into Segment momentarily, and it will be written to your warehouse at your next Warehouse run. +## Getting started + +1. Navigate to **Connections > Catalog** and from the sources tab, search for “Twilio” and click on the tile. +2. Click **Add Source**, to create a new Twilio source. **Note**: This source only supports warehouses as a destination. +3. Give the source a meaningful name and (optional) add labels. Add the Twilio SID, which can be found in your Twilio account. + > info "" + > Segment recommends that you give your source a name that reflects the source itself as this name populates the schema name. For example, `Twilio` for nickname and `twilio` or `twilio_prod` for the schema name. You can add multiple instances if you have multiple Twilio accounts. +4. Sign into your Twilio account and select the account that you want to sync data from to Segment. +5. Add the Twilio SID, which can be found in your Twilio account, in **Project Settings**. Click **Authenticate**. +6. Once connected successfully, click **Next** to setup the SQL schema. +7. Verify the schema and click **Next**. +8. Set up **Selective Sync**. You have the options to: + > 1. **Configure the source sync schedule**. This is how often the data syncs. The default option is every three hours. + > 2. **Select the start date**. This is the date from which the first sync happens. If left blank, a full sync is initiated. + > 3. **Select the collections to sync**. The collections that you select will be synced from the start date. +9. Click **Done** to complete integrating your Twilio account with Segment. +10. To set the date from which the sync should start, go to **Settings > Basic Settings**, and configure the start date. + > info "" + > Changing the start date after the first sync doesn't change anything unless a full manual sync is initiated. + > + > Changing the collections to be synced takes effect after the next sync. The previous data synced for any collection that has been unselected will be in the warehouse. + > + > The default value for Source Sync Schedule in 3 hours. To change the sync, schedule send a message to [friends@segment.com](mailto:friends@segment.com){:target="_blank”}. +11. Toggle **Enable source** on to start syncing data. +12. The first sync begins after you successfully create the source. To review the collections and number of rows synced, go to the **Overview** tab. ## Components ### Sync -The Twilio source is built with a sync component, which means we'll make requests to their API on your behalf on a 3 hour interval to pull the latest data into Segment. In the initial sync, we'll grab all the Twilio objects (and their corresponding properties) according to the Collections Table below. The objects will be written into a separate schema, corresponding to the source instance's schema name you designated upon creation (ie. `twilio_prod.charges`). - -Our sync component uses an upsert API, so the data in your warehouse loaded using sync will reflect the latest state of the corresponding resource in Twilio. For example, if `ticket_status` goes from `open` to `closed` between syncs, on its next sync that tickets status will be `closed`. +The Twilio source is built with a sync component, which means Segment makes requests to Twilio's API on a three hour interval to pull in the latest data. In the initial sync, Segment grabs all the Twilio objects (and their corresponding properties) according to the [Collections table](#collections). The objects are written into a separate schema, corresponding to the source instance's schema name you designated upon creation (for example, `twilio_prod.charges`). -The source syncs and warehouse syncs are independent processes. Source runs pull your data into the Segment Hub, and warehouse runs flush that data to your warehouse. Sources will sync with Segment every 3 hours. Depending on your Warehouses plan, we will push the Source data to your warehouse on the interval associated with your billing plan. +Segment's sync component uses an upsert API, so the data in your warehouse loaded using sync reflects the latest state of the corresponding resource in Twilio. For example, if `ticket_status` goes from `open` to `closed` between syncs, on its next sync that tickets status will be `closed`. -At the moment, we don't support filtering which objects or properties get synced. If you're interested in this feature, [let us know](https://segment.com/help/contact){:target="_blank”}! +The source syncs and warehouse syncs are independent processes. Source runs pull your data into the Segment Hub, and warehouse runs flush that data to your warehouse. Sources sync with Segment every 3 hours. Depending on your Warehouses plan, Segment pushes the source data to your warehouse on the interval associated with your billing plan. +> warning "" +> Segment doesn't support filtering which objects or properties get synced. ## Collections Collections are the groupings of resources we pull from your source. In your warehouse, each collection gets its own table. - | Collection | Type | Description | | ------ | ------ | ------ | | addresses | object | An [address](https://www.twilio.com/docs/api/rest/addresses){:target="_blank”} represents your or your customer's physical location within a country | @@ -52,113 +59,111 @@ Collections are the groupings of resources we pull from your source. In your war | call_feedback | object | The [call feedback](https://www.twilio.com/docs/api/rest/call-feedback){:target="_blank”} subresource provides a simple API to report the quality experienced during a phone call | -## Collection Properties - -Below are tables outlining the properties included in the collections listed above. +## Collection properties +The following tables outline the properties included in collections: ### Addresses | Property Name | Description | | ------ | ------ | -| account_sid | The unique id of the Account responsible for creating this Call | -| city | The city in which you or your customer is located | -| customer_name | The caller's name if this Call was an incoming call to a phone number with Caller ID Lookup enabled | -| emergency_enabled | This is a value that indicates if emergency calling has been enabled on this number. Possible values are true or false | -| friendly_name | A human-readable description of the address. Maximum 64 characters | -| iso_country | The ISO country code of your or your customer's address | -| postal_code | The postal code in which you or your customer is located | -| region | The state or region in which you or your customer is located | -| street | The number and street address where you or your customer is located | -| received_at | This timestamp is added to incoming records as soon as they hit Segment API | -| validated | This value will be true if the Address has been validated, or false for countries that don't require validation or if the Address is non-compliant | +| account_sid | The unique ID of the account responsible for creating this call. | +| city | The city in which you or your customer is located. | +| customer_name | The caller's name if this call was an incoming call to a phone number with Caller ID Lookup enabled. | +| emergency_enabled | This is a value that indicates if emergency calling has been enabled on this number. Possible values are `true` or `false`. | +| friendly_name | A human-readable description of the address. Maximum 64 characters. | +| iso_country | The ISO country code of your or your customer's address. | +| postal_code | The postal code in which you or your customer is located. | +| region | The state or region in which you or your customer is located. | +| street | The number and street address where you or your customer is located. | +| received_at | This timestamp is added to incoming records as soon as they hit Segment API. | +| validated | This value will be `true` if the address has been validated, or `false` for countries that don't require validation or if the address is non-compliant. | ### Calls | Property Name | Description | | ------ | ------ | -| account_sid | The unique id of the Account responsible for creating this Call | -| api_version | The API Version used to create the Call | -| caller_name | The caller's name if this Call was an incoming call to a phone number with Caller ID Lookup enabled | -| date_created | The date that this resource was created, given as GMT in RFC 2822 format | -| date_updated | The date that this resource was last updated, given as GMT in RFC 2822 format | -| direction | A string describing the direction of the Call. Values are inbound for inbound calls, outbound-api for calls initiated using the REST API or outbound-dial for calls initiated by a `` verb | -| duration | The length of the Call in seconds. This value is empty for busy, failed, unanswered or ongoing calls | -| end_time | The time the Call ended, given as GMT in RFC 2822 format. Empty if the call did not complete successfully | -| forwarded_from | The forwarding phone number if this Call was an incoming call forwarded from another number (depends on carrier supporting forwarding) | -| from | The phone number, SIP address, Client identifier or SIM SID that made this Call | -| parent_call_sid | A 34-character string that uniquely identifies the Call that created this leg | -| phone_number_sid | If the call was inbound, this is the Sid of the IncomingPhoneNumber that received the call. If the call was outbound, it is the Sid of the OutgoingCallerId from which the call was placed | -| price | The charge for this Call, in the currency associated with the account. Populated after the call is completed | -| received_at | This timestamp is added to incoming records as soon as they hit Segment API | -| start_time | The start time of the call, given as GMT in RFC 2822 format. Empty if the call has not yet been dialed | -| status | A string representing the status of the Call. May be queued, ringing, in-progress, canceled, completed, failed, busy or no-answer | -| to | The phone number, SIP address, Client identifier or SIM SID that received this Call | +| account_sid | The unique ID of the account responsible for creating this call. | +| api_version | The API version used to create the call. | +| caller_name | The caller's name if this call was an incoming call to a phone number with Caller ID Lookup enabled. | +| date_created | The date that this resource was created, given as GMT in [RFC 2822](https://en.wikipedia.org/wiki/Email#Message_format){:target="_blank"} format. | +| date_updated | The date that this resource was last updated, given as GMT in RFC 2822 format. | +| direction | A string describing the direction of the call. Values are inbound for inbound calls, outbound-api for calls initiated using the REST API or outbound-dial for calls initiated by a `` verb. | +| duration | The length of the call in seconds. This value is empty for `busy`, `failed`, `unanswered`, or `ongoing calls`. | +| end_time | The time the call ended, given as GMT in RFC 2822 format. Empty if the call did not complete successfully. | +| forwarded_from | The forwarding phone number if this call was an incoming call forwarded from another number (depends on carrier supporting forwarding). | +| from | The phone number, SIP address, client identifier or SIM SID that made this call. | +| parent_call_sid | A 34-character string that uniquely identifies the call that created this leg. | +| phone_number_sid | If the call was inbound, this is the SID of the `IncomingPhoneNumber` that received the call. If the call was outbound, it is the SID of the `OutgoingCallerId` from which the call was placed. | +| price | The charge for this call, in the currency associated with the account. Populated after the call is completed. | +| received_at | This timestamp is added to incoming records as soon as they hit Segment API. | +| start_time | The start time of the call, given as GMT in RFC 2822 format. Empty if the call has not yet been dialed. | +| status | A string representing the status of the call. May be `queued`, `ringing`, `in-progress`, `canceled`, `completed`, `failed`, `busy`, or `no-answer`. | +| to | The phone number, SIP address, client identifier, or SIM SID that received this call. | ### Conferences | Property Name | Description | | ------ | ------ | -| account_sid | The unique id of the Account responsible for creating this conference | -| date_created | The date that this conference was created, given as GMT in RFC 2822 format | -| date_updated | The date that this conference was last updated, given as GMT in RFC 2822 format | -| friendly_name | A user provided string that identifies this conference room | -| region | A string representing the Twilio Region where the conference audio was mixed | -| status | A string representing the status of the conference. May be init, in-progress, or completed | +| account_sid | The unique ID of the account responsible for creating this conference. | +| date_created | The date that this conference was created, given as GMT in RFC 2822 format. | +| date_updated | The date that this conference was last updated, given as GMT in RFC 2822 format. | +| friendly_name | A user provided string that identifies this conference room. | +| region | A string representing the Twilio region where the conference audio was mixed. | +| status | A string representing the status of the conference. May be `init`, `in-progress`, or `completed`. | ### Transcriptions | Property Name | Description | | ------ | ------ | -| account_sid | The unique id of the Account responsible for creating this Call | -| date_created | The date that this resource was created, in RFC 2822 format | -| date_updated | The date that this resource was last updated, in RFC 2822 format | -| duration | The duration of the transcribed audio, in seconds | -| price | The charge for this transcript in the currency associated with the account | -| recording_sid | The unique id of the Recording that created this Transcription | -| status | A string representing the status of the transcription: in-progress, completed or failed | -| transcription_text | The text content of the transcription | +| account_sid | The unique ID of the account responsible for creating this call. | +| date_created | The date that this resource was created, in RFC 2822 format. | +| date_updated | The date that this resource was last updated, in RFC 2822 format. | +| duration | The duration of the transcribed audio, in seconds. | +| price | The charge for this transcript in the currency associated with the account. | +| recording_sid | The unique ID of the recording that created this transcription. | +| status | A string representing the status of the transcription: `in-progress`, `completed`, or `failed`. | +| transcription_text | The text content of the transcription. | ### Messages | Property Name | Description | | ------ | ------ | -| account_sid | The unique id of the Account responsible for creating this Call | -| api_version | The version of the Twilio API used to process the message | -| body | The text body of the message. Up to 1600 characters long | -| date_created | The date that this resource was created, given in RFC 2822 format | -| date_sent | The date that the message was sent. For outgoing messages, this is the date that the message was sent from Twilio's platform | -| date_updated | The date that this resource was last updated, given in RFC 2822 format | -| direction | The direction of this message. inbound for incoming messages, outbound-api for messages initiated using the REST API, outbound-call for messages initiated during a call or outbound-reply for messages initiated in response to an incoming message | -| error_code | The error code, if any, associated with your message | -| error_message | The human readable description of the ErrorCode above. If the message status is failed or undelivered it will have one of the values described below, otherwise, it will be null | -| from | The phone number (in E.164 format), alphanumeric sender ID, or Wireless SIM that initiated the message | -| num_media | This property indicates the number of media files associated with the message. Each message may send up to 10 media files | -| num_segments | This property indicates the number of segments that make up the message. If your body is too large to be sent as a single SMS message, it will be segmented and charged accordingly | -| price | The amount billed for the message, in the currency associated with the account | -| status | The status of this message. Either accepted, queued, sending, sent,failed, delivered, undelivered, receiving or received. See detailed descriptions of these statuses below | -| to | The phone number that received the message in E.164 format. For incoming messages, this will be one of your Twilio phone numbers. For outgoing messages, this will be the remote phone | - - -### Call Feedback +| account_sid | The unique ID of the account responsible for creating this call. | +| api_version | The version of the Twilio API used to process the message. | +| body | The text body of the message. Up to 1600 characters long. | +| date_created | The date that this resource was created, given in RFC 2822 format. | +| date_sent | The date that the message was sent. For outgoing messages, this is the date that the message was sent from Twilio's platform. | +| date_updated | The date that this resource was last updated, given in RFC 2822 format. | +| direction | The direction of this message: `inbound` for incoming messages, `outbound-API` for messages initiated using the REST API, `outbound-call` for messages initiated during a call or `outbound-reply` for messages initiated in response to an incoming message. | +| error_code | The error code associated with your message. | +| error_message | The human readable description of the `ErrorCode`. If the message status is `failed` or `undelivered` it will have one of the values described in the [Call feedback](#call-feedback) table, or it will otherwise be `null`. | +| from | The phone number (in E.164 format), alphanumeric sender ID, or wireless SIM that initiated the message. | +| num_media | This property indicates the number of media files associated with the message. Each message can send up to 10 media files. | +| num_segments | This property indicates the number of segments that make up the message. If your body is too large to be sent as a single SMS message, it will be segmented and charged accordingly. | +| price | The amount billed for the message, in the currency associated with the account. | +| status | The status of this message. Either `accepted`, `queued`, `sending`, `sent`, `failed`, `delivered`, `undelivered`, `receiving`, or `received`.| +| to | The phone number that received the message in E.164 format. For incoming messages, this is one of your Twilio phone numbers. For outgoing messages, this is the remote phone. | + + +### Call feedback | Property Name | Description | | ------ | ------ | -| quality_score | 1 to 5 quality score where 1 represents imperfect experience and 5 represents a perfect call | - +| quality_score | A 1-to-5 quality score, where 1 represents imperfect experience and 5 represents a perfect call. | -## Adding Destinations -Currently, Warehouses are the only supported destination for object-cloud sources. +## Adding destinations +Currently, warehouses are the only supported destination for [object-cloud](docs/connections/sources/about-cloud-sources/#object-cloud-app-sources]) sources. ## Adding sub-accounts -If you'd like to sync multiple twilio sub-accounts, just follow the steps below! -1. Set up a source for each sub-account -2. Disable the source right after creation to avoid syncing data from the default account -3. [Contact us](https://segment.com/help/contact){:target="_blank”} specifying you would like to add a sub-account to a Twilio source, include a link to the Twilio source(s), and finally, do not forget to include the sub-account SID! +To sync multiple twilio sub-accounts, follow these steps: +1. Set up a source for each sub-account. +2. Disable the source right after creation to avoid syncing data from the default account. +3. [Contact Segment](https://segment.com/help/contact){:target="_blank”} specifying you'd like to add a sub-account to a Twilio source, including a link to the Twilio source. Do not forget to include the sub-account SID. From 1cdfaca327ed9bb2aeef0b2c27e0498cac55c525 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 10 Oct 2025 17:24:44 +0100 Subject: [PATCH 010/140] nts - fix the numbering in lists --- src/connections/sources/catalog/cloud-apps/sendgrid/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md index 33814662d0..c69a4fc303 100644 --- a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md +++ b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md @@ -45,7 +45,7 @@ To add the Sendgrid source to Segment, return to your Segment Workspace and foll > > Changing the collections to be synced takes effect after the next sync. The previous data synced for any collection that has been unselected will be in the warehouse. > - > The default value for Source Sync Schedule in 3 hours. To change the sync, schedule send a message to [friends@segment.com@](mailto:friends@segment.com){:target="_blank”}. + > The default value for Source Sync Schedule in 3 hours. To change the sync, schedule send a message to [friends@segment.com](mailto:friends@segment.com){:target="_blank”}. 9. Toggle **Enable source** on to start syncing data. 10. The first sync begins after you successfully create the source. To review the collections and number of rows synced, go to the **Overview** tab. From b94e28071b9434e888e98841ac2dc33d9e32761b Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 10 Oct 2025 17:33:10 +0100 Subject: [PATCH 011/140] fixing the tables in Twilio source doc --- .../sources/catalog/cloud-apps/twilio/index.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/twilio/index.md b/src/connections/sources/catalog/cloud-apps/twilio/index.md index bc521d9628..5098880af5 100644 --- a/src/connections/sources/catalog/cloud-apps/twilio/index.md +++ b/src/connections/sources/catalog/cloud-apps/twilio/index.md @@ -51,12 +51,12 @@ Collections are the groupings of resources we pull from your source. In your war | Collection | Type | Description | | ------ | ------ | ------ | -| addresses | object | An [address](https://www.twilio.com/docs/api/rest/addresses){:target="_blank”} represents your or your customer's physical location within a country | -| calls | object | A [call](https://www.twilio.com/docs/voice/api/call){:target="_blank”} represents a connection between a telephone and Twilio | -| conferences | object | The [conference](https://www.twilio.com/docs/api/rest/conference){:target="_blank”} allows you to query and manage the state of individual conferences | -| transcriptions | object | A [transcription](https://www.twilio.com/docs/api/rest/transcription){:target="_blank”} represents a transcription of a recording | -| messages | object | A [message](https://www.twilio.com/docs/api/rest/message){:target="_blank”} represents an inbound or outbound message | -| call_feedback | object | The [call feedback](https://www.twilio.com/docs/api/rest/call-feedback){:target="_blank”} subresource provides a simple API to report the quality experienced during a phone call | +| addresses | object | An [address](https://www.twilio.com/docs/api/rest/addresses){:target="_blank”} represents your or your customer's physical location within a country. | +| calls | object | A [call](https://www.twilio.com/docs/voice/api/call){:target="_blank”} represents a connection between a telephone and Twilio. | +| conferences | object | The [conference](https://www.twilio.com/docs/api/rest/conference){:target="_blank”} allows you to query and manage the state of individual conferences. | +| transcriptions | object | A [transcription](https://www.twilio.com/docs/api/rest/transcription){:target="_blank”} represents a transcription of a recording. | +| messages | object | A [message](https://www.twilio.com/docs/api/rest/message){:target="_blank”} represents an inbound or outbound message. | +| call_feedback | object | The [call feedback](https://www.twilio.com/docs/api/rest/call-feedback){:target="_blank”} subresource provides a simple API to report the quality experienced during a phone call. | ## Collection properties From 6f3cb68b1099fddaef3137b19d7fbc94ccbc777a Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 10 Oct 2025 17:38:35 +0100 Subject: [PATCH 012/140] more edits --- .../catalog/cloud-apps/sendgrid/index.md | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md index c69a4fc303..fc09ae34b1 100644 --- a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md +++ b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md @@ -28,8 +28,7 @@ To add the Sendgrid source to Segment, return to your Segment Workspace and foll 1. Navigate to **Connections > Catalog**, and search for "Sendgrid". 2. Click the "Sendgrid" source, and click **Add Source**. **Note**: This source only supports warehouses as a destination. 3. Give the source a meaningful name and (optional) add any labels to help you organize and filter your sources. Select all of the Warehouse destinations from the existing connections. - > info "" - > Segment recommends that you give your source a name that reflects the source itself as this name populates the schema name. For example, the source name `SendGrid` creates the schema `SendGrid`. You can add multiple instances if you have multiple SendGrid accounts. + > **Note**: Segment recommends that you give your source a name that reflects the source itself as this name populates the schema name. For example, the source name `SendGrid` creates the schema `SendGrid`. You can add multiple instances if you have multiple SendGrid accounts. 4. Add the [SendGrid API Key](#sendgrid-api-key) to connect Sendgrid to Segment. Click **Connect**. ![Screenshot of the Settings page in the setup flow for the Sendgrid source.](images/601347_Key.png) 5. Copy the auto-generated Webhook URL from Segment and paste it in your Sendgrid account. Navigate to **Settings > Mail Settings > Event Webhooks** and create a new event webhook. @@ -40,12 +39,9 @@ To add the Sendgrid source to Segment, return to your Segment Workspace and foll > 3. **Select the collections to sync**. The collections that you select will be synced from the start date. 7. Click **Finish** to complete connecting your Sendgrid source to Segment. 8. To set the date from which the sync should start, go to **Settings > Basic Settings**, and configure the start date. - > info "" - > Changing the start date after the first sync doesn't change anything unless a full manual sync is initiated. - > - > Changing the collections to be synced takes effect after the next sync. The previous data synced for any collection that has been unselected will be in the warehouse. - > - > The default value for Source Sync Schedule in 3 hours. To change the sync, schedule send a message to [friends@segment.com](mailto:friends@segment.com){:target="_blank”}. + > * Changing the start date after the first sync doesn't change anything unless a full manual sync is initiated. + > * Changing the collections to be synced takes effect after the next sync. The previous data synced for any collection that has been unselected will be in the warehouse. + > * The default value for Source Sync Schedule in 3 hours. To change the sync, schedule send a message to [friends@segment.com](mailto:friends@segment.com){:target="_blank”}. 9. Toggle **Enable source** on to start syncing data. 10. The first sync begins after you successfully create the source. To review the collections and number of rows synced, go to the **Overview** tab. @@ -83,22 +79,22 @@ Collections are the groupings of resources Segment pulls from your source. In yo | Collection | Type | Description | | ------ | ------ | ------ | | activity | Event | The union of all SendGrid **event** tables. Useful for creating funnels. | -| _open | Event | Recipient has opened the HTML message. Enable Open Tracking to get this type of event. | -| click | Event | Recipient clicked on a link within the message. Enable Click Tracking to get this type of event. | +| _open | Event | Recipient has opened the HTML message. Enable **Open Tracking** to get this type of event. | +| click | Event | Recipient clicked on a link within the message. Enable **Click Tracking** to get this type of event. | | bounce | Event | Receiving server could not or would not accept message. | | delivered | Event | Message has been successfully delivered to the receiving server. | | processed | Event | Triggered when the email is processed. | -| dropped | Event | You may see the following drop reasons: Invalid SMTPAPI header, Spam Content (if spam checker app enabled), Unsubscribed Address, Bounced Address, Spam Reporting Address, Invalid, Recipient List over Package Quota | +| dropped | Event | You may see the following drop reasons: `Invalid SMTPAPI header`, `Spam Content` (if spam checker app enabled), `Unsubscribed Address`, `Bounced Address`, `Spam Reporting Address`, `Invalid`, `Recipient List over Package Quota`. | | deferred | Event | Recipient's email server temporarily rejected message. | -| unsubscribe | Event | Recipient clicked on message's subscription management link. You need to enable Subscription Tracking for getting this type of event. | +| unsubscribe | Event | Recipient clicked on message's subscription management link. You need to enable **Subscription Tracking** for getting this type of event. | | mc_contacts | Object | A sample of fifty latest contacts uploaded or linked from the list, returned from [Sendgrid](https://docs.sendgrid.com/api-reference/contacts/get-sample-contacts){:target="_blank"}. **Will only return data if you're using SendGrid's New Marketing Campaign features.** | | mc_lists | Object | Lists returned from [Sendgrid Lists endpoint](https://docs.sendgrid.com/api-reference/lists/get-all-lists){:target="_blank"}. **Will only return data if you're using SendGrid's New Marketing Campaign features.** | | mc_single_sends | Object | Single Sends with condensed details about each from [Sendgrid Single Sends endpoint](https://docs.sendgrid.com/api-reference/single-sends/get-all-single-sends){:target="_blank"}. **Will only return data if you're using SendGrid's New Marketing Campaign features.** | | spam_report | Event | Recipient marked message as spam. | -| lists | Object | [Groups of contacts](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/contactdb.html){:target="_blank”}. **Will only return data if you had Legacy Marketing Campaigns data** | -| segments | Object | [Slices of lists](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/contactdb.html){:target="_blank”}. **Will only return data if you had Legacy Marketing Campaigns data** | -| recipients | Object | All contacts who have received an email, with information about their last activities and custom activities. [More Info](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/contactdb.html){:target="_blank”}. **Will only return data if you had Legacy Marketing Campaigns data** | -| campaigns | Object | All campaigns you've created in SendGrid. [More Info](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/campaigns.html){:target="_blank”}. **Will only return data if you had Legacy Marketing Campaigns data** | +| lists | Object | [Groups of contacts](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/contactdb.html){:target="_blank”}. **Will only return data if you had Legacy Marketing Campaigns data.** | +| segments | Object | [Slices of lists](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/contactdb.html){:target="_blank”}. **Will only return data if you had Legacy Marketing Campaigns data.** | +| recipients | Object | All contacts who have received an email, with information about their last activities and custom activities. For more information, see the [Sendgrid docs](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/contactdb.html){:target="_blank”}. **Will only return data if you had Legacy Marketing Campaigns data.** | +| campaigns | Object | All campaigns you've created in SendGrid. For more information, see the [Sendgrid docs](https://sendgrid.com/docs/API_Reference/Web_API_v3/Marketing_Campaigns/campaigns.html){:target="_blank”}. **Will only return data if you had Legacy Marketing Campaigns data.** | ## Troubleshooting From 41651b20f35290ee90f1e00a415c0ddc7ee89e0b Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 10 Oct 2025 17:39:08 +0100 Subject: [PATCH 013/140] please work [netlify-build] --- src/connections/sources/catalog/cloud-apps/sendgrid/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md index fc09ae34b1..207b7926d2 100644 --- a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md +++ b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md @@ -5,7 +5,7 @@ id: jhr8dT2yHn [SendGrid](http://sendgrid.com){:target="_blank”} is a trusted platform for transactional email and email marketing. -Take your company's analysis to the next level by **adding SendGrid as a Source to Segment**. Segment automatically collects events like `Click` or `Delivered` and objects such as `Recipients` or `Campaigns` and loads them into your data warehouse.  +Take your company's analysis to the next level by **adding SendGrid as a Source to Segment**. Segment automatically collects events like `Click` or `Delivered` and objects such as `Recipients` or `Campaigns` and loads them into your data warehouse. ## Getting started From dcf1cc711d2fe70e55ffb9f2fa1b521ac254c277 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 10 Oct 2025 18:11:56 +0100 Subject: [PATCH 014/140] more --- src/connections/sources/catalog/cloud-apps/sendgrid/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md index 207b7926d2..9430532e99 100644 --- a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md +++ b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md @@ -41,7 +41,7 @@ To add the Sendgrid source to Segment, return to your Segment Workspace and foll 8. To set the date from which the sync should start, go to **Settings > Basic Settings**, and configure the start date. > * Changing the start date after the first sync doesn't change anything unless a full manual sync is initiated. > * Changing the collections to be synced takes effect after the next sync. The previous data synced for any collection that has been unselected will be in the warehouse. - > * The default value for Source Sync Schedule in 3 hours. To change the sync, schedule send a message to [friends@segment.com](mailto:friends@segment.com){:target="_blank”}. + > * The default value for Source Sync Schedule in 3 hours. To change the sync schedule, send a message to [friends@segment.com](mailto:friends@segment.com){:target="_blank”}. 9. Toggle **Enable source** on to start syncing data. 10. The first sync begins after you successfully create the source. To review the collections and number of rows synced, go to the **Overview** tab. From aa2f11c1412a1af287a6732cdc4800fa11f32e4a Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 10 Oct 2025 18:13:30 +0100 Subject: [PATCH 015/140] more fixing [netlify-build] --- .../sources/catalog/cloud-apps/twilio/index.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/twilio/index.md b/src/connections/sources/catalog/cloud-apps/twilio/index.md index 5098880af5..c3130efd21 100644 --- a/src/connections/sources/catalog/cloud-apps/twilio/index.md +++ b/src/connections/sources/catalog/cloud-apps/twilio/index.md @@ -11,8 +11,7 @@ id: 43bb279b7 1. Navigate to **Connections > Catalog** and from the sources tab, search for “Twilio” and click on the tile. 2. Click **Add Source**, to create a new Twilio source. **Note**: This source only supports warehouses as a destination. 3. Give the source a meaningful name and (optional) add labels. Add the Twilio SID, which can be found in your Twilio account. - > info "" - > Segment recommends that you give your source a name that reflects the source itself as this name populates the schema name. For example, `Twilio` for nickname and `twilio` or `twilio_prod` for the schema name. You can add multiple instances if you have multiple Twilio accounts. + > **Note**: Segment recommends that you give your source a name that reflects the source itself as this name populates the schema name. For example, `Twilio` for nickname and `twilio` or `twilio_prod` for the schema name. You can add multiple instances if you have multiple Twilio accounts. 4. Sign into your Twilio account and select the account that you want to sync data from to Segment. 5. Add the Twilio SID, which can be found in your Twilio account, in **Project Settings**. Click **Authenticate**. 6. Once connected successfully, click **Next** to setup the SQL schema. @@ -23,12 +22,9 @@ id: 43bb279b7 > 3. **Select the collections to sync**. The collections that you select will be synced from the start date. 9. Click **Done** to complete integrating your Twilio account with Segment. 10. To set the date from which the sync should start, go to **Settings > Basic Settings**, and configure the start date. - > info "" - > Changing the start date after the first sync doesn't change anything unless a full manual sync is initiated. - > - > Changing the collections to be synced takes effect after the next sync. The previous data synced for any collection that has been unselected will be in the warehouse. - > - > The default value for Source Sync Schedule in 3 hours. To change the sync, schedule send a message to [friends@segment.com](mailto:friends@segment.com){:target="_blank”}. + > - Changing the start date after the first sync doesn't change anything unless a full manual sync is initiated. + > - Changing the collections to be synced takes effect after the next sync. The previous data synced for any collection that has been unselected will be in the warehouse. + > - The default value for Source Sync Schedule in 3 hours. To change the sync schedule, send a message to [friends@segment.com](mailto:friends@segment.com){:target="_blank”}. 11. Toggle **Enable source** on to start syncing data. 12. The first sync begins after you successfully create the source. To review the collections and number of rows synced, go to the **Overview** tab. From dfb8f67f2bdf2f9704dc20a998f0998e415ee1fb Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 10 Oct 2025 18:15:49 +0100 Subject: [PATCH 016/140] warehouse link 1 --- src/connections/sources/catalog/cloud-apps/sendgrid/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md index 9430532e99..3d0bda6922 100644 --- a/src/connections/sources/catalog/cloud-apps/sendgrid/index.md +++ b/src/connections/sources/catalog/cloud-apps/sendgrid/index.md @@ -26,7 +26,7 @@ Adding SendGrid as a Source in Segment requires a SendGrid API key. If you don't To add the Sendgrid source to Segment, return to your Segment Workspace and follow these steps: 1. Navigate to **Connections > Catalog**, and search for "Sendgrid". -2. Click the "Sendgrid" source, and click **Add Source**. **Note**: This source only supports warehouses as a destination. +2. Click the "Sendgrid" source, and click **Add Source**. **Note**: This source only supports [warehouses](docs/connections/storage/warehouses/) as a destination. 3. Give the source a meaningful name and (optional) add any labels to help you organize and filter your sources. Select all of the Warehouse destinations from the existing connections. > **Note**: Segment recommends that you give your source a name that reflects the source itself as this name populates the schema name. For example, the source name `SendGrid` creates the schema `SendGrid`. You can add multiple instances if you have multiple SendGrid accounts. 4. Add the [SendGrid API Key](#sendgrid-api-key) to connect Sendgrid to Segment. Click **Connect**. From a50b1c3e04d8b1f88802742a713be48787a39d75 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 10 Oct 2025 18:16:27 +0100 Subject: [PATCH 017/140] warehouse link 2 --- src/connections/sources/catalog/cloud-apps/twilio/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/sources/catalog/cloud-apps/twilio/index.md b/src/connections/sources/catalog/cloud-apps/twilio/index.md index c3130efd21..23735f01cd 100644 --- a/src/connections/sources/catalog/cloud-apps/twilio/index.md +++ b/src/connections/sources/catalog/cloud-apps/twilio/index.md @@ -9,7 +9,7 @@ id: 43bb279b7 ## Getting started 1. Navigate to **Connections > Catalog** and from the sources tab, search for “Twilio” and click on the tile. -2. Click **Add Source**, to create a new Twilio source. **Note**: This source only supports warehouses as a destination. +2. Click **Add Source**, to create a new Twilio source. **Note**: This source only supports [warehouses](docs/connections/storage/warehouses/) as a destination. 3. Give the source a meaningful name and (optional) add labels. Add the Twilio SID, which can be found in your Twilio account. > **Note**: Segment recommends that you give your source a name that reflects the source itself as this name populates the schema name. For example, `Twilio` for nickname and `twilio` or `twilio_prod` for the schema name. You can add multiple instances if you have multiple Twilio accounts. 4. Sign into your Twilio account and select the account that you want to sync data from to Segment. From 05fcfcaeb77c8bc5c053b8bf25c1eac045e248c7 Mon Sep 17 00:00:00 2001 From: Elijah Hunt <98310719+elemhunt@users.noreply.github.com> Date: Mon, 13 Oct 2025 15:13:52 +0200 Subject: [PATCH 018/140] Update src/connections/destinations/catalog/sherlock/index.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/catalog/sherlock/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/sherlock/index.md b/src/connections/destinations/catalog/sherlock/index.md index a2a78f2187..bbead8a9c4 100644 --- a/src/connections/destinations/catalog/sherlock/index.md +++ b/src/connections/destinations/catalog/sherlock/index.md @@ -5,7 +5,7 @@ id: 5a947eee1ad6310001435883 --- Sherlock is the first engagement scoring application for SaaS businesses who want to truly understand user engagement. Build an engagement algorithm and understand the engagement of your users, accounts and segments. -This integration is maintained by Sherlock. For questions or help with your integration, contact Sherlock support[support@sherlockscore.com]. +This integration is maintained by Sherlock. For questions or help with your integration, contact [Sherlock support](support@sherlockscore.com). ## Getting Started From 151ae1f98945139f52dd1f9a3a101e2af6d7ae1c Mon Sep 17 00:00:00 2001 From: maxmilhan <34718789+maxmilhan@users.noreply.github.com> Date: Mon, 13 Oct 2025 09:46:57 -0400 Subject: [PATCH 019/140] Enhance documentation on signal conversion and rules Updated the configuration documentation to clarify the process of converting signals to events and rule creation in Segment. --- src/connections/auto-instrumentation/configuration.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/connections/auto-instrumentation/configuration.md b/src/connections/auto-instrumentation/configuration.md index e1976a2e27..807e07bad8 100644 --- a/src/connections/auto-instrumentation/configuration.md +++ b/src/connections/auto-instrumentation/configuration.md @@ -17,6 +17,13 @@ This guide assumes that you've already added the Signals SDK to your application After you set up the Signals SDK to capture the signals you want to target, you can create rules in your Segment workspace to translate the captured signals into traditional Segment analytics events. These rules are deployed in your application the next time a user launches your app. +The process is: +1. Send signals into the app +2. Build event rules from those signals +3. Publish those event rules + +Once your event rules are published they will be analyzed against user behavior on your website or app and send events to Segment when users perform the interaction triggers. + ### Getting started with rule creation 1. Ensure you have the `Workspace Owner` or `Source Admin` role in Segment. If your source is connected to a tracking plan, you will also need, at a minimum, the `Tracking Plan Read-only` role. To view the content in the Event Builder tab, you will need, at a minimum, the `Source Read-only` role. @@ -47,13 +54,11 @@ You can enrich your events by adding properties based on signal metadata. For ex These properties are sent alongside your event, giving your team deeper insights without requiring any manual instrumentation. + -- - - ## Identify diff --git a/src/connections/destinations/catalog/keen/index.md b/src/connections/destinations/catalog/keen/index.md index 57b9507edc..b0b9e97d3e 100644 --- a/src/connections/destinations/catalog/keen/index.md +++ b/src/connections/destinations/catalog/keen/index.md @@ -9,7 +9,6 @@ When you enable Keen in the Segment web app, your changes appear in the Segment Keen is supported on the client side and server side. -- - - ## Identify diff --git a/src/connections/destinations/catalog/librato/index.md b/src/connections/destinations/catalog/librato/index.md index 0c10df41a1..940024517e 100644 --- a/src/connections/destinations/catalog/librato/index.md +++ b/src/connections/destinations/catalog/librato/index.md @@ -9,7 +9,6 @@ When you enable Librato in the Segment web app, your changes appear in the Segme Librato supports the Segment `track` method for both client-side and server-side. -- - - ## Track diff --git a/src/connections/destinations/catalog/livechat/index.md b/src/connections/destinations/catalog/livechat/index.md index 748df4af30..97db17014a 100644 --- a/src/connections/destinations/catalog/livechat/index.md +++ b/src/connections/destinations/catalog/livechat/index.md @@ -9,7 +9,6 @@ When you enable LiveChat in the Segment web app, your changes appear in the Segm LiveChat is only supported on the client-side. -- - - ## Identify diff --git a/src/connections/destinations/catalog/localytics/index.md b/src/connections/destinations/catalog/localytics/index.md index b47fd6e190..04901b71e8 100644 --- a/src/connections/destinations/catalog/localytics/index.md +++ b/src/connections/destinations/catalog/localytics/index.md @@ -43,7 +43,6 @@ Whenever you call [`track`](/docs/connections/spec/track/), we'll log an event w Localytics. [`track`](/docs/connections/spec/track/) takes the name of the event and any optional properties you want to associate with the event. -- - - ## Push Notifications diff --git a/src/connections/destinations/catalog/marketo/index.md b/src/connections/destinations/catalog/marketo/index.md index 0012bc552e..5771c4461a 100644 --- a/src/connections/destinations/catalog/marketo/index.md +++ b/src/connections/destinations/catalog/marketo/index.md @@ -11,7 +11,6 @@ When you enable Marketo in the Segment web app, your changes appear in the Segme ### Important Note: Our client-side and server-side destinations each require **different** credentials for authentication. Read through the information below on `identify` calls for further information. -- - - ## Page and Track diff --git a/src/connections/destinations/catalog/mixpanel/index.md b/src/connections/destinations/catalog/mixpanel/index.md index 05fe21e16c..2ec9b89a3b 100644 --- a/src/connections/destinations/catalog/mixpanel/index.md +++ b/src/connections/destinations/catalog/mixpanel/index.md @@ -337,7 +337,6 @@ analytics.track({ Segment doesn't map `$library_version` since that is reserved for Mixpanel's library version, not Segment's. Segment doesn't map to `$brand`. -- - - ## Features diff --git a/src/connections/destinations/catalog/olark/index.md b/src/connections/destinations/catalog/olark/index.md index 0fa22b794a..cdc9587194 100644 --- a/src/connections/destinations/catalog/olark/index.md +++ b/src/connections/destinations/catalog/olark/index.md @@ -9,7 +9,6 @@ When you enable Olark in the Segment web app, your changes appear in the Segment Olark is only supported in device mode (on the client). -- - - ## Page @@ -32,7 +31,6 @@ More documentation on the Olark API can be found [in Olark's docs](https://www.o When you call [`track`](/docs/connections/spec/track/) or one of its helpers on analytics.js, we call Olark's `sendNotificationToOperator` function as `visitor triggered *eventName*`. You must enable this option with the *track* flag, because it can sometimes be bothersome. -- - - ## Features @@ -52,7 +50,6 @@ analytics.ready(function(){ [Read the ready docs for more details](/docs/connections/sources/catalog/libraries/website/javascript/#ready) -- - - ## Record Live Chat Events diff --git a/src/connections/destinations/catalog/onesignal/index.md b/src/connections/destinations/catalog/onesignal/index.md index 0dff3e8658..d1b084568f 100644 --- a/src/connections/destinations/catalog/onesignal/index.md +++ b/src/connections/destinations/catalog/onesignal/index.md @@ -11,7 +11,6 @@ OneSignal will only track new users. If you have existing push notification data OneSignal supports the `identify` and `track` methods and is currently only available on iOS using Segment. -- - - ## Identify & Track diff --git a/src/connections/destinations/catalog/planhat/index.md b/src/connections/destinations/catalog/planhat/index.md index 15f4744cb9..6bb2324655 100644 --- a/src/connections/destinations/catalog/planhat/index.md +++ b/src/connections/destinations/catalog/planhat/index.md @@ -12,7 +12,6 @@ The Segment Planhat destination is 100% handled through our servers, so you don' The Segment Planhat destination supports Identify, Page, Track, and Group calls. For more information, see the [Segment Spec documentation](/docs/connections/spec/). -- - - ## Identify diff --git a/src/connections/destinations/catalog/preact/index.md b/src/connections/destinations/catalog/preact/index.md index 42e22ca178..d14b58d3eb 100644 --- a/src/connections/destinations/catalog/preact/index.md +++ b/src/connections/destinations/catalog/preact/index.md @@ -17,7 +17,6 @@ To group users into accounts in preact you'll use our [`group`](/docs/connection Our [`track`](/docs/connections/spec/track) method will record events in Preact. Users must be identified on the client side for events to appear in Preact. -- - - ## Features diff --git a/src/connections/destinations/catalog/sailthru/index.md b/src/connections/destinations/catalog/sailthru/index.md index 717c8b0629..32500155f2 100644 --- a/src/connections/destinations/catalog/sailthru/index.md +++ b/src/connections/destinations/catalog/sailthru/index.md @@ -18,7 +18,6 @@ The Sailthru server-side destination will allow you to add users, send custom ev - The template passed through as `reminder_template` must match the public name configured in Sailthru's UI. - We recommend appending `traits.email` whenever possible in your `identify` calls. If you send an `identify` call without a `traits.email` and only a `userId`, the profile will be created in Sailthru but you would not be able to find that user using their **User Look Up** feature. -- - - ### Page You must configure a `customerId` in your integration settings in order to use the `page` functionality. This value is only required for `page` calls and can be found in your Sailthru Dashboard under **App Settings** @@ -41,7 +40,6 @@ analytics.page('Page Name', { See our [documentation](/docs/connections/spec/page/#properties) for more info on the `keywords` property. -- - - ### Identify From 721570b51e5f4ef778380ee399e2528f6ee351c7 Mon Sep 17 00:00:00 2001 From: CristhianMotoche Date: Wed, 15 Oct 2025 13:16:28 -0500 Subject: [PATCH 083/140] chore: Replace variable interpolation with Evergage --- src/connections/destinations/catalog/evergage/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/connections/destinations/catalog/evergage/index.md b/src/connections/destinations/catalog/evergage/index.md index 54c1b045f5..bfd64c1059 100644 --- a/src/connections/destinations/catalog/evergage/index.md +++ b/src/connections/destinations/catalog/evergage/index.md @@ -18,7 +18,7 @@ analytics.identify('userId123', { }); ``` -A `userId` is required on all `identify` calls sent to Evergage. When you call `identify` Segment will call both `setUser` and `setUserField` in the [Evergage library](https://doc.evergage.com/display/EKB/Send+Data+to+Evergage+via+JavaScript){:target="_blank"} to insert both the `userId` and corresponding user traits into {{ integration.name}}. +A `userId` is required on all `identify` calls sent to Evergage. When you call `identify` Segment will call both `setUser` and `setUserField` in the [Evergage library](https://doc.evergage.com/display/EKB/Send+Data+to+Evergage+via+JavaScript){:target="_blank"} to insert both the `userId` and corresponding user traits into Evergage. ## Group If you're not familiar with the Segment Specs, take a look to understand what the [Group method](/docs/connections/spec/group/) does. An example call would look like: @@ -29,7 +29,7 @@ analytics.group('companyId123', { }); ``` -A `groupId` is required on all `group` calls sent to Evergage. When you call `group` Segment will call both `setCompany` and `setAccountField` in the [Evergage library](https://doc.evergage.com/display/EKB/Send+Data+to+Evergage+via+JavaScript){:target="_blank"} to insert both the `groupId` and corresponding group traits into {{ integration.name}}. +A `groupId` is required on all `group` calls sent to Evergage. When you call `group` Segment will call both `setCompany` and `setAccountField` in the [Evergage library](https://doc.evergage.com/display/EKB/Send+Data+to+Evergage+via+JavaScript){:target="_blank"} to insert both the `groupId` and corresponding group traits into Evergage. ## Track If you're not familiar with the Segment Specs, take a look to understand what the [Track method](/docs/connections/spec/track/) does. An example call would look like: From 082307b545a16fb33042ccab0756ab18f3ff3d87 Mon Sep 17 00:00:00 2001 From: maleman842 <79479130+maleman842@users.noreply.github.com> Date: Wed, 15 Oct 2025 11:48:19 -0700 Subject: [PATCH 084/140] Update linked-audiences.md --- src/engage/audiences/linked-audiences.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/engage/audiences/linked-audiences.md b/src/engage/audiences/linked-audiences.md index 988cd0ce51..bde52144fa 100644 --- a/src/engage/audiences/linked-audiences.md +++ b/src/engage/audiences/linked-audiences.md @@ -248,13 +248,18 @@ Determine when an audience should run and send data to enabled destinations with You can maintain your run schedule at any time from the audience's **Settings** tab. +> info "" +> When configuring an interval run schedule, the system uses a cron-based mechanism anchored to UTC, meaning the next run time aligns with the nearest UTC-based interval cycle, which may shift the schedule relative to your local time zone. +> When you set a 24-hour interval run schedule at, for example, 4 PM PST, the cron-based system using UTC schedules the next run for 5 PM PST the same day, as it aligns with 12 AM UTC; however, if set after 5 PM PST, the next run will be at 5 PM PST the following day. + You can also click **Run Now** on the Audience Overview page at any time (even if the run schedule is **Interval** Overview **Day and time**) to manually trigger a run on your warehouse and send data to enabled destinations. There may be up to a five minute delay from the configured start time for audiences that are configured with the **Interval** and **Day and time** run schedules. For example, if you configured an audience with the **Day and time** compute schedule to run on Mondays at 8am, it can compute as late as Monday at 8:05am. This is to help us better manage our system load. > info "" -> When configuring an interval run schedule, the system uses a cron-based mechanism anchored to UTC, meaning the next run time aligns with the nearest UTC-based interval cycle, which may shift the schedule relative to your local time zone. -> When you set a 24-hour interval run schedule at, for example, 4 PM PST, the cron-based system using UTC schedules the next run for 5 PM PST the same day, as it aligns with 12 AM UTC; however, if set after 5 PM PST, the next run will be at 5 PM PST the following day. +> The next execution time for a Linked Audience is not calculated until the previous run has fully completed. This means that if you schedule a Linked Audience to run every 15 minutes, but the workflow takes 1 hour to complete, the next execution won't be scheduled until that run finishes. +> +> At that point, we calculate the next run time by finding the next interval after the current time, based on the corresponding cron expression. That interval becomes the next execution time. ## Step 5: Monitor your activation From 1d34713533d98379579aacfd00fdaad4f40147b0 Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 14:40:24 -0500 Subject: [PATCH 085/140] some more updates --- .../catalog/cloud-apps/zendesk/index.md | 68 +++++++++---------- 1 file changed, 32 insertions(+), 36 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index 069bd4ccfb..d66ea3612f 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -5,67 +5,63 @@ id: 3hbak7a9 [Zendesk](https://www.zendesk.com/){:target="_blank”} is a customer support platform that helps businesses manage and respond to customer requests across channels. - - -## Getting Started +## Getting started 1. Go to **Connections > Sources** and click **Add Source** in the Segment app. - 2. Search for **Zendesk** in the Sources Catalog and click **Add Source**. +3. Give the source a name and add any labels to help you organize and filter your sources. You can give the source any name, but Segment recommends a name that reflects the source itself, as this name auto-populates the schema name. For example, the source name `Zendesk` creates the schema `zendesk`. +- You can add multiple instances if you have multiple Zendesk accounts. +4. Enter your Zendesk subdomain. The subdomain you use to access your Zendesk portal (for example `segment` for segment.zendesk.com) +- If you enter `segment.zendesk.com` as a subdomain instead of just `segment`, Segment tries to access the host `segment.zendesk.com.zendesk.com` and you will get a credentials error. +5. Click **Authorize** to start Zendesk's OAuth process. Sign in and grant permissions. -3. Give the Source a name and add any labels to help you organize and filter your sources. You can give the source any name, but Segment recommends a name that reflects the source itself, as this name auto-populates the schema name. For example, the source name `Zendesk` creates the schema `zendesk`. - - * **Note**: You can add multiple instances if you have multiple Zendesk accounts. That's why Segment allows you to customize the source's nickname and schema name. - -4. Enter your Zendesk subdomain. The subdomain you use to access your Zendesk portal (for example 'segment' for segment.zendesk.com) - - * **Note:** If you enter `segment.zendesk.com` as a subdomain instead of just `segment`, Segment tries to access the host `segment.zendesk.com.zendesk.com` and you will get a credentials error. +> success "" +> Segment uses Zendesk's [Incremental Export API](https://developer.zendesk.com/api-reference/ticketing/ticket-management/incremental_exports/){:target="_blank”} , which requires Admin access. Make sure the user has Admin authorizations. -5. Click **Authorize** to start Zendesk's OAuth process. Sign in and grant permissions, you'll be good to go. -> success "" -> **Tip**: Segment uses the incremental export API from Zendesk, which requires Admin access. Make sure the user has Admin authorizations. +### Rate limits +The Zendesk source uses both Zendesk's [Core API](https://developer.zendesk.com/api-reference/){:target="_blank"} and [Incremental Exports API](https://developer.zendesk.com/rest_api/docs/core/incremental_export){:target="_blank"}. -### Rate Limits +The source's requests to the Incremental API don't count towards your Zendesk account's rate limits, but requests to the Core API do. By default, Segment caps requests to Zendesk's Core API to a rate of 200 requests per minute to avoid triggering [Zendesk's Rate Limits](https://developer.zendesk.com/api-reference/ticketing/account-configuration/usage_limits/){:target="_blank"}. -The Zendesk source uses both Zendesk's [Core API](https://developer.zendesk.com/api-reference/){:target="_blank"} and [Incremental Exports API](https://developer.zendesk.com/rest_api/docs/core/incremental_export){:target="_blank"}. The source's requests to the Incremental API don't count towards your Zendesk account's rate limits, but requests to the Core API do. By default, Segment caps requests to Zendesk's Core API to a rate of 200 requests per minute to avoid triggering [Zendesk's Rate Limits](https://developer.zendesk.com/api-reference/ticketing/account-configuration/usage_limits/){:target="_blank"}. If you'd like to increase or decrease the request rate for your source, [please reach out to Segment support](https://segment.com/help/contact/){:target="_blank”}. Support for this in the UI is in the works. +If you'd like to increase or decrease the request rate for your source, [reach out to Segment support](https://segment.com/help/contact/){:target="_blank”}. ## Components ### Sync -The Zendesk source is built with a sync component, which means Segment makes requests to their API on your behalf on a three hour interval to pull the latest data into Segment. In the initial sync, Segment grabs all the Zendesk objects (and their corresponding properties) according to the Collections Table below. The objects are written into a separate schema, corresponding to the source instance's schema name you designated upon creation (like `zendesk_prod.users`). +The Zendesk source is built with a sync component, which means Segment makes requests to their API on your behalf on a three hour interval to pull the latest data into Segment. In the initial sync, Segment grabs all the Zendesk objects (and their corresponding properties) according to the Collections table in this section. The objects are written into a separate schema, corresponding to the source instance's schema name you designated upon creation (like `zendesk_prod.users`). The sync component uses an upsert API, so the data in your warehouse loaded using sync reflects the latest state of the corresponding resource in Zendesk. For example, if `ticket_status` goes from `open` to `closed` between syncs, on its next sync that tickets status is `closed`. The source syncs and warehouse syncs are independent processes. Source runs pull your data into the Segment Hub, and warehouse runs flush that data to your warehouse. Sources sync with Segment every three hours. Depending on your Warehouses plan, Segment pushes the Source data to your warehouse on the interval associated with your billing plan. -At the moment, Segment doesn't support filtering which objects or properties get synced. If you're interested in this feature, [please reach out to Segment support](https://segment.com/help/contact/){:target="_blank”}. +At the moment, Segment doesn't support filtering which objects or properties get synced. If you're interested in this feature, [reach out to Segment support](https://segment.com/help/contact/){:target="_blank”}. ## Collections Collections are the groupings of resources Segment pulls from your source. -| Collection | Type | Description | -| ------ | ------ | ------ | -| [users](#users) | object | Zendesk Support has three types of users: end-users (your customers), agents, and administrators. End-users request support through tickets. Agents work in Zendesk Support to solve tickets. Agents can be divided into multiple groups and can also belong to multiple groups. Agents don't have access to administrative configuration in Zendesk Support such as business rules or automation, but can configure their own macros and views. Administrators have all the abilities of agents, plus administrative abilities. | -| [groups](#groups) | object | When support requests arrive in Zendesk, they can be assigned to a Group. Groups serve as the core element of ticket workflow; support agents are organized into Groups and tickets can be assigned to a Group only, or to an assigned agent within a Group. A ticket can never be assigned to an agent without also being assigned to a Group. | -| [tickets](#tickets) | object | Tickets are the means through which your End-users (customers) communicate with Agents in Zendesk. **Note**: Segment pulls all tickets updated (or created) in the last year to start by default. If you need more, reach out to [Segment support](https://segment.com/help/contact/){:target="_blank”}. Support can do a run to pull further back in history. | -| [ticket_fields](#ticket_fields) | object | Customize fields on the ticket form. | -| [activities](#activities) | object | The activity stream is a per agent event stream. It will give access to the most recent events that relate to the agent polling the API. | -| [attachments](#activities) | object | This API is for attachments in tickets and forum posts in the Web portal. | -| [organizations](#organizations) | object | Just as agents can be segmented into groups in Zendesk, your customers (end-users) can be segmented into organizations. | -| [ticket_events](#ticket_events) | events | Returns a stream of changes that occurred on tickets. Each event is tied to an update on a ticket and contains all the fields that were updated in that change. **Note**: Segment pulls one year of ticket events to start by default. If you need more, reach out to [Segment support](https://segment.com/help/contact/){:target="_blank”}. Support can do a run to pull further back in history. | -| [ticket_metrics](#ticket_metrics) | object | All kinds of aggregate metrics about a ticket | -| [satisfaction_ratings](#satisfaction_ratings) | object | If you have enabled satisfaction ratings for your account, this end point allows you to quickly retrieve all ratings. | -| [ticket_comments](#ticket_comments) | object | Ticket comments represent the conversation between requesters, collaborators, and agents. It includes the full body of each comment, public and private. **Note**: This collection is not included by default. To request it, [contact Segment support](https://segment.com/help/contact/){:target="_blank”}. | -| [ticket_forms](#ticket_forms) | object | Ticket forms allow an admin to define a subset of ticket fields for display to both agents and end users. **Note**: This feature requires a Zendesk Enterprise account. Segment fully syncs all available records in each sync run. | -| [ticket_skips](#ticket_skips) | object | A skip is a record of when an agent skips over a ticket without responding to the end user. **Note**: Segment fully syncs all available records in this collection during each sync run. | -| [organization_memberships](#organization_memberships) | object | An organization_membership links a user to an organization. Organizations can have many users. Users can be in many organizations if the account supports multiple organizations. **Note**: Segment fully syncs all available records in this collection during each sync run. | -| [group_memberships](#group_memberships) | object | A group_membership links an agent to a group. Groups can have many agents, as agents can be in many groups. **Note**: Segment fully syncs all available records in this collection during each sync run. | -| [audit_logs](#audit_logs) | object | The audit log shows various changes in your instance of Zendesk since the account was created. **Note**: This collection is not included by default. To request it, [contact Segment support](https://segment.com/help/contact/){:target="_blank”}. | +| Collection | Type | Description | +| ----------------------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [users](#users) | object | Zendesk Support has three types of users: end-users (your customers), agents, and administrators. End-users request support through tickets. Agents work in Zendesk Support to solve tickets. Agents can be divided into multiple groups and can also belong to multiple groups. Agents don't have access to administrative configuration in Zendesk Support such as business rules or automation, but can configure their own macros and views. Administrators have all the abilities of agents, plus administrative abilities. | +| [groups](#groups) | object | When support requests arrive in Zendesk, they can be assigned to a Group. Groups serve as the core element of ticket workflow; support agents are organized into Groups and tickets can be assigned to a Group only, or to an assigned agent within a Group. A ticket can never be assigned to an agent without also being assigned to a Group. | +| [tickets](#tickets) | object | Tickets are the means through which your End-users (customers) communicate with Agents in Zendesk. **Note**: Segment pulls all tickets updated (or created) in the last year to start by default. If you need more, reach out to [Segment support](https://segment.com/help/contact/){:target="_blank”}. Support can do a run to pull further back in history. | +| [ticket_fields](#ticket_fields) | object | Customize fields on the ticket form. | +| [activities](#activities) | object | The activity stream is a per agent event stream. It will give access to the most recent events that relate to the agent polling the API. | +| [attachments](#activities) | object | This API is for attachments in tickets and forum posts in the Web portal. | +| [organizations](#organizations) | object | Just as agents can be segmented into groups in Zendesk, your customers (end-users) can be segmented into organizations. | +| [ticket_events](#ticket_events) | events | Returns a stream of changes that occurred on tickets. Each event is tied to an update on a ticket and contains all the fields that were updated in that change. **Note**: Segment pulls one year of ticket events to start by default. If you need more, reach out to [Segment support](https://segment.com/help/contact/){:target="_blank”}. Support can do a run to pull further back in history. | +| [ticket_metrics](#ticket_metrics) | object | All kinds of aggregate metrics about a ticket | +| [satisfaction_ratings](#satisfaction_ratings) | object | If you have enabled satisfaction ratings for your account, this end point allows you to quickly retrieve all ratings. | +| [ticket_comments](#ticket_comments) | object | Ticket comments represent the conversation between requesters, collaborators, and agents. It includes the full body of each comment, public and private. **Note**: This collection is not included by default. To request it, [contact Segment support](https://segment.com/help/contact/){:target="_blank”}. | +| [ticket_forms](#ticket_forms) | object | Ticket forms allow an admin to define a subset of ticket fields for display to both agents and end users. **Note**: This feature requires a Zendesk Enterprise account. Segment fully syncs all available records in each sync run. | +| [ticket_skips](#ticket_skips) | object | A skip is a record of when an agent skips over a ticket without responding to the end user. **Note**: Segment fully syncs all available records in this collection during each sync run. | +| [organization_memberships](#organization_memberships) | object | An organization_membership links a user to an organization. Organizations can have many users. Users can be in many organizations if the account supports multiple organizations. **Note**: Segment fully syncs all available records in this collection during each sync run. | +| [group_memberships](#group_memberships) | object | A group_membership links an agent to a group. Groups can have many agents, as agents can be in many groups. **Note**: Segment fully syncs all available records in this collection during each sync run. | +| [audit_logs](#audit_logs) | object | The audit log shows various changes in your instance of Zendesk since the account was created. **Note**: This collection is not included by default. To request it, [contact Segment support](https://segment.com/help/contact/){:target="_blank”}. | In your warehouse, each collection gets its own table. Find below a list of the properties Segment automatically fetches for each collection. From 5eb849e696b80278b60676ac4b7e7ec348a4f13e Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 14:45:27 -0500 Subject: [PATCH 086/140] update groups table --- .../catalog/cloud-apps/zendesk/index.md | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index d66ea3612f..548bbcdb0b 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -64,22 +64,25 @@ Collections are the groupings of resources Segment pulls from your source. | [audit_logs](#audit_logs) | object | The audit log shows various changes in your instance of Zendesk since the account was created. **Note**: This collection is not included by default. To request it, [contact Segment support](https://segment.com/help/contact/){:target="_blank”}. | -In your warehouse, each collection gets its own table. Find below a list of the properties Segment automatically fetches for each collection. +In your warehouse, each collection is stored in its own table. The tables that follow list the standard properties Segment automatically fetches for each collection. -> info "This list only includes standard properties" -> The list in this document includes the standard properties only, but doesn't include _your_ custom fields. (Don't worry, they'll be there in your warehouse.) +> info "Standard properties only" +> These tables include only standard Zendesk properties. Your custom fields will also appear in your warehouse after sync. ### groups -| Property | Description | -| ----------- | -------------------------------------------- | -| id | This is automatically assigned when creating groups. | -| url | The API URL of this group. | -| deleted | Deleted groups get marked as such. | -| name | The name of the group. | -| created_at | The date and time the group was created. | -| updated_at | The date and time of the last update of the group. | -| received_at | This timestamp is added to incoming messages as soon as they hit Segment API. | +This collection contains information about Zendesk groups. + +| Property | Description | +| ------------- | -------------------------------------------------- | +| `id` | Automatically assigned when a group is created. | +| `url` | The API URL of the group. | +| `deleted` | Indicates whether the group has been deleted. | +| `name` | The name of the group. | +| `created_at` | The date and time the group was created. | +| `updated_at` | The date and time the group was last updated. | +| `received_at` | Timestamp added when data reaches the Segment API. | + ### users From c72f5767d4b7b6263e979955b441e238c85ed13a Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 14:47:50 -0500 Subject: [PATCH 087/140] clean up users table --- .../catalog/cloud-apps/zendesk/index.md | 65 ++++++++++--------- 1 file changed, 33 insertions(+), 32 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index 548bbcdb0b..59dd4e6669 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -83,40 +83,41 @@ This collection contains information about Zendesk groups. | `updated_at` | The date and time the group was last updated. | | `received_at` | Timestamp added when data reaches the Segment API. | - ### users -| Property | Description | -| --------------- | ----------------------------------------------------------------- | -| id | This is automatically assigned when the user is created. | -| url | Segment sets the “url” field users see in their Warehouse to equal the “id” from Zendesk, rather than the “url” field. | -| name | The name of the user. | -| email | The primary email address of the user. | -| time_zone | The time-zone of this user. | -| phone | The primary phone number of this user. | -| locale_id | The language identifier of this user. | -| locale | The locale for this user. | -| organization_id | The ID of the organization that this user is associated with. | -| role | The role of the user. Possible values: "end-user", "agent", "admin". | -| verified | The user's primary identity is verified or not. | -| external_id | A unique identifier from another system. The API treats the ID as case insensitive. Example: ian1 and Ian1 are the same user. | -| alias | An alias displayed to end users. | -| active | This is set to false if the user has been deleted. | -| shared | If the user is a shared agent from different Zendesk Support instance. Ticket sharing accounts only. | -| last_login_at | The last time the user signed in to Zendesk Support. | -| two_factor_auth_enabled | If two factor authentication is enabled. | -| signature | The user's signature. Only agents and admins can have signatures. | -| details | Any details you want to store about the user, such as an address. | -| notes | Any notes you want to store about the user. | -| custom_role_id | A custom role if the user is an agent on the Enterprise plan. | -| moderator | Designates whether the user has forum moderation capabilities. | -| ticket_restriction | Specifies which tickets the user has access to. Possible values are: “organization”, “groups”, “assigned”, “requested”, null. | -| only_private_comments | This is set to true if the user can only create private comments. | -| restricted_agent | If the agent has any restrictions: This is set to false for admins and unrestricted agents, true for other agents. | -| suspended | If the agent is suspended. Tickets from suspended users are also suspended, and these users cannot sign in to the end user portal. | -| chat_only | Whether or not the user is a chat-only agent. | -| updated_at | The date and time of the user's last update. | -| received_at | This timestamp is added to incoming messages as soon as they hit Segment API. | +This collection contains information about Zendesk users. + +| Property | Description | +| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| `id` | Automatically assigned when a user is created. | +| `url` | Segment sets this field to the Zendesk `id`, not the original Zendesk `url`. | +| `name` | The user’s full name. | +| `email` | The user’s primary email address. | +| `time_zone` | The user’s time zone. | +| `phone` | The user’s primary phone number. | +| `locale_id` | The language identifier for the user. | +| `locale` | The user’s locale. | +| `organization_id` | The ID of the organization the user belongs to. | +| `role` | The user’s role. Possible values: `end-user`, `agent`, `admin`. | +| `verified` | Indicates whether the user’s primary identity is verified. | +| `external_id` | A unique identifier from another system. Treated as case-insensitive (for example, `ian1` and `Ian1` refer to the same user). | +| `alias` | An alias displayed to end users. | +| `active` | Set to `false` if the user has been deleted. | +| `shared` | Indicates whether the user is a shared agent from another Zendesk instance (ticket sharing accounts only). | +| `last_login_at` | The date and time of the user’s last login. | +| `two_factor_auth_enabled` | Indicates whether two-factor authentication is enabled. | +| `signature` | The user’s signature (agents and admins only). | +| `details` | Additional details about the user, such as an address. | +| `notes` | Notes stored about the user. | +| `custom_role_id` | The custom role ID if the user is an agent on the Enterprise plan. | +| `moderator` | Indicates whether the user has forum moderation permissions. | +| `ticket_restriction` | Specifies which tickets the user can access. Possible values: `organization`, `groups`, `assigned`, `requested`, or `null`. | +| `only_private_comments` | Set to `true` if the user can only create private comments. | +| `restricted_agent` | Indicates whether the agent has restrictions. `false` for admins and unrestricted agents, `true` for restricted agents. | +| `suspended` | Indicates whether the agent is suspended. Tickets from suspended users are also suspended. | +| `chat_only` | Indicates whether the user is a chat-only agent. | +| `updated_at` | The date and time the user was last updated. | +| `received_at` | Timestamp added when data reaches the Segment API. | ### tickets From cf6be1c2f0143fae4db436bd6fa7c43217deb557 Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 14:50:29 -0500 Subject: [PATCH 088/140] clean up tickets table --- .../catalog/cloud-apps/zendesk/index.md | 58 ++++++++++--------- 1 file changed, 30 insertions(+), 28 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index 59dd4e6669..31fa5dbb4a 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -121,34 +121,36 @@ This collection contains information about Zendesk users. ### tickets -| Property | Description | -| --------------- | ----------------------------------------------------------------- | -| id | This is automatically assigned when the ticket is created. | -| url | The API URL of this ticket. | -| external_id | An ID you can use to link Zendesk Support tickets to local records. | -| type | The type of this ticket. Possible values: “problem”, “incident”, “question” or “task”. | -| subject | The value of the subject field for this ticket. | -| raw_subject | The dynamic content placeholder, if present, or the "subject" value, if not. | -| description | The first comment on the ticket. | -| priority | The urgency with which the ticket should be addressed. Possible values: “urgent”, “high”, “normal”, “low”. | -| status | The state of the ticket. Possible values: “new”, “open”, “pending”, “hold”, “solved”, “closed”. | -| recipient | The original recipient e-mail address of the ticket. | -| requester_id | The user who requested this ticket. | -| submitter_id | The user who submitted the ticket. The submitter always becomes the author of the first comment on the ticket. | -| assignee_id | The agent currently assigned to the ticket. | -| organization_id | The organization of the requester. You can only specify the ID of an organization associated with the requester. | -| group_id | The group this ticket is assigned to. | -| collaborator_ids | The IDs of users currently cc'ed on the ticket. | -| forum_topic_id | The topic this ticket originated from, if any. | -| problem_id | For tickets of type "incident," The ID of the problem the incident is linked to. | -| has_incidents | Is true of this ticket has been marked as a problem, false otherwise. | -| due_at | If this is a ticket of type "task" it has a due date. Due date format uses ISO 8601 format. | -| tags | The array of tags applied to this ticket. | -| sharing_agreement_ids | The IDs of sharing agreements used for this ticket. | -| created_at | The date and time this record was created. | -| updated_at | The date and time this record was last updated. | -| received_at | This timestamp is added to incoming messages as soon as they hit Segment API. | -| ticket_form_id | The ID of the ticket form to render the ticket. | +This collection contains information about Zendesk tickets. + +| Property | Description | +| ----------------------- | ----------------------------------------------------------------------------------------------------- | +| `id` | Automatically assigned when a ticket is created. | +| `url` | The API URL of the ticket. | +| `external_id` | A custom ID you can use to link Zendesk tickets to local records. | +| `type` | The type of ticket. Possible values: `problem`, `incident`, `question`, `task`. | +| `subject` | The subject line of the ticket. | +| `raw_subject` | The dynamic content placeholder if present, otherwise the `subject` value. | +| `description` | The first comment on the ticket. | +| `priority` | The ticket’s urgency level. Possible values: `urgent`, `high`, `normal`, `low`. | +| `status` | The current ticket status. Possible values: `new`, `open`, `pending`, `hold`, `solved`, `closed`. | +| `recipient` | The original recipient email address for the ticket. | +| `requester_id` | The ID of the user who requested the ticket. | +| `submitter_id` | The ID of the user who submitted the ticket. The submitter is always the author of the first comment. | +| `assignee_id` | The ID of the agent currently assigned to the ticket. | +| `organization_id` | The ID of the requester’s organization. Must be associated with the requester. | +| `group_id` | The ID of the group the ticket is assigned to. | +| `collaborator_ids` | The IDs of users currently CC'd on the ticket. | +| `forum_topic_id` | The ID of the forum topic the ticket originated from, if any. | +| `problem_id` | For tickets of type `incident`, the ID of the related problem ticket. | +| `has_incidents` | Indicates whether the ticket has been marked as a problem. | +| `due_at` | The due date for task-type tickets (ISO 8601 format). | +| `tags` | The tags applied to the ticket. | +| `sharing_agreement_ids` | The IDs of sharing agreements linked to the ticket. | +| `ticket_form_id` | The ID of the ticket form used to render the ticket. | +| `created_at` | The date and time the ticket was created. | +| `updated_at` | The date and time the ticket was last updated. | +| `received_at` | Timestamp added when data reaches the Segment API. | ### ticket_fields From 6a99e42a64dac80bdf577ed1e6447e3dcddce4a5 Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 14:52:52 -0500 Subject: [PATCH 089/140] ticket fields table cleanup --- .../catalog/cloud-apps/zendesk/index.md | 63 +++++++++++-------- 1 file changed, 38 insertions(+), 25 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index 31fa5dbb4a..889f17a6ba 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -3,6 +3,8 @@ title: Zendesk Source id: 3hbak7a9 --- + + [Zendesk](https://www.zendesk.com/){:target="_blank”} is a customer support platform that helps businesses manage and respond to customer requests across channels. ## Getting started @@ -154,31 +156,35 @@ This collection contains information about Zendesk tickets. ### ticket_fields -| Property | Description | -| --------------- | ----------------------------------------------------------------- | -| id | This is automatically assigned upon creation. | -| url | The URL for this resource. | -| type | The type of the ticket field: “checkbox”, “date”, “decimal”, “integer”, “regexp”, “tagger”, “text”, or “textarea”. _*Type is not editable once created._ | -| slug | The title of the ticket field separated by _. | -| title | The title of the ticket field. | -| raw_title | The dynamic content placeholder, if present, or the "title" value, if not. | -| description | The description of the purpose of this ticket field shown to users. | -| raw_description | The dynamic content placeholder, if present, or the “description” value, if not. | -| position | A relative position for the ticket fields that determines the order of ticket fields on a ticket. Note that positions 0 to 7 are reserved for system fields. | -| active | Whether this field is available. | -| required | If it's required for this field to have a value when updated by agents.| -| collapsed_for_agents | If this field should be shown to agents by default or be hidden alongside infrequently used fields. Classic interface only. | -| regexp_for_validation | Regular expression field only. The validation pattern for a field value to be deemed valid. | -| title_in_portal | The title of the ticket field when shown to end users. | -| raw_title_in_portal | The dynamic content placeholder, if present, or the “title_in_portal” value, if not. | -| visible_in_portal | Whether this field is available to end users. | -| editable_in_portal | Whether this field is editable by end users. | -| required_in_portal | If it's required for this field to have a value when updated by end users. | -| tag | A tag value to set for checkbox fields when checked. | -| removable | If this field is not a system basic field that must be present for all tickets on the account. | -| created_at | The date and time the ticket field was created. | -| updated_at | The date and time of the last update of the ticket field. | -| received_at | This timestamp is added to incoming messages as soon as they hit Segment API. | +This collection contains information about Zendesk ticket fields. + +| Property | Description | +| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | Automatically assigned when the ticket field is created. | +| `url` | The API URL of the ticket field. | +| `type` | The type of field. Possible values: `checkbox`, `date`, `decimal`, `integer`, `regexp`, `tagger`, `text`, `textarea`. This property can’t be edited after creation. | +| `slug` | The title of the field, with words separated by underscores. | +| `title` | The title of the ticket field. | +| `raw_title` | The dynamic content placeholder if present, otherwise the `title` value. | +| `description` | The purpose of the ticket field as shown to users. | +| `raw_description` | The dynamic content placeholder if present, otherwise the `description` value. | +| `position` | Determines the field’s order on the ticket. Positions 0–7 are reserved for system fields. | +| `active` | Indicates whether the field is active. | +| `required` | Indicates whether agents must provide a value when updating the field. | +| `collapsed_for_agents` | Indicates whether the field is shown or hidden by default in the classic interface. | +| `regexp_for_validation` | Validation pattern for regular expression fields. | +| `title_in_portal` | The field title as shown to end users. | +| `raw_title_in_portal` | The dynamic content placeholder if present, otherwise the `title_in_portal` value. | +| `visible_in_portal` | Indicates whether the field is visible to end users. | +| `editable_in_portal` | Indicates whether the field is editable by end users. | +| `required_in_portal` | Indicates whether end users must provide a value when updating the field. | +| `tag` | The tag value applied when a checkbox field is checked. | +| `removable` | Indicates whether the field can be removed (system fields can’t be removed). | +| `created_at` | The date and time the ticket field was created. | +| `updated_at` | The date and time the ticket field was last updated. | +| `received_at` | Timestamp added when data reaches the Segment API. | + +--> ### ticket_metrics @@ -212,6 +218,7 @@ This collection contains information about Zendesk tickets. | latest_comment_added_at | The date and time the latest comment was added. | | received_ at | This timestamp is added to incoming messages as soon as they hit Segment API. | + ### ticket_events | Property | Description | @@ -229,6 +236,8 @@ This collection contains information about Zendesk tickets. | via | How the event was created. | + + ### activities | Property | Description | @@ -240,6 +249,9 @@ This collection contains information about Zendesk tickets. | created_at | The date and time this record was created. | | updated_at | The date and time this record was last updated. | + + + ### attachments | Property | Description | @@ -252,6 +264,7 @@ This collection contains information about Zendesk tickets. | size | The size of the image file in bytes. | | received_at | This timestamp is added to incoming messages as soon as they hit Segment API. | + ### organizations | Property | Description | From 7657316586aef5c922398ca234bcdba05d81d5dc Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 14:54:54 -0500 Subject: [PATCH 090/140] ticket metrics table --- .../catalog/cloud-apps/zendesk/index.md | 64 ++++++++++--------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index 889f17a6ba..4ea53bfaee 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -184,39 +184,41 @@ This collection contains information about Zendesk ticket fields. | `updated_at` | The date and time the ticket field was last updated. | | `received_at` | Timestamp added when data reaches the Segment API. | ---> - ### ticket_metrics -| Property | Description | -| --------------- | ----------------------------------------------------------------- | -| id | This is automatically assigned. | -| ticket_id | ID of the associated ticket. | -| group_stations | Number of groups this ticket passed through. | -| assignee_stations | Number of assignees this ticket had. | -| reopens | Total number of times the ticket was reopened. | -| replies | Total number of times ticket was replied to. | -| reply_time_in_minutes_calendar | Number of minutes to the first reply outside of business hours. | -| reply_time_in_minutes_business | Number of minutes to the first reply during business hours. | -| first_resolution_time_in_minutes_calendar | Number of minutes to the first resolution time outside of business hours. | -| first_resolution_time_in_minutes_business | Number of minutes to the first resolution time during business hours. | -| full_resolution_time_in_minutes_calendar | Number of minutes to the full resolution outside of business hours. | -| full_resolution_time_in_minutes_business | Number of minutes to the full resolution during business hours. | -| agent_wait_time_in_minutes_calendar | Number of minutes the agent spent waiting outside of business hours. | -| agent_wait_time_in_minutes_business | Number of minutes the agent spent waiting during business hours. | -| requester_wait_time_in_minutes_calendar | Number of minutes the requester spent waiting outside of business hours. | -| requester_wait_time_in_minutes_business | Number of minutes the requester spent waiting during business hours. | -| on_hold_time_in_minutes_calendar | Number of minutes the ticket was on hold outside of business hours. | -| on_hold_time_in_minutes_business | Number of minutes the ticket was on hold during business hours. | -| created_at | The date and time this record was created. | -| updated_at | The date and time this record was last updated. | -| assignee_updated_at | The date and time the assignee last updated the ticket. | -| requester_updated_at | The date and time the requester last updated the ticket. | -| status_updated_at | The date and time the status was last updated. | -| initially_assigned_at | The date and time the ticket was initially assigned. | -| assigned_at | The date and time the ticket was last assigned. | -| latest_comment_added_at | The date and time the latest comment was added. | -| received_ at | This timestamp is added to incoming messages as soon as they hit Segment API. | +This collection contains performance and timing metrics for Zendesk tickets. + +| Property | Description | +| ------------------------------------------- | ----------------------------------------------------------- | +| `id` | Automatically assigned when the record is created. | +| `ticket_id` | The ID of the associated ticket. | +| `group_stations` | The number of groups the ticket passed through. | +| `assignee_stations` | The number of assignees the ticket has had. | +| `reopens` | The total number of times the ticket was reopened. | +| `replies` | The total number of replies to the ticket. | +| `reply_time_in_minutes_calendar` | Minutes to the first reply outside business hours. | +| `reply_time_in_minutes_business` | Minutes to the first reply during business hours. | +| `first_resolution_time_in_minutes_calendar` | Minutes to the first resolution outside business hours. | +| `first_resolution_time_in_minutes_business` | Minutes to the first resolution during business hours. | +| `full_resolution_time_in_minutes_calendar` | Minutes to full resolution outside business hours. | +| `full_resolution_time_in_minutes_business` | Minutes to full resolution during business hours. | +| `agent_wait_time_in_minutes_calendar` | Minutes the agent spent waiting outside business hours. | +| `agent_wait_time_in_minutes_business` | Minutes the agent spent waiting during business hours. | +| `requester_wait_time_in_minutes_calendar` | Minutes the requester spent waiting outside business hours. | +| `requester_wait_time_in_minutes_business` | Minutes the requester spent waiting during business hours. | +| `on_hold_time_in_minutes_calendar` | Minutes the ticket was on hold outside business hours. | +| `on_hold_time_in_minutes_business` | Minutes the ticket was on hold during business hours. | +| `created_at` | The date and time the record was created. | +| `updated_at` | The date and time the record was last updated. | +| `assignee_updated_at` | The date and time the assignee last updated the ticket. | +| `requester_updated_at` | The date and time the requester last updated the ticket. | +| `status_updated_at` | The date and time the ticket status was last updated. | +| `initially_assigned_at` | The date and time the ticket was first assigned. | +| `assigned_at` | The date and time the ticket was most recently assigned. | +| `latest_comment_added_at` | The date and time the latest comment was added. | +| `received_at` | Timestamp added when data reaches the Segment API. | + +--> ### ticket_events From 23de28696f6d7168db0dcff4bd9f600450d3cfaf Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 15:00:17 -0500 Subject: [PATCH 091/140] attachments and activities --- .../catalog/cloud-apps/zendesk/index.md | 71 ++++++++++--------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index 4ea53bfaee..a5d15a0ada 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -218,53 +218,56 @@ This collection contains performance and timing metrics for Zendesk tickets. | `latest_comment_added_at` | The date and time the latest comment was added. | | `received_at` | Timestamp added when data reaches the Segment API. | ---> +### ticket_events +This collection contains details about individual updates or changes to Zendesk tickets. -### ticket_events +| Property | Description | +| ------------------- | ------------------------------------------------------------------------------------ | +| `id` | Automatically assigned when the record is created. | +| `ticket_event_id` | Automatically assigned when the ticket is updated. | +| `ticket_id` | The ID of the associated ticket. | +| `timestamp` | The date and time the ticket was updated. | +| `updater_id` | The ID of the user who made the update. | +| `ticket_event_via` | The channel or method used to create the event. | +| `context_client` | The client used to submit the ticket change (for example, browser name and version). | +| `context_location` | The location name, if available (for example, country or city). | +| `context_latitude` | The latitude of the location where the change occurred. | +| `context_longitude` | The longitude of the location where the change occurred. | +| `via` | The method used to create the event. | -| Property | Description | -| --------------- | ----------------------------------------------------------------- | -| id | This is automatically assigned. | -| ticket_event_id | This is automatically assigned when the ticket is updated. | -| ticket_id | The ID of the associated ticket. | -| timestamp | The time when the ticket was updated. | -| updater_id | The ID of the user who updated the ticket. | -| ticket_event_via | How the event was created. | -| context_client | This refers to the “client” used to submit this ticket change (for example, browser name and type). | -| context_location | The plain text name of where the request was made, if available (for example, country, city). | -| context_latitude | Latitude of the location where the ticket was changed. | -| context_longitude | Longitude of the location where the ticket was changed. | -| via | How the event was created. | +### activities +This collection contains information about actions or updates related to Zendesk tickets. +| Property | Description | +| ------------ | ------------------------------------------------------------------------------------------------------------ | +| `id` | Automatically assigned when the activity is created. | +| `url` | The API URL of the activity. | +| `verb` | The type of activity. Possible values: `tickets.assignment`, `tickets.comment`, `tickets.priority_increase`. | +| `title` | A short description of the activity. | +| `created_at` | The date and time the activity was created. | +| `updated_at` | The date and time the activity was last updated. | -### activities -| Property | Description | -| --------------- | ----------------------------------------------------------------- | -| id | This is automatically assigned upon creation. | -| url | The API URL of this activity. | -| verb | The type of activity. Can be "tickets.assignment," "tickets.comment," or "tickets.priority_increase." | -| title | Description of this activity. | -| created_at | The date and time this record was created. | -| updated_at | The date and time this record was last updated. | +### attachments +This collection contains information about files attached to Zendesk tickets. +| Property | Description | +| -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | Automatically assigned when the attachment is created. | +| `file_name` | The name of the attached file. | +| `content_url` | The full URL where the attachment file can be downloaded. | +| `content_type` | The MIME type of the attachment (for example, `image/png`). | +| `inline` | Indicates whether the attachment is inline. Inline attachments are excluded from the attachment list but can be referenced within a ticket comment. Default is `false`. | +| `size` | The file size in bytes. | +| `received_at` | Timestamp added when data reaches the Segment API. | -### attachments -| Property | Description | -| --------------- | ----------------------------------------------------------------- | -| id | This is automatically assigned upon creation. | -| file_name | The name of the image file. | -| content_url | A full URL where the attachment image file can be downloaded. | -| content_type | The content type of the image. Example value: image/png. | -| inline | If true, the attachment is excluded from the attachment list and the attachment's URL can be referenced within the comment of a ticket. Default is false. | -| size | The size of the image file in bytes. | -| received_at | This timestamp is added to incoming messages as soon as they hit Segment API. | +--> ### organizations From 2c24d3b8a1101664e8aa58d6ba01744fb3a90494 Mon Sep 17 00:00:00 2001 From: Carolina Lopez Date: Wed, 15 Oct 2025 15:03:09 -0500 Subject: [PATCH 092/140] Fixes --- .../destinations/catalog/hotjar/index.md | 29 ++++++++++--------- .../destinations/catalog/hydra/index.md | 4 +-- .../catalog/cloud-apps/marketo/index.md | 8 ++--- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/connections/destinations/catalog/hotjar/index.md b/src/connections/destinations/catalog/hotjar/index.md index a2698cbc26..35374deb7d 100644 --- a/src/connections/destinations/catalog/hotjar/index.md +++ b/src/connections/destinations/catalog/hotjar/index.md @@ -34,19 +34,20 @@ Identify calls that do not have a User ID value will not be sent to Hotjar. Currently, the Hotjar Identify API **does not** support ingesting values passed as nested objects or lists over your identify Spec: -```js +```json "traits": { - "name": "Peter Gibbons", - "email": "peter@example.com", - "plan": "premium", - "logins": 5, - "address": { - "street": "6th St", - "city": "San Francisco", - "state": "CA", - "postalCode": "94103", - "country": "USA" - } + "name": "Peter Gibbons", + "email": "peter@example.com", + "plan": "premium", + "logins": 5, + "address": { + "street": "6th St", + "city": "San Francisco", + "state": "CA", + "postalCode": "94103", + "country": "USA" + } +} ``` In the example above, Hotjar rejects all the values in the `address` field. @@ -62,8 +63,8 @@ Currently, the Hotjar Events API **does not** support ingesting event properties ```js analytics.track("Experiment Viewed", { experiment_id: "1234", - experiment_name: "new_upsell_UX" - variation_id: "1234b" + experiment_name: "new_upsell_UX", + variation_id: "1234b", variation_name: "variant" }); ``` diff --git a/src/connections/destinations/catalog/hydra/index.md b/src/connections/destinations/catalog/hydra/index.md index 655adfdf82..38df66ad93 100644 --- a/src/connections/destinations/catalog/hydra/index.md +++ b/src/connections/destinations/catalog/hydra/index.md @@ -23,7 +23,7 @@ If you would like to use `track` event data, create a `Segment Product Usage Sca If you're not familiar with the Segment Specs, take a look to understand what the [Identify method](/docs/connections/spec/identify/) does. An example call would look like: -``` +```js analytics.identify('userId123', { email: 'john.doe@example.com', firstName: 'John', @@ -45,7 +45,7 @@ Identify calls will be sent to Hydra as an `identify` event. Upon receiving an I If you're not familiar with the Segment Specs, take a look to understand what the [Track method](/docs/connections/spec/track/) does. An example call would look like: -``` +```js analytics.track('Device deploy started', "properties": { "feature": "Device management", diff --git a/src/connections/sources/catalog/cloud-apps/marketo/index.md b/src/connections/sources/catalog/cloud-apps/marketo/index.md index 547770af8f..17a83e9485 100644 --- a/src/connections/sources/catalog/cloud-apps/marketo/index.md +++ b/src/connections/sources/catalog/cloud-apps/marketo/index.md @@ -36,10 +36,10 @@ You will need Admin permissions to your Marketo account. 2. Go to **Admin > Munchkin** to find your Munchkin Account ID. ![Screenshot of the Tracking Code section of Marketo's Munchkin page.](images/Image2018-04-30at5.28.54PM.png) 3. Go to Admin > LaunchPoint - 1. If you don't already have a REST service setup, follow [these steps](http://developers.marketo.com/rest-api/custom-services/){:target="_blank"}. - 2. Then, copy the "Client ID" and "Client Secret" parameters. - ![Screenshot of the Details section of the LaunchPoint page.](images/Image2018-04-30at5.29.32PM.png) - 3. Paste the "Client ID" and "Client Secret" into the Segment Marketo source settings. + 1. If you don't already have a REST service setup, follow [these steps](http://developers.marketo.com/rest-api/custom-services/){:target="_blank"}. + 2. Then, copy the "Client ID" and "Client Secret" parameters. + ![Screenshot of the Details section of the LaunchPoint page.](images/Image2018-04-30at5.29.32PM.png) + 3. Paste the "Client ID" and "Client Secret" into the Segment Marketo source settings. Data should start flowing into your warehouse in the next few hours. From 0bc0bc6f36c009f49411ea1615d22df1e828f4be Mon Sep 17 00:00:00 2001 From: CristhianMotoche Date: Wed, 15 Oct 2025 15:11:00 -0500 Subject: [PATCH 093/140] chore: Modify to simplify migration --- src/connections/destinations/catalog/clicky/index.md | 4 ---- src/connections/destinations/catalog/clientsuccess/index.md | 2 -- src/connections/destinations/catalog/drip/index.md | 2 +- src/connections/destinations/catalog/eloqua/index.md | 2 +- 4 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/connections/destinations/catalog/clicky/index.md b/src/connections/destinations/catalog/clicky/index.md index 3fd88a575a..0587ea477e 100644 --- a/src/connections/destinations/catalog/clicky/index.md +++ b/src/connections/destinations/catalog/clicky/index.md @@ -15,8 +15,6 @@ Our Clicky destination code is open-source on GitHub. You can check out the code 3. In the destination settings, enter your Site ID in the settings. You can find your Site ID under the Preferences of your account. 4. Segment automatically initializes Clicky's script with your Site ID upon loading analytics.js. -- - - - ## Page If you're not familiar with the Segment Specs, take a look to understand what the [Page method](/docs/connections/spec/page/) does. An example call would look like this: @@ -63,8 +61,6 @@ analytics.track("My Custom Event", { When you use our [`track`](/docs/connections/spec/track/) method, a goal is created in Clicky. Only the event name and the revenue of the event (if it exists) will be included in the call. Clicky doesn't support any other event properties. -- - - - ## Troubleshooting ### My visits aren't showing up in Clicky diff --git a/src/connections/destinations/catalog/clientsuccess/index.md b/src/connections/destinations/catalog/clientsuccess/index.md index 4844d55454..2fd4eda39f 100644 --- a/src/connections/destinations/catalog/clientsuccess/index.md +++ b/src/connections/destinations/catalog/clientsuccess/index.md @@ -17,8 +17,6 @@ To turn on the destination, do the following: **Note:** Because ClientSuccess focuses on group level events, you must pass group information before your events will show up. If you turn on the ClientSuccess destination in Segment and don't see events in ClientSuccess after 24 hours, it may be that your engineers need to send group information to Segment using Segment's `group` call. -- - - - ## Getting Started (for Developers) ClientSuccess supports the `identify`, `group`, `track`, and `page` methods of Segment. diff --git a/src/connections/destinations/catalog/drip/index.md b/src/connections/destinations/catalog/drip/index.md index 66a204d8e7..db9431d3d0 100644 --- a/src/connections/destinations/catalog/drip/index.md +++ b/src/connections/destinations/catalog/drip/index.md @@ -3,7 +3,7 @@ title: Drip Destination id: 54521fd525e721e32a72eeaa cmode-override: true --- -The Drip destination code is all open-source on GitHub if you want to check it out: [JavaScript](https://github.com/segment-integrations/analytics.js-integration-drip){:target="_blank"},(iOS and Android work using the server destination). +The Drip destination code is all open-source on GitHub if you want to check it out: [JavaScript](https://github.com/segment-integrations/analytics.js-integration-drip){:target="_blank"}, (iOS and Android work using the server destination). ## Getting Started diff --git a/src/connections/destinations/catalog/eloqua/index.md b/src/connections/destinations/catalog/eloqua/index.md index 96c94bb07f..5446b58161 100644 --- a/src/connections/destinations/catalog/eloqua/index.md +++ b/src/connections/destinations/catalog/eloqua/index.md @@ -44,7 +44,7 @@ Segment `identify` trait on the left to the Eloqua field on the right: | `title` | Title | Follow the Segment spec to ensure proper mapping of these fields from Segment -`identify` traits: /docs/connections/spec/identify/#traits. +`identify` traits: [/docs/connections/spec/identify/#traits](/docs/connections/spec/identify/#traits). In addition, Segment supports mapping custom `identify` traits to Eloqua custom object fields. To do so, you can set up mappings in the settings for your From ad8d710a0e8a6ca820cbfe65130b202187a0f7ff Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 15:19:31 -0500 Subject: [PATCH 094/140] organizations + ticket comments --- .../catalog/cloud-apps/zendesk/index.md | 62 ++++++++++--------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index a5d15a0ada..e8f7af9511 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -265,42 +265,44 @@ This collection contains information about files attached to Zendesk tickets. | `size` | The file size in bytes. | | `received_at` | Timestamp added when data reaches the Segment API. | +### organizations +This collection contains information about organizations in Zendesk. + +| Property | Description | +| ----------------- | ----------------------------------------------------------------------------------------- | +| `id` | Automatically assigned when the organization is created. | +| `external_id` | A unique external ID that links the organization to an external record. | +| `url` | The API URL of the organization. | +| `name` | The unique name of the organization. | +| `details` | Additional details about the organization, such as its address. | +| `notes` | Notes or comments about the organization. | +| `group_id` | The group that new tickets from users in this organization are automatically assigned to. | +| `shared_tickets` | Indicates whether end users in the organization can view each other’s tickets. | +| `shared_comments` | Indicates whether end users in the organization can view each other’s ticket comments. | +| `created_at` | The date and time the organization was created. | +| `updated_at` | The date and time the organization was last updated. | +| `received_at` | Timestamp added when data reaches the Segment API. | ---> +### ticket_comments +This collection contains comments and related metadata for Zendesk tickets. -### organizations +| Property | Description | +| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | +| `id` | Automatically assigned when the comment is created. | +| `ticket_event_id` | Automatically assigned when the comment is created. | +| `ticket_id` | The ID of the ticket the comment belongs to. | +| `type` | The comment type. Possible values: `Comment` or `VoiceComment`. JSON objects for voice comments differ in structure. | +| `body` | The text of the comment. | +| `public` | Indicates whether the comment is public (`true`) or internal (`false`). The initial value set on ticket creation persists unless changed. | +| `author_id` | The ID of the comment author. | +| `via` | How the comment was created. | +| `created_at` | The date and time the comment was created. | +| `received_at` | Timestamp added when data reaches the Segment API. | -| Property | Description | -| --------------- | ----------------------------------------------------------------- | -| id | This is automatically assigned when the organization is created. | -| external_id | A unique external ID to associate organizations to an external record. | -| url | The API URL of this organization. | -| name | A unique name for the organization. | -| details | This includes any details about the organization, such as the address. | -| notes | Any notes you have about the organization. | -| group_id | New tickets from users in this organization are automatically put in this group. | -| shared_tickets | End users in this organization are able to see each other's tickets. | -| shared_comments | End users in this organization are able to see each other's comments on tickets. | -| created_at | The date and time that the organization was created. | -| updated_at | The date and time that the organization was last updated. | -| received_at | This timestamp is added to incoming messages as soon as they hit Segment API. | -### ticket_comments - -| Property | Description | -| --------------- | ----------------------------------------------------------------- | -| id | This is automatically assigned when the comment is created. | -| ticket_event_id | This is automatically assigned when the comment is created. | -| ticket_id | The ID of the ticket being commented. | -| type | Comment or VoiceComment. The JSON object for voice comments is different. | -| body | The comment string. | -| public | true if a public comment; false if an internal note. The initial value set on ticket creation persists for any additional comment unless you change it. | -| author_id | The ID of the comment author. | -| via | How the comment was created. | -| created_at | The time the comment was created. | -| received_at | This timestamp is added to incoming messages as soon as they hit Segment API. | +--> ### ticket_forms > warning "This collection requires Zendesk Enterprise access" From f56d7824ce306e6412b8f54ea94dea4eb0f14177 Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 15:23:31 -0500 Subject: [PATCH 095/140] ticket forms + change warning to info --- .../catalog/cloud-apps/zendesk/index.md | 46 ++++++++++--------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index e8f7af9511..2241a8ccc9 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -301,31 +301,33 @@ This collection contains comments and related metadata for Zendesk tickets. | `created_at` | The date and time the comment was created. | | `received_at` | Timestamp added when data reaches the Segment API. | - ---> - ### ticket_forms -> warning "This collection requires Zendesk Enterprise access" -> Segment's Zendesk source connector only fetches data for the ticket_forms collection if the associated Zendesk account is an Zendesk Enterprise account. For more information, please see [ Zendesk's ticket_forms documentation](https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_forms/){:target="_blank"}. +> info "Zendesk Enterprise required" +> The `ticket_forms` collection syncs only for Zendesk Enterprise accounts. See [Zendesk’s Ticket Forms API documentation](https://developer.zendesk.com/api-reference/ticketing/tickets/ticket_forms/){:target="_blank"} for details. + +This collection contains information about ticket forms in Zendesk. + +| Property | Description | +| ---------------------- | ----------------------------------------------------------------------------------- | +| `id` | The ID of the ticket form. | +| `active` | Indicates whether the form is active. | +| `end_user_visible` | Indicates whether the form is visible to end users. | +| `name` | The name of the form. | +| `restricted_brand_ids` | The IDs of brands that the ticket form is restricted to. | +| `ticket_field_ids` | The IDs of ticket fields included in this form. | +| `updated_at` | The date and time the ticket form was last updated. | +| `url` | The API URL of the ticket form. | +| `created_at` | The date and time the ticket form was created. | +| `display_name` | The form name shown to end users. | +| `in_all_brands` | Indicates whether the form is available for all brands in the account. | +| `position` | The form’s position among other forms in the account (for example, dropdown order). | +| `raw_display_name` | The dynamic content placeholder, if available, or the `display_name` value if not. | +| `raw_name` | The dynamic content placeholder, if available, or the `name` value if not. | +| `default` | Indicates whether this form is the default form for the account. | + +--> -| Property | Description | -| --------------- | ----------------------------------------------------------------- | -| id | The ID of the ticket form. | -| active | If set to true, this shows that the form is active. | -| end_user_visible | If set to true, this shows that the form is visible to end users.| -| name | The name of the form. | -| restricted_brand_ids | The IDs of all brands that this ticket form is restricted to. | -| ticket_field_ids | The IDs of all ticket fields which are in this ticket form. | -| updated_at | The date and time the ticket form was last updated. | -| url | The URL of the ticket form. | -| created_at | The date and time the ticket form was created. | -| display_name | The name of the form that displays to the end user. | -| in_all_brands | This shows if the form is available for use in all brands on this account. | -| position | The position of this form among other forms in the account (for example, dropdown) | -| raw_display_name | The dynamic content placeholder (if available,) or the “display_name” value, if the dynamic content placeholder is unavailable. | -| raw_name | The dynamic content placeholder (if available,) or the “name” value, if the dynamic content placeholder is unavailable. | -| default | If set to true, this shows that the form is the default form for this account. | ### ticket_skips From ff6d23e70215d8b2e18e2d50aa422986da279433 Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 15:24:25 -0500 Subject: [PATCH 096/140] ticket skips and org memberships --- .../catalog/cloud-apps/zendesk/index.md | 42 ++++++++++--------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index 2241a8ccc9..339db472a3 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -326,31 +326,35 @@ This collection contains information about ticket forms in Zendesk. | `raw_name` | The dynamic content placeholder, if available, or the `name` value if not. | | `default` | Indicates whether this form is the default form for the account. | ---> +### ticket_skips +This collection contains information about Zendesk tickets that agents have skipped. -### ticket_skips +| Property | Description | +| ------------ | ---------------------------------------------- | +| `id` | The ID of the ticket skip record. | +| `ticket_id` | The ID of the skipped ticket. | +| `user_id` | The ID of the agent who skipped the ticket. | +| `reason` | The reason the ticket was skipped. | +| `created_at` | The date and time the record was created. | +| `updated_at` | The date and time the record was last updated. | -| Property | Description | -| --------------- | ----------------------------------------------------------------- | -| id | The ID of the ticket skip record. | -| ticket_id | The ID of the skipped ticket. | -| user_id | The ID of the skipping agent. | -| reason | The reason for skipping the ticket. | -| created_at | The date and time the skip was created. | -| updated_at | The date and time the skip was last updated. | ### organization_memberships -| Property | Description | -| --------------- | ----------------------------------------------------------------- | -| id | The ID of the organization membership. | -| url | The API URL of the membership. | -| user_id | The ID of the user for whom this membership belongs. | -| organization_id | The ID of the organization associated with the selected user, in this membership. | -| created_at | The date and time this record was created. | -| updated_at | The date and time this record was last updated. | -| organization_name | The name of the organization associated with the selected user, in this membership. | +This collection contains information about relationships between users and organizations in Zendesk. + +| Property | Description | +| ------------------- | ------------------------------------------------------ | +| `id` | The ID of the organization membership. | +| `url` | The API URL of the membership. | +| `user_id` | The ID of the user in the membership. | +| `organization_id` | The ID of the organization associated with the user. | +| `created_at` | The date and time the record was created. | +| `updated_at` | The date and time the record was last updated. | +| `organization_name` | The name of the organization associated with the user. | + +--> ### group_memberships From fdd27fa71eabed6a9536d93e134e6071dac75bc0 Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 15:26:41 -0500 Subject: [PATCH 097/140] group memberships and audit logs --- .../catalog/cloud-apps/zendesk/index.md | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index 339db472a3..c40a891c6a 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -354,34 +354,36 @@ This collection contains information about relationships between users and organ | `updated_at` | The date and time the record was last updated. | | `organization_name` | The name of the organization associated with the user. | ---> - ### group_memberships -| Property | Description | -| --------------- | ----------------------------------------------------------------- | -| id | The ID of the group membership. | -| url | The API URL of this group. | -| created_at | The date and time the group was created. | -| group_id | The ID of the group. | -| updated_at | The date and time the group was last updated. | -| user_id | The ID of an agent. | +This collection contains information about agents and their group assignments in Zendesk. + +| Property | Description | +| ------------ | -------------------------------------------------- | +| `id` | The ID of the group membership. | +| `url` | The API URL of the group membership. | +| `created_at` | The date and time the membership was created. | +| `group_id` | The ID of the group. | +| `updated_at` | The date and time the membership was last updated. | +| `user_id` | The ID of the agent in the membership. | ### audit_logs -| Property | Description | -| --------------- | ----------------------------------------------------------------- | -| id | The ID of the audit log. | -| url | The URL to access the audit log. | -| created_at | The date and time that the audit was created. | -| actor_id | The ID of the user creating the ticket. | -| source_id | The ID of the item being audited. | -| source_type | The item type being audited. | -| source_label | The name of the item being audited. | -| action | The action a user performed. Either “login”, “create”, “update”, or “destroy”. | -| change_description | The description of the change that occurred. | -| ip_address | The IP address of the user performing the audit. | -| action_label | A localized string of action field. | +This collection contains records of account-level actions and configuration changes in Zendesk. + +| Property | Description | +| -------------------- | ------------------------------------------------------------------------------ | +| `id` | The ID of the audit log. | +| `url` | The API URL of the audit log. | +| `created_at` | The date and time the audit record was created. | +| `actor_id` | The ID of the user who performed the action. | +| `source_id` | The ID of the item being audited. | +| `source_type` | The type of item being audited. | +| `source_label` | The name of the item being audited. | +| `action` | The action performed. Possible values: `login`, `create`, `update`, `destroy`. | +| `change_description` | A short description of the change that occurred. | +| `ip_address` | The IP address of the user who performed the action. | +| `action_label` | The localized string for the `action` field. | ## Adding Destinations Currently only Warehouses are supported for object-cloud sources. From 79e4be065c30fc430adccd30ddbb820d24ea7b2d Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 15:30:10 -0500 Subject: [PATCH 098/140] putting satisfaction ratings back in --- .../sources/catalog/cloud-apps/zendesk/index.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index c40a891c6a..7a8863b443 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -339,6 +339,22 @@ This collection contains information about Zendesk tickets that agents have skip | `created_at` | The date and time the record was created. | | `updated_at` | The date and time the record was last updated. | +### satisfaction_ratings + +This collection contains information about customer satisfaction ratings for Zendesk tickets. + +| Property | Description | +| -------------- | ---------------------------------------------------------------------------- | +| `id` | Automatically assigned when the satisfaction rating is created. | +| `url` | The API URL of the satisfaction rating. | +| `assignee_id` | The ID of the agent assigned to the ticket when the rating was submitted. | +| `group_id` | The ID of the group assigned to the ticket when the rating was submitted. | +| `requester_id` | The ID of the user who submitted the rating. | +| `ticket_id` | The ID of the ticket being rated. | +| `score` | The rating value. Possible values: `offered`, `unoffered`, `good`, or `bad`. | +| `created_at` | The date and time the rating was created. | +| `updated_at` | The date and time the rating was last updated. | +| `received_at` | Timestamp added when data reaches the Segment API. | ### organization_memberships From 473e9b3ceec25d272951b0b5faeeceb628c4ae94 Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 15:36:14 -0500 Subject: [PATCH 099/140] delete random destination paragaph at end --- src/connections/sources/catalog/cloud-apps/zendesk/index.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index 7a8863b443..ab241725c7 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -399,7 +399,4 @@ This collection contains records of account-level actions and configuration chan | `action` | The action performed. Possible values: `login`, `create`, `update`, `destroy`. | | `change_description` | A short description of the change that occurred. | | `ip_address` | The IP address of the user who performed the action. | -| `action_label` | The localized string for the `action` field. | - -## Adding Destinations -Currently only Warehouses are supported for object-cloud sources. +| `action_label` | The localized string for the `action` field. | \ No newline at end of file From 08b6fe831804264176b1cd92090894b3f691e95d Mon Sep 17 00:00:00 2001 From: Paulo Borges Date: Wed, 15 Oct 2025 17:40:05 -0300 Subject: [PATCH 100/140] docs: fix html table to headers (#8053) * fix html table to headers * Update src/connections/storage/warehouses/schema.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --------- Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/storage/warehouses/schema.md | 126 ++++++++----------- 1 file changed, 53 insertions(+), 73 deletions(-) diff --git a/src/connections/storage/warehouses/schema.md b/src/connections/storage/warehouses/schema.md index 3d1a1a1538..560fd7029a 100644 --- a/src/connections/storage/warehouses/schema.md +++ b/src/connections/storage/warehouses/schema.md @@ -22,99 +22,79 @@ Segment's libraries pass nested objects and arrays into tracking calls as **prop - The warehouse connector optionally stringifies **arrays** when they follow the [Ecommerce spec](/docs/connections/spec/ecommerce/v2/) - The warehouse connector "flattens" all **context fields** that contain a nested **object** (for example, context.field.nestedA.nestedB becomes a column called context_field_nestedA_nestedB) - - - - - - - - - - - - - - - - - - - - +Segment flattens nested objects in traits. - - - - - - - - - - - -
Field Code (Example) Schema (Example)
Object (Context): Flatten - -``` json -context: { - app: { - version: "1.0.0" +### Schema objects + +The following examples show how Segment transforms nested objects and arrays into warehouse columns. + +#### Context + +**Type:** Object + +```json +{ + "context": { + "app": { + "version": "1.0.0" + } } } ``` - - Column Name:
- context_app_version -

- Value:
- "1.0.0" -
Object (Traits): Flatten + +Segment flattens nested objects in context fields. + +**Result:** Column `context_app_version` with value `"1.0.0"` + +#### Traits + +**Type:** Object ```json -traits: { - address: { - street: "6th Street" +{ + "traits": { + "address": { + "street": "6th Street" + } } } ``` - -Column Name:
-address_street
-
-Value:
-"6th Street" -
Object (Properties): Flatten +**Result:** Column `address_street` with value `"6th Street"` + +#### Properties + +**Type:** Object ```json -properties: { - product_id: { - sku: "G-32" +{ + "properties": { + "product_id": { + "sku": "G-32" + } } } ``` - - Column Name:
- product_id_sku

- Value:
- "G-32" -
Array (Any): Stringify + +Segment flattens nested objects in properties. + +**Result:** Column `product_id_sku` with value `"G-32"` + +#### Array (String) + +**Type**: String array ```json -products: { - product_id: [ - "507f1", "505bd" - ] +{ + "products": { + "product_id": ["507f1", "505bd"] + } } ``` - - Column Name:
- product_id

- Value: - "[507f1, 505bd]" -
+Segment stringifes arrays. + +**Result:** Column `product_id` with value `"[507f1, 505bd]"` ## Warehouse tables From 7a748ecba5e240910fce39a99a58c17093dba069 Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 15:43:49 -0500 Subject: [PATCH 101/140] clean up collections table --- .../catalog/cloud-apps/zendesk/index.md | 46 +++++++++---------- 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index ab241725c7..8da459314b 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -3,8 +3,6 @@ title: Zendesk Source id: 3hbak7a9 --- - - [Zendesk](https://www.zendesk.com/){:target="_blank”} is a customer support platform that helps businesses manage and respond to customer requests across channels. ## Getting started @@ -43,28 +41,26 @@ At the moment, Segment doesn't support filtering which objects or properties get ## Collections -Collections are the groupings of resources Segment pulls from your source. - - -| Collection | Type | Description | -| ----------------------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [users](#users) | object | Zendesk Support has three types of users: end-users (your customers), agents, and administrators. End-users request support through tickets. Agents work in Zendesk Support to solve tickets. Agents can be divided into multiple groups and can also belong to multiple groups. Agents don't have access to administrative configuration in Zendesk Support such as business rules or automation, but can configure their own macros and views. Administrators have all the abilities of agents, plus administrative abilities. | -| [groups](#groups) | object | When support requests arrive in Zendesk, they can be assigned to a Group. Groups serve as the core element of ticket workflow; support agents are organized into Groups and tickets can be assigned to a Group only, or to an assigned agent within a Group. A ticket can never be assigned to an agent without also being assigned to a Group. | -| [tickets](#tickets) | object | Tickets are the means through which your End-users (customers) communicate with Agents in Zendesk. **Note**: Segment pulls all tickets updated (or created) in the last year to start by default. If you need more, reach out to [Segment support](https://segment.com/help/contact/){:target="_blank”}. Support can do a run to pull further back in history. | -| [ticket_fields](#ticket_fields) | object | Customize fields on the ticket form. | -| [activities](#activities) | object | The activity stream is a per agent event stream. It will give access to the most recent events that relate to the agent polling the API. | -| [attachments](#activities) | object | This API is for attachments in tickets and forum posts in the Web portal. | -| [organizations](#organizations) | object | Just as agents can be segmented into groups in Zendesk, your customers (end-users) can be segmented into organizations. | -| [ticket_events](#ticket_events) | events | Returns a stream of changes that occurred on tickets. Each event is tied to an update on a ticket and contains all the fields that were updated in that change. **Note**: Segment pulls one year of ticket events to start by default. If you need more, reach out to [Segment support](https://segment.com/help/contact/){:target="_blank”}. Support can do a run to pull further back in history. | -| [ticket_metrics](#ticket_metrics) | object | All kinds of aggregate metrics about a ticket | -| [satisfaction_ratings](#satisfaction_ratings) | object | If you have enabled satisfaction ratings for your account, this end point allows you to quickly retrieve all ratings. | -| [ticket_comments](#ticket_comments) | object | Ticket comments represent the conversation between requesters, collaborators, and agents. It includes the full body of each comment, public and private. **Note**: This collection is not included by default. To request it, [contact Segment support](https://segment.com/help/contact/){:target="_blank”}. | -| [ticket_forms](#ticket_forms) | object | Ticket forms allow an admin to define a subset of ticket fields for display to both agents and end users. **Note**: This feature requires a Zendesk Enterprise account. Segment fully syncs all available records in each sync run. | -| [ticket_skips](#ticket_skips) | object | A skip is a record of when an agent skips over a ticket without responding to the end user. **Note**: Segment fully syncs all available records in this collection during each sync run. | -| [organization_memberships](#organization_memberships) | object | An organization_membership links a user to an organization. Organizations can have many users. Users can be in many organizations if the account supports multiple organizations. **Note**: Segment fully syncs all available records in this collection during each sync run. | -| [group_memberships](#group_memberships) | object | A group_membership links an agent to a group. Groups can have many agents, as agents can be in many groups. **Note**: Segment fully syncs all available records in this collection during each sync run. | -| [audit_logs](#audit_logs) | object | The audit log shows various changes in your instance of Zendesk since the account was created. **Note**: This collection is not included by default. To request it, [contact Segment support](https://segment.com/help/contact/){:target="_blank”}. | - +The following collections show the Zendesk objects Segment syncs into your warehouse. Each collection includes standard properties from Zendesk and any custom fields defined in your account. + +| Collection | Type | Description | +| ----------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [users](#users) | object | Zendesk has three user types: end users (customers), agents, and administrators. End users request support through tickets. Agents work to resolve tickets and can belong to multiple groups. Administrators have full agent permissions plus configuration access. | +| [groups](#groups) | object | Groups organize agents and define ticket assignment workflows. A ticket must always be assigned to a group, even if it’s also assigned to a specific agent. | +| [tickets](#tickets) | object | Tickets let end users communicate with agents. Segment pulls tickets created or updated within the last year by default. To load older data, contact [Segment Support](https://segment.com/help/contact/){:target="_blank"}. | +| [ticket_fields](#ticket_fields) | object | Custom fields added to the ticket form. | +| [activities](#activities) | object | Per-agent activity stream showing recent ticket-related events. | +| [attachments](#attachments) | object | Files attached to tickets or forum posts in Zendesk. | +| [organizations](#organizations) | object | Groups of end users (customers) segmented for support management. | +| [ticket_events](#ticket_events) | events | Stream of ticket updates showing all field changes per event. Segment pulls one year of ticket events by default. To load older data, contact [Segment Support](https://segment.com/help/contact/){:target="_blank"}. | +| [ticket_metrics](#ticket_metrics) | object | Aggregate performance metrics for tickets, such as reply and resolution times. | +| [satisfaction_ratings](#satisfaction_ratings) | object | Customer satisfaction ratings submitted for resolved tickets. | +| [ticket_comments](#ticket_comments) | object | Ticket comments exchanged between requesters, collaborators, and agents, including both public and private comments. This collection isn’t included by default but can be turned on by contacting [Segment Support](https://segment.com/help/contact/){:target="_blank"}. | +| [ticket_forms](#ticket_forms) | object | Ticket forms define subsets of fields shown to agents and end users. This collection requires a Zendesk Enterprise account. | +| [ticket_skips](#ticket_skips) | object | Records of tickets skipped by agents. Segment fully syncs all available records during each sync run. | +| [organization_memberships](#organization_memberships) | object | Links users to organizations. Organizations can have many users, and users can belong to multiple organizations if supported. Segment fully syncs all available records during each sync run. | +| [group_memberships](#group_memberships) | object | Links agents to groups. Groups can have many agents, and agents can belong to multiple groups. Segment fully syncs all available records during each sync run. | +| [audit_logs](#audit_logs) | object | Records account-level configuration and user actions. This collection isn’t included by default but can be turned on by contacting [Segment Support](https://segment.com/help/contact/){:target="_blank"}. | In your warehouse, each collection is stored in its own table. The tables that follow list the standard properties Segment automatically fetches for each collection. @@ -107,7 +103,7 @@ This collection contains information about Zendesk users. | `active` | Set to `false` if the user has been deleted. | | `shared` | Indicates whether the user is a shared agent from another Zendesk instance (ticket sharing accounts only). | | `last_login_at` | The date and time of the user’s last login. | -| `two_factor_auth_enabled` | Indicates whether two-factor authentication is enabled. | +| `two_factor_auth_enabled` | Indicates whether two-factor authentication is turned on. | | `signature` | The user’s signature (agents and admins only). | | `details` | Additional details about the user, such as an address. | | `notes` | Notes stored about the user. | From 5a82215bb85a219143ed1e6688be222508241490 Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 15:47:54 -0500 Subject: [PATCH 102/140] better header + final cleanup I think [netlify-build] --- .../sources/catalog/cloud-apps/zendesk/index.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index 8da459314b..22743a238b 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -18,8 +18,7 @@ id: 3hbak7a9 > success "" > Segment uses Zendesk's [Incremental Export API](https://developer.zendesk.com/api-reference/ticketing/ticket-management/incremental_exports/){:target="_blank”} , which requires Admin access. Make sure the user has Admin authorizations. - -### Rate limits +## Rate limits The Zendesk source uses both Zendesk's [Core API](https://developer.zendesk.com/api-reference/){:target="_blank"} and [Incremental Exports API](https://developer.zendesk.com/rest_api/docs/core/incremental_export){:target="_blank"}. @@ -27,17 +26,17 @@ The source's requests to the Incremental API don't count towards your Zendesk ac If you'd like to increase or decrease the request rate for your source, [reach out to Segment support](https://segment.com/help/contact/){:target="_blank”}. -## Components +### How Zendesk data syncs -### Sync +The Zendesk source syncs data from the Zendesk API to Segment every three hours. During each sync, Segment requests the latest data for all supported objects and properties listed in the [Collections table](#collections). -The Zendesk source is built with a sync component, which means Segment makes requests to their API on your behalf on a three hour interval to pull the latest data into Segment. In the initial sync, Segment grabs all the Zendesk objects (and their corresponding properties) according to the Collections table in this section. The objects are written into a separate schema, corresponding to the source instance's schema name you designated upon creation (like `zendesk_prod.users`). +In the initial sync, Segment imports all available Zendesk data. Segment writes the data into a schema corresponding to your source name (for example, `zendesk_prod.users`). -The sync component uses an upsert API, so the data in your warehouse loaded using sync reflects the latest state of the corresponding resource in Zendesk. For example, if `ticket_status` goes from `open` to `closed` between syncs, on its next sync that tickets status is `closed`. +Segment uses an upsert process so the data in your warehouse always reflects the latest state in Zendesk. For example, if a ticket’s status changes from `open` to `closed` between syncs, the next sync updates that record. -The source syncs and warehouse syncs are independent processes. Source runs pull your data into the Segment Hub, and warehouse runs flush that data to your warehouse. Sources sync with Segment every three hours. Depending on your Warehouses plan, Segment pushes the Source data to your warehouse on the interval associated with your billing plan. +Source syncs and warehouse syncs are independent. The source syncs data into Segment, and the warehouse sync pushes that data to your warehouse based on your plan’s schedule. -At the moment, Segment doesn't support filtering which objects or properties get synced. If you're interested in this feature, [reach out to Segment support](https://segment.com/help/contact/){:target="_blank”}. +Segment doesn't support filtering objects or properties during sync for the Zendesk source. To request this feature, [contact Segment Support](https://segment.com/help/contact/){:target="_blank"}. ## Collections From 6f12ad8fdfcd4770dd0237ae4d2bfcc373eec347 Mon Sep 17 00:00:00 2001 From: Carolina Lopez Date: Wed, 15 Oct 2025 15:49:59 -0500 Subject: [PATCH 103/140] fix header --- src/connections/destinations/catalog/hawkei/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/hawkei/index.md b/src/connections/destinations/catalog/hawkei/index.md index 246e1bbe1c..b98c509eee 100644 --- a/src/connections/destinations/catalog/hawkei/index.md +++ b/src/connections/destinations/catalog/hawkei/index.md @@ -70,6 +70,6 @@ You'll want to create events that are part of critical paths in your application ## Troubleshooting -## AnonymousId +### AnonymousId All requests to Hawkei require an `anonymousId` to be set. Segment sets this automatically on client-side libraries, but for server side libraries (php, Ruby etc) this needs to be explicitly set. From 1cc41c5a5ae5df9fd853395c8b86a9f1034b1641 Mon Sep 17 00:00:00 2001 From: CristhianMotoche Date: Wed, 15 Oct 2025 16:15:03 -0500 Subject: [PATCH 104/140] chore: Include language code fences --- src/connections/destinations/catalog/castle/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/connections/destinations/catalog/castle/index.md b/src/connections/destinations/catalog/castle/index.md index 22b5de0d86..72c64075a1 100644 --- a/src/connections/destinations/catalog/castle/index.md +++ b/src/connections/destinations/catalog/castle/index.md @@ -61,13 +61,13 @@ Calls are now visible in Castle dashboards in real-time. - Add this line to your gradle file: - ``` + ```groovy implementation 'com.segment.analytics.kotlin.destinations:castle:' ``` - Add the following for Kotlin DSL: - ``` + ```kotlin implementation("com.segment.analytics.kotlin.destinations:castle:") ``` From 6c624e093746662d55c492fe083ba42a64afb513 Mon Sep 17 00:00:00 2001 From: Carolina Lopez Date: Wed, 15 Oct 2025 16:35:47 -0500 Subject: [PATCH 105/140] Fixes --- src/connections/destinations/catalog/google-ads-gtag/index.md | 4 ++-- src/connections/destinations/catalog/gtag/index.md | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/connections/destinations/catalog/google-ads-gtag/index.md b/src/connections/destinations/catalog/google-ads-gtag/index.md index 3ce0ef820d..f2f4780e80 100644 --- a/src/connections/destinations/catalog/google-ads-gtag/index.md +++ b/src/connections/destinations/catalog/google-ads-gtag/index.md @@ -47,7 +47,7 @@ To enable consent mode for your Google Ads (Gtag) destination, you can choose fr * **Option 1:** 1. Set the consent defaults by implementing the `ready()` method to set consent defaults. - ``` + ```js analytics.ready(function() { window.gtag('consent', 'default', { 'ad_storage': 'granted', @@ -62,7 +62,7 @@ To enable consent mode for your Google Ads (Gtag) destination, you can choose fr 3. Pass the information to Gtag.js by calling `gtag` inside the Segment `ready`() method. - ``` + ```js analytics.ready(function() { window.gtag('consent', 'update', { 'ad_storage': 'denied', diff --git a/src/connections/destinations/catalog/gtag/index.md b/src/connections/destinations/catalog/gtag/index.md index dcc0ff705f..e66fa2c11f 100644 --- a/src/connections/destinations/catalog/gtag/index.md +++ b/src/connections/destinations/catalog/gtag/index.md @@ -130,6 +130,8 @@ analytics.track('Logged In'); Segment sends these event attributes to Google Analytics: +| Event Attributes | Info | +| ------------------ | --------- | | **Event Category** | All | | **Event Action** | Logged In | @@ -150,6 +152,8 @@ In this example, Segment sends all Google Analytics event parameters: Segment sends these event attributes to Google Analytics: +| Event Attributes | Info | +| ------------------ | --------- | | **Event Category** | Account | | **Event Action** | Logged In | | **Event Label** | Premium | From fe75dd71ad87096a6a104c327328b70e2853695c Mon Sep 17 00:00:00 2001 From: pwseg <86626706+pwseg@users.noreply.github.com> Date: Wed, 15 Oct 2025 18:46:43 -0500 Subject: [PATCH 106/140] minor rewording --- src/connections/auto-instrumentation/configuration.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/connections/auto-instrumentation/configuration.md b/src/connections/auto-instrumentation/configuration.md index 807e07bad8..7ae0b1f252 100644 --- a/src/connections/auto-instrumentation/configuration.md +++ b/src/connections/auto-instrumentation/configuration.md @@ -17,12 +17,13 @@ This guide assumes that you've already added the Signals SDK to your application After you set up the Signals SDK to capture the signals you want to target, you can create rules in your Segment workspace to translate the captured signals into traditional Segment analytics events. These rules are deployed in your application the next time a user launches your app. -The process is: -1. Send signals into the app -2. Build event rules from those signals -3. Publish those event rules +The process works like this: -Once your event rules are published they will be analyzed against user behavior on your website or app and send events to Segment when users perform the interaction triggers. +1. The SDK sends raw signals from your app or website to Segment. +2. You build event rules in your workspace that define how those signals should become analytics events. +3. You publish the event rules. + +After publishing, Segment analyzes user interactions in your app or website against these rules and automatically generates analytics events when matching interactions occur. ### Getting started with rule creation From 4964fc6a934ff58353c06344ab8ce7039da06573 Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 15 Oct 2025 18:56:46 -0500 Subject: [PATCH 107/140] add regional callout [netlify-build] --- src/connections/auto-instrumentation/configuration.md | 3 +++ src/connections/auto-instrumentation/event-builder.md | 3 +++ src/connections/auto-instrumentation/index.md | 3 +++ src/connections/auto-instrumentation/kotlin-setup.md | 3 +++ src/connections/auto-instrumentation/swift-setup.md | 3 +++ src/connections/auto-instrumentation/web-setup.md | 3 +++ 6 files changed, 18 insertions(+) diff --git a/src/connections/auto-instrumentation/configuration.md b/src/connections/auto-instrumentation/configuration.md index 7ae0b1f252..20e6d57d7f 100644 --- a/src/connections/auto-instrumentation/configuration.md +++ b/src/connections/auto-instrumentation/configuration.md @@ -13,6 +13,9 @@ This guide assumes that you've already added the Signals SDK to your application > info "Auto-Instrumentation in public beta" > Auto-Instrumentation is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. +> info "Regional availability" +> Auto-Instrumentation isn't supported in EU workspaces. + ## Converting signals to events After you set up the Signals SDK to capture the signals you want to target, you can create rules in your Segment workspace to translate the captured signals into traditional Segment analytics events. These rules are deployed in your application the next time a user launches your app. diff --git a/src/connections/auto-instrumentation/event-builder.md b/src/connections/auto-instrumentation/event-builder.md index f165a81d04..4cd081e4fe 100644 --- a/src/connections/auto-instrumentation/event-builder.md +++ b/src/connections/auto-instrumentation/event-builder.md @@ -10,6 +10,9 @@ You can use it to create Track, Identify, Page, and other event types directly f > info "Auto-Instrumentation Private Beta" > Auto-Instrumentation is currently in Private Beta and is governed by Segment's [First Access and Beta Preview Terms](https://www.twilio.com/en-us/legal/tos){:target="_blank"}. Segment is actively iterating on and improving the Auto-Instrumentation user experience. +> info "Regional availability" +> Auto-Instrumentation isn't supported in EU workspaces. + ## Access the Event Builder The Event Builder appears as a tab within each source, next to the Debugger. If you don't see the Event Builder tab, first confirm that you've installed the required Auto-Instrumentation SDK. diff --git a/src/connections/auto-instrumentation/index.md b/src/connections/auto-instrumentation/index.md index 6b79e61abd..a0b66c58dd 100644 --- a/src/connections/auto-instrumentation/index.md +++ b/src/connections/auto-instrumentation/index.md @@ -29,6 +29,9 @@ Auto-Instrumentation simplifies tracking in your websites and apps by removing t > info "Auto-Instrumentation in public beta" > Auto-Instrumentation is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. +> info "Regional availability" +> Auto-Instrumentation isn't supported in EU workspaces. + ## Background Collecting high-quality analytics data is essential, but traditional tracking setups often fall behind as business needs change. Instrumentation updates take time away from other engineering priorities, and these delays reduce visibility and increase the burden on engineering teams. diff --git a/src/connections/auto-instrumentation/kotlin-setup.md b/src/connections/auto-instrumentation/kotlin-setup.md index adee4807e5..4f2454d7f3 100644 --- a/src/connections/auto-instrumentation/kotlin-setup.md +++ b/src/connections/auto-instrumentation/kotlin-setup.md @@ -10,6 +10,9 @@ This guide shows how to install and configure the library, as well as how to ena > info "Auto-Instrumentation in public beta" > Auto-Instrumentation is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. +> info "Regional availability" +> Auto-Instrumentation isn't supported in EU workspaces. + ## Before you start To use Signals with Android, you need: diff --git a/src/connections/auto-instrumentation/swift-setup.md b/src/connections/auto-instrumentation/swift-setup.md index 10cead53df..9f60552391 100644 --- a/src/connections/auto-instrumentation/swift-setup.md +++ b/src/connections/auto-instrumentation/swift-setup.md @@ -10,6 +10,9 @@ Learn how to connect an existing source, integrate dependencies, turn on Auto-In > info "Auto-Instrumentation in public beta" > Auto-Instrumentation is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. +> info "Regional availability" +> Auto-Instrumentation isn't supported in EU workspaces. + ## Step 1: Get your source write key You need the `writeKey` from an existing Segment source. To find it: diff --git a/src/connections/auto-instrumentation/web-setup.md b/src/connections/auto-instrumentation/web-setup.md index 7a29993bd6..4e981f8b5e 100644 --- a/src/connections/auto-instrumentation/web-setup.md +++ b/src/connections/auto-instrumentation/web-setup.md @@ -10,6 +10,9 @@ Learn how to connect an existing source, integrate dependencies, turn on Auto-In > info "Auto-Instrumentation in public beta" > Auto-Instrumentation is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. +> info "Regional availability" +> Auto-Instrumentation isn't supported in EU workspaces. + ## Step 1: Get your source write key You need the `writeKey` from an existing Segment source. To find it: From bf9e50d79a142c6a981ed0ba023bc482434797ff Mon Sep 17 00:00:00 2001 From: Carolina Lopez Date: Wed, 15 Oct 2025 19:41:24 -0500 Subject: [PATCH 108/140] Add languages in codefence --- .../destinations/catalog/freshsales/index.md | 14 +++++++------- .../destinations/catalog/fullstory/index.md | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/connections/destinations/catalog/freshsales/index.md b/src/connections/destinations/catalog/freshsales/index.md index b2477e6372..b85d5e8947 100644 --- a/src/connections/destinations/catalog/freshsales/index.md +++ b/src/connections/destinations/catalog/freshsales/index.md @@ -19,7 +19,7 @@ You can use `identify` to create a lead or a contact when a website visitor fill ### User ID `userId` is a mandatory field which is used to identify the lead or contact in Freshsales. If your user identifier is not email, then email has to be a part of traits. -
+```json
 {
   "userId": "97980cfea0067",
   "traits": {
@@ -32,11 +32,11 @@ You can use `identify` to create a lead or a contact when a website visitor fill
     }
   }
 }
-
+``` By default, every `identity` is created as a lead. If you'd like an identity to be a contact, you'd need to pass `fs_contact` as `true` as a part of traits. -
+```json
 {
   "userId" : "97980cfea0067",
   "traits" : {
@@ -50,7 +50,7 @@ By default, every `identity` is created as a lead. If you'd like an identity to
     }
   }
 }
-
+``` ### Traits `traits` are pieces of information you know about a user that are included in an `identify` method. @@ -72,7 +72,7 @@ As part of traits, you can send custom fields created in Freshsales by using the ### Objects: Accounts and Deals associated to a contact or lead can also be updated in Freshsales. The objects company and deal in the identity correspond to the Accounts and Deals in Freshsales. You can pass the `traits` of the company or the deal along with the respective objects in the identity. -``` +```json { "userId" : "97980cfea0067", "traits" : { @@ -98,7 +98,7 @@ You can track activities of your website visitors. If a user is subscribing to a ### Track request payload -``` +```json { "userId" : "john.doe@example.com", "event": "Email Bounced", @@ -120,7 +120,7 @@ When you call a `page` event, we send a pageview to Freshsales. You can send ext ### Sample Page request payload -``` +```json { "userId" : "john.doe@example.com", "name": "Page view", diff --git a/src/connections/destinations/catalog/fullstory/index.md b/src/connections/destinations/catalog/fullstory/index.md index ff78b4c9b4..1e248fd05d 100644 --- a/src/connections/destinations/catalog/fullstory/index.md +++ b/src/connections/destinations/catalog/fullstory/index.md @@ -39,7 +39,7 @@ analytics.identify("userId"); In addition, Segment will send over along any traits included in the `identify` call. The example call below would send over both `plan` and `logins`. -``` +```js analytics.identify("userId123", { plan: "premium", logins: 5 @@ -50,7 +50,7 @@ analytics.identify("userId123", { Both `email` and `displayName` are special traits that will be passed to FullStory to be used in their interface as explained in [FullStory's docs](https://help.fullstory.com/hc/en-us/articles/360020828113){:target="_blank"}. These traits are optional. -``` +```js analytics.identify("userId123", { email: "john.doe@example.com", displayName: "John Doe" @@ -63,7 +63,7 @@ If you're not familiar with the Segment Specs, take a look to understand what th An example call would look like: -``` +```js analytics.track('Product Purchased', { order_ID: '2969302398', category: 'boots', From 128a506a9df95cf57c000a37bf47ba580e1baa9f Mon Sep 17 00:00:00 2001 From: Paulo Borges Date: Wed, 15 Oct 2025 22:47:53 -0300 Subject: [PATCH 109/140] fix list nesting (#8054) --- src/protocols/transform/index.md | 30 +++++++++---------- .../databricks-profiles-sync.md | 18 +++++------ 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/protocols/transform/index.md b/src/protocols/transform/index.md index 78ef6b289e..61f97f2d09 100644 --- a/src/protocols/transform/index.md +++ b/src/protocols/transform/index.md @@ -127,7 +127,7 @@ Enter a descriptive name to act as a label for the transformation. This label he In this step, you can also choose to keep the Transformation disabled, so you can come back and edit it later. To update, enable, or disable a Transformation, click on the overflow menu and select **Edit Transformation**. -## Use Cases +## Use cases Here's a list of Segment Transformations with some use case examples. @@ -138,20 +138,20 @@ Here's a list of Segment Transformations with some use case examples. - **Update a property value:** Use [Segment's Public API](https://docs.segmentapis.com/tag/Transformations){:target="_blank"} to transform the property `currency` to have the value `USD`. - **Property Transformations** - - **Assigning static values:** If you want to create a new property and set a static value, use [Segment's Public API](https://docs.segmentapis.com/tag/Transformations){:target="_blank"} to create `new_property: static_value`. Segment currently supports setting static values for top-level fields, as well as fields within the `context` or `properties` object with `propertyValueTransformations`. However, Segment doesn't support changing fields outside the properties or traits object with `propertyRenames`. You can use `propertyValueTransformations` on a single object to assign the same value to different fields or on multiple objects to assign a static value to the same field across objects. - - **Casing functions:** Use [Segment's Public API](https://docs.segmentapis.com/tag/Transformations){:target="_blank"} to transform property value casing to `lowercase`, `uppercase`, `snakecase`, `kebabcase`, or `titlecase`. When transforming data with casing functions, use the [`fqlDefinedProperties`](https://docs.segmentapis.com/tag/Transformations#operation/createTransformation!ct=application/vnd.segment.v1+json&path=fqlDefinedProperties&t=request){:target="_blank"} array to define the FQL you want to use and the new or existing `propertyName` you'd like to transform. - - **Static and dynamic value casing:** Use casing functions to transform property values to create uniform tracking data. For example, you can convert `usa` to `USA` to keep your downstream data consistent.
You can transform these properties using static casing functions:
- ``` - fqlDefinedProperties": [{"fql": "uppercase("United States)", "propertyName": "properties.propertyValue1"}] - ``` - or dynamic casing functions: - ``` - fqlDefinedProperties": [{"fql": "lowercase(properties.propertyValue1)", "propertyName": "properties.propertyValue1"}] - ``` - - **Create a new property with applied casing**: Use [Segment's Public API](https://docs.segmentapis.com/tag/Transformations){:target="_blank"} to create a new property and set the value of the new property to the transformed value of an existing property. You can dynamically assign the value of one existing property to another, or assign the value of an existing property to a new property without applying casing functions.
For example, create a new property (`prop2`) with a value of `lowercase(properties.prop1)` by including the following snippet in your payload:
- ``` - fqlDefinedProperties": [{"fql": "lowercase(properties.prop1)", "propertyName": "properties.prop2"}] - ``` + - **Assigning static values:** If you want to create a new property and set a static value, use [Segment's Public API](https://docs.segmentapis.com/tag/Transformations){:target="_blank"} to create `new_property: static_value`. Segment currently supports setting static values for top-level fields, as well as fields within the `context` or `properties` object with `propertyValueTransformations`. However, Segment doesn't support changing fields outside the properties or traits object with `propertyRenames`. You can use `propertyValueTransformations` on a single object to assign the same value to different fields or on multiple objects to assign a static value to the same field across objects. + - **Casing functions:** Use [Segment's Public API](https://docs.segmentapis.com/tag/Transformations){:target="_blank"} to transform property value casing to `lowercase`, `uppercase`, `snakecase`, `kebabcase`, or `titlecase`. When transforming data with casing functions, use the [`fqlDefinedProperties`](https://docs.segmentapis.com/tag/Transformations#operation/createTransformation!ct=application/vnd.segment.v1+json&path=fqlDefinedProperties&t=request){:target="_blank"} array to define the FQL you want to use and the new or existing `propertyName` you'd like to transform. + - **Static and dynamic value casing:** Use casing functions to transform property values to create uniform tracking data. For example, you can convert `usa` to `USA` to keep your downstream data consistent.
You can transform these properties using static casing functions:
+ ``` + fqlDefinedProperties": [{"fql": "uppercase("United States)", "propertyName": "properties.propertyValue1"}] + ``` + or dynamic casing functions: + ``` + fqlDefinedProperties": [{"fql": "lowercase(properties.propertyValue1)", "propertyName": "properties.propertyValue1"}] + ``` + - **Create a new property with applied casing**: Use [Segment's Public API](https://docs.segmentapis.com/tag/Transformations){:target="_blank"} to create a new property and set the value of the new property to the transformed value of an existing property. You can dynamically assign the value of one existing property to another, or assign the value of an existing property to a new property without applying casing functions.
For example, create a new property (`prop2`) with a value of `lowercase(properties.prop1)` by including the following snippet in your payload:
+ ``` + fqlDefinedProperties": [{"fql": "lowercase(properties.prop1)", "propertyName": "properties.prop2"}] + ``` - Note that you can only assign one property to `fqlDefinedProperties` array. - Note that you cannot use `fqlDefinedProperties` along with event or property rename or property value transformations. diff --git a/src/unify/profiles-sync/profiles-sync-setup/databricks-profiles-sync.md b/src/unify/profiles-sync/profiles-sync-setup/databricks-profiles-sync.md index ab513d1fe6..a31bf69a69 100644 --- a/src/unify/profiles-sync/profiles-sync-setup/databricks-profiles-sync.md +++ b/src/unify/profiles-sync/profiles-sync-setup/databricks-profiles-sync.md @@ -77,15 +77,15 @@ Segment uses the service principal to access your Databricks workspace and assoc **Service principal client ID**: Follow the [Databricks guide for adding a service principal to your account](https://docs.databricks.com/en/administration-guide/users-groups/service-principals.html#manage-service-principals-in-your-account){:target="_blank"}. This name can be anything, but Segment recommends something that identifies the purpose (for example, "Segment Profiles Sync"). Segment doesn't require `Account admin` or `Marketplace admin` roles. The service principal needs the following setup: - - [Catalog-level privileges](https://docs.databricks.com/en/data-governance/unity-catalog/manage-privileges/privileges.html#general-unity-catalog-privilege-types){:target="_blank"} which include: - - USE CATALOG - - USE SCHEMA - - MODIFY - - SELECT - - CREATE SCHEMA - - CREATE TABLE - - Databricks [SQL access entitlement](https://docs.databricks.com/en/administration-guide/users-groups/service-principals.html#manage-workspace-entitlements-for-a-service-principal){:target="_blank"} at the workspace level. - - [CAN USE permissions](https://docs.databricks.com/en/security/auth-authz/access-control/sql-endpoint-acl.html#sql-warehouse-permissions){:target="_blank"} on the SQL warehouse that will be used for the sync. +- [Catalog-level privileges](https://docs.databricks.com/en/data-governance/unity-catalog/manage-privileges/privileges.html#general-unity-catalog-privilege-types){:target="_blank"} which include: + - USE CATALOG + - USE SCHEMA + - MODIFY + - SELECT + - CREATE SCHEMA + - CREATE TABLE +- Databricks [SQL access entitlement](https://docs.databricks.com/en/administration-guide/users-groups/service-principals.html#manage-workspace-entitlements-for-a-service-principal){:target="_blank"} at the workspace level. +- [CAN USE permissions](https://docs.databricks.com/en/security/auth-authz/access-control/sql-endpoint-acl.html#sql-warehouse-permissions){:target="_blank"} on the SQL warehouse that will be used for the sync. **Client secret**: Follow the [Databricks instructions to generate an OAuth secret](https://docs.databricks.com/en/dev-tools/authentication-oauth.html#step-2-create-an-oauth-secret-for-a-service-principal){:target="_blank"}. From 875a7d0c2f38b9ad77d96f2e7d7ffadd8a30b3f7 Mon Sep 17 00:00:00 2001 From: pwseg <86626706+pwseg@users.noreply.github.com> Date: Wed, 15 Oct 2025 20:55:01 -0500 Subject: [PATCH 110/140] minor rewording [netlify-build] --- src/engage/audiences/linked-audiences.md | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/engage/audiences/linked-audiences.md b/src/engage/audiences/linked-audiences.md index bde52144fa..7bbf0fa549 100644 --- a/src/engage/audiences/linked-audiences.md +++ b/src/engage/audiences/linked-audiences.md @@ -248,18 +248,15 @@ Determine when an audience should run and send data to enabled destinations with You can maintain your run schedule at any time from the audience's **Settings** tab. -> info "" -> When configuring an interval run schedule, the system uses a cron-based mechanism anchored to UTC, meaning the next run time aligns with the nearest UTC-based interval cycle, which may shift the schedule relative to your local time zone. -> When you set a 24-hour interval run schedule at, for example, 4 PM PST, the cron-based system using UTC schedules the next run for 5 PM PST the same day, as it aligns with 12 AM UTC; however, if set after 5 PM PST, the next run will be at 5 PM PST the following day. +> info "Run schedule timing" +> Interval run schedules are based on UTC time using a cron-style system. This means the next run time aligns with the nearest UTC interval, which may differ from your local time. For example, if you set a 24-hour interval at 4 PM PST, the next run aligns with 12 AM UTC, which occurs at 5 PM PST. If you set it after 5 PM PST, the next run occurs the following day at 5 PM PST. You can also click **Run Now** on the Audience Overview page at any time (even if the run schedule is **Interval** Overview **Day and time**) to manually trigger a run on your warehouse and send data to enabled destinations. There may be up to a five minute delay from the configured start time for audiences that are configured with the **Interval** and **Day and time** run schedules. For example, if you configured an audience with the **Day and time** compute schedule to run on Mondays at 8am, it can compute as late as Monday at 8:05am. This is to help us better manage our system load. -> info "" -> The next execution time for a Linked Audience is not calculated until the previous run has fully completed. This means that if you schedule a Linked Audience to run every 15 minutes, but the workflow takes 1 hour to complete, the next execution won't be scheduled until that run finishes. -> -> At that point, we calculate the next run time by finding the next interval after the current time, based on the corresponding cron expression. That interval becomes the next execution time. +> info "Execution timing" +> Linked Audiences don’t schedule the next run until the current one finishes. For example, if you set a 15-minute interval but the workflow takes an hour to complete, the next run won’t start until that hour-long run ends. After it finishes, Segment calculates the next run time based on the next available interval. ## Step 5: Monitor your activation From d7395aa23accaad3f0baad36a667f5d00c914dbb Mon Sep 17 00:00:00 2001 From: Vanessa Sun <130672069+Vanessa-SSY@users.noreply.github.com> Date: Wed, 15 Oct 2025 22:48:48 -0400 Subject: [PATCH 111/140] Update src/connections/destinations/catalog/actions-stackadapt-audiences/index.md Co-authored-by: rchinn1 <93161299+rchinn1@users.noreply.github.com> --- .../destinations/catalog/actions-stackadapt-audiences/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-stackadapt-audiences/index.md b/src/connections/destinations/catalog/actions-stackadapt-audiences/index.md index 2e898e0cf8..07cbe82049 100644 --- a/src/connections/destinations/catalog/actions-stackadapt-audiences/index.md +++ b/src/connections/destinations/catalog/actions-stackadapt-audiences/index.md @@ -54,7 +54,7 @@ Each Engage audience should only contain profiles that have a valid email addres - To reuse your Segment audience on the StackAdapt platform, select **Sync Audience**. - To import profiles to the StackAdapt platform, select **Forward Profile**. - **Note**: You don't have to set up both mappings. The mappings will be shared across all audiences that have sync enabled to this destination. You should create a new destination if you wish to use different mappings for different audiences. -8. Define the event trigger: ensure you have this condition: **Event Type is `Track` or `Identify`**. +8. Define the event trigger: Ensure the Event Type is `Track` or `Identify`. 9. Map fields: - (**Required**:) Select a default value for `Marketing Status`. - (**Required**:) Confirm that you have a valid source field for `Email`. From 1d38e6c4539a6682852a44faa3ca7d83d327001b Mon Sep 17 00:00:00 2001 From: Vanessa Sun <130672069+Vanessa-SSY@users.noreply.github.com> Date: Wed, 15 Oct 2025 22:49:01 -0400 Subject: [PATCH 112/140] Update src/connections/destinations/catalog/actions-stackadapt-audiences/index.md Co-authored-by: rchinn1 <93161299+rchinn1@users.noreply.github.com> --- .../destinations/catalog/actions-stackadapt-audiences/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-stackadapt-audiences/index.md b/src/connections/destinations/catalog/actions-stackadapt-audiences/index.md index 07cbe82049..d4af71165a 100644 --- a/src/connections/destinations/catalog/actions-stackadapt-audiences/index.md +++ b/src/connections/destinations/catalog/actions-stackadapt-audiences/index.md @@ -17,7 +17,7 @@ This destination is maintained by StackAdapt. For any issues with the destinatio ## Getting started > info "Getting your StackAdapt GraphQL token" -> If you do not have an existing StackAdapt read & write API key, contact the [StackAdapt team](https://support.stackadapt.com/hc/en-us/requests/new?ticket_form_id=360006572593){:target="\_blank"}. +> If you do not have an existing StackAdapt read and write API key, contact the [StackAdapt team](https://support.stackadapt.com/hc/en-us/requests/new?ticket_form_id=360006572593){:target="\_blank"}. ### Setting up the StackAdapt Audiences destination in Engage From ff7e6f66c9350d6c0b44a7f99fe4ab150f02c8b9 Mon Sep 17 00:00:00 2001 From: Carolina Lopez Date: Thu, 16 Oct 2025 00:10:59 -0500 Subject: [PATCH 113/140] Remove backquotes, not allowed in callouts title --- src/connections/destinations/catalog/firebase/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/firebase/index.md b/src/connections/destinations/catalog/firebase/index.md index 0d0c6f5f73..8d7c6e4731 100644 --- a/src/connections/destinations/catalog/firebase/index.md +++ b/src/connections/destinations/catalog/firebase/index.md @@ -44,7 +44,7 @@ buildscript { apply plugin: 'com.google.gms.google-services' ``` -> warning "Use the `aar` package when adding the Segment-Firebase SDK" +> warning "Use the aar package when adding the Segment-Firebase SDK" > The Firebase SDK requires Android resources which are available on `aar` packages. From 384b379b9ba6b2d66286bb1ab1f42c78cc03ff42 Mon Sep 17 00:00:00 2001 From: Charly Monedero Date: Thu, 16 Oct 2025 15:11:19 +0200 Subject: [PATCH 114/140] chore: fixes for serialization of batch 8.3 --- .../destinations/catalog/ab-smartly/index.md | 4 ++-- .../destinations/catalog/aboardly/index.md | 2 -- .../reddit-ads-conversion-api-integration-recipe.md | 4 ++-- .../destinations/catalog/adobe-analytics/index.md | 8 ++------ .../catalog/adwords-remarketing-lists/index.md | 2 +- .../destinations/catalog/all-aboard/index.md | 2 -- .../catalog/amazon-kinesis-firehose/index.md | 12 ++++++------ .../destinations/catalog/amazon-kinesis/index.md | 4 ++-- .../destinations/catalog/amazon-lambda/index.md | 2 +- .../destinations/catalog/amazon-personalize/index.md | 6 +++--- 10 files changed, 19 insertions(+), 27 deletions(-) diff --git a/src/connections/destinations/catalog/ab-smartly/index.md b/src/connections/destinations/catalog/ab-smartly/index.md index fc0bd62b8d..563c1b4027 100644 --- a/src/connections/destinations/catalog/ab-smartly/index.md +++ b/src/connections/destinations/catalog/ab-smartly/index.md @@ -24,12 +24,12 @@ Segment provides specific implementation details for A/B Smartly in the sections 1. From the Destinations catalog page in the Segment App, click **Add Destination**. 2. Search for "A/B Smartly" in the Destinations Catalog, and select the "A/B Smartly" destination. 3. Choose which Source should send data to the "A/B Smartly" destination. -4. Go to the A/B Smartly dashboard(https://your-org-name.absmartly.com/apikey/list){:target="_blank”}, find and copy the "API key" that you created for segment. +4. Go to the A/B Smartly dashboard (`https://your-org-name.absmartly.com/apikey/list`), find and copy the "API key" that you created for segment. 5. Enter the "API Key" in the "A/B Smartly" destination settings in Segment. 6. If the integration requests for an Application name go to your A/B Smartly dashboard (`https://your-org-name.absmartly.com/application/create`) and create an Application named "Segment", or whatever you would like to call it. Use that name in the Application field of the integration settings. 7. Add also your A/B Smartly Collector endpoint. It's the same endpoint that you are using in all your A/B Smartly SDKs. 8. Enter the environment from your Environment list (`https://your-org-name.absmartly.com/environment/list`) that should receive your Segment data. Most likely it will be the production one. -9. And finally a mapping of Segment Identities to A/B Smartly Units(`https://your-org-name.absmartly.com/unit/list`). You should map all of your Segment identities that you would like to use in your A/B tests to the units that you already have in A/B Smartly. Users must map all the identity types, but not for the individual users. Map all of your ids in your Unit List(`https://your-org-name.absmartly.com/unit/list`). +9. And finally a mapping of Segment Identities to A/B Smartly Units (`https://your-org-name.absmartly.com/unit/list`). You should map all of your Segment identities that you would like to use in your A/B tests to the units that you already have in A/B Smartly. Users must map all the identity types, but not for the individual users. Map all of your ids in your Unit List(`https://your-org-name.absmartly.com/unit/list`). 10. Optionally go to "Goal Mapping" and start adding the track calls that you would like to see showing up on A/B Smartly as goals. You only need to create a name mapping if the name of the goal on A/B Smartly's platform is different from the name of the track call in Segment. ## Page diff --git a/src/connections/destinations/catalog/aboardly/index.md b/src/connections/destinations/catalog/aboardly/index.md index 2eb85f3b1d..10ff864d45 100644 --- a/src/connections/destinations/catalog/aboardly/index.md +++ b/src/connections/destinations/catalog/aboardly/index.md @@ -10,8 +10,6 @@ Once the Segment library is integrated with your server, toggle Aboardly on in y Aboardly supports the `identify` and `track` methods. -- - - - ## Identify When you `identify` a user, we'll pass that user's information to Aboardly with `userId` as Aboardly's External Customer ID. Aboardly recognizes all traits sent by Segment, however in order to send emails you should always add the `email` trait when possible. diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-conversion-api-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-conversion-api-integration-recipe.md index 59fb150aea..681e0b2aaf 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-conversion-api-integration-recipe.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-conversion-api-integration-recipe.md @@ -132,8 +132,8 @@ To map data from your destination to Reddit Ads: 4. Fill out mapping fields: 1. To specify the URL, go to your Reddit Ads account, navigate to **Pixel configuration** to find your Pixel ID. The format of the URL should be `https://ads-api.reddit.com/api/v2.0/conversions/events/{{YOURPIXEL_ID}}`, with your pixel ID being at the end of the URL. 2. Specify the headers: - - Set up Authorization using the bearer token generated in the previous step. - - Specify the content type that the Conversion API expects. + - Set up Authorization using the bearer token generated in the previous step. + - Specify the content type that the Conversion API expects. 5. Use the mapping interface and search for the “body” parameter that was created in the insert function to select the transformed object that can be sent as the event body. 6. Turn off batching for this operation. diff --git a/src/connections/destinations/catalog/adobe-analytics/index.md b/src/connections/destinations/catalog/adobe-analytics/index.md index 68781752ab..94ffeaf4f6 100644 --- a/src/connections/destinations/catalog/adobe-analytics/index.md +++ b/src/connections/destinations/catalog/adobe-analytics/index.md @@ -59,8 +59,6 @@ It can also take up to an hour for all of the mobile users' Segment settings cac Adobe Analytics has a real-time reporting feature which displays web page traffic and ranks page views in real time. Configuring and enabling these reports are restricted to Adobe Admin users. To learn more see Adobe's [overview on Real-time reporting](https://docs.adobe.com/content/help/en/analytics/components/real-time-reporting/realtime.html){:target="_blank”} ---- - ## Device-mode - Analytics.js Device-mode web data is sent using Analytics.js, with Analytics.js either serving as a wrapper/bundle around the Adobe Analytics code, or sending directly to Segment servers where the data is then sent on to the Adobe destination. @@ -86,8 +84,6 @@ To use Adobe's Marketing Cloud Visitor ID Service, enter your **Marketing Cloud ![A screenshot of the Adobe Analytics settings page in Segment, with the Identity Resolution section selected.](images/mcvid.png) ---- - ## Cloud-mode - Server-side "Cloud-mode" data is data sent _without_ bundling the Segment-Adobe-Analytics SDK. It can be sent using mobile libraries, Analytics.js, and other server-based sources. Cloud mode data is sent to Adobe using Adobe's data insertion API in XML format. To learn more about Adobe's data insertion API see the [documentation here](https://docs.adobe.com/content/help/en/analytics/import/c-data-insertion-api.html){:target="_blank”}. @@ -128,8 +124,8 @@ Segment's server-side integration is not open-source. Let's explore what happens }); ``` - - `userId` - - `anonymousId` + - `userId` + - `anonymousId` > info "" > Adobe Analytics timestamp options need to match in the Segment destination settings and Adobe setting. Otherwise, events might be silently dropped by Adobe despite sending a 200 success response to Segment diff --git a/src/connections/destinations/catalog/adwords-remarketing-lists/index.md b/src/connections/destinations/catalog/adwords-remarketing-lists/index.md index df58d41e28..77fa15b212 100644 --- a/src/connections/destinations/catalog/adwords-remarketing-lists/index.md +++ b/src/connections/destinations/catalog/adwords-remarketing-lists/index.md @@ -168,7 +168,7 @@ Engage audiences can only send to Google Ads Remarketing Lists for Google Search #### How many users must be in an audience to use Google Ads Campaigns? -100. +100 #### What custom matchers does Engage send to Google Ads? diff --git a/src/connections/destinations/catalog/all-aboard/index.md b/src/connections/destinations/catalog/all-aboard/index.md index b4d7572251..4fa733c608 100644 --- a/src/connections/destinations/catalog/all-aboard/index.md +++ b/src/connections/destinations/catalog/all-aboard/index.md @@ -10,8 +10,6 @@ Once the Segment library is integrated with your server, toggle All Aboard! to " All Aboard! supports the `identify` method. -- - - - ## Identify When you `identify` a user we pass that user's information to All Aboard. You can use the `identify` call to add new customers to All Aboard! or append traits to existing customers. diff --git a/src/connections/destinations/catalog/amazon-kinesis-firehose/index.md b/src/connections/destinations/catalog/amazon-kinesis-firehose/index.md index 8293253ff0..2e884398d7 100644 --- a/src/connections/destinations/catalog/amazon-kinesis-firehose/index.md +++ b/src/connections/destinations/catalog/amazon-kinesis-firehose/index.md @@ -14,7 +14,7 @@ To get started: 2. Create an IAM policy. 1. Sign in to the [Identity and Access Management (IAM) console](https://console.aws.amazon.com/iam/){:target="_blank"}. 2. Follow [these instructions](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html#access_policies_create-json-editor){:target="_blank"} to create an IAM policy on the JSON to allow Segment permission to write to your Kinesis Firehose Stream. - - Use the following template policy in the **Policy Document** field. Be sure to change the `{region}`, `{account-id}` and `{stream-name}` with the applicable values. + - Use the following template policy in the **Policy Document** field. Be sure to change the `{region}`, `{account-id}` and `{stream-name}` with the applicable values. ```js @@ -36,11 +36,11 @@ To get started: 3. Create an IAM role. - 1. Follow [these instructions](http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console){:target="_blank”} to create an IAM role to allow Segment permission to write to your Kinesis Firehose Stream. - 2. When prompted to enter an Account ID, enter `595280932656`. - 3. Select the checkbox to enable **Require External ID**. - 4. Enter your Secret ID as the **External ID**. This can be found in Segment by navigating to your Amazon Kinesis Firehose destination in Segment, going to the Settings tab, and clicking the Secret ID setting. - - **Note:** If you have multiple sources using Kinesis, enter one of their Secret IDs here for now and then follow the procedure outlined in the [Multiple Sources](#best-practices) section at the bottom of this doc once you've completed this step and saved your IAM role. + 1. Follow [these instructions](http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console){:target="_blank”} to create an IAM role to allow Segment permission to write to your Kinesis Firehose Stream. + 2. When prompted to enter an Account ID, enter `595280932656`. + 3. Select the checkbox to enable **Require External ID**. + 4. Enter your Secret ID as the **External ID**. This can be found in Segment by navigating to your Amazon Kinesis Firehose destination in Segment, going to the Settings tab, and clicking the Secret ID setting. + - **Note:** If you have multiple sources using Kinesis, enter one of their Secret IDs here for now and then follow the procedure outlined in the [Multiple Sources](#best-practices) section at the bottom of this doc once you've completed this step and saved your IAM role. 5. When adding permissions to your new role, find the policy you created in step 2 and attach it. 4. Create a new Kinesis Firehose Destination. diff --git a/src/connections/destinations/catalog/amazon-kinesis/index.md b/src/connections/destinations/catalog/amazon-kinesis/index.md index 2ade5cf926..208d8cbfa5 100644 --- a/src/connections/destinations/catalog/amazon-kinesis/index.md +++ b/src/connections/destinations/catalog/amazon-kinesis/index.md @@ -43,13 +43,13 @@ To get started: 3. Create an IAM role. 1. Follow these instructions to [Create an IAM role](http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console){:target="_blank"} to allow Segment permission to write to your Kinesis Stream. 2. When prompted to enter an Account ID, enter `595280932656`. Make sure to enable **Require External ID** and enter your Segment Source ID as the External ID. This can be found by navigating to **Settings > API Keys** from your Segment source homepage. - * **NOTE:** If you have multiple sources using Kinesis, enter one of their source IDs here for now and then follow the procedure outlined in the [Multiple Sources](/docs/connections/destinations/catalog/amazon-kinesis/#multiple-sources) section once you've completed this step and saved your IAM role. + * **NOTE:** If you have multiple sources using Kinesis, enter one of their source IDs here for now and then follow the procedure outlined in the [Multiple Sources](/docs/connections/destinations/catalog/amazon-kinesis/#multiple-sources) section once you've completed this step and saved your IAM role. 3. When adding permissions to your new role, find the policy you created in step 2 and attach it. 4. Create a new Kinesis destination. 1. In the Segment source that you want to connect to your Kinesis destination, click **Add Destination**. Search and select the **Amazon Kinesis** destination. 2. Enter the **Role Address**, **Stream Region**, **Stream Name**, and **Secret ID**. - * **NOTE:** For security purposes, Segment sets your Workspace ID as your Secret ID. If you're using a Secret ID different from your Workspace ID, reach out to our support team so they can change it to make your account more secure. + * **NOTE:** For security purposes, Segment sets your Workspace ID as your Secret ID. If you're using a Secret ID different from your Workspace ID, reach out to our support team so they can change it to make your account more secure. > success "" > Segment's Amazon Kinesis destination only transmits data in JSON format. diff --git a/src/connections/destinations/catalog/amazon-lambda/index.md b/src/connections/destinations/catalog/amazon-lambda/index.md index 2c0f10e62c..05b1b55000 100644 --- a/src/connections/destinations/catalog/amazon-lambda/index.md +++ b/src/connections/destinations/catalog/amazon-lambda/index.md @@ -183,7 +183,7 @@ To configure your Segment Lambda destination: This setting controls the [Log Type](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax){:target="_blank”} for your Lambda function using Cloud Watch. Select option `Tail` if you would like to see [detailed logs](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions.html){:target="_blank”} in Cloud Watch. -**My Lambda <> Segment connection is timing out, what do I do?** +**My Lambda `<>` Segment connection is timing out, what do I do?** Due to how the event delivery system, [Centrifuge](https://www.twilio.com/en-us/blog/archive/2018/introducing-centrifuge){:target="_blank”}, works, your Lambda can't take more than 5 seconds to run per message. If you're consistently running into timeout issues, you should consult the [AWS Lambda docs](https://docs.aws.amazon.com/lambda/index.html#lang/en_us){:target="_blank”}, as well as docs for your language of choice, for tips on optimizing performance. diff --git a/src/connections/destinations/catalog/amazon-personalize/index.md b/src/connections/destinations/catalog/amazon-personalize/index.md index 6d5ef52718..2571b47499 100644 --- a/src/connections/destinations/catalog/amazon-personalize/index.md +++ b/src/connections/destinations/catalog/amazon-personalize/index.md @@ -799,7 +799,7 @@ To install Segment's Layer: You need to modify the IAM Role & Policy originally created with this Lambda to allow it to send and receive data from Personalize. To do this: -1. From the **Execution role** section of your Lambda function, click the **View the ** link. +1. From the **Execution role** section of your Lambda function, click the **View the ``** link. ![A screenshot of the execution role settings section on your Lambda.](images/ExecutionRoleIAM.png) @@ -907,7 +907,7 @@ You need to create a Personalize Event Tracker for the Dataset Group you created } ``` - * This may be automatically included as policy "AmazonPersonalize-ExecutionPolicy-" + * This may be automatically included as policy `AmazonPersonalize-ExecutionPolicy-` ```json { @@ -1004,6 +1004,6 @@ There are two settings relevant for track calls: This setting controls the [Log Type](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax){:target="_blank”} for your Lambda function using Cloud Watch. Select option `Tail` if you would like to see [detailed logs](https://docs.aws.amazon.com/lambda/latest/dg/monitoring-functions.html){:target="_blank”}in Cloud Watch. -**My Lambda <> Segment connection is timing out, what do I do?** +**My Lambda `<>` Segment connection is timing out, what do I do?** Due to how Segment's event delivery system, [Centrifuge](https://www.twilio.com/en-us/blog/archive/2018/introducing-centrifuge){:target="_blank”}, works, your Lambda can't take more than five seconds to run per message. If you're consistently running into timeout issues, you should consult the [AWS Lambda docs](https://docs.aws.amazon.com/lambda/index.html#lang/en_us){:target="_blank”}, as well as docs for your language of choice, for tips on optimizing performance. From 5ed9cf62cbf0b6ab19dfb08a6fffe4216f6d22cd Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 14:14:58 +0100 Subject: [PATCH 115/140] Update src/connections/destinations/catalog/actions-fullsession/index.md Co-authored-by: pwseg <86626706+pwseg@users.noreply.github.com> --- .../destinations/catalog/actions-fullsession/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/connections/destinations/catalog/actions-fullsession/index.md b/src/connections/destinations/catalog/actions-fullsession/index.md index a918fc9231..b3dd292b23 100644 --- a/src/connections/destinations/catalog/actions-fullsession/index.md +++ b/src/connections/destinations/catalog/actions-fullsession/index.md @@ -1,6 +1,7 @@ --- title: FullSession (Actions) Destination id: 68c14f4eefb643527597844c +hidden: true --- {% include content/plan-grid.md name="actions" %} From 5840176d05f3d0480779d93c4d56f9c0c62e5e5d Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 14:16:00 +0100 Subject: [PATCH 116/140] Add beta flag to FullSession destination metadata --- .../destinations/catalog/actions-fullsession/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/connections/destinations/catalog/actions-fullsession/index.md b/src/connections/destinations/catalog/actions-fullsession/index.md index b3dd292b23..c9fe5a59d0 100644 --- a/src/connections/destinations/catalog/actions-fullsession/index.md +++ b/src/connections/destinations/catalog/actions-fullsession/index.md @@ -2,6 +2,7 @@ title: FullSession (Actions) Destination id: 68c14f4eefb643527597844c hidden: true +beta: true --- {% include content/plan-grid.md name="actions" %} From 37384aae5ccfb0d995a44f56875b8c42182c52b4 Mon Sep 17 00:00:00 2001 From: Charly Monedero Date: Thu, 16 Oct 2025 15:16:21 +0200 Subject: [PATCH 117/140] fix: add missing fix --- src/connections/destinations/catalog/amberflo/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/connections/destinations/catalog/amberflo/index.md b/src/connections/destinations/catalog/amberflo/index.md index e3782bd1a9..a4c0e2b003 100644 --- a/src/connections/destinations/catalog/amberflo/index.md +++ b/src/connections/destinations/catalog/amberflo/index.md @@ -81,7 +81,7 @@ analytics.screen({ ``` Segment sends Screen calls to Amberlfo as a `screen` meter. -```json= +```json curl --request POST \ --url https://app.amberflo.io/ingest \ --header 'Accept: application/json' \ @@ -125,7 +125,7 @@ analytics.identify({ Segment sends Identify calls to Amberflo as a `customer` record. -```json= +```json curl --request PUT \ --url https://app.amberflo.io/customers \ --header 'Accept: application/json' \ @@ -166,7 +166,7 @@ analytics.track({ Segment sends Track calls to Amberflo as a meter ingestion record with `meterApiName=track.event`. -```json= +```json curl --request POST \ --url https://app.amberflo.io/ingest \ --header 'Accept: application/json' \ From f97bba0eb3b046168e2b730fb735d63949068dc1 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 15:20:43 +0100 Subject: [PATCH 118/140] Updated for clarity and style guide consistency Updated text for clarity and consistency, including capitalization and phrasing adjustments. --- .../destinations/catalog/correlated/index.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/connections/destinations/catalog/correlated/index.md b/src/connections/destinations/catalog/correlated/index.md index 9595f15065..8602d739f0 100644 --- a/src/connections/destinations/catalog/correlated/index.md +++ b/src/connections/destinations/catalog/correlated/index.md @@ -5,28 +5,28 @@ id: 60df6d4c038b872f10c54801 [Correlated](https://www.getcorrelated.com/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank"} is the first product-led revenue platform built to help you and your sales teams take action based on how customers are using your product. -This destination is maintained by Correlated. For any issues with the destination, [contact the Correlated Support team](mailto:support@getcorrelated.com). +This destination is maintained by Correlated. For any issues with the destination, [contact the Correlated support team](mailto:support@getcorrelated.com){:target="_blank"}. > success "" -> Set up a free account with Correlated by visiting their [website](https://docs.getcorrelated.com/docs/setting-up-your-account){:target="_blank"}. +> To set up a free account with Correlated, visit their [website](https://docs.getcorrelated.com/docs/setting-up-your-account){:target="_blank"}. -## Getting Started +## Getting started ### Connect with OAuth 1. Log in to the Correlated application. 2. Go to [Correlated integrations](https://app.getcorrelated.com/integrations){:target="_blank"} and select the Segment integration. 3. Click **Connect to Segment** to connect with OAuth. -4. Select the relevant Sources that you want to include (Correlated recommends that you include your website and application) +4. Select the relevant sources that you want to include. Correlated recommends that you include your website and application. ### Connect with an API Key 1. From the Destinations catalog page in the Segment App, click **Add Destination**. 2. Search for "Correlated" in the Destinations Catalog, and select the "Correlated" destination. -3. Choose which Source should send data to the "Correlated" destination. +3. Choose which source should send data to the "Correlated" destination. 4. Go to [Correlated integrations](https://app.getcorrelated.com/integrations){:target="_blank"} and click on the "Segment" integration. 5. Copy the "Segment API key". -6. Enter the "Segment API Key" in the "Correlated" destination settings in Segment. +6. Enter the Segment API key in the "Correlated" destination settings in Segment. -## Supported Methods +## Supported methods Correlated supports the following methods. From 596ebf93d38e4832f5a1c5800fac13761f2980bf Mon Sep 17 00:00:00 2001 From: pwseg <86626706+pwseg@users.noreply.github.com> Date: Thu, 16 Oct 2025 09:58:15 -0500 Subject: [PATCH 119/140] never mind, apparently it's public beta --- .../destinations/catalog/actions-fullsession/index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-fullsession/index.md b/src/connections/destinations/catalog/actions-fullsession/index.md index c9fe5a59d0..084b38fd50 100644 --- a/src/connections/destinations/catalog/actions-fullsession/index.md +++ b/src/connections/destinations/catalog/actions-fullsession/index.md @@ -1,7 +1,6 @@ --- title: FullSession (Actions) Destination id: 68c14f4eefb643527597844c -hidden: true beta: true --- From 9a3f0f7f27702a889c70e1f6e3566abe65649f28 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 16:04:02 +0100 Subject: [PATCH 120/140] style guide clean up Updated the Marketo V2 Destination documentation for consistency and clarity, including title casing, section headings, and detailed steps. --- .../destinations/catalog/marketo-v2/index.md | 188 +++++++++--------- 1 file changed, 97 insertions(+), 91 deletions(-) diff --git a/src/connections/destinations/catalog/marketo-v2/index.md b/src/connections/destinations/catalog/marketo-v2/index.md index 1af657fea3..a0f00ff605 100644 --- a/src/connections/destinations/catalog/marketo-v2/index.md +++ b/src/connections/destinations/catalog/marketo-v2/index.md @@ -1,80 +1,75 @@ --- -title: Marketo V2 Destination +title: Marketo v2 Destination strat: adobe id: 58f8f55a70a3e552b955a444 --- -## Getting Started +## Getting started To start sending data to Marketo, there are two things you must do. **Both of these steps require that you to log in with the Admin Marketo Account.** -### Enter your Marketo Credentials into your Destination settings -We'll need your Munchkin Account ID, Client Secret, and Client ID. - -To get your Munchkin Account ID [login to your Marketo account](https://login.marketo.com/){:target="_blank"}, click Admin in the top right corner, then click Munchkin on the left side bar. +### 1. Enter your Marketo Credentials into your Destination settings +You need to enter your Munchkin Account ID, Client Secret, and Client ID. +To get your Munchkin Account ID, [login to your Marketo account](https://login.marketo.com/){:target="_blank"}, click **Admin**, then **Munchkin** in the side bar. ![A screenshot of a Marketo account.](images/iL42ERv0g5X+.png) - To get your Client Secret and Client ID, you must create a role that has full API access, an API only user, and then create a Service in Marketo. To create a role with full API access: -1. Click **Admin** in the top right corner. -2. Click **Users & Roles** on the left side bar. +1. Click **Admin**. +2. Click **Users & Roles** in the side bar. 3. Click on the **Roles** tab. -4. Click **New Role**. Name your role and check the API Access box to assign the user full API access. Click Create. -![A screenshot of the Create New Role popup in Marketo.](images/cV2x9pHb44g+.png) - +4. Click **New Role**. Name your role and check the API Access box to assign the user full API access. Click **Create**. +![A screenshot of the Create New Role popup in Marketo.](images/cv2x9pHb44g+.png) -Now that you've created an API role, you have to assign that role to an API only user. +Once you've created an API role, you have to assign that role to an API only user. -1. Click the Users tab. -2. Click Invite New User and fill out the necessary information in Step 1. -3. Assign the new role you created to this user in Step 2 and check the API Only box. Click next then Send. +1. Click the **Users** tab. +2. Click **Invite New User** and fill out the necessary information in Step 1. +3. Assign the new role you created to this user in Step 2 and check the API Only box. Click **Next**, then **Send**. ![A screenshot of the Invite New User popup in Marketo.](images/cJkQ9XD6FsE+.png) - Next, create a Service and get Client Secret and Client ID from that Service. -1. Click LaunchPoint on the left side bar. -2. Click New and then New Service from the drop down. -3. Select Custom for the Service from the drop down. -4. Select the new API Only user you invited. This User must be an API Only user **and** be assigned a role that has full API access. +1. Click **LaunchPoint** in the side bar. +2. Click **New > New Service**. +3. Select **Custom for the Service**. +4. Select the new API-Only user you invited. This user must be an API_Only user **and** be assigned a role that has full API access. ![A screenshot of the New Service popup in Marketo.](images/cWwQBeVFto0+.png) -1. Click View Details on the new service that you've created and a small window will display with your Client Secret and Client ID. Copy and paste them into your Destination's Settings. +1. Click **View Details** on the new service that you've created. Your Client Secret and Client ID are displayed in a small window. Copy and paste them into your destination's settings. ![A screenshot of the Marketo Installed Services tab.](images/c3s0qJ-dDSO+.png) +### 2. Create a User ID and an Anonymous ID field in Marketo -### Create a User ID and an Anonymous ID field in Marketo - -1. Click Admin in the top right corner. -2. Click Field Management on the left side bar. -3. Click New Custom Field. -4. Select String as the type. +1. Click **Admin**. +2. Click **Field Management** in the side bar. +3. Click **New Custom Field**. +4. Select **String** as the type. 5. Name the field whatever you'd like. -6. Set the API name to `userId` for the user ID field and then `anonymousId` for the anonymous ID field. **Important:** The API names for the user ID and anonymous ID fields must be `userId` and `anonymousId` exactly. If anything in the API name is different, the destination will not work. +6. Set the API name to `userId` for the user ID field and then `anonymousId` for the anonymous ID field. **Note**: The API names for the user ID and anonymous ID fields must be `userId` and `anonymousId` exactly. If anything in the API name is different, the destination won't work. ![An animation showing someone do the above steps to create User ID and Anonymous ID fields.](images/kzayYEY2JL.gif) ## Identify ### Cloud-mode -When you call [`Identify`](/docs/connections/spec/identify/) in Cloud-mode, Segment uses [Marketo's REST API](http://developers.marketo.com/rest-api/lead-database/leads/#create_and_update){:target="_blank"} to create and update leads server-side. +When you call [Identify](/docs/connections/spec/identify/) in Cloud-mode, Segment uses [Marketo's REST API](http://developers.marketo.com/rest-api/lead-database/leads/#create_and_update){:target="_blank"} to create and update leads server-side. ### Device-mode -When you call [`Identify`](/docs/connections/spec/identify/) in Device-mode, Segment uses [Marketo's Background Form Submission](https://developers.marketo.com/blog/make-a-marketo-form-submission-in-the-background/){:target="_blank"} to create and update leads client-side. +When you call [Identify](/docs/connections/spec/identify/) in Device-mode, Segment uses [Marketo's Background Form Submission](https://developers.marketo.com/blog/make-a-marketo-form-submission-in-the-background/){:target="_blank"} to create and update leads client-side. -There are additional steps you must take to send `.identify()` calls in Device-mode. +There are additional steps you must take to send Identify calls in Device-mode. 1. Create an empty form in Marketo. This form will always be hidden and can remain empty as long as the traits you need downstream are mapped in the **Marketo Custom Fields** Destination setting. -2. Input the associated **Marketo Form ID** and **Marketo Form URL** in your Marketo V2 Destination settings. This information can be found in Form Actions > Embed Code in the Marketo Design Studio: +2. Input the associated **Marketo Form ID** and **Marketo Form URL** in your Marketo v2 Destination settings. This information can be found in **Form Actions > Embed Code** in the Marketo Design Studio: ![A screenshot of the Embed Code popup in Marketo.](images/form-info.png) > info "" -> **Marketo Form ID** and **Marketo Form URL** are **required** fields for the Marketo SDK to initialize on your site. If these fields are left blank, the SDK will not initialize and data will not be sent downstream. +> **Marketo Form ID** and **Marketo Form URL** are **required** fields for the Marketo SDK to initialize on your site. If these fields are left blank, the SDK won't initialize and data won't be sent downstream. ### Traits -Regardless of connection mode, we'll map the following spec'd Segment traits to Marketo's standard fields: +Regardless of connection mode, following spec'd Segment traits are mapped to Marketo's standard fields: | **Segment Traits** | **Marketo Standard Fields** | | --------------------- | --------------------------- | @@ -111,22 +106,22 @@ analytics.identify('1234', { }); ``` -If you'd like any other traits from your `.identify()` call to update a field in Marketo, you must create custom fields in Marketo and map them in the **Marketo Custom Fields** Destination setting. +If you'd like any other traits from your Identify call to update a field in Marketo, you must create custom fields in Marketo and map them in the **Marketo Custom Fields** Destination setting. ![A screenshot of the Marketo Settings page in Segment.](images/c1X7nf6wDIX+.png) -- **Segment Trait**. The name of the trait sent in your `.identify()` call. -- **Marketo Field Name**. The Marketo REST API name for the field. To get the REST API name for your fields in Marketo, click Field Management, then Export Field Names. A spreadsheet will download and the first column is the REST API name for your Marketo fields. **Make sure to copy and paste the REST API name exactly. This is case sensitive.** -- **Marketo Field Type**. When you are in Field Management, click on the field name in the bar on the right and you'll see the field type. +- **Segment trait**: The name of the trait sent in your Identify call. +- **Marketo field name**: The Marketo REST API name for the field. To get the REST API name for your fields in Marketo, click **Field Management**, then **Export Field Names**. A spreadsheet downloads and the first column is the REST API name for your Marketo fields. **Make sure to copy and paste the REST API name exactly. This is case sensitive.** +- **Marketo field type**: When you are in Field Management, click on the field name to see the field type. ![A screenshot of the Marketo Field Management tab.](images/cubJQKkGLfF+.png) -**Note:** Custom `address` traits must go in the top level `traits` object, not in the `address` object. +**Note**: Custom `address` traits must go in the top level `traits` object, not in the `address` object. ## Track -When you call [`Track`](/docs/connections/spec/track/), Segment maps the event to a pre-defined [Marketo Custom Activity](http://docs.marketo.com/display/public/DOCS/Understanding+Custom+Activities){:target="_blank"}. There are two important things to note when sending `.track()` calls to Marketo: +When you call [Track](/docs/connections/spec/track/), Segment maps the event to a pre-defined [Marketo Custom Activity](http://docs.marketo.com/display/public/DOCS/Understanding+Custom+Activities){:target="_blank"}. There are two important things to note when sending Track calls to Marketo: -1. You **must** map them to your Marketo Custom Activities in your Destination Settings. If you do not map a track call to a Custom Activity in your Destination Settings, we will not send the event to Marketo to help limit the amount of API calls made to Marketo. +1. You **must** map them to your Marketo Custom Activities in your Destination Settings. If you don't map a track call to a Custom Activity in your destination settings, the event won't be sent to Marketo to help limit the amount of API calls made to Marketo. 2. You must either: @@ -134,7 +129,7 @@ When you call [`Track`](/docs/connections/spec/track/), Segment maps the event t - Enable [Device-mode](/docs/connections/destinations/catalog/marketo-v2/#supported-sources-and-connection-modes) and enable the [Send Track Events Server Side](/docs/connections/destinations/catalog/marketo-v2/#send-track-events-server-side) setting - Send track events from one of our [server side libraries](/docs/connections/sources/#server) -Here is a sample Ruby `.track()` event: +Here is a sample Ruby Track event: ```js Analytics.track( @@ -147,30 +142,30 @@ Analytics.track( ![A screenshot of the Destination Settings page in Segment for the Marketo v2 Destination.](images/c2l53wGTCVP+.png) -- **Segment Event Name**. Your Segment Event name. -- **Marketo Activity ID**. When you are in [Marketo Custom Activities](http://docs.marketo.com/display/public/DOCS/Understanding+Custom+Activities){:target="_blank"}, click on the Marketo Activity in the right side bar that you'd like to map your Segment Track event to. Copy and paste the ID into your Destination Settings. +- **Segment event name**: Your Segment Event name. +- **Marketo activity ID**: When you are in [Marketo Custom Activities](http://docs.marketo.com/display/public/DOCS/Understanding+Custom+Activities){:target="_blank"}, click on the Marketo Activity in the right side bar that you'd like to map your Segment Track event to. Copy and paste the ID into your Destination Settings. ![A screenshot of the Marketo Custom Activities page.](images/cwZqHwQfs3M+.png) -- **Segment Property Name**. The name of the property in your `.track()` call. This is case sensitive so make sure the name matches exactly how you are passing it in your `.track()` call. -- **Marketo Field Name**. The name of the Marketo Attribute for your Custom Activity. The Attribute names for a given Custom Activity can be found in the Fields tab of Marketo Custom Attributes. Click on the Custom Activity in the right side bar and a list of your Attributes for that Custom Activity will appear. **Make sure to copy and paste the API Name for your field exactly as it appears in Marketo. This is case sensitive.** +- **Segment property name**: The name of the property in your Track call. This is case sensitive so make sure the name matches exactly how you are passing it in your Track call. +- **Marketo field name**: The name of the Marketo attribute for your Custom Activity. The attribute names for a given Custom Activity can be found in the **Fields** tab of **Marketo Custom Attributes**. Click on **Custom Activity** to see a list of your attributes for that Custom Activity. **Make sure to copy and paste the API Name for your field exactly as it appears in Marketo. This is case sensitive.** ![A screenshot of the Fields tab inside of the Marketo Custom Activities page.](images/cNSP-7ryT72+.png) -- **Marketo Field Type**. The type of the Marketo Attribute. The Attribute type can be found in the Fields tab of Marketo Custom Attributes. Click on the Custom Activity in the right side bar and a list of your Attributes for that Custom Activity will appear. +- **Marketo field type**: The type of the Marketo attribute. The attribute type can be found in the **Fields** tab of **Marketo Custom Attributes**. Click on **Custom Activity** to see a list of your attributes for that Custom Activity. ![A screenshot of the Fields tab inside of the Marketo Custom Activities page.](images/cIBsfYeh2B8+.png) -- **Primary Field**. When creating a Custom Activity in Marketo, you have to set a Primary Field. If you are unsure which field was set as the primary field, when you are looking at the list of fields for your Custom Activity in Marketo, there will be a red star next to your Primary Field. +- **Primary field**. When creating a Custom Activity in Marketo, you have to set a Primary Field. If you are unsure which field was set as the primary field, when you are looking at the list of fields for your Custom Activity in Marketo, primary fields are denoted by a red star. ![A screenshot of the Fields tab inside of the Marketo Custom Activities page.](images/cZuvsHeaepX+.png) > info "" -> You can't map fields nested in objects as Marketo Custom Activity property names. You must flatten any objects you may need to access data from either before you send it to Segment, or while using an [Insert Function](/docs/connections/functions/insert-functions/). +> You can't map fields nested in objects as Marketo Custom Activity property names. You must flatten any objects you may need to access data from either before you send it to Segment, or while using an [Insert function](/docs/connections/functions/insert-functions/). ## Page -When you call [`Page`](/docs/connections/spec/page/), Segment uses [Marketo's Munchkin.js `visitWebPage` method](http://developers.marketo.com/javascript-api/lead-tracking/api-reference/#munchkin_visitwebpage){:target="_blank"}. The URL is built from your `.page()` event and properties object into the form Marketo expects, so no need to worry about doing that yourself. +When you call [Page](/docs/connections/spec/page/), Segment uses [Marketo's Munchkin.js `visitWebPage` method](http://developers.marketo.com/javascript-api/lead-tracking/api-reference/#munchkin_visitwebpage){:target="_blank"}. The URL is built from your Page event and properties object into the form Marketo expects, so no need to worry about doing that yourself. -Marketo's `visitWebPage` method requires a URL and a user agent. Any calls that are missing either of these fields will not be sent to Marketo. User agent is automatically collected Client-side but if you are sending `.page()` calls from the server, make sure to set the user agent. +Marketo's `visitWebPage` method requires a URL and a user agent. Any calls that are missing either of these fields aren't sent to Marketo. User agent is automatically collected client-side but if you are sending Page calls from the server, make sure to set the user agent. -Here is a sample Node `.page()` event: +Here is a sample Node Page event: ```js analytics.page({ @@ -190,20 +185,25 @@ Here is a sample Node `.page()` event: ``` -## Tracking Anonymous Activity in Marketo +## Tracking anonymous activity in Marketo -If you would only like to track known users in Marketo, set your Track Anonymous Activity setting to false. There are a couple things to note when this setting is false: +If you'd only like to track known users in Marketo, set your Track Anonymous Activity setting to `false`. There are some things to note when this setting is false: -1. Any call without a User ID will be rejected. -2. No anonymous activity will be sent to Marketo. Even after the user becomes known, none of their previous anonymous activity will be sent to Marketo. +1. Calls without a User ID are rejected. +2. No anonymous activity is sent to Marketo. Even after the user becomes known, none of their previous anonymous activity will be sent to Marketo. -If you'd like to track anonymous activity but don't want to have to parse through or view unknown leads, Marketo lets you create Smart Lists that will filter your leads (i.e. if you'd only like to view leads that have a user ID or an email). To do this, when you are in your Lead Database, click All Leads, then New. From the drop down, click New Smart List. Select the folder you'd like the Smart List to live in. After you've created the Smart List, select what field you'd like to filter by on the right side bar, drag it to the filters and then select what you'd specifically like to filter by for that field. +If you'd like to track anonymous activity but don't want to have to parse through or view unknown leads, Marketo lets you create Smart Lists that filter your leads. For example, you can filter to only view leads that have a user ID or an email. To do this, when you are in your Lead Database: + +1. Click **All Leads**, then **New**. +2. From the drop down, click **New Smart List**. +3. Select the folder you'd like the Smart List to live in. +4. After you've created the Smart List, select what field you'd like to filter by, drag it to the filters and then select what you'd specifically like to filter by for that field. ![An animation showing a Smart List being created.](images/5bxmcClCgU.gif) -## Marketo API Limits +## Marketo API limits -We do our best to limit the amount of API calls that we are making to Marketo but if you are hitting your 50k/day limit, we'd recommend only sending events to Marketo that you need. To prevent an event from being sent to Marketo, you can select destinations by doing the following: +Segment tries to limit the amount of API calls being made to Marketo but if you are hitting the 50 k/day limit, Segment recommends only sending events to Marketo that you need. To prevent an event from being sent to Marketo, you can select destinations by doing the following: ```js analytics.identify({ @@ -212,68 +212,74 @@ We do our best to limit the amount of API calls that we are making to Marketo bu firstName: 'Alex' }, integrations: { - 'Marketo V2': false, + 'Marketo v2': false, 'Google Analytics': true } }) ``` -## Hybrid Device/Cloud-mode -Another option is to use Marketo in [Device-mode](/docs/connections/destinations/catalog/marketo-v2/#supported-sources-and-connection-modes) (assuming you are tracking events from a Website). Marketo does not limit API calls that originate from their Web SDK but it also only supports capturing Identify and Page events. If you would also like to capture Track events, you can choose to have these be routed through our server-side integration. +## Hybrid device or cloud-mode +Another option is to use Marketo in [device-mode](/docs/connections/destinations/catalog/marketo-v2/#supported-sources-and-connection-modes) (assuming you are tracking events from a website). Marketo does not limit API calls that originate from its web SDK, but it only supports capturing Identify and Page events. If you'd also like to capture Track events, you can choose to have these be routed through Segment's server-side integration. -To enable this "Hybrid" mode, select the [Send Track Events Server Side](/docs/connections/destinations/catalog/marketo-v2/#send-track-events-server-side) setting and follow the instructions for mapping [Track](/docs/connections/destinations/catalog/marketo-v2/#track) events defined above. +To enable this "Hybrid" mode, select the **[Send Track Events Server Side](/docs/connections/destinations/catalog/marketo-v2/#send-track-events-server-side)** setting and follow the instructions for mapping [Track](/docs/connections/destinations/catalog/marketo-v2/#track) events. ## Preventing Duplicate Leads -Marketo allows you to upsert leads based on any field. We use email and userId as well as anonymousId if you are tracking anonymous activity. We will first use email since that is the field Marketo recommends is unique for your leads. However, many `.track()` and `.page()` calls don't include an email address so then we will use the `userId` or `anonymousId` passed in your `.track()` and `.page()` calls to associate these events to leads in Marketo. +Marketo allows you to upsert leads based on any field. Segment uses `email` and `userId`, as well as `anonymousId` if you are tracking anonymous activity. `email` is used first since that is the field Marketo recommends is unique for your leads. However, many Track and Page calls don't include an email address. In that case, Segment uses the `userId` or `anonymousId` passed in your Track and Page calls to associate these events to leads in Marketo. You can do one of the following to prevent duplicate leads: +**Recommended: Upload a CSV adding your userId to all your leads in Marketo _before_ enabling the destination**. -1. **Recommended:** Upload a CSV adding your userId to all your leads in Marketo **before** enabling the destination. After you [create the userId field](/docs/connections/destinations/catalog/marketo-v2/#2-you-must-create-a-user-id-and-an-anonymous-id-field-in-marketo) in Marketo, you can upload a list of all your users with an email column and a userId column. Your CSV should look like this: +After you [create the `userId` field](/docs/connections/destinations/catalog/marketo-v2/#2-you-must-create-a-user-id-and-an-anonymous-id-field-in-marketo) in Marketo, you can upload a list of all your users with an email column and a userId column. Your CSV should look like this: | **email** | **userId** | | ----------------- | ---------- | | alex@email.com | ABC1234 | | natasha@email.com | XYZ9876 | -To upload a list to Marketo, when you are in Lead Database, click All Leads. Then click "New", then "Import List" from the drop down. Select your CSV, then click "Next". Make sure "Email Address" and "userId" are the Marketo Fields selected then click "Next". Name your list or select a pre-existing list. Select "None" for Acquisition Program. Then Click "Import". - -2. Manually merge leads in Marketo. Follow [these instructions to merge](http://docs.marketo.com/display/public/DOCS/Find+and+Merge+Duplicate+People){:target="_blank"} any duplicate leads found in Marketo after enabling the destination. -3. Make sure to call identify first. This is already a recommended best practice as [part of our spec](/docs/connections/spec/identify/). -4. Pass an email in your `.track()` and `.page()` calls. +To upload a list to Marketo, when you are in Lead Database: -## Migrating from Marketo to Marketo V2 +1. Click **All Leads**. +2. Then click **New**, then **Import List**. +3. Select your CSV, then click **Next**. Make sure `Email Address` and `userId` are the Marketo Fields selected then click **Next"**. +4. Name your list or select a pre-existing list. Select **None** for Acquisition Program. Then click **Import**. -There are a few necessary steps that have to be taken to migrate from Segment's legacy Marketo v1 destinations, to Marketo V2. +**Manually merge leads in Marketo**. -**Important: Make sure you disable Marketo once you are done getting set up with Marketo V2. If you leave both enabled, there will likely be duplicate data in your Marketo account.** +Follow [Marketo's instructions to merge](http://docs.marketo.com/display/public/DOCS/Find+and+Merge+Duplicate+People){:target="_blank"} any duplicate leads found in Marketo after enabling the destination. +1. Make sure to call Identify first. This is already a recommended best practice as [part of the Segment spec](/docs/connections/spec/identify/). +2. Pass an email in your Track and Page calls. -1. Your Marketo credentials in your Segment Destination settings need to be updated. Our Marketo Destination used Marketo's SOAP API and Marketo V2 uses Marketo's REST API which requires different credentials. Check out the [Getting Started](/docs/connections/destinations/catalog/marketo-v2/#getting-started) guide for what credentials you'll need. -2. Two custom fields must be created in Marketo: userId and anonymousId. Check out [Getting Started](/docs/connections/destinations/catalog/marketo-v2/#2-you-must-create-a-user-id-and-an-anonymous-id-field-in-marketo) for exact details on how to create these custom fields in Marketo. -3. `Track` calls must be mapped in your Destination settings. Our Marketo Destination sent `track` calls as a Munchkin Visit WebPage event in Marketo. In Marketo V2, we'll send your track calls to your Marketo Custom Activities. Detailed instructions [in the Track section of this page](/docs/connections/destinations/catalog/marketo-v2/#track). -4. If there are any custom Lead fields that you'd like sent to Marketo in your `Identify` calls, you must create custom fields in Marketo and add them in your Destination settings. In addition, if you are connecting Marketo V2 in Device-mode, an empty form must be created in Marketo to create and update leads. Detailed instructions [in the Identify section of this page](/docs/connections/destinations/catalog/marketo-v2/#identify). -5. Update anything in Marketo that rely on the way V1 sends `.track()` events to be triggered by your custom activities. For example, our V1 Marketo destination sent track events as a "Visit Web Page" event with `/event/`. So if you a workflow that is triggered by a "Visit Web Page" event where the web page contains `/event/`, you'll have to swap out the "Visit Web Page" event trigger you have with your Custom Attribute Trigger. In the right side bar, click the "Custom" folder under "Triggers" and select the trigger that you set for your custom activity: - ![A screenshot of the Smart List tab in Marketo.](images/cPD4kP65buG+.png) +## Migrating from Marketo to Marketo v2 +There are a few necessary steps that have to be taken to migrate from Segment's legacy Marketo v1 destinations, to Marketo v2. - To figure out what the trigger name for that Custom Activity is, navigate to the admin section of Marketo > Marketo Custom Activities > Click on your activity from the side bar and you'll see the trigger name: +> warning "" +> Make sure you disable Marketo once you set up with Marketo v2. If you leave both enabled, there might be duplicate data in your Marketo account. +1. Your Marketo credentials in your Segment Destination settings need to be updated. The Marketo destination used Marketo's SOAP API and Marketo v2 uses Marketo's REST API which requires different credentials. Check out the [getting started in Marketo v2](/docs/connections/destinations/catalog/marketo-v2/#getting-started) guide for the credentials you need. +2. Two custom fields must be created in Marketo: `userId` and `anonymousId`. Check out [getting started in Marketo v2](/docs/connections/destinations/catalog/marketo-v2/#2-you-must-create-a-user-id-and-an-anonymous-id-field-in-marketo) for exact details on how to create these custom fields in Marketo. +3. Track calls must be mapped in your destination settings. The Marketo Destination sent Track calls as a Munchkin Visit WebPage event in Marketo. In Marketo v2, your track calls are sent to your Marketo Custom Activities. See the instructions [in the Track section](/docs/connections/destinations/catalog/marketo-v2/#track) for more detail. +4. If there are any custom lead fields that you'd like sent to Marketo in your Identify calls, you must create custom fields in Marketo and add them in your destination settings. In addition, if you are connecting Marketo v2 in device-mode, an empty form must be created in Marketo to create and update leads. See the instructions [in the Identify section](/docs/connections/destinations/catalog/marketo-v2/#identify) for more detail. +5. Update anything in Marketo that rely on the way v1 sends Track events to be triggered by your custom activities. For example, the v1 Marketo destination sent track events as a "Visit Web Page" event with `/event/`. So if you have a workflow that is triggered by a "Visit Web Page" event where the web page contains `/event/`, you need to swap out the "Visit Web Page" event trigger with your Custom Attribute Trigger. Click the **Custom** folder under **Triggers** and select the trigger that you set for your custom activity: + ![A screenshot of the Smart List tab in Marketo.](images/cPD4kP65buG+.png) + > To figure out what the trigger name for that Custom Activity is, navigate to the **Admin** section of **Marketo > Marketo Custom Activities**, then click on your activity to see the trigger name: ![A screenshot of the Marketo Custom Activities field.](images/cg6YhDEPWXv+.png) +6. When enabling Marketo v2, because of the way Marketo's API works, there is potential to create duplicate leads, especially when the first enabling the destination. For ways to prevent this, check out the [Preventing Duplicate Leads](https://nation.marketo.com/t5/knowledgebase/working-with-duplicate-leads/ta-p/248189){:target="_blank"}. -6. When enabling Marketo V2, because of the way Marketo's API works, there is potential to create duplicate leads, especially when the first enabling the destination. For ways to prevent this, check out the Preventing Duplicate Leads. +## Send a single source's data to multiple Marketo v2 workspaces -## Send a single source's data to multiple Marketo V2 workspaces +Segment doesn't support multiple instances of Marketo v2 for any source in Segment (for both Device-Mode and Cloud-Mode). If you need a single source's data sent to multiple Marketo v2 workspaces, follow the instructions on configuring a [Repeater destination](/docs/connections/destinations/catalog/repeater/) to route your source's data through the Repeater destination into a new source and new Marketo v2 destination instance. -Segment doesn't support multiple instances of Marketo V2 for any source in Segment (for both Device-Mode and Cloud-Mode). If you need a single source's data sent to multiple Marketo V2 workspaces, follow the instructions on configuring a [Repeater destination](/docs/connections/destinations/catalog/repeater/) to route your source's data through the Repeater destination into a new source and new Marketo V2 destination instance. -To create a Repeater destination, new source, and second Marketo V2 destination: +To create a Repeater destination, new source, and second Marketo v2 destination: 1. Create and connect a new [Repeater destination](https://app.segment.com/goto-my-workspace/destinations/catalog/repeater) to your source and select the intended source. -2. Click **Add destination**, name the destination, and select Fill in settings manually. +2. Click **Add destination**, name the destination, and select **Fill in settings manually**. 3. Create a new source, then navigate to **Settings > API Keys** and copy the **Write Key** value. -- From the Repeater destination's **Settings** page, you'll find **Write Keys** in the **Connection Settings**. This is where your second source's write key from step 4 will go. -4. Navigate back to your Repeater destination and paste in the source's `writeKey` into the write key setting. -5. Add a Marketo V2 destination to your new source with the desired configuration settings. -6. Enable the Repeater destination, new source, new Marketo V2 destination. -7. You'll begin seeing data transmitted from your originating source to the Repeater Destination (Event Delivery), then to the new source (Debugger), and finally to the Marketo V2 destination (Event Delivery). + > From the Repeater destination's **Settings** page, find **Write Keys** in the **Connection Settings**. This is where your second source's write key from step 4 will go. +5. Navigate back to your Repeater destination and paste in the source's `writeKey` into the write key setting. +6. Add a Marketo v2 destination to your new source with the desired configuration settings. +7. Enable the Repeater destination, new source, new Marketo v2 destination. +8. Data is now transmitted from your originating source to the Repeater Destination (Event Delivery), then to the new source (Debugger), and finally to the Marketo v2 destination (Event Delivery). From 0d1426d5605295678c87cc67b732bd11be7aaf65 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 16:25:12 +0100 Subject: [PATCH 121/140] style guide clean up Updated formatting and language for clarity and consistency throughout the Marketo documentation. --- .../destinations/catalog/marketo/index.md | 50 ++++++++++--------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/src/connections/destinations/catalog/marketo/index.md b/src/connections/destinations/catalog/marketo/index.md index 79278c94a8..deda0dc315 100644 --- a/src/connections/destinations/catalog/marketo/index.md +++ b/src/connections/destinations/catalog/marketo/index.md @@ -3,25 +3,27 @@ title: Marketo Destination strat: adobe --- -## Getting Started +## Getting started When you enable Marketo in the Segment web app, your changes appear in the Segment CDN in about 45 minutes, and then Analytics.js starts asynchronously loading Marketo's Munchkin onto your page. This means you should remove Marketo's snippet from your page. -+ Marketo starts automatically recording visitor information. -### Important Note: -Our client-side and server-side destinations each require **different** credentials for authentication. Read through the information below on `identify` calls for further information. +> info "" +> Marketo starts automatically recording visitor information. + +> warning "" +> Client-side and server-side destinations each require **different** credentials for authentication. Read through [Identify](#identify) for further information. ## Page and Track -For [`Page`](/docs/connections/spec/page/) or [`Track`](/docs/connections/spec/track/) methods, Segment uses [Marketo's Munchkin.js `visitWebPage` method](http://developers.marketo.com/javascript-api/lead-tracking/api-reference/#munchkin_visitwebpage){:target="_blank"}. The URL is built from the Segment event and properties object into the form Marketo expects, so no need to worry about doing that yourself. +For [Page](/docs/connections/spec/page/) or [Track](/docs/connections/spec/track/) methods, Segment uses [Marketo's Munchkin.js `visitWebPage` method](http://developers.marketo.com/javascript-api/lead-tracking/api-reference/#munchkin_visitwebpage){:target="_blank"}. The URL is built from the Segment event and properties object into the form Marketo expects, so no need to worry about doing that yourself. -To associate Track events to a particular Lead in Marketo from a server side library, you will need to pass the Munchkin.js cookie with your track calls. +To associate Track events to a particular Lead in Marketo from a server side library, you need to pass the Munchkin.js cookie with your track calls. ## Identify ### Client-side -When you call [`identify`](/docs/connections/spec/identify/) on Analytics.js, we call Marketo's [`associateLead`](http://developers.marketo.com/documentation/websites/lead-tracking-munchkin-js/){:target="_blank"}. Marketo **requires an email address** for this function, so if the `traits` object you include in [`identify`](/docs/connections/spec/identify/) doesn't have an email, the request won't go through. Marketo's client-side library, [Munchkin](http://developers.marketo.com/documentation/websites/lead-tracking-munchkin-js/){:target="_blank"}, **requires your API private key** for authentication along with your email, so make sure that you have provided it in your Segment settings. We will not change the casing of traits on client-side identify calls. +When you call [Identify](/docs/connections/spec/identify/) on Analytics.js, Segment calls Marketo's [`associateLead`](http://developers.marketo.com/documentation/websites/lead-tracking-munchkin-js/){:target="_blank"}. Marketo **requires an email address** for this function, so if the `traits` object you include in [Identify](/docs/connections/spec/identify/) doesn't have an email, the request won't go through. Marketo's client-side library, [Munchkin](http://developers.marketo.com/documentation/websites/lead-tracking-munchkin-js/){:target="_blank"}, **requires your API private key** for authentication along with your email, so make sure that you have provided it in your Segment settings. Segment doesn't change the casing of traits on client-side identify calls. ```javascript analytics.identify('1234', { @@ -32,21 +34,21 @@ analytics.identify('1234', { }); ``` -In order to properly sign the `associateLead` request while keeping your account and data secure, we make a request to our API that calculates the appropriate SHA1 security hash for the user you're identifying. We use this hash to sign the `associateLead` request to Marketo. +In order to properly sign the `associateLead` request while keeping your account and data secure, Segment makes a request to our API that calculates the appropriate SHA1 security hash for the user you're identifying. This hash is used to sign the `associateLead` request to Marketo. -Note that we will automatically send `userId` as a trait. Normally, the `userId` was sent as an `id` inside the traits but Marketo silently ignores that field as they use it for their own purposes. So if you create a custom field inside Marketo for `userId`, your leads will automatically have that field populated. +Note that Segment automatically sends `userId` as a trait. Normally, the `userId` was sent as an `id` inside the traits but Marketo silently ignores that field as they use it for their own purposes. So if you create a custom field inside Marketo for `userId`, your leads automatically have that field populated. ### Server Side -When you can [`identify`](/docs/connections/spec/identify/) with a `traits` object on any of the server-side languages, we make a call to Marketo's `syncLead` SOAP API action. This call either creates or a updates `traits` on a lead based on the email address either in `userId` or `traits.email`. +When you call [Identify](/docs/connections/spec/identify/) with a `traits` object on any of the server-side languages, Segment makes a call to Marketo's `syncLead` SOAP API action. This call either creates or a updates `traits` on a lead based on the email address either in `userId` or `traits.email`. -We will attempt to PascalCase server-side traits. So if you send `secondFavoriteColor` as a trait, we will convert that to `SecondFavoriteColor`, so you should set the trait **API name** in Marketo to `SecondFavoriteColor`. If you send the trait as `second_favorite_color`, we will convert that to `Second_favorite_color`, so you should set the API name to be `Second_favorite_color` (this is less than ideal; however, we plan to update this behavior in v2 of our Marketo destination, so stay tuned!). +Segment attempts to PascalCase server-side traits. So if you send `secondFavoriteColor` as a trait it's converted to `SecondFavoriteColor`, so you should set the trait **API name** in Marketo to `SecondFavoriteColor`. If you send the trait as `second_favorite_color` it's converted to `Second_favorite_color`, so you should set the API name to be `Second_favorite_color`. -Note that leads can only be synced every 30 seconds using the SOAP API. If you exceed the allowed request amount, you will see `Exceeded lock attempts` errors in your debugger. +Note that leads can only be synced every 30 seconds using the SOAP API. If you exceed the allowed request amount, the `Exceeded lock attempts` errors appear in your debugger. -Our server side destination with Marketo **requires your encryption key** along with your email for authentication, make sure you have provided it in your Segment settings. +The server-side destination with Marketo **requires your encryption key** along with your email for authentication, make sure you have provided it in your Segment settings. -Remember to provide an email with every call as either the `userId` or as a trait labeled "email". Here's a java example of that: +Remember to provide an email with every call as either the `userId` or as a trait labeled "email". Here's a Java example of that: ```java Analytics.identify("hj2kf92ds212", @@ -57,13 +59,13 @@ Analytics.identify("hj2kf92ds212", Marketo uses cookies to keep track of visitors and their sessions while visiting your website. The cookie data is stored in the visitor's browser, and is sent along to Marketo every time a new event occurs. This allows them to show a single unique lead between multiple page reloads. -Your servers also have access to this cookie, so they can re-use it when you send server-side events to Segment. If you don't use the existing cookie Segment will use either the userId or sessionId to make the server-side request to Marketo. When we create a new cookie, the client-side and server-side events from the same user will look like two distinct leads when viewed in Marketo. The cookieId takes precedence over all other keys, so if you send both the cookieId and the userId - the cookieId will match first and the userId for that lead will be updated. +Your servers also have access to this cookie, so they can re-use it when you send server-side events to Segment. If you don't use the existing cookie, Segment uses either the `userId` or `sessionId` to make the server-side request to Marketo. When a new cookie is created, the client-side and server-side events from the same user look like two distinct leads when viewed in Marketo. The `cookieId` takes precedence over all other keys, so if you send both the `cookieId` and the `userId` - the `cookieId` matches first and the `userId` for that lead is updated. To associate leads in server-side Marketo, there are currently three options with Segment: 1. Pass your Marketo cookies to Segment. -2. Use the userId or sessionId when associating leads in Marketo. -3. Ignore the additional visitors generated by passing different types of ids for each call (i.e. cookieId once, then the userId for the same user the second time). +2. Use the `userId` or `sessionId` when associating leads in Marketo. +3. Ignore the additional visitors generated by passing different types of IDs for each call - `cookieId` once, then the `userId` for the same user the second time. If you choose to pass the cookie with your calls, it will look like this: @@ -71,7 +73,7 @@ If you choose to pass the cookie with your calls, it will look like this: id:561-HYG-937&token:_mch-marketo.com-1374552656411-90718 ``` -If you want our server-side destination to use your user's Marketo Cookie, pass it to us in the `context['Marketo'].marketoCookie` object. +If you want our server-side destination to use your user's Marketo Cookie, pass it to Segment in the `context['Marketo'].marketoCookie` object. Here's a Ruby example: @@ -91,9 +93,9 @@ Analytics.identify( ) ``` -**Note:** If you choose to use the cookie approach, make sure to send the cookie along in your `track` calls as well, as Marketo will need it on subsequent calls to tie activity to that user. +**Note:** If you choose to use the cookie approach, make sure to send the cookie along in your Track calls as well. Marketo needs it on subsequent calls to tie activity to that user. -A `track` call might look like this: +A Track call might look like this: ```ruby Analytics.track( @@ -112,10 +114,10 @@ Analytics.track( ) ``` -For more information about syncronising your Marketo leads, [visit their documentation](http://developers.marketo.com/documentation/soap/synclead/){:target="_blank"}. +For more information about syncronising your Marketo leads, [visit the Marketo documentation](http://developers.marketo.com/documentation/soap/synclead/){:target="_blank"}. -### Custom Fields +### Custom fields -To create a custom field in Marketo, follow Marketo's [documentation for creating a custom field](http://docs.marketo.com/display/public/DOCS/Create+a+Custom+Field+in+Marketo){:target="_blank"}. Be sure that the **API Name** is `PascalCase`'d, as our destination will account for Marketo's Pascal trait standards. +To create a custom field in Marketo, follow Marketo's [documentation for creating a custom field](http://docs.marketo.com/display/public/DOCS/Create+a+Custom+Field+in+Marketo){:target="_blank"}. Be sure that the **API Name** is `PascalCase`'d, as the destination accounts for Marketo's Pascal trait standards. -For instance, if you configure `SomeTrait` in the **API Name** field (the **Name** value does not matter), you can pass in this field as `someTrait`, and we will convert this to `SomeTrait` when sending into Marketo. Note that if you configured **API Name** to be `someTrait`, and passed it in as `someTrait` in your call, this would fail to send. +For instance, if you configure `SomeTrait` in the **API Name** field (the **Name** value does not matter), you can pass in this field as `someTrait`. Segment converts this to `SomeTrait` when sending into Marketo. Note that if you configured **API Name** to be `someTrait` and passed it in as `someTrait` in your call, this would fail to send. From 58b498a01b50b9d14bc3f111854d178b7d97b322 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 16:31:08 +0100 Subject: [PATCH 122/140] style guide clean up --- .../destinations/catalog/matomo/index.md | 42 +++++++++---------- 1 file changed, 20 insertions(+), 22 deletions(-) diff --git a/src/connections/destinations/catalog/matomo/index.md b/src/connections/destinations/catalog/matomo/index.md index 087e4a9f73..9435ea6470 100644 --- a/src/connections/destinations/catalog/matomo/index.md +++ b/src/connections/destinations/catalog/matomo/index.md @@ -7,17 +7,15 @@ id: 54521fda25e721e32a72eee7 [Matomo](https://matomo.org/){:target="_blank"}, formerly Piwik, is the leading open source web analytics platform that gives you valuable insights into your website's visitors, your marketing campaigns and much more, so you can optimize your strategy and online experience of your visitors. Segment’s Matomo destination code is open-source and can be viewed on GitHub: -- [Javascript](https://github.com/segmentio/analytics.js-integrations/blob/master/integrations/piwik/lib/index.js){:target="_blank"} - -## Getting Started - +- [Javascript](https://github.com/segmentio/analytics.js-integrations/blob/master/integrations/piwik/lib/index.js){:target="_blank"}. +## Getting started 1. From the Segment web app, click **Catalog**. -2. Search for "Matomo" in the Catalog, select it, and choose which of your sources to connect the destination to. Note the source must be sending events using our JavaScript library Analytics.js. +2. Search for "Matomo" in the Catalog, select it, and choose which of your sources to connect the destination to. Note the source must be sending events using the Segment JavaScript library Analytics.js. 3. In the destination settings, enter your Site ID. You can find your Site ID in your Matomo snippet. -4. In the destination settings, enter your Server URL. You can find your Server URL in your snippet, we will append /matomo.php to the URL automatically. - 5. When you enable Matomo in your Segment settings, Segment's CDN is updated within 45 minutes. Once that happens, Segment asynchronously loads `matomo.js` on your page whenever it is loaded. This means you should remove Matomo's snippet from your page. +4. In the destination settings, enter your Server URL. You can find your Server URL in your snippet. Segment automatically appends /matomo.php to the URL. +5. When you enable Matomo in your Segment settings, Segment's CDN is updated within 45 minutes. Once that happens, Segment asynchronously loads `matomo.js` on your page whenever it is loaded. This means you should remove Matomo's snippet from your page. ## Page If you're not familiar with the Segment Specs, take a look to understand what the [Page method](/docs/connections/spec/page/) does. An example call would look like: @@ -25,8 +23,7 @@ If you're not familiar with the Segment Specs, take a look to understand what th ```js analytics.page(); ``` - -Our Page method triggers a call to Matomo's `trackPageView` method. +The Page method triggers a call to Matomo's `trackPageView` method. ## Identify If you're not familiar with the Segment Specs, take a look to understand what the [Identify method](/docs/connections/spec/identify/) does. An example call would look like: @@ -34,7 +31,7 @@ If you're not familiar with the Segment Specs, take a look to understand what th ```js analytics.identify('97980cfea0068'); ``` -Our Identify method triggers a call to Matomo's `setUserId` method and will send the `userId` to Matomo. +The Identify method triggers a call to Matomo's `setUserId` method and will send the `userId` to Matomo. ## Track If you're not familiar with the Segment Specs, take a look to understand what the [Track method](/docs/connections/spec/track/) does. An example call would look like: @@ -43,9 +40,9 @@ If you're not familiar with the Segment Specs, take a look to understand what th analytics.track('Logged In'); ``` -We'll record a Matomo event whenever you make a `track` call. +Segement records a Matomo event whenever you make a `track` call. -For the example above, these event attributes are sent to Matomo: +In the example, these event attributes are sent to Matomo: @@ -58,7 +55,7 @@ For the example above, these event attributes are sent to Matomo:
-Find below another Track example, this time with all the available Matomo event parameters: +See the following Track example, this time with all the available Matomo event parameters: ```js analytics.track('Created Account', { @@ -68,7 +65,7 @@ analytics.track('Created Account', { }) ``` -That call will create a Matomo Event with these attributes: +That call creates a Matomo Event with these attributes: @@ -89,17 +86,18 @@ That call will create a Matomo Event with these attributes:
-For **Event Value** you can name the event property `value` or `revenue`. We'll look for `value` first, then fall back to `revenue`. +For **Event Value**, you can name the event property `value` or `revenue`. Segment looks for `value` first, then fall back to `revenue`. -## Best Practices +## Best practices -Matomo allows you to set [custom variables](http://matomo.org/docs/custom-variables/){:target="_blank"} with your pageviews and events. With Segment, you can set page-scoped custom variables with any `track` call you make with analytics.js. +Matomo lets you set [custom variables](http://matomo.org/docs/custom-variables/){:target="_blank"} with your pageviews and events. With Segment, you can set page-scoped custom variables with any Track call you make with analytics.js. -Since these custom variables must be mapped to an index you define, which can change from call to call, the only way we can support these custom variables with full flexibility is to allow you to pass your map in the `context.Matomo.customVars` dictionary of each call. +Since these custom variables must be mapped to an index you define, which can change from call to call, the only way that Segment can support these custom variables with full flexibility is to allow you to pass your map in the `context.Matomo.customVars` dictionary of each call. -To take advantage of this feature, your `track` calls should look like this: +To take advantage of this feature, your Track calls should look like this: -> **Note** The destination's name is still "piwik" in the JSON for these calls. +> info "" +> The destination's name is still "piwik" in the JSON for these calls. ```js analytics.track('event', { @@ -117,6 +115,6 @@ analytics.track('event', { ``` ### Goals -If you want to flag specific events as Matomo Goals you can do so by mapping those events in your Segment Source Destinations page under Matomo Settings. +If you want to flag specific events as Matomo Goals, you can do so by mapping those events in your Segment Source Destinations page under Matomo Settings. -Fill in the event on the left and the Goal ID from Matomo on the right. Then every time the event happens we'll fire Matomo's `trackGoal` method. +Fill in the event on the left and the Goal ID from Matomo on the right. Then every time the event happens Segment fires Matomo's `trackGoal` method. From 5ed21d8ec0a4566c8990959266d7b5d2f6770fa4 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 17:19:01 +0100 Subject: [PATCH 123/140] style guide clean up + alt text fix for images Corrected capitalization, punctuation, and phrasing for clarity and consistency throughout the document. Updated sections on integration steps, user attributes, and SDK features. --- .../destinations/catalog/moengage/index.md | 278 ++++++++---------- 1 file changed, 130 insertions(+), 148 deletions(-) diff --git a/src/connections/destinations/catalog/moengage/index.md b/src/connections/destinations/catalog/moengage/index.md index f82f4026b7..c4145d435a 100644 --- a/src/connections/destinations/catalog/moengage/index.md +++ b/src/connections/destinations/catalog/moengage/index.md @@ -5,12 +5,11 @@ id: 55b280290a20f4e22f0fb3d6 hide-personas-partial: true --- -[MoEngage](https://www.moengage.com/){:target="_blank"} is an Intelligent Customer Engagement Platform. MoEngage allows brands to personalize every customer interaction and drive better engagement, retention, loyalty and lifetime value. +[MoEngage](https://www.moengage.com/){:target="_blank"} is an intelligent customer engagement platform. MoEngage allows brands to personalize every customer interaction and drive better engagement, retention, loyalty and lifetime value. -The MoEngage and Segment integration allows you to send -the users you have tracked on Segment, along with their route data, to MoEngage for further targeting and campaigning. This Destination enables you to: +The MoEngage and Segment integration allows you to send the users you have tracked on Segment, along with their route data, to MoEngage for further targeting and campaigning. This destination enables you to: -- **Import data from Segment to MoEngage**: Moengage offers a side-by-side (device mode) SDK integration for your Android, iOS, and web applications and a server-to-server integration for your backend services. +- **Import data from Segment to MoEngage**: Moengage offers a side-by-side (device-mode) SDK integration for your Android, iOS, and web applications and a server-to-server integration for your backend services. - **Sync [Twilio Engage](https://segment.com/product/twilio-engage){:target="_blank"} (cohorts)**: Send Segment Cohorts to MoEngage for use in MoEngage Segments and campaigns. The MoEngage Destination source code is open-sourced and freely available on GitHub for anyone to view: @@ -21,33 +20,31 @@ Connection Mode | Maintained by | GitHub Link Android | MoEngage | [moengage-segment-integration](https://github.com/moengage/moengage-segment-integration){:target="_blank"} Web | Segment | [analytics.js-integrations](https://github.com/segmentio/analytics.js-integrations/tree/master/integrations/moengage){:target="_blank"} -## Getting Started +## Getting started -Once you add the Segment-MoEngage library to your app, you can enable MoEngage from the Segment App. These new settings can take up to an hour to propagate to your existing users. For new users, it'll be instantaneous! +Once you add the Segment-MoEngage library to your app, you can enable MoEngage from the Segment App. These new settings can take up to an hour to propagate to your existing users. For new users, the settings are propagated instantly. The Segment-MoEngage Integration is a bundled integration, meaning it requires that you add a client-side integration to your app. -## Setup MoEngage in your Segment Workspace +## Setup MoEngage in your Segment workspace To setup MoEngage do the following : - 1. First get your key(AppID) from the MoEngage dashboard. Navigate to `Dashboard --> Settings --> App --> General`. - 2. Go to your **Segment workspace**, go to **Destinations** and select **MoEngage**. + 1. First get your key(AppID) from the MoEngage dashboard. Navigate to **Dashboard > Settings > App > General**. + 2. In your Segment workspace, go to **Destinations** and select **MoEngage**. 3. Enable the MoEngage Destination. - 4. Go to the MoEngage Settings and enter the MoEngage AppID, obtained in **Step1**. + 4. Go to the MoEngage Settings and enter the MoEngage AppID, obtained in Step 1. 5. Save the changes. - 6. Make sure you set the **Connection Mode** to `Device Mode`. MoEngage requires this setting to use - of features like push notifications and any in-app features of the MoEngage SDK. + 6. Make sure you set the **Connection Mode** to `Device Mode`. MoEngage requires this setting to use of features like push notifications and any in-app features of the MoEngage SDK. -These new settings will take up to an hour to propagate to your existing users. For new -users it'll be instantaneous! Segment-MoEngage Integration is a bundled integration, requires client side integration. +Segment-MoEngage Integration is a bundled integration and requires client-side integration. -![segment_settings.png](images/segment_settings.png) + ![Screenshot of MoEngage Settings page](images/segment_settings.png) ## Identify Use [Identify](/docs/connections/sources/catalog/libraries/mobile/android/#identify) to track user-specific attributes. This is the same as tracking [user attributes](https://help.moengage.com/hc/en-us/articles/360044285511-User-Profile){:target="_blank"} on MoEngage. MoEngage supports traits supported by Segment as well as custom traits. If you set `traits.id`, MoEngage sets that as the Unique ID for that user. > info "" -> MoEngage supports anonymous identifiers in Device-mode only. If you use the MoEngage destination in Cloud-mode, use a known user identifier. +> MoEngage supports anonymous identifiers in device-mode only. If you use the MoEngage destination in cloud-mode, use a known user identifier. The Identify method follows the format below: @@ -59,7 +56,7 @@ analytics.identify('12090000-00001992', { ``` ## Track -Use [track](/docs/connections/sources/catalog/libraries/mobile/android/#track) to track events and user behavior in your app. +Use [Track](/docs/connections/sources/catalog/libraries/mobile/android/#track) to track events and user behavior in your app. ```javascript analytics.track('Article Completed', { @@ -68,30 +65,30 @@ analytics.track('Article Completed', { }); ``` -This will send the event to MoEngage with the associated properties. Tracking events is essential and will help you create segments for engaging users. +This sends the event to MoEngage with the associated properties. Tracking events is essential and helps you create segments for engaging users. ## Reset -If your app or website supports the ability for a user to logout and login with a new identity, then you'll need to call [reset](/docs/sources/website/analytics.js/#reset-logout) method in `analytics.js`. +If your app or website supports the ability for a user to logout and login with a new identity, then you need to call the [Reset](/docs/sources/website/analytics.js/#reset-logout) method in `analytics.js`. ```javascript analytics.reset(); ``` ## iOS - To get started with MoEngage on iOS, first integrate your app with the [MoEngage-Segment-Swift](https://github.com/moengage/MoEngage-Segment-Swift){:target="_blank"} library. You can integrate MoEngage and Segment with Swift Package Manager. > info "" -> **Note:** This document covers the integration with [analytics-swift](https://github.com/segmentio/analytics-swift){:target="_blank"}, if you have integrated with [analytics-ios](https://github.com/segmentio/analytics-ios){:target="_blank"} refer [this documentation](https://partners.moengage.com/hc/en-us/articles/4409143473172-iOS-device-mode-){:target="_blank"} for details on how to integrate. +> This document covers the integration with [analytics-swift](https://github.com/segmentio/analytics-swift){:target="_blank"}. If you've integrated with [analytics-ios](https://github.com/segmentio/analytics-ios){:target="_blank"} refer [MoEngage's documentation](https://partners.moengage.com/hc/en-us/articles/4409143473172-iOS-device-mode-){:target="_blank"} for details on how to integrate. - To install with SPM use the [MoEngage-Segment-Swift](https://github.com/moengage/MoEngage-Segment-Swift.git){:target="_blank"} library and set the branch as master or version as 1.0.0 and above. +To install with SPM use the [MoEngage-Segment-Swift](https://github.com/moengage/MoEngage-Segment-Swift.git){:target="_blank"} library and set the branch as master or version as 1.0.0 and above. ### Configure the Segment SDK: -Now head to the App Delegate file, and setup the Segment SDK by +Head to the App Delegate file, and setup the Segment SDK by: + 1. Importing `Segment`, `Segment_MoEngage` and `MoEngageSDK`. 2. Initialize `MoEngageSDKConfig` object and call `initializeDefaultInstance` method of `MoEngageInitializer`. -3. Initialize `MoEngageDestination` as shown below: +3. Initialize `MoEngageDestination`: Under your Analytics-Swift library setup, add the MoEngage plugin using the `analytics.add(plugin: ...)` method. The MoEngage dashboard now tracks all of your events. @@ -116,43 +113,42 @@ analytics.add(plugin: MoEngageDestination()) } ``` -### Tracking User Attribute +### Tracking user attribute -[User attributes](https://developers.moengage.com/hc/en-us/articles/4403905883796-Tracking-user-attributes){:target="_blank"} are specific traits of a user, like email, username, mobile, gender etc. **identify** lets you tie a user to their actions and record traits about them. It includes a unique User ID and any optional traits you know about them. +[User attributes](https://developers.moengage.com/hc/en-us/articles/4403905883796-Tracking-user-attributes){:target="_blank"} are specific traits of a user, like email, username, mobile, gender, and more. Identify lets you tie a user to their actions and record traits about them. It includes a unique User ID and any optional traits you know about them. ```swift Analytics.main.identify("a user's id", traits: @["email":"a user's email address"]) ``` -Read more about [identify calls](/docs/connections/sources/catalog/libraries/mobile/ios/#identify). +Read more about [Identify calls](/docs/connections/sources/catalog/libraries/mobile/ios/#identify) for further detail. -### Tracking Events +### Tracking events -Segment uses event tracking to track user behavior in an app. `track` calls let you record the actions your users perform. Every action triggers an "event", which can also have associated attributes. +Segment uses event tracking to track user behavior in an app. Track calls let you record the actions your users perform. Every action triggers an "event", which can also have associated attributes. ```swift Analytics.main.track("Item Purchased", properties: @["item":"Sword of Heracles"]) ``` -Read more about [track calls](/docs/connections/sources/catalog/libraries/mobile/ios/#track). - +Read more about [Track calls](/docs/connections/sources/catalog/libraries/mobile/ios/#track) for further detail. -### Reset Users +### Reset users -The `reset` method clears the SDK's internal stores for the current user. This is useful for apps where users can log in and out with different identities over time. +The Reset method clears the SDK's internal stores for the current user. This is useful for apps where users can log in and out with different identities over time. ```swift Analytics.main.reset() ``` -Read more about the [reset method](/docs/connections/sources/catalog/libraries/mobile/ios/#reset). +Read more about the [Reset method](/docs/connections/sources/catalog/libraries/mobile/ios/#reset) for further detail. -### Install / Update Differentiation +### Install or update differentiation Since your app might already be on the App Store, you must specify whether your app update would be an `UPDATE` or an `INSTALL`. -To differentiate between those, use one of the method below: +To differentiate between those, use one of the following methods: ```swift //For new Install call following @@ -162,20 +158,20 @@ To differentiate between those, use one of the method below: MoEngageSDKAnalytics.sharedInstance.appStatus(.update) ``` -Read more on [install/update differentiation](https://developers.moengage.com/hc/en-us/articles/4403910297620){:target="_blank"}. +Read more on [Install/Update differentiation](https://developers.moengage.com/hc/en-us/articles/4403910297620){:target="_blank"} on MoEngage website. ### Set the data center -By default, the data center setting in the SDK is set to `data_center_01`. Follow the steps in the [MoEngage - Data Center](https://developers.moengage.com/hc/en-us/articles/4403910162452-Data-Center){:target="_blank"} to update the data center value. If not set correctly, several features of the MoEngage SDK will not function. +By default, the data center setting in the SDK is set to `data_center_01`. Follow the steps in the [MoEngage - Data Center](https://developers.moengage.com/hc/en-us/articles/4403910162452-Data-Center){:target="_blank"} to update the data center value. If not set correctly, several features of the MoEngage SDK won't function. -## MoEngage iOS SDK Features +## MoEngage iOS SDK features Along with tracking your user's activities, you can use the MoEngage iOS SDK for more effective user engagement: -### Push Notifications: -Push Notifications are a great way to keep your users engaged and informed about your app. You have following options while implementing push notifications in your app: +### Push notifications: +Push notifications are a useful way to keep your users engaged and informed about your app. You have following options while implementing push notifications in your app: -**Segment Push Implementation:** +**Segment push implementation:** 1. In your application's application:didRegisterForRemoteNotificationsWithDeviceToken: method, add the following: ```swift @@ -197,24 +193,21 @@ Push Notifications are a great way to keep your users engaged and informed about Analytics.main.handleAction(identifier: identifier, userInfo: userInfo) ``` -**MoEngage Push Implementation:** +**MoEngage push implementation:** For information about the MoEngage push implementation, see [**Push Notifications**](https://developers.moengage.com/hc/en-us/articles/4403943988756){:target="_blank"} in the MoEngage documentation. ### In-app messaging -In-App Messages are custom views which you can send to a set of users to show custom messages, give new offers, or direct to a specific page. For more information about In-app messaging, see [MoEngage - In-App NATIV](https://developers.moengage.com/hc/en-us/articles/4404155127828-In-App-Nativ){:target="_blank"}. - +In-app messages are custom views which you can send to a set of users to show custom messages, give new offers, or direct to a specific page. For more information about in-app messaging, see [MoEngage - In-App NATIV](https://developers.moengage.com/hc/en-us/articles/4404155127828-In-App-Nativ){:target="_blank"}. ### Cards Create targeted or automated App Inbox/NewsFeed messages that can be grouped into various categories, and target your users with different updates or offers that can stay in the Inbox/Feed over a designated period of time. For more information about cards, see [MoEngage - Cards](https://developers.moengage.com/hc/en-us/articles/4404058438676-Cards-in-iOS){:target="_blank"}. - ### Compliance -To make the App compliant with policies (such as GDPR) while using MoEngage's SDK, follow the instructions in this [doc](https://developers.moengage.com/hc/en-us/articles/4403905438228-SDK-initialisation){:target="_blank"}. - -### Segment Docs -For more info on using **Segment for iOS** refer to [**Developer Docs**](/docs/connections/sources/catalog/libraries/mobile/ios/) provided by Segment. +To make the app compliant with policies (such as GDPR) while using MoEngage's SDK, follow the instructions in [MoEngage's documentation](https://developers.moengage.com/hc/en-us/articles/4403905438228-SDK-initialisation){:target="_blank"}. +### Segment for iOS +For more info on using Segment for iOS, refer to the [Developer docs](/docs/connections/sources/catalog/libraries/mobile/ios/) provided by Segment. ## Android @@ -222,14 +215,14 @@ To use MoEngage in an Android app, you must perform the following steps to set u ![MavenBadge](https://maven-badges.herokuapp.com/maven-central/com.moengage/moengage-segment-kotlin-destination/badge.svg) -To enable the full functionality of MoEngage (like Push Notifications, InApp Messaging), complete the following steps in your Android app. +To enable the full functionality of MoEngage (like push notifications, in-app messaging), complete the following steps in your Android app. > info "" -> **Note:** This document covers the integration with [analytics-kotlin](https://github.com/segmentio/analytics-kotlin){:target="_blank"}, if you have integrated with [analytics-android](https://github.com/segmentio/analytics-android){:target="_blank"} refer [this documentation](https://partners.moengage.com/hc/en-us/articles/4409143473172-iOS-device-mode-){:target="_blank"} for details on how to integrate. +> This document covers the integration with [analytics-kotlin](https://github.com/segmentio/analytics-kotlin){:target="_blank"}. If you have integrated with [analytics-android](https://github.com/segmentio/analytics-android){:target="_blank"} refer [MoEngage's documentation](https://partners.moengage.com/hc/en-us/articles/4409143473172-iOS-device-mode-){:target="_blank"} for details on how to integrate. -### Adding the MoEngage Dependency +### Adding the MoEngage dependency -Along with the Segment dependency, add the below dependency in your `build.gradle` file. +Along with the Segment dependency, add the following dependency in your `build.gradle` file. ```groovy implementation("com.moengage:moengage-segment-kotlin-destination:$sdkVersion") { @@ -238,20 +231,18 @@ implementation("com.moengage:moengage-segment-kotlin-destination:$sdkVersion") { ``` with `$sdkVersion` replaced by the latest version of the MoEngage SDK. -The MoEngage SDK depends on the below Jetpack libraries provided by Google for its functioning, make you add them if not - done already. +The MoEngage SDK depends on the following Jetpack libraries provided by Google for its functioning, make sure you add them if not done already. ```groovy implementation("androidx.core:core:1.6.0") implementation("androidx.appcompat:appcompat:1.3.1") implementation("androidx.lifecycle:lifecycle-process:2.4.0") ``` -Refer to the [SDK Configuration](https://developers.moengage.com/hc/en-us/articles/4401984733972-Android-SDK-Configuration){:target="_blank"} documentation to know more about the build config and other libraries used by the SDK. +Refer to the [SDK Configuration](https://developers.moengage.com/hc/en-us/articles/4401984733972-Android-SDK-Configuration){:target="_blank"} documentation to learn more about the build config and other libraries used by the SDK. ### Register MoEngage with Segment SDK -After adding the dependency, you must register the integration with Segment SDK. To do this, import the MoEngage - integration: +After adding the dependency, you must register the integration with Segment SDK. To do this, import the MoEngage integration: ```kotlin import com.segment.analytics.kotlin.destinations.moengage.MoEngageDestination @@ -264,37 +255,36 @@ Analytics("", context) .add(MoEngageDestination(application)) ``` - ### Initialize the MoEngage SDK -Copy the APP ID from the Settings Page `Dashboard --> Settings --> App --> General` and initialize the MoEngage SDK in the onCreate method of the `Application` class +Copy the APP ID from the Settings page **Dashboard > Settings > App > General** and initialize the MoEngage SDK in the onCreate method of the `Application` class > info "" -> **Note:** MoEngage recommend that you initialize the SDK on the main thread inside `onCreate()` and not create a worker thread and initialize the SDK on that thread. +> MoEngage recommends that you initialize the SDK on the main thread inside `onCreate()` and not create a worker thread and initialize the SDK on that thread. ```kotlin -// this is the instance of the application class and "YOUR_APP_ID" is the APP ID from the dashboard. +// This is the instance of the application class and "YOUR_APP_ID" is the APP ID from the dashboard. val moEngage = MoEngage.Builder(this, "YOUR_APP_ID") .enablePartnerIntegration(IntegrationPartner.SEGMENT) .build() MoEngage.initialiseDefaultInstance(moEngage) ``` -### Exclude MoEngage Storage File from Auto-Backup -Auto backup service of Android periodically backs up the Shared Preference file, Database files, and so on. +### Exclude MoEngage storage file from auto-backup + +The auto-backup service of Android periodically backs up the Shared Preference file, Database files, and so on. -For more information, refer to [Auto Backup](https://developer.android.com/guide/topics/data/autobackup){:target="_blank"}. +For more information, refer to the [Auto-Backup](https://developer.android.com/guide/topics/data/autobackup){:target="_blank"} documentation. -As a result of the backup, MoEngage SDK identifiers are backed up and restored after re-install. -The restoration of the identifier results in your data being corrupted and the user not being reachable using push notifications. +As a result of the backup, MoEngage SDK identifiers are backed up and restored after re-install. The restoration of the identifier results in your data being corrupted and the user not being reachable using push notifications. To ensure data isn't corrupted after a backup is restored, opt-out of MoEngage SDK storage files. -Refer to the [documentation](https://developers.moengage.com/hc/en-us/articles/4401999257236-Exclude-MoEngage-Storage-File-from-Auto-Backup){:target="_blank"} for further details. +Refer to the [MoEngage documentation](https://developers.moengage.com/hc/en-us/articles/4401999257236-Exclude-MoEngage-Storage-File-from-Auto-Backup){:target="_blank"} for further details. ### Install or update differentiation This is required for migrations to the MoEngage Platform so the SDK can determine whether the user is a new user on your app, or an existing user who updated to the latest version. -If the user was already using your application and has just updated to a new version which has the MoEngage SDK, below is an example call: +If the user was already using your application and has just updated to a new version which has the MoEngage SDK. An example call: ```kotlin MoEAnalyticsHelper.setAppStatus(context, AppStatus.UPDATE) @@ -306,23 +296,19 @@ If this is a fresh install: MoEAnalyticsHelper.setAppStatus(context, AppStatus.INSTALL) ``` -## MoEngage Android SDK Features -### Configure Push Notifications +## MoEngage Android SDK features +### Configure push notifications -Copy the Server Key from the FCM console and add it to the MoEngage Dashboard. To upload it, go to the Settings Page `Dashboard --> Settings --> Channel --> Push --> Mobile Push --> Android` and add the Server Key and package name. -**Please make sure you add the keys both in Test and Live environment.** +Copy the Server Key from the FCM console and add it to the MoEngage Dashboard. To upload it, go to the Settings page, **Dashboard > Settings > Channel > Push > Mobile Push > Android** and add the Server Key and package name. Ensure that you add the keys both in Test and Live environment. #### Add meta information for push notification To display push notifications, some metadata regarding the notification is required. For example, the small icon and large icon drawables are mandatory. - Refer to the [MoEngage - NotificationConfig](https://moengage.github.io/android-api-reference-v11/core/com.moengage.core.config/-notification-config/index.html){:target="_blank"} API reference for all the possible options. - Use the `configureNotificationMetaData()` to pass on the configuration to the SDK. - ```kotlin val moEngage = MoEngage.Builder(this, "YOUR_APP_ID") .enablePartnerIntegration(IntegrationPartner.SEGMENT) @@ -334,9 +320,9 @@ Use the `configureNotificationMetaData()` to pass on the configuration to the SD MoEngage.initialiseDefaultInstance(moEngage) ``` -#### Configuring Firebase Cloud Messaging +#### Configuring Firebase cloud messaging -For showing Push notifications there are 2 important steps: +To show push notifications there are two important steps: 1. Registration for Push, for example generating push token. 2. Receiving the Push payload from Firebase Cloud Messaging(FCM) service and showing the notification on the device. @@ -345,7 +331,7 @@ For showing Push notifications there are 2 important steps: ###### Opt-out of MoEngage registration -To opt-out of MoEngage token registration mechanism disable token registration while configuring FCM in the `MoEngage.Builder` as shown below +To opt-out of MoEngage token registration mechanism disable token registration while configuring FCM in the `MoEngage.Builder`: ```kotlin val moEngage = MoEngage.Builder(this, "YOUR_APP_ID") @@ -361,19 +347,18 @@ To opt-out of MoEngage token registration mechanism disable token registration w ###### Pass the push token to the MoEngage SDK -The Application must pass the Push Token received from FCM to the MoEngage SDK for the MoEngage platform to send out push notifications to the device. -Use the below API to pass the push token to the MoEngage SDK. +The application must pass the Push Token received from FCM to the MoEngage SDK for the MoEngage platform to send out push notifications to the device. +Use the following API to pass the push token to the MoEngage SDK. ```kotlin MoEFireBaseHelper.getInstance().passPushToken(applicationContext,token) ``` -Please make sure token is passed to MoEngage SDK whenever push token is refreshed and on application update. Passing token on application update is important for migration to the MoEngage Platform. +Ensure that the token is passed to MoEngage SDK whenever push token is refreshed and on application update. Passing token on application update is important for migration to the MoEngage Platform. -###### Passing the Push payload to the MoEngage SDK +###### Passing the push payload to the MoEngage SDK -To pass the push payload to the MoEngage SDK call the MoEngage API from the `onMessageReceived()` from the Firebase receiver. -Before passing the payload to the MoEngage SDK you should check if the payload is from the MoEngage platform using the helper API provided by the SDK. +To pass the push payload to the MoEngage SDK call the MoEngage API from the `onMessageReceived()` from the Firebase receiver. Before passing the payload to the MoEngage SDK, check if the payload is from the MoEngage platform using the helper API provided by the SDK. ```kotlin if (MoEPushHelper.getInstance().isFromMoEngagePlatform(remoteMessage.data)) { @@ -383,9 +368,9 @@ if (MoEPushHelper.getInstance().isFromMoEngagePlatform(remoteMessage.data)) { } ``` -##### Push Registration and Receiving handled by SDK +##### Push registration and receiving handled by SDK -Add the below code in your manifest file. +Add the following code in your manifest file: ```xml @@ -397,7 +382,7 @@ Add the below code in your manifest file. When the MoEngage SDK handles push registration, it optionally provides a callback to the Application whenever a new token is registered or the token is refreshed. -An application can get this callback by implementing `FirebaseEventListener` and registering for a callback in the Application class `onCreate()` using `MoEFireBaseHelper.getInstance().addEventListener()` +An application can get this callback by implementing `FirebaseEventListener` and registering for a callback in the Application class `onCreate()` using `MoEFireBaseHelper.getInstance().addEventListener()`. Refer to the [MoEngage - API reference](https://moengage.github.io/android-api-reference-v11/moe-push-firebase/com.moengage.firebase.listener/-firebase-event-listener/index.html?query=open%20class%20FirebaseEventListener){:target="_blank"} for more details on the listener. @@ -405,22 +390,21 @@ Refer to the [MoEngage - API reference](https://moengage.github.io/android-api-r ##### Callbacks -Segment recommends that you add the callbacks in the onCreate() of the Application class since these callbacks can be triggered even when the application is in the background. +Segment recommends that you add the callbacks in the `onCreate()` of the application class since these callbacks can be triggered even when the application is in the background. -###### Token Callback +###### Token callback When MoEngage SDK handles push registration, it optionally provides a callback to the application whenever a new token is registered or the token is refreshed. To get the token callback implement the [TokenAvailableListener](https://moengage.github.io/android-api-reference/pushbase/com.moengage.pushbase.listener/-token-available-listener/index.html){:target="_blank"} and register for the callback using [MoEFireBaseHelper.getInstance().addTokenListener()](https://moengage.github.io/android-api-reference/moe-push-firebase/com.moengage.firebase/-mo-e-fire-base-helper/add-token-listener.html){:target="_blank"}. -###### Non-MoEngage Payload +###### Non-MoEngage payload If you're using the receiver provided by the SDK in your application's manifest file, SDK provides a callback in case a push payload is received for any other server apart from MoEngage Platform. To get a callback implement the [NonMoEngagePushListener](https://moengage.github.io/android-api-reference/moe-push-firebase/com.moengage.firebase.listener/-non-mo-engage-push-listener/index.html){:target="_blank"} and register for the callback using [MoEFireBaseHelper.getInstance().addNonMoEngagePushListener()](https://moengage.github.io/android-api-reference/moe-push-firebase/com.moengage.firebase/-mo-e-fire-base-helper/add-non-mo-engage-push-listener.html){:target="_blank"}. - -#### Declare and configure Rich Landing Activity: +#### Declare and configure rich landing activity: A rich landing page can be used to open a web URL inside the app through a push campaign. -The configuration below is only required if you want to add a parent activity to the Rich landing page. If not, you can move to the next section. +The following configuration is only required if you want to add a parent activity to the Rich landing page. If not, you can move to the next section. To use a rich landing page you need to add the below code in the AndroidManifest.xml Add the following snippet and replace `[PARENT_ACTIVITY_NAME]` with the name of the parent @@ -451,44 +435,42 @@ You are now all set up to receive push notifications from MoEngage. For more inf * [Release Notes](https://developers.moengage.com/hc/en-us/articles/4403896795540-Changelog){:target="_blank"} ### Identify -Use [Identify](/docs/connections/sources/catalog/libraries/mobile/android/#identify) to track user-specific attributes. This is the same as tracking [user attributes](https://developers.moengage.com/hc/en-us/articles/4402050979860-Track-User-Attributes){:target="_blank"} on MoEngage. MoEngage supports traits supported by Segment as well as custom traits. If you set traits.id, MoEngage sets that as the Unique ID for that user. +Use [Identify](/docs/connections/sources/catalog/libraries/mobile/android/#identify) to track user-specific attributes. This is the same as tracking [user attributes](https://developers.moengage.com/hc/en-us/articles/4402050979860-Track-User-Attributes){:target="_blank"} on MoEngage. MoEngage supports traits supported by Segment as well as custom traits. If you set `traits.id`, MoEngage sets that as the Unique ID for that user. > info "" > MoEngage supports anonymous identifiers in Device-mode only. If you use the MoEngage destination in Cloud-mode, use a known user identifier. ### Track -Use [track](/docs/connections/sources/catalog/libraries/mobile/android/#track) to track events and user behavior in your app. -This will send the event to MoEngage with the associated properties. Tracking events is essential and will help you create segments for engaging users. +Use [Track](/docs/connections/sources/catalog/libraries/mobile/android/#track) to track events and user behavior in your app. This sends the event to MoEngage with the associated properties. Tracking events is essential and helps you create segments for engaging users. ### Reset -If your app supports the ability for a user to logout and login with a new identity, then you'll need to call reset for the Analytics client. +If your app supports the ability for a user to logout and login with a new identity, then you need to call reset for the Analytics client. ### Sample Implementation -Refer to [this](https://github.com/moengage/moengage-segment-integration){:target="_blank"} GitHub repository for sample implementation +Refer to [MoEngage's](https://github.com/moengage/moengage-segment-integration){:target="_blank"} GitHub repository for sample implementation. ## Web The MoEngage WebSDK offers the ability to send push notifications to Google Chrome, Opera and Firefox browsers. Complete the following steps after you've configured Segment's `analytics.js.` - ### Integration #### 1. Setup your MoEngage Web SDK settings at MoEngage Dashboard -Configure the [web settings](https://help.moengage.com/hc/en-us/articles/210224063){:target="_blank"} on the MoEngage dashboard to start using MoEngage \<> Segment integration. +Configure the [web settings](https://help.moengage.com/hc/en-us/articles/210224063){:target="_blank"} on the MoEngage dashboard to start using MoEngage <> Segment integration. If you have selected `HTTPS` mode of integration in the settings, complete the following steps: #### 2 Set up for HTTPS websites #### 2.a Download the required files (HTTPS) -For HTTPS Web Push to work, you need to host two files in the `root` directory of your web server. These two files will be available for you to download at the [web settings page](https://app.moengage.com/v3/#/settings/push/web){:target="_blank"}. +For HTTPS Web Push to work, you need to host two files in the `root` directory of your web server. These two files are available for you to download at the [web settings page](https://app.moengage.com/v3/#/settings/push/web){:target="_blank"}. * `manifest.json` * `serviceworker.js` > info "Serviceworker file naming convention" -> The name of the serviceworker file must be `serviceworker.js`. Please contact MoEngage support at support@moengage.com if you want to give your serviceworker file a different name. +> The name of the serviceworker file must be `serviceworker.js`. Please contact [MoEngage support](mailto:support@moengage.com){:target="_blank"} if you want to give your serviceworker file a different name. #### 2.b Add link to manifest in HTML (HTTPS) Add the following line in the `` tag of your page. @@ -504,7 +486,7 @@ Add the following line in the `` tag of your page. #### 2.c Use your existing manifest or serviceworker file (HTTPS) If you already have these files, -1. **Manifest** - Add the sender ID you saved on MoEngage dashboard as the `gcm_sender_id`. If you've used `MoEngage Shared Project` while setting up, your sender id is `540868316921`. Edit your `manifest.json` as follows: +1. **Manifest** - Add the sender ID you saved on MoEngage dashboard as the `gcm_sender_id`. If you've used `MoEngage Shared Project` while setting up, your sender ID is `540868316921`. Edit your `manifest.json` as follows: ```json { ... @@ -513,7 +495,7 @@ If you already have these files, } ``` -2. **Service Worker** - Add the following line to the top of your `serviceworker.js` file +2. **Service Worker** - Add the following line to the top of your `serviceworker.js` file. ```js importScripts("//cdn.moengage.com/webpush/releases/serviceworker_cdn.min.latest.js?date="+ new Date().getUTCFullYear()+""+new Date().getUTCMonth()+""+new Date().getUTCDate()); @@ -523,84 +505,84 @@ If you already have these files, Use [Identify](/docs/sources/website/analytics.js/#identify) to track user specific attributes. This is equal to [tracking user attributes](https://developers.moengage.com/hc/en-us/articles/360061114832-Web-SDK-User-Attributes-Tracking){:target="_blank"} on MoEngage. MoEngage supports traits supported by Segment as well as custom traits. > info "" -> MoEngage supports anonymous identifiers in Device-mode only. If you use the MoEngage destination in Cloud-mode, use a known user identifier. +> MoEngage supports anonymous identifiers in device-mode only. If you use the MoEngage destination in cloud-mode, use a known user identifier. ### Track -Use [track](/docs/sources/website/analytics.js/#track) to track events and user behavior in your app. This will send the event to MoEngage with the associated properties. Tracking events is essential and will help you create segments for engaging users. +Use [Track](/docs/sources/website/analytics.js/#track) to track events and user behavior in your app. This sends the event to MoEngage with the associated properties. Tracking events is essential and helps you create segments for engaging users. ### Reset -If your website supports the ability for a user to logout and login with a new identity, then you'll need to call [reset](/docs/sources/website/analytics.js/#reset-logout) method in `analytics.js`. +If your website supports the ability for a user to logout and login with a new identity, then you need to call [reset](/docs/sources/website/analytics.js/#reset-logout) method in `analytics.js`. -### Test Mode and Debugging +### Test mode and debugging While updating the MoEngage settings on the Segment Dashboard, you can enable the logging functionality of the MoEngage SDK to see the SDK logs on the browser console. Just set `Enable Debug Logging` to `On` and the SDK loads in debug mode. > success "" > When you enable debug mode, Segment sends the events and user attributes to the `TEST` environment of your MoEngage App. -## MoEngage Web SDK Features +## MoEngage Web SDK features For information about optional features, see the documentation below: -* [Configure opt in type](https://help.moengage.com/hc/en-us/articles/210224063-Configure-Web-Push-Settings#configure-web-push-opt-in-0-6){:target="_blank"} +* [Configure opt-in type](https://help.moengage.com/hc/en-us/articles/210224063-Configure-Web-Push-Settings#configure-web-push-opt-in-0-6){:target="_blank"} * [Self-handled opt-ins](https://developers.moengage.com/hc/en-us/articles/360061219351-Configure-Self-Handled-Opt-In){:target="_blank"} * [SDK callbacks](https://developers.moengage.com/hc/en-us/articles/4401950701076-Opted-Out-Users){:target="_blank"} -### On-Site Messaging +### On-Site messaging -On-site Messaging Campaigns allow you to show personalized pop-ups and non-intrusive banners on your website. +On-site messaging campaigns allow you to show personalized pop-ups and non-intrusive banners on your website. -Web SDK integration for On-site Messaging will automatically start working on all the pages where the web SDK is integrated. +Web SDK integration for On-site Messaging automatically starts working on all the pages where the web SDK is integrated. For more information, refer to [Configure and Integrate On-site Messaging](https://developers.moengage.com/hc/en-us/articles/360061573232-Configure-and-Integrate-On-site-Messaging){:target="_blank"}. -### Web Personalization +### Web personalization -Web Personalization is used to personalize the website experience for each user. A few popular use cases for Web Personalization include the home page banner personalization basis user behavior, localizing the website content basis user geography, testing the performance of new page layouts for improved performance, modifying the content shown on any webpage as per the user behavior. +Web personalization is used to personalize the website experience for each user. A few popular use cases for web personalization include the home page banner personalization basis user behavior, localizing the website content basis user geography, testing the performance of new page layouts for improved performance, modifying the content shown on any webpage as per the user behavior. -For more information, refer to [Configure and Integrate Web Personalization](https://developers.moengage.com/hc/en-us/articles/360062008891-Configure-and-Integrate-Web-Personlization){:target="_blank"}. +For more information, refer to MoEngage's documentation on how to [configure and integrate web personalization](https://developers.moengage.com/hc/en-us/articles/360062008891-Configure-and-Integrate-Web-Personlization){:target="_blank"}. ## Use Twilio Engage with MoEngage You can send [Computed traits](/docs/engage/audiences/computed-traits/) and [Audiences](/docs/audiences/audiences/) to MoEngage as custom attributes or custom events. -* Traits and audiences sent using the `identify` call will appear in MoEngage as _Tracked Custom Attributes_ with value as _True_. -* Traits and audiences sent using the `track` call will appear in MoEngage as _Tracked User Events_. +* Traits and audiences sent using the Identify call appear in MoEngage as _Tracked Custom Attributes_ with value as _True_. +* Traits and audiences sent using the Track call appear in MoEngage as _Tracked User Events_. -When connecting the calculated trait/audience to the MoEngage destination, you may select the method of your choice (or opt to utilise both). +When connecting the calculated trait or audience to the MoEngage destination, you can select the method of your choice (or opt to use both). -### Sync Time +### Sync yime -The default integration for MoEngage \<> Twilio Engage connection is **Real Time.** But there are some filters that will disqualify the persona from syncing in real-time, including some time-based filters which restrict your audience’s size at the time of message send. +The default integration for MoEngage <> Twilio Engage connection is **Real Time.** But there are some filters that disqualify the persona from syncing in real-time, including some time-based filters which restrict your audience’s size at the time of message send. -### Computed Traits using Identify calls +### Computed traits using Identify calls -To generate custom attributes in MoEngage, you may provide Computed Traits defined in Engage as `Identify` calls. The Computed Trait's value is used to set the custom attribute. +To generate custom attributes in MoEngage, you may provide Computed Traits defined in Engage as Identify calls. The computed trait's value is used to set the custom attribute. ### Create a Segment Computed Trait -1. In Segment, navigate to the _Computed Traits_ in _Engage._ -2. Click _New Computed Trait_. +1. In Segment, navigate to the **Computed Traits** in Engage. +2. Click **New Computed Trait**. 3. Create your computed trait. A lightning bolt in the top corner of the page will indicate if the computation updates in real-time. - ![segment_new_trait.png](images/segment_new_trait.png) -4. Next, select _MoEngage_ as your destination. - ![segment_select_moengage_destination.png](images/segment_select_moengage_destination.png) -5. Preview by clicking _Review & Create_. - _Note-_ By default, Segment queries all historical data to set the current value of the computed trait and audience. To omit this data, uncheck _Historical Backfill_.  - ![segment_new_trait_backfill.png](images/segment_new_trait_backfill.png) + ![Screenshot of Configure and Preview Your Trait page](images/segment_new_trait.png) +4. Next, select **MoEngage** as your destination. + ![Screenshot of MoEngage (Actions) destination page in Segment](images/segment_select_moengage_destination.png) +5. Preview by clicking **Review & Create**. + > By default, Segment queries all historical data to set the current value of the computed trait and audience. To omit this data, uncheck **Historical Backfill**.  + ![Screenshot of Review & Create page with Historial Backfill section highlighted](images/segment_new_trait_backfill.png) 6. In the computed trait, adjust the connection settings based on how you would like your data sent to MoEngage. ### Create a Segment Audience -1. In Segment, navigate to the _Audience_ in _Engage_ -2. Click _New_. -3. Create your audience. A lightning bolt in the top corner of the page will indicate if the computation updates in real-time. - ![segment_audience_2.png](images/segment_audience_2.png) -4. Next, select _MoEngage_ as your destination. - ![segment_audience_destination.png](images/segment_audience_destination.png) -5. Preview your audience by clicking _Review & Create_. - _Note-_ By default, Segment queries all historical data to set the current value of the audience. To omit this data, uncheck _Historical Backfill_.  - ![segment_audience_4.png](images/segment_audience_4.png) +1. In Segment, navigate to the **Audience** in Engage. +2. Click **New**. +3. Create your audience. A lightning bolt indicates if the computation updates in real-time. + ![Screenshot Configure and Preview your Audience page](images/segment_audience_2.png) +4. Next, select **MoEngage** as your destination. + ![Screenshot of MoEngage (Actions) destination page in Segment](images/segment_audience_destination.png) +5. Preview your audience by clicking **Review & Create**. + > By default, Segment queries all historical data to set the current value of the audience. To omit this data, uncheck **Historical Backfill**.  + ![Screenshot of Review & Create page](images/segment_audience_4.png) 6. In the computed trait or audience settings, adjust the connection settings based on how you would like your data sent to MoEngage. - ![segment_audience_5.png](images/segment_audience_5.png) + ![Screenshot of Connection settings](images/segment_audience_5.png) ## Connect Twilio Engage to MoEngage @@ -612,9 +594,9 @@ First, link MoEngage to Twilio Engage to send Computed Traits or Audiences. The ## Segment users in MoEngage -To create a segment of these users, navigate to _Segments >> Create Segment._ Next, based on which call you used: +To create a segment of these users, navigate to **Segments > Create Segment**. Next, based on which call you used: -- **Identify**: Select _User Property_ and select the specific attribute. - ![moengage_segment_identify.png](images/moengage_segment_identify.png) -- **Track**: Select _User Behaviour_ and select the specific event. - ![moengage_segment_track.png](images/moengage_segment_track.png) +- **Identify**: Select **User Property** and select the specific attribute. + ![Screenshot of User property filter in MoEngage UI](images/moengage_segment_identify.png) +- **Track**: Select **User Behaviour** and select the specific event. + ![Screenshot of User behavior filter in MoEngage UI](images/moengage_segment_track.png) From 79c741c8af48adde50d35baa723072db49d65c14 Mon Sep 17 00:00:00 2001 From: pwseg <86626706+pwseg@users.noreply.github.com> Date: Thu, 16 Oct 2025 11:24:45 -0500 Subject: [PATCH 124/140] Update src/connections/sources/catalog/cloud-apps/zendesk/index.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/sources/catalog/cloud-apps/zendesk/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index 22743a238b..688dcae833 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -11,7 +11,7 @@ id: 3hbak7a9 2. Search for **Zendesk** in the Sources Catalog and click **Add Source**. 3. Give the source a name and add any labels to help you organize and filter your sources. You can give the source any name, but Segment recommends a name that reflects the source itself, as this name auto-populates the schema name. For example, the source name `Zendesk` creates the schema `zendesk`. - You can add multiple instances if you have multiple Zendesk accounts. -4. Enter your Zendesk subdomain. The subdomain you use to access your Zendesk portal (for example `segment` for segment.zendesk.com) +4. Enter the subdomain you use to access your Zendesk portal (for example `segment` for segment.zendesk.com) - If you enter `segment.zendesk.com` as a subdomain instead of just `segment`, Segment tries to access the host `segment.zendesk.com.zendesk.com` and you will get a credentials error. 5. Click **Authorize** to start Zendesk's OAuth process. Sign in and grant permissions. From f7962bd364db8e2d724389abbe60b4d3adb2806e Mon Sep 17 00:00:00 2001 From: pwseg <86626706+pwseg@users.noreply.github.com> Date: Thu, 16 Oct 2025 11:24:57 -0500 Subject: [PATCH 125/140] Update src/connections/sources/catalog/cloud-apps/zendesk/index.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/sources/catalog/cloud-apps/zendesk/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/sources/catalog/cloud-apps/zendesk/index.md b/src/connections/sources/catalog/cloud-apps/zendesk/index.md index 688dcae833..d2dfc2c0f7 100644 --- a/src/connections/sources/catalog/cloud-apps/zendesk/index.md +++ b/src/connections/sources/catalog/cloud-apps/zendesk/index.md @@ -34,7 +34,7 @@ In the initial sync, Segment imports all available Zendesk data. Segment writes Segment uses an upsert process so the data in your warehouse always reflects the latest state in Zendesk. For example, if a ticket’s status changes from `open` to `closed` between syncs, the next sync updates that record. -Source syncs and warehouse syncs are independent. The source syncs data into Segment, and the warehouse sync pushes that data to your warehouse based on your plan’s schedule. +Source syncs and warehouse syncs are independent. The source syncs pull data into Segment, and the warehouse syncs push that data to your warehouse based on your plan’s schedule. Segment doesn't support filtering objects or properties during sync for the Zendesk source. To request this feature, [contact Segment Support](https://segment.com/help/contact/){:target="_blank"}. From 74a01255b16807ab790ee7295cd3c9e2cefb5521 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 17:26:09 +0100 Subject: [PATCH 126/140] style guide clean up + alt text fix for image Updated the Olark documentation for clarity and consistency, including changes to headings, phrasing, and formatting. --- .../destinations/catalog/olark/index.md | 46 +++++++++---------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/connections/destinations/catalog/olark/index.md b/src/connections/destinations/catalog/olark/index.md index 8df01a757e..e465748971 100644 --- a/src/connections/destinations/catalog/olark/index.md +++ b/src/connections/destinations/catalog/olark/index.md @@ -2,33 +2,33 @@ title: Olark Destination id: 54521fd925e721e32a72eedc --- -## Getting Started +## Getting started -When you enable Olark in the Segment web app, your changes appear in the Segment CDN in about 45 minutes, and then Analytics.js starts asynchronously loading Olark's `loader0.js` onto your page. This means you should remove Olark's snippet from your page. -+ Olark's chat box will appear on your page, as configured in your [Olark account](http://www.olark.com/?r=qhl4tltg){:target="_blank"}, and you can start chatting with visitors. +When you enable Olark in the Segment Segmentb app, your changes appear in the Segment CDN in about 45 minutes. Analytics.js then starts asynchronously loading Olark's `loader0.js` onto your page. This means you should remove Olark's snippet from your page. -Olark is only supported in device mode (on the client). +Olark's chat box appears on your page, as configured in your [Olark account](http://www.olark.com/?r=qhl4tltg){:target="_blank"}, and you can start chatting with visitors. -## Page +Olark is only supported in device-mode (on the client). -When you call [`page`](/docs/connections/spec/page/), we call Olark's `sendNotificationToOperator` function as `looking at *url*`. You must enable this option with the *pageview* flag, because it can sometimes be bothersome. +## Page +When you call [Page](/docs/connections/spec/page/), Segment calls Olark's `sendNotificationToOperator` function as `looking at *url*`. You must enable this option with the `pageview` flag, because it can sometimes be bothersome. ## Identify -When you call [`identify`](/docs/connections/spec/identify/) on `analytics.js`, we send the following data to Olark: +When you call [Identify](/docs/connections/spec/identify/) on `analytics.js`, Segment sends the following data to Olark: -* We call `api.chat.updateVisitorNickname` with `traits.name` and `traits.email`, or just their `traits.name` or just their `traits.email` or their `userId`. In that order of preference. -* We call `api.visitor.updateEmailAddress` with `traits.email` if you send it, or `userId` if that's an email. -* We call `api.visitor.updateFullName` with `traits.name` if you send it, or `traits.firstName` and `traits.lastName` appended with a space in between, if you send both first and last name. -* We call `api.visitor.updatePhoneNumber` with `traits.phone` if you send it. -* We call `api.visitor.updateCustomFields` with `traits`. +* Segment calls `api.chat.updateVisitorNickname` with `traits.name` and `traits.email`, or just their `traits.name` or just their `traits.email` or their `userId`. In that order of preference. +* Segment calls `api.visitor.updateEmailAddress` with `traits.email` if you send it, or `userId` if that's an email. +* Segment calls `api.visitor.updateFullName` with `traits.name` if you send it, or `traits.firstName` and `traits.lastName` appended with a space in betSegmenten, if you send both first and last name. +* Segment calls `api.visitor.updatePhoneNumber` with `traits.phone` if you send it. +* Segment calls `api.visitor.updateCustomFields` with `traits`. More documentation on the Olark API can be found [in Olark's docs](https://www.olark.com/api){:target="_blank"}. ## Track -When you call [`track`](/docs/connections/spec/track/) or one of its helpers on analytics.js, we call Olark's `sendNotificationToOperator` function as `visitor triggered *eventName*`. You must enable this option with the *track* flag, because it can sometimes be bothersome. +When you call [Track](/docs/connections/spec/track/) or one of its helpers on analytics.js, Segment calls Olark's `sendNotificationToOperator` function as `visitor triggered *eventName*`. You must enable this option with the `track` flag. ## Features @@ -38,7 +38,7 @@ All the settings you can change [from your Olark settings pages](https://www.ola ### Olark JavaScript API -If you'd like to use the native Olark JavaScript functions after turning on Olark using Segment our `ready` function will allow you to do that. Since we still load the Olark library in the background you can access those functions like this: +If you'd like to use the native Olark JavaScript functions after turning on Olark using Segment, the `ready` function allows you to do that. Since Segment still loads the Olark library in the background, you can access those functions like this: ```js analytics.ready(function(){ @@ -46,19 +46,19 @@ analytics.ready(function(){ }); ``` -[Read the ready docs for more details](/docs/connections/sources/catalog/libraries/website/javascript/#ready) +See the [`ready` docs](/docs/connections/sources/catalog/libraries/Segmentbsite/javascript/#ready) for more details. -## Record Live Chat Events +## Record Live Chat events -Using Olark through Segment gives you the ability to automatically record `track` events for live chat conversations. If you select this option, we'll collect the following events: +Using Olark through Segment gives you the ability to automatically record Track events for live chat conversations. If you select this option, Segment collects the following events: -* Live Chat Conversation Started -* Live Chat Message Sent -* Live Chat Message Received +* `Live Chat Conversation Started`. +* `Live Chat Message Sent`. +* `Live Chat Message Received`. -These events will be sent to other tools in your stack that can accept track calls, so you can do things like analyze if users who chat spend more money over time. +These events are sent to other tools in your stack that can accept Track calls, so you can do things like analyze if users who chat spend more money over time. -To learn more about the live chat events you can capture with this destination, head on over to our [Live Chat spec docs](/docs/connections/spec/live-chat/). +To learn more about the live chat events you can capture with this destination, seet the [Live Chat spec docs](/docs/connections/spec/live-chat/). -![Turn on Olark](images/olarklivechat.png) +![Screenshot of Olark UI with option to Record live chat events highlighted](images/olarklivechat.png) From 0ade56163160c4dab3e96246abeff7aa2682b415 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 17:26:52 +0100 Subject: [PATCH 127/140] Fix typo --- src/connections/destinations/catalog/olark/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/olark/index.md b/src/connections/destinations/catalog/olark/index.md index e465748971..8e312ac787 100644 --- a/src/connections/destinations/catalog/olark/index.md +++ b/src/connections/destinations/catalog/olark/index.md @@ -59,6 +59,6 @@ Using Olark through Segment gives you the ability to automatically record Track These events are sent to other tools in your stack that can accept Track calls, so you can do things like analyze if users who chat spend more money over time. -To learn more about the live chat events you can capture with this destination, seet the [Live Chat spec docs](/docs/connections/spec/live-chat/). +To learn more about the live chat events you can capture with this destination, see the [Live Chat spec docs](/docs/connections/spec/live-chat/). ![Screenshot of Olark UI with option to Record live chat events highlighted](images/olarklivechat.png) From 22f027bce33e78e3aac0574278bdc7b5412d0d88 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 17:35:26 +0100 Subject: [PATCH 128/140] style guide clean up Updated text for clarity and consistency, including links and formatting adjustments. --- .../catalog/onesignal-new/index.md | 45 +++++++++---------- 1 file changed, 20 insertions(+), 25 deletions(-) diff --git a/src/connections/destinations/catalog/onesignal-new/index.md b/src/connections/destinations/catalog/onesignal-new/index.md index 9a0f9b303e..5e761cdb3f 100644 --- a/src/connections/destinations/catalog/onesignal-new/index.md +++ b/src/connections/destinations/catalog/onesignal-new/index.md @@ -6,32 +6,29 @@ redirect_from: '/connections/destinations/catalog/onesignal/' id: 60b6a5b69fec493efbd3c64c --- [OneSignal](https://onesignal.com/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank"} is the market leader in driving customer engagement with multi-channel messaging across Web and Mobile Push, In-App Messages, SMS, and Email subscribers. -This destination is maintained by OneSignal. For any issues with the destination, [contact the OneSignal Support team](mailto:support@onesignal.com). -> info "" -> The OneSignal Destination is available to customers on OneSignal Growth, Professional and Enterprise plans. - -## Getting Started +This destination is maintained by OneSignal. For any issues with the destination, [contact the OneSignal support team](mailto:support@onesignal.com){:target="_blank"}. +> info "" +> The OneSignal Destination is available to customers on OneSignal Growth, Professional, and Enterprise plans. +## Getting started -1. Log in to the [OneSignal Dashboard](https://app.onesignal.com/){:target="_blank"} -2. Navigate to **Segment App** -> **Settings** -> **Analytics** -> **Segment.com** and click **Activate**. +1. Log in to the [OneSignal dashboard](https://app.onesignal.com/){:target="_blank"}. +2. Navigate to **Segment App > Settings > Analytics > Segment.com** and click **Activate**. 3. The Segment App opens in a new window. Log in to authenticate the connection from OneSignal. -4. Select the Workspace and Source to connect with OneSignal. - +4. Select the workspace and source to connect with OneSignal. > info "" > OneSignal maps the `userId` field to the **[External User ID](https://documentation.onesignal.com/docs/onboarding-with-onesignal#step-3-connect-user-data-to-onesignal){:target="_blank"}** field in OneSignal. - ## Supported methods OneSignal supports the following methods, as specified in the [Segment Spec](/docs/connections/spec). ### Identify -Send [Identify](/docs/connections/spec/identify) calls to update Users. For example: +Send [Identify](/docs/connections/spec/identify) calls to update users. For example: ```js analytics.identify('userId123', { @@ -62,25 +59,25 @@ analytics.track('Add to Cart', { }) ``` -OneSignal stores Track properties as Data Tags but drops the event name. In the above example, `Add to Cart` is dropped. +OneSignal stores Track properties as Data Tags but drops the event name. In the example, `Add to Cart` is dropped. To keep the event names on OneSignal Data Tags, append the event name to the properties. For example, `Add_to_Cart_brand` instead of `brand`. -![""](images/track-example.png) +![Screenshot of the OneSignal dashboard showing a notification for an "eShoppe" campaign.](images/track-example.png) ## Engage -Send Computed Traits and Audiences generated using [Engage](/docs/engage) to OneSignal +You can send Computed Traits and Audiences generated using [Engage](/docs/engage) to OneSignal. ### Audiences -Engage Audiences appear as a [segment](https://documentation.onesignal.com/docs/segmentation){:target="_blank"} in OneSignal. +Engage audiences appear as a [segment](https://documentation.onesignal.com/docs/segmentation){:target="_blank"} in OneSignal. -Track calls from Audiences create a OneSignal [segment](https://documentation.onesignal.com/docs/segmentation){:target="_blank"} with the Audience Name. +Track calls from Audiences create a OneSignal [segment](https://documentation.onesignal.com/docs/segmentation){:target="_blank"} with the audience name. -Identify calls from Audiences create a OneSignal [segment](https://documentation.onesignal.com/docs/segmentation){:target="_blank"} with the Audience Name and add Data Tags on all the matching user records. +Identify calls from Audiences create a OneSignal [segment](https://documentation.onesignal.com/docs/segmentation){:target="_blank"} with the audience name and add Data Tags on all the matching user records. -![""](images/audiences.jpg) +![Screenshot of the OneSignal "eShoppe" dashboard](images/audiences.jpg) Audiences sends Identify and Track calls to OneSignal when a user enters or exits the Audience. @@ -88,13 +85,11 @@ Audiences sends Identify and Track calls to OneSignal when a user enters or exit OneSignal stores Track and Identify calls from Engage Computed Traits as [Data Tags](https://documentation.onesignal.com/docs/add-user-data-tags){:target="_blank"} for the OneSignal User/Player's records. -## OneSignal Destination FAQ -### Managing Segment's Reserved and Custom Traits - -* Segment sends user traits to OneSignal as Data Tags. The number of data tags OneSignal allows depends on your OneSignal pricing plan. OneSignal drops the data tags that go over your set number. . - -* OneSignal always updates the `firstName` and the `lastName` properties for matching users. All other traits are added/updated on a first-come basis. `firstName` and `lastName` tags are stored as `first_name` and `last_name`. +## FAQ -* Send User properties to OneSignal with blank/null values to remove the corresponding Data Tag from the OneSignal user record. +#### How do I manage Segment's Reserved and Custom Traits? +* Segment sends user traits to OneSignal as Data Tags. The number of data tags OneSignal allows depends on your OneSignal pricing plan. OneSignal drops the data tags that go over your set number. +* OneSignal always updates the `firstName` and the `lastName` properties for matching users. All other traits are added or updated on a first-come basis. `firstName` and `lastName` tags are stored as `first_name` and `last_name`. +* Send User properties to OneSignal with blank or `null` values to remove the corresponding Data Tag from the OneSignal user record. * OneSignal doesn't store `email` and `phone` properties. To update `email` and `phone` properties in OneSignal, create a player record with the email address and/or a phone number and map those records with the External_User_ID. Additional properties from Segment map across all your matching records, including email and phone number records. From 25c6fd103e1b33d6d90a31e52eadb5f39ca7efef Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 17:46:12 +0100 Subject: [PATCH 129/140] style guide clean up Updated formatting and corrected text for clarity and consistency in the Optimizely Full Stack documentation. --- .../catalog/optimizely-full-stack/index.md | 135 +++++++++--------- 1 file changed, 66 insertions(+), 69 deletions(-) diff --git a/src/connections/destinations/catalog/optimizely-full-stack/index.md b/src/connections/destinations/catalog/optimizely-full-stack/index.md index b17148e68b..2171659fe6 100644 --- a/src/connections/destinations/catalog/optimizely-full-stack/index.md +++ b/src/connections/destinations/catalog/optimizely-full-stack/index.md @@ -4,167 +4,164 @@ hide-personas-partial: true redirect_from: '/connections/destinations/catalog/optimizelyx/' id: 59d3b44b8f1480000104be6b --- -## Getting Started +## Getting started +Segment's Optimizely Full Stack destination, previously Optimizely X, supports the following Optimizely products: - -Segment's **Optimizely Full Stack (previously Optimizely X)** destination supports the following Optimizely products: - -* [Optimizely Full Stack (server)](#server-side) -* [Optimizely Full Stack Android (Cloud-mode)](#android-cloud-mode-implementation) -* [Optimizely Full Stack iOS (Cloud-mode)](#ios-cloud-mode-implementation) +* [Optimizely Full Stack (server)](#server-side). +* [Optimizely Full Stack Android (Cloud-mode)](#android-cloud-mode-implementation). +* [Optimizely Full Stack iOS (Cloud-mode)](#ios-cloud-mode-implementation). If you're interested in implementing Optimizely X Web or Optimizely Full Stack with the JavaScript SDK, see Segment's [**Optimizely Web Destination**](/docs/connections/destinations/catalog/optimizely-web/), or follow the links below: -* [Optimizely X Web](/docs/connections/destinations/catalog/optimizely/#optimizely-x-web) -* [Optimizely Full Stack (JavaScript SDK)](/docs/connections/destinations/catalog/optimizely-web/#optimizely-full-stack-javascript-sdk) +* [Optimizely X Web](/docs/connections/destinations/catalog/optimizely/#optimizely-x-web). +* [Optimizely Full Stack (JavaScript SDK)](/docs/connections/destinations/catalog/optimizely-web/#optimizely-full-stack-javascript-sdk). -## Implementation Prerequisite +## Implementation prerequisite -Optimizely works differently than other Segment destinations: It requires that customers implement some Optimizely functionality natively to make sure your experiment logic runs correctly. +Optimizely works differently than other Segment destinations. It requires that customers implement some Optimizely functionality natively to make sure the experiment logic runs correctly. -Segment maps `track` events to Optimizely's `track` method, customers must implement all Optimizely decision-based methods, such as `activate` and `isFeatureEnabled` natively. Segment's API does not include methods that correspond to decision-based methods. +Segment maps Track events to Optimizely's `track` method, customers must implement all Optimizely decision-based methods, such as `activate` and `isFeatureEnabled` natively. Segment's API doesn't include methods that correspond to decision-based methods. This requires that customers include a native Optimizely implementation before their Segment implementation on pages or in mobile apps where Optimizely experiments run. -## Server Side +## Server-side -### Getting Started +### Getting started -1. In your Segment source dashboard, enable the "Optimizely Full Stack" destination (*not the "Optimizely Web" destination*). +1. In your Segment source dashboard, enable the "Optimizely Full Stack" destination (**not the "Optimizely Web" destination**). 2. Include your Optimizely project's `datafile` URL in your Segment settings. 3. Create a native Optimizely instance in your server environment so you can access Optimizely decisioning methods like `activate`, `isFeatureEnabled`. -4. Finally, define any [`events`](https://docs.developers.optimizely.com/full-stack/docs/create-events){:target="_blank"} and [`attributes`](https://docs.developers.optimizely.com/full-stack/docs/define-attributes){:target="_blank"} in your Optimizely dashboard, and to associate `metrics` with the appropriate Optimizely Experiments. Segment maps `track` event names to Optimizely `eventName` - the `eventName` corresponds to an experiment `metric`. In addition, Segment maps `track` event `context.traits` to Optimizely `attributes`. +4. Finally, define any [`events`](https://docs.developers.optimizely.com/full-stack/docs/create-events){:target="_blank"} and [`attributes`](https://docs.developers.optimizely.com/full-stack/docs/define-attributes){:target="_blank"} in your Optimizely dashboard, and to associate `metrics` with the appropriate Optimizely Experiments. Segment maps Track event names to Optimizely `eventName` - the `eventName` corresponds to an experiment `metric`. In addition, Segment maps Track event `context.traits` to Optimizely `attributes`. > warning "Optimizely SDKs v1.x or v2.x require matching `attributes` objects for correct attribution" -> If you use Optimizely SDKs v1.x or v2.x and use any `activate` or `isFeatureEnabled` calls, the `attributes` object for each user must match the `attributes` object passed to any `track` calls for that user id so that it can be correctly attributed on the Optimizely results page. +> If you use Optimizely SDKs v1.x or v2.x and use any `activate` or `isFeatureEnabled` calls, the `attributes` object for each user must match the `attributes` object passed to any Track calls for that user ID so that it can be correctly attributed on the Optimizely results page. -If you are using Optimizely SDKs v3+, [Easy Event Tracking](https://blog.optimizely.com/2019/02/26/introducing-easy-event-tracking-the-easier-way-to-understand-and-optimize-the-customer-journey/){:target="_blank"} is enabled by default for decision events. Set up does not require maintaining the attributes of a user as long as the user id stays the same between Optimizely `activate` and `isFeatureEnabled` calls and Segment `track` calls to have Optimizely `metrics` populated in the Optimizely results page. If you would like to segment your Optimizely results by user `attribute`, then make sure the `attributes` passed in for the `activate` and `isFeatureEnabled` calls match the `attributes` passed in for the `track` calls for that user id. +If you are using Optimizely SDKs v3+, [Easy Event Tracking](https://blog.optimizely.com/2019/02/26/introducing-easy-event-tracking-the-easier-way-to-understand-and-optimize-the-customer-journey/){:target="_blank"} is enabled by default for decision events. Set up does not require maintaining the attributes of a user as long as the user ID stays the same between Optimizely `activate` and `isFeatureEnabled` calls and Segment Track calls to have Optimizely `metrics` populated in the Optimizely results page. If you would like to segment your Optimizely results by user `attribute`, then make sure the `attributes` passed in for the `activate` and `isFeatureEnabled` calls match the `attributes` passed in for the Track calls for that user id. -For more details on how events are attributed on the Optimizely results page, refer to their documentation [How Optimzely Experimentation counts conversions](https://support.optimizely.com/hc/en-us/articles/19888476989325-How-Optimizely-Experimentation-counts-conversions){:target="_blank"}. +For more details on how events are attributed on the Optimizely results page, refer to Optimizely's documentation on [How Optimzely Experimentation counts conversions](https://support.optimizely.com/hc/en-us/articles/19888476989325-How-Optimizely-Experimentation-counts-conversions){:target="_blank"}. ### Track -Upon invocation of a Segment `track` event, Segment maps the event to an Optimizely `track` event: -* If the Segment event name matches exactly the name of an active experiment `metric` set up in the Optimizely dashboard; -* If the experiment `metric` is associated with a running experiment; -* If the current user has been assigned a `userId` using Segment's `identify` method (for example, `analytics.identify('123')`); +Upon invocation of a Segment Track event, Segment maps the event to an Optimizely `track` event: +* If the Segment event name matches exactly the name of an active experiment `metric` set up in the Optimizely dashboard. +* If the experiment `metric` is associated with a running experiment. +* If the current user has been assigned a `userId` using Segment's Identify method (for example, `analytics.identify('123')`). * If the current user is activated in a running experiment with the associated `metric`. Segment also handles the following mapping: -* Segment `track` event name to Optimizely `eventName`. -* Segment `track` event `properties` to Optimizely `eventTags`. -* Segment `track` event `context.traits` to Optimizely `attributes`. +* Segment Track event name to Optimizely `eventName`. +* Segment Track event `properties` to Optimizely `eventTags`. +* Segment Track event `context.traits` to Optimizely `attributes`. -`revenue` values should be passed as a Segment `property`. The value should be an integer and represent the value in cents, so, for example, $1 should be represented by `100`. +`revenue` values should be passed as a Segment `property`. The value should be an integer and represent the value in cents. For example, $1 should be represented by `100`. > info "Custom Event Tags are not displayed on the Optimizely results page" > Optimizely's [Custom Event Tags](https://docs.developers.optimizely.com/full-stack/docs/include-event-tags){:target="_blank"}, which include all Event Tags except `revenue` and `value`, are not displayed on the Optimizely results page. However, these tags are available in a [Data Export](https://docs.developers.optimizely.com/web/docs/data-export){:target="_blank"} report. Event Tags can be strings, integers, floating point numbers, or boolean values. Optimizely rejects events with any other data types (for example, arrays). -Segment defaults to identifying users with their `anonymousId`. Enabling the "Use User ID" setting in your Segment settings means that only `track` events triggered by identified users are passed downstream to Optimizely. You may optionally fall back to `anonymousId` when `userId` is unavailable by setting `fallbackToAnonymousId` to `true`. +Segment defaults to identifying users with their `anonymousId`. Enabling the **Use User ID** setting in your Segment settings means that only Track events triggered by identified users are passed downstream to Optimizely. You may optionally fall back to `anonymousId` when `userId` is unavailable by setting `fallbackToAnonymousId` to `true`. -### Notification Listeners +### Notification listeners -Segment's server-side integration with Optimizely Full Stack does not support notification listeners for Segment`track` events. [Notification listeners](https://docs.developers.optimizely.com/full-stack/docs/notification-listeners){:target="_blank"} are still available with any native call invoked from your Optimizely client instance. +Segment's server-side integration with Optimizely Full Stack does not support notification listeners for SegmentTrack events. [Notification listeners](https://docs.developers.optimizely.com/full-stack/docs/notification-listeners){:target="_blank"} are still available with any native call invoked from your Optimizely client instance. -## Android Cloud-mode Implementation +## Android cloud-mode implementation -### Getting Started +### Getting started -1. In your Segment source dashboard, enable the "Optimizely Full Stack" destination (*not the "Optimizely Web" destination*). +1. In your Segment source dashboard, enable the "Optimizely Full Stack" destination (**not the "Optimizely Web" destination**). 2. Include the latest version of Optimizely Full Stack's native SDK in your your app-level build.gradle file and [implement Optimizely as your would natively](https://docs.developers.optimizely.com/full-stack/docs/install-the-sdk#section-android){:target="_blank"}. -3. Finally, define any [`events`](https://docs.developers.optimizely.com/full-stack/docs/create-events){:target="_blank"} and [`attributes`](https://docs.developers.optimizely.com/full-stack/docs/define-attributes){:target="_blank"} in your Optimizely dashboard, and associate `metrics` with the appropriate Optimizely Experiments. Segment maps `track` event names to Optimizely `eventName` - the `eventName` corresponds to an experiment `metric`. In addition, Segment maps `identify` `traits` to Optimizely `attributes`. +3. Finally, define any [`events`](https://docs.developers.optimizely.com/full-stack/docs/create-events){:target="_blank"} and [`attributes`](https://docs.developers.optimizely.com/full-stack/docs/define-attributes){:target="_blank"} in your Optimizely dashboard, and associate `metrics` with the appropriate Optimizely Experiments. Segment maps Track event names to Optimizely `eventName` - the `eventName` corresponds to an experiment `metric`. In addition, Segment maps Identify `traits` to Optimizely `attributes`. -When implementing Optimizely Full Stack using cloud-mode, Segment will map `track` events to Optimizely `track` events on our servers and deliver the data to your Optimizely project as usual. +When implementing Optimizely Full Stack using cloud-mode, Segment maps Track events to Optimizely Track events on our servers and deliver the data to your Optimizely project as usual. > warning "Optimizely SDKs v1.x or v2.x require matching `attributes` objects for correct attribution" -> If you use Optimizely SDKs v1.x or v2.x and use any `activate` or `isFeatureEnabled` calls, the `attributes` object for each user must match the `attributes` object passed to any `track` calls for that user id so that it can be correctly attributed on the Optimizely results page. +> If you use Optimizely SDKs v1.x or v2.x and use any `activate` or `isFeatureEnabled` calls, the `attributes` object for each user must match the `attributes` object passed to any Track calls for that user id so that it can be correctly attributed on the Optimizely results page. -If you are using Optimizely SDKs v3+, [Easy Event Tracking](https://blog.optimizely.com/2019/02/26/introducing-easy-event-tracking-the-easier-way-to-understand-and-optimize-the-customer-journey/){:target="_blank"} is enabled by default for decision events. Set up does not require maintaining the attributes of a user as long as the user id stays the same between Optimizely `activate` and `isFeatureEnabled` calls and Segment `track` calls to have Optimizely `metrics` populated in the Optimizely results page. If you would like to segment your Optimizely results by user `attribute`, then make sure the `attributes` passed in for the `activate` and `isFeatureEnabled` calls match the `attributes` passed in for the `track` calls for that user id. +If you are using Optimizely SDKs v3+, [Easy Event Tracking](https://blog.optimizely.com/2019/02/26/introducing-easy-event-tracking-the-easier-way-to-understand-and-optimize-the-customer-journey/){:target="_blank"} is enabled by default for decision events. Set up does not require maintaining the attributes of a user as long as the user id stays the same between Optimizely `activate` and `isFeatureEnabled` calls and Segment Track calls to have Optimizely `metrics` populated in the Optimizely results page. If you would like to segment your Optimizely results by user `attribute`, then make sure the `attributes` passed in for the `activate` and `isFeatureEnabled` calls match the `attributes` passed in for the Track calls for that user id. -For more details on how events are attributed on the Optimizely results page, refer to their documentation [How Optimzely Experimentation counts conversions](https://support.optimizely.com/hc/en-us/articles/19888476989325-How-Optimizely-Experimentation-counts-conversions){:target="_blank"}. +For more details on how events are attributed on the Optimizely results page, refer to Optimizely's documentation on [How Optimzely Experimentation counts conversions](https://support.optimizely.com/hc/en-us/articles/19888476989325-How-Optimizely-Experimentation-counts-conversions){:target="_blank"}. ### Track -Upon invocation of a Segment `track` event, Segment maps the event to an Optimizely `track` event: -* If the Segment event name matches exactly the name of an active experiment `metric` set up in the Optimizely dashboard; -* If the experiment `metric` is associated with a running experiment; +Upon invocation of a Segment Track event, Segment maps the event to an Optimizely Track event: +* If the Segment event name matches exactly the name of an active experiment `metric` set up in the Optimizely dashboard. +* If the experiment `metric` is associated with a running experiment. * If the current user is activated in a running experiment with the associated `metric`. Segment also handles the following mapping: -* Segment `track` event name to Optimizely `eventName`. -* Segment `track` event `properties` to Optimizely `eventTags`. +* Segment Track event name to Optimizely `eventName`. +* Segment Track event `properties` to Optimizely `eventTags`. -`revenue` values should be passed as a Segment `property`. The value should be an integer and represent the value in cents, so, for example, $1 should be represented by `100`. +`revenue` values should be passed as a Segment `property`. The value should be an integer and represent the value in cents. For example, $1 should be represented by `100`. > info "Custom Event Tags are not displayed on the Optimizely results page" > Optimizely's [Custom Event Tags](https://docs.developers.optimizely.com/full-stack/docs/include-event-tags){:target="_blank"}, which include all Event Tags except `revenue` and `value`, are not displayed on the Optimizely results page. However, these tags are available in a [Data Export](https://docs.developers.optimizely.com/web/docs/data-export){:target="_blank"} report. Event Tags can be strings, integers, floating point numbers, or boolean values. Optimizely rejects events with any other data types (for example, arrays). -Segment defaults to identifying users with their `anonymousId`. Enabling "Use User ID" setting in your Segment dashboard means that only `track` events triggered by identified users are passed downstream to Optimizely. You may optionally fall back to `anonymousId` when `userId` is unavailable by setting `fallbackToAnonymousId` to `true`. +Segment defaults to identifying users with their `anonymousId`. Enabling the **Use User ID** setting in your Segment dashboard means that only Track events triggered by identified users are passed downstream to Optimizely. You may optionally fall back to `anonymousId` when `userId` is unavailable by setting `fallbackToAnonymousId` to `true`. ### Identify -Invoking a Segment `identify` event sets Segment `traits` as Optimizely `attributes`. The `attributes` are sent downstream to Optimizely upon invocation of the next Segment `track` event. +Invoking a Segment Identify event sets Segment `traits` as Optimizely `attributes`. The `attributes` are sent downstream to Optimizely upon invocation of the next Segment Track event. ## Reset Invoking this method invalidates the listener for the `Experiment Viewed` event. -### Notification Listeners - -If you want to use Optimizely's [notification listeners](https://docs.developers.optimizely.com/full-stack/docs/notification-listeners){:target="_blank"}, you must use the Optimizely native code to invoke them (in addition to using the Segment SDKs). Notification listeners require an [instantiated Optimizely client](https://docs.developers.optimizely.com/full-stack/docs/java#section-2-instantiate-optimizely){:target="_blank"} to be accessed, and so are not available for Segment `track` events when you connect to Optimizely using cloud-mode. +### Notification listeners +If you want to use Optimizely's [notification listeners](https://docs.developers.optimizely.com/full-stack/docs/notification-listeners){:target="_blank"}, you must use the Optimizely native code to invoke them (in addition to using the Segment SDKs). Notification listeners require an [instantiated Optimizely client](https://docs.developers.optimizely.com/full-stack/docs/java#section-2-instantiate-optimizely){:target="_blank"} to be accessed, and so are not available for Segment Track events when you connect to Optimizely using cloud-mode. -## iOS Cloud-mode Implementation +## iOS cloud-mode implementation -### Getting Started +### Getting started -1. In your Segment source dashboard, enable the "Optimizely Full Stack" destination (*not the "Optimizely Web" destination*). +1. In your Segment source dashboard, enable the "Optimizely Full Stack" destination (**not the "Optimizely Web" destination**). 2. Include the latest version of Optimizely Full Stack's native SDK in your app and [implement it as you would natively](https://docs.developers.optimizely.com/full-stack/docs/install-the-sdk#section-ios-and-tvos){:target="_blank"}. -3. Finally, define any [`events`](https://docs.developers.optimizely.com/full-stack/docs/create-events){:target="_blank"} and [`attributes`](https://docs.developers.optimizely.com/full-stack/docs/define-attributes){:target="_blank"} in your Optimizely dashboard, and to associate `metrics` with the appropriate Optimizely Experiments. Segment maps `track` event names to Optimizely `eventName` - the `eventName` corresponds to an experiment `metric`. In addition, Segment maps `identify` `traits` to Optimizely `attributes`. +3. Finally, define any [`events`](https://docs.developers.optimizely.com/full-stack/docs/create-events){:target="_blank"} and [`attributes`](https://docs.developers.optimizely.com/full-stack/docs/define-attributes){:target="_blank"} in your Optimizely dashboard, and to associate `metrics` with the appropriate Optimizely Experiments. Segment maps Track event names to Optimizely `eventName` - the `eventName` corresponds to an experiment `metric`. In addition, Segment maps Identify `traits` to Optimizely `attributes`. -When implementing Optimizely using cloud-mode, Segment will map `track` events to Optimizely `track` events on our servers and deliver the data to your Optimizely project as usual. +When implementing Optimizely using cloud-mode, Segment mapS Track events to Optimizely Track events on our servers and deliver the data to your Optimizely project as usual. > warning "Optimizely SDKs v1.x or v2.x require matching attributes objects for correct attribution" > If you use Optimizely SDKs v1.x or v2.x and use any `activate` or `isFeatureEnabled` calls, the `attributes` object for each user must match the `attributes` object passed to any Track calls for that user id so that it can be correctly attributed on the Optimizely results page. -If you are using Optimizely SDKs v3+, [Easy Event Tracking](https://blog.optimizely.com/2019/02/26/introducing-easy-event-tracking-the-easier-way-to-understand-and-optimize-the-customer-journey/){:target="_blank"} is enabled by default for decision events. Set up does not require maintaining the attributes of a user as long as the user id stays the same between Optimizely `activate` and `isFeatureEnabled` calls and Segment `track` calls to have Optimizely `metrics` populated in the Optimizely results page. If you would like to segment your Optimizely results by user `attribute`, then make sure the `attributes` passed in for the `activate` and `isFeatureEnabled` calls match the `attributes` passed in for the `track` calls for that user id. +If you are using Optimizely SDKs v3+, [Easy Event Tracking](https://blog.optimizely.com/2019/02/26/introducing-easy-event-tracking-the-easier-way-to-understand-and-optimize-the-customer-journey/){:target="_blank"} is enabled by default for decision events. Set up does not require maintaining the attributes of a user as long as the user id stays the same between Optimizely `activate` and `isFeatureEnabled` calls and Segment Track calls to have Optimizely `metrics` populated in the Optimizely results page. If you would like to segment your Optimizely results by user `attribute`, then make sure the `attributes` passed in for the `activate` and `isFeatureEnabled` calls match the `attributes` passed in for the Track calls for that user id. -For more details on how events are attributed on the Optimizely results page, refer to their documentation [How Optimzely Experimentation counts conversions](https://support.optimizely.com/hc/en-us/articles/19888476989325-How-Optimizely-Experimentation-counts-conversions){:target="_blank"}. +For more details on how events are attributed on the Optimizely results page, refer to Optimizely's documentation on [How Optimzely Experimentation counts conversions](https://support.optimizely.com/hc/en-us/articles/19888476989325-How-Optimizely-Experimentation-counts-conversions){:target="_blank"}. ### Track -Upon invocation of a Segment `track` event, Segment maps the event to an Optimizely `track` event: -* If the Segment event name matches exactly the name of an active experiment `metric` set up in the Optimizely dashboard; -* If the experiment `metric` is associated with a running experiment; +Upon invocation of a Segment Track event, Segment maps the event to an Optimizely Track event: +* If the Segment event name matches exactly the name of an active experiment `metric` set up in the Optimizely dashboard. +* If the experiment `metric` is associated with a running experiment. * If the current user is activated in a running experiment with the associated `metric`. Segment also handles the following mapping: -* Segment `track` event name to Optimizely `eventName`. -* Segment `track` event `properties` to Optimizely `eventTags`. +* Segment Track event name to Optimizely `eventName`. +* Segment Track event `properties` to Optimizely `eventTags`. -`revenue` values should be passed as a Segment `property`. The value should be an integer and represent the value in cents, so, for example, $1 should be represented by `100`. +`revenue` values should be passed as a Segment `property`. The value should be an integer and represent the value in cents. For example, $1 should be represented by `100`. > info "Custom Event Tags are not displayed on the Optimizely results page" > Optimizely's [Custom Event Tags](https://docs.developers.optimizely.com/full-stack/docs/include-event-tags){:target="_blank"}, which include all Event Tags except `revenue` and `value`, are not displayed on the Optimizely results page. However, these tags are available in a [Data Export](https://docs.developers.optimizely.com/web/docs/data-export){:target="_blank"} report. Event Tags can be strings, integers, floating point numbers, or boolean values. Optimizely rejects events with any other data types (for example, arrays). -Segment defaults to identifying users with their `anonymousId`. Enabling "Use User ID" setting in your Segment dashboard means that only `track` events triggered by identified users are passed downstream to Optimizely. You may optionally fall back to `anonymousId` when `userId` is unavailable by setting `fallbackToAnonymousId` to `true`. +Segment defaults to identifying users with their `anonymousId`. Enabling the **Use User ID** setting in your Segment dashboard means that only Track events triggered by identified users are passed downstream to Optimizely. You may optionally fall back to `anonymousId` when `userId` is unavailable by setting `fallbackToAnonymousId` to `true`. ### Identify -Invoking a Segment `identify` event sets Segment `traits` as Optimizely `attributes`. The `attributes` are sent downstream to Optimizely upon invocation of the next Segment `track` event. +Invoking a Segment Identify event sets Segment `traits` as Optimizely `attributes`. The `attributes` are sent downstream to Optimizely upon invocation of the next Segment Track event. -### Notification Listeners +### Notification listeners -Notification listeners are not available for Segment `track` events when implementing Optimizely using Segment using cloud-mode. [Notification listeners](https://docs.developers.optimizely.com/full-stack/docs/notification-listeners){:target="_blank"} are still available with any native call invoked from your Optimizely client instance. +Notification listeners are not available for Segment Track events when implementing Optimizely using Segment using cloud-mode. [Notification listeners](https://docs.developers.optimizely.com/full-stack/docs/notification-listeners){:target="_blank"} are still available with any native call invoked from your Optimizely client instance. ## Engage Follow these instructions on how to set up Engage and Optimizely: -* [Using Segment Personas and Optimizely Full Stack for Omnichannel Experiments](https://www.optimizely.com/insights/blog/segment-personas-optimizely-full-stack-omnichannel-experiments/){:target="_blank"} +* [Using Segment Personas and Optimizely Full Stack for Omnichannel Experiments](https://www.optimizely.com/insights/blog/segment-personas-optimizely-full-stack-omnichannel-experiments/){:target="_blank"}. -## GDPR Support -Segment supports deleting/suppressing users in Optimizely using the [Segment app](/docs/privacy/user-deletion-and-suppression/). In order to do this however, you will need to create a [Personal Access Token](https://developers.optimizely.com/x/authentication/personal-token/){:target="_blank"} in Optimizely and provide it as the value of the Access Token setting. +## GDPR support +Segment supports deleting or rsuppressing users in Optimizely using the [Segment app](/docs/privacy/user-deletion-and-suppression/). In order to do this however, you need to create a [Personal Access Token](https://developers.optimizely.com/x/authentication/personal-token/){:target="_blank"} in Optimizely and provide it as the value of the Access Token setting. From e0fd3152444c5f377d847009d6639c1ee8b05477 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 17:50:29 +0100 Subject: [PATCH 130/140] Update Pendo documentation for clarity and consistency --- .../destinations/catalog/pendo/index.md | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/src/connections/destinations/catalog/pendo/index.md b/src/connections/destinations/catalog/pendo/index.md index 13b38600e8..5ed5e8ac11 100644 --- a/src/connections/destinations/catalog/pendo/index.md +++ b/src/connections/destinations/catalog/pendo/index.md @@ -5,34 +5,32 @@ id: 575ef2fc80412f644ff139be --- [Pendo](http://www.pendo.io/){:target="_blank"} is a product cloud that helps product teams deliver software users love. With Pendo, product teams can understand product usage, collect feedback, measure NPS, onboard users, and announce new features in app—all without requiring engineering resources. -Pendo maintains this destination. For any issues with the destination, [contact the Pendo Support team](https://support.pendo.io/hc/en-us/articles/360034163971){:target="_blank"}. - -## Getting Started - +Pendo maintains this destination. For any issues with the destination, [contact the Pendo support team](https://support.pendo.io/hc/en-us/articles/360034163971){:target="_blank"}. +## Getting started 1. From the Segment web app, click **Catalog**. 2. Search for "Pendo" in the Catalog, select it, and choose which of your sources to connect the destination to. -3. In the destination settings, enter your Pendo API Key which a Pendo admin can find in the Pendo UI by going to Settings > [Subscription Settings](https://app.pendo.io/admin){:target="_blank"} > Applications, opening the relevant app, then locating the **API key** value. +3. In the destination settings, enter your Pendo API Key. To find the key in the Pendo UI as a Pendo admin, go to **Settings > [Subscription Settings](https://app.pendo.io/admin){:target="_blank"} > Applications**, open the relevant app, then locate the **API key** value. Your changes appear in the Segment CDN in about 45 minutes, and then Analytics.js starts asynchronously loading Pendo's snippet on your page and sending data. - This pulls in all page and click events without needing to make additional method calls. +This pulls in all page and click events without needing to make additional method calls. ### Cloud-mode configuration -> info "" -> The Pendo destination does not natively support Cloud-mode connections. Use the [Webhook](/docs/connections/destinations/catalog/webhooks) destination to send data to Pendo using a Cloud-mode connection. +> info "Pendo does not natively support cloud-mode connections" +> The Pendo destination does not natively support cloud-mode connections. Use the [webhook](/docs/connections/destinations/catalog/webhooks) destination to send data to Pendo using a cloud-mode connection. -To add the Pendo destination using Cloud-mode, use the [Webhooks](/docs/connections/destinations/catalog/webhooks) destination to enable Segment to send data to Pendo through a webhook. +To add the Pendo destination using cloud-mode, use the [webhooks](/docs/connections/destinations/catalog/webhooks) destination to enable Segment to send data to Pendo through a webhook. 1. From the Segment web app, click **Catalog**. 2. Search for **Webhooks** in the Catalog, select it, and choose which of your JavaScript sources to connect the destination to. -3. Webhook URL configuration will vary based on which Pendo environment you use and your API key: - * For US customers, add the following as your Webhook URL: `https://data.pendo.io/data/segmentio/YOUR_PENDO_API_KEY` and replace `YOUR_PENDO_API_KEY` with your actual Pendo API Key, which a Pendo Admin can find in the Pendo UI by going to **Settings** > [Subscription Settings](https://app.pendo.io/admin){:target="_blank"} > **Applications**, opening the relevant app, then locating the **API key** value. - * For EU customers, add the following as your Webhook URL: `https://data.eu.pendo.io/data/segmentio/YOUR_PENDO_API_KEY` and replace `YOUR_PENDO_API_KEY` with your actual Pendo API Key, which a Pendo Admin can find in the Pendo UI by going to **Settings** > [Subscription Settings](https://app.eu.pendo.io/admin){:target="_blank"} > **Applications**, opening the relevant app, then locating the **API Key** value. +3. Webhook URL configuration varies based on which Pendo environment you use and your API key: + * For US customers, add the following as your Webhook URL: `https://data.pendo.io/data/segmentio/YOUR_PENDO_API_KEY` and replace `YOUR_PENDO_API_KEY` with your actual Pendo API Key. + * For EU customers, add the following as your Webhook URL: `https://data.eu.pendo.io/data/segmentio/YOUR_PENDO_API_KEY` and replace `YOUR_PENDO_API_KEY` with your actual Pendo API Key. 4. Headers are not required in Webhook configuration. Once you're done adding in your URL, save changes. -5. Using the `track` method requires a setting enabled on your Pendo subscription (cloud-mode only). Contact Pendo to enable this feature flag for your account. +5. Using the [Track method](/docs/connections/spec/track/) requires a setting enabled on your Pendo subscription (cloud-mode only). Contact Pendo to enable this feature flag for your account. To learn more about server-side data to Pendo, see Pendo's [support documentation](https://support.pendo.io/hc/en-us/articles/360031870352){:target="_blank"}. From 51f286dfaa9acd5320741c8c20dbb166a4566063 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 17:57:33 +0100 Subject: [PATCH 131/140] Revise Planhat documentation for clarity Updated text for clarity and consistency in the Planhat documentation. --- .../destinations/catalog/planhat/index.md | 27 +++++++++---------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/connections/destinations/catalog/planhat/index.md b/src/connections/destinations/catalog/planhat/index.md index bc6aa9ef9e..08cb3c80a4 100644 --- a/src/connections/destinations/catalog/planhat/index.md +++ b/src/connections/destinations/catalog/planhat/index.md @@ -2,26 +2,25 @@ title: Planhat Destination id: 55bbefd70a20f4e22f0fb3e5 --- -## Getting Started +## Getting started -Getting data from Segment to Planhat's [Customer Success Tool](http://www.planhat.com/){:target="_blank"} is easy. +You can get data from Segment to Planhat's [Customer Success Tool](http://www.planhat.com/){:target="_blank"} following these steps: +1. Once the Segment library is integrated with your product, toggle Planhat on in your Segment destinations. +2. Add your Planhat API Key which you can generate in Planhat under **App Settings > API Access**. -Once the Segment library is integrated with your product, toggle Planhat on in your Segment destinations, and add your Planhat API Key which you can generate in Planhat under App Settings > API Access. +The Segment-Planhat destination is 100% handled through the Segment servers, so you don't need to bundle their iOS or Android SDKs. Your Segment SDK is enough. -The Segment Planhat destination is 100% handled through our servers, so you don't need to bundle their iOS or Android SDKs. Your Segment SDK will be enough. - -The Segment Planhat destination supports Identify, Page, Track, and Group calls. For more information, see the [Segment Spec documentation](/docs/connections/spec/). +The destination also supports Identify, Page, Track, and Group calls. For more information, see the [Segment Spec documentation](/docs/connections/spec/). ## Identify -When you `identify` a user, we'll pass that user's information to Planhat with `userId` as Planhat's External User ID. Segment's special traits recognized as Planhat's standard contact profile fields (in parentheses) are: - -- `name` (`name`) -- `title` (`title`) -- `email` (`email`) -- `user_id` (`externalId`) +When you Identify a user, the user's information is passed on to Planhat with `userId` as Planhat's External User ID. Segment's special traits recognized as Planhat's standard contact profile fields (in parentheses) are: +- `name` (`name`). +- `title` (`title`). +- `email` (`email`). +- `user_id` (`externalId`). -In addition, all calls will get Segment as 'source'. +In addition, all calls get Segment as 'source'. -If the `userId` or `traits.email` matches an existing Contact in Planhat the Identify-call will automatically be associated with that Contact. Otherwise a new Contact will be created in Planhat. New Contacts received from Segment can either be discarded or manually assigned to a Customer profile in Planhat. +If the `userId` or `traits.email` matches an existing Contact in Planhat the Identify-call is automatically associated with that Contact. Otherwise a new Contact is created in Planhat. New Contacts received from Segment can either be discarded or manually assigned to a Customer profile in Planhat. From 3ea36d65961698e20c00ff215a8eacfe4255703a Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 17:59:43 +0100 Subject: [PATCH 132/140] Fix formatting and grammar in PostHog setup guide Corrected capitalization and punctuation in instructions. --- .../destinations/catalog/posthog/index.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/connections/destinations/catalog/posthog/index.md b/src/connections/destinations/catalog/posthog/index.md index e3a0d8acb8..07fa921e84 100644 --- a/src/connections/destinations/catalog/posthog/index.md +++ b/src/connections/destinations/catalog/posthog/index.md @@ -11,15 +11,15 @@ This destination is maintained by PostHog. For any issues with the destination, ## Getting started -1. From the Destinations catalog page in the Segment App, click **Add Destination**. +1. From the destinations catalog page in the Segment App, click **Add Destination**. 2. Search for "PostHog" in the Destinations Catalog, and select the PostHog destination. -3. Choose which Source should send data to the PostHog destination. +3. Choose which source should send data to the PostHog destination. 4. Go to your [PostHog project settings](https://us.posthog.com/settings/project#variables){:target="_blank"}, and copy the **project API key**. 5. Enter the project API Key that you copied in the PostHog destination settings in Segment. -6. Enter your PostHog instance address *without any trailing slash*, for example: - - `https://us.i.posthog.com` if you use PostHog US Cloud - - `https://eu.i.posthog.com` if you use PostHog EU Cloud - - Your self-hosted URL if you self-host +6. Enter your PostHog instance address **without any trailing slash**, for example: + - `https://us.i.posthog.com` if you use PostHog US Cloud. + - `https://eu.i.posthog.com` if you use PostHog EU Cloud. + - Your self-hosted URL if you self-host. ## Page From 94906aef6e845424d6d8dbecb534341ffe984daa Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 18:07:27 +0100 Subject: [PATCH 133/140] wording clean up Updated text for clarity and consistency in Preact documentation. --- src/connections/destinations/catalog/preact/index.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/connections/destinations/catalog/preact/index.md b/src/connections/destinations/catalog/preact/index.md index dca33417bb..a06ce6f218 100644 --- a/src/connections/destinations/catalog/preact/index.md +++ b/src/connections/destinations/catalog/preact/index.md @@ -5,26 +5,26 @@ title: Preact Destination ## Identify -To create users in in Preact you'll use our [`identify`](/docs/connections/spec/identify) method. Users must be identified on the client side for events to appear in Preact. +To create users in in Preact, use the [Identify](/docs/connections/spec/identify) method. Users must be identified on the client side for events to appear in Preact. ## Group -To group users into accounts in preact you'll use our [`group`](/docs/connections/spec/group) method. +To group users into accounts in Preact, use the [Group](/docs/connections/spec/group) method. ## Track -Our [`track`](/docs/connections/spec/track) method will record events in Preact. Users must be identified on the client side for events to appear in Preact. +The [Track](/docs/connections/spec/track) method records events in Preact. Users must be identified on the client side for events to appear in Preact. ## Features -### Recording Errors +### Recording errors -Preact can be really useful for customer support. For that to work well you'll want to send error events to Preact. +Preact can be useful for customer support. For that to work, you can send error events to Preact. -All you have to do is add a "!" as the first character in the event name and Preact will recognize it as an error event. Properties sent with the event will also show up in Preact. +All you have to do is add a "!" as the first character in the event name and Preact recognizes it as an error event. Properties sent with the event also showa up in Preact. Here's a JavaScript example: ```javascript From cdd782fc1335a223d96b0459d9c225016e93df8a Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 18:09:03 +0100 Subject: [PATCH 134/140] more edits Clarified instructions for recording errors in Preact. --- src/connections/destinations/catalog/preact/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/preact/index.md b/src/connections/destinations/catalog/preact/index.md index a06ce6f218..7a256831cb 100644 --- a/src/connections/destinations/catalog/preact/index.md +++ b/src/connections/destinations/catalog/preact/index.md @@ -24,7 +24,7 @@ The [Track](/docs/connections/spec/track) method records events in Preact. Users Preact can be useful for customer support. For that to work, you can send error events to Preact. -All you have to do is add a "!" as the first character in the event name and Preact recognizes it as an error event. Properties sent with the event also showa up in Preact. +Add a "!" as the first character in the event name and Preact recognizes it as an error event. Properties sent with the event also show up in Preact. Here's a JavaScript example: ```javascript From 3f35856e4cfef53f38fb8290c6b714f2710399f8 Mon Sep 17 00:00:00 2001 From: CristhianMotoche Date: Thu, 16 Oct 2025 12:10:34 -0500 Subject: [PATCH 135/140] chore: Modify to simplify migration --- src/connections/destinations/catalog/apptimize/index.md | 4 ++-- src/connections/destinations/catalog/bugsnag/index.md | 8 +++++--- src/connections/destinations/catalog/chartbeat/index.md | 2 -- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/connections/destinations/catalog/apptimize/index.md b/src/connections/destinations/catalog/apptimize/index.md index 267b921d74..52b3060d44 100644 --- a/src/connections/destinations/catalog/apptimize/index.md +++ b/src/connections/destinations/catalog/apptimize/index.md @@ -14,7 +14,7 @@ id: 5537d3e80a20f4e22f0fb385 3. In the destination settings, enter your Apptimize application key, the 31 character key which you can find in your [Apptimize app settings](https://apptimize.com/admin/settings/apps). 4. Depending on the mobile library you've selected, follow the below instructions to complete your setup. -_**NOTE:** There is also an advanced setting to publish Apptimize experiment data to Segment. If you choose to automatically record screen events or track Application lifecycle events, these will also be reflected in Apptimize. You also have access to all normal Apptimize non-Segment functionality. To integrate, simply pull in the destination as a dependency and include the Apptimize Integration Factory when setting up Segment Analytics. _ +_**NOTE:** There is also an advanced setting to publish Apptimize experiment data to Segment. If you choose to automatically record screen events or track Application lifecycle events, these will also be reflected in Apptimize. You also have access to all normal Apptimize non-Segment functionality. To integrate, simply pull in the destination as a dependency and include the Apptimize Integration Factory when setting up Segment Analytics._ ### iOS @@ -60,7 +60,7 @@ Set the plist property `ApptimizeAppKey` to the corresponding app key for the ap #### Android -Use the [Apptimize.setup](https://sdk.apptimize.com/android/javadocs/javadoc-2.12.10/com/apptimize/Apptimize.html#setup(android.content.Context,%20java.lang.String){:target="_blank"} API to initialize Apptimize with the app key. +Use the [Apptimize.setup](https://sdk.apptimize.com/android/javadocs/javadoc-2.12.10/com/apptimize/Apptimize.html#setup\(android.content.Context,%20java.lang.String\)){:target="_blank"} API to initialize Apptimize with the app key. It is important to note that if the app keys in the plist/code and the Segment dashboard do not match, the SDK will use the app key from the plist/code as it finishes initialization first. While it is safe to initialize Apptimize multiple times in the app, to avoid confusion, be very careful that the app key is the same in both the places. diff --git a/src/connections/destinations/catalog/bugsnag/index.md b/src/connections/destinations/catalog/bugsnag/index.md index 73c2a1f28f..c984afa769 100644 --- a/src/connections/destinations/catalog/bugsnag/index.md +++ b/src/connections/destinations/catalog/bugsnag/index.md @@ -7,9 +7,11 @@ id: 54521fd525e721e32a72ee9b At the moment, we support the following integrations: -Web | [Analytics.js SDK 2.1.0](https://github.com/segment-integrations/analytics.js-integration-bugsnag){:target="_blank"} -Android | [Android SDK 2.0.0](https://github.com/segment-integrations/analytics-android-integration-bugsnag){:target="_blank"} -iOS | [iOS SDK 1.0.3](https://github.com/segment-integrations/analytics-ios-integration-bugsnag){:target="_blank"} +| | | +|---|---| +| Web | [Analytics.js SDK 2.1.0](https://github.com/segment-integrations/analytics.js-integration-bugsnag){:target="_blank"} | +| Android | [Android SDK 2.0.0](https://github.com/segment-integrations/analytics-android-integration-bugsnag){:target="_blank"} | +| iOS | [iOS SDK 1.0.3](https://github.com/segment-integrations/analytics-ios-integration-bugsnag){:target="_blank"} | ## Getting Started diff --git a/src/connections/destinations/catalog/chartbeat/index.md b/src/connections/destinations/catalog/chartbeat/index.md index aff9d7cac4..4978534d71 100644 --- a/src/connections/destinations/catalog/chartbeat/index.md +++ b/src/connections/destinations/catalog/chartbeat/index.md @@ -11,8 +11,6 @@ When you enable Chartbeat in the Segment web app, your changes appear in the Seg Chartbeat is only supported on the client-side. -- - - - ## Page From 8d884c8a236cdb30e2bdba05d6004614308f1983 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 18:11:50 +0100 Subject: [PATCH 136/140] where did you come from?? --- src/connections/destinations/catalog/preact/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/connections/destinations/catalog/preact/index.md b/src/connections/destinations/catalog/preact/index.md index 7a256831cb..abcafd81ef 100644 --- a/src/connections/destinations/catalog/preact/index.md +++ b/src/connections/destinations/catalog/preact/index.md @@ -1,5 +1,6 @@ --- title: Preact Destination +hidden: true --- From 25fee3435e6670de8d17743099d925f1f3d7eae1 Mon Sep 17 00:00:00 2001 From: sade-wusi Date: Thu, 16 Oct 2025 18:48:09 +0100 Subject: [PATCH 137/140] Run catalog --- src/_data/catalog/destination_categories.yml | 2 +- src/_data/catalog/destinations.yml | 2942 ++++-------------- src/_data/catalog/destinations_private.yml | 2 +- src/_data/catalog/source_categories.yml | 2 +- src/_data/catalog/sources.yml | 2 +- 5 files changed, 530 insertions(+), 2420 deletions(-) diff --git a/src/_data/catalog/destination_categories.yml b/src/_data/catalog/destination_categories.yml index 0735e55a5d..6969b60aed 100644 --- a/src/_data/catalog/destination_categories.yml +++ b/src/_data/catalog/destination_categories.yml @@ -1,5 +1,5 @@ # AUTOGENERATED FROM PUBLIC API. DO NOT EDIT -# destination categories last updated 2025-10-09 +# destination categories last updated 2025-10-16 items: - display_name: A/B Testing slug: a-b-testing diff --git a/src/_data/catalog/destinations.yml b/src/_data/catalog/destinations.yml index 2902261e3e..0f8740abb7 100644 --- a/src/_data/catalog/destinations.yml +++ b/src/_data/catalog/destinations.yml @@ -1,5 +1,5 @@ # AUTOGENERATED FROM PUBLIC API. DO NOT EDIT -# destination data last updated 2025-10-09 +# destination data last updated 2025-10-16 items: - id: 637e8d185e2dec264895ea89 display_name: 1Flow @@ -7678,2302 +7678,6 @@ items: allowNull: false presets: [] partnerOwned: false -- id: 683ef14a3f9aac157e3a3446 - display_name: Amazon Conversions Api - name: Amazon Conversions Api - slug: amazon-conversions-api - hidden: false - endpoints: - - US - regions: - - us-west-2 - - eu-west-1 - url: connections/destinations/catalog/amazon-conversions-api - previous_names: - - Amazon Conversions Api - website: https://advertising.amazon.com/help/GEDE65PCE2CL5P63 - status: PUBLIC_BETA - categories: - - Advertising - - Attribution - logo: - url: https://cdn-devcenter.segment.com/a4e77672-0b0c-4c68-b522-bbd6f83d33b5.svg - mark: - url: https://cdn-devcenter.segment.com/51ad439c-55ca-4bc7-97f4-3cd896f24766.svg - methods: - track: true - identify: true - group: true - alias: true - screen: false - page: true - platforms: - browser: true - mobile: false - server: true - warehouse: true - cloudAppObject: false - linkedAudiences: true - components: [] - browserUnbundlingSupported: false - browserUnbundlingPublic: false - replay: false - connection_modes: - device: - web: false - mobile: false - server: false - cloud: - web: true - mobile: false - server: true - settings: - - name: advertiserId - type: string - defaultValue: '' - description: Your Amazon Advertiser Account ID. - required: true - label: Amazon Advertiser ID - - name: region - type: select - defaultValue: https://advertising-api.amazon.com - description: Region for API Endpoint, either NA, EU, FE. - required: true - label: Region - actions: - - id: 3PXoEXmHMzVcnY5RaMTcQp - name: Track Conversion - slug: trackConversion - description: Send conversion event data to Amazon Events API - platform: CLOUD - hidden: false - defaultTrigger: type = "track" - fields: - - id: qgPBt4VU1i9xAd7B9VeAtF - sortOrder: 0 - fieldKey: name - label: Event Name - type: STRING - description: The name of the imported event. - placeholder: '' - defaultValue: - '@path': $.event - required: true - multiple: false - choices: null - dynamic: false - allowNull: false - - id: hqKYNYP77wh4xNjxN2VzJa - sortOrder: 1 - fieldKey: eventType - label: Event Type - type: STRING - description: The standard Amazon event type. - placeholder: '' - required: true - multiple: false - choices: - - label: Add to Shopping Cart - value: ADD_TO_SHOPPING_CART - - label: Application - value: APPLICATION - - label: Checkout - value: CHECKOUT - - label: Contact - value: CONTACT - - label: Lead - value: LEAD - - label: Off Amazon Purchases - value: OFF_AMAZON_PURCHASES - - label: Mobile App First Start - value: MOBILE_APP_FIRST_START - - label: Page View - value: PAGE_VIEW - - label: Search - value: SEARCH - - label: Sign Up - value: SIGN_UP - - label: Subscribe - value: SUBSCRIBE - - label: Other - value: OTHER - dynamic: false - allowNull: false - - id: kWXzbjoTkpx4aWmfePffqR - sortOrder: 2 - fieldKey: eventActionSource - label: Event Action Source - type: STRING - description: >- - The platform from which the event was sourced. If no value is provided, - then website is used as default. - placeholder: '' - defaultValue: - '@if': - exists: - '@path': $.context.device.type - then: - '@path': $.context.device.type - else: website - required: true - multiple: false - choices: - - label: Android - value: android - - label: Fire TV - value: fire_tv - - label: iOS - value: ios - - label: Offline - value: offline - - label: Website - value: website - dynamic: false - allowNull: false - - id: 6ZXd93NwZbHq1HWx8Dy4R9 - sortOrder: 3 - fieldKey: countryCode - label: Country Code - type: STRING - description: >- - ISO 3166-1 alpha-2 country code. e.g., US, GB. Also accepts locale - codes. e.g en-US, en-GB. - placeholder: '' - defaultValue: - '@path': $.context.locale - required: true - multiple: false - choices: null - dynamic: false - allowNull: false - - id: qEbRQtxiwE6UXgVqgew7gu - sortOrder: 4 - fieldKey: timestamp - label: Event Timestamp - type: STRING - description: >- - The reported timestamp of when the event occurred in ISO format - (YYYY-MM-DDThh:mm:ssTZD). - placeholder: '' - defaultValue: - '@path': $.timestamp - required: true - multiple: false - choices: null - dynamic: false - allowNull: false - - id: rMe47AeWoAE33izcVbNMGX - sortOrder: 5 - fieldKey: value - label: Value - type: NUMBER - description: The value of the event. - placeholder: '' - defaultValue: - '@path': $.properties.value - required: false - multiple: false - choices: null - dynamic: false - allowNull: false - - id: pFA5UVqRSZ8MF6WTEcYsH2 - sortOrder: 6 - fieldKey: currencyCode - label: Currency Code - type: STRING - description: >- - The currencyCode associated with the 'value' of the event in ISO-4217 - format. Only applicable for OFF_AMAZON_PURCHASES event type. - placeholder: '' - defaultValue: - '@path': $.properties.currency - required: false - multiple: false - choices: - - label: AED - UAE Dirham - value: AED - - label: AUD - Australian Dollar - value: AUD - - label: BRL - Brazilian Real - value: BRL - - label: CAD - Canadian Dollar - value: CAD - - label: CNY - Chinese Yuan - value: CNY - - label: EUR - Euro - value: EUR - - label: GBP - British Pound - value: GBP - - label: INR - Indian Rupee - value: INR - - label: JPY - Japanese Yen - value: JPY - - label: MXN - Mexican Peso - value: MXN - - label: SAR - Saudi Riyal - value: SAR - - label: SEK - Swedish Krona - value: SEK - - label: SGD - Singapore Dollar - value: SGD - - label: TRY - Turkish Lira - value: TRY - - label: USD - US Dollar - value: USD - - label: DKK - Danish Krone - value: DKK - - label: NOK - Norwegian Krone - value: NOK - - label: NZD - New Zealand Dollar - value: NZD - dynamic: false - allowNull: false - - id: gPjsuc6hZv3Ao8BPPVF1HT - sortOrder: 7 - fieldKey: unitsSold - label: Units Sold - type: INTEGER - description: >- - The number of items purchased. Only applicable for OFF_AMAZON_PURCHASES - event type. If not provided on the event, a default of 1 will be - applied. - placeholder: '' - defaultValue: - '@path': $.properties.quantity - required: false - multiple: false - choices: null - dynamic: false - allowNull: false - - id: pKg4gSsqnBn9GX8PsEk5qv - sortOrder: 8 - fieldKey: clientDedupeId - label: Client Dedupe ID - type: STRING - description: >- - Amazon Conversions API uses the `clientDedupeId` field to prevent - duplicate events. By default, Segment maps the messageId to this field. - For events with the same clientDedupeId, only the latest event will be - processed. Please be advised that deduplication occurs across all event - types, rather than being limited to individual event types. - placeholder: '' - defaultValue: - '@path': $.messageId - required: false - multiple: false - choices: null - dynamic: false - allowNull: false - - id: rGnUAdVa6EL8GcZSw4T7Re - sortOrder: 9 - fieldKey: matchKeys - label: Match Keys - type: OBJECT - description: >- - Match keys are used to identify the customer associated with the event - for attribution. At least one match key must be provided. - placeholder: '' - defaultValue: - email: - '@if': - exists: - '@path': $.context.traits.email - then: - '@path': $.context.traits.email - else: - '@path': $.properties.email - phone: - '@if': - exists: - '@path': $.context.traits.phone - then: - '@path': $.context.traits.phone - else: - '@path': $.properties.phone - firstName: - '@if': - exists: - '@path': $.context.traits.firstName - then: - '@path': $.context.traits.firstName - else: - '@path': $.properties.firstName - lastName: - '@if': - exists: - '@path': $.context.traits.lastName - then: - '@path': $.context.traits.lastName - else: - '@path': $.properties.lastName - address: - '@if': - exists: - '@path': $.context.traits.street - then: - '@path': $.context.traits.street - else: - '@path': $.properties.street - city: - '@if': - exists: - '@path': $.context.traits.city - then: - '@path': $.context.traits.city - else: - '@path': $.properties.city - state: - '@if': - exists: - '@path': $.context.traits.state - then: - '@path': $.context.traits.state - else: - '@path': $.properties.state - postalCode: - '@if': - exists: - '@path': $.context.traits.postalCode - then: - '@path': $.context.traits.postalCode - else: - '@path': $.properties.postalCode - maid: - '@path': context.device.advertisingId - rampId: - '@if': - exists: - '@path': $.context.traits.rampId - then: - '@path': $.context.traits.rampId - else: - '@path': $.properties.rampId - matchId: - '@if': - exists: - '@path': $.context.traits.matchId - then: - '@path': $.context.traits.matchId - else: - '@path': $.properties.matchId - required: true - multiple: false - choices: null - dynamic: false - allowNull: false - - id: csMgVG3qpFU5cS3c4Gzf1k - sortOrder: 10 - fieldKey: dataProcessingOptions - label: Data Processing Options - type: STRING - description: >- - A list of flags for signaling how an event shall be processed. Events - marked for limited data use will not be processed. - placeholder: '' - defaultValue: - '@path': $.properties.dataProcessingOptions - required: false - multiple: true - choices: - - label: Limited Data Use - value: LIMITED_DATA_USE - dynamic: false - allowNull: false - - id: 7RekLhoew8JipZEbxxMJgb - sortOrder: 11 - fieldKey: consent - label: Consent - type: OBJECT - description: >- - Describes consent given by the user for advertising purposes. For EU - advertisers, it is required to provide one of Geo ipAddress, - amazonConsent, tcf, or gpp. - placeholder: '' - defaultValue: - ipAddress: - '@path': $.context.ip - amznAdStorage: - '@path': $.properties.amznAdStorage - amznUserData: - '@path': $.properties.amznUserData - tcf: - '@path': $.properties.tcf - gpp: - '@path': $.properties.gpp - required: false - multiple: false - choices: null - dynamic: false - allowNull: false - - id: 2xTkY2f7p33a19dTA8Ly8i - sortOrder: 12 - fieldKey: customAttributes - label: Custom Attributes - type: OBJECT - description: >- - Custom attributes associated with the event to provide additional - context. Note that only brand, category, productId and attr1 - attr10 - custom attributes are used for reporting. - placeholder: '' - defaultValue: - brand: - '@path': $.properties.brand - category: - '@path': $.properties.category - productId: - '@path': $.properties.productId - attr1: - '@path': $.properties.attr1 - attr2: - '@path': $.properties.attr2 - attr3: - '@path': $.properties.attr3 - attr4: - '@path': $.properties.attr4 - attr5: - '@path': $.properties.attr5 - attr6: - '@path': $.properties.attr6 - attr7: - '@path': $.properties.attr7 - attr8: - '@path': $.properties.attr8 - attr9: - '@path': $.properties.attr9 - attr10: - '@path': $.properties.attr10 - required: false - multiple: false - choices: null - dynamic: false - allowNull: false - - id: 29gVGBzJAjVHfNx6XYWAVY - sortOrder: 13 - fieldKey: enable_batching - label: Enable Batching - type: BOOLEAN - description: When enabled, Segment will send data in batching. - placeholder: '' - defaultValue: true - required: true - multiple: false - choices: null - dynamic: false - allowNull: false - presets: - - actionId: 3PXoEXmHMzVcnY5RaMTcQp - name: Sign Up - fields: - name: - '@path': $.event - eventActionSource: - '@if': - exists: - '@path': $.context.device.type - then: - '@path': $.context.device.type - else: website - countryCode: - '@path': $.context.locale - timestamp: - '@path': $.timestamp - value: - '@path': $.properties.value - currencyCode: - '@path': $.properties.currency - unitsSold: - '@path': $.properties.quantity - clientDedupeId: - '@path': $.messageId - matchKeys: - email: - '@if': - exists: - '@path': $.context.traits.email - then: - '@path': $.context.traits.email - else: - '@path': $.properties.email - phone: - '@if': - exists: - '@path': $.context.traits.phone - then: - '@path': $.context.traits.phone - else: - '@path': $.properties.phone - firstName: - '@if': - exists: - '@path': $.context.traits.firstName - then: - '@path': $.context.traits.firstName - else: - '@path': $.properties.firstName - lastName: - '@if': - exists: - '@path': $.context.traits.lastName - then: - '@path': $.context.traits.lastName - else: - '@path': $.properties.lastName - address: - '@if': - exists: - '@path': $.context.traits.street - then: - '@path': $.context.traits.street - else: - '@path': $.properties.street - city: - '@if': - exists: - '@path': $.context.traits.city - then: - '@path': $.context.traits.city - else: - '@path': $.properties.city - state: - '@if': - exists: - '@path': $.context.traits.state - then: - '@path': $.context.traits.state - else: - '@path': $.properties.state - postalCode: - '@if': - exists: - '@path': $.context.traits.postalCode - then: - '@path': $.context.traits.postalCode - else: - '@path': $.properties.postalCode - maid: - '@path': context.device.advertisingId - rampId: - '@if': - exists: - '@path': $.context.traits.rampId - then: - '@path': $.context.traits.rampId - else: - '@path': $.properties.rampId - matchId: - '@if': - exists: - '@path': $.context.traits.matchId - then: - '@path': $.context.traits.matchId - else: - '@path': $.properties.matchId - dataProcessingOptions: - '@path': $.properties.dataProcessingOptions - consent: - ipAddress: - '@path': $.context.ip - amznAdStorage: - '@path': $.properties.amznAdStorage - amznUserData: - '@path': $.properties.amznUserData - tcf: - '@path': $.properties.tcf - gpp: - '@path': $.properties.gpp - customAttributes: - brand: - '@path': $.properties.brand - category: - '@path': $.properties.category - productId: - '@path': $.properties.productId - attr1: - '@path': $.properties.attr1 - attr2: - '@path': $.properties.attr2 - attr3: - '@path': $.properties.attr3 - attr4: - '@path': $.properties.attr4 - attr5: - '@path': $.properties.attr5 - attr6: - '@path': $.properties.attr6 - attr7: - '@path': $.properties.attr7 - attr8: - '@path': $.properties.attr8 - attr9: - '@path': $.properties.attr9 - attr10: - '@path': $.properties.attr10 - enable_batching: true - batch_size: 500 - eventType: SIGN_UP - trigger: type = "track" AND event = "Signed Up" - - actionId: 3PXoEXmHMzVcnY5RaMTcQp - name: Subscribe - fields: - name: - '@path': $.event - eventActionSource: - '@if': - exists: - '@path': $.context.device.type - then: - '@path': $.context.device.type - else: website - countryCode: - '@path': $.context.locale - timestamp: - '@path': $.timestamp - value: - '@path': $.properties.value - currencyCode: - '@path': $.properties.currency - unitsSold: - '@path': $.properties.quantity - clientDedupeId: - '@path': $.messageId - matchKeys: - email: - '@if': - exists: - '@path': $.context.traits.email - then: - '@path': $.context.traits.email - else: - '@path': $.properties.email - phone: - '@if': - exists: - '@path': $.context.traits.phone - then: - '@path': $.context.traits.phone - else: - '@path': $.properties.phone - firstName: - '@if': - exists: - '@path': $.context.traits.firstName - then: - '@path': $.context.traits.firstName - else: - '@path': $.properties.firstName - lastName: - '@if': - exists: - '@path': $.context.traits.lastName - then: - '@path': $.context.traits.lastName - else: - '@path': $.properties.lastName - address: - '@if': - exists: - '@path': $.context.traits.street - then: - '@path': $.context.traits.street - else: - '@path': $.properties.street - city: - '@if': - exists: - '@path': $.context.traits.city - then: - '@path': $.context.traits.city - else: - '@path': $.properties.city - state: - '@if': - exists: - '@path': $.context.traits.state - then: - '@path': $.context.traits.state - else: - '@path': $.properties.state - postalCode: - '@if': - exists: - '@path': $.context.traits.postalCode - then: - '@path': $.context.traits.postalCode - else: - '@path': $.properties.postalCode - maid: - '@path': context.device.advertisingId - rampId: - '@if': - exists: - '@path': $.context.traits.rampId - then: - '@path': $.context.traits.rampId - else: - '@path': $.properties.rampId - matchId: - '@if': - exists: - '@path': $.context.traits.matchId - then: - '@path': $.context.traits.matchId - else: - '@path': $.properties.matchId - dataProcessingOptions: - '@path': $.properties.dataProcessingOptions - consent: - ipAddress: - '@path': $.context.ip - amznAdStorage: - '@path': $.properties.amznAdStorage - amznUserData: - '@path': $.properties.amznUserData - tcf: - '@path': $.properties.tcf - gpp: - '@path': $.properties.gpp - customAttributes: - brand: - '@path': $.properties.brand - category: - '@path': $.properties.category - productId: - '@path': $.properties.productId - attr1: - '@path': $.properties.attr1 - attr2: - '@path': $.properties.attr2 - attr3: - '@path': $.properties.attr3 - attr4: - '@path': $.properties.attr4 - attr5: - '@path': $.properties.attr5 - attr6: - '@path': $.properties.attr6 - attr7: - '@path': $.properties.attr7 - attr8: - '@path': $.properties.attr8 - attr9: - '@path': $.properties.attr9 - attr10: - '@path': $.properties.attr10 - enable_batching: true - batch_size: 500 - eventType: SUBSCRIBE - trigger: type = "track" AND event = "Subscription Created" - - actionId: 3PXoEXmHMzVcnY5RaMTcQp - name: Off Amazon Purchases - fields: - name: - '@path': $.event - eventActionSource: - '@if': - exists: - '@path': $.context.device.type - then: - '@path': $.context.device.type - else: website - countryCode: - '@path': $.context.locale - timestamp: - '@path': $.timestamp - value: - '@path': $.properties.value - currencyCode: - '@path': $.properties.currency - unitsSold: - '@path': $.properties.quantity - clientDedupeId: - '@path': $.messageId - matchKeys: - email: - '@if': - exists: - '@path': $.context.traits.email - then: - '@path': $.context.traits.email - else: - '@path': $.properties.email - phone: - '@if': - exists: - '@path': $.context.traits.phone - then: - '@path': $.context.traits.phone - else: - '@path': $.properties.phone - firstName: - '@if': - exists: - '@path': $.context.traits.firstName - then: - '@path': $.context.traits.firstName - else: - '@path': $.properties.firstName - lastName: - '@if': - exists: - '@path': $.context.traits.lastName - then: - '@path': $.context.traits.lastName - else: - '@path': $.properties.lastName - address: - '@if': - exists: - '@path': $.context.traits.street - then: - '@path': $.context.traits.street - else: - '@path': $.properties.street - city: - '@if': - exists: - '@path': $.context.traits.city - then: - '@path': $.context.traits.city - else: - '@path': $.properties.city - state: - '@if': - exists: - '@path': $.context.traits.state - then: - '@path': $.context.traits.state - else: - '@path': $.properties.state - postalCode: - '@if': - exists: - '@path': $.context.traits.postalCode - then: - '@path': $.context.traits.postalCode - else: - '@path': $.properties.postalCode - maid: - '@path': context.device.advertisingId - rampId: - '@if': - exists: - '@path': $.context.traits.rampId - then: - '@path': $.context.traits.rampId - else: - '@path': $.properties.rampId - matchId: - '@if': - exists: - '@path': $.context.traits.matchId - then: - '@path': $.context.traits.matchId - else: - '@path': $.properties.matchId - dataProcessingOptions: - '@path': $.properties.dataProcessingOptions - consent: - ipAddress: - '@path': $.context.ip - amznAdStorage: - '@path': $.properties.amznAdStorage - amznUserData: - '@path': $.properties.amznUserData - tcf: - '@path': $.properties.tcf - gpp: - '@path': $.properties.gpp - customAttributes: - brand: - '@path': $.properties.brand - category: - '@path': $.properties.category - productId: - '@path': $.properties.productId - attr1: - '@path': $.properties.attr1 - attr2: - '@path': $.properties.attr2 - attr3: - '@path': $.properties.attr3 - attr4: - '@path': $.properties.attr4 - attr5: - '@path': $.properties.attr5 - attr6: - '@path': $.properties.attr6 - attr7: - '@path': $.properties.attr7 - attr8: - '@path': $.properties.attr8 - attr9: - '@path': $.properties.attr9 - attr10: - '@path': $.properties.attr10 - enable_batching: true - batch_size: 500 - eventType: OFF_AMAZON_PURCHASES - trigger: type = "track" AND event = "Order Completed" - - actionId: 3PXoEXmHMzVcnY5RaMTcQp - name: Page View - fields: - name: - '@path': $.event - eventActionSource: - '@if': - exists: - '@path': $.context.device.type - then: - '@path': $.context.device.type - else: website - countryCode: - '@path': $.context.locale - timestamp: - '@path': $.timestamp - value: - '@path': $.properties.value - currencyCode: - '@path': $.properties.currency - unitsSold: - '@path': $.properties.quantity - clientDedupeId: - '@path': $.messageId - matchKeys: - email: - '@if': - exists: - '@path': $.context.traits.email - then: - '@path': $.context.traits.email - else: - '@path': $.properties.email - phone: - '@if': - exists: - '@path': $.context.traits.phone - then: - '@path': $.context.traits.phone - else: - '@path': $.properties.phone - firstName: - '@if': - exists: - '@path': $.context.traits.firstName - then: - '@path': $.context.traits.firstName - else: - '@path': $.properties.firstName - lastName: - '@if': - exists: - '@path': $.context.traits.lastName - then: - '@path': $.context.traits.lastName - else: - '@path': $.properties.lastName - address: - '@if': - exists: - '@path': $.context.traits.street - then: - '@path': $.context.traits.street - else: - '@path': $.properties.street - city: - '@if': - exists: - '@path': $.context.traits.city - then: - '@path': $.context.traits.city - else: - '@path': $.properties.city - state: - '@if': - exists: - '@path': $.context.traits.state - then: - '@path': $.context.traits.state - else: - '@path': $.properties.state - postalCode: - '@if': - exists: - '@path': $.context.traits.postalCode - then: - '@path': $.context.traits.postalCode - else: - '@path': $.properties.postalCode - maid: - '@path': context.device.advertisingId - rampId: - '@if': - exists: - '@path': $.context.traits.rampId - then: - '@path': $.context.traits.rampId - else: - '@path': $.properties.rampId - matchId: - '@if': - exists: - '@path': $.context.traits.matchId - then: - '@path': $.context.traits.matchId - else: - '@path': $.properties.matchId - dataProcessingOptions: - '@path': $.properties.dataProcessingOptions - consent: - ipAddress: - '@path': $.context.ip - amznAdStorage: - '@path': $.properties.amznAdStorage - amznUserData: - '@path': $.properties.amznUserData - tcf: - '@path': $.properties.tcf - gpp: - '@path': $.properties.gpp - customAttributes: - brand: - '@path': $.properties.brand - category: - '@path': $.properties.category - productId: - '@path': $.properties.productId - attr1: - '@path': $.properties.attr1 - attr2: - '@path': $.properties.attr2 - attr3: - '@path': $.properties.attr3 - attr4: - '@path': $.properties.attr4 - attr5: - '@path': $.properties.attr5 - attr6: - '@path': $.properties.attr6 - attr7: - '@path': $.properties.attr7 - attr8: - '@path': $.properties.attr8 - attr9: - '@path': $.properties.attr9 - attr10: - '@path': $.properties.attr10 - enable_batching: true - batch_size: 500 - eventType: PAGE_VIEW - trigger: type = "page" - - actionId: 3PXoEXmHMzVcnY5RaMTcQp - name: Other - fields: - name: - '@path': $.event - eventActionSource: - '@if': - exists: - '@path': $.context.device.type - then: - '@path': $.context.device.type - else: website - countryCode: - '@path': $.context.locale - timestamp: - '@path': $.timestamp - value: - '@path': $.properties.value - currencyCode: - '@path': $.properties.currency - unitsSold: - '@path': $.properties.quantity - clientDedupeId: - '@path': $.messageId - matchKeys: - email: - '@if': - exists: - '@path': $.context.traits.email - then: - '@path': $.context.traits.email - else: - '@path': $.properties.email - phone: - '@if': - exists: - '@path': $.context.traits.phone - then: - '@path': $.context.traits.phone - else: - '@path': $.properties.phone - firstName: - '@if': - exists: - '@path': $.context.traits.firstName - then: - '@path': $.context.traits.firstName - else: - '@path': $.properties.firstName - lastName: - '@if': - exists: - '@path': $.context.traits.lastName - then: - '@path': $.context.traits.lastName - else: - '@path': $.properties.lastName - address: - '@if': - exists: - '@path': $.context.traits.street - then: - '@path': $.context.traits.street - else: - '@path': $.properties.street - city: - '@if': - exists: - '@path': $.context.traits.city - then: - '@path': $.context.traits.city - else: - '@path': $.properties.city - state: - '@if': - exists: - '@path': $.context.traits.state - then: - '@path': $.context.traits.state - else: - '@path': $.properties.state - postalCode: - '@if': - exists: - '@path': $.context.traits.postalCode - then: - '@path': $.context.traits.postalCode - else: - '@path': $.properties.postalCode - maid: - '@path': context.device.advertisingId - rampId: - '@if': - exists: - '@path': $.context.traits.rampId - then: - '@path': $.context.traits.rampId - else: - '@path': $.properties.rampId - matchId: - '@if': - exists: - '@path': $.context.traits.matchId - then: - '@path': $.context.traits.matchId - else: - '@path': $.properties.matchId - dataProcessingOptions: - '@path': $.properties.dataProcessingOptions - consent: - ipAddress: - '@path': $.context.ip - amznAdStorage: - '@path': $.properties.amznAdStorage - amznUserData: - '@path': $.properties.amznUserData - tcf: - '@path': $.properties.tcf - gpp: - '@path': $.properties.gpp - customAttributes: - brand: - '@path': $.properties.brand - category: - '@path': $.properties.category - productId: - '@path': $.properties.productId - attr1: - '@path': $.properties.attr1 - attr2: - '@path': $.properties.attr2 - attr3: - '@path': $.properties.attr3 - attr4: - '@path': $.properties.attr4 - attr5: - '@path': $.properties.attr5 - attr6: - '@path': $.properties.attr6 - attr7: - '@path': $.properties.attr7 - attr8: - '@path': $.properties.attr8 - attr9: - '@path': $.properties.attr9 - attr10: - '@path': $.properties.attr10 - enable_batching: true - batch_size: 500 - eventType: OTHER - trigger: type = "track" AND event = "Other" - - actionId: 3PXoEXmHMzVcnY5RaMTcQp - name: Checkout - fields: - name: - '@path': $.event - eventActionSource: - '@if': - exists: - '@path': $.context.device.type - then: - '@path': $.context.device.type - else: website - countryCode: - '@path': $.context.locale - timestamp: - '@path': $.timestamp - value: - '@path': $.properties.value - currencyCode: - '@path': $.properties.currency - unitsSold: - '@path': $.properties.quantity - clientDedupeId: - '@path': $.messageId - matchKeys: - email: - '@if': - exists: - '@path': $.context.traits.email - then: - '@path': $.context.traits.email - else: - '@path': $.properties.email - phone: - '@if': - exists: - '@path': $.context.traits.phone - then: - '@path': $.context.traits.phone - else: - '@path': $.properties.phone - firstName: - '@if': - exists: - '@path': $.context.traits.firstName - then: - '@path': $.context.traits.firstName - else: - '@path': $.properties.firstName - lastName: - '@if': - exists: - '@path': $.context.traits.lastName - then: - '@path': $.context.traits.lastName - else: - '@path': $.properties.lastName - address: - '@if': - exists: - '@path': $.context.traits.street - then: - '@path': $.context.traits.street - else: - '@path': $.properties.street - city: - '@if': - exists: - '@path': $.context.traits.city - then: - '@path': $.context.traits.city - else: - '@path': $.properties.city - state: - '@if': - exists: - '@path': $.context.traits.state - then: - '@path': $.context.traits.state - else: - '@path': $.properties.state - postalCode: - '@if': - exists: - '@path': $.context.traits.postalCode - then: - '@path': $.context.traits.postalCode - else: - '@path': $.properties.postalCode - maid: - '@path': context.device.advertisingId - rampId: - '@if': - exists: - '@path': $.context.traits.rampId - then: - '@path': $.context.traits.rampId - else: - '@path': $.properties.rampId - matchId: - '@if': - exists: - '@path': $.context.traits.matchId - then: - '@path': $.context.traits.matchId - else: - '@path': $.properties.matchId - dataProcessingOptions: - '@path': $.properties.dataProcessingOptions - consent: - ipAddress: - '@path': $.context.ip - amznAdStorage: - '@path': $.properties.amznAdStorage - amznUserData: - '@path': $.properties.amznUserData - tcf: - '@path': $.properties.tcf - gpp: - '@path': $.properties.gpp - customAttributes: - brand: - '@path': $.properties.brand - category: - '@path': $.properties.category - productId: - '@path': $.properties.productId - attr1: - '@path': $.properties.attr1 - attr2: - '@path': $.properties.attr2 - attr3: - '@path': $.properties.attr3 - attr4: - '@path': $.properties.attr4 - attr5: - '@path': $.properties.attr5 - attr6: - '@path': $.properties.attr6 - attr7: - '@path': $.properties.attr7 - attr8: - '@path': $.properties.attr8 - attr9: - '@path': $.properties.attr9 - attr10: - '@path': $.properties.attr10 - enable_batching: true - batch_size: 500 - eventType: CHECKOUT - trigger: type = "track" AND event = "Checkout Started" - - actionId: 3PXoEXmHMzVcnY5RaMTcQp - name: Add to Shopping Cart - fields: - name: - '@path': $.event - eventActionSource: - '@if': - exists: - '@path': $.context.device.type - then: - '@path': $.context.device.type - else: website - countryCode: - '@path': $.context.locale - timestamp: - '@path': $.timestamp - value: - '@path': $.properties.value - currencyCode: - '@path': $.properties.currency - unitsSold: - '@path': $.properties.quantity - clientDedupeId: - '@path': $.messageId - matchKeys: - email: - '@if': - exists: - '@path': $.context.traits.email - then: - '@path': $.context.traits.email - else: - '@path': $.properties.email - phone: - '@if': - exists: - '@path': $.context.traits.phone - then: - '@path': $.context.traits.phone - else: - '@path': $.properties.phone - firstName: - '@if': - exists: - '@path': $.context.traits.firstName - then: - '@path': $.context.traits.firstName - else: - '@path': $.properties.firstName - lastName: - '@if': - exists: - '@path': $.context.traits.lastName - then: - '@path': $.context.traits.lastName - else: - '@path': $.properties.lastName - address: - '@if': - exists: - '@path': $.context.traits.street - then: - '@path': $.context.traits.street - else: - '@path': $.properties.street - city: - '@if': - exists: - '@path': $.context.traits.city - then: - '@path': $.context.traits.city - else: - '@path': $.properties.city - state: - '@if': - exists: - '@path': $.context.traits.state - then: - '@path': $.context.traits.state - else: - '@path': $.properties.state - postalCode: - '@if': - exists: - '@path': $.context.traits.postalCode - then: - '@path': $.context.traits.postalCode - else: - '@path': $.properties.postalCode - maid: - '@path': context.device.advertisingId - rampId: - '@if': - exists: - '@path': $.context.traits.rampId - then: - '@path': $.context.traits.rampId - else: - '@path': $.properties.rampId - matchId: - '@if': - exists: - '@path': $.context.traits.matchId - then: - '@path': $.context.traits.matchId - else: - '@path': $.properties.matchId - dataProcessingOptions: - '@path': $.properties.dataProcessingOptions - consent: - ipAddress: - '@path': $.context.ip - amznAdStorage: - '@path': $.properties.amznAdStorage - amznUserData: - '@path': $.properties.amznUserData - tcf: - '@path': $.properties.tcf - gpp: - '@path': $.properties.gpp - customAttributes: - brand: - '@path': $.properties.brand - category: - '@path': $.properties.category - productId: - '@path': $.properties.productId - attr1: - '@path': $.properties.attr1 - attr2: - '@path': $.properties.attr2 - attr3: - '@path': $.properties.attr3 - attr4: - '@path': $.properties.attr4 - attr5: - '@path': $.properties.attr5 - attr6: - '@path': $.properties.attr6 - attr7: - '@path': $.properties.attr7 - attr8: - '@path': $.properties.attr8 - attr9: - '@path': $.properties.attr9 - attr10: - '@path': $.properties.attr10 - enable_batching: true - batch_size: 500 - eventType: ADD_TO_SHOPPING_CART - trigger: type = "track" AND event = "Product Added" - - actionId: 3PXoEXmHMzVcnY5RaMTcQp - name: Mobile App First Start - fields: - name: - '@path': $.event - eventActionSource: - '@if': - exists: - '@path': $.context.device.type - then: - '@path': $.context.device.type - else: website - countryCode: - '@path': $.context.locale - timestamp: - '@path': $.timestamp - value: - '@path': $.properties.value - currencyCode: - '@path': $.properties.currency - unitsSold: - '@path': $.properties.quantity - clientDedupeId: - '@path': $.messageId - matchKeys: - email: - '@if': - exists: - '@path': $.context.traits.email - then: - '@path': $.context.traits.email - else: - '@path': $.properties.email - phone: - '@if': - exists: - '@path': $.context.traits.phone - then: - '@path': $.context.traits.phone - else: - '@path': $.properties.phone - firstName: - '@if': - exists: - '@path': $.context.traits.firstName - then: - '@path': $.context.traits.firstName - else: - '@path': $.properties.firstName - lastName: - '@if': - exists: - '@path': $.context.traits.lastName - then: - '@path': $.context.traits.lastName - else: - '@path': $.properties.lastName - address: - '@if': - exists: - '@path': $.context.traits.street - then: - '@path': $.context.traits.street - else: - '@path': $.properties.street - city: - '@if': - exists: - '@path': $.context.traits.city - then: - '@path': $.context.traits.city - else: - '@path': $.properties.city - state: - '@if': - exists: - '@path': $.context.traits.state - then: - '@path': $.context.traits.state - else: - '@path': $.properties.state - postalCode: - '@if': - exists: - '@path': $.context.traits.postalCode - then: - '@path': $.context.traits.postalCode - else: - '@path': $.properties.postalCode - maid: - '@path': context.device.advertisingId - rampId: - '@if': - exists: - '@path': $.context.traits.rampId - then: - '@path': $.context.traits.rampId - else: - '@path': $.properties.rampId - matchId: - '@if': - exists: - '@path': $.context.traits.matchId - then: - '@path': $.context.traits.matchId - else: - '@path': $.properties.matchId - dataProcessingOptions: - '@path': $.properties.dataProcessingOptions - consent: - ipAddress: - '@path': $.context.ip - amznAdStorage: - '@path': $.properties.amznAdStorage - amznUserData: - '@path': $.properties.amznUserData - tcf: - '@path': $.properties.tcf - gpp: - '@path': $.properties.gpp - customAttributes: - brand: - '@path': $.properties.brand - category: - '@path': $.properties.category - productId: - '@path': $.properties.productId - attr1: - '@path': $.properties.attr1 - attr2: - '@path': $.properties.attr2 - attr3: - '@path': $.properties.attr3 - attr4: - '@path': $.properties.attr4 - attr5: - '@path': $.properties.attr5 - attr6: - '@path': $.properties.attr6 - attr7: - '@path': $.properties.attr7 - attr8: - '@path': $.properties.attr8 - attr9: - '@path': $.properties.attr9 - attr10: - '@path': $.properties.attr10 - enable_batching: true - batch_size: 500 - eventType: MOBILE_APP_FIRST_START - trigger: type = "track" AND event = "Application Opened" - - actionId: 3PXoEXmHMzVcnY5RaMTcQp - name: Contact - fields: - name: - '@path': $.event - eventActionSource: - '@if': - exists: - '@path': $.context.device.type - then: - '@path': $.context.device.type - else: website - countryCode: - '@path': $.context.locale - timestamp: - '@path': $.timestamp - value: - '@path': $.properties.value - currencyCode: - '@path': $.properties.currency - unitsSold: - '@path': $.properties.quantity - clientDedupeId: - '@path': $.messageId - matchKeys: - email: - '@if': - exists: - '@path': $.context.traits.email - then: - '@path': $.context.traits.email - else: - '@path': $.properties.email - phone: - '@if': - exists: - '@path': $.context.traits.phone - then: - '@path': $.context.traits.phone - else: - '@path': $.properties.phone - firstName: - '@if': - exists: - '@path': $.context.traits.firstName - then: - '@path': $.context.traits.firstName - else: - '@path': $.properties.firstName - lastName: - '@if': - exists: - '@path': $.context.traits.lastName - then: - '@path': $.context.traits.lastName - else: - '@path': $.properties.lastName - address: - '@if': - exists: - '@path': $.context.traits.street - then: - '@path': $.context.traits.street - else: - '@path': $.properties.street - city: - '@if': - exists: - '@path': $.context.traits.city - then: - '@path': $.context.traits.city - else: - '@path': $.properties.city - state: - '@if': - exists: - '@path': $.context.traits.state - then: - '@path': $.context.traits.state - else: - '@path': $.properties.state - postalCode: - '@if': - exists: - '@path': $.context.traits.postalCode - then: - '@path': $.context.traits.postalCode - else: - '@path': $.properties.postalCode - maid: - '@path': context.device.advertisingId - rampId: - '@if': - exists: - '@path': $.context.traits.rampId - then: - '@path': $.context.traits.rampId - else: - '@path': $.properties.rampId - matchId: - '@if': - exists: - '@path': $.context.traits.matchId - then: - '@path': $.context.traits.matchId - else: - '@path': $.properties.matchId - dataProcessingOptions: - '@path': $.properties.dataProcessingOptions - consent: - ipAddress: - '@path': $.context.ip - amznAdStorage: - '@path': $.properties.amznAdStorage - amznUserData: - '@path': $.properties.amznUserData - tcf: - '@path': $.properties.tcf - gpp: - '@path': $.properties.gpp - customAttributes: - brand: - '@path': $.properties.brand - category: - '@path': $.properties.category - productId: - '@path': $.properties.productId - attr1: - '@path': $.properties.attr1 - attr2: - '@path': $.properties.attr2 - attr3: - '@path': $.properties.attr3 - attr4: - '@path': $.properties.attr4 - attr5: - '@path': $.properties.attr5 - attr6: - '@path': $.properties.attr6 - attr7: - '@path': $.properties.attr7 - attr8: - '@path': $.properties.attr8 - attr9: - '@path': $.properties.attr9 - attr10: - '@path': $.properties.attr10 - enable_batching: true - batch_size: 500 - eventType: CONTACT - trigger: type = "track" AND event = "Callback Started" - - actionId: 3PXoEXmHMzVcnY5RaMTcQp - name: Lead - fields: - name: - '@path': $.event - eventActionSource: - '@if': - exists: - '@path': $.context.device.type - then: - '@path': $.context.device.type - else: website - countryCode: - '@path': $.context.locale - timestamp: - '@path': $.timestamp - value: - '@path': $.properties.value - currencyCode: - '@path': $.properties.currency - unitsSold: - '@path': $.properties.quantity - clientDedupeId: - '@path': $.messageId - matchKeys: - email: - '@if': - exists: - '@path': $.context.traits.email - then: - '@path': $.context.traits.email - else: - '@path': $.properties.email - phone: - '@if': - exists: - '@path': $.context.traits.phone - then: - '@path': $.context.traits.phone - else: - '@path': $.properties.phone - firstName: - '@if': - exists: - '@path': $.context.traits.firstName - then: - '@path': $.context.traits.firstName - else: - '@path': $.properties.firstName - lastName: - '@if': - exists: - '@path': $.context.traits.lastName - then: - '@path': $.context.traits.lastName - else: - '@path': $.properties.lastName - address: - '@if': - exists: - '@path': $.context.traits.street - then: - '@path': $.context.traits.street - else: - '@path': $.properties.street - city: - '@if': - exists: - '@path': $.context.traits.city - then: - '@path': $.context.traits.city - else: - '@path': $.properties.city - state: - '@if': - exists: - '@path': $.context.traits.state - then: - '@path': $.context.traits.state - else: - '@path': $.properties.state - postalCode: - '@if': - exists: - '@path': $.context.traits.postalCode - then: - '@path': $.context.traits.postalCode - else: - '@path': $.properties.postalCode - maid: - '@path': context.device.advertisingId - rampId: - '@if': - exists: - '@path': $.context.traits.rampId - then: - '@path': $.context.traits.rampId - else: - '@path': $.properties.rampId - matchId: - '@if': - exists: - '@path': $.context.traits.matchId - then: - '@path': $.context.traits.matchId - else: - '@path': $.properties.matchId - dataProcessingOptions: - '@path': $.properties.dataProcessingOptions - consent: - ipAddress: - '@path': $.context.ip - amznAdStorage: - '@path': $.properties.amznAdStorage - amznUserData: - '@path': $.properties.amznUserData - tcf: - '@path': $.properties.tcf - gpp: - '@path': $.properties.gpp - customAttributes: - brand: - '@path': $.properties.brand - category: - '@path': $.properties.category - productId: - '@path': $.properties.productId - attr1: - '@path': $.properties.attr1 - attr2: - '@path': $.properties.attr2 - attr3: - '@path': $.properties.attr3 - attr4: - '@path': $.properties.attr4 - attr5: - '@path': $.properties.attr5 - attr6: - '@path': $.properties.attr6 - attr7: - '@path': $.properties.attr7 - attr8: - '@path': $.properties.attr8 - attr9: - '@path': $.properties.attr9 - attr10: - '@path': $.properties.attr10 - enable_batching: true - batch_size: 500 - eventType: LEAD - trigger: type = "track" AND event = "Lead Generated" - - actionId: 3PXoEXmHMzVcnY5RaMTcQp - name: Application - fields: - name: - '@path': $.event - eventActionSource: - '@if': - exists: - '@path': $.context.device.type - then: - '@path': $.context.device.type - else: website - countryCode: - '@path': $.context.locale - timestamp: - '@path': $.timestamp - value: - '@path': $.properties.value - currencyCode: - '@path': $.properties.currency - unitsSold: - '@path': $.properties.quantity - clientDedupeId: - '@path': $.messageId - matchKeys: - email: - '@if': - exists: - '@path': $.context.traits.email - then: - '@path': $.context.traits.email - else: - '@path': $.properties.email - phone: - '@if': - exists: - '@path': $.context.traits.phone - then: - '@path': $.context.traits.phone - else: - '@path': $.properties.phone - firstName: - '@if': - exists: - '@path': $.context.traits.firstName - then: - '@path': $.context.traits.firstName - else: - '@path': $.properties.firstName - lastName: - '@if': - exists: - '@path': $.context.traits.lastName - then: - '@path': $.context.traits.lastName - else: - '@path': $.properties.lastName - address: - '@if': - exists: - '@path': $.context.traits.street - then: - '@path': $.context.traits.street - else: - '@path': $.properties.street - city: - '@if': - exists: - '@path': $.context.traits.city - then: - '@path': $.context.traits.city - else: - '@path': $.properties.city - state: - '@if': - exists: - '@path': $.context.traits.state - then: - '@path': $.context.traits.state - else: - '@path': $.properties.state - postalCode: - '@if': - exists: - '@path': $.context.traits.postalCode - then: - '@path': $.context.traits.postalCode - else: - '@path': $.properties.postalCode - maid: - '@path': context.device.advertisingId - rampId: - '@if': - exists: - '@path': $.context.traits.rampId - then: - '@path': $.context.traits.rampId - else: - '@path': $.properties.rampId - matchId: - '@if': - exists: - '@path': $.context.traits.matchId - then: - '@path': $.context.traits.matchId - else: - '@path': $.properties.matchId - dataProcessingOptions: - '@path': $.properties.dataProcessingOptions - consent: - ipAddress: - '@path': $.context.ip - amznAdStorage: - '@path': $.properties.amznAdStorage - amznUserData: - '@path': $.properties.amznUserData - tcf: - '@path': $.properties.tcf - gpp: - '@path': $.properties.gpp - customAttributes: - brand: - '@path': $.properties.brand - category: - '@path': $.properties.category - productId: - '@path': $.properties.productId - attr1: - '@path': $.properties.attr1 - attr2: - '@path': $.properties.attr2 - attr3: - '@path': $.properties.attr3 - attr4: - '@path': $.properties.attr4 - attr5: - '@path': $.properties.attr5 - attr6: - '@path': $.properties.attr6 - attr7: - '@path': $.properties.attr7 - attr8: - '@path': $.properties.attr8 - attr9: - '@path': $.properties.attr9 - attr10: - '@path': $.properties.attr10 - enable_batching: true - batch_size: 500 - eventType: APPLICATION - trigger: type = "track" AND event = "Application Submitted" - - actionId: 3PXoEXmHMzVcnY5RaMTcQp - name: Search - fields: - name: - '@path': $.event - eventActionSource: - '@if': - exists: - '@path': $.context.device.type - then: - '@path': $.context.device.type - else: website - countryCode: - '@path': $.context.locale - timestamp: - '@path': $.timestamp - value: - '@path': $.properties.value - currencyCode: - '@path': $.properties.currency - unitsSold: - '@path': $.properties.quantity - clientDedupeId: - '@path': $.messageId - matchKeys: - email: - '@if': - exists: - '@path': $.context.traits.email - then: - '@path': $.context.traits.email - else: - '@path': $.properties.email - phone: - '@if': - exists: - '@path': $.context.traits.phone - then: - '@path': $.context.traits.phone - else: - '@path': $.properties.phone - firstName: - '@if': - exists: - '@path': $.context.traits.firstName - then: - '@path': $.context.traits.firstName - else: - '@path': $.properties.firstName - lastName: - '@if': - exists: - '@path': $.context.traits.lastName - then: - '@path': $.context.traits.lastName - else: - '@path': $.properties.lastName - address: - '@if': - exists: - '@path': $.context.traits.street - then: - '@path': $.context.traits.street - else: - '@path': $.properties.street - city: - '@if': - exists: - '@path': $.context.traits.city - then: - '@path': $.context.traits.city - else: - '@path': $.properties.city - state: - '@if': - exists: - '@path': $.context.traits.state - then: - '@path': $.context.traits.state - else: - '@path': $.properties.state - postalCode: - '@if': - exists: - '@path': $.context.traits.postalCode - then: - '@path': $.context.traits.postalCode - else: - '@path': $.properties.postalCode - maid: - '@path': context.device.advertisingId - rampId: - '@if': - exists: - '@path': $.context.traits.rampId - then: - '@path': $.context.traits.rampId - else: - '@path': $.properties.rampId - matchId: - '@if': - exists: - '@path': $.context.traits.matchId - then: - '@path': $.context.traits.matchId - else: - '@path': $.properties.matchId - dataProcessingOptions: - '@path': $.properties.dataProcessingOptions - consent: - ipAddress: - '@path': $.context.ip - amznAdStorage: - '@path': $.properties.amznAdStorage - amznUserData: - '@path': $.properties.amznUserData - tcf: - '@path': $.properties.tcf - gpp: - '@path': $.properties.gpp - customAttributes: - brand: - '@path': $.properties.brand - category: - '@path': $.properties.category - productId: - '@path': $.properties.productId - attr1: - '@path': $.properties.attr1 - attr2: - '@path': $.properties.attr2 - attr3: - '@path': $.properties.attr3 - attr4: - '@path': $.properties.attr4 - attr5: - '@path': $.properties.attr5 - attr6: - '@path': $.properties.attr6 - attr7: - '@path': $.properties.attr7 - attr8: - '@path': $.properties.attr8 - attr9: - '@path': $.properties.attr9 - attr10: - '@path': $.properties.attr10 - enable_batching: true - batch_size: 500 - eventType: SEARCH - trigger: type = "track" AND event = "Products Searched" - partnerOwned: true - id: 5d1994fb320116000112aa12 display_name: Amazon EventBridge name: Amazon EventBridge @@ -30815,7 +28519,7 @@ items: logo: url: https://cdn-devcenter.segment.com/9e709c23-539a-4c50-9a9a-3212e726baa1.svg mark: - url: https://cdn-devcenter.segment.com/887dae0e-f6a3-4f55-a5f1-157b65cccc20.svg + url: https://cdn-devcenter.segment.com/34845397-e130-4972-9990-29c37e66e48d.svg methods: track: true identify: true @@ -95208,6 +92912,406 @@ items: actions: [] presets: [] partnerOwned: false +- id: 66cc76e29693c9e5591bf029 + display_name: Nextdoor Conversions API + name: Nextdoor Conversions API + slug: nextdoor-conversions-api + hidden: false + endpoints: + - US + regions: + - us-west-2 + - eu-west-1 + url: connections/destinations/catalog/nextdoor-conversions-api + previous_names: + - Nextdoor Conversions API + website: https://nextdoor.com/ + status: PUBLIC_BETA + categories: + - Advertising + - Attribution + logo: + url: https://cdn-devcenter.segment.com/32c46ddc-fe44-4a08-b134-db4269ce8232.svg + mark: + url: https://cdn-devcenter.segment.com/58fca57c-8676-4e90-85b3-c0461a94a11d.svg + methods: + track: true + identify: true + group: true + alias: true + screen: false + page: true + platforms: + browser: true + mobile: false + server: true + warehouse: false + cloudAppObject: false + linkedAudiences: true + components: [] + browserUnbundlingSupported: false + browserUnbundlingPublic: false + replay: false + connection_modes: + device: + web: false + mobile: false + server: false + cloud: + web: true + mobile: false + server: true + settings: + - name: apiKey + type: password + defaultValue: '' + description: >- + The Embed API Key for your account. You can find this on your settings + pages. + required: true + label: API Key + - name: client_id + type: string + defaultValue: '' + description: >- + Your Nextdoor Advertiser ID for self serve clients can be found in your + NAM account for managed your support team can provide + required: true + label: Nextdoor Advertiser ID + - name: pixel_id + type: string + defaultValue: '' + description: >- + Nextdoor Pixel Id. Used for deduplication when events are sent via CAPI + and front end Pixel. + required: true + label: Nextdoor Pixel Id + actions: + - id: 7hSAaxpKp56cqggHVoM5Ss + name: Send Conversion + slug: sendConversion + description: Send Conversion Event to Nextdoor + platform: CLOUD + hidden: false + defaultTrigger: null + fields: + - id: rxBViDnV5Mfwn4CzwvyAnj + sortOrder: 0 + fieldKey: event_name + label: Event Name + type: STRING + description: The name of the event to track + placeholder: '' + required: true + multiple: false + choices: + - label: Custom Conversion 1 + value: custom_conversion_1 + - label: Custom Conversion 2 + value: custom_conversion_2 + - label: Custom Conversion 3 + value: custom_conversion_3 + - label: Custom Conversion 4 + value: custom_conversion_4 + - label: Custom Conversion 5 + value: custom_conversion_5 + - label: Custom Conversion 6 + value: custom_conversion_6 + - label: Custom Conversion 7 + value: custom_conversion_7 + - label: Custom Conversion 8 + value: custom_conversion_8 + - label: Custom Conversion 9 + value: custom_conversion_9 + - label: Custom Conversion 10 + value: custom_conversion_10 + - label: Lead + value: lead + - label: Purchase + value: purchase + - label: Sign Up + value: sign_up + dynamic: false + allowNull: false + - id: eVrZPMAQnZ8Lbya6kSTNVk + sortOrder: 1 + fieldKey: event_id + label: Event ID + type: STRING + description: >- + A unique ID for the event. This is used to deduplicate events sent by + the browser and server. + placeholder: '' + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: rXdsHtC2NWyd6Nhi6JZCW2 + sortOrder: 2 + fieldKey: event_time + label: Event Time + type: STRING + description: UCT Timestamp with ISO 8601 format. For example, 2022-11-23T03:30:52Z + placeholder: '' + defaultValue: + '@path': $.timestamp + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: rdPZWzPhV8zfctkov5XQTQ + sortOrder: 3 + fieldKey: action_source + label: Action Source + type: STRING + description: Indicates the channel through which conversion happened. + placeholder: '' + required: true + multiple: false + choices: + - label: email + value: email + - label: website + value: website + - label: app + value: app + - label: phone_call + value: phone_call + - label: chat + value: chat + - label: physical_store + value: physical_store + - label: system_generated + value: system_generated + - label: other + value: custom_conversion_8 + dynamic: false + allowNull: false + - id: ruUz364dVbCBcc4r46vDe4 + sortOrder: 4 + fieldKey: action_source_url + label: Action Source url + type: STRING + description: The browser URL where the event happened (required for web events). + placeholder: '' + defaultValue: + '@path': $.context.page.url + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: iKZQkd6VPD14rqBswSKL6f + sortOrder: 5 + fieldKey: delivery_optimization + label: Delivery Optimization + type: BOOLEAN + description: >- + True indicates data can be used for optimization. False indicates the + data will only be used for attribution + placeholder: '' + defaultValue: true + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: kCdSdH9UFGrwLdW46xChKU + sortOrder: 6 + fieldKey: test_event + label: Test Event + type: BOOLEAN + description: Flag to indicate if this is a test event. + placeholder: '' + defaultValue: false + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: c83A1Cx6Dn5BMksz6gmTgJ + sortOrder: 8 + fieldKey: customer + label: Customer Data + type: OBJECT + description: >- + Customer profile data used to match with Nextdoor users. At least one of + the fields is required. + placeholder: '' + defaultValue: + email: + '@if': + exists: + '@path': $.context.traits.email + then: + '@path': $.context.traits.email + else: + '@path': $.properties.email + phone_number: + '@if': + exists: + '@path': $.context.traits.phone + then: + '@path': $.context.traits.phone + else: + '@path': $.properties.phone + first_name: + '@if': + exists: + '@path': $.context.traits.first_name + then: + '@path': $.context.traits.first_name + else: + '@path': $.properties.first_name + last_name: + '@if': + exists: + '@path': $.context.traits.last_name + then: + '@path': $.context.traits.last_name + else: + '@path': $.properties.last_name + date_of_birth: + '@if': + exists: + '@path': $.context.traits.birthday + then: + '@path': $.context.traits.birthday + else: + '@path': $.properties.birthday + street_address: + '@if': + exists: + '@path': $.context.traits.address.street + then: + '@path': $.context.traits.address.street + else: + '@path': $.properties.address.street + city: + '@if': + exists: + '@path': $.context.traits.address.city + then: + '@path': $.context.traits.address.city + else: + '@path': $.properties.address.city + state: + '@if': + exists: + '@path': $.context.traits.address.state + then: + '@path': $.context.traits.address.state + else: + '@path': $.properties.address.state + country: + '@if': + exists: + '@path': $.context.traits.address.country + then: + '@path': $.context.traits.address.country + else: + '@path': $.properties.address.country + zip_code: + '@if': + exists: + '@path': $.context.traits.address.postal_code + then: + '@path': $.context.traits.address.postal_code + else: + '@path': $.properties.address.postal_code + click_id: + '@if': + exists: + '@path': $.integrations.Nextdoor Conversions API.click_id + then: + '@path': $.integrations.Nextdoor Conversions API.click_id + else: + '@path': $.properties.click_id + client_ip_address: + '@path': $.context.ip + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: h1QHQSVAmbVv5xrjqnfwuk + sortOrder: 9 + fieldKey: custom + label: Custom Data + type: OBJECT + description: >- + Custom objects contains fields specific to advertisers that are not + already covered in standard fields. + placeholder: '' + defaultValue: + order_value: + '@path': $.properties.total + currency: + '@path': $.properties.currency + order_id: + '@path': $.properties.order_id + delivery_category: not_specified + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: f4v3otMMiJpX2iZbSDZzuv + sortOrder: 10 + fieldKey: product_context + label: Product Context + type: OBJECT + description: Product details associated with the event. + placeholder: '' + defaultValue: + '@arrayPath': + - $.properties.products + - id: + '@path': $.product_id + quantity: + '@path': $.quantity + item_price: + '@path': $.price + required: false + multiple: true + choices: null + dynamic: false + allowNull: false + - id: jeLFST56mmZui9Ugf1mjFR + sortOrder: 11 + fieldKey: app + label: Mobile App Event Parameters + type: OBJECT + description: Data about the source Mobile app. Required for app events + placeholder: '' + defaultValue: + app_id: + '@path': $.context.app.name + app_tracking_enabled: + '@path': $.context.device.adTrackingEnabled + platform: + '@path': $.context.app.type + app_version: + '@path': $.context.app.version + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: rP5JhLETdYbU4XkxmkeSFn + name: Nextdoor Browser Plugin + slug: nextdoorPlugin + description: Enriches Segment payloads the Nextdoor Click ID + platform: WEB + hidden: false + defaultTrigger: >- + type = "track" or type = "identify" or type = "page" or type = "group" or + type = "alias" + fields: [] + presets: [] + partnerOwned: true - id: 596f991a70a3e552b957f74e display_name: Nielsen DCR name: Nielsen DCR @@ -113651,7 +111755,7 @@ items: hidden: false defaultTrigger: type = "identify" fields: - - id: 7bcUDgjmbVCwE79YLWzN9Q + - id: 3gkmxjopNbdFJ37RDx6Q9S sortOrder: 0 fieldKey: contactKey label: Contact Key @@ -113677,7 +111781,7 @@ items: hidden: false defaultTrigger: null fields: - - id: wB4GwXmo6BVQAhRopCcyYZ + - id: uZyESXLqFiVf6j4WZUTjUX sortOrder: 0 fieldKey: eventDefinitionKey label: Event Definition Key @@ -113691,7 +111795,7 @@ items: choices: null dynamic: false allowNull: false - - id: 85Zaq8eDPfKZVkyPX8EdRp + - id: fGbwaydgYgqjXaZCoaNy6j sortOrder: 1 fieldKey: contactKey label: Contact Key @@ -113705,7 +111809,7 @@ items: choices: null dynamic: false allowNull: false - - id: rDwpaCDgtgAj9K9eTVu5KT + - id: wXGo2au4Tx7GGApGouTygk sortOrder: 2 fieldKey: data label: Event Data @@ -113732,7 +111836,7 @@ items: hidden: false defaultTrigger: null fields: - - id: rJ8t3SNQwreVFTqwmZRB2q + - id: mpdj371Zgcqj76u9Edov9U sortOrder: 0 fieldKey: key label: Data Extension Key @@ -113747,7 +111851,7 @@ items: choices: null dynamic: false allowNull: false - - id: pwTAP6HA2brVctvwzoCY9t + - id: 4ngH84j9pjvAH2BM7KMti6 sortOrder: 1 fieldKey: id label: Data Extension ID @@ -113762,7 +111866,7 @@ items: choices: null dynamic: false allowNull: false - - id: sg8cHv3HeuoMfxf1FUL7on + - id: pmd7jmGQmHH6ic2sRggK92 sortOrder: 2 fieldKey: keys label: Data Extension Primary Keys @@ -113779,7 +111883,7 @@ items: choices: null dynamic: false allowNull: false - - id: c4arDnmkkUgnAouYAGRJXq + - id: u71oGUVYTce2REQgbuTEXP sortOrder: 3 fieldKey: values label: Data Extension Fields @@ -113797,7 +111901,7 @@ items: choices: null dynamic: false allowNull: false - - id: fQX5mLRvmbcJWQkm6UgAfR + - id: eUUm8X98bw8GREcaG8xppf sortOrder: 4 fieldKey: enable_batching label: Batch data to SFMC @@ -113820,7 +111924,7 @@ items: hidden: false defaultTrigger: type = "identify" fields: - - id: cRB4mpG2673nwJkpsKKhud + - id: wCqc4wtYVL42f7EGxaHHgL sortOrder: 0 fieldKey: key label: Data Extension Key @@ -113835,7 +111939,7 @@ items: choices: null dynamic: false allowNull: false - - id: ahyjmWLu24HAekxwLKhYN4 + - id: 7nW4DRyH1pvp3MCuFGq8wo sortOrder: 1 fieldKey: id label: Data Extension ID @@ -113850,7 +111954,7 @@ items: choices: null dynamic: false allowNull: false - - id: 9LmLt2Dxduisbd9t8AdbhR + - id: o4kSusbWjwb1jKvy1HmKE5 sortOrder: 2 fieldKey: keys label: Data Extension Primary Keys @@ -113870,7 +111974,7 @@ items: choices: null dynamic: false allowNull: false - - id: xcAmN3NasKGtgMF5gN4ZM6 + - id: 8n8Ek8bFHKk6vTUGu8oQHc sortOrder: 3 fieldKey: values label: Contact Fields @@ -113887,7 +111991,7 @@ items: choices: null dynamic: false allowNull: false - - id: p9yt1KGUFEca1kF1a6jXH5 + - id: cEwnXVGNrL5yvazv2aWEPJ sortOrder: 4 fieldKey: enable_batching label: Batch data to SFMC @@ -113903,14 +112007,12 @@ items: - id: 2ZQ3y7DJqFGYwCxcpypA1P name: Send Event to Data Extension (V2) slug: dataExtensionV2 - description: >- - Upsert events as rows into an existing data extension in Salesforce - Marketing Cloud. + description: Upsert events as rows into a data extension in Salesforce Marketing Cloud. platform: CLOUD hidden: false defaultTrigger: null fields: - - id: rmgeYjf8zx8CxrPHi3Ng1Q + - id: oj2wfkcgfnRFBmuEwHwVMS sortOrder: 0 fieldKey: keys label: Data Extension Primary Keys @@ -113927,7 +112029,7 @@ items: choices: null dynamic: true allowNull: false - - id: 7RBWa4CrPJNyTYkfE1dLd2 + - id: tvm9KAKhF1Cwa7yiPWFExt sortOrder: 1 fieldKey: values label: Data Extension Fields @@ -113945,7 +112047,7 @@ items: choices: null dynamic: true allowNull: false - - id: 8BvhrUXiey5iutkfuKCxKk + - id: dnfe9ipyCBoCFjR6UomjbE sortOrder: 2 fieldKey: enable_batching label: Batch data to SFMC @@ -113958,7 +112060,7 @@ items: choices: null dynamic: false allowNull: false - - id: shtWQ25AGQcpE1tdmP1n9G + - id: tHc6YrCC2gB9oFSAo82br1 sortOrder: 4 fieldKey: operation label: Operation @@ -113976,7 +112078,7 @@ items: value: select dynamic: false allowNull: false - - id: 4DbMJDATSkDtK8LYRJR45B + - id: 2DjQNSqZ8JSDYgwmD8RE9v sortOrder: 5 fieldKey: dataExtensionId label: Data Extension ID @@ -113988,7 +112090,7 @@ items: choices: null dynamic: true allowNull: false - - id: 9HQGivpCgKw5pNcQvxMDa3 + - id: 6NANnvaB7bhXDXpiW6daCF sortOrder: 6 fieldKey: categoryId label: Category ID (Folder ID) @@ -114000,7 +112102,7 @@ items: choices: null dynamic: true allowNull: false - - id: suxU3f7Tpi5gs23Kqcg2w7 + - id: vFGTKYq9kqjPx5pbxULfNF sortOrder: 7 fieldKey: name label: Data Extension Name @@ -114012,7 +112114,7 @@ items: choices: null dynamic: false allowNull: false - - id: 26EAQuxkb5rdDL9CgUpuKG + - id: 22jBXDEQtNGAdz8sdHrrWV sortOrder: 8 fieldKey: description label: Data Extension Description @@ -114024,7 +112126,7 @@ items: choices: null dynamic: false allowNull: false - - id: tYQvYiMxZxDFCjhEu56PyL + - id: iAXj2yXiYfDaxf8TUetMEL sortOrder: 9 fieldKey: isSendable label: Is Sendable @@ -114038,7 +112140,7 @@ items: choices: null dynamic: false allowNull: false - - id: 2T5WVnJJBoBS71pXebXtuX + - id: rtrQ8xEkcNDYuWnQfYydkh sortOrder: 10 fieldKey: sendableCustomObjectField label: Sendable Custom Object Field @@ -114052,7 +112154,7 @@ items: choices: null dynamic: false allowNull: false - - id: b5CeLAQ6gs4WKyfVMeEgzS + - id: o9cx5WqfHMeGQzA6gqHGg3 sortOrder: 11 fieldKey: sendableSubscriberField label: Sendable Subscriber Field @@ -114070,7 +112172,7 @@ items: value: _SubscriberID dynamic: false allowNull: false - - id: 6YHFzPAwH7H8mwDTxtbhk + - id: fWEDwCQe7DE7bCmpmFKAcf sortOrder: 12 fieldKey: columns label: Data Extension Fields @@ -114082,7 +112184,7 @@ items: choices: null dynamic: false allowNull: false - - id: bTKKS7Lw93ETX8WvPokCsU + - id: bKJgWHTgGNGFpV7fxgUHqA sortOrder: 13 fieldKey: retlOnMappingSave label: Create or Select Data Extension @@ -114097,7 +112199,7 @@ items: dynamic: false allowNull: false hidden: false - - id: vk4qzR1jutUuga82iQFmcV + - id: qEJhRwvSPK672kUWhkDsXW sortOrder: 14 fieldKey: operation label: Operation @@ -114115,7 +112217,7 @@ items: value: select dynamic: false allowNull: false - - id: qbaCm2NMPzxZfEJCGfDMjt + - id: da2LtXBDvYK81mfsE2Tea2 sortOrder: 15 fieldKey: dataExtensionId label: Data Extension ID @@ -114127,7 +112229,7 @@ items: choices: null dynamic: true allowNull: false - - id: hff9VkRMW2TCC2yWPfD5Tb + - id: 2JBnXqT53MfHtBSeL5ddnC sortOrder: 16 fieldKey: categoryId label: Category ID (Folder ID) @@ -114139,7 +112241,7 @@ items: choices: null dynamic: true allowNull: false - - id: dAjP9ByPaFExBEUctT9nPq + - id: fAZG36Und1Afc9UkJPo1PP sortOrder: 17 fieldKey: name label: Data Extension Name @@ -114151,7 +112253,7 @@ items: choices: null dynamic: false allowNull: false - - id: qmdGzHA1NGusRFMd5uoFd5 + - id: 9r1CCd7MXi2ooLNJHAes9w sortOrder: 18 fieldKey: description label: Data Extension Description @@ -114163,7 +112265,7 @@ items: choices: null dynamic: false allowNull: false - - id: tMUcq99j4VdoFZnbX3w1RM + - id: qSqSrrGXdD5GTVKWscXtMt sortOrder: 19 fieldKey: isSendable label: Is Sendable @@ -114177,7 +112279,7 @@ items: choices: null dynamic: false allowNull: false - - id: ssrHTeEKAv269uxcdRaYMt + - id: jJQdAUUYwcV4R7K8K49Z6B sortOrder: 20 fieldKey: sendableCustomObjectField label: Sendable Custom Object Field @@ -114191,7 +112293,7 @@ items: choices: null dynamic: false allowNull: false - - id: qp6bPgwiB83vBHemFXBsJX + - id: 5bS5YHc1Y8Vw88ovx6MauY sortOrder: 21 fieldKey: sendableSubscriberField label: Sendable Subscriber Field @@ -114209,7 +112311,7 @@ items: value: _SubscriberID dynamic: false allowNull: false - - id: 4jgm72jg3sXSV6bpWS5j23 + - id: 6vp9uFecd7qJzKUvcb7nMD sortOrder: 22 fieldKey: columns label: Data Extension Fields @@ -114221,7 +112323,7 @@ items: choices: null dynamic: false allowNull: false - - id: mt6hTj8jiUs3Jk4ZF5pWRj + - id: 2igVMoW4iyhTqy6g6WcYLs sortOrder: 23 fieldKey: onMappingSave label: Create or Select Data Extension @@ -114240,13 +112342,13 @@ items: name: Send Contact to Data Extension (V2) slug: contactDataExtensionV2 description: >- - Upsert contact data as rows into an existing data extension in Salesforce - Marketing Cloud. + Upsert contact data as rows into a data extension in Salesforce Marketing + Cloud. platform: CLOUD hidden: false defaultTrigger: type = "identify" fields: - - id: nHJELWgpAfybPmzdkiBzhD + - id: oGg6NmbtphpMxQv5PjTpMs sortOrder: 0 fieldKey: keys label: Data Extension Primary Keys @@ -114266,7 +112368,7 @@ items: choices: null dynamic: true allowNull: false - - id: c5sL6KM65fucNpcWfXYurR + - id: vjK9uNwKDwiMPCK2FBrB4Y sortOrder: 1 fieldKey: values label: Contact Fields @@ -114283,7 +112385,7 @@ items: choices: null dynamic: true allowNull: false - - id: 844ctQZXVLtWJ26Fx8TPNK + - id: usb8siC5pM4GTa9nwMQVvw sortOrder: 2 fieldKey: enable_batching label: Batch data to SFMC @@ -114296,7 +112398,7 @@ items: choices: null dynamic: false allowNull: false - - id: sB8Dvkoio4a4AG2rkGcg6B + - id: syXExevLc4sPhV88BaBzbE sortOrder: 4 fieldKey: operation label: Operation @@ -114314,7 +112416,7 @@ items: value: select dynamic: false allowNull: false - - id: JfbT7D7L7YYAESN3AL6zA + - id: fgqqsPnVwffdVgqcjahaov sortOrder: 5 fieldKey: dataExtensionId label: Data Extension ID @@ -114326,7 +112428,7 @@ items: choices: null dynamic: true allowNull: false - - id: dHLENaRwJiwaarUCvPpahi + - id: rx2LGZMTsamr4yr4QeWTAC sortOrder: 6 fieldKey: categoryId label: Category ID (Folder ID) @@ -114338,7 +112440,7 @@ items: choices: null dynamic: true allowNull: false - - id: kdGyRB8vLpTr1UaoathKFt + - id: 2vsMbgLkFPKNQG72SNXawx sortOrder: 7 fieldKey: name label: Data Extension Name @@ -114350,7 +112452,7 @@ items: choices: null dynamic: false allowNull: false - - id: n1bg8W6QDZFbqwBM69d9y3 + - id: 8nZkmagoADrZf9eAgdhkXG sortOrder: 8 fieldKey: description label: Data Extension Description @@ -114362,7 +112464,7 @@ items: choices: null dynamic: false allowNull: false - - id: eBPeJJJeoDe7rztA8nMPfJ + - id: 3q3dUbzAzeNJ8P3FHtNst3 sortOrder: 9 fieldKey: isSendable label: Is Sendable @@ -114376,7 +112478,7 @@ items: choices: null dynamic: false allowNull: false - - id: hd5Zykihm9PTmiXjfMHT75 + - id: 244UMuNhjXmmUR8vZ7wWns sortOrder: 10 fieldKey: sendableCustomObjectField label: Sendable Custom Object Field @@ -114390,7 +112492,7 @@ items: choices: null dynamic: false allowNull: false - - id: iTxYgoESWBjr98ZT7Cqv6t + - id: 8V71EugQ8FNphY9mkAKJPS sortOrder: 11 fieldKey: sendableSubscriberField label: Sendable Subscriber Field @@ -114408,7 +112510,7 @@ items: value: _SubscriberID dynamic: false allowNull: false - - id: pxx9XUV664rTK51ZMWoxs7 + - id: 7kYwwjZt7nLMRyrmQSYPtt sortOrder: 12 fieldKey: columns label: Data Extension Fields @@ -114420,7 +112522,7 @@ items: choices: null dynamic: false allowNull: false - - id: eycpCdFAVUbFRjx69Y5swJ + - id: dSXUQaQvicuGufbE8mdneC sortOrder: 13 fieldKey: retlOnMappingSave label: Create or Select Data Extension @@ -114435,7 +112537,7 @@ items: dynamic: false allowNull: false hidden: false - - id: vEMuUkY8WJgwmaRpx451k5 + - id: rshvzy6XhkkemFew96g57Z sortOrder: 14 fieldKey: operation label: Operation @@ -114453,7 +112555,7 @@ items: value: select dynamic: false allowNull: false - - id: cEaf3ptqCuU2739uoHSMAe + - id: vHpFEhsAXm7jq14h45TnxQ sortOrder: 15 fieldKey: dataExtensionId label: Data Extension ID @@ -114465,7 +112567,7 @@ items: choices: null dynamic: true allowNull: false - - id: 2XMuaNAMaGRii6Hq5K6UzV + - id: q4eLMyg6qM47cWoQUDsT9a sortOrder: 16 fieldKey: categoryId label: Category ID (Folder ID) @@ -114477,7 +112579,7 @@ items: choices: null dynamic: true allowNull: false - - id: sUxep19wmuPGp6QZkE2TnS + - id: j26vBUpwarvj3fHTvApmdr sortOrder: 17 fieldKey: name label: Data Extension Name @@ -114489,7 +112591,7 @@ items: choices: null dynamic: false allowNull: false - - id: fKmViPQn4eQLX5aqgMPeLW + - id: 2jFY3tfRyk3rdhHnVBXqcr sortOrder: 18 fieldKey: description label: Data Extension Description @@ -114501,7 +112603,7 @@ items: choices: null dynamic: false allowNull: false - - id: kjJL4n4WhgB1ygCWJWfaTy + - id: sVrb95f51HdUAv2iNAdV9B sortOrder: 19 fieldKey: isSendable label: Is Sendable @@ -114515,7 +112617,7 @@ items: choices: null dynamic: false allowNull: false - - id: cJmx59Qi6hUq7eqkfoA74t + - id: fKkdRGdoft6EFZQr6678nE sortOrder: 20 fieldKey: sendableCustomObjectField label: Sendable Custom Object Field @@ -114529,7 +112631,7 @@ items: choices: null dynamic: false allowNull: false - - id: 9rLexRWHxFyZDfdtpFhVpD + - id: sED5QGkZxgapA218u9mdPG sortOrder: 21 fieldKey: sendableSubscriberField label: Sendable Subscriber Field @@ -114547,7 +112649,7 @@ items: value: _SubscriberID dynamic: false allowNull: false - - id: h1PuRt8zm8pLEzTZq7TuQn + - id: euRpi66XwsHp9mSibrsgH9 sortOrder: 22 fieldKey: columns label: Data Extension Fields @@ -114559,7 +112661,7 @@ items: choices: null dynamic: false allowNull: false - - id: kzQErgZKER7tbhSwf1cgrX + - id: tCDx8Q2oCXU2prUcapbr33 sortOrder: 23 fieldKey: onMappingSave label: Create or Select Data Extension @@ -125351,7 +123453,7 @@ items: - Surveys - Analytics logo: - url: https://cdn-devcenter.segment.com/026a2792-a26a-4dd3-b834-151d73246b90.svg + url: https://cdn-devcenter.segment.com/c5999c7c-27c9-4c92-90b9-a043814cfaf9.svg mark: url: https://cdn-devcenter.segment.com/a1dc2f9b-a359-41b9-a6fb-c9d147b79227.svg methods: @@ -125421,7 +123523,7 @@ items: - Surveys - Analytics logo: - url: https://cdn-devcenter.segment.com/33840a5c-ebcd-4e5a-a2da-3bbff3f69425.svg + url: https://cdn-devcenter.segment.com/b36a6bfa-51a0-4cee-9ce5-a8c1310b7e66.svg mark: url: https://cdn-devcenter.segment.com/6f44d6d0-edd6-4667-a42c-e84402fddc1a.svg methods: @@ -137811,6 +135913,14 @@ items: description: Created under Settings > API Integration in the Topsort Manager Platform. required: true label: API Key + - name: skipZeroPricePurchases + type: boolean + defaultValue: false + description: >- + When enabled, purchase events with items that have zero or missing unit + price will be filtered out. + required: false + label: Skip Zero Price Purchases actions: - id: 6hi4YVo8BFtB3xqeESgvPK name: Purchase @@ -137820,7 +135930,7 @@ items: hidden: false defaultTrigger: type = "track" and event = "Order Completed" fields: - - id: 9Mip7RXK19Na9ThBW8fVMx + - id: wNdkQq6KisvamidmgFbGqa sortOrder: 0 fieldKey: id label: Event ID @@ -137836,7 +135946,7 @@ items: choices: null dynamic: false allowNull: false - - id: 6dT8g3W5tZsZPjcBkfooXf + - id: aL45KCMrqonrfT4kK1ny4p sortOrder: 1 fieldKey: occurredAt label: Occurred At @@ -137850,7 +135960,7 @@ items: choices: null dynamic: false allowNull: false - - id: aSRSpnEgdk9RfA5Wp6agWz + - id: 36rpatKNiBfDqsfRwMDApa sortOrder: 2 fieldKey: opaqueUserId label: Opaque User ID @@ -137866,7 +135976,7 @@ items: choices: null dynamic: false allowNull: false - - id: h7xm3WFmRe9Lc5kwf4jdjc + - id: 4uq9Xg6nyERPwAY5EHiRDo sortOrder: 3 fieldKey: items label: Items @@ -137903,7 +136013,7 @@ items: hidden: false defaultTrigger: type = "track" and event = "Product Clicked" fields: - - id: sZMs8z8aZBKiKPqyLqBH7U + - id: 7GBd8L28VfTAvLQJm6Gib8 sortOrder: 0 fieldKey: id label: Event ID @@ -137919,7 +136029,7 @@ items: choices: null dynamic: false allowNull: false - - id: bZk3VFRfjeu8CyjZTV7bnW + - id: u2rXPnd22h6Xxqi54oRdrN sortOrder: 1 fieldKey: occurredAt label: Occurred At @@ -137933,7 +136043,7 @@ items: choices: null dynamic: false allowNull: false - - id: irgTfafpV9pWEBGzPaV8s9 + - id: sGKZzi7z4DjXWdV5EwJsA7 sortOrder: 2 fieldKey: opaqueUserId label: Opaque User ID @@ -137949,7 +136059,7 @@ items: choices: null dynamic: false allowNull: false - - id: uJXo7pnnSYvzDMSGbgLJAM + - id: wd3ZERovpo79cNknr2ruvz sortOrder: 3 fieldKey: resolvedBidId label: Resolved Bid ID @@ -137965,7 +136075,7 @@ items: choices: null dynamic: false allowNull: false - - id: uexA8viyACctUNLV1QWxW5 + - id: 3WMwxaJgagbKpqJtc7QyX8 sortOrder: 4 fieldKey: additionalAttribution label: Additional Attribution @@ -137987,7 +136097,7 @@ items: hidden: false defaultTrigger: type = "track" and event = "Product Viewed" fields: - - id: 48ZRK4fsba1yWWkU4a8Zzv + - id: rj277JN5qcZhsTJADphUoD sortOrder: 0 fieldKey: id label: Event ID @@ -138003,7 +136113,7 @@ items: choices: null dynamic: false allowNull: false - - id: bsG4sbuRKbYys1z69SAR9w + - id: b4HeMMWPkTqRmFpXc9H6X9 sortOrder: 1 fieldKey: occurredAt label: Occurred At @@ -138017,7 +136127,7 @@ items: choices: null dynamic: false allowNull: false - - id: aYDDEk9htRnP1gzK3AGHi8 + - id: t1ATmVuby8Prw5tL7fziSv sortOrder: 2 fieldKey: opaqueUserId label: Opaque User ID @@ -138033,7 +136143,7 @@ items: choices: null dynamic: false allowNull: false - - id: id8Ty6Ry4WMhGsMaLMjAt4 + - id: qvcGUSZ2Lk5Num5oXfdA6f sortOrder: 3 fieldKey: resolvedBidId label: Resolved Bid ID @@ -138049,7 +136159,7 @@ items: choices: null dynamic: false allowNull: false - - id: fnfKhgEywRhVBP54BxBaPj + - id: 4ykPKZvug5h262Qrz7qgCh sortOrder: 4 fieldKey: additionalAttribution label: Additional Attribution @@ -138073,7 +136183,7 @@ items: hidden: false defaultTrigger: type = "track" and event = "Product List Viewed" fields: - - id: tMfVUhNWNZ7zag1EDf7af8 + - id: hLaArG9xGbZdKYKGbxUAoP sortOrder: 0 fieldKey: id label: Event ID @@ -138089,7 +136199,7 @@ items: choices: null dynamic: false allowNull: false - - id: iAN1vvGMHYaF6NmRCCKDZ3 + - id: wVdm2ecwCKhKD3oReiqe7C sortOrder: 1 fieldKey: occurredAt label: Occurred At @@ -138103,7 +136213,7 @@ items: choices: null dynamic: false allowNull: false - - id: mNFzKRLzCX3GtxvUV9E4qL + - id: 3AqeWf87bUpxGVn7mrK5bm sortOrder: 2 fieldKey: opaqueUserId label: Opaque User ID @@ -138119,7 +136229,7 @@ items: choices: null dynamic: false allowNull: false - - id: dyNpukrBLg9yGFn4hbXigH + - id: kngzk2ZfouoNWxoHRET5M7 sortOrder: 3 fieldKey: products label: Products @@ -138156,8 +136266,35 @@ items: additionalAttribution: '@path': additionalAttribution trigger: type = "track" and event = "Product List Viewed" - - actionId: haYWUuXp1KDvb8u6uLj9h4 - name: Banner Impression + - actionId: 6hi4YVo8BFtB3xqeESgvPK + name: Purchase + fields: + id: + '@path': $.messageId + occurredAt: + '@path': $.timestamp + opaqueUserId: + '@path': $.anonymousId + items: + '@arrayPath': + - $.properties.products + - productId: + '@path': $.product_id + unitPrice: + '@path': $.price + quantity: + '@path': $.quantity + vendorId: + '@if': + exists: + '@path': $.vendorId + then: + '@path': $.vendorId + else: + '@path': $.brand + trigger: type = "track" and event = "Order Completed" + - actionId: bB6C4ayDhAhkCaRq83iJVw + name: Banner Click fields: id: '@path': $.messageId @@ -138169,7 +136306,7 @@ items: '@path': $.properties.resolvedBidId additionalAttribution: '@path': $.properties.additionalAttribution - trigger: type = "track" and event = "Banner Impression" + trigger: type = "track" and event = "Banner Click" - actionId: haYWUuXp1KDvb8u6uLj9h4 name: Impression fields: @@ -138184,8 +136321,8 @@ items: additionalAttribution: '@path': $.properties.additionalAttribution trigger: type = "track" and event = "Product Viewed" - - actionId: bB6C4ayDhAhkCaRq83iJVw - name: Banner Click + - actionId: haYWUuXp1KDvb8u6uLj9h4 + name: Banner Impression fields: id: '@path': $.messageId @@ -138197,7 +136334,7 @@ items: '@path': $.properties.resolvedBidId additionalAttribution: '@path': $.properties.additionalAttribution - trigger: type = "track" and event = "Banner Click" + trigger: type = "track" and event = "Banner Impression" - actionId: bB6C4ayDhAhkCaRq83iJVw name: Click fields: @@ -138212,33 +136349,6 @@ items: additionalAttribution: '@path': $.properties.additionalAttribution trigger: type = "track" and event = "Product Clicked" - - actionId: 6hi4YVo8BFtB3xqeESgvPK - name: Purchase - fields: - id: - '@path': $.messageId - occurredAt: - '@path': $.timestamp - opaqueUserId: - '@path': $.anonymousId - items: - '@arrayPath': - - $.properties.products - - productId: - '@path': $.product_id - unitPrice: - '@path': $.price - quantity: - '@path': $.quantity - vendorId: - '@if': - exists: - '@path': $.vendorId - then: - '@path': $.vendorId - else: - '@path': $.brand - trigger: type = "track" and event = "Order Completed" partnerOwned: true - id: 54521fdb25e721e32a72eefa display_name: Totango diff --git a/src/_data/catalog/destinations_private.yml b/src/_data/catalog/destinations_private.yml index 6d7114d4e7..19610d2bf2 100644 --- a/src/_data/catalog/destinations_private.yml +++ b/src/_data/catalog/destinations_private.yml @@ -1,5 +1,5 @@ # AUTOGENERATED FROM PUBLIC API. DO NOT EDIT -# destination data last updated 2025-10-09 +# destination data last updated 2025-10-16 items: - id: 54521fd925e721e32a72eee1 display_name: Pardot diff --git a/src/_data/catalog/source_categories.yml b/src/_data/catalog/source_categories.yml index 2aea807994..132bce3a08 100644 --- a/src/_data/catalog/source_categories.yml +++ b/src/_data/catalog/source_categories.yml @@ -1,5 +1,5 @@ # AUTOGENERATED FROM PUBLIC API. DO NOT EDIT -# source categories last updated 2025-10-09 +# source categories last updated 2025-10-16 items: - display_name: A/B testing slug: a-b-testing diff --git a/src/_data/catalog/sources.yml b/src/_data/catalog/sources.yml index 765122ec11..48c3d5217f 100644 --- a/src/_data/catalog/sources.yml +++ b/src/_data/catalog/sources.yml @@ -1,5 +1,5 @@ # AUTOGENERATED FROM PUBLIC API. DO NOT EDIT -# sources last updated 2025-10-09 +# sources last updated 2025-10-16 items: - id: 8HWbgPTt3k display_name: .NET From 278466e7a52dc0d3bbc42eab937b9702fb03d7ba Mon Sep 17 00:00:00 2001 From: CristhianMotoche Date: Thu, 16 Oct 2025 13:05:43 -0500 Subject: [PATCH 138/140] chore: Escape <> --- src/connections/destinations/catalog/moengage/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/connections/destinations/catalog/moengage/index.md b/src/connections/destinations/catalog/moengage/index.md index c4145d435a..8d51c514d6 100644 --- a/src/connections/destinations/catalog/moengage/index.md +++ b/src/connections/destinations/catalog/moengage/index.md @@ -458,7 +458,7 @@ The MoEngage WebSDK offers the ability to send push notifications to Google Chro #### 1. Setup your MoEngage Web SDK settings at MoEngage Dashboard -Configure the [web settings](https://help.moengage.com/hc/en-us/articles/210224063){:target="_blank"} on the MoEngage dashboard to start using MoEngage <> Segment integration. +Configure the [web settings](https://help.moengage.com/hc/en-us/articles/210224063){:target="_blank"} on the MoEngage dashboard to start using MoEngage \<> Segment integration. If you have selected `HTTPS` mode of integration in the settings, complete the following steps: @@ -551,7 +551,7 @@ When connecting the calculated trait or audience to the MoEngage destination, yo ### Sync yime -The default integration for MoEngage <> Twilio Engage connection is **Real Time.** But there are some filters that disqualify the persona from syncing in real-time, including some time-based filters which restrict your audience’s size at the time of message send. +The default integration for MoEngage \<> Twilio Engage connection is **Real Time.** But there are some filters that disqualify the persona from syncing in real-time, including some time-based filters which restrict your audience’s size at the time of message send. ### Computed traits using Identify calls From ebf1a9215e347bca57bf382fa3beca39fe97504d Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 16 Oct 2025 19:09:36 +0100 Subject: [PATCH 139/140] typo fix! --- src/connections/destinations/catalog/moengage/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/moengage/index.md b/src/connections/destinations/catalog/moengage/index.md index 8d51c514d6..4ef7a54b7c 100644 --- a/src/connections/destinations/catalog/moengage/index.md +++ b/src/connections/destinations/catalog/moengage/index.md @@ -549,7 +549,7 @@ You can send [Computed traits](/docs/engage/audiences/computed-traits/) and [A When connecting the calculated trait or audience to the MoEngage destination, you can select the method of your choice (or opt to use both). -### Sync yime +### Sync time The default integration for MoEngage \<> Twilio Engage connection is **Real Time.** But there are some filters that disqualify the persona from syncing in real-time, including some time-based filters which restrict your audience’s size at the time of message send. From c40979d9201b1a61421af46850d992c34bb1fdff Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Thu, 16 Oct 2025 14:53:09 -0400 Subject: [PATCH 140/140] df now supports ip allowlisting! --- src/connections/functions/destination-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/destination-functions.md b/src/connections/functions/destination-functions.md index ade7ef095b..a4e08a6585 100644 --- a/src/connections/functions/destination-functions.md +++ b/src/connections/functions/destination-functions.md @@ -17,7 +17,7 @@ All functions are scoped to your workspace, so members of other workspaces can't > warning "" -> Destination functions don't accept data from [Object Cloud sources](/docs/connections/sources/#object-cloud-sources) or support [IP Allowlisting](/docs/connections/destinations/#ip-allowlisting). +> Destination functions don't accept data from [Object Cloud sources](/docs/connections/sources/#object-cloud-sources). ## Create a destination function