From 9e39dd0fe81aa87595c8edf39f11e14a8d801bd7 Mon Sep 17 00:00:00 2001 From: sade-wusi Date: Wed, 30 Apr 2025 16:49:42 +0100 Subject: [PATCH 01/87] webhooks misinformation corrected [netlify-build] --- src/_includes/content/destination-dossier.html | 2 ++ .../destinations/catalog/actions-webhook-extensible/index.md | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/_includes/content/destination-dossier.html b/src/_includes/content/destination-dossier.html index f437f81bcf..2d097759fa 100644 --- a/src/_includes/content/destination-dossier.html +++ b/src/_includes/content/destination-dossier.html @@ -105,6 +105,7 @@
Connection Modes {% endunless %} {% endif %} +{% unless page.id == '66b1f528d26440823fb27af9' %} {% if destinationInfo.partnerOwned == true %}
Partner Owned
@@ -113,5 +114,6 @@
Partner Owned
{% endif %} +{% endunless %} {% endif %} \ No newline at end of file diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/index.md b/src/connections/destinations/catalog/actions-webhook-extensible/index.md index 25e1f96e13..9ae9c4199b 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/index.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/index.md @@ -11,8 +11,8 @@ Segment's Extensible Webhooks destination lets you send custom data payloads to Segment maintains this destination. For any issues, [contact Segment Support](friends@segment.com). -> info "Private beta" -> Extensible Webhooks is in private beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. +> info "Public Beta" +> Extensible Webhooks is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. ## Overview From bfa84ad49f060556eb9a91ca949052facd1d9083 Mon Sep 17 00:00:00 2001 From: sade-wusi Date: Fri, 2 May 2025 13:41:13 +0100 Subject: [PATCH 02/87] destination not avaiable in EU atm --- .../catalog/actions-webhook-extensible/index.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/index.md b/src/connections/destinations/catalog/actions-webhook-extensible/index.md index 9ae9c4199b..6ce2f84f76 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/index.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/index.md @@ -9,9 +9,11 @@ hidden: true Segment's Extensible Webhooks destination lets you send custom data payloads to any webhook endpoint. With support for flexible payload configuration, multiple authentication methods, and real-time data flow, Extensible Webhooks can help you integrate with internal systems or tools not covered by Segment’s standard destinations. -Segment maintains this destination. For any issues, [contact Segment Support](friends@segment.com). +This destination is not currently available in EU regions. -> info "Public Beta" +Segment maintains this destination. For any issues, [contact Segment Support](friends@segment.com). + +> info "Public beta" > Extensible Webhooks is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. ## Overview From ded4a495732cd3f361c090a10d2c8c9dfd7cae71 Mon Sep 17 00:00:00 2001 From: Gil Omer Date: Fri, 6 Jun 2025 10:00:01 -0400 Subject: [PATCH 03/87] add db2 to supported retl sources --- src/connections/reverse-etl/setup.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/connections/reverse-etl/setup.md b/src/connections/reverse-etl/setup.md index 0fdd98bd7c..88cf060cd7 100644 --- a/src/connections/reverse-etl/setup.md +++ b/src/connections/reverse-etl/setup.md @@ -28,6 +28,7 @@ To add your warehouse as a source: - [Azure Reverse ETL setup guide](/docs/connections/reverse-etl/reverse-etl-source-setup-guides/azure-setup) - [BigQuery Reverse ETL setup guide](/docs/connections/reverse-etl/reverse-etl-source-setup-guides/bigquery-setup) - [Databricks Reverse ETL setup guide](/docs/connections/reverse-etl/reverse-etl-source-setup-guides/databricks-setup) + - [DB2 Reverse ETL setup guide](/docs/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup) - [Postgres Reverse ETL setup guide](/docs/connections/reverse-etl/reverse-etl-source-setup-guides/postgres-setup) - [Redshift Reverse ETL setup guide](/docs/connections/reverse-etl/reverse-etl-source-setup-guides/redshift-setup) - [Snowflake Reverse ETL setup guide](/docs/connections/reverse-etl/reverse-etl-source-setup-guides/snowflake-setup) From 53a2fc0fec42e28a0c0cf4c1c04757987df04381 Mon Sep 17 00:00:00 2001 From: Gil Omer Date: Fri, 6 Jun 2025 10:27:47 -0400 Subject: [PATCH 04/87] add db2 setup guide --- .../db2-setup.md | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md new file mode 100644 index 0000000000..6a4d561d04 --- /dev/null +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -0,0 +1,70 @@ +--- +title: DB2 Reverse ETL Setup +--- + +Set up DB2 as your Reverse ETL source. + +At a high level, when you set up DB2 for Reverse ETL, the configured database user must have read permissions on any tables involved in the query, and write permissions on a managed schema (`SEGMENT_REVERSE_ETL`) that Segment uses to track sync progress. Authentication is handled through username and password credentials configured in the Segment app. + + + +## Required permissions + +In order to run a Reverse-ETL sync in a DB2 warehouse, Segment needs the following permissions: + +1. **Permission to read from all tables used in the model** (i.e., the tables included in your SELECT query). +2. **Permission to create and manage a schema** for tracking sync metadata. + + +> info "Use a dedicated user for Segment" +> It's recommended to create a dedicated DB2 user for Segment with access limited to only the relevant schemas and tables. + +1. Open the Db2 warehouse and navigate to **Administration > User management**. +2. Click **Add**. +3. Create a new user account with *user* privileges. Make sure you save the username and password, as these are required to set up the Segment configuration in a later step. + + +> info "" +> The `SEGMENT_REVERSE_ETL` schema will be created and managed by Segment to track the status of each sync. +> You can also choose to create this schema yourself by running: +> `CREATE SCHEMA SEGMENT_REVERSE_ETL` +> and explicitly grant Segment privileges on it. + + + +Run the below SQL commands to grant Segment the required permissions: + +```sql +-- Grant permissions to create manage objects within the SEGMENT_REVERSE_ETL schema +GRANT CREATEIN, DROPIN ON SCHEMA SEGMENT_REVERSE_ETL TO USER ; +GRANT CREATETAB ON DATABASE TO USER ; + +-- Grant read access on each table used in the model +GRANT SELECT ON TABLE . TO USER ; +``` + + +## Set up guide + +To set up DB2 as your Reverse ETL source: + +1. Make sure your DB2 database is network-accessible from [Segment's IPs](/docs/connections/storage/warehouses/faq/#which-ips-should-i-allowlist). +2. Open [your Segment workspace](https://app.segment.com/workspaces){:target="_blank"}. +3. Navigate to **Connections > Sources** and select the **Reverse ETL** tab. +4. Click **+ Add Reverse ETL source**. +5. Select **DB2** and click **Add Source**. +6. Enter the configuration settings for your DB2 source: + * Hostname: `` + * Port: `` (default) + * Database: `` + * Username: `` + * Password: `` + * Schema [optional]: If not specified, Segment will use the user’s default schema +7. Click **Test Connection** to validate the setup. +8. If the connection is successful, click **Add source**. + +> warning "" +> Segment only supports user/password authentication for DB2. +> Ensure that your DB2 instance is configured to allow remote connections and the user has the necessary permissions. + +After you've successfully added your DB2 source, [add a model](/docs/connections/reverse-etl/setup/#step-2-add-a-model) and follow the rest of the steps in the Reverse ETL setup guide. From 0fb8cb6842617a2c97b55cf46fab8293aa6f4b11 Mon Sep 17 00:00:00 2001 From: Gil Omer Date: Fri, 6 Jun 2025 17:03:34 -0400 Subject: [PATCH 05/87] [netlify-build] From efae4b289f7bde34ab9b48ae94c287f821667f03 Mon Sep 17 00:00:00 2001 From: Gil Omer Date: Fri, 6 Jun 2025 22:28:55 -0400 Subject: [PATCH 06/87] [netlify-build] add DB2 source to dropdown menu --- src/_data/sidenav/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/_data/sidenav/main.yml b/src/_data/sidenav/main.yml index 8fcf0bfa3e..d73e7ddb26 100644 --- a/src/_data/sidenav/main.yml +++ b/src/_data/sidenav/main.yml @@ -210,6 +210,8 @@ sections: title: BigQuery Reverse ETL Setup - path: /connections/reverse-etl/reverse-etl-source-setup-guides/databricks-setup title: Databricks Reverse ETL Setup + - path: /connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup + title: DB2 Reverse ETL Setup - path: /connections/reverse-etl/reverse-etl-source-setup-guides/postgres-setup title: Postgres Reverse ETL Setup - path: /connections/reverse-etl/reverse-etl-source-setup-guides/redshift-setup From cd96a3a51cd2df0f8ed021f6da252a73e5556413 Mon Sep 17 00:00:00 2001 From: Gil Omer Date: Sun, 8 Jun 2025 12:12:15 -0400 Subject: [PATCH 07/87] [netlify-build] small fixes --- .../reverse-etl-source-setup-guides/db2-setup.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index 6a4d561d04..b7ef7cf8df 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -21,7 +21,7 @@ In order to run a Reverse-ETL sync in a DB2 warehouse, Segment needs the followi 1. Open the Db2 warehouse and navigate to **Administration > User management**. 2. Click **Add**. -3. Create a new user account with *user* privileges. Make sure you save the username and password, as these are required to set up the Segment configuration in a later step. +3. Create a new user with *user* privileges. Make sure you save the username and password, as these are required to set up the Segment configuration in a later step. > info "" @@ -55,7 +55,7 @@ To set up DB2 as your Reverse ETL source: 5. Select **DB2** and click **Add Source**. 6. Enter the configuration settings for your DB2 source: * Hostname: `` - * Port: `` (default) + * Port: `` * Database: `` * Username: `` * Password: `` @@ -63,8 +63,4 @@ To set up DB2 as your Reverse ETL source: 7. Click **Test Connection** to validate the setup. 8. If the connection is successful, click **Add source**. -> warning "" -> Segment only supports user/password authentication for DB2. -> Ensure that your DB2 instance is configured to allow remote connections and the user has the necessary permissions. - After you've successfully added your DB2 source, [add a model](/docs/connections/reverse-etl/setup/#step-2-add-a-model) and follow the rest of the steps in the Reverse ETL setup guide. From 9f68558f345706dae2c2971ecdd2c460bf783ffa Mon Sep 17 00:00:00 2001 From: Gil Omer Date: Mon, 9 Jun 2025 10:04:21 -0400 Subject: [PATCH 08/87] [netlify-build] more fixes --- .../db2-setup.md | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index b7ef7cf8df..f72827138d 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -10,57 +10,61 @@ At a high level, when you set up DB2 for Reverse ETL, the configured database us ## Required permissions -In order to run a Reverse-ETL sync in a DB2 warehouse, Segment needs the following permissions: +In order to run a Reverse ETL sync in a DB2 warehouse, Segment needs the following permissions: -1. **Permission to read from all tables used in the model** (i.e., the tables included in your SELECT query). -2. **Permission to create and manage a schema** for tracking sync metadata. +* **Permission to read from all tables used in the model** (i.e., the tables included in your SELECT query). +* **Permission to create and manage a schema** for tracking sync metadata. +* **Permission to create tables in the database**, needed for internal metadata tables. > info "Use a dedicated user for Segment" > It's recommended to create a dedicated DB2 user for Segment with access limited to only the relevant schemas and tables. -1. Open the Db2 warehouse and navigate to **Administration > User management**. +1. In IBM Cloud, go to your DB2 instance and navigate to **Administration > User management**. 2. Click **Add**. -3. Create a new user with *user* privileges. Make sure you save the username and password, as these are required to set up the Segment configuration in a later step. +3. Create a new user with *user* privileges. Make sure to save the username and password—these are needed to configure the Segment + source connection later. > info "" > The `SEGMENT_REVERSE_ETL` schema will be created and managed by Segment to track the status of each sync. > You can also choose to create this schema yourself by running: > `CREATE SCHEMA SEGMENT_REVERSE_ETL` -> and explicitly grant Segment privileges on it. +> Then grant Segment the appropriate privileges. -Run the below SQL commands to grant Segment the required permissions: +Run the following SQL commands to grant Segment the required permissions: ```sql --- Grant permissions to create manage objects within the SEGMENT_REVERSE_ETL schema +-- Grant permissions to create and manage objects within the SEGMENT_REVERSE_ETL schema GRANT CREATEIN, DROPIN ON SCHEMA SEGMENT_REVERSE_ETL TO USER ; + +-- Grant permission to create tables in the database GRANT CREATETAB ON DATABASE TO USER ; -- Grant read access on each table used in the model GRANT SELECT ON TABLE . TO USER ; +-- Repeat the above command for all tables involved in your model ``` -## Set up guide +## Set Up Guide To set up DB2 as your Reverse ETL source: 1. Make sure your DB2 database is network-accessible from [Segment's IPs](/docs/connections/storage/warehouses/faq/#which-ips-should-i-allowlist). 2. Open [your Segment workspace](https://app.segment.com/workspaces){:target="_blank"}. -3. Navigate to **Connections > Sources** and select the **Reverse ETL** tab. +3. Navigate to **Connections > Sources** then select the **Reverse ETL** tab. 4. Click **+ Add Reverse ETL source**. 5. Select **DB2** and click **Add Source**. -6. Enter the configuration settings for your DB2 source: +6. Fill in the DB2 connection settings: * Hostname: `` * Port: `` * Database: `` * Username: `` * Password: `` - * Schema [optional]: If not specified, Segment will use the user’s default schema 7. Click **Test Connection** to validate the setup. 8. If the connection is successful, click **Add source**. -After you've successfully added your DB2 source, [add a model](/docs/connections/reverse-etl/setup/#step-2-add-a-model) and follow the rest of the steps in the Reverse ETL setup guide. +After successfully adding your DB2 source, [add a model](/docs/connections/reverse-etl/setup/#step-2-add-a-model) and follow the rest of the steps in the Reverse ETL setup guide. From 11ab7804dada11d14383e7d49ea723e035a37716 Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:38:12 -0400 Subject: [PATCH 09/87] Update src/_data/sidenav/main.yml Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/_data/sidenav/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_data/sidenav/main.yml b/src/_data/sidenav/main.yml index d73e7ddb26..ca54f8f1a6 100644 --- a/src/_data/sidenav/main.yml +++ b/src/_data/sidenav/main.yml @@ -211,7 +211,7 @@ sections: - path: /connections/reverse-etl/reverse-etl-source-setup-guides/databricks-setup title: Databricks Reverse ETL Setup - path: /connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup - title: DB2 Reverse ETL Setup + title: Db2 Reverse ETL Setup - path: /connections/reverse-etl/reverse-etl-source-setup-guides/postgres-setup title: Postgres Reverse ETL Setup - path: /connections/reverse-etl/reverse-etl-source-setup-guides/redshift-setup From 1dcbf58be15a0f67869105a34ee5ca012f1db4fc Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:38:30 -0400 Subject: [PATCH 10/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index f72827138d..031711f608 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -1,5 +1,5 @@ --- -title: DB2 Reverse ETL Setup +title: Db2 Reverse ETL Setup --- Set up DB2 as your Reverse ETL source. From 73240ca0b890fcd196e0c2a5e279588549e62f71 Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:38:37 -0400 Subject: [PATCH 11/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index 031711f608..f53e0dbf11 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -2,7 +2,7 @@ title: Db2 Reverse ETL Setup --- -Set up DB2 as your Reverse ETL source. +Set up Db2 as your Reverse ETL source. At a high level, when you set up DB2 for Reverse ETL, the configured database user must have read permissions on any tables involved in the query, and write permissions on a managed schema (`SEGMENT_REVERSE_ETL`) that Segment uses to track sync progress. Authentication is handled through username and password credentials configured in the Segment app. From 3c5c38c6e25a8de55a5d6fa715aa3beb65ceec78 Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:38:48 -0400 Subject: [PATCH 12/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index f53e0dbf11..dfdc448ee8 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -4,7 +4,7 @@ title: Db2 Reverse ETL Setup Set up Db2 as your Reverse ETL source. -At a high level, when you set up DB2 for Reverse ETL, the configured database user must have read permissions on any tables involved in the query, and write permissions on a managed schema (`SEGMENT_REVERSE_ETL`) that Segment uses to track sync progress. Authentication is handled through username and password credentials configured in the Segment app. +At a high level, when you set up Db2 for Reverse ETL, the configured database user must have read permissions on any tables involved in the query and write permissions on a managed schema (`SEGMENT_REVERSE_ETL`) that Segment uses to track sync progress. Segment authenticates with your Db2 instance through a username and password. From 7086a9fe94d503c7b682a99a67f5534c117c2a4a Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:38:56 -0400 Subject: [PATCH 13/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index dfdc448ee8..a68b8b00ef 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -12,7 +12,7 @@ At a high level, when you set up Db2 for Reverse ETL, the configured database us In order to run a Reverse ETL sync in a DB2 warehouse, Segment needs the following permissions: -* **Permission to read from all tables used in the model** (i.e., the tables included in your SELECT query). +* **Permission to read from all tables used in the model**: The user must be able to access all tables included in your SELECT query. * **Permission to create and manage a schema** for tracking sync metadata. * **Permission to create tables in the database**, needed for internal metadata tables. From fab1552266e19b0310e7e8ae756e36abbc916b9c Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:39:05 -0400 Subject: [PATCH 14/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index a68b8b00ef..662a6e6f63 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -10,7 +10,7 @@ At a high level, when you set up Db2 for Reverse ETL, the configured database us ## Required permissions -In order to run a Reverse ETL sync in a DB2 warehouse, Segment needs the following permissions: +In order to run a Reverse ETL sync in your Db2 warehouse, you'll create a user with the following permissions: * **Permission to read from all tables used in the model**: The user must be able to access all tables included in your SELECT query. * **Permission to create and manage a schema** for tracking sync metadata. From b98e62f05b2862c4dc819fe293a95cb822f90fce Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:39:16 -0400 Subject: [PATCH 15/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index 662a6e6f63..01a5974710 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -13,7 +13,7 @@ At a high level, when you set up Db2 for Reverse ETL, the configured database us In order to run a Reverse ETL sync in your Db2 warehouse, you'll create a user with the following permissions: * **Permission to read from all tables used in the model**: The user must be able to access all tables included in your SELECT query. -* **Permission to create and manage a schema** for tracking sync metadata. +* **Permission to create and manage a schema**: Segment creates and manages a schema in your warehouse to track sync metadata. * **Permission to create tables in the database**, needed for internal metadata tables. From 395ae0fefa28cdaf5aed8bb891b2cca74c8ec7da Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:39:24 -0400 Subject: [PATCH 16/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index 01a5974710..959a8b902d 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -14,7 +14,7 @@ In order to run a Reverse ETL sync in your Db2 warehouse, you'll create a user w * **Permission to read from all tables used in the model**: The user must be able to access all tables included in your SELECT query. * **Permission to create and manage a schema**: Segment creates and manages a schema in your warehouse to track sync metadata. -* **Permission to create tables in the database**, needed for internal metadata tables. +* **Permission to create tables in the database**: Segment creates metadata tables in your warehouse. > info "Use a dedicated user for Segment" From 41f68c771c412ceb6ffb2aa30e3b6c42475b50b0 Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:39:42 -0400 Subject: [PATCH 17/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index 959a8b902d..eb60c3e5b0 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -17,8 +17,8 @@ In order to run a Reverse ETL sync in your Db2 warehouse, you'll create a user w * **Permission to create tables in the database**: Segment creates metadata tables in your warehouse. -> info "Use a dedicated user for Segment" -> It's recommended to create a dedicated DB2 user for Segment with access limited to only the relevant schemas and tables. +> info "Create a dedicated user for Segment's Reverse ETL connection" +> Segment recommends that you create a dedicated Db2 user for when setting up Reverse ETL. This user should only have access to the relevant schemas and tables you'll need to access during syncs between Segment and your warehouse. 1. In IBM Cloud, go to your DB2 instance and navigate to **Administration > User management**. 2. Click **Add**. From 67039972db0eac918f27c3ecc7616e363f2e8ae7 Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:39:50 -0400 Subject: [PATCH 18/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index eb60c3e5b0..ea2ff2337f 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -20,7 +20,7 @@ In order to run a Reverse ETL sync in your Db2 warehouse, you'll create a user w > info "Create a dedicated user for Segment's Reverse ETL connection" > Segment recommends that you create a dedicated Db2 user for when setting up Reverse ETL. This user should only have access to the relevant schemas and tables you'll need to access during syncs between Segment and your warehouse. -1. In IBM Cloud, go to your DB2 instance and navigate to **Administration > User management**. +1. In IBM Cloud, go to your Db2 instance and navigate to **Administration > User management**. 2. Click **Add**. 3. Create a new user with *user* privileges. Make sure to save the username and password—these are needed to configure the Segment source connection later. From 7eeb28c122c1e15e2ea7ea90d5ef2ef1bb7f2970 Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:40:16 -0400 Subject: [PATCH 19/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index ea2ff2337f..7bcb50b37f 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -22,8 +22,7 @@ In order to run a Reverse ETL sync in your Db2 warehouse, you'll create a user w 1. In IBM Cloud, go to your Db2 instance and navigate to **Administration > User management**. 2. Click **Add**. -3. Create a new user with *user* privileges. Make sure to save the username and password—these are needed to configure the Segment - source connection later. +3. Create a new user with *user* privileges. Note the username and password of the user you created, as you'll need this information to set up the Segment source connection in a later step. > info "" From 81e188c2ed96b3e71de71c654d498c960f6af1d7 Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:40:33 -0400 Subject: [PATCH 20/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index 7bcb50b37f..8cf7cd95cd 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -26,10 +26,10 @@ In order to run a Reverse ETL sync in your Db2 warehouse, you'll create a user w > info "" -> The `SEGMENT_REVERSE_ETL` schema will be created and managed by Segment to track the status of each sync. +> Segment creates and manages the `SEGMENT_REVERSE_ETL` schema to track the status of each sync. > You can also choose to create this schema yourself by running: > `CREATE SCHEMA SEGMENT_REVERSE_ETL` -> Then grant Segment the appropriate privileges. +> After you've created the schema, grant Segment the appropriate privileges. From d8a752c819d8a68ed00b64eea85fe6d2d65a0d63 Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:40:54 -0400 Subject: [PATCH 21/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index 8cf7cd95cd..248c55cee4 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -48,7 +48,7 @@ GRANT SELECT ON TABLE . TO USER ; ``` -## Set Up Guide +## Set up guide To set up DB2 as your Reverse ETL source: From b7b8003d9bf158be335ae3aadcc312a595dc033a Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:41:01 -0400 Subject: [PATCH 22/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index 248c55cee4..5e63d4c5bb 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -50,7 +50,7 @@ GRANT SELECT ON TABLE . TO USER ; ## Set up guide -To set up DB2 as your Reverse ETL source: +To set up Db2 as your Reverse ETL source: 1. Make sure your DB2 database is network-accessible from [Segment's IPs](/docs/connections/storage/warehouses/faq/#which-ips-should-i-allowlist). 2. Open [your Segment workspace](https://app.segment.com/workspaces){:target="_blank"}. From f1cb5598eca5e44802fb6932a0295d2fd1d9a663 Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:41:15 -0400 Subject: [PATCH 23/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index 5e63d4c5bb..1ad061f3e2 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -52,7 +52,7 @@ GRANT SELECT ON TABLE . TO USER ; To set up Db2 as your Reverse ETL source: -1. Make sure your DB2 database is network-accessible from [Segment's IPs](/docs/connections/storage/warehouses/faq/#which-ips-should-i-allowlist). +1. Confirm that your Db2 database is network-accessible from the [IP address that Segment uses to connect to your warehouse](/docs/connections/storage/warehouses/faq/#which-ips-should-i-allowlist). 2. Open [your Segment workspace](https://app.segment.com/workspaces){:target="_blank"}. 3. Navigate to **Connections > Sources** then select the **Reverse ETL** tab. 4. Click **+ Add Reverse ETL source**. From c036ce8d840604c677259cead15bb00f10ab79d5 Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:41:21 -0400 Subject: [PATCH 24/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index 1ad061f3e2..a03f7d6582 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -56,7 +56,7 @@ To set up Db2 as your Reverse ETL source: 2. Open [your Segment workspace](https://app.segment.com/workspaces){:target="_blank"}. 3. Navigate to **Connections > Sources** then select the **Reverse ETL** tab. 4. Click **+ Add Reverse ETL source**. -5. Select **DB2** and click **Add Source**. +5. Select **Db2** and click **Add Source**. 6. Fill in the DB2 connection settings: * Hostname: `` * Port: `` From 66ee83d3d9b95d7d483d2c0f970826bf46fd38b9 Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:41:27 -0400 Subject: [PATCH 25/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index a03f7d6582..8571b40a44 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -57,7 +57,7 @@ To set up Db2 as your Reverse ETL source: 3. Navigate to **Connections > Sources** then select the **Reverse ETL** tab. 4. Click **+ Add Reverse ETL source**. 5. Select **Db2** and click **Add Source**. -6. Fill in the DB2 connection settings: +6. Fill in the following Db2 connection settings: * Hostname: `` * Port: `` * Database: `` From d11879789358fcbc92cb57813bc7fc0367b92d45 Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:41:37 -0400 Subject: [PATCH 26/87] Update src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index 8571b40a44..915a9d71bc 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -66,4 +66,4 @@ To set up Db2 as your Reverse ETL source: 7. Click **Test Connection** to validate the setup. 8. If the connection is successful, click **Add source**. -After successfully adding your DB2 source, [add a model](/docs/connections/reverse-etl/setup/#step-2-add-a-model) and follow the rest of the steps in the Reverse ETL setup guide. +After successfully adding your Db2 source, [add a model](/docs/connections/reverse-etl/setup/#step-2-add-a-model) and follow the rest of the steps in the Reverse ETL setup guide. From f1a05db2061d4b5ae4c1da87f3ac22bebba18bf0 Mon Sep 17 00:00:00 2001 From: Gil Omer <80776787+gilsegment@users.noreply.github.com> Date: Wed, 11 Jun 2025 10:41:44 -0400 Subject: [PATCH 27/87] Update src/connections/reverse-etl/setup.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/reverse-etl/setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/reverse-etl/setup.md b/src/connections/reverse-etl/setup.md index 88cf060cd7..4172e6e281 100644 --- a/src/connections/reverse-etl/setup.md +++ b/src/connections/reverse-etl/setup.md @@ -28,7 +28,7 @@ To add your warehouse as a source: - [Azure Reverse ETL setup guide](/docs/connections/reverse-etl/reverse-etl-source-setup-guides/azure-setup) - [BigQuery Reverse ETL setup guide](/docs/connections/reverse-etl/reverse-etl-source-setup-guides/bigquery-setup) - [Databricks Reverse ETL setup guide](/docs/connections/reverse-etl/reverse-etl-source-setup-guides/databricks-setup) - - [DB2 Reverse ETL setup guide](/docs/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup) + - [Db2 Reverse ETL setup guide](/docs/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup) - [Postgres Reverse ETL setup guide](/docs/connections/reverse-etl/reverse-etl-source-setup-guides/postgres-setup) - [Redshift Reverse ETL setup guide](/docs/connections/reverse-etl/reverse-etl-source-setup-guides/redshift-setup) - [Snowflake Reverse ETL setup guide](/docs/connections/reverse-etl/reverse-etl-source-setup-guides/snowflake-setup) From 1da06f47dde48d737891176659b1644282e9a418 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Tue, 17 Jun 2025 15:43:04 +0100 Subject: [PATCH 28/87] Added steps on sending in-app events to Segment [DOC-1131] --- src/connections/destinations/catalog/adjust/index.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/connections/destinations/catalog/adjust/index.md b/src/connections/destinations/catalog/adjust/index.md index f01340d82f..4a799461bb 100644 --- a/src/connections/destinations/catalog/adjust/index.md +++ b/src/connections/destinations/catalog/adjust/index.md @@ -231,6 +231,14 @@ The destination will automatically recognize the spec'd `orderId` property, and If you're using Adjust's iOS SDK, it will automatically takes care of duplicate purchase events. Segment uses Adjust's default deduplication (using `transactionId`) when you send an `orderId` (see the [ecommerce spec](/docs/connections/spec/ecommerce/v2/#order-completed)). +### Sending in-app events from Adjust to Segment + +Customers can forward in-app events from Adjust to Segment by following the steps below: + +1. Navigate to the Segment module within the Adjust dashboard. +2. Go to the **Data sharing** section. +3. Use the **Map your events** option to select and map the in-app events you'd like to forward to Segment. + ### In-app purchase receipts The destination does not currently support in-app purchase receipts. If this is important to you, [reach out to support](https://segment.com/help/contact/){:target="_blank”}. @@ -246,3 +254,4 @@ By default, our destination enables event buffering for Adjust. This saves your ### Deep linking The destination does not automatically support deep linking out of the box (you'd need to write code here regardless). This means you can use [Adjust's deep-linking](https://github.com/adjust/ios_sdk#7-set-up-deep-link-reattributions){:target="_blank"} by accessing [the Adjust SDK directly](/docs/connections/sources/catalog/libraries/mobile/ios/#faq). + From 76ee1a60d1f96759711f5aba25ec58577adc32f7 Mon Sep 17 00:00:00 2001 From: pwseg Date: Tue, 17 Jun 2025 15:11:25 -0500 Subject: [PATCH 29/87] Hide Attentive Actions doc --- src/connections/destinations/catalog/actions-attentive/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/connections/destinations/catalog/actions-attentive/index.md b/src/connections/destinations/catalog/actions-attentive/index.md index e954a5639e..7d053f518d 100644 --- a/src/connections/destinations/catalog/actions-attentive/index.md +++ b/src/connections/destinations/catalog/actions-attentive/index.md @@ -1,6 +1,8 @@ --- title: Attentive (Actions) Destination id: 674f2453916dadbd36d899dc +beta: true +hidden: true --- [Attentive](https://www.attentive.com/?utm_source=partner-generated&utm_medium=partner-marketing-&utm_campaign=partner-generated-4.15.22-segment.io){:target="_blank"} with Segment makes it easy to sync customer and event data from Segment to Attentive so that you can send highly personalized and timely messages. From 82edc4160c607c8de0d6a33edc9abf70655053b6 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 18 Jun 2025 15:29:49 +0100 Subject: [PATCH 30/87] Source Insert Functions doc added to Functions --- .../functions/source-insert-functions | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 src/connections/functions/source-insert-functions diff --git a/src/connections/functions/source-insert-functions b/src/connections/functions/source-insert-functions new file mode 100644 index 0000000000..7ed4981200 --- /dev/null +++ b/src/connections/functions/source-insert-functions @@ -0,0 +1,102 @@ +--- +title: Source Insert Functions +--- + +> info "Source Insert Function is in Public Beta" +> Source Insert Function is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. + +## Create source insert functions + +There are two ways you can access source insert functions from your Segment workspace: +- From the [Connections catalog](#using-the-catalog). +- From the [Sources tab](#using-the-sources-tab). + +### Using the catalog + +To create a source insert function from Segment’s catalog: + +1. Navigate to **Connections** > **Catalog** > **Functions** and click **New Function**. + +2. In the Select Function Type screen, select **Source Insert** and click **Next: Build Function**. + +3. Write and test your function code. Enter a sample event and click **Run** to test the function. + +4. Click **Next: Configure & Create** to add a function name, description (optional), and function logo (optional). + +5. Click **Create Function** to save your insert function. The new source insert function will be displayed in the Functions tab. + +#### Coding the source insert function + +Insert functions can define handlers for the following message types: +- `onIdentity` +- `onTrack` +- `onPage` +- `onScreen` +- `onGroup` +- `onAlias` +- `onDelete` + +The default source code template includes handlers for all event types. Just implement the types you need and skip the ones you don’t. For event types you want to send through, return the event in the respective event handler. + +### Using the Sources tab + +You can also create a source insert function from Sources. + +1. Navigate to **Connections** > **Sources**. +2. Select your source and go to the **Functions** tab. +3. Click **Create insert function** to create your insert function from scratch. + +### Connecting a source insert function to a source + +For data to flow downstream after transformation, you need to connect your source insert function to a source. To do this, follow the steps below: + +1. Select the insert function you want to connect to the source. You can edit, delete, and connect the insert function in the side pane. +2. Click *Connect a source**. +3. Select the source you want to connect from the dropdown and click **Connect to Source** to connect. + +### Errors and error handling + +Segment considers a function’s execution successful if it completes without error. You can `throw` an error to create a failure on purpose. Use these errors to validate event data before processing to make sure the function works as expected. + +You can `throw` the following pre-defined error types to indicate that the function ran successfully, but the data was not deliverable: + +- `EventNotSupported` +- `InvalidEventPayload` +- `ValidationError` +- `RetryError` +- `DropEvent` + +This is similar to Source, Destination, and Insert Functions. + +The errors listed are all permanent errors, except `RetryError`. When a `RetryError` is thrown, Segment will reattempt to run the function a set number of times before permanently erroring out. + +### Source insert functions FAQs + +**The Delivery Overview tab does not display any errors that occur within the source insert function.** +If errors arise or events are dropped, they will appear as if the events never flowed from the source. + +**Can I test the function with different event types?** +You can test the function with different event types from the **Test** tab in the code editor, similar to other functions. + +**Can I use source insert functions for all types of Source?** +Source insert functions only work for event sources, not object sources or rETL. + +**What is the expected latency for a source insert function?** +Typically, it takes a source insert function between 200 milliseconds to 5 seconds to complete, based on the complexity of the function. The default timeout is 5 seconds but can be increased to 60 seconds. + +**What is the runtime environment?** +Segment supports Node.js V18. The dependencies listed [here](https://segment.com/docs/connections/functions/insert-functions/#runtime-and-dependencies){:target=”_blank”} are installed in the function. The following dependencies are also installed: +- `@azure/identity` exposed as `azure.identity` +- `@azure/event-hubs` exposed as `azure.eventHubs` +- `@azure/synapse` exposed as `azure.synapse` +- `jsftp` exposed as `jsftp` +- `crypto-js` exposed as `cryptojslib.cryptojs` +- `akeyless` exposed as `akeylessLabs.akeyless` +- `akeyless-cloud-id` exposed as `akeylessLabs.akeylessCloudId` +- `@onesignal/node-onesignal` exposed as `oneSignal.oneSignal` +- `pg` exposed as `pg.pg` +- `snowflake-sdk` exposed as `snowflakesdk.snowflakesdk` +- `@clickhouse/client` exposed as `clickHouseClient.clickHouseClient` +- `aws4` exposed as `aws4.aws4` +- `@sentry/node` exposed as `sentrylib.sentry` + From 3a1c8507b4ca3da7aac7215a73882d5fe8bfce0a Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 18 Jun 2025 15:33:37 +0100 Subject: [PATCH 31/87] added whitespace for [netlify-build] --- src/connections/functions/source-insert-functions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions b/src/connections/functions/source-insert-functions index 7ed4981200..71bd46f043 100644 --- a/src/connections/functions/source-insert-functions +++ b/src/connections/functions/source-insert-functions @@ -5,7 +5,7 @@ title: Source Insert Functions > info "Source Insert Function is in Public Beta" > Source Insert Function is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. -## Create source insert functions +## Create source insert functions There are two ways you can access source insert functions from your Segment workspace: - From the [Connections catalog](#using-the-catalog). From 0d8bbf65d7bfcd5e1d261a5346c9dce1939f8eb0 Mon Sep 17 00:00:00 2001 From: sade-wusi Date: Wed, 18 Jun 2025 15:55:09 +0100 Subject: [PATCH 32/87] Added recipe pages for destination integrations with Extensible Webhooks --- .../amazon-ads-integration-recipe.md | 145 ++++++++++++++++ .../google-search-ads-integration-recipe.md | 113 +++++++++++++ .../microsoft-integration-recipe.md | 113 +++++++++++++ .../reddit-ads-audience-integration-recipe.md | 130 +++++++++++++++ ...t-ads-conversion-api-integration-recipe.md | 155 ++++++++++++++++++ 5 files changed, 656 insertions(+) create mode 100644 src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md create mode 100644 src/connections/destinations/catalog/actions-webhook-extensible/google-search-ads-integration-recipe.md create mode 100644 src/connections/destinations/catalog/actions-webhook-extensible/microsoft-integration-recipe.md create mode 100644 src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md create mode 100644 src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-conversion-api-integration-recipe.md diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md new file mode 100644 index 0000000000..ba0a495407 --- /dev/null +++ b/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md @@ -0,0 +1,145 @@ +--- +title: Amazon Ads Audience Sync Integration Recipe +--- + +This recipe will guide you through how to set up a custom destination for Amazon Ads using Twilio Segment's Extensible Webhooks feature and how to sync customer data into an Audience list. By following these steps, you can integrate your data source with Amazon Ads. + +## Prerequisites + +To integrate Amazon Ads with Segment, ensure you have the following: + +- A Segment Account: an account with the Extensible Webhooks feature enabled (private beta access). +- An Amazon Ads Account: an active account or API access to Amazon Ads. +- Authentication Credentials: the necessary credentials for authentication. These are OAuth endpoints, Client ID, Secret, Scopes. +- Data mapping information: Knowledge of the data fields required by Amazon Ads. + +## Getting started + +### 1. Set up the Extensible Webhook destination + +To set up your destination in Segment: + +1. In your Segment workspace go to **Catalog** > **Destinations**. +2. Search for Extensible Webhook and select **Add destination**. + +### 2. Select the data source + +1. Choose the source from which you want to send data to Amazon Ads. +2. Click **Next** to proceed. + +### 3. Specify the instance details + +1. Enter a recognizable name for your webhook instance (e.g., "Segment to Amazon Integration"). +2. (Optional) Add a brief description of the integration. + +### 4. Select the authentication type + +An Amazon Client Application has to be created which requires approval. For steps on how to complete Amazon API onboarding, see the [Amazon documentation](https://advertising.amazon.com/API/docs/en-us/guides/onboarding/overview){:target="_blank"}. + +The LwA (Login with Amazon) application that you create should have `advertising::audiences` as the scope. For Campaign management, like marking conversions, the scope should be `advertising::campaign_management`. + +Once a LwA app has been created, you will need to add the redirect URI “https://app.segment.com/oauth-service/webhook/callback” to the list of Allowed Return URLs. For more detail on this, see the [Amazon documentation](https://advertising.amazon.com/API/docs/en-us/guides/get-started/create-authorization-grant#allow-a-return-url){:target="_blank"}. + +Note down the Client ID and Secret, available in the Login with Amazon section on the [Amazon Developer site](https://developer.amazon.com/){:target="_blank"}. These will be used to set up authentication with Segment. + +#### Authentication + +To set up authentication: +1. Select OAuth 2.0 from the list of options and select **Authorization Code**. +2. Enter the following credential details as listed below or given in the web app: + - Client ID + - Client secret + - Authorize URL: https://www.amazon.com/ap/oa + - Token URL: https://api.amazon.com/auth/o2/token + - Refresh URL: https://api.amazon.com/auth/o2/token + - Scope: `advertising::audiences` + + The authorization URL can be found [here](https://advertising.amazon.com/API/docs/en-us/guides/get-started/create-authorization-grant#determine-the-url-prefix-for-your-region){:target="_blank"} and the access/refresh token URL can be found [here](https://advertising.amazon.com/API/docs/en-us/guides/get-started/retrieve-access-token#call-the-authorization-url-to-request-access-and-refresh-tokens){:target="_blank"}, depending on your region. + +3. Once you create the destination instance, you will then be redirected to the Settings section. Click **Connect** to set up the OAuth connection with Amazon Ads. +4. You will be redirected to Amazon Ads. Log in and click **Allow** to complete the authentication flow. + +Once done redirected back to the destination settings page, authentication is completed and you’re now ready to send events to Amazon Ads. + +### 5. Perform Data Mapping + +#### Data transformation + +Amazon Ads expects data to be in a certain format with nested fields. This format cannot be mapped with the mappings functionality and will need to be transformed within an insert function. + +You will need to write an insert function that appends a property, for example one called “body”, to the event which would then have nested fields. For the Amazon Ads Audience API, a sample expected payload is of the following structure: + +``` +{ + "records": [ + { + "hashedPII": [ + { + "firstname": "sdstdsdsaring", + "address": "scdcadscstring", + "phone": "sadtrdsaidng", + "city": "ssatring", + "state": "strccaing", + "postal": "staccaring", + "email": "stracaing", + "lastname": "stacaddacring" + } + ], + "externalUserId": "A12346sgd", + "action": "CREATE" + } + ], + "targetResource": { + "connectionId": "", + "targetTypes": [ + "DSP" + ] + }, + "audienceId": 371552318001631924 +} +``` + +The Amazon Ads Audience API's expected fields are: +- `Records` is an array of objects. For the beta, Segment doesn’t support batching to iterate over this object yet. The required parameters are: + - `hashedPII`: A list of SHA-256 hashed PII that will be matched with Amazon entities. + - `firstname` + - `lastname` + - `address` + - `phone` + - `city` + - `state` + - `postal` + - `email` + - `externalUserId`: The id used by external systems to identify customers. + - `action`: Can be “CREATE” or “DELETE” based on whether you want to add or remove the user from the list. +- `audienceID` is the ID of the Audience list to which the data should be either added or deleted. You can get the audienceID from within the Amazon Ads console or when creating an Audience from the API. + +#### Data Mapping + +1. Create a new Mapping in the Mappings tab and select the **Send** HTTP action. +2. Choose which events you want to send to Amazon Ads Audience API using the Event filters. +3. Fill out mapping fields: + - Specify the URL: + - The API endpoint is based on region. + - Include the suffix with the Audience API Endpoint: /amc/audiences/records + - Specify the headers: + - `Amazon-Advertising-API-ClientId`: The Client ID from Login with Amazon Account. +4. 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. +5. Turn off batching for this operation. + +### 6. Test the output and connection + +1. Click **Test Connection** to send a sample payload. +2. In Amazon Ads, verify that the test data has been received and processed correctly. + +#### Troubleshooting + +If the test fails: +- review the authentication details and data mappings. +- check for error messages in Segment and Amazon Ads. + +### 7. Save and enable the destination + +1. Once the test is successful, click **Save** to store your configuration. +2. Toggle the destination to Enable to start sending live data to Amazon Ads Audience API. +3. Monitor the data flow to ensure that events are being delivered as expected. diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/google-search-ads-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/google-search-ads-integration-recipe.md new file mode 100644 index 0000000000..e6872cd7a4 --- /dev/null +++ b/src/connections/destinations/catalog/actions-webhook-extensible/google-search-ads-integration-recipe.md @@ -0,0 +1,113 @@ +--- +title: Google Search Ads 360 Conversion API Integration Recipe +--- + +This recipe will guide you through how to set up a custom destination for Google Search Ads 360 conversions using Twilio Segment’s Extensible Webhooks feature. + +## Prerequisites + +To integrate Search Ads 360 with Twilio Segment, ensure you have the following: + +- A Segment account: an account with the Extensible Webhooks feature enabled (private beta access). +- A Search Ads account: an active account and API access to Google Search Ads 360. +- Authentication credentials: necessary credentials for authentication, for example, API keys and tokens. +- Data mapping information: knowledge of the data fields required by Search Ads 360. + +## Getting started + +### 1. Configure Extensible Webhook as a destination + +1. In your Segment workspace, navigate to **Connections** > **Catalog** > **Destinations**. +2. Use the search bar to search for **Extensible Webhook** and select **Add destination**. + +### 2. Select the data source + +1. Choose the source that you want to send data from to Google Search Ads 360. +2. Click **Next** to proceed. +3. Give your destination a name and create your destination. + +### 3. Specify the instance details + +1. Enter a recognizable name for your webhook instance, for example, Segment to Search Ads Integration. +2. (Optional) Add a brief description of the integration. + +### 4. Select the authentication type + +As a prerequisite to authenticate APIs, you need to create OAuth credentials. Once generated, note down the Client ID and Secret. They are required to set up authentication between Segment and Google Search Ads. + +You will also need to add the following redirect URI to the list of allowed return URLs: https://app.segment.com/oauth-service/webhook/callback. + +#### Authentication + +1. Select OAuth 2.0 and select Authorization Code. +2. Enter the following credentials details from your project: + - Client ID + - Client secret + - Authorize URL: https://accounts.google.com/o/oauth2/v2/auth + - Token URL: https://oauth2.googleapis.com/token + - Refresh URL: https://oauth2.googleapis.com/token + - Scope: https://www.googleapis.com/auth/doubleclicksearch +3. Once you have created the destination instance, you will be redirected to the Settings section. Click **Connect** to set up the OAuth connection with Google Search Ads 360. +4. Log in to your Google Search Ads account and click **Allow** to complete authentication. + +If authentication is completed successfully, you will be redirected to the destination settings page. At this point, you are ready to send events to Google Search Ads. + +### 5. Data mapping + +#### Data transformation + +Google Search Ads 360 expects data to be in a certain format with nested fields. This format cannot be mapped with the mappings functionality and will need to be transformed within an insert function. + +You will need to write an insert function that appends a property, for example one called “body”, to the event which would then have nested fields. For the Google Search Ads 360 Conversion API, an expected sample payload is of the following structure: + +``` +{ + "kind": "doubleclicksearch#conversionList", + "conversion" : [{ + "clickId" : "COiYmPDTv7kCFcP0KgodOzQAAA", // Replace with a click ID from your site + "conversionId" : "test_20130906_04", + "conversionTimestamp" : "1378710000000", + "segmentationType" : "FLOODLIGHT", + "segmentationName" : "Test", + "type": "TRANSACTION", + "revenueMicros": "10000000", // 10 million revenueMicros is equivalent to $10 of revenue + "currencyCode": "USD" + }] + } +``` + +The Google Search Ads 360 Conversion API's required fields are: +- `kind` which is "doubleclicksearch#conversionList". Conversion is an array. For the beta, Segment doesn’t support batching to iterate over this. +- `clickId` which is the ID of a specific click on an ad that the customer clicked on. +- `conversionId` is a unique ID that tracks the particular conversion. +- `conversionTimestamp` is date and time in epoch milliseconds on when the conversion took place. +- `segmentationType` should be floodlight. +- `segmentationName` is the floodlight activity to report this conversion to. +- `type` which can be `Action` or `Transaction` to indicate whether the conversion had a monetary value or not. + +#### Data mapping + +1. Create a new Mapping in the Mappings tab and select the **Send** HTTP action. +2. Choose which events you want to send to Google Search Ads 360 API using the Event filters. +3. Fill out mapping fields: + - Specify the URL: https://www.googleapis.com/doubleclicksearch/v2/conversion +4. 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. +5. Turn off batching for this operation. + +### 6. Test the output and connection + +1. Click **Test Connection** to send a sample payload. +2. In Google Search Ads 360 Conversion, verify that the test data has been received and processed correctly. + +#### Troubleshooting + +If the test fails: +- review the authentication details and data mappings. +- check for error messages in Segment and Search Ads. + +### 7. Save and enable the destination + +1. Once the test is successful, click **Save** to store your configuration. +2. Toggle the destination to Enable to start sending live data to Google Search Ads 360 Conversion API. +3. Monitor the data flow to ensure that events are being delivered as expected. + diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/microsoft-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/microsoft-integration-recipe.md new file mode 100644 index 0000000000..b04ee6b7aa --- /dev/null +++ b/src/connections/destinations/catalog/actions-webhook-extensible/microsoft-integration-recipe.md @@ -0,0 +1,113 @@ +--- +title: Microsoft Dynamics 365 (Sales Hub) Integration Recipe +--- + +This recipe will guide you through how to set up a custom destination for Microsoft Dynamics 365 (Sales) using Twilio Segment’s Extensible Webhook feature. + +## Prerequisites + +To integrate Microsoft Dynamics 365 with Twilio Segment, ensure you have the following: + +- A Segment account: an account with the Extensible Webhooks feature enabled (private beta access). +- An Azure application: an Azure application is required for authentication. +- Authentication credentials: necessary credentials for authentication, for example, endpoints and scopes. +- Data mapping information: knowledge of the data fields required by Microsoft Dynamics 365. + +## Getting started + +### 1. Configure Extensible Webhook as a destination + +1. In your Segment workspace, navigate to **Connections** > **Catalog** > **Destinations**. +2. Use the search bar to search for "Extensible Webhook" and select **Add destination**. + +### 2. Select the data source + +1. Choose the source that you want to send data from to Microsoft Dynamics 365.. +2. Click **Next** to proceed. +3. Give your destination a name and create your destination. + +### 3. Specify the instance details + +1. Enter a recognizable name for your webhook instance, for example, Segment to Microsoft Dynamics Integration. +2. (Optional) Add a brief description of the integration. + +### 4. Select the authentication type + +For authentication, you need to first create an Azure application that can authenticate users to provide access to Microsoft Dynamics API. See [Microsoft documentation](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app?tabs=client-secret){:target="_blank"} for details on how to create an application and how to get the client secret that will later be used for authentication. + +The redirect URI for your application is https://app.segment.com/oauth-service/webhook/callback. + +To connect the Azure app with the Dynamics instance, go to the Power Platform Admin Center. +Here you will need to create new app users associated with a business unit, and provide security roles. + +Once you have successfully created an Azure web application and associated it with a Dynamics environment, you can proceed to authentication in Segment. + +1. Navigate to the settings page of the webhook destination in Segment. +2. Select OAuth 2.0 and select Authorization Code. +3. Enter the following credential details from your web app or as listed below: + - Client ID + - Client secret + - Access Token URL: https://login.microsoftonline.com//oauth2/v2.0/token + - Scope: https:///.default +4. Click **Connect** to set up the OAuth connection with Microsoft. + +Authentication will take place if the configurations are correct and the access token will automatically be generated without the need for user login. + +### 5. Data mapping + +#### Data transformation (optional) + +Microsoft Dynamics 365 can create and update multiple entities all at once with a nested object structure. For example, with a single API call to the `accounts` entity, you can create a new account, contact and a related opportunity in a single shot. + +You will need to write an insert function that appends a property, for example one called “body”, to the event which would then have nested fields. For the Create New Account API, an expected sample payload is of the following structure: + +``` +{ + "name": "Sample Account", + "primarycontactid": + { + "firstname": "John", + "lastname": "Smith" + }, + "opportunity_customer_accounts": + [ + { + "name": "Opportunity associated to Sample Account", + "Opportunity_Tasks": + [ + { "subject": "Task associated to opportunity" } + ] + } + ] +} +``` + +The Create New Account API’s expected fields are listed in [Microsoft's documentation](https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/reference/account?view=dataverse-latest){:target="_blank"}. + +To create or update the Account entity only, you can skip this step and directly use mappings to map properties and keys. + +#### Data mapping + +1. Create a new Mapping in the Mappings tab and select the **Send** HTTP action. +2. Choose which events you want to send to Google Search Ads 360 API using the Event filters. +3. Fill out mapping fields: + - Specify the URL: [Organization URI]/api/data/v9.2/accounts (this is for creating new accounts) +4. 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. +5. Turn off batching for this operation. + +### 6. Test the output and connection + +1. Click **Test Connection** to send a sample payload. +2. In Microsoft Dynamics 365, verify that the test data has been received and processed correctly. + +#### Troubleshooting + +If the test fails: +- review the authentication details and data mappings. +- check for error messages in Segment and Search Ads. + +### 7. Save and enable the destination + +1. Once the test is successful, click **Save** to store your configuration. +2. Toggle the destination to Enable to start sending live data to Microsoft Dynamics 365. +3. Monitor the data flow to ensure that events are being delivered as expected. \ No newline at end of file diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md new file mode 100644 index 0000000000..98e4b6435b --- /dev/null +++ b/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md @@ -0,0 +1,130 @@ +--- +title: Reddit Ads (Audience) Integration Recipe +--- + +This recipe will guide you through setting up a custom destination for Reddit Ads (Audiences) using Twilio Segment's Extensible Webhooks feature. By following these steps, you will be able to integrate your data source with Reddit Ads (Audiences). + +## Prerequisites + +To integrate Reddit Ads with Segment, ensure you have the following: + +A Segment account: an account with the Extensible Webhooks feature enabled (private beta access). +A Reddit Ads (Audiences) account: an active account or API access to Reddit Ads (Audiences). +Authentication credentials: necessary credentials for authentication, for example, API keys and tokens. +Data mapping information: knowledge of the data fields required by Reddit Ads (Audiences). + +## Getting started + +### 1. Configure Extensible Webhook as a destination + +1. In your Segment workspace, navigate to **Connections** > **Catalog** > **Destinations**. +2. Use the search bar to search for **Extensible Webhook** and select **Add destination**. + +### 2. Select the data source + +1. Choose the source that you want to send data from to Reddit Ads (Audiences). +2. Click **Next** to proceed. +3. Give your destination a name and create your destination. + +### 3. Specify the instance details + +In Reddit Ads, create an app. For steps on how to do this, see the [Reddit documentation](https://ads-api.reddit.com/docs/v3/#create-a-developer-application){:target="_blank"}. + +When creating your app, specify the following details: + +- Name: Give your webhook instance a recognizable name. +- Description (optional): Add a brief description of the integration. +- Endpoint URL: Provide the webhook URL or endpoint provided by Reddit Ads (Audiences). + +> info: Redirect URI +The redirect URI used when creating a Reddit web app is “https://app.segment.com/oauth-service/webhook/callback”. + +### 4. Select the authentication type + +Reddit provides developers with an option to create a web application to set up OAuth 2.0 for the Ads API to be authenticated. Once a web app has been created, you will need to note down the Client ID and Secret provided by Reddit. These will be used to set up authentication on Segment. + +To set up OAuth: + +1. Go to **Authentication Method** and select **OAuth 2.0**. +2. Enter the following credentials as required: + - Client ID: provided by the Reddit web app + - Secret: provided by the Reddit web app + - Authorize URL: https://www.reddit.com/api/v1/authorize + - Token URL: https://www.reddit.com/api/v1/access_token + - Refresh URL: https://www.reddit.com/api/v1/access_token + - Scope: To update Audiences, you will need to add ‘adsedit’ as a scope. To add multiple scopes, separate the values by commas. + +You can also find the Authorize URL, Token URL, and Refresh URL in the [Reddit documentation](https://ads-api.reddit.com/docs/v3/operations/Update%20Custom%20Audience%20Users){:target="_blank"}. + +3. Once you create the destination instance, you will be redirected to Settings. Click on **Connect** to set up the OAuth connection with Reddit and you’ll be redirected to reddit. Click on “Allow” to complete the authentication flow. +4. Once you’re redirected back to the destination settings page, this means that authentication is completed and you’re now ready to send events to Reddit. + +### 5. Perform data mapping + +#### Data transformation + +The Reddit Custom Audience API expects data in a nested format. To format the payload correctly, you will have to write an insert function that appends a new property called “body” (for example). + +This will have the following structure: + +``` +{ + "data": { + "action_type": "ADD", + "column_order": [ + "EMAIL_SHA256", + "MAID_SHA256" + ], + "user_data": [ + [ + "d7ef2e7b2a3663c25284a3d6d13b1ca727fc8c659474b81afe0cec997a4737d2", + "510870d7b3e47a28a2b2f3aef27a4c81aab0b2eefda27dea50bc4c991d9e5435" + ] + ] + } +} +``` + +The required parameters are: + +- `action_type` which can take values “ADD” or “REMOVE” depending on whether a customer has to be added or removed from the list. +- `column_order` which can take two values, “EMAIL_SHA256” and “MAID_SHA256”. The order indicates the column order of the data being synced inside `user_data` +- `user_data` is an array of values which has hashed email id or MAID id or both. For the beta, Segment doesn’t support batching to iterate just over this array yet. + +#### Data mapping + +In this recipe, as an example, users are added to the existing audience but you can use one or multiple mappings to perform any `Put`, `Patch` or `Post` action types. + +1. Create a new mapping from the **Mappings** tab, click on **Add Mapping** and select the “Send” HTTP action. +2. Select events to send. Define the event triggers to send to Reddit Ads (Audiences) using the event filters. +3. Fill out mapping fields: + 1. Specify the URL and method. + - For example, using the following URL: https://ads-api.reddit.com/api/v3/custom_audiences/{audience_id}/users + 1. Replace `audience_id` with the actual audience ID you want to edit. You can find the iID below the name of the Audience List to be modified on Audience Manager. + 2. Select `PATCH` as the HTTP method. The API expects a Patch operation on the endpoint. +4. 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. +5. Turn off batching for this operation. + +Reddit supports three types of actions that can be performed via Extensible Webhook. + +- Audiences + - Manage Audiences: Create a new audience or manage existing ones. + - Manage Audience Users: PATCH users in existing audiences or create a new audience and add users to it. +- Campaigns + - Manage Campaigns: Create a new campaign or manage existing ones. + +### 6. Test the output and connection + +1. Click **Test Connection** to send a sample payload. +2. Verify in Reddit Ads (Audiences) that the test data has been received and processed correctly. + +Troubleshooting: + +- If the test fails, review the authentication details and data mappings. +- Check for error messages in Segment and Reddit Ads (Audiences). + +### 7. Save and enable the destination + +1. Once the test is successful, click **Save** to store your configuration. +2. Toggle the destination to Enabled to start sending live data. +3. Monitor the data flow to ensure events are being delivered as expected. 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 new file mode 100644 index 0000000000..f92a635228 --- /dev/null +++ b/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-conversion-api-integration-recipe.md @@ -0,0 +1,155 @@ +--- +title: Reddit Ads Conversion API Integration Recipe +--- + +This recipe will guide you through setting up a custom destination for Reddit Ads Conversion API using Segment’s Extensible Webhooks feature. By following these steps, you can integrate your data source with Reddit Ads Conversion API without writing any code. + +## Prerequisites + +To integrate Reddit Ads Conversion with Segment, ensure you have the following: + +- A Segment account: an account with the Extensible Webhooks feature enabled. +- Reddit Ads Conversion API account: an active account or API access to Reddit Ads Conversion API. +- Authentication credentials: necessary credentials for authentication, for example, API keys and tokens. +- Data mapping information: knowledge of the data fields required by Reddit Ads Conversion API. + +## Getting started + +### 1. Navigate to the Extensible Webhook destination + +1. In your Segment workspace, go to **Catalog** > **Destinations**. +2. Use the search bar to search for **Extensible Webhook** and select **Add destination**. + +### 2. Select the data source + +1. Choose the source that you want to send data from to Reddit Ads Conversion API. +2. Click **Next** to proceed. +3. Give your destination a name and create your destination. + +### 3. Specify the instance details + +In Reddit Ads, create an app. For steps on how to do this, see the [Reddit documentation](https://business.reddithelp.com/s/article/Create-a-Reddit-Application){:target="_blank"}. + +When creating your app, specify the following details: + +- Name: Give your webhook instance a recognizable name. +- Description (optional): Add a brief description of the integration. +- Endpoint URL: Provide the webhook URL or endpoint provided by Reddit Ads Conversion API. + +### 4. Select the authentication type + +Reddit provides two methods for authentication: +- Creating an app. +- Using the conversion access token. + +The conversion access token provides a bearer token that can be added to the header. To get the conversion access token from Reddit Ads: + +1. In your Reddit Ads account and navigate to **Events Manager**. +2. Select **Conversions API**. +3. Click **Generate Access Token** to generate your token. Copy and make a note of it. + +Once you have the conversion token, go back to your destination in your Segment workspace. In **Settings**, go to **Authorization Settings** and select “No Auth” as the authentication method. + +### 5. Perform data mapping + +#### Data transformation + +The Reddit Conversion API expects data in a nested format. To format the payload correctly, you will need to write an insert function that appends a new property, for example `body`. + +This will have the following structure: + +``` +{ + "events": [ + { + "click_id": "3184742045291813272", + "event_at": "2018-01-01T00:00:00Z", + "event_at_ms": 1514764800000, + "event_type": { + "tracking_type": "Purchase", + "custom_event_name": "string" + }, + "event_metadata": { + "item_count": 5, + "currency": "USD", + "value": 1099, + "value_decimal": 10.99, + "conversion_id": "H72B9A4YXQ", + "products": [ + { + "id": "item-213", + "name": "Carne Asada Burrito", + "category": "Food Items" + } + ] + }, + "user": { + "email": "snoo@example.com", + "external_id": "7c73f2ae-a433-4d7b-9838-f467da98f48e", + "uuid": "1684189007728.7c73f2ae-a433-4d7b-9838-f467da98f48e", + "ip_address": "192.0.2.1", + "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0", + "idfa": "EA7583CD-A667-48BC-B806-42ECB2B48606", + "aaid": "cdda802e-fb9c-47ad-9866-0794d394c912", + "opt_out": true, + "screen_dimensions": { + "width": 3440, + "height": 1440 + }, + "data_processing_options": { + "modes": [ + "LDU" + ], + "country": "US", + "region": "US-CA" + } + } + } + ] +} +``` + +The conversions payload consists of three core components: + +- `event_type`: This classifies the conversion event used for aggregating data in reporting. +- `event_metadata`: This contains information associated with specific actions or conversion events shared to Reddit. +- `user`: This includes attribution and advanced matching signals that improve conversion measurement. + +These components are separated into various parameters, some of which are required: +- `event_at` +- `tracking_type` +- `conversion_id` + +It’s also recommended that you include the `email`, `ip_address`, `uuid`, and `click_id` parameters. + +### Data mapping + +To map data from your destination to Reddit Ads: + +1. Create a new mapping in the **Mappings** tab, select the **Send** action. +2. Define the event trigger by selecting the events you want to send to Reddit Ads Conversion API using the Event name filters. +3. (Optional) Add enrichment entities as necessary. +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/{{YOURPICEL_ID}} + 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. +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. + +### 6. Test the output and connection + +1. Click **Test Connection** to send a sample payload. +2. In the Reddit Ads Conversion API, verify that the test data has been received and processed correctly. + +#### Troubleshooting + +If the test fails: +- Review the authentication details and data mappings. +- Check for error messages in Segment and the Reddit Ads Conversion API. + +### 7. Save and enable the destination + +1. Once the test is successful, click **Save** to store your configuration. +2. Toggle the destination to Enable to start sending live data to Reddit Ads Conversion API. +3. Monitor the data flow to ensure that events are being delivered as expected. From af8f48882679b23ea20052745c583690c95abe9f Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 18 Jun 2025 15:58:51 +0100 Subject: [PATCH 33/87] whitespace [netlify-build] --- .../actions-webhook-extensible/amazon-ads-integration-recipe.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md index ba0a495407..6e9a923e6f 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md @@ -1,5 +1,6 @@ --- title: Amazon Ads Audience Sync Integration Recipe + --- This recipe will guide you through how to set up a custom destination for Amazon Ads using Twilio Segment's Extensible Webhooks feature and how to sync customer data into an Audience list. By following these steps, you can integrate your data source with Amazon Ads. From e0f2a2069fac0cf6fa2e8d78acd940334ff2f979 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 18 Jun 2025 16:25:02 +0100 Subject: [PATCH 34/87] Update source-insert-functions [netlify-build] --- src/connections/functions/source-insert-functions | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/connections/functions/source-insert-functions b/src/connections/functions/source-insert-functions index 71bd46f043..5ce79df4ac 100644 --- a/src/connections/functions/source-insert-functions +++ b/src/connections/functions/source-insert-functions @@ -1,5 +1,6 @@ --- title: Source Insert Functions + --- > info "Source Insert Function is in Public Beta" @@ -73,18 +74,23 @@ The errors listed are all permanent errors, except `RetryError`. When a `RetryEr ### Source insert functions FAQs **The Delivery Overview tab does not display any errors that occur within the source insert function.** + If errors arise or events are dropped, they will appear as if the events never flowed from the source. **Can I test the function with different event types?** + You can test the function with different event types from the **Test** tab in the code editor, similar to other functions. **Can I use source insert functions for all types of Source?** + Source insert functions only work for event sources, not object sources or rETL. **What is the expected latency for a source insert function?** + Typically, it takes a source insert function between 200 milliseconds to 5 seconds to complete, based on the complexity of the function. The default timeout is 5 seconds but can be increased to 60 seconds. **What is the runtime environment?** + Segment supports Node.js V18. The dependencies listed [here](https://segment.com/docs/connections/functions/insert-functions/#runtime-and-dependencies){:target=”_blank”} are installed in the function. The following dependencies are also installed: - `@azure/identity` exposed as `azure.identity` - `@azure/event-hubs` exposed as `azure.eventHubs` From 44c6a6f8bc220b36cd8c797550f351b87ea2e69a Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 18 Jun 2025 16:35:32 +0100 Subject: [PATCH 35/87] Rename source-insert-functions to source-insert-functions.md --- .../{source-insert-functions => source-insert-functions.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/connections/functions/{source-insert-functions => source-insert-functions.md} (100%) diff --git a/src/connections/functions/source-insert-functions b/src/connections/functions/source-insert-functions.md similarity index 100% rename from src/connections/functions/source-insert-functions rename to src/connections/functions/source-insert-functions.md From ea6525899f521f201c47531accb2e40f01489d9f Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 18 Jun 2025 16:36:21 +0100 Subject: [PATCH 36/87] Update source-insert-functions.md [netlify-build] solving why build didn't work --- src/connections/functions/source-insert-functions.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index 5ce79df4ac..3a82fbac69 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -1,6 +1,5 @@ --- title: Source Insert Functions - --- > info "Source Insert Function is in Public Beta" From 92b80f0fe5e9582f644bc6665b51365f5a877d08 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Wed, 18 Jun 2025 16:49:20 +0100 Subject: [PATCH 37/87] formatting --- src/connections/functions/source-insert-functions.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index 3a82fbac69..4639cd59a5 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -72,23 +72,23 @@ The errors listed are all permanent errors, except `RetryError`. When a `RetryEr ### Source insert functions FAQs -**The Delivery Overview tab does not display any errors that occur within the source insert function.** +##### The Delivery Overview tab does not display any errors that occur within the source insert function. If errors arise or events are dropped, they will appear as if the events never flowed from the source. -**Can I test the function with different event types?** +##### Can I test the function with different event types? You can test the function with different event types from the **Test** tab in the code editor, similar to other functions. -**Can I use source insert functions for all types of Source?** +##### Can I use source insert functions for all types of Source? Source insert functions only work for event sources, not object sources or rETL. -**What is the expected latency for a source insert function?** +##### What is the expected latency for a source insert function? Typically, it takes a source insert function between 200 milliseconds to 5 seconds to complete, based on the complexity of the function. The default timeout is 5 seconds but can be increased to 60 seconds. -**What is the runtime environment?** +##### What is the runtime environment? Segment supports Node.js V18. The dependencies listed [here](https://segment.com/docs/connections/functions/insert-functions/#runtime-and-dependencies){:target=”_blank”} are installed in the function. The following dependencies are also installed: - `@azure/identity` exposed as `azure.identity` From e6c0564c9eab820204ded39ed31bc5af44156d22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Hern=C3=A1ndez?= Date: Wed, 18 Jun 2025 18:10:04 -0400 Subject: [PATCH 38/87] Add Eagle Eye (Actions) destination docs --- .../catalog/eagleeye-actions/index.md | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/connections/destinations/catalog/eagleeye-actions/index.md diff --git a/src/connections/destinations/catalog/eagleeye-actions/index.md b/src/connections/destinations/catalog/eagleeye-actions/index.md new file mode 100644 index 0000000000..a8172eda7d --- /dev/null +++ b/src/connections/destinations/catalog/eagleeye-actions/index.md @@ -0,0 +1,34 @@ +--- +title: Eagle Eye (Actions) Destination +--- + +{% include content/plan-grid.md name="actions" %} + +[Eagle Eye](https://eagleeye.com/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank”} delivers real-time loyalty and promotions solutions for enterprise brands, enabling seamless integration with leading customer data platforms and marketing activation tools. Their platform connects digital and in-store experiences, accelerating personalization and campaign delivery through extensible APIs and pre-built connectors. + +This destination is maintained by Eagle Eye. For any issues with the destination, [contact their Support team](mailto:platform-integrations@eagleeye.com). + +## Getting started + +1. From your workspace's [Destination catalog page](https://app.segment.com/goto-my-workspace/destinations/catalog){:target="_blank”} search for "Eagle Eye". +2. Select "Eagle Eye (Actions)" and click **Add Destination**. +3. Select an existing Source to connect to Eagle Eye (Actions). +4. Set up your EE Connector for Segment by following the [CDP and MAP Connectors](https://developer.eagleeye.com/eagleeye-developer/docs/eagle-eye-connect-cdp-map) guide, along with the [Segment](https://developer.eagleeye.com/docs/segment) specific page for information that needs to be provided. +5. Enter the **Connector URL** and **Connector External Key** from the previous step in the "Eagle Eye (Actions)" destination settings in Segment. + +{% include components/actions-fields.html %} + +### Define mappings to trigger Behavioral Actions + +> This guide makes the assumption you're taking advantage of the Eagle Eye Connector for Segment as well to send events into Segment. Still, any event is valid as long as it contains properties to be used "User identity value" and (optionally, when needed) "Wallet transaction reference". + +> To set this up you must first [Set up Social Behavioral Action Triggers](https://developer.eagleeye.com/eagleeye-developer/docs/segment#set-up-social-behavioural-action-triggers) within the Eagle Eye AIR dashboard. You can find this under **Triggers** > **Search** / **Create Behavioral Action**. + +1. Within your new Eagle Eye (Actions) destination, head to the Mappings tab and click **New Mapping**. +2. From the action list, select **Trigger Behavioral Action**. +3. Define your event trigger conditions. E.g.: if a behavioral action should only trigger for customers who just joined the program, you could set "Event Type is Track" and "Event Name is EE Loyalty Program Joined" (or any other event that contains the information you need). +4. Under **Map fields**, ensure at least "User identity value" and "Behavioral Action trigger reference" are set. The trigger reference will be the same you set within the Eagle Eye AIR dashboard when creating your Behavioral Action. +5. (Optional) If your Behavioral Action requires a "Wallet transaction reference", populate it from one of the event fields as well. E.g.: an event property that may contain the transaction reference, such as `properties.order_id`. +6. Click on **Next**, type a name for your new mapping and hit **Save** or **Save and enable**. + +For more information on events sent through the Eagle Eye Connector for Segment and their properties, refer to the [Data Model](https://developer.eagleeye.com/eagleeye-developer/docs/segment#data-model) documentation. \ No newline at end of file From 9c68ba16f5713c7dee3ed25bd1e3960ac2947b81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Hern=C3=A1ndez?= Date: Thu, 19 Jun 2025 16:44:09 -0400 Subject: [PATCH 39/87] Update contact email --- src/connections/destinations/catalog/eagleeye-actions/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/eagleeye-actions/index.md b/src/connections/destinations/catalog/eagleeye-actions/index.md index a8172eda7d..b2deee9e5a 100644 --- a/src/connections/destinations/catalog/eagleeye-actions/index.md +++ b/src/connections/destinations/catalog/eagleeye-actions/index.md @@ -6,7 +6,7 @@ title: Eagle Eye (Actions) Destination [Eagle Eye](https://eagleeye.com/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank”} delivers real-time loyalty and promotions solutions for enterprise brands, enabling seamless integration with leading customer data platforms and marketing activation tools. Their platform connects digital and in-store experiences, accelerating personalization and campaign delivery through extensible APIs and pre-built connectors. -This destination is maintained by Eagle Eye. For any issues with the destination, [contact their Support team](mailto:platform-integrations@eagleeye.com). +This destination is maintained by Eagle Eye. For any issues with the destination, [contact their Support team](mailto:support@eagleeye.com). ## Getting started From 90eb4b8e025922117865079e171d30bf4f8fc10f Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 19 Jun 2025 22:37:55 +0100 Subject: [PATCH 40/87] Update src/connections/functions/source-insert-functions.md Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- src/connections/functions/source-insert-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index 4639cd59a5..a32b6d92ac 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -23,7 +23,7 @@ To create a source insert function from Segment’s catalog: 4. Click **Next: Configure & Create** to add a function name, description (optional), and function logo (optional). -5. Click **Create Function** to save your insert function. The new source insert function will be displayed in the Functions tab. +5. Click **Create Function** to save your insert function. The new source insert function displays in the Functions tab. #### Coding the source insert function From d10eb7e15b68959605faa6486e029a7140f57e18 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 19 Jun 2025 22:38:03 +0100 Subject: [PATCH 41/87] Update src/connections/functions/source-insert-functions.md Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- src/connections/functions/source-insert-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index a32b6d92ac..0ca7c543d9 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -36,7 +36,7 @@ Insert functions can define handlers for the following message types: - `onAlias` - `onDelete` -The default source code template includes handlers for all event types. Just implement the types you need and skip the ones you don’t. For event types you want to send through, return the event in the respective event handler. +The default source code template includes handlers for all event types. Implement the types you need. For event types you want to send through, return the event in the respective event handler. ### Using the Sources tab From 3e252044dd9cd7269290bb9341c92a1e4ff521de Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 19 Jun 2025 22:40:12 +0100 Subject: [PATCH 42/87] Update src/connections/functions/source-insert-functions.md Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- src/connections/functions/source-insert-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index 0ca7c543d9..300b07790f 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -86,7 +86,7 @@ Source insert functions only work for event sources, not object sources or rETL. ##### What is the expected latency for a source insert function? -Typically, it takes a source insert function between 200 milliseconds to 5 seconds to complete, based on the complexity of the function. The default timeout is 5 seconds but can be increased to 60 seconds. +The source insert function typically completes in 200 milliseconds to 5 seconds, depending on its complexity. The default timeout is 5 seconds but can be increased to 60 seconds. ##### What is the runtime environment? From 629b0ee1c2136b1e8f373f09486f905424ef2b08 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 19 Jun 2025 22:40:34 +0100 Subject: [PATCH 43/87] Update src/connections/functions/source-insert-functions.md Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- src/connections/functions/source-insert-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index 300b07790f..3a1f2e0fc4 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -90,7 +90,7 @@ The source insert function typically completes in 200 milliseconds to 5 seconds, ##### What is the runtime environment? -Segment supports Node.js V18. The dependencies listed [here](https://segment.com/docs/connections/functions/insert-functions/#runtime-and-dependencies){:target=”_blank”} are installed in the function. The following dependencies are also installed: +Segment supports Node.js V18 and installs the dependencies listed [here](https://segment.com/docs/connections/functions/insert-functions/#runtime-and-dependencies){:target=”_blank”} in the function. Segment also installs the following dependencies: - `@azure/identity` exposed as `azure.identity` - `@azure/event-hubs` exposed as `azure.eventHubs` - `@azure/synapse` exposed as `azure.synapse` From 4b86de0a2dd68bd502d500987208fac7a93a3cd2 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 19 Jun 2025 22:40:44 +0100 Subject: [PATCH 44/87] Update src/connections/functions/source-insert-functions.md Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- src/connections/functions/source-insert-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index 3a1f2e0fc4..02c9e6ffe8 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -80,7 +80,7 @@ If errors arise or events are dropped, they will appear as if the events never f You can test the function with different event types from the **Test** tab in the code editor, similar to other functions. -##### Can I use source insert functions for all types of Source? +##### Can I use source insert functions for all types of sources? Source insert functions only work for event sources, not object sources or rETL. From a39114d9b18d8301704bf6067126cd624e5bbcdf Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 19 Jun 2025 22:53:21 +0100 Subject: [PATCH 45/87] Update src/connections/functions/source-insert-functions.md Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- src/connections/functions/source-insert-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index 02c9e6ffe8..278e32e5f2 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -72,7 +72,7 @@ The errors listed are all permanent errors, except `RetryError`. When a `RetryEr ### Source insert functions FAQs -##### The Delivery Overview tab does not display any errors that occur within the source insert function. +##### Why does the Delivery Overview tab not display any errors that occur within the source insert function? If errors arise or events are dropped, they will appear as if the events never flowed from the source. From 628241a624c6f4cb358587226fb4ce8d0416c91c Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 19 Jun 2025 22:53:28 +0100 Subject: [PATCH 46/87] Update src/connections/functions/source-insert-functions.md Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- src/connections/functions/source-insert-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index 278e32e5f2..0c37f99ea1 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -74,7 +74,7 @@ The errors listed are all permanent errors, except `RetryError`. When a `RetryEr ##### Why does the Delivery Overview tab not display any errors that occur within the source insert function? -If errors arise or events are dropped, they will appear as if the events never flowed from the source. +If errors arise or events are dropped, they appear as if the events never flowed from the source. ##### Can I test the function with different event types? From 35332e075f5ead947a9866df8de3763837c9cbaf Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 19 Jun 2025 22:54:13 +0100 Subject: [PATCH 47/87] Update src/connections/functions/source-insert-functions.md Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- src/connections/functions/source-insert-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index 0c37f99ea1..9ec3953b92 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -70,7 +70,7 @@ This is similar to Source, Destination, and Insert Functions. The errors listed are all permanent errors, except `RetryError`. When a `RetryError` is thrown, Segment will reattempt to run the function a set number of times before permanently erroring out. -### Source insert functions FAQs +### FAQs ##### Why does the Delivery Overview tab not display any errors that occur within the source insert function? From 4a813e20bc9a2d525a3e50035f4f2d9ad154772d Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 20 Jun 2025 11:33:04 +0100 Subject: [PATCH 48/87] Update source-insert-functions to include review fixes.md --- .../functions/source-insert-functions.md | 32 ++++++++----------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index 9ec3953b92..f2726fdc6a 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -2,16 +2,16 @@ title: Source Insert Functions --- -> info "Source Insert Function is in Public Beta" -> Source Insert Function is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. +Use Source Insert Functions to enrich, transform, or filter your data before it flows downstream to destinations. -## Create source insert functions +> info "Source Insert Function is in public beta" +> Source Insert Function is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. There are two ways you can access source insert functions from your Segment workspace: -- From the [Connections catalog](#using-the-catalog). -- From the [Sources tab](#using-the-sources-tab). +- From the Connections catalog. +- From the Sources tab. -### Using the catalog +## Creating a Source Insert Function To create a source insert function from Segment’s catalog: @@ -23,9 +23,11 @@ To create a source insert function from Segment’s catalog: 4. Click **Next: Configure & Create** to add a function name, description (optional), and function logo (optional). -5. Click **Create Function** to save your insert function. The new source insert function displays in the Functions tab. +5. Click **Create Function** to save your insert function. The new source insert function displays in the Functions tab. + +You can also go to **Conections** > **Sources** to create a source insert function. -#### Coding the source insert function +### Coding the source insert function Insert functions can define handlers for the following message types: - `onIdentity` @@ -36,15 +38,7 @@ Insert functions can define handlers for the following message types: - `onAlias` - `onDelete` -The default source code template includes handlers for all event types. Implement the types you need. For event types you want to send through, return the event in the respective event handler. - -### Using the Sources tab - -You can also create a source insert function from Sources. - -1. Navigate to **Connections** > **Sources**. -2. Select your source and go to the **Functions** tab. -3. Click **Create insert function** to create your insert function from scratch. +The default source code template includes handlers for all event types. Implement the types you need. For event types you want to send through, return the event in the respective event handler. ### Connecting a source insert function to a source @@ -68,9 +62,9 @@ You can `throw` the following pre-defined error types to indicate that the funct This is similar to Source, Destination, and Insert Functions. -The errors listed are all permanent errors, except `RetryError`. When a `RetryError` is thrown, Segment will reattempt to run the function a set number of times before permanently erroring out. +The errors listed are all permanent errors, except `RetryError`. When a `RetryError` is thrown, Segment reattempts to run the function a set number of times before permanently erroring out. -### FAQs +## FAQs ##### Why does the Delivery Overview tab not display any errors that occur within the source insert function? From 6676e9f05e007c4e7100b0c037a6b1ed4cd3b7ea Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 20 Jun 2025 11:33:35 +0100 Subject: [PATCH 49/87] Update src/connections/functions/source-insert-functions.md Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- src/connections/functions/source-insert-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index f2726fdc6a..6b4e89a252 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -42,7 +42,7 @@ The default source code template includes handlers for all event types. Implemen ### Connecting a source insert function to a source -For data to flow downstream after transformation, you need to connect your source insert function to a source. To do this, follow the steps below: +For data to flow downstream after transformation, connect your source insert function to a source. To do this: 1. Select the insert function you want to connect to the source. You can edit, delete, and connect the insert function in the side pane. 2. Click *Connect a source**. From d6c6cc3de955abd0fe8182b24840ee7c532ec225 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 20 Jun 2025 11:33:51 +0100 Subject: [PATCH 50/87] Update src/connections/functions/source-insert-functions.md Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- src/connections/functions/source-insert-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index 6b4e89a252..7fe3adafc1 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -44,7 +44,7 @@ The default source code template includes handlers for all event types. Implemen For data to flow downstream after transformation, connect your source insert function to a source. To do this: -1. Select the insert function you want to connect to the source. You can edit, delete, and connect the insert function in the side pane. +1. Select the insert function you want to connect to the source. You can edit, delete, and connect the insert function on the side pane. 2. Click *Connect a source**. 3. Select the source you want to connect from the dropdown and click **Connect to Source** to connect. From 6d86db6c820e4783861c987c8c64aa8dffa837fd Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 20 Jun 2025 11:34:06 +0100 Subject: [PATCH 51/87] Update src/connections/functions/source-insert-functions.md Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- src/connections/functions/source-insert-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index 7fe3adafc1..8e133484ec 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -46,7 +46,7 @@ For data to flow downstream after transformation, connect your source insert fun 1. Select the insert function you want to connect to the source. You can edit, delete, and connect the insert function on the side pane. 2. Click *Connect a source**. -3. Select the source you want to connect from the dropdown and click **Connect to Source** to connect. +3. Select the source you want to connect to and click **Connect to Source**. ### Errors and error handling From f4a974cdced1a3787f13a78788cf468029997f8c Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 20 Jun 2025 12:30:58 +0100 Subject: [PATCH 52/87] Added PM changes + settings + testing section --- .../functions/source-insert-functions.md | 28 ++++++++++++++++--- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index 8e133484ec..fc289bde81 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -25,7 +25,7 @@ To create a source insert function from Segment’s catalog: 5. Click **Create Function** to save your insert function. The new source insert function displays in the Functions tab. -You can also go to **Conections** > **Sources** to create a source insert function. +You can also go to **Conections** > **Sources** to create a source insert function in the Sources tab. ### Coding the source insert function @@ -40,13 +40,33 @@ Insert functions can define handlers for the following message types: The default source code template includes handlers for all event types. Implement the types you need. For event types you want to send through, return the event in the respective event handler. +### Settings + +You can add and edit settings for source insert functions in the code editor. Settings allow you to configure the behavior of your source insert function, which changes how it is displayed to anyone using your function. To set up: + +1. Go to the **Settings** tab in the code editor and click **Add Setting**. +2. Add the details about this setting. +3. Click **Add Setting** to save the configuration. + +As you change values, such as **Label**, **Name**, **Type**, and **Description**, a preview updates showing how your setting will look and work. Once saved, the new setting appears in the **Settings** tab of the function. Here, you can edit or delete the setting. + +### Testing + +You can test your source insert function with sample events or a manual configuration in the code editor. This allows you to test the functions behavior with real incoming data. To do this: + +1. Go to the **Test** tab in the code editor and click **Use Sample Event** or **customize the event yourself** to set up your test data. +2. Click **Run** to execute the test. + +Test results appear under **Output**, showing whether the function ran successfully or failed. + + ### Connecting a source insert function to a source For data to flow downstream after transformation, connect your source insert function to a source. To do this: 1. Select the insert function you want to connect to the source. You can edit, delete, and connect the insert function on the side pane. -2. Click *Connect a source**. -3. Select the source you want to connect to and click **Connect to Source**. +2. Click **Connect a source**. +3. Select the source you want to connect to and click **Connect to Source**. ### Errors and error handling @@ -68,7 +88,7 @@ The errors listed are all permanent errors, except `RetryError`. When a `RetryEr ##### Why does the Delivery Overview tab not display any errors that occur within the source insert function? -If errors arise or events are dropped, they appear as if the events never flowed from the source. +Errors in the Delivery Overview tab are not yet visible and is a work in progress. ##### Can I test the function with different event types? From 010d8c93f51ad3a7c00397928d2e3261c3499fad Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Fri, 20 Jun 2025 14:29:57 +0100 Subject: [PATCH 53/87] Added Source Insert Functions page --- src/_data/sidenav/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/_data/sidenav/main.yml b/src/_data/sidenav/main.yml index 8fcf0bfa3e..dd6d1dae1e 100644 --- a/src/_data/sidenav/main.yml +++ b/src/_data/sidenav/main.yml @@ -223,6 +223,8 @@ sections: title: Functions Overview - path: /connections/functions/source-functions title: Source Functions + - path: /connections/functions/source-insert-functions + title: Source Insert Functions - path: /connections/functions/destination-functions title: Destination Functions - path: /connections/functions/insert-functions From 52bae26c34a910f91586eec20e2c175db60d4609 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Sat, 21 Jun 2025 00:36:31 +0100 Subject: [PATCH 54/87] Update src/connections/functions/source-insert-functions.md Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- src/connections/functions/source-insert-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index fc289bde81..d1d1b84461 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -11,7 +11,7 @@ There are two ways you can access source insert functions from your Segment work - From the Connections catalog. - From the Sources tab. -## Creating a Source Insert Function +## Create a Source Insert Function To create a source insert function from Segment’s catalog: From 3f29890798c65b0d71564c277567fda565578a7a Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Sat, 21 Jun 2025 00:36:39 +0100 Subject: [PATCH 55/87] Update src/connections/functions/source-insert-functions.md Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- src/connections/functions/source-insert-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index d1d1b84461..8e811401a0 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -15,7 +15,7 @@ There are two ways you can access source insert functions from your Segment work To create a source insert function from Segment’s catalog: -1. Navigate to **Connections** > **Catalog** > **Functions** and click **New Function**. +1. Navigate to **Connections > Catalog > Functions** and click **New Function**. 2. In the Select Function Type screen, select **Source Insert** and click **Next: Build Function**. From 426060cd785edc3a2f85bbaf9ac2f08bd1fccefe Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Sat, 21 Jun 2025 00:36:46 +0100 Subject: [PATCH 56/87] Update src/connections/functions/source-insert-functions.md Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- src/connections/functions/source-insert-functions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/functions/source-insert-functions.md b/src/connections/functions/source-insert-functions.md index 8e811401a0..e95a942626 100644 --- a/src/connections/functions/source-insert-functions.md +++ b/src/connections/functions/source-insert-functions.md @@ -60,7 +60,7 @@ You can test your source insert function with sample events or a manual configur Test results appear under **Output**, showing whether the function ran successfully or failed. -### Connecting a source insert function to a source +### Connect a source insert function to a source For data to flow downstream after transformation, connect your source insert function to a source. To do this: From 2b3da558dd581e4f0560b03de4460eb1b8de315e Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Mon, 23 Jun 2025 14:24:52 +0100 Subject: [PATCH 57/87] Rewording + added context on using destination with Eagle Eye Source --- .../catalog/eagleeye-actions/index.md | 32 ++++++++++++------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/connections/destinations/catalog/eagleeye-actions/index.md b/src/connections/destinations/catalog/eagleeye-actions/index.md index b2deee9e5a..f6a1347d34 100644 --- a/src/connections/destinations/catalog/eagleeye-actions/index.md +++ b/src/connections/destinations/catalog/eagleeye-actions/index.md @@ -1,34 +1,44 @@ --- title: Eagle Eye (Actions) Destination +id: 682db61f6c600fdb90251392 --- {% include content/plan-grid.md name="actions" %} -[Eagle Eye](https://eagleeye.com/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank”} delivers real-time loyalty and promotions solutions for enterprise brands, enabling seamless integration with leading customer data platforms and marketing activation tools. Their platform connects digital and in-store experiences, accelerating personalization and campaign delivery through extensible APIs and pre-built connectors. +[Eagle Eye](https://eagleeye.com/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank”} delivers real-time loyalty and promotions solutions for enterprise brands, enabling seamless integration with leading customer data platforms and marketing activation tools. The platform connects digital and in-store experiences, accelerating personalization and campaign delivery through extensible APIs and pre-built connectors. + +This integration requires both an Eagle Eye Source and Destination. The source sends events into Segment, and the destination processes those events to trigger specific behaviorial actions in Eagle Eye. + +> warning "" +> This destination must be used in tandem with a corresponding Eagle Eye Source to trigger behaviorial actions in Eagle Eye. This destination is maintained by Eagle Eye. For any issues with the destination, [contact their Support team](mailto:support@eagleeye.com). ## Getting started +To set up the Eagle Eye (Actions) destination in Segment: + 1. From your workspace's [Destination catalog page](https://app.segment.com/goto-my-workspace/destinations/catalog){:target="_blank”} search for "Eagle Eye". 2. Select "Eagle Eye (Actions)" and click **Add Destination**. 3. Select an existing Source to connect to Eagle Eye (Actions). -4. Set up your EE Connector for Segment by following the [CDP and MAP Connectors](https://developer.eagleeye.com/eagleeye-developer/docs/eagle-eye-connect-cdp-map) guide, along with the [Segment](https://developer.eagleeye.com/docs/segment) specific page for information that needs to be provided. -5. Enter the **Connector URL** and **Connector External Key** from the previous step in the "Eagle Eye (Actions)" destination settings in Segment. +4. Set up your EE Connector for Segment by following the [CDP and MAP Connectors guide](https://developer.eagleeye.com/eagleeye-developer/docs/eagle-eye-connect-cdp-map){:target="_blank”}. You'll also need to refer to the [Segment-specific page](https://developer.eagleeye.com/docs/segment){:target="_blank”} for additional information required during setup. +5. Go to the Eagle Eye (Actions) destination settings in Segment and enter the **Connector URL** and **Connector External Key** obtained in the previous step. {% include components/actions-fields.html %} ### Define mappings to trigger Behavioral Actions -> This guide makes the assumption you're taking advantage of the Eagle Eye Connector for Segment as well to send events into Segment. Still, any event is valid as long as it contains properties to be used "User identity value" and (optionally, when needed) "Wallet transaction reference". +This guide assumes you're using the Eagle Eye Connector for Segment to send events. Any event is considered valid as long as it includes the properties "User identity value" and (optionally) "Wallet transaction reference". + +To set this up, you must first configure [Social Behavioral Action Triggers](https://developer.eagleeye.com/eagleeye-developer/docs/segment#set-up-social-behavioural-action-triggers){:target="_blank”} within the Eagle Eye AIR dashboard. You can find this under **Triggers > Search** / **Create Behavioral Action**. -> To set this up you must first [Set up Social Behavioral Action Triggers](https://developer.eagleeye.com/eagleeye-developer/docs/segment#set-up-social-behavioural-action-triggers) within the Eagle Eye AIR dashboard. You can find this under **Triggers** > **Search** / **Create Behavioral Action**. +To map incoming event data and trigger behavioral actions in the Eagle Eye AIR dashboard, follow these steps: -1. Within your new Eagle Eye (Actions) destination, head to the Mappings tab and click **New Mapping**. +1. In the Eagle Eye (Actions) destination, go to the Mappings tab and click **New Mapping**. 2. From the action list, select **Trigger Behavioral Action**. -3. Define your event trigger conditions. E.g.: if a behavioral action should only trigger for customers who just joined the program, you could set "Event Type is Track" and "Event Name is EE Loyalty Program Joined" (or any other event that contains the information you need). -4. Under **Map fields**, ensure at least "User identity value" and "Behavioral Action trigger reference" are set. The trigger reference will be the same you set within the Eagle Eye AIR dashboard when creating your Behavioral Action. -5. (Optional) If your Behavioral Action requires a "Wallet transaction reference", populate it from one of the event fields as well. E.g.: an event property that may contain the transaction reference, such as `properties.order_id`. -6. Click on **Next**, type a name for your new mapping and hit **Save** or **Save and enable**. +3. Define your event trigger conditions. For example, if you want to trigger an action only for customers who just joined the program, select "Event Type is Track" and "Event Name is EE Loyalty Program Joined" (or any other event that contains the information you need). +4. Under **Map fields**, ensure that at least "User identity value" and "Behavioral Action trigger reference" are mapped. The trigger reference will be the same as the one set within the Eagle Eye AIR dashboard when creating the behavioral action. +5. (Optional) If your behavioral action requires a "Wallet transaction reference", you can pull it from one of the event fields. For example, an event property that may contain the transaction reference, such as `properties.order_id`. +6. Click **Next**, give the mapping a name and hit **Save** or **Save and enable**. -For more information on events sent through the Eagle Eye Connector for Segment and their properties, refer to the [Data Model](https://developer.eagleeye.com/eagleeye-developer/docs/segment#data-model) documentation. \ No newline at end of file +For more information on events sent through the Eagle Eye Connector for Segment and their properties, refer to the [Data Model](https://developer.eagleeye.com/eagleeye-developer/docs/segment#data-model){:target="_blank”} documentation. From 00c7a2f842f56391b34d3b2cc4401e59ff465db9 Mon Sep 17 00:00:00 2001 From: tbols17 <113375224+tbols17@users.noreply.github.com> Date: Mon, 23 Jun 2025 09:47:28 -0700 Subject: [PATCH 58/87] Traits as Features.md Updated wording to talk about ability to factor in traits into the models --- src/unify/Traits/predictions/index.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/unify/Traits/predictions/index.md b/src/unify/Traits/predictions/index.md index f9fc14f291..1df63a3d2a 100644 --- a/src/unify/Traits/predictions/index.md +++ b/src/unify/Traits/predictions/index.md @@ -25,7 +25,7 @@ Follow these steps to build a prediction: - (For custom Predictive Goals) Add a condition(s) and event(s) to predict. - Select the event and (optional) property that you want to use to make a prediction. 5. Select a time period for the prediction. -6. (Optional) In **Include all events**, uncheck any events you don't want Segment to factor into the prediction. +6. (Optional) In **Include all events** and **Include all new traits** uncheck any events or traits you don't want Segment to factor into the prediction. 7. Click **Calculate**. If you're satisfied with the available data, click **Next**. 5. (Optional) Connect a Destination, then click **Next**. 6. Add a name and description for the Trait, then click **Create Trait**. @@ -34,7 +34,7 @@ Keep the following in mind when you build a prediction: - Segment lets you predict the likelihood of a customer performing multiple events. - You can choose a time period of 15, 30, 60, 90, or 120 days. -- You have granular control over the events Segment factors into the predictive model. By default, Segment's model makes predictions on all events sent to Engage. Segment lets you exclude events you don't want included by unselecting **Include all events**, then filtering out any events you want excluded from the model. +- You have granular control over the events Segment factors into the predictive model. By default, Segment's model makes predictions on all events and custom traits sent to Engage. Segment lets you exclude events or traits you don't want included by unselecting **Include all events** or **Include all new traits**. In the next section, you'll learn more about the four available predictions. @@ -95,6 +95,9 @@ This table lists the requirements for a trait to compute successfully: Some customers want to specifically include or exclude events that get fed into the model. For example, if you track different events from an EU storefront compared to a US storefront and you only want to make predictions using data from the US, you could unselect the events from the EU space. This step is optional, Segment only recommends using it if you have a clear reason in mind for removing events from becoming a factor in the model. +#### Selecting traits (optional) +Some customers want to specifically include or exclude certain traits that get fed into the model. Today, we only utilize numerical or boolean custom traits found in your space. You have the ability to exclude specific traits from your model. We will attempt to build a model with the traits you selected, but selecting it in the UI does not guarantee that the trait will be factored in. If you keep **Include all new traits** selected, this make sure any new trait that you start tracking will be factored into the model. If you unselect this option, any new traits that you create will not be factored into the model's calculation. + > info "Predictive Traits and anonymous events" > Predictive Traits are limited to non-anonymous events, which means you'll need to include an additional `external_id` other than `anonymousId` in the targeted events. If want to create Predictive Traits based on anonymous events, reach out to your CSM with your use case for creating an anonymous Predictive Trait and the conditions for trait. From 062de4a26e803a1e084f5ab8ff2c0f25531eccb2 Mon Sep 17 00:00:00 2001 From: Gil Omer Date: Mon, 23 Jun 2025 12:51:20 -0400 Subject: [PATCH 59/87] mark as private beta --- .../reverse-etl/reverse-etl-source-setup-guides/db2-setup.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index 915a9d71bc..e269149de5 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -2,6 +2,9 @@ title: Db2 Reverse ETL Setup --- +> info "Db2 Reverse ETL Private Beta" +> Db2 Reverse ETL 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"}. + Set up Db2 as your Reverse ETL source. At a high level, when you set up Db2 for Reverse ETL, the configured database user must have read permissions on any tables involved in the query and write permissions on a managed schema (`SEGMENT_REVERSE_ETL`) that Segment uses to track sync progress. Segment authenticates with your Db2 instance through a username and password. From 08eb0e892f0d42c4e4fce9e305a2ac6308da30ce Mon Sep 17 00:00:00 2001 From: Gil Omer Date: Mon, 23 Jun 2025 12:58:30 -0400 Subject: [PATCH 60/87] [netlify-build] explain DB2 array and json support --- .../reverse-etl-source-setup-guides/db2-setup.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index e269149de5..4f4791e285 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -70,3 +70,19 @@ To set up Db2 as your Reverse ETL source: 8. If the connection is successful, click **Add source**. After successfully adding your Db2 source, [add a model](/docs/connections/reverse-etl/setup/#step-2-add-a-model) and follow the rest of the steps in the Reverse ETL setup guide. + +> info "Array and JSON Support" +> Db2 does not have native `ARRAY` or `JSON` data types. Segment provides a simple convention-based workaround: +> +> **JSON columns** +> JSON values can be stored as `VARCHAR` or `CLOB`. Segment will detect them as JSON if the column name (or column alias) ends with `_JSON`. +> +> Example: +> `SELECT data AS data_JSON FROM my_table;` +> +> +> **Array columns** +> Arrays can be represented as `VARCHAR` columns with names ending in `_ARRAY`. +> The value should be either: +> - a JSON-encoded array (e.g. `'["a","b","c"]'`), or +> - a comma-separated string (e.g. `'a,b,c'`). From 6af59f88a05e4678f9aef40a53f55c023b705f8b Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Tue, 24 Jun 2025 12:38:04 +0100 Subject: [PATCH 61/87] Removed public beta details --- .../destinations/catalog/actions-webhook-extensible/index.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/index.md b/src/connections/destinations/catalog/actions-webhook-extensible/index.md index 5c3e5484bf..5c7117f213 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/index.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/index.md @@ -1,7 +1,7 @@ --- title: Extensible Webhooks Destination id: 66b1f528d26440823fb27af9 -beta: true +beta: false hidden: true redirect_from: '/connections/destinations/catalog/extensible-webhook/' --- @@ -14,9 +14,6 @@ This destination is not currently available in EU regions. Segment maintains this destination. For any issues, [contact Segment Support](friends@segment.com). -> info "Public beta" -> Extensible Webhooks is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. - ## Overview To set up and use Extensible Webhooks, you'll follow these four main stages: From 325b13cb6db067b8a0d8e91e26fea7e99b265768 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Tue, 24 Jun 2025 14:06:14 +0100 Subject: [PATCH 62/87] Update src/connections/destinations/catalog/actions-webhook-extensible/index.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- .../destinations/catalog/actions-webhook-extensible/index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/index.md b/src/connections/destinations/catalog/actions-webhook-extensible/index.md index 5c7117f213..3df2563d8d 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/index.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/index.md @@ -1,7 +1,6 @@ --- title: Extensible Webhooks Destination id: 66b1f528d26440823fb27af9 -beta: false hidden: true redirect_from: '/connections/destinations/catalog/extensible-webhook/' --- From 68321d6dd40d10694bda24404ae5a008b9910cf9 Mon Sep 17 00:00:00 2001 From: pwseg <86626706+pwseg@users.noreply.github.com> Date: Wed, 25 Jun 2025 00:37:54 -0500 Subject: [PATCH 63/87] slight reframing --- src/unify/Traits/predictions/index.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/unify/Traits/predictions/index.md b/src/unify/Traits/predictions/index.md index 1df63a3d2a..00e4a0e461 100644 --- a/src/unify/Traits/predictions/index.md +++ b/src/unify/Traits/predictions/index.md @@ -96,7 +96,11 @@ This table lists the requirements for a trait to compute successfully: Some customers want to specifically include or exclude events that get fed into the model. For example, if you track different events from an EU storefront compared to a US storefront and you only want to make predictions using data from the US, you could unselect the events from the EU space. This step is optional, Segment only recommends using it if you have a clear reason in mind for removing events from becoming a factor in the model. #### Selecting traits (optional) -Some customers want to specifically include or exclude certain traits that get fed into the model. Today, we only utilize numerical or boolean custom traits found in your space. You have the ability to exclude specific traits from your model. We will attempt to build a model with the traits you selected, but selecting it in the UI does not guarantee that the trait will be factored in. If you keep **Include all new traits** selected, this make sure any new trait that you start tracking will be factored into the model. If you unselect this option, any new traits that you create will not be factored into the model's calculation. +You can choose which traits to include or exclude from your prediction model. Segment supports only numerical and boolean custom traits. + +In the UI, you can deselect traits you don’t want the model to use. Selecting a trait means Segment will attempt to include it in the model, but it may be excluded during training if it doesn’t improve model performance. + +If you keep Include all new traits selected, Segment will automatically consider any new traits you start tracking. If you deselect this option, new traits won’t be included in future model calculations unless you manually add them. > info "Predictive Traits and anonymous events" > Predictive Traits are limited to non-anonymous events, which means you'll need to include an additional `external_id` other than `anonymousId` in the targeted events. If want to create Predictive Traits based on anonymous events, reach out to your CSM with your use case for creating an anonymous Predictive Trait and the conditions for trait. From d8f256b40164c3c2b2365a287ac66f0a5ce3f28c Mon Sep 17 00:00:00 2001 From: pwseg <86626706+pwseg@users.noreply.github.com> Date: Wed, 25 Jun 2025 00:59:38 -0500 Subject: [PATCH 64/87] minor rephrasing [netlify-build] --- .../db2-setup.md | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md index 4f4791e285..f67904d3c7 100644 --- a/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md +++ b/src/connections/reverse-etl/reverse-etl-source-setup-guides/db2-setup.md @@ -71,18 +71,30 @@ To set up Db2 as your Reverse ETL source: After successfully adding your Db2 source, [add a model](/docs/connections/reverse-etl/setup/#step-2-add-a-model) and follow the rest of the steps in the Reverse ETL setup guide. -> info "Array and JSON Support" -> Db2 does not have native `ARRAY` or `JSON` data types. Segment provides a simple convention-based workaround: -> -> **JSON columns** -> JSON values can be stored as `VARCHAR` or `CLOB`. Segment will detect them as JSON if the column name (or column alias) ends with `_JSON`. -> -> Example: -> `SELECT data AS data_JSON FROM my_table;` -> -> -> **Array columns** -> Arrays can be represented as `VARCHAR` columns with names ending in `_ARRAY`. -> The value should be either: -> - a JSON-encoded array (e.g. `'["a","b","c"]'`), or -> - a comma-separated string (e.g. `'a,b,c'`). +## Array and JSON support + +Db2 doesn't have native `ARRAY` or `JSON` data types, but Segment supports a naming-based convention to work around this limitation. + +### JSON columns + +Store JSON values in `VARCHAR` or `CLOB` columns. Segment detects them as JSON if the column name or alias ends with `_JSON`, like in this example: + +```sql +SELECT data AS data_JSON FROM my_table; +``` + +### Array columns + +Use `VARCHAR` columns with names ending in `_ARRAY` to represent arrays. The values can be either: + +- JSON-encoded arrays, like '["red", "green", "blue"]' +- Comma-separated strings, like 'red,green,blue' + +Here’s how you might format array values in a query: + +```sql +SELECT colors AS colors_ARRAY FROM items; +``` + +> info "" +> Segment uses column names to infer data types. For best results, follow the `_JSON` and `_ARRAY` naming conventions exactly. From 5570ce35dd9bfb958f6af09761202781252e43c7 Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 25 Jun 2025 22:33:59 -0500 Subject: [PATCH 65/87] fix broken email --- .../destinations/catalog/podsights/index.md | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/connections/destinations/catalog/podsights/index.md b/src/connections/destinations/catalog/podsights/index.md index edd44cefeb..81e42ee310 100644 --- a/src/connections/destinations/catalog/podsights/index.md +++ b/src/connections/destinations/catalog/podsights/index.md @@ -8,10 +8,7 @@ id: 5d25eddde3ff660001b3adda This destination is maintained by Podsights. For any issues with the destination, [contact the Podsights Support team](mailto:hello@podights.com). -## Getting Started - - - +## Getting started 1. From the Segment web app, click **Catalog**. 2. Search for "Podsights" in the Catalog, select it, and choose which of your sources to connect the destination to. @@ -23,7 +20,7 @@ Once you start sending data to the Podsights' Destination it will take up to 20 ## 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: +If you're not familiar with the Segment Spec, take a look to understand what the [Page method](/docs/connections/spec/page/) does. An example call would look like: ```js analytics.page() @@ -49,14 +46,14 @@ Podsights is an attribution platform, and as such, we need more context about th } ``` -For page events Podsights requires a `context` object that contains a `userAgent` and an `ip` field and a `properties` object that contains a `referrer` and a `url` field. +For page events, Podsights requires a `context` object that contains a `userAgent` and an `ip` field and a `properties` object that contains a `referrer` and a `url` field. As you can see in the page event's raw JSON payload above. -The `context` and `properties` object are required, along with the fields in them. If you're using Segment server-side you must send these attributes. Otherwise Podsights will return a `400 HTTP Error`. +The `context` and `properties` object are required, along with the fields in them. If you're using Segment server-side, you must send these attributes. Otherwise, Podsights will return a `400 HTTP Error`. ## 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: +If you're not familiar with the Segment Spec, take a look to understand what the [Track method](/docs/connections/spec/track/) does. An example call would look like: ```js analytics.track('Order Completed', { @@ -67,7 +64,7 @@ analytics.track('Order Completed', { }); ``` -Track calls will be mapped to Podsights events. Podsights' support the following from the Segment Spec: +Track calls will be mapped to Podsights events. Podsights supports the following from the Segment Spec: * [Signed Up](/docs/connections/spec/b2b-saas/#signed-up) as `lead` @@ -97,7 +94,7 @@ Analytics.js [automatically collects context fields](/docs/connections/spec/comm } ``` -The `context` and `page` object are required, along with the fields in them. If you're using Segment server-side you must send these attributes. Otherwise Podsights will return a `400 HTTP Error`. +The `context` and `page` object are required, along with the fields in them. If you're using Segment server-side, you must send these attributes. Otherwise Podsights will return a `400 HTTP Error`. ## Server -Podsights does not support server-side events out of the box, but you can send server-side events if you follow the requirements of page and track events outlined in the sections for each call. +Podsights doesn't support server-side events out of the box, but you can send server-side events if you follow the requirements of Page and Track events outlined in the sections for each call. From 078139e4ecbe2d7fabdfd45f55454aa2b56a6ef7 Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 25 Jun 2025 22:40:36 -0500 Subject: [PATCH 66/87] some cleanup --- .../destinations/catalog/podsights/index.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/connections/destinations/catalog/podsights/index.md b/src/connections/destinations/catalog/podsights/index.md index 81e42ee310..d9ae3b2115 100644 --- a/src/connections/destinations/catalog/podsights/index.md +++ b/src/connections/destinations/catalog/podsights/index.md @@ -3,18 +3,17 @@ rewrite: true title: Podsights Destination id: 5d25eddde3ff660001b3adda --- -[Podsights](https://podsights.com/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank”} measures the effectiveness of podcast advertising. Through integrations with podcast hosting providers, matches downloads with on-site actions, providing advertisers household-level attribution. +[Podsights](https://podsights.com/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank”} measures the effectiveness of podcast advertising. Through integrations with podcast hosting providers, Podsights matches podcast downloads with on-site actions to provide household-level attribution. -This destination is maintained by Podsights. For any issues with the destination, [contact the Podsights Support team](mailto:hello@podights.com). +This destination is maintained by Podsights. For any issues with the destination, [contact the Podsights Support team](https://adshelp.spotify.com/HelpCenter/s/contactsupport?language=en_US){:target="_blank”}. ## Getting started 1. From the Segment web app, click **Catalog**. -2. Search for "Podsights" in the Catalog, select it, and choose which of your sources to connect the destination to. -3. Visit your [Podsights dashboard](https://analytics.podsights.com){:target="_blank"} and navigate to Manage > Pixels. Copy your Pixel ID which will be your Segment "API Key". -4. Drop the Pixel ID in the "API Key" field in your Segment Settings UI. - +2. Search for "Podsights", select it, and choose the source you'd like to connect. +3. Visit your [Podsights dashboard](https://analytics.podsights.com){:target="_blank"}, go to **Manage > Pixels**, then copy your Pixel ID. This is your Segment API Key. +4. Paste the Pixel ID into the **API Key** field in your Segment destination settings. Once you start sending data to the Podsights' Destination it will take up to 20 minutes to appear in the Podsights pixel debugger. @@ -26,7 +25,7 @@ If you're not familiar with the Segment Spec, take a look to understand what the analytics.page() ``` -Page calls will be sent to Podsights as a `view` event. +Segment sends Page events to Podsights as `view` events. Podsights is an attribution platform, and as such, we need more context about the visitor than just a User ID. Analytics.js [automatically collects context fields](/docs/connections/spec/common/#context-fields-automatically-collected). Podsights requires certain context fields and properties for page calls. Below is an example of a raw JSON payload that contains the minimum requirements. From 5382f7780d17c2bd169bb589d0a7dc5a8820cbee Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 25 Jun 2025 22:44:31 -0500 Subject: [PATCH 67/87] more cleanup sigh --- .../destinations/catalog/podsights/index.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/connections/destinations/catalog/podsights/index.md b/src/connections/destinations/catalog/podsights/index.md index d9ae3b2115..b462bc93f1 100644 --- a/src/connections/destinations/catalog/podsights/index.md +++ b/src/connections/destinations/catalog/podsights/index.md @@ -27,7 +27,9 @@ analytics.page() Segment sends Page events to Podsights as `view` events. -Podsights is an attribution platform, and as such, we need more context about the visitor than just a User ID. Analytics.js [automatically collects context fields](/docs/connections/spec/common/#context-fields-automatically-collected). Podsights requires certain context fields and properties for page calls. Below is an example of a raw JSON payload that contains the minimum requirements. +Podsights needs additional context for attribution, including certain fields inside the `context` and `properties` objects. Analytics.js [automatically collects these fields](/docs/connections/spec/common/#context-fields-automatically-collected), but you must provide them manually when sending events server-side. + +Here’s the minimum required structure for a Page call: ```js { @@ -46,9 +48,9 @@ Podsights is an attribution platform, and as such, we need more context about th ``` For page events, Podsights requires a `context` object that contains a `userAgent` and an `ip` field and a `properties` object that contains a `referrer` and a `url` field. -As you can see in the page event's raw JSON payload above. +As you can see in the page event's raw JSON payload. -The `context` and `properties` object are required, along with the fields in them. If you're using Segment server-side, you must send these attributes. Otherwise, Podsights will return a `400 HTTP Error`. +If any of these required fields are missing (especially if you're sending events server-side), Podsights may return a `400` HTTP error. ## Track @@ -65,15 +67,18 @@ analytics.track('Order Completed', { Track calls will be mapped to Podsights events. Podsights supports the following from the Segment Spec: - * [Signed Up](/docs/connections/spec/b2b-saas/#signed-up) as `lead` * [Product Viewed](/docs/connections/spec/ecommerce/v2/#product-viewed) as `product` * [Product Added](/docs/connections/spec/ecommerce/v2/#product-added) as `addtocart` * [Checkout Started](/docs/connections/spec/ecommerce/v2/#checkout-started) as `checkout` * [Order Completed](/docs/connections/spec/ecommerce/v2/#order-completed) as `purchase` -For track events Podsights requires a `context` object that contains a `userAgent` and an `ip` Podsights also requires a `page` object that contains a `referrer` and a `url` field. -Analytics.js [automatically collects context fields](/docs/connections/spec/common/#context-fields-automatically-collected). Podsights requires certain context fields for track calls. Below is an example of a raw JSON payload that contains the minimum requirements. +Track calls must include: + +- a `context` object with `userAgent` and `ip` +- a `context.page` object with `referrer` and `url` + +These fields are required whether they're sent through Analytics.js or server-side. Here’s a minimum working example: ```js { From a46edd88df9faf63da60ed07f8bf229250f3631a Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 25 Jun 2025 22:44:51 -0500 Subject: [PATCH 68/87] JSON not JS --- src/connections/destinations/catalog/podsights/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/connections/destinations/catalog/podsights/index.md b/src/connections/destinations/catalog/podsights/index.md index b462bc93f1..075797350e 100644 --- a/src/connections/destinations/catalog/podsights/index.md +++ b/src/connections/destinations/catalog/podsights/index.md @@ -31,7 +31,7 @@ Podsights needs additional context for attribution, including certain fields ins Here’s the minimum required structure for a Page call: -```js +```json { "type": "page", "context": { @@ -80,7 +80,7 @@ Track calls must include: These fields are required whether they're sent through Analytics.js or server-side. Here’s a minimum working example: -```js +```json { "type": "track", "context": { From 6a253651a6dbff88d7a389ee61c327d5307233ff Mon Sep 17 00:00:00 2001 From: pwseg Date: Wed, 25 Jun 2025 22:51:16 -0500 Subject: [PATCH 69/87] whitespace --- .../destinations/catalog/podsights/index.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/connections/destinations/catalog/podsights/index.md b/src/connections/destinations/catalog/podsights/index.md index 075797350e..767cae93d3 100644 --- a/src/connections/destinations/catalog/podsights/index.md +++ b/src/connections/destinations/catalog/podsights/index.md @@ -5,7 +5,7 @@ id: 5d25eddde3ff660001b3adda --- [Podsights](https://podsights.com/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank”} measures the effectiveness of podcast advertising. Through integrations with podcast hosting providers, Podsights matches podcast downloads with on-site actions to provide household-level attribution. -This destination is maintained by Podsights. For any issues with the destination, [contact the Podsights Support team](https://adshelp.spotify.com/HelpCenter/s/contactsupport?language=en_US){:target="_blank”}. +This destination is maintained by Podsights. For any issues with the destination, [contact the Podsights/Spotify support team](https://adshelp.spotify.com/HelpCenter/s/contactsupport?language=en_US){:target="_blank”}. ## Getting started @@ -27,7 +27,7 @@ analytics.page() Segment sends Page events to Podsights as `view` events. -Podsights needs additional context for attribution, including certain fields inside the `context` and `properties` objects. Analytics.js [automatically collects these fields](/docs/connections/spec/common/#context-fields-automatically-collected), but you must provide them manually when sending events server-side. +Podsights needs additional context for attribution, including certain fields inside the `context` and `properties` objects. Analytics.js [automatically collects these fields](/docs/connections/spec/common/#context-fields-automatically-collected), but you must provide them manually when sending events server-side. Here’s the minimum required structure for a Page call: @@ -50,7 +50,7 @@ Here’s the minimum required structure for a Page call: For page events, Podsights requires a `context` object that contains a `userAgent` and an `ip` field and a `properties` object that contains a `referrer` and a `url` field. As you can see in the page event's raw JSON payload. -If any of these required fields are missing (especially if you're sending events server-side), Podsights may return a `400` HTTP error. +If any of these required fields are missing (especially if you're sending events server-side), Podsights will return a `400` HTTP error. ## Track @@ -98,7 +98,7 @@ These fields are required whether they're sent through Analytics.js or server-si } ``` -The `context` and `page` object are required, along with the fields in them. If you're using Segment server-side, you must send these attributes. Otherwise Podsights will return a `400 HTTP Error`. +If you're using Segment server-side, you must send these attributes. Otherwise, Podsights will return a `400` HTTP error. ## Server -Podsights doesn't support server-side events out of the box, but you can send server-side events if you follow the requirements of Page and Track events outlined in the sections for each call. +Podsights doesn’t support server-side events by default. However, you can send server-side events as long as you include all the required context and page fields described in the Page and Track sections on this page. \ No newline at end of file From f085b97c29fd6e0f88d4339adf74283727259aeb Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 26 Jun 2025 14:39:15 +0100 Subject: [PATCH 70/87] comma added Co-authored-by: pwseg <86626706+pwseg@users.noreply.github.com> --- .../actions-webhook-extensible/amazon-ads-integration-recipe.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md index 6e9a923e6f..991f6fca51 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md @@ -20,7 +20,7 @@ To integrate Amazon Ads with Segment, ensure you have the following: To set up your destination in Segment: -1. In your Segment workspace go to **Catalog** > **Destinations**. +1. In your Segment workspace, go to **Catalog** > **Destinations**. 2. Search for Extensible Webhook and select **Add destination**. ### 2. Select the data source From 9d9a931346dc21a0adbb5603a1f66c4d83195318 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 26 Jun 2025 14:40:56 +0100 Subject: [PATCH 71/87] e.g. removed Co-authored-by: pwseg <86626706+pwseg@users.noreply.github.com> --- .../actions-webhook-extensible/amazon-ads-integration-recipe.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md index 991f6fca51..a942bf8b2d 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md @@ -30,7 +30,7 @@ To set up your destination in Segment: ### 3. Specify the instance details -1. Enter a recognizable name for your webhook instance (e.g., "Segment to Amazon Integration"). +1. Enter a recognizable name for your webhook instance (like "Segment to Amazon Integration"). 2. (Optional) Add a brief description of the integration. ### 4. Select the authentication type From 7e79230c19b944556a3d7144eb98c3a9c76fa313 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 26 Jun 2025 14:41:23 +0100 Subject: [PATCH 72/87] casing Co-authored-by: pwseg <86626706+pwseg@users.noreply.github.com> --- .../actions-webhook-extensible/amazon-ads-integration-recipe.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md index a942bf8b2d..c7579f1fd4 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md @@ -115,7 +115,7 @@ The Amazon Ads Audience API's expected fields are: - `action`: Can be “CREATE” or “DELETE” based on whether you want to add or remove the user from the list. - `audienceID` is the ID of the Audience list to which the data should be either added or deleted. You can get the audienceID from within the Amazon Ads console or when creating an Audience from the API. -#### Data Mapping +#### Data mapping 1. Create a new Mapping in the Mappings tab and select the **Send** HTTP action. 2. Choose which events you want to send to Amazon Ads Audience API using the Event filters. From 4e7ed6712cddbc5d0036d597aba52cda5824495b Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 26 Jun 2025 14:46:31 +0100 Subject: [PATCH 73/87] Update src/connections/destinations/catalog/actions-webhook-extensible/microsoft-integration-recipe.md Co-authored-by: pwseg <86626706+pwseg@users.noreply.github.com> --- .../actions-webhook-extensible/microsoft-integration-recipe.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/microsoft-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/microsoft-integration-recipe.md index b04ee6b7aa..77631ec004 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/microsoft-integration-recipe.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/microsoft-integration-recipe.md @@ -33,7 +33,7 @@ To integrate Microsoft Dynamics 365 with Twilio Segment, ensure you have the fol ### 4. Select the authentication type -For authentication, you need to first create an Azure application that can authenticate users to provide access to Microsoft Dynamics API. See [Microsoft documentation](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app?tabs=client-secret){:target="_blank"} for details on how to create an application and how to get the client secret that will later be used for authentication. +For authentication, you need to first create an Azure application that can authenticate users to provide access to Microsoft Dynamics API. See [Microsoft's documentation](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app?tabs=client-secret){:target="_blank"} for details on how to create an application and how to get the client secret that will later be used for authentication. The redirect URI for your application is https://app.segment.com/oauth-service/webhook/callback. From 6801592ec17f73eecfac81e717ac56f33b155807 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 26 Jun 2025 15:06:32 +0100 Subject: [PATCH 74/87] capitalising API methods Co-authored-by: pwseg <86626706+pwseg@users.noreply.github.com> --- .../reddit-ads-audience-integration-recipe.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md index 98e4b6435b..5f1be004c1 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md @@ -93,7 +93,7 @@ The required parameters are: #### Data mapping -In this recipe, as an example, users are added to the existing audience but you can use one or multiple mappings to perform any `Put`, `Patch` or `Post` action types. +In this recipe, as an example, users are added to the existing audience but you can use one or multiple mappings to perform any `PUT`, `PATCH` or `POST` action types. 1. Create a new mapping from the **Mappings** tab, click on **Add Mapping** and select the “Send” HTTP action. 2. Select events to send. Define the event triggers to send to Reddit Ads (Audiences) using the event filters. From bee7ddc6b098ede19a1b34275ed2c4e7e1a6c9fa Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 26 Jun 2025 15:10:40 +0100 Subject: [PATCH 75/87] Backticked URLs, added missing links, fixed link description + fixed casing --- .../amazon-ads-integration-recipe.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md index c7579f1fd4..b19fa13f2c 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md @@ -3,7 +3,7 @@ title: Amazon Ads Audience Sync Integration Recipe --- -This recipe will guide you through how to set up a custom destination for Amazon Ads using Twilio Segment's Extensible Webhooks feature and how to sync customer data into an Audience list. By following these steps, you can integrate your data source with Amazon Ads. +This recipe will guide you through how to set up a custom destination for [Amazon Ads](https://advertising.amazon.com/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank”} using Twilio Segment's [Extensible Webhooks](https://segment.com/docs/connections/destinations/catalog/actions-webhook-extensible/){:target="_blank"} feature and how to sync customer data into an Audience list. By following these steps, you can integrate your data source with Amazon Ads. ## Prerequisites @@ -50,12 +50,12 @@ To set up authentication: 2. Enter the following credential details as listed below or given in the web app: - Client ID - Client secret - - Authorize URL: https://www.amazon.com/ap/oa - - Token URL: https://api.amazon.com/auth/o2/token - - Refresh URL: https://api.amazon.com/auth/o2/token + - Authorize URL: `https://www.amazon.com/ap/oa` + - Token URL: `https://api.amazon.com/auth/o2/token` + - Refresh URL: `https://api.amazon.com/auth/o2/token` - Scope: `advertising::audiences` - The authorization URL can be found [here](https://advertising.amazon.com/API/docs/en-us/guides/get-started/create-authorization-grant#determine-the-url-prefix-for-your-region){:target="_blank"} and the access/refresh token URL can be found [here](https://advertising.amazon.com/API/docs/en-us/guides/get-started/retrieve-access-token#call-the-authorization-url-to-request-access-and-refresh-tokens){:target="_blank"}, depending on your region. + The authorization URL is available in [Amazon's authorization guide](https://advertising.amazon.com/API/docs/en-us/guides/get-started/create-authorization-grant#determine-the-url-prefix-for-your-region){:target="_blank"}, and the access/refresh token URL can also be found in [Amazon's guide on access tokens](https://advertising.amazon.com/API/docs/en-us/guides/get-started/retrieve-access-token#call-the-authorization-url-to-request-access-and-refresh-tokens){:target="_blank"}, depending on your region. 3. Once you create the destination instance, you will then be redirected to the Settings section. Click **Connect** to set up the OAuth connection with Amazon Ads. 4. You will be redirected to Amazon Ads. Log in and click **Allow** to complete the authentication flow. @@ -111,7 +111,7 @@ The Amazon Ads Audience API's expected fields are: - `state` - `postal` - `email` - - `externalUserId`: The id used by external systems to identify customers. + - `externalUserId`: The ID used by external systems to identify customers. - `action`: Can be “CREATE” or “DELETE” based on whether you want to add or remove the user from the list. - `audienceID` is the ID of the Audience list to which the data should be either added or deleted. You can get the audienceID from within the Amazon Ads console or when creating an Audience from the API. @@ -122,8 +122,8 @@ The Amazon Ads Audience API's expected fields are: 3. Fill out mapping fields: - Specify the URL: - The API endpoint is based on region. - - Include the suffix with the Audience API Endpoint: /amc/audiences/records - - Specify the headers: + - Include the suffix with the Audience API Endpoint: `/amc/audiences/records` + - Specify the header: - `Amazon-Advertising-API-ClientId`: The Client ID from Login with Amazon Account. 4. 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. 5. Turn off batching for this operation. @@ -136,8 +136,8 @@ The Amazon Ads Audience API's expected fields are: #### Troubleshooting If the test fails: -- review the authentication details and data mappings. -- check for error messages in Segment and Amazon Ads. +- Review the authentication details and data mappings. +- Check for error messages in Segment and Amazon Ads. ### 7. Save and enable the destination From 8e50a769d718a11ebeb3d31a27f87d4d0efbea21 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 26 Jun 2025 15:17:08 +0100 Subject: [PATCH 76/87] Fixed casing, backticks around URLs and added links to Search Ads and E Webhooks --- .../google-search-ads-integration-recipe.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/google-search-ads-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/google-search-ads-integration-recipe.md index e6872cd7a4..4ec0678a9f 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/google-search-ads-integration-recipe.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/google-search-ads-integration-recipe.md @@ -2,7 +2,7 @@ title: Google Search Ads 360 Conversion API Integration Recipe --- -This recipe will guide you through how to set up a custom destination for Google Search Ads 360 conversions using Twilio Segment’s Extensible Webhooks feature. +This recipe will guide you through how to set up a custom destination for [Google Search Ads 360](https://marketingplatform.google.com/intl/en_uk/about/search-ads-360/){:target="_blank"} conversions using Twilio Segment’s [Extensible Webhooks](https://segment.com/docs/connections/destinations/catalog/actions-webhook-extensible/){:target="_blank"} feature. ## Prerequisites @@ -35,7 +35,7 @@ To integrate Search Ads 360 with Twilio Segment, ensure you have the following: As a prerequisite to authenticate APIs, you need to create OAuth credentials. Once generated, note down the Client ID and Secret. They are required to set up authentication between Segment and Google Search Ads. -You will also need to add the following redirect URI to the list of allowed return URLs: https://app.segment.com/oauth-service/webhook/callback. +You will also need to add the following redirect URI to the list of allowed return URLs: `https://app.segment.com/oauth-service/webhook/callback`. #### Authentication @@ -43,10 +43,10 @@ You will also need to add the following redirect URI to the list of allowed retu 2. Enter the following credentials details from your project: - Client ID - Client secret - - Authorize URL: https://accounts.google.com/o/oauth2/v2/auth - - Token URL: https://oauth2.googleapis.com/token - - Refresh URL: https://oauth2.googleapis.com/token - - Scope: https://www.googleapis.com/auth/doubleclicksearch + - Authorize URL: `https://accounts.google.com/o/oauth2/v2/auth` + - Token URL: `https://oauth2.googleapis.com/token` + - Refresh URL: `https://oauth2.googleapis.com/token` + - Scope: `https://www.googleapis.com/auth/doubleclicksearch` 3. Once you have created the destination instance, you will be redirected to the Settings section. Click **Connect** to set up the OAuth connection with Google Search Ads 360. 4. Log in to your Google Search Ads account and click **Allow** to complete authentication. @@ -77,11 +77,11 @@ You will need to write an insert function that appends a property, for example o ``` The Google Search Ads 360 Conversion API's required fields are: -- `kind` which is "doubleclicksearch#conversionList". Conversion is an array. For the beta, Segment doesn’t support batching to iterate over this. +- `kind` which is `doubleclicksearch#conversionList`. Conversion is an array. For the beta, Segment doesn’t support batching to iterate over this. - `clickId` which is the ID of a specific click on an ad that the customer clicked on. - `conversionId` is a unique ID that tracks the particular conversion. - `conversionTimestamp` is date and time in epoch milliseconds on when the conversion took place. -- `segmentationType` should be floodlight. +- `segmentationType` should be `FLOODLIGHT`. - `segmentationName` is the floodlight activity to report this conversion to. - `type` which can be `Action` or `Transaction` to indicate whether the conversion had a monetary value or not. @@ -90,7 +90,7 @@ The Google Search Ads 360 Conversion API's required fields are: 1. Create a new Mapping in the Mappings tab and select the **Send** HTTP action. 2. Choose which events you want to send to Google Search Ads 360 API using the Event filters. 3. Fill out mapping fields: - - Specify the URL: https://www.googleapis.com/doubleclicksearch/v2/conversion + - Specify the URL: `https://www.googleapis.com/doubleclicksearch/v2/conversion` 4. 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. 5. Turn off batching for this operation. @@ -102,8 +102,8 @@ The Google Search Ads 360 Conversion API's required fields are: #### Troubleshooting If the test fails: -- review the authentication details and data mappings. -- check for error messages in Segment and Search Ads. +- Review the authentication details and data mappings. +- Check for error messages in Segment and Search Ads. ### 7. Save and enable the destination From 03e61fbda3e1cc88d14bcd36b693653a39ea4d11 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 26 Jun 2025 15:55:28 +0100 Subject: [PATCH 77/87] Added links for Dynamics 365 + Webhooks, added more context on credential details for authorisation + backtick/case fixes --- .../microsoft-integration-recipe.md | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/microsoft-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/microsoft-integration-recipe.md index 77631ec004..6b4faceebb 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/microsoft-integration-recipe.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/microsoft-integration-recipe.md @@ -2,7 +2,7 @@ title: Microsoft Dynamics 365 (Sales Hub) Integration Recipe --- -This recipe will guide you through how to set up a custom destination for Microsoft Dynamics 365 (Sales) using Twilio Segment’s Extensible Webhook feature. +This recipe will guide you through how to set up a custom destination for [Microsoft Dynamics 365 (Sales)](https://www.microsoft.com/en-us/dynamics-365/products/sales){:target="_blank"} using Twilio Segment’s [Extensible Webhooks](https://segment.com/docs/connections/destinations/catalog/actions-webhook-extensible/){:target="_blank"} feature. ## Prerequisites @@ -35,20 +35,21 @@ To integrate Microsoft Dynamics 365 with Twilio Segment, ensure you have the fol For authentication, you need to first create an Azure application that can authenticate users to provide access to Microsoft Dynamics API. See [Microsoft's documentation](https://learn.microsoft.com/en-us/entra/identity-platform/quickstart-register-app?tabs=client-secret){:target="_blank"} for details on how to create an application and how to get the client secret that will later be used for authentication. -The redirect URI for your application is https://app.segment.com/oauth-service/webhook/callback. +The redirect URI for your application is `https://app.segment.com/oauth-service/webhook/callback`. -To connect the Azure app with the Dynamics instance, go to the Power Platform Admin Center. -Here you will need to create new app users associated with a business unit, and provide security roles. +To connect the Azure app with the Dynamics instance, go to the Power Platform Admin Center. Here you will need to create new app users associated with a business unit, and provide security roles. Once you have successfully created an Azure web application and associated it with a Dynamics environment, you can proceed to authentication in Segment. 1. Navigate to the settings page of the webhook destination in Segment. -2. Select OAuth 2.0 and select Authorization Code. +2. Select **OAuth 2.0** and select **Authorization Code**. 3. Enter the following credential details from your web app or as listed below: - Client ID - Client secret - - Access Token URL: https://login.microsoftonline.com//oauth2/v2.0/token - - Scope: https:///.default + - Access Token URL: `https://login.microsoftonline.com//oauth2/v2.0/token`. Replace `` with your Azure AD tenant ID. You can be find this in the Entra admin center. For detailed steps, see [Microsoft's guide](https://learn.microsoft.com/en-us/entra/fundamentals/how-to-find-tenant){:target="_blank"}. + - Example URL with a sample directory UUID: `https://login.microsoftonline.com/861e4762-e528-4faf-ad95-70847a9efbe7/oauth2/v2.0/token` + - Scope: `https:///.default`. Replace `` with the domain of your Dynamics 365 instance. This appears in your web browser's address bar when using your app. + - Example URL for a Dynamics 365 instance: `https://org2fd4b414.crm.dynamics.com/.default`. 4. Click **Connect** to set up the OAuth connection with Microsoft. Authentication will take place if the configurations are correct and the access token will automatically be generated without the need for user login. @@ -91,7 +92,7 @@ To create or update the Account entity only, you can skip this step and directly 1. Create a new Mapping in the Mappings tab and select the **Send** HTTP action. 2. Choose which events you want to send to Google Search Ads 360 API using the Event filters. 3. Fill out mapping fields: - - Specify the URL: [Organization URI]/api/data/v9.2/accounts (this is for creating new accounts) + - Specify the URL: `[Organization URI]/api/data/v9.2/accounts` (this is for creating new accounts) 4. 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. 5. Turn off batching for this operation. @@ -103,11 +104,11 @@ To create or update the Account entity only, you can skip this step and directly #### Troubleshooting If the test fails: -- review the authentication details and data mappings. -- check for error messages in Segment and Search Ads. +- Review the authentication details and data mappings. +- Check for error messages in Segment and Search Ads. ### 7. Save and enable the destination 1. Once the test is successful, click **Save** to store your configuration. 2. Toggle the destination to Enable to start sending live data to Microsoft Dynamics 365. -3. Monitor the data flow to ensure that events are being delivered as expected. \ No newline at end of file +3. Monitor the data flow to ensure that events are being delivered as expected. From 4750deff91f4da28b8ae40388c2c9841b4e24c5c Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 26 Jun 2025 15:57:03 +0100 Subject: [PATCH 78/87] Backtick fix for URI --- .../actions-webhook-extensible/amazon-ads-integration-recipe.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md index b19fa13f2c..0416601a3d 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/amazon-ads-integration-recipe.md @@ -39,7 +39,7 @@ An Amazon Client Application has to be created which requires approval. For step The LwA (Login with Amazon) application that you create should have `advertising::audiences` as the scope. For Campaign management, like marking conversions, the scope should be `advertising::campaign_management`. -Once a LwA app has been created, you will need to add the redirect URI “https://app.segment.com/oauth-service/webhook/callback” to the list of Allowed Return URLs. For more detail on this, see the [Amazon documentation](https://advertising.amazon.com/API/docs/en-us/guides/get-started/create-authorization-grant#allow-a-return-url){:target="_blank"}. +Once a LwA app has been created, you will need to add the redirect URI `https://app.segment.com/oauth-service/webhook/callback` to the list of Allowed Return URLs. For more detail on this, see the [Amazon documentation](https://advertising.amazon.com/API/docs/en-us/guides/get-started/create-authorization-grant#allow-a-return-url){:target="_blank"}. Note down the Client ID and Secret, available in the Login with Amazon section on the [Amazon Developer site](https://developer.amazon.com/){:target="_blank"}. These will be used to set up authentication with Segment. From ba40e239724cd013a6384761f3d3a16636e9ab3b Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 26 Jun 2025 16:09:23 +0100 Subject: [PATCH 79/87] Minor rewording, link added to reddit ads + casing/ backtick fixes --- .../reddit-ads-audience-integration-recipe.md | 51 ++++++++++--------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md index 5f1be004c1..1fc89f1bf3 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md @@ -2,23 +2,23 @@ title: Reddit Ads (Audience) Integration Recipe --- -This recipe will guide you through setting up a custom destination for Reddit Ads (Audiences) using Twilio Segment's Extensible Webhooks feature. By following these steps, you will be able to integrate your data source with Reddit Ads (Audiences). +This recipe will guide you through setting up a custom destination for [Reddit Ads (Audiences)](https://ads.reddit.com/){:target="_blank"} using Twilio Segment's [Extensible Webhooks](https://segment.com/docs/connections/destinations/catalog/actions-webhook-extensible/){:target="_blank"} feature. By following these steps, you will be able to integrate your data source with Reddit Ads (Audiences). ## Prerequisites To integrate Reddit Ads with Segment, ensure you have the following: -A Segment account: an account with the Extensible Webhooks feature enabled (private beta access). -A Reddit Ads (Audiences) account: an active account or API access to Reddit Ads (Audiences). -Authentication credentials: necessary credentials for authentication, for example, API keys and tokens. -Data mapping information: knowledge of the data fields required by Reddit Ads (Audiences). +- A Segment account: an account with the Extensible Webhooks feature enabled (private beta access). +- A Reddit Ads (Audiences) account: an active account or API access to Reddit Ads (Audiences). +- Authentication credentials: necessary credentials for authentication, for example, API keys and tokens. +- Data mapping information: knowledge of the data fields required by Reddit Ads (Audiences). ## Getting started -### 1. Configure Extensible Webhook as a destination +### 1. Configure Extensible Webhooks as a destination 1. In your Segment workspace, navigate to **Connections** > **Catalog** > **Destinations**. -2. Use the search bar to search for **Extensible Webhook** and select **Add destination**. +2. Use the search bar to search for "Extensible Webhooks" and select **Add destination**. ### 2. Select the data source @@ -36,8 +36,8 @@ When creating your app, specify the following details: - Description (optional): Add a brief description of the integration. - Endpoint URL: Provide the webhook URL or endpoint provided by Reddit Ads (Audiences). -> info: Redirect URI -The redirect URI used when creating a Reddit web app is “https://app.segment.com/oauth-service/webhook/callback”. +> info "Redirect URI" +> The redirect URI used when creating a Reddit web app is `https://app.segment.com/oauth-service/webhook/callback`. ### 4. Select the authentication type @@ -47,11 +47,11 @@ To set up OAuth: 1. Go to **Authentication Method** and select **OAuth 2.0**. 2. Enter the following credentials as required: - - Client ID: provided by the Reddit web app - - Secret: provided by the Reddit web app - - Authorize URL: https://www.reddit.com/api/v1/authorize - - Token URL: https://www.reddit.com/api/v1/access_token - - Refresh URL: https://www.reddit.com/api/v1/access_token + - Client ID: This can be found in your the Reddit web app. + - Secret: This can be found in your the Reddit web app. + - Authorize URL: `https://www.reddit.com/api/v1/authorize` + - Token URL: `https://www.reddit.com/api/v1/access_token ` + - Refresh URL: `https://www.reddit.com/api/v1/access_token` - Scope: To update Audiences, you will need to add ‘adsedit’ as a scope. To add multiple scopes, separate the values by commas. You can also find the Authorize URL, Token URL, and Refresh URL in the [Reddit documentation](https://ads-api.reddit.com/docs/v3/operations/Update%20Custom%20Audience%20Users){:target="_blank"}. @@ -63,7 +63,7 @@ You can also find the Authorize URL, Token URL, and Refresh URL in the [Reddit d #### Data transformation -The Reddit Custom Audience API expects data in a nested format. To format the payload correctly, you will have to write an insert function that appends a new property called “body” (for example). +The Reddit Custom Audience API expects data in a nested format. To format the payload correctly, you will have to write an insert function that appends a new property, such as "body". This will have the following structure: @@ -87,29 +87,29 @@ This will have the following structure: The required parameters are: -- `action_type` which can take values “ADD” or “REMOVE” depending on whether a customer has to be added or removed from the list. -- `column_order` which can take two values, “EMAIL_SHA256” and “MAID_SHA256”. The order indicates the column order of the data being synced inside `user_data` -- `user_data` is an array of values which has hashed email id or MAID id or both. For the beta, Segment doesn’t support batching to iterate just over this array yet. +- `action_type` which can take values `ADD` or `REMOVE` depending on whether a customer has to be added or removed from the list. +- `column_order` which can take two values, `EMAIL_SHA256` and `MAID_SHA256`. The order indicates the column order of the data being synced inside `user_data`. +- `user_data` is an array of values which has hashed `email_id` or `MAID_id` or both. While in beta, Segment doesn’t support batching to iterate just over this array yet. #### Data mapping In this recipe, as an example, users are added to the existing audience but you can use one or multiple mappings to perform any `PUT`, `PATCH` or `POST` action types. -1. Create a new mapping from the **Mappings** tab, click on **Add Mapping** and select the “Send” HTTP action. +1. Create a new mapping from the Mappings tab, click on **Add Mapping** and select the **Send** HTTP action. 2. Select events to send. Define the event triggers to send to Reddit Ads (Audiences) using the event filters. 3. Fill out mapping fields: 1. Specify the URL and method. - - For example, using the following URL: https://ads-api.reddit.com/api/v3/custom_audiences/{audience_id}/users - 1. Replace `audience_id` with the actual audience ID you want to edit. You can find the iID below the name of the Audience List to be modified on Audience Manager. - 2. Select `PATCH` as the HTTP method. The API expects a Patch operation on the endpoint. + - For example, using the following URL: `https://ads-api.reddit.com/api/v3/custom_audiences/{audience_id}/users` + 1. Replace `audience_id` with the actual audience ID you want to edit. You can find the ID below the name of the Audience List to be modified on Audience Manager. + 2. Select `PATCH` as the HTTP method. The API expects a `PATCH` operation on the endpoint. 4. 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. 5. Turn off batching for this operation. -Reddit supports three types of actions that can be performed via Extensible Webhook. +Reddit supports three types of actions that can be performed via Extensible Webhooks. - Audiences - Manage Audiences: Create a new audience or manage existing ones. - - Manage Audience Users: PATCH users in existing audiences or create a new audience and add users to it. + - Manage Audience Users: `PATCH` users in existing audiences or create a new audience and add users to it. - Campaigns - Manage Campaigns: Create a new campaign or manage existing ones. @@ -120,7 +120,8 @@ Reddit supports three types of actions that can be performed via Extensible Webh Troubleshooting: -- If the test fails, review the authentication details and data mappings. +If the test fails: +- Review the authentication details and data mappings. - Check for error messages in Segment and Reddit Ads (Audiences). ### 7. Save and enable the destination From 15fde637cd58add3c443992607591f7522510ab3 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 26 Jun 2025 16:17:24 +0100 Subject: [PATCH 80/87] Casing/ backtick fix, added Reddit ads link, minor formatting --- ...t-ads-conversion-api-integration-recipe.md | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) 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 f92a635228..79d35cf3c6 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 @@ -2,7 +2,7 @@ title: Reddit Ads Conversion API Integration Recipe --- -This recipe will guide you through setting up a custom destination for Reddit Ads Conversion API using Segment’s Extensible Webhooks feature. By following these steps, you can integrate your data source with Reddit Ads Conversion API without writing any code. +This recipe will guide you through setting up a custom destination for [Reddit Ads Conversion API](https://ads.reddit.com/){:target="_blank"} using Segment’s [Extensible Webhooks](https://segment.com/docs/connections/destinations/catalog/actions-webhook-extensible/){:target="_blank"} feature. By following these steps, you can integrate your data source with Reddit Ads Conversion API without writing any code. ## Prerequisites @@ -15,10 +15,10 @@ To integrate Reddit Ads Conversion with Segment, ensure you have the following: ## Getting started -### 1. Navigate to the Extensible Webhook destination +### 1. Navigate to the Extensible Webhooks destination 1. In your Segment workspace, go to **Catalog** > **Destinations**. -2. Use the search bar to search for **Extensible Webhook** and select **Add destination**. +2. Use the search bar to search for "Extensible Webhook" and select **Add destination**. ### 2. Select the data source @@ -48,13 +48,13 @@ The conversion access token provides a bearer token that can be added to the hea 2. Select **Conversions API**. 3. Click **Generate Access Token** to generate your token. Copy and make a note of it. -Once you have the conversion token, go back to your destination in your Segment workspace. In **Settings**, go to **Authorization Settings** and select “No Auth” as the authentication method. +Once you have the conversion token, go back to your destination in your Segment workspace. In Settings, go to Authorization Settings and select **No Auth** as the authentication method. ### 5. Perform data mapping #### Data transformation -The Reddit Conversion API expects data in a nested format. To format the payload correctly, you will need to write an insert function that appends a new property, for example `body`. +The Reddit Conversion API expects data in a nested format. To format the payload correctly, you will need to write an insert function that appends a new property, for example "body". This will have the following structure: @@ -126,14 +126,14 @@ It’s also recommended that you include the `email`, `ip_address`, `uuid`, and To map data from your destination to Reddit Ads: -1. Create a new mapping in the **Mappings** tab, select the **Send** action. +1. Create a new mapping in the Mappings tab, select the **Send** action. 2. Define the event trigger by selecting the events you want to send to Reddit Ads Conversion API using the Event name filters. -3. (Optional) Add enrichment entities as necessary. +3. (Optional) Add enrichment entities as needed. 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/{{YOURPICEL_ID}} - 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. + 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. 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. From 1fa73d54794a15940525a96767a6b3d1ab0f34ac Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 26 Jun 2025 16:20:43 +0100 Subject: [PATCH 81/87] minor tweaks --- .../google-search-ads-integration-recipe.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/google-search-ads-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/google-search-ads-integration-recipe.md index 4ec0678a9f..9e599077d4 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/google-search-ads-integration-recipe.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/google-search-ads-integration-recipe.md @@ -18,7 +18,7 @@ To integrate Search Ads 360 with Twilio Segment, ensure you have the following: ### 1. Configure Extensible Webhook as a destination 1. In your Segment workspace, navigate to **Connections** > **Catalog** > **Destinations**. -2. Use the search bar to search for **Extensible Webhook** and select **Add destination**. +2. Use the search bar to search for "Extensible Webhook" and select **Add destination**. ### 2. Select the data source @@ -77,13 +77,13 @@ You will need to write an insert function that appends a property, for example o ``` The Google Search Ads 360 Conversion API's required fields are: -- `kind` which is `doubleclicksearch#conversionList`. Conversion is an array. For the beta, Segment doesn’t support batching to iterate over this. +- `kind` which is `doubleclicksearch#conversionList`. Conversion is an array. While in beta, Segment doesn’t support batching to iterate over this. - `clickId` which is the ID of a specific click on an ad that the customer clicked on. - `conversionId` is a unique ID that tracks the particular conversion. - `conversionTimestamp` is date and time in epoch milliseconds on when the conversion took place. - `segmentationType` should be `FLOODLIGHT`. - `segmentationName` is the floodlight activity to report this conversion to. -- `type` which can be `Action` or `Transaction` to indicate whether the conversion had a monetary value or not. +- `type` which can be `action` or `transaction` to indicate whether the conversion had a monetary value or not. #### Data mapping From 656648ed9fb288e9a146c5f830ea2fc11bcd5c5c Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 26 Jun 2025 16:23:40 +0100 Subject: [PATCH 82/87] Fixed title for 1 --- .../reddit-ads-conversion-api-integration-recipe.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 79d35cf3c6..59fb150aea 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 @@ -15,7 +15,7 @@ To integrate Reddit Ads Conversion with Segment, ensure you have the following: ## Getting started -### 1. Navigate to the Extensible Webhooks destination +### 1. Configure Extensible Webhook as a destination 1. In your Segment workspace, go to **Catalog** > **Destinations**. 2. Use the search bar to search for "Extensible Webhook" and select **Add destination**. @@ -48,7 +48,7 @@ The conversion access token provides a bearer token that can be added to the hea 2. Select **Conversions API**. 3. Click **Generate Access Token** to generate your token. Copy and make a note of it. -Once you have the conversion token, go back to your destination in your Segment workspace. In Settings, go to Authorization Settings and select **No Auth** as the authentication method. +Once you have the conversion token, go back to your destination in your Segment workspace. In Settings, go to **Authorization Settings** and select **No Auth** as the authentication method. ### 5. Perform data mapping From d03868182dea3de129a72c4faa460a38e771184a Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 26 Jun 2025 16:25:19 +0100 Subject: [PATCH 83/87] Casing for PATCH field --- .../reddit-ads-audience-integration-recipe.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md b/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md index 1fc89f1bf3..b49552894b 100644 --- a/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md +++ b/src/connections/destinations/catalog/actions-webhook-extensible/reddit-ads-audience-integration-recipe.md @@ -101,7 +101,7 @@ In this recipe, as an example, users are added to the existing audience but you 1. Specify the URL and method. - For example, using the following URL: `https://ads-api.reddit.com/api/v3/custom_audiences/{audience_id}/users` 1. Replace `audience_id` with the actual audience ID you want to edit. You can find the ID below the name of the Audience List to be modified on Audience Manager. - 2. Select `PATCH` as the HTTP method. The API expects a `PATCH` operation on the endpoint. + 2. Select **`PATCH`** as the HTTP method. The API expects a `PATCH` operation on the endpoint. 4. 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. 5. Turn off batching for this operation. From e531ec8bd5ae735475b733aa6716943ba1ad6876 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 26 Jun 2025 16:54:53 +0100 Subject: [PATCH 84/87] Rewording Co-authored-by: pwseg <86626706+pwseg@users.noreply.github.com> --- src/connections/destinations/catalog/adjust/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/adjust/index.md b/src/connections/destinations/catalog/adjust/index.md index 4a799461bb..68660c6a4e 100644 --- a/src/connections/destinations/catalog/adjust/index.md +++ b/src/connections/destinations/catalog/adjust/index.md @@ -233,7 +233,7 @@ If you're using Adjust's iOS SDK, it will automatically takes care of duplicate ### Sending in-app events from Adjust to Segment -Customers can forward in-app events from Adjust to Segment by following the steps below: +Customers can forward in-app events from Adjust to Segment by following these steps: 1. Navigate to the Segment module within the Adjust dashboard. 2. Go to the **Data sharing** section. From 8848ee6a06361537447ca7d7fd8f8d21d9e6a5d6 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Thu, 26 Jun 2025 13:09:34 -0400 Subject: [PATCH 85/87] catalog --- src/_data/catalog/destination_categories.yml | 2 +- src/_data/catalog/destinations.yml | 417 +++++++++++++------ src/_data/catalog/destinations_private.yml | 2 +- src/_data/catalog/regional-supported.yml | 9 + src/_data/catalog/source_categories.yml | 2 +- src/_data/catalog/sources.yml | 23 +- 6 files changed, 320 insertions(+), 135 deletions(-) diff --git a/src/_data/catalog/destination_categories.yml b/src/_data/catalog/destination_categories.yml index c35eb9430f..b4025887c0 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-06-20 +# destination categories last updated 2025-06-26 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 27a1ad5dac..652be0168a 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-06-24 +# destination data last updated 2025-06-26 items: - id: 637e8d185e2dec264895ea89 display_name: 1Flow @@ -22981,7 +22981,7 @@ items: hidden: false defaultTrigger: type = "identify" fields: - - id: 7D52sshqeGKc93QxdSes6a + - id: 8gX8PuHbeDVGpN8tEE2K8W sortOrder: 0 fieldKey: external_id label: External User ID @@ -22995,7 +22995,7 @@ items: choices: null dynamic: false allowNull: false - - id: GPzn5npufu3XRJAVVZZ3Z + - id: cac3FktXkcLHSBdPunvtLg sortOrder: 1 fieldKey: user_alias label: User Alias Object @@ -23009,7 +23009,7 @@ items: choices: null dynamic: false allowNull: false - - id: 9eVowxaWfmfxZKpfcMatEm + - id: oTcy2j5T7NvQZfcPVbqLiC sortOrder: 2 fieldKey: braze_id label: Braze User Identifier @@ -23023,7 +23023,7 @@ items: choices: null dynamic: false allowNull: true - - id: i1U9z9FVV9e8Zh4FpzpMos + - id: 56b7mVUwQfCcuJ6DDX7orN sortOrder: 3 fieldKey: country label: Country @@ -23037,7 +23037,7 @@ items: choices: null dynamic: false allowNull: true - - id: rAD8wypjQo52HZ9ZP58Zv7 + - id: odgKx8MS4igb2yyJD8DeF7 sortOrder: 4 fieldKey: current_location label: Current Location @@ -23054,7 +23054,7 @@ items: choices: null dynamic: false allowNull: true - - id: vaKjs9L1Z9rVmZCFwJCwHr + - id: 4dUnq4A3xEr4Am6SWqGaNC sortOrder: 5 fieldKey: date_of_first_session label: Date of First Session @@ -23066,7 +23066,7 @@ items: choices: null dynamic: false allowNull: true - - id: 8JgDgtbDmPkjYVqVjFtZCP + - id: 6JdsJ8Kig3r25Tm5CM1yL3 sortOrder: 6 fieldKey: date_of_last_session label: Date of Last Session @@ -23078,7 +23078,7 @@ items: choices: null dynamic: false allowNull: true - - id: uxYJdHzFUsAsPAv3Ju5pGn + - id: 5upMphfPzM59UWHLphRf5z sortOrder: 7 fieldKey: dob label: Date of Birth @@ -23090,7 +23090,7 @@ items: choices: null dynamic: false allowNull: true - - id: eg5PwVgoyxG965XEcBeUG + - id: gzJ966i8keusXz3AeqDwQb sortOrder: 8 fieldKey: email label: Email @@ -23104,7 +23104,7 @@ items: choices: null dynamic: false allowNull: true - - id: eHcbBUYSPQVYv4CSvi2Br7 + - id: aNbJQfG7nKM3nrLxFNG2K7 sortOrder: 9 fieldKey: email_subscribe label: Email Subscribe @@ -23119,7 +23119,7 @@ items: choices: null dynamic: false allowNull: false - - id: 6DKrxS6sQT17xc8PYaGHUV + - id: hz5Z3LVWHc2CedpV51dLbB sortOrder: 10 fieldKey: email_open_tracking_disabled label: Email Open Tracking Disabled @@ -23133,7 +23133,7 @@ items: choices: null dynamic: false allowNull: false - - id: tiSvSqji5eAE5csZYDqyjV + - id: poQtZPxjFEN9HBstJ6Hor5 sortOrder: 11 fieldKey: email_click_tracking_disabled label: Email Click Tracking Disabled @@ -23147,7 +23147,7 @@ items: choices: null dynamic: false allowNull: false - - id: aT2FRqdbQewqq5o8CdAmkf + - id: 7KCnsiws3wz83svzyQfdzG sortOrder: 12 fieldKey: facebook label: Facebook Attribution Data @@ -23161,7 +23161,7 @@ items: choices: null dynamic: false allowNull: false - - id: bKeVycHxVkcmbnkBVdpxRX + - id: tcALMvwJGF7wA2kTt977Ct sortOrder: 13 fieldKey: first_name label: First Name @@ -23175,7 +23175,7 @@ items: choices: null dynamic: false allowNull: true - - id: sz5ZZCiDdcN6DzhoJpqN76 + - id: 8auhrzwNeFoNKS5DYtboqZ sortOrder: 14 fieldKey: gender label: Gender @@ -23191,7 +23191,7 @@ items: choices: null dynamic: false allowNull: true - - id: 6VcU3UcKjnYH6i5FLiwo1J + - id: qHH1WdCGFustdvJr4C9XJx sortOrder: 15 fieldKey: home_city label: Home City @@ -23205,7 +23205,7 @@ items: choices: null dynamic: false allowNull: true - - id: pQyksUAhQTT76Czp4DXMkD + - id: 3wL1YQKTJBfzF8vNRv7bT9 sortOrder: 16 fieldKey: image_url label: Image URL @@ -23219,7 +23219,7 @@ items: choices: null dynamic: false allowNull: true - - id: etwRLzKDuNAQLnELuUn7u5 + - id: k1CCjyoZHDu9ELTpY6eyZr sortOrder: 17 fieldKey: language label: Language @@ -23231,7 +23231,7 @@ items: choices: null dynamic: false allowNull: true - - id: kSWj93FmLNvVGwK2wKtzhX + - id: jGpCPMUjHoZrqNXMqAB37C sortOrder: 18 fieldKey: last_name label: Last Name @@ -23245,7 +23245,7 @@ items: choices: null dynamic: false allowNull: false - - id: ud5V9kEhZivKmTmeEYtUvZ + - id: c6nAJXpq7tKTye1adsoyjn sortOrder: 19 fieldKey: marked_email_as_spam_at label: Marked Email as Spam At @@ -23257,7 +23257,7 @@ items: choices: null dynamic: false allowNull: true - - id: bQpbE4kNNGCEu3ZKcSWD5A + - id: 4VuavCBLrrnWRQywddRFNH sortOrder: 20 fieldKey: phone label: Phone Number @@ -23271,7 +23271,7 @@ items: choices: null dynamic: false allowNull: true - - id: e5JJFegnjEFYASgTCdBvt1 + - id: hxcaTLhkyKQKspdRB4SFT6 sortOrder: 21 fieldKey: push_subscribe label: Push Subscribe @@ -23286,7 +23286,7 @@ items: choices: null dynamic: false allowNull: false - - id: msKU15gTUpCVQohSwt7MgK + - id: xdfVhRPCPYsQcNYo6xaAM6 sortOrder: 22 fieldKey: push_tokens label: Push Tokens @@ -23303,7 +23303,7 @@ items: choices: null dynamic: false allowNull: false - - id: mSpKEX3wXRsygd1N3acZAu + - id: 2cCQ2RzyUVQn1kC7fS9xSb sortOrder: 23 fieldKey: time_zone label: Time zone @@ -23318,7 +23318,7 @@ items: choices: null dynamic: false allowNull: false - - id: j7Z4A4vgBWofeXDje1YuXP + - id: itUirR4aqqMt2pBvWKKZFq sortOrder: 24 fieldKey: twitter label: Twitter Attribution Data @@ -23333,7 +23333,7 @@ items: choices: null dynamic: false allowNull: false - - id: h8PvQzc9xkcPxkNyYp5CaK + - id: aMCLbNeg2te71SuqmfuhE8 sortOrder: 25 fieldKey: custom_attributes label: Custom Attributes @@ -23347,7 +23347,7 @@ items: choices: null dynamic: false allowNull: false - - id: ge6cpuJStAa5k4UsYKMyeM + - id: xbA2nukUTac9WZo8kawVVz sortOrder: 26 fieldKey: _update_existing_only label: Update Existing Only @@ -23362,7 +23362,7 @@ items: choices: null dynamic: false allowNull: false - - id: 3VoCEtSrjf359aU7Zjuwdf + - id: bLteNtLAfrZHYVApQtRZUm sortOrder: 27 fieldKey: enable_batching label: Batch Data to Braze @@ -23385,7 +23385,7 @@ items: hidden: false defaultTrigger: type = "track" and event != "Order Completed" fields: - - id: wQhyD6jhLpnjTeZhAUZKFZ + - id: nKLN6pQVjuKeSKdShPTK7s sortOrder: 0 fieldKey: external_id label: External User ID @@ -23399,7 +23399,7 @@ items: choices: null dynamic: false allowNull: false - - id: mVgitfey16XCavqAmWu4JK + - id: qto5WXER1SE2hXwxMCGA2f sortOrder: 1 fieldKey: user_alias label: User Alias Object @@ -23413,7 +23413,7 @@ items: choices: null dynamic: false allowNull: false - - id: nVyU7TytKE5T9D7uvQWPTD + - id: jD7UGzEsVn3HEu4R6f2C7A sortOrder: 2 fieldKey: email label: Email @@ -23433,7 +23433,7 @@ items: choices: null dynamic: false allowNull: false - - id: 8H3PRc11kp7pEsUGanQDoG + - id: fvug1cyFVoQ9fruvAXgPqb sortOrder: 3 fieldKey: braze_id label: Braze User Identifier @@ -23447,7 +23447,7 @@ items: choices: null dynamic: false allowNull: true - - id: ms8v4dNJ7vaeGWDuBDQmrU + - id: fDvkaQqyWFkLuNqDx26jTJ sortOrder: 4 fieldKey: name label: Event Name @@ -23461,7 +23461,7 @@ items: choices: null dynamic: false allowNull: false - - id: vt9Qhx441WZMz8yyndrxRY + - id: tYNazWYN1iVGJDh3zHPqNb sortOrder: 5 fieldKey: time label: Time @@ -23475,7 +23475,7 @@ items: choices: null dynamic: false allowNull: false - - id: pXKock3fSjHQmHmLJX8rHP + - id: 46oxx1fWVgNDFkkwBkDtbJ sortOrder: 6 fieldKey: properties label: Event Properties @@ -23489,7 +23489,7 @@ items: choices: null dynamic: false allowNull: false - - id: tr9s2UYZqMgginTwBV5yx2 + - id: e46WFudaCJs2VXokqFRa8p sortOrder: 7 fieldKey: _update_existing_only label: Update Existing Only @@ -23504,7 +23504,7 @@ items: choices: null dynamic: false allowNull: false - - id: bDyxikSqXCVdsfMzoSwMFa + - id: 3R86e4WY7N92Fi2DP6PsCF sortOrder: 8 fieldKey: enable_batching label: Batch Data to Braze @@ -23527,7 +23527,7 @@ items: hidden: false defaultTrigger: event = "Order Completed" fields: - - id: nmQjEgM21v1FMyjh6jjTEa + - id: mrrnFhquS33faw2qc9NK9x sortOrder: 0 fieldKey: external_id label: External User ID @@ -23541,7 +23541,7 @@ items: choices: null dynamic: false allowNull: false - - id: iQxTBVaU3v399dESHoFdLD + - id: fq38bLNayyF3WNWB6nLt3H sortOrder: 1 fieldKey: user_alias label: User Alias Object @@ -23555,7 +23555,7 @@ items: choices: null dynamic: false allowNull: false - - id: wAswWmSH4oFxMEyaP1TrWr + - id: 3kJF4tqyGqC4rdPJdbu28B sortOrder: 2 fieldKey: email label: Email @@ -23569,7 +23569,7 @@ items: choices: null dynamic: false allowNull: false - - id: 7GHennZN9fEcno4wvLze9d + - id: uQZotzJYD7A1k9SGq55BfC sortOrder: 3 fieldKey: braze_id label: Braze User Identifier @@ -23583,7 +23583,7 @@ items: choices: null dynamic: false allowNull: true - - id: r1faJnVeKTF1uMSk2ahxp9 + - id: nACMMntuFmvRtaWmJVD7Tn sortOrder: 4 fieldKey: time label: Time @@ -23597,7 +23597,7 @@ items: choices: null dynamic: false allowNull: false - - id: d61Yxn3DrHNqAzECwmcmZ1 + - id: rCV4BpjS4D2jWRfmncoAPH sortOrder: 5 fieldKey: products label: Products @@ -23611,7 +23611,7 @@ items: choices: null dynamic: false allowNull: false - - id: czM5i5jv9qsVHDsChA5a1X + - id: kkWnfKvyAvqNWVKgyRQDbY sortOrder: 6 fieldKey: properties label: Event Properties @@ -23625,7 +23625,7 @@ items: choices: null dynamic: false allowNull: false - - id: fco3iGcJLN5WYiPEZH6XZc + - id: gRXtMbPhYMJwxCDrNae34D sortOrder: 7 fieldKey: _update_existing_only label: Update Existing Only @@ -23640,7 +23640,7 @@ items: choices: null dynamic: false allowNull: false - - id: 37bkHhgRpu2mPq4kxGdZmR + - id: vzp7wCUde51BT74GzjDEir sortOrder: 8 fieldKey: enable_batching label: Batch Data to Braze @@ -23677,7 +23677,7 @@ items: hidden: false defaultTrigger: null fields: - - id: 7wAKnZr6664Bthucnm3ZQj + - id: 8xjP1mApdm1wxCrhviUEwy sortOrder: 0 fieldKey: external_id label: External ID @@ -23689,7 +23689,7 @@ items: choices: null dynamic: false allowNull: false - - id: sk1oszwK89BKqaBqJbkDPr + - id: 5iCuaJ1hGWbXT1QEgM39Kf sortOrder: 1 fieldKey: user_alias label: User Alias Object @@ -23703,7 +23703,7 @@ items: choices: null dynamic: false allowNull: false - - id: ia3PkBWqFYzqQ6Q1PogRvE + - id: 9j9bQ2WDWgFuifRfRyb3XH sortOrder: 2 fieldKey: merge_behavior label: Merge Behavior @@ -23732,7 +23732,7 @@ items: hidden: false defaultTrigger: event = "Create Alias" fields: - - id: jwjWpUqLuXYxLmLyhSij9L + - id: 4UVSEu4QpueE1VuzTLCLi sortOrder: 0 fieldKey: external_id label: External ID @@ -23744,7 +23744,7 @@ items: choices: null dynamic: false allowNull: true - - id: 3J3pcNHjV1ebT4QbBtSFsY + - id: hAFE7SxzkkZ2iPLJEeB9W3 sortOrder: 1 fieldKey: alias_name label: Alias Name @@ -23756,7 +23756,7 @@ items: choices: null dynamic: false allowNull: false - - id: fJSVZKap8ZFaUzax5vFu2R + - id: nbJNe1F5p9pJHC4FTbvyYq sortOrder: 2 fieldKey: alias_label label: Alias Label @@ -23776,7 +23776,7 @@ items: hidden: false defaultTrigger: type = "identify" fields: - - id: 73W4JCdbFGGwWYJFT9ozux + - id: n3EG4xYvjRAtiuALegspWx sortOrder: 0 fieldKey: external_id label: External User ID @@ -23790,7 +23790,7 @@ items: choices: null dynamic: false allowNull: false - - id: hf2PbivozqvbBnYCZF19x9 + - id: fkqaqmwkxiFtnjJjZfRrgi sortOrder: 1 fieldKey: user_alias label: User Alias Object @@ -23804,7 +23804,7 @@ items: choices: null dynamic: false allowNull: false - - id: eGXuT7ifEi6huiMrXA7mtH + - id: kUbEWn784NDtLeQz1qbhBn sortOrder: 2 fieldKey: braze_id label: Braze User Identifier @@ -23818,7 +23818,7 @@ items: choices: null dynamic: false allowNull: true - - id: sJzXQEyZWv2GSiwnqt7YGj + - id: 7aY1YuNVV9SbMKyATMDckg sortOrder: 3 fieldKey: country label: Country @@ -23832,7 +23832,7 @@ items: choices: null dynamic: false allowNull: true - - id: iXeFjzENDPypdVk84RaRfF + - id: 9bSLdCTEE66QrtMoFLBhew sortOrder: 4 fieldKey: current_location label: Current Location @@ -23849,7 +23849,7 @@ items: choices: null dynamic: false allowNull: true - - id: xhvVBjr8FB7sRM5i3LQfys + - id: jf9p8VZgZo9LS1CbmE71B7 sortOrder: 5 fieldKey: date_of_first_session label: Date of First Session @@ -23861,7 +23861,7 @@ items: choices: null dynamic: false allowNull: true - - id: 9wLXd53AYP1vehdDexqZA5 + - id: Db5NGdfFWEUs4bjsrbbsV sortOrder: 6 fieldKey: date_of_last_session label: Date of Last Session @@ -23873,7 +23873,7 @@ items: choices: null dynamic: false allowNull: true - - id: wJrJktCCM2b5pf7i279zbw + - id: 79sAumGUio1QHLLvWMp1k7 sortOrder: 7 fieldKey: dob label: Date of Birth @@ -23885,7 +23885,7 @@ items: choices: null dynamic: false allowNull: true - - id: 6UMEgUtYP3PdjWyqJNhK2G + - id: tx7b2ehX8dXzFrQCJqShKE sortOrder: 8 fieldKey: email label: Email @@ -23899,7 +23899,7 @@ items: choices: null dynamic: false allowNull: true - - id: Ywic4AQkhsa74BvHSXt5p + - id: bYVMjUSbxKHqyYoi8RVBYj sortOrder: 9 fieldKey: email_subscribe label: Email Subscribe @@ -23914,7 +23914,7 @@ items: choices: null dynamic: false allowNull: false - - id: wvLfVTnwYed8r3duVA17Xk + - id: mJ1NpBdNCPzsnoYe94K8et sortOrder: 10 fieldKey: email_open_tracking_disabled label: Email Open Tracking Disabled @@ -23928,7 +23928,7 @@ items: choices: null dynamic: false allowNull: false - - id: w3RhagRGKeRdP8HcTdbzUw + - id: uMYyFgpJF3vyj4BTgbvEEu sortOrder: 11 fieldKey: email_click_tracking_disabled label: Email Click Tracking Disabled @@ -23942,7 +23942,7 @@ items: choices: null dynamic: false allowNull: false - - id: wti8BaHp3C9Z5yc5evv1iB + - id: d4xru2vRjEi4RT5TmWgb1y sortOrder: 12 fieldKey: facebook label: Facebook Attribution Data @@ -23956,7 +23956,7 @@ items: choices: null dynamic: false allowNull: false - - id: i5WUyMTvfMQ3Sn466Kg8U9 + - id: sWnUjpm5UwcNWUuWxy2sgN sortOrder: 13 fieldKey: first_name label: First Name @@ -23970,7 +23970,7 @@ items: choices: null dynamic: false allowNull: true - - id: eYcgrssN9E3ja4KdS7B3Kp + - id: pEv9iR95xz8rKF8J4mQhbq sortOrder: 14 fieldKey: gender label: Gender @@ -23986,7 +23986,7 @@ items: choices: null dynamic: false allowNull: true - - id: duPiSBdahmSC9Nba5YMqHQ + - id: m3W7fjjiHMadQf9StMrwv5 sortOrder: 15 fieldKey: home_city label: Home City @@ -24000,7 +24000,7 @@ items: choices: null dynamic: false allowNull: true - - id: kAzuB3rxqeFYfJ4qn5eN6s + - id: pNrVJ4pLT2zYGzAB48WvZr sortOrder: 16 fieldKey: image_url label: Image URL @@ -24014,7 +24014,7 @@ items: choices: null dynamic: false allowNull: true - - id: jXCBXvcBx9K68Te54C8m2t + - id: f3fCwV3BdPFWkbNrYqM3bK sortOrder: 17 fieldKey: language label: Language @@ -24026,7 +24026,7 @@ items: choices: null dynamic: false allowNull: true - - id: pUPadBHai8sogJYd2KGMuu + - id: egAthtxhyoYdweeajB19HG sortOrder: 18 fieldKey: last_name label: Last Name @@ -24040,7 +24040,7 @@ items: choices: null dynamic: false allowNull: false - - id: hZwBuqr7xFyBPC7n7RjNbn + - id: qcNhSQmPKpyaPuexHd1m1Z sortOrder: 19 fieldKey: marked_email_as_spam_at label: Marked Email as Spam At @@ -24052,7 +24052,7 @@ items: choices: null dynamic: false allowNull: true - - id: b9DqG3S9KD6zHGFxvDG7aZ + - id: ksGYS9vjjHVd3JzXG4sGEU sortOrder: 20 fieldKey: phone label: Phone Number @@ -24066,7 +24066,7 @@ items: choices: null dynamic: false allowNull: true - - id: hu6ycTCSBh6WjGF3F3rV5e + - id: bJGaRahSiHqR93TYJe7aGR sortOrder: 21 fieldKey: push_subscribe label: Push Subscribe @@ -24081,7 +24081,7 @@ items: choices: null dynamic: false allowNull: false - - id: qimfMGkj27DMRCinoTerdY + - id: gQq2pFMa4qvnXVvjEy6tEi sortOrder: 22 fieldKey: push_tokens label: Push Tokens @@ -24098,7 +24098,7 @@ items: choices: null dynamic: false allowNull: false - - id: 5NEvLp37XTMZTB2WTGJyBH + - id: iPRoGkEJBLqh7Ru9xXzAab sortOrder: 23 fieldKey: time_zone label: Time zone @@ -24113,7 +24113,7 @@ items: choices: null dynamic: false allowNull: false - - id: eEPfhdMVPXqA3brG4s5NNa + - id: d4QPmoVqTXDr9UySgeqQbz sortOrder: 24 fieldKey: twitter label: Twitter Attribution Data @@ -24128,7 +24128,7 @@ items: choices: null dynamic: false allowNull: false - - id: kNVSEUduJ4HVH5BSzjLVzW + - id: jgfmowc82NGJkFDUCgoqPE sortOrder: 25 fieldKey: custom_attributes label: Custom Attributes @@ -24142,7 +24142,7 @@ items: choices: null dynamic: false allowNull: false - - id: guj6bxBhqCnWJLDURGi2yC + - id: tmBXZ9aaRzwqHkF5eauSXw sortOrder: 26 fieldKey: enable_batching label: Batch Data to Braze @@ -24165,7 +24165,7 @@ items: hidden: false defaultTrigger: type = "track" and event != "Order Completed" fields: - - id: nQpuSNMvbTYC4tiP5vuCM3 + - id: gZzZN2a45MBk5Uo6i92iff sortOrder: 0 fieldKey: external_id label: External User ID @@ -24179,7 +24179,7 @@ items: choices: null dynamic: false allowNull: false - - id: vXyDaJmu7tECwDCdazx8qM + - id: t7tpxYcuuwAYGYoCkAgHQw sortOrder: 1 fieldKey: user_alias label: User Alias Object @@ -24193,7 +24193,7 @@ items: choices: null dynamic: false allowNull: false - - id: wCgCskVonTYaDeAvgXHHhA + - id: cJHVALuf3RTmiJVbYmbN84 sortOrder: 2 fieldKey: email label: Email @@ -24213,7 +24213,7 @@ items: choices: null dynamic: false allowNull: false - - id: dRKg2tMusnKuizBeRSxid4 + - id: ngcrSeqf11PmsicHuFPsZu sortOrder: 3 fieldKey: braze_id label: Braze User Identifier @@ -24227,7 +24227,7 @@ items: choices: null dynamic: false allowNull: true - - id: sZVpeeH4kqAMNLKnsCmg4Y + - id: dKpZ6DZCCpBPrNH3q3ExKR sortOrder: 4 fieldKey: name label: Event Name @@ -24241,7 +24241,7 @@ items: choices: null dynamic: false allowNull: false - - id: 5iUHDVJ72MWsdLsJHPkQVi + - id: nwcRbxKFbsDCQnVodqKo1q sortOrder: 5 fieldKey: time label: Time @@ -24255,7 +24255,7 @@ items: choices: null dynamic: false allowNull: false - - id: 5b61pZ4mwAotr394tuzfeS + - id: 5ovNWXiCcnyX81UQHpoNYS sortOrder: 6 fieldKey: properties label: Event Properties @@ -24269,7 +24269,7 @@ items: choices: null dynamic: false allowNull: false - - id: 3zXZSJNBvp9MCD6qFAFmr8 + - id: EvkGVvvF3w41vrSfZcu3F sortOrder: 7 fieldKey: enable_batching label: Batch Data to Braze @@ -24294,7 +24294,7 @@ items: hidden: false defaultTrigger: null fields: - - id: eHz3d4e84JS3kmwF3ZPHfd + - id: eUPVg59Ppmw58zM8FLQoBH sortOrder: 0 fieldKey: external_id label: External ID @@ -24306,7 +24306,7 @@ items: choices: null dynamic: false allowNull: false - - id: rxDhtjPqqX48Xcc1RY4BrU + - id: qYgkfPix86B1WTjXHc8iKW sortOrder: 1 fieldKey: user_alias label: User Alias Object @@ -24315,13 +24315,39 @@ items: A user alias object. See [the docs](https://www.braze.com/docs/api/objects_filters/user_alias_object/). placeholder: '' - required: true + required: false multiple: false choices: null dynamic: false allowNull: false - - id: 6apsAkpFFFWh9FMAChH7yL + - id: 7kUHwB3XP4wWExzy4zoQWv sortOrder: 2 + fieldKey: email_to_identify + label: Email to Identify + type: STRING + description: Email address to identify user. + placeholder: '' + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: mxQ5Mg6v7N9tmaWsHgVfAP + sortOrder: 3 + fieldKey: prioritization + label: Prioritization + type: OBJECT + description: >- + Prioritization settings for user merging if multiple users are found. + Required when email_to_identify is provided. + placeholder: '' + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: 5yosK2mzwkpfdZ1hq7vW6k + sortOrder: 4 fieldKey: merge_behavior label: Merge Behavior type: STRING @@ -24349,7 +24375,7 @@ items: hidden: false defaultTrigger: event = "Create Alias" fields: - - id: 4UTqMYrJtcFdtcRugKAFhm + - id: gk6NPK8An1b7BxAknnHrMy sortOrder: 0 fieldKey: external_id label: External ID @@ -24361,7 +24387,7 @@ items: choices: null dynamic: false allowNull: true - - id: wsgRaFBx5SAurQTrmF9tev + - id: oZuRPP81EkoHskVzeWB9ER sortOrder: 1 fieldKey: alias_name label: Alias Name @@ -24373,7 +24399,7 @@ items: choices: null dynamic: false allowNull: false - - id: 8oj3TvVtzVRimKKx5rjqA4 + - id: bQ14DxHoEsszTFLGn8zgAN sortOrder: 2 fieldKey: alias_label label: Alias Label @@ -24393,7 +24419,7 @@ items: hidden: false defaultTrigger: event = "Order Completed" fields: - - id: ebLdUvgUbigeB1hAr12xoM + - id: mttbcYqew3xmFCCJasxHtw sortOrder: 0 fieldKey: external_id label: External User ID @@ -24407,7 +24433,7 @@ items: choices: null dynamic: false allowNull: false - - id: aViyPeKH8qzqT9zy3SEhDg + - id: mo57jytve23656fUQRZNhn sortOrder: 1 fieldKey: user_alias label: User Alias Object @@ -24421,7 +24447,7 @@ items: choices: null dynamic: false allowNull: false - - id: myYDc2sNPWQFxyLQBDsfb5 + - id: jVX3F4nkCrEW3NEa5zRqxw sortOrder: 2 fieldKey: email label: Email @@ -24435,7 +24461,7 @@ items: choices: null dynamic: false allowNull: false - - id: ohRg8GdXWAED8HavXrUfx8 + - id: qCiDffY8q4X8neFkzX2ABz sortOrder: 3 fieldKey: braze_id label: Braze User Identifier @@ -24449,7 +24475,7 @@ items: choices: null dynamic: false allowNull: true - - id: ry7cUGYjV3FQ2bvzTwYidm + - id: kTqTnf262x7oy1xD9jaE5N sortOrder: 4 fieldKey: time label: Time @@ -24463,7 +24489,7 @@ items: choices: null dynamic: false allowNull: false - - id: 2LpWSU9Ly4aMiaY2C8z4dB + - id: mDYwdEDPMLxCxxsJoTqxjR sortOrder: 5 fieldKey: products label: Products @@ -24477,7 +24503,7 @@ items: choices: null dynamic: false allowNull: false - - id: 773Jwv1SGVCfysGJUssYcH + - id: iUbxoDYMtNHMw1TxR5S7QK sortOrder: 6 fieldKey: properties label: Event Properties @@ -24491,7 +24517,7 @@ items: choices: null dynamic: false allowNull: false - - id: 3V4dPMDH7sJzqHw1xkqrgN + - id: 2cERam8KHiVE96obMoE2TH sortOrder: 7 fieldKey: enable_batching label: Batch Data to Braze @@ -24514,7 +24540,7 @@ items: hidden: false defaultTrigger: type = "track" fields: - - id: frVxjjng97px27kMgWPkgA + - id: adEtxVM6wzmkGPVTs7pDnN sortOrder: 0 fieldKey: campaign_id label: Campaign ID @@ -24528,7 +24554,7 @@ items: choices: null dynamic: true allowNull: false - - id: hzf8gAqF5dzYEnW4qm28gh + - id: oQYCj5zPnSS5g2LEsnLGUx sortOrder: 1 fieldKey: send_id label: Send ID @@ -24542,7 +24568,7 @@ items: choices: null dynamic: false allowNull: false - - id: evjms8z9F3mT1AmkKFFqZv + - id: aE5Tt6xMYURADXk1VtzRrV sortOrder: 2 fieldKey: trigger_properties label: Trigger Properties @@ -24559,7 +24585,7 @@ items: choices: null dynamic: false allowNull: false - - id: v2EQEDbxsXrtEU73SKwVMd + - id: 9z7i5SUG97D2A7q6cjyMnu sortOrder: 3 fieldKey: broadcast label: Broadcast @@ -24574,7 +24600,7 @@ items: choices: null dynamic: false allowNull: false - - id: qzU9tkUdebo3ez8xgqbNJq + - id: 9Zp4r9YkWzUevMHJBfmTh8 sortOrder: 4 fieldKey: attachments label: Attachments @@ -24586,7 +24612,7 @@ items: choices: null dynamic: false allowNull: false - - id: cU7Zn8PNVCCUgSdKWgqWcu + - id: kFEo7HU6ckwdyGLKqFguEq sortOrder: 5 fieldKey: recipients label: Recipients @@ -24600,7 +24626,7 @@ items: choices: null dynamic: false allowNull: false - - id: 7FqZXBLiyfFZZVvEdfGiTZ + - id: 83BHy4g9rgBf8x4JxZrjmV sortOrder: 6 fieldKey: prioritization label: Prioritization @@ -24614,7 +24640,7 @@ items: choices: null dynamic: false allowNull: false - - id: fh4Dpnn5wQNCLdeARBUvNw + - id: kfFurhvjDuAMmefgFQntV7 sortOrder: 7 fieldKey: audience label: Audience @@ -24628,26 +24654,138 @@ items: choices: null dynamic: false allowNull: false - presets: - - actionId: vE7Gf9yobj2gTuMBhwmg7g - name: Order Completed Calls + - id: 3rHZERwR6c55kFDYDFmu5V + name: Upsert Catalog Item + slug: upsertCatalogItem + description: Upserts or deletes items in a catalog + platform: CLOUD + hidden: false + defaultTrigger: null fields: - external_id: - '@path': $.userId - email: - '@path': $.traits.email - braze_id: - '@path': $.properties.braze_id - time: - '@path': $.receivedAt - products: - '@path': $.properties.products - properties: - '@path': $.properties - _update_existing_only: false - enable_batching: true - batch_size: 75 - trigger: event = "Order Completed" + - id: 59HU4ZUhnof1G2MiE4skL9 + sortOrder: 0 + fieldKey: item + label: Catalog item to upsert + type: OBJECT + description: >- + The item to upsert in the catalog. The item object should contain fields + that exist in the catalog. The item object should not contain the id + field. + placeholder: '' + required: false + multiple: false + choices: null + dynamic: true + allowNull: false + - id: vQCbvam4EkU1qm4PM1QT4i + sortOrder: 1 + fieldKey: item_id + label: Item ID + type: STRING + description: >- + The unique identifier for the item. Maximum 250 characters. Supported + characters: letters, numbers, hyphens, and underscores. + placeholder: '' + required: true + multiple: false + choices: null + dynamic: false + allowNull: false + - id: qNWbQUexLXhAUWvmiQKwoX + sortOrder: 2 + fieldKey: enable_batching + label: Batch Data to Braze? + type: BOOLEAN + description: If true, Segment will batch events before sending to Braze. + placeholder: '' + defaultValue: true + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: mSGiauTj8drV2vwKLXBjTk + sortOrder: 4 + fieldKey: operation + label: Operation + type: STRING + description: Whether to select an existing catalog or create a new one in Braze. + placeholder: '' + required: true + multiple: false + choices: + - label: Create a new catalog + value: create + - label: Select an existing catalog + value: select + dynamic: false + allowNull: false + - id: 9toFUV9t35CQuECg5MFkrC + sortOrder: 5 + fieldKey: selected_catalog_name + label: Catalog Name + type: STRING + description: The unique name of the catalog. + placeholder: '' + required: false + multiple: false + choices: null + dynamic: true + allowNull: false + - id: 9vkcqkSQM3EepRX42a5fwB + sortOrder: 6 + fieldKey: created_catalog_name + label: Catalog Name + type: STRING + description: >- + The name of the catalog. Must be unique. Maximum 250 characters. + Supported characters: letters, numbers, hyphens, and underscores. + placeholder: '' + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: 21e8DxEuq6J5W5BiZAmPz7 + sortOrder: 7 + fieldKey: description + label: Catalog Description + type: STRING + description: The description of the catalog. Maximum 250 characters. + placeholder: '' + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + - id: piHv7yYnnmxnqQwYbdMu6j + sortOrder: 8 + fieldKey: columns + label: Catalog Fields + type: OBJECT + description: >- + A list of fields to create in the catalog. Maximum 500 fields. ID field + is added by default. + placeholder: '' + required: false + multiple: true + choices: null + dynamic: false + allowNull: false + - id: ssPVpKxgR3G5JKKDMC3j1K + sortOrder: 9 + fieldKey: onMappingSave + label: Select or Create a Catalog + type: OBJECT + description: Select an existing catalog or create a new one in Braze. + defaultValue: null + required: false + multiple: false + choices: null + dynamic: false + allowNull: false + hidden: false + presets: - actionId: 2P24zUSAL8BUpyGYNGmD7M name: Identify Calls fields: @@ -24707,6 +24845,25 @@ items: enable_batching: true batch_size: 75 trigger: type = "track" and event != "Order Completed" + - actionId: vE7Gf9yobj2gTuMBhwmg7g + name: Order Completed Calls + fields: + external_id: + '@path': $.userId + email: + '@path': $.traits.email + braze_id: + '@path': $.properties.braze_id + time: + '@path': $.receivedAt + products: + '@path': $.properties.products + properties: + '@path': $.properties + _update_existing_only: false + enable_batching: true + batch_size: 75 + trigger: event = "Order Completed" partnerOwned: false - id: 63872c01c0c112b9b4d75412 display_name: Braze Cohorts diff --git a/src/_data/catalog/destinations_private.yml b/src/_data/catalog/destinations_private.yml index 5c270665c6..a13018ddb2 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-06-20 +# destination data last updated 2025-06-26 items: - id: 54521fd925e721e32a72eee1 display_name: Pardot diff --git a/src/_data/catalog/regional-supported.yml b/src/_data/catalog/regional-supported.yml index fdfd71f47f..d9a080135a 100644 --- a/src/_data/catalog/regional-supported.yml +++ b/src/_data/catalog/regional-supported.yml @@ -258,6 +258,15 @@ sources: - us endpoints: - us + - id: fUGdCkAF8f + display_name: DB2 + hidden: false + slug: db2 + url: connections/sources/catalog/cloud-apps/db2 + regions: + - us + endpoints: + - us - id: 3yeoUP8E3Y display_name: Delighted hidden: false diff --git a/src/_data/catalog/source_categories.yml b/src/_data/catalog/source_categories.yml index aee7fe1347..eedd4f30ed 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-06-20 +# source categories last updated 2025-06-26 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 c5fe7d2bea..5805cf96c0 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-06-20 +# sources last updated 2025-06-26 items: - id: 8HWbgPTt3k display_name: .NET @@ -591,6 +591,25 @@ items: - Warehouse status: PUBLIC partnerOwned: false + - id: fUGdCkAF8f + display_name: DB2 + isCloudEventSource: false + slug: db2 + url: connections/sources/catalog/cloud-apps/db2 + hidden: false + regions: + - us + endpoints: + - us + source_type: cloud-app + description: Use DB2 as a Warehouse Source for Reverse ETL + logo: + url: >- + https://cdn-devcenter.segment.com/9e78b3e6-9d60-4cba-9273-110e7d31b6f4.svg + categories: + - Warehouse + status: PUBLIC_BETA + partnerOwned: false - id: 3yeoUP8E3Y display_name: Delighted isCloudEventSource: true @@ -1244,7 +1263,7 @@ items: categories: - Email Marketing status: PUBLIC - partnerOwned: false + partnerOwned: true - id: D6h3UEduNW display_name: Klenty isCloudEventSource: true From 6be5bfb4444cceaa4f880e1f209951c22b9ddacd Mon Sep 17 00:00:00 2001 From: pwseg Date: Thu, 26 Jun 2025 12:33:58 -0500 Subject: [PATCH 86/87] move Journeys logic page --- src/engage/journeys/{ => v1}/journeys-logic.md | 1 + 1 file changed, 1 insertion(+) rename src/engage/journeys/{ => v1}/journeys-logic.md (99%) diff --git a/src/engage/journeys/journeys-logic.md b/src/engage/journeys/v1/journeys-logic.md similarity index 99% rename from src/engage/journeys/journeys-logic.md rename to src/engage/journeys/v1/journeys-logic.md index f07e8fc70c..72134b0f14 100644 --- a/src/engage/journeys/journeys-logic.md +++ b/src/engage/journeys/v1/journeys-logic.md @@ -3,6 +3,7 @@ title: Understanding Journeys Logic plan: engage-foundations redirect_from: - "/personas/journeys/journeys-logic" + - "/engage/journeys/journeys-logic" --- From 9b0be933552ab3901a25791b0f121a984e4cf17f Mon Sep 17 00:00:00 2001 From: pwseg Date: Thu, 26 Jun 2025 12:35:01 -0500 Subject: [PATCH 87/87] update sidenav --- src/_data/sidenav/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/_data/sidenav/main.yml b/src/_data/sidenav/main.yml index d7f8a980ee..52e5900904 100644 --- a/src/_data/sidenav/main.yml +++ b/src/_data/sidenav/main.yml @@ -483,6 +483,8 @@ sections: title: 'Journey Step Types' - path: '/engage/journeys/v1/send-data' title: Send Data to Destinations + - path: '/engage/journeys/v1/journeys-logic' + title: Understand Journeys Logic - section_title: Journeys V2 slug: '/engage/journeys/v2' section: @@ -504,8 +506,6 @@ sections: title: Journeys Analytics - path: '/engage/journeys/faq-best-practices' title: Journeys Best Practices and FAQ - - path: '/engage/journeys/journeys-logic' - title: Understand Journeys Logic - path: '/engage/journeys/key-terms' title: Journeys Glossary - section_title: Content