From b918bc2670208ff50f98ce7e8aff678add2c7b86 Mon Sep 17 00:00:00 2001 From: Austin Hsueh Date: Wed, 12 Mar 2025 16:01:25 -0700 Subject: [PATCH 01/41] reddit audience doc v1 --- .../catalog/actions-reddit-audiences/index.md | 27 +++++++++++++++++++ .../actions-reddit-conversions-api/index.md | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 src/connections/destinations/catalog/actions-reddit-audiences/index.md diff --git a/src/connections/destinations/catalog/actions-reddit-audiences/index.md b/src/connections/destinations/catalog/actions-reddit-audiences/index.md new file mode 100644 index 0000000000..8b2a8c23b8 --- /dev/null +++ b/src/connections/destinations/catalog/actions-reddit-audiences/index.md @@ -0,0 +1,27 @@ +--- +title: Reddit Audiences +--- + +{% include content/plan-grid.md name="actions" %} + +The Reddit Audiences destination allows advertisers to send Engage audiences from Segment to Reddit to use as [Custom Audiences](https://business.reddithelp.com/s/article/custom-audiences?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank"} which can be used for Reddit Ads features such as audience targeting, retargeting, creating lookalike audiences, and engagement retargeting. + + +This destination is maintained by Reddit. For any issues with the destination, [contact their Support team](mailto:adsapi-partner-support@reddit.com). + +> (delete after reading) The section below explains how to enable and configure the destination. Include any configuration steps not captured below. For example, obtaining an API key from your platform and any configuration steps required to connect to the destination. + +## Getting started + +1. In your Segment workspace, click Engage in the left navigation bar, and select your Space. +2. Click **Engage Settings** and select the **Destinations** tab. +3. Search for `Reddit Audiences`. +4. Click **Add Destination**. +5. Confirm the Source. The default value is the source connected to the Space to which you’re adding the destination. +6. On the Settings tab, click on the **Connect to Reddit Audiences** and follow the steps to log into your Reddit account to authenticate the connection between your Segment and Reddit accounts. +7. In the **Ad Account ID** section, enter in the Reddit Ad Account ID that you want for the audiences to be created under. This account must be one that your Reddit account has access to. You can find this ID in your Reddit Ads Manager under **Business > Assets > Ad Accounts**. It will start with a t2_ or a2_ prefix. +8. Toggle **Enable Destination** on and click **Save Changes**. +9. Navigate to the Engage Space that contains the audience, and select it from the Audiences tab. +10. Click **Add Destination**. + +{% include components/actions-fields.html %} \ No newline at end of file diff --git a/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md b/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md index 374767b294..8eaaf3aec8 100644 --- a/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md +++ b/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md @@ -5,7 +5,7 @@ id: 66cc766ef4b1c152177239a0 {% include content/plan-grid.md name="actions" %} -The [Reddit Conversions API](https://business.reddithelp.com/helpcenter/s/article/Conversions-API/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank”} allows advertisers to send conversion events from Segment directly to Reddit, without needing website code. By building a sustainable server-side connection more resilient to signal loss, you can gain stronger campaign performance with improved measurement, targeting, and optimization. +The [Reddit Conversions API](https://business.reddithelp.com/s/article/Conversions-API?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank"} allows advertisers to send conversion events from Segment directly to Reddit, without needing website code. By building a sustainable server-side connection more resilient to signal loss, you can gain stronger campaign performance with improved measurement, targeting, and optimization. ### Benefits of Reddit Conversions API From d477c0a19682d2d3c674f9688a99df252a80b137 Mon Sep 17 00:00:00 2001 From: Austin Hsueh Date: Mon, 24 Mar 2025 15:34:40 -0700 Subject: [PATCH 02/41] create reddit audience doc --- .../destinations/catalog/actions-reddit-audiences/index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/src/connections/destinations/catalog/actions-reddit-audiences/index.md b/src/connections/destinations/catalog/actions-reddit-audiences/index.md index 8b2a8c23b8..58908d24f8 100644 --- a/src/connections/destinations/catalog/actions-reddit-audiences/index.md +++ b/src/connections/destinations/catalog/actions-reddit-audiences/index.md @@ -9,7 +9,6 @@ The Reddit Audiences destination allows advertisers to send Engage audiences fro This destination is maintained by Reddit. For any issues with the destination, [contact their Support team](mailto:adsapi-partner-support@reddit.com). -> (delete after reading) The section below explains how to enable and configure the destination. Include any configuration steps not captured below. For example, obtaining an API key from your platform and any configuration steps required to connect to the destination. ## Getting started From 41fbab2d2e0eb0f4c660a7152c1652fdd404d81e Mon Sep 17 00:00:00 2001 From: Austin Hsueh Date: Thu, 17 Apr 2025 11:44:11 -0700 Subject: [PATCH 03/41] reddit doc updates --- .../catalog/actions-reddit-audiences/index.md | 14 +++++++++----- .../actions-reddit-conversions-api/index.md | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/connections/destinations/catalog/actions-reddit-audiences/index.md b/src/connections/destinations/catalog/actions-reddit-audiences/index.md index 58908d24f8..90174af3fa 100644 --- a/src/connections/destinations/catalog/actions-reddit-audiences/index.md +++ b/src/connections/destinations/catalog/actions-reddit-audiences/index.md @@ -9,18 +9,22 @@ The Reddit Audiences destination allows advertisers to send Engage audiences fro This destination is maintained by Reddit. For any issues with the destination, [contact their Support team](mailto:adsapi-partner-support@reddit.com). +### Reddit Requirements +* Create a Reddit Ads account. * Find your ad account ID in [Accounts](https://ads.reddit.com/accounts). + +### Connect Reddit Ads to your workspace ## Getting started -1. In your Segment workspace, click Engage in the left navigation bar, and select your Space. +1. In your Segment workspace, click **Engage** in the left navigation bar, then select your space. 2. Click **Engage Settings** and select the **Destinations** tab. 3. Search for `Reddit Audiences`. 4. Click **Add Destination**. -5. Confirm the Source. The default value is the source connected to the Space to which you’re adding the destination. -6. On the Settings tab, click on the **Connect to Reddit Audiences** and follow the steps to log into your Reddit account to authenticate the connection between your Segment and Reddit accounts. -7. In the **Ad Account ID** section, enter in the Reddit Ad Account ID that you want for the audiences to be created under. This account must be one that your Reddit account has access to. You can find this ID in your Reddit Ads Manager under **Business > Assets > Ad Accounts**. It will start with a t2_ or a2_ prefix. +5. Confirm the source. By default, this is the source connected to the space to which you’re adding the destination. +6. In the **Settings** tab, click **Connect to Reddit Audiences** and authenticate the connection between Segment and Reddit. +7. Provide your ad account ID for **Ad Account ID**. 8. Toggle **Enable Destination** on and click **Save Changes**. -9. Navigate to the Engage Space that contains the audience, and select it from the Audiences tab. +9. Navigate to the engage space that contains the audience, and select it in the **Audiences** tab. 10. Click **Add Destination**. {% include components/actions-fields.html %} \ No newline at end of file diff --git a/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md b/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md index 8eaaf3aec8..0d3af5d7b1 100644 --- a/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md +++ b/src/connections/destinations/catalog/actions-reddit-conversions-api/index.md @@ -5,7 +5,7 @@ id: 66cc766ef4b1c152177239a0 {% include content/plan-grid.md name="actions" %} -The [Reddit Conversions API](https://business.reddithelp.com/s/article/Conversions-API?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank"} allows advertisers to send conversion events from Segment directly to Reddit, without needing website code. By building a sustainable server-side connection more resilient to signal loss, you can gain stronger campaign performance with improved measurement, targeting, and optimization. +The [Reddit Conversions API](https://ads-api.reddit.com/docs/v2/#tag/Conversions-API){:target="_blank"} allows advertisers to send conversion events from Segment directly to Reddit, without needing website code. By building a sustainable server-side connection more resilient to signal loss, you can gain stronger campaign performance with improved measurement, targeting, and optimization. ### Benefits of Reddit Conversions API From 4b92bede0026dc44d34f3617bfaa886431185053 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Fri, 2 May 2025 10:57:35 -0400 Subject: [PATCH 04/41] add faq about catpref error --- src/privacy/consent-management/consent-faq.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/privacy/consent-management/consent-faq.md b/src/privacy/consent-management/consent-faq.md index 1383349ccd..cfd3e55f69 100644 --- a/src/privacy/consent-management/consent-faq.md +++ b/src/privacy/consent-management/consent-faq.md @@ -19,7 +19,15 @@ You can use the [Destination Actions framework](/docs/connections/destinations/a For more information, see the [Sharing consent with Actions destinations](/docs/privacy/consent-management/consent-in-unify/#sharing-consent-with-actions-destinations) documentation. -## Can I use a Consent Management Platform (CMP) other than OneTrust to collect consent from my end users? +## Why is my event failing ingestion with the error "context.consent.categoryPreferences object is required"? + +An `context.consent.categoryPreferences object is required` error occurs when you send the Segment Consent Preference Updated event without the `context.consent.categoryPreferences` object. Segment performs a validation on the Segment Consent Preference Updated event to ensure that you've correctly structured your end users' consent preferences. If the required object is missing, Segment won't ingest the event and the event won't appear in downstream tools. + +Other events, like Track, Identify, or Group, are not subject to the same consent validation and do not require the `context.consent.categoryPreferences` object. + +If you're using a Consent Management Platform (CMP) integration other than [Segment's Analytics.js OneTrust wrapper](/docs/privacy/consent-management/onetrust-wrapper/), you must ensure your Segment Consent Preference Updated events contain the `context.consent.categoryPreferences` object. + +## Can I use a CMP other than OneTrust to collect consent from my end users? Yes, you can use any commercially available CMP or custom solution to collect consent from your end users. If you use a CMP other than OneTrust, you must generate your own wrapper or other mechanism to add the following objects to the events collected from your sources: - Includes the [consent object](/docs/privacy/consent-management/consent-in-segment-connections/#consent-object) on every event From deafb4ee6ce38d5e33839aa2234cf7f374a60bae Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Fri, 2 May 2025 11:16:23 -0400 Subject: [PATCH 05/41] update catalog for bing ads settings --- src/_data/catalog/destination_categories.yml | 2 +- src/_data/catalog/destinations.yml | 37 +++++++++++++++++++- src/_data/catalog/destinations_private.yml | 2 +- src/_data/catalog/source_categories.yml | 2 +- src/_data/catalog/sources.yml | 2 +- 5 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/_data/catalog/destination_categories.yml b/src/_data/catalog/destination_categories.yml index 42afaf2b8e..a6731c764f 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-05-01 +# destination categories last updated 2025-05-02 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 2e8ea3e178..8b68908ada 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-05-01 +# destination data last updated 2025-05-02 items: - id: 637e8d185e2dec264895ea89 display_name: 1Flow @@ -19596,6 +19596,41 @@ items: mobile: false server: false settings: + - name: adStorage + type: select + defaultValue: '' + description: >- + The default value for ad storage consent state. This is only used if + **Enable Consent Mode** is on. + required: false + label: Ad Storage Consent Default + - name: adStorageConsentCategory + type: string + defaultValue: '' + description: >- + [For Segment [Consent + Management](https://segment.com/docs/privacy/consent-management/) users] + The consent category to look up for Ad Storage consent value. This is only + used if **Enable Consent Mode** is on. + required: false + label: Ad Storage Consent Category + - name: adStoragePropertyMapping + type: string + defaultValue: '' + description: >- + The property to lookup Ad Storage consent state from track or page events. + Accepted values are **granted** or **denied**. This is only used if + **Enable Consent Mode** is on. + required: false + label: Ad Storage Property Mapping + - name: enableConsent + type: boolean + defaultValue: false + description: >- + Set to true to enable Bing Ad's [consent + mode](https://help.ads.microsoft.com/#apex/ads/en/60119/1-500). + required: false + label: Enable Consent Mode - name: tagId type: string defaultValue: '' diff --git a/src/_data/catalog/destinations_private.yml b/src/_data/catalog/destinations_private.yml index 97edd51abf..4a08c84441 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-05-01 +# destination data last updated 2025-05-02 items: - id: 54521fd925e721e32a72eee1 display_name: Pardot diff --git a/src/_data/catalog/source_categories.yml b/src/_data/catalog/source_categories.yml index e0de29377b..e133a992c2 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-05-01 +# source categories last updated 2025-05-02 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 513a5a4697..ac22ab9638 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-05-01 +# sources last updated 2025-05-02 items: - id: 8HWbgPTt3k display_name: .NET From 3c3316749716e1c163f2568953e3c0f8444657db Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Fri, 2 May 2025 14:47:46 -0400 Subject: [PATCH 06/41] add workflow + schedule info --- src/connections/alerting.md | 4 ++-- src/connections/reverse-etl/manage-retl.md | 4 ++-- src/engage/audiences/index.md | 2 +- src/monitor/alerts/default-alerts.md | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/connections/alerting.md b/src/connections/alerting.md index 690fe781ec..09f74d8a70 100644 --- a/src/connections/alerting.md +++ b/src/connections/alerting.md @@ -24,7 +24,7 @@ To create a source volume alert: 3. On the Create alert sidesheet, enter a percentage of source volume change that you'd like to be notified for. 4. Select one or more of the following alert channels: - **Email**: Select this to receive notifications at the provided email address. - - **Slack**: Select this to send alerts to one or more channels in your workspace. + - **Slack**: Select this to send alerts to one or more channels in your workspace. You can post messages to your channel with either a [webhook](https://api.slack.com/messaging/webhooks){:target="_blank”} or a [workflow](https://slack.com/help/articles/360041352714-Build-a-workflow--Create-a-workflow-that-starts-outside-of-Slack){:target="_blank”}. - **In-app**: Select this to receive notifications in the Segment app. To view your notifications, select the bell next to your user icon in the Segment app. 5. Click **Save**. @@ -46,7 +46,7 @@ To create a successful delivery rate alert: 3. On the Create alert sidesheet, enter a percentage. You will receive events if your successful delivery rate falls below this percentage. 4. Select one of the following alert channels: - **Email**: Select this to receive notifications at either the email address associated with your account or another email address that you enter into this field. - - **Slack**: Select this and enter a Slack webhook URL and channel name to send alerts to a channel in your Slack workspace. + - **Slack**: Select this to send alerts to one or more channels in your workspace. You can post messages to your channel with either a [webhook](https://api.slack.com/messaging/webhooks){:target="_blank”} or a [workflow](https://slack.com/help/articles/360041352714-Build-a-workflow--Create-a-workflow-that-starts-outside-of-Slack){:target="_blank”}. - **In-app**: Select this to receive notifications in the Segment app. To view your notifications, select the bell next to your user icon in the Segment app. 5. Click **Save**. diff --git a/src/connections/reverse-etl/manage-retl.md b/src/connections/reverse-etl/manage-retl.md index e4dd195d2e..dbe3a0022d 100644 --- a/src/connections/reverse-etl/manage-retl.md +++ b/src/connections/reverse-etl/manage-retl.md @@ -84,7 +84,7 @@ To subscribe to alerts for a failed or partially successful sync: - **Reverse ETL sync partial success**: Receive a notification when your Reverse ETL sync is partially successful. 4. Select one or more of the following alert options: - **Enable email notifications**: Enter an email address or alias that should receive alerts. - - **Enable Slack notifications**: Enter a webhook URL and Slack channel name. + - **Enable Slack notifications**: Enter a webhook URL and Slack channel name. You can post messages to your channel with either a [webhook](https://api.slack.com/messaging/webhooks){:target="_blank”} or a [workflow](https://slack.com/help/articles/360041352714-Build-a-workflow--Create-a-workflow-that-starts-outside-of-Slack){:target="_blank”}. - **Enable in-app notifications**: Select this option to see an in-app notification. 5. Click **Create alert**. @@ -124,7 +124,7 @@ To subscribe to alerts for successful delivery fluctuations at the mapping level 3. Set an *alert threshold*, or the percentage of successfully delivered events that would prompt an alert. 4. Select one or more of the following notification channels: - **Email**: Enter an email address or alias that should receive alerts. - - **Slack notification**: Enter a Webhook URL and a Slack channel name to receive alerts in a Slack channel. + - **Slack notification**: Enter a Webhook URL and a Slack channel name to receive alerts in a Slack channel. You can post messages to your channel with either a [webhook](https://api.slack.com/messaging/webhooks){:target="_blank”} or a [workflow](https://slack.com/help/articles/360041352714-Build-a-workflow--Create-a-workflow-that-starts-outside-of-Slack){:target="_blank”}. - **In-app notifications**: Select this to receive notifications in the Segment app. To view your notifications, select the bell next to your user icon in the Segment app. 5. Toggle the **Enable alert** setting on and click **Create**. diff --git a/src/engage/audiences/index.md b/src/engage/audiences/index.md index a52c924ba3..3f104f92f6 100644 --- a/src/engage/audiences/index.md +++ b/src/engage/audiences/index.md @@ -288,7 +288,7 @@ To create an Activation event health spikes or drops alert: 4. Enter a percentage threshold to trigger activation event health notifications. 5. Select one or more of the following alert channels: - **Email**: Select this to receive notifications at the provided email address. - - **Slack**: Select this to send alerts to one or more channels in your workspace. + - **Slack**: Select this to send alerts to one or more channels in your workspace. You can post messages to your channel with either a [webhook](https://api.slack.com/messaging/webhooks){:target="_blank”} or a [workflow](https://slack.com/help/articles/360041352714-Build-a-workflow--Create-a-workflow-that-starts-outside-of-Slack){:target="_blank”}. - **In-app**: Select this to receive notifications in the Segment app. To view your notifications, select the bell next to your user icon in the Segment app. 6. Click **Save**. diff --git a/src/monitor/alerts/default-alerts.md b/src/monitor/alerts/default-alerts.md index 717c7ec1ea..096eba7137 100644 --- a/src/monitor/alerts/default-alerts.md +++ b/src/monitor/alerts/default-alerts.md @@ -22,9 +22,9 @@ You can create alerts for the following product areas: The Alerting table includes the following information about each event: - **Alert name**: The type of alert, for example, "Audience created" or "Audience deleted". -- **Last triggered**: The most recent date and time, in your local time zone, that the alert was triggered. +- **Last triggered**: The most recent date and time, in your local time zone, that the alert was triggered. Some alerts, like **Violations Detected**, trigger only once per day. - **Status**: Either **enabled**, if the alert is currently configured in your workspace, or **disabled**, if you're not configured to receive alerts for an event. -- **Notification channels**: Icons describing what notification channels you'll receive the alerts on - through a Slack webhook, email, or in-app notification. +- **Notification channels**: Icons describing what notification channels you'll receive the alerts on - through a Slack webhook, Slack workflow, email, or in-app notification. - **Actions**: By selecting the menu icon for an individual alert, you can edit or delete it from the Alerting page. ## Create a new alert From 19e1ba5aabd005a5da903a0c2ddcd92ed27030f2 Mon Sep 17 00:00:00 2001 From: Logan Luque <98849774+LLuque-twilio@users.noreply.github.com> Date: Fri, 2 May 2025 12:09:45 -0700 Subject: [PATCH 07/41] Add description field to entities/relationships --- src/unify/data-graph/index.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/unify/data-graph/index.md b/src/unify/data-graph/index.md index 4860be27e1..297fce56e3 100644 --- a/src/unify/data-graph/index.md +++ b/src/unify/data-graph/index.md @@ -174,6 +174,7 @@ The first step in creating a Data Graph is to define your entities. An entity co | Parameters | Definition | | ----------- | --------------------------------------------------------------------- | | `entity` | An immutable slug for the entity, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (e.g `account-entity` or `account_entity`). | +| (Optional) `description` | An optional descriptor used to add additional context to the entity | | `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, etc. This name can be modified at any time. | | `table_ref` | Defines the fully qualified table reference: `[database name].[schema name].[table name]`. Segment flexibly supports tables, views and materialized views. | | `primary_key` | The unique identifier for the given table. Must be a column with unique values per row. | @@ -185,6 +186,7 @@ The first step in creating a Data Graph is to define your entities. An entity co data_graph { entity "account-entity" { name = "account" + description = "An entity representing user accounts" table_ref = "PRODUCTION.CUST.ACCOUNT" primary_key = "ID" } @@ -241,6 +243,7 @@ This is the first level of relationships and a unique type of relationship betwe | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | | `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, etc. This name can be modified at any time | +| (Optional) `description` | An optional descriptor used to add additional context to the relationship | | `related_entity` | References your already defined entity | To define a profile-to-entity relationship, reference your entity table and depending on your table columns, choose to join on one of the following: @@ -277,6 +280,7 @@ data_graph { # Relate accounts table to the profile relationship "user-accounts" { name = "Premium Accounts" + description = "A relationship linking segment profiles to user accounts" related_entity = "account-entity" # Option 1: Join the profile entity with an identifier (like email) on the related entity table @@ -302,6 +306,7 @@ For 1:many relationships, define the join on between the two entity tables using | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | | `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, and so on. This name can be modified at any time | +| (Optional) `description` | An optional descriptor used to add additional context to the relationship | | `related_entity` | References your already defined entity | | `join_on` | Defines relationship between the two entity tables `[lefty entity slug].[column name] = [right entity slug].[column name]`. Note that since you’re referencing the entity slug for the join on, you do not need to define the full table reference | @@ -328,6 +333,7 @@ data_graph { # Define 1:many relationship between accounts and carts relationship "user-carts" { name = "Shopping Carts" + description = "A relationship linking user accounts to carts" related_entity = "carts-entity" join_on = "account-entity.ID = cart-entity.ACCOUNT_ID" } @@ -347,6 +353,7 @@ For many:many relationships, define the join on between the two entity tables wi | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | | `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, and so on. This name can be modified at any time | +| (Optional) `description` | An optional descriptor used to add additional context to the relationship | | `related_entity` | References your already defined entity | **Junction table spec** @@ -390,6 +397,7 @@ data_graph { # Define many:many relationship between carts and products relationship "products" { name = "Purchased Products" + description = "A relationship linking user carts to products via the CART_PRODUCT junction table" related_entity = "product-entity" junction_table { table_ref = "PRODUCTION.CUSTOMER.CART_PRODUCT" From e43dd9407755bfc5be48329f14d407731acf091a Mon Sep 17 00:00:00 2001 From: Logan Luque <98849774+LLuque-twilio@users.noreply.github.com> Date: Fri, 2 May 2025 12:12:16 -0700 Subject: [PATCH 08/41] [netlify-build] From b4edef95fe6ec2b3495449c1d86ea71701d6d826 Mon Sep 17 00:00:00 2001 From: Logan Luque <98849774+LLuque-twilio@users.noreply.github.com> Date: Fri, 2 May 2025 12:45:09 -0700 Subject: [PATCH 09/41] uppercase Segment --- src/unify/data-graph/index.md | 200 ++++++++++++++++++---------------- 1 file changed, 108 insertions(+), 92 deletions(-) diff --git a/src/unify/data-graph/index.md b/src/unify/data-graph/index.md index 297fce56e3..173d85f71b 100644 --- a/src/unify/data-graph/index.md +++ b/src/unify/data-graph/index.md @@ -2,8 +2,8 @@ title: Data Graph plan: unify redirect_from: - - '/unify/linked-profiles/data-graph' - - '/unify/data-graph/data-graph' + - "/unify/linked-profiles/data-graph" + - "/unify/data-graph/data-graph" --- The Data Graph acts as a semantic layer that allows businesses to define relationships between various entity datasets in the warehouse — such as accounts, subscriptions, households, and products — with the Segment Profile. It makes these relational datasets easily accessible to business teams for targeted and personalized customer engagements. @@ -17,23 +17,25 @@ To use the Data Graph, you'll need the following: - A supported data warehouse with the appropriate Data Graph permissions - Workspace Owner or Unify Read-only/Admin and Entities Admin permissions -- For Linked Audiences, set up [Profiles Sync](/docs/unify/profiles-sync/) in a Unify space with ready-to-use [data models and tables](/docs/unify/profiles-sync/tables/) in your warehouse. When setting up selective sync, Segment recommends the following settings: +- For Linked Audiences, set up [Profiles Sync](/docs/unify/profiles-sync/) in a Unify space with ready-to-use [data models and tables](/docs/unify/profiles-sync/tables/) in your warehouse. When setting up selective sync, Segment recommends the following settings: - Under **Profile materialized tables**, select all the tables (`user_identifier`, `user_traits`, `profile_merges`) for faster and more cost-efficient Linked Audiences computations in your data warehouse. - **Make sure to include the unmaterialized tables as well**. Segment needs them during setup to understand your schema. - Under **Track event tables**, select **Sync all Track Call Tables** to enable filtering on event history for Linked Audiences conditions. > info "" -> To define entity relationships, you need to enable Linked Audiences. Contact your Customer Success Manager to get access to Linked Audiences. +> To define entity relationships, you need to enable Linked Audiences. Contact your Customer Success Manager to get access to Linked Audiences. ## Step 1: Set up Data Graph permissions in your data warehouse + > warning "" > Data Graph, Reverse ETL, and Profiles Sync require different warehouse permissions. -To get started with the Data Graph, set up the required permissions in your warehouse. Segment supports the following: +To get started with the Data Graph, set up the required permissions in your warehouse. Segment supports the following: + - Linked Audiences: [BigQuery](/docs/unify/data-graph/setup-guides/BigQuery-setup/), [Databricks](/docs/unify/data-graph/setup-guides/databricks-setup/), [Redshift](/docs/unify/data-graph/setup-guides/redshift-setup/), and [Snowflake](/docs/unify/data-graph/setup-guides/snowflake-setup/) -- Linked Events: [BigQuery](/docs/unify/data-graph/setup-guides/BigQuery-setup/), [Databricks](/docs/unify/data-graph/setup-guides/databricks-setup/), [Redshift](/docs/unify/data-graph/setup-guides/redshift-setup/), and [Snowflake](/docs/unify/data-graph/setup-guides/snowflake-setup/) +- Linked Events: [BigQuery](/docs/unify/data-graph/setup-guides/BigQuery-setup/), [Databricks](/docs/unify/data-graph/setup-guides/databricks-setup/), [Redshift](/docs/unify/data-graph/setup-guides/redshift-setup/), and [Snowflake](/docs/unify/data-graph/setup-guides/snowflake-setup/) -To track the data sent to Segment on previous syncs, Segment uses [Reverse ETL](/docs/connections/reverse-etl/) infrastructure to store diffs in tables within a dedicated schema called `_segment_reverse_etl` in your data warehouse. You can choose which database or project in your warehouse this data lives in. +To track the data sent to Segment on previous syncs, Segment uses [Reverse ETL](/docs/connections/reverse-etl/) infrastructure to store diffs in tables within a dedicated schema called `_segment_reverse_etl` in your data warehouse. You can choose which database or project in your warehouse this data lives in. ## Step 2: Connect your warehouse to the Data Graph @@ -42,7 +44,7 @@ To connect your warehouse to the Data Graph: 1. Navigate to **Unify > Data Graph**. This should be a Unify space with Profiles Sync already set up. 2. Click **Add warehouse**. 3. Select your warehouse type. -4. Enter your warehouse credentials. +4. Enter your warehouse credentials. 5. Test your connection, then click **Save**. ## Step 3: Build your Data Graph @@ -61,34 +63,35 @@ The Data Graph is a semantic layer that represents a subset of relevant business **Defining Relationships** -Similar to the concept of [cardinality in data modeling](https://w.wiki/Ay$u){:target="_blank"}, the Data Graph supports 3 types of relationships: +Similar to the concept of [cardinality in data modeling](https://w.wiki/Ay$u){:target="\_blank"}, the Data Graph supports 3 types of relationships: + - **Profile-to-entity relationship:** This is a relationship between your entity table and the Segment Profiles tables, and is the first level of relationship. - **1:many relationship:** For example, an `account` can have many `carts`, but each `cart` can only be associated with one `account`. - **many:many relationship:** For example, a user can have many `carts`, and each `cart` can have many `products`. However, these `products` can also belong to many `carts`. - The Data Graph currently supports 6 levels of depth (or nodes) starting from the profile. For example, relating the `profile` to the `accounts` table to the `carts` table is 3 levels of depth. There are no limits on the width of your Data Graph or the number of entities. - Relationships are nested under the profile. Refer to the example below. -**Data Graph Example** +**Data Graph Example** An example of a Data Graph ```python data_graph { version = "v1.0.0" - + # Define entities entity "account-entity" { name = "account" table_ref = "PRODUCTION.CUST.ACCOUNT" primary_key = "ID" } - + entity "product-entity" { name = "product" table_ref = "PRODUCTION.PROD.PRODUCT_SKUS" primary_key = "SKU" } - + entity "cart-entity" { name = "cart" table_ref = "PRODUCTION.CUST.CART" @@ -107,13 +110,13 @@ data_graph { table_ref = "PRODUCTION.CUST.SUBSCRIPTION" primary_key = "SUB_ID" } - + # Define the profile entity, which corresponds to Segment Profiles tables synced with Profiles Sync # Use materialized views in Profiles Sync to reduce query costs and speed things up profile { profile_folder = "PRODUCTION.SEGMENT" type = "segment:materialized" - + # First branch - relate accounts table to the profile # This is a unique type of relationship between an entity and the profile block relationship "user-accounts" { @@ -125,17 +128,17 @@ data_graph { type = "email" join_key = "EMAIL_ID" } - + # Define 1:many relationship between accounts and carts # for example, an account can be associated with many carts relationship "user-carts" { name = "Shopping Carts" related_entity = "cart-entity" join_on = "account-entity.ID = cart-entity.ACCOUNT_ID" - + # Define many:many relationship between carts and products # for example, there can be multiple carts, and each cart can be associated with multiple products - relationship "products" { + relationship "products" { name = "Purchased Products" related_entity = "product-entity" junction_table { @@ -143,7 +146,7 @@ data_graph { table_ref = "PRODUCTION.CUSTOMER.CART_PRODUCT" left_join_on = "cart-entity.ID = CART_ID" right_join_on = "PRODUCT_ID = product-entity.SKU" - } + } } } } @@ -156,7 +159,7 @@ data_graph { type = "email" join_key = "EMAIL_ID" } - + # Define 1:many relationship between households and subscriptions # for example, a household can be associated with multiple subscriptions relationship "user-subscriptions" { @@ -169,16 +172,17 @@ data_graph { ``` ### 3a: Define entities + The first step in creating a Data Graph is to define your entities. An entity corresponds to a table in the warehouse. -| Parameters | Definition | -| ----------- | --------------------------------------------------------------------- | -| `entity` | An immutable slug for the entity, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (e.g `account-entity` or `account_entity`). | -| (Optional) `description` | An optional descriptor used to add additional context to the entity | -| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, etc. This name can be modified at any time. | -| `table_ref` | Defines the fully qualified table reference: `[database name].[schema name].[table name]`. Segment flexibly supports tables, views and materialized views. | -| `primary_key` | The unique identifier for the given table. Must be a column with unique values per row. | -| (If applicable) `enrichment_enabled = true` | Add this if you plan to reference the entity table for [Linked Events](/docs/unify/data-graph/linked-events/) use cases. | +| Parameters | Definition | +| ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `entity` | An immutable slug for the entity, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (e.g `account-entity` or `account_entity`). | +| (Optional) `description` | An optional descriptor used to add additional context to the entity | +| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, etc. This name can be modified at any time. | +| `table_ref` | Defines the fully qualified table reference: `[database name].[schema name].[table name]`. Segment flexibly supports tables, views and materialized views. | +| `primary_key` | The unique identifier for the given table. Must be a column with unique values per row. | +| (If applicable) `enrichment_enabled = true` | Add this if you plan to reference the entity table for [Linked Events](/docs/unify/data-graph/linked-events/) use cases. | **Example:** @@ -190,7 +194,7 @@ data_graph { table_ref = "PRODUCTION.CUST.ACCOUNT" primary_key = "ID" } - + entity "cart-entity" { name = "cart" table_ref = "PRODUCTION.CUST.CART" @@ -201,15 +205,16 @@ data_graph { ``` ### 3b: Define the profile + > info "" > Segments recommends that you select materialized views under the Profiles [Selective Sync settings](/docs/unify/profiles-sync/profiles-sync-setup/#step-3-set-up-selective-sync) to optimize warehouse compute costs. -Next, define the profile. This is a special class of entity that represents Segment Profiles, which corresponds to the Profiles Sync tables and models. For Linked Audiences, this allows marketers to filter on profile traits, event history, etc. There can only be one profile for a Data Graph. +Next, define the profile. This is a special class of entity that represents Segment Profiles, which corresponds to the Profiles Sync tables and models. For Linked Audiences, this allows marketers to filter on profile traits, event history, etc. There can only be one profile for a Data Graph. -| Parameters | Definition | -| ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `profile_folder` | Define the fully qualified path of the folder or schema location for the profile tables. | -| `type` | Use `segment:materialized` to sync materialized views with Profiles Sync. Segment recommends this configuration for all Linked Audiences and Data Graph setups. If you can't sync materialized views, [reach out to Segment support](https://segment.com/help/contact/){:target="_blank"} for help. | +| Parameters | Definition | +| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `profile_folder` | Define the fully qualified path of the folder or schema location for the profile tables. | +| `type` | Use `segment:materialized` to sync materialized views with Profiles Sync. Segment recommends this configuration for all Linked Audiences and Data Graph setups. If you can't sync materialized views, [reach out to Segment support](https://segment.com/help/contact/){:target="\_blank"} for help. | **Example:** @@ -218,7 +223,7 @@ Next, define the profile. This is a special class of entity that represents Segm data_graph { # Define entities ... - + # Define the profile entity, which corresponds to Segment Profiles tables synced via Profiles Sync # Recommend setting up Profiles Sync materialized views to optimize warehouse compute costs profile { @@ -231,24 +236,27 @@ data_graph { ### 3c: Define relationships -Now define your relationships between your entities. Similar to the concept of [cardinality in data modeling](en.wikipedia.org/wiki/Cardinality_(data_modeling)), the Data Graph supports 3 types of relationships below. All relationship types require you to define the relationship slug, name, and related entity. Each type of relationship has unique join on conditions. +Now define your relationships between your entities. Similar to the concept of [cardinality in data modeling](), the Data Graph supports 3 types of relationships below. All relationship types require you to define the relationship slug, name, and related entity. Each type of relationship has unique join on conditions. + - **[Profile-to-entity relationship](#define-profile-to-entity-relationship):** This is a relationship between your entity table and the Segment Profiles tables, and is the first level of relationship. - **[1:many relationship](#define-a-1many-relationship):** For example, an `account` can have many `carts`, but each `cart` can only be associated with one `account`. - **[many:many relationship](#define-manymany-relationship):** For example, a user can have many `carts`, and each `cart` can have many `products`. However, these `products` can also belong to many `carts`. #### Define profile-to-entity relationship -This is the first level of relationships and a unique type of relationship between the Segment profile entity and a related entity. -| Parameters | Definition | -| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | -| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, etc. This name can be modified at any time | -| (Optional) `description` | An optional descriptor used to add additional context to the relationship | -| `related_entity` | References your already defined entity | +This is the first level of relationships and a unique type of relationship between the Segment profile entity and a related entity. -To define a profile-to-entity relationship, reference your entity table and depending on your table columns, choose to join on one of the following: +| Parameters | Definition | +| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | +| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, etc. This name can be modified at any time | +| (Optional) `description` | An optional descriptor used to add additional context to the relationship | +| `related_entity` | References your already defined entity | + +To define a profile-to-entity relationship, reference your entity table and depending on your table columns, choose to join on one of the following: + +**Option 1 (Most common) - Join on an external ID:** Use the `external_id` block to join the profile entity with an entity table using external IDs from your [Unify ID resolution](/docs/unify/identity-resolution/externalids/) settings. Typically these identifiers are `user_id`, `email`, or `phone` depending on the structure of your entity table. -**Option 1 (Most common) - Join on an external ID:** Use the `external_id` block to join the profile entity with an entity table using external IDs from your [Unify ID resolution](/docs/unify/identity-resolution/externalids/) settings. Typically these identifiers are `user_id`, `email`, or `phone` depending on the structure of your entity table. - `type`: Represents the [external ID type](/docs/unify/identity-resolution/externalids/#default-externalids) (`email`, `phone`, `user_id`) in your ID resolution settings. - This maps to the `type` column in the `user_identifiers` table when using materialized views. - `join_key`: The column on the entity table that matches the external ID. @@ -256,39 +264,41 @@ To define a profile-to-entity relationship, reference your entity table and depe > note "" > Segment recommends using materialized views with Profiles Sync. However, Segment may still reference unmaterialized tables during setup for schema detection. -**Option 2 - Join on a profile trait:** Use the `trait` block to join the profile entity with an entity table using [Profile Traits](/docs/unify/#enrich-profiles-with-traits). -- `name`: Represents a trait name in your Unify profiles. - - This maps to the `name` column in the `user_traits` table when using materialized views. +**Option 2 - Join on a profile trait:** Use the `trait` block to join the profile entity with an entity table using [Profile Traits](/docs/unify/#enrich-profiles-with-traits). + +- `name`: Represents a trait name in your Unify profiles. + - This maps to the `name` column in the `user_traits` table when using materialized views. - `join_key`: The column on the entity table that you're matching to the trait. **Example:** + ```python -data_graph { +data_graph { entity "account-entity" { name = "account" table_ref = "PRODUCTION.CUST.ACCOUNT" primary_key = "ID" } - + # Define additional entities... # Note: Relationships are nested profile { profile_folder = "PRODUCTION.SEGMENT" type = "segment:materialized" - - # Relate accounts table to the profile + + # Relate accounts table to the profile relationship "user-accounts" { name = "Premium Accounts" - description = "A relationship linking segment profiles to user accounts" + description = "A relationship linking Segment profiles to user accounts" related_entity = "account-entity" - + # Option 1: Join the profile entity with an identifier (like email) on the related entity table external_id { type = "email" join_key = "EMAIL_ID" } - + # Option 2: Join the profile entity with a profile trait on the related entity table trait { name = "cust_id" @@ -300,36 +310,37 @@ data_graph { ``` #### Define a 1:many relationship + For 1:many relationships, define the join on between the two entity tables using the spec below. -| Parameters | Definition | -| ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | -| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, and so on. This name can be modified at any time | -| (Optional) `description` | An optional descriptor used to add additional context to the relationship | -| `related_entity` | References your already defined entity | -| `join_on` | Defines relationship between the two entity tables `[lefty entity slug].[column name] = [right entity slug].[column name]`. Note that since you’re referencing the entity slug for the join on, you do not need to define the full table reference | +| Parameters | Definition | +| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | +| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, and so on. This name can be modified at any time | +| (Optional) `description` | An optional descriptor used to add additional context to the relationship | +| `related_entity` | References your already defined entity | +| `join_on` | Defines relationship between the two entity tables `[lefty entity slug].[column name] = [right entity slug].[column name]`. Note that since you’re referencing the entity slug for the join on, you do not need to define the full table reference | **Example:** ```python -data_graph { +data_graph { entity "cart-entity" { name = "cart" table_ref = "PRODUCTION.CUST.CART" primary_key = "ID" } - + # Define additional entities... # Note: Relationships are nested profile { profile_folder = "PRODUCTION.SEGMENT" type = "segment:materialized" - + relationship "user-accounts" { ... - + # Define 1:many relationship between accounts and carts relationship "user-carts" { name = "Shopping Carts" @@ -343,57 +354,55 @@ data_graph { ``` #### Define many:many relationship + For many:many relationships, define the join on between the two entity tables with the `junction_table`. > warning "" > Attributes from a junction table are not referenceable via the Linked Audience builder. If a marketer would like to filter upon a column on the junction table, you must define the junction as an entity and define a relationship. - -| Parameters | Definition | -| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | -| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, and so on. This name can be modified at any time | -| (Optional) `description` | An optional descriptor used to add additional context to the relationship | -| `related_entity` | References your already defined entity | +| Parameters | Definition | +| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | +| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, and so on. This name can be modified at any time | +| (Optional) `description` | An optional descriptor used to add additional context to the relationship | +| `related_entity` | References your already defined entity | **Junction table spec** -| Parameters |Definition | -| --------------- | --------------------------------- | -| `table_ref` | Defines the fully qualified table reference to the join table: `[database name].[schema name].[table name]`. Segment flexibly supports tables, views and materialized views | +| Parameters | Definition | +| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `table_ref` | Defines the fully qualified table reference to the join table: `[database name].[schema name].[table name]`. Segment flexibly supports tables, views and materialized views | | `primary_key` | The unique identifier for the given table. Must be a column with unique values per row | | `left_join_on` | Define the relationship between the left entity table and the junction table: `[left entity slug].[column name] = [junction table column name]`. Note that schema and table are implied within the junction table column name, so you do not need to define it again | | `right_join_on` | Define the relationship between the junction table and the right entity table: `[junction table column name] = [right entity slug].[column name]`. Note that schema and table are implied within the junction table column name, so you do not need to define it again | - When you define a many-to-many relationship using a junction table, `left_join_on` and `right_join_on` tell Data Graph how to connect each entity to the junction table: -* Use `left_join_on` to specify which column in the junction table links to the parent (left) entity. +- Use `left_join_on` to specify which column in the junction table links to the parent (left) entity. -* Use `right_join_on` to specify which column links to the child (right) entity. +- Use `right_join_on` to specify which column links to the child (right) entity. These fields define the join conditions, but they don’t control how the join is executed. Data Graph always performs inner joins, even if you specify a `left_join_on`. If you need behavior similar to a left join (like including unmatched rows), create a view in your warehouse with the logic you’re targeting and reference that view as an entity in your graph. - **Example:** ```python -data_graph { +data_graph { # Define entities # Note: Relationships are nested profile { # Define profile - + relationship "user-accounts" { ... - + relationship "user-carts" { ... - + # Define many:many relationship between carts and products relationship "products" { name = "Purchased Products" @@ -410,9 +419,11 @@ data_graph { } } } - + ``` + ## Step 4: Validate your Data Graph + You can validate your Data Graph using the preview, then click Save. After you've set up your Data Graph, your partner teams can start leveraging these datasets with with [Linked Events](/docs/unify/data-graph/linked-events/) and [Linked Audiences](/docs/engage/audiences/linked-audiences/). ## Edit and manage your Data Graph @@ -425,28 +436,33 @@ To edit your Data Graph: ### View Data Graph data consumers A data consumer refers to a Segment feature like Linked Events and Linked Audiences that are referencing datasets, such as entities and/or relationships, from the Data Graph. You can view a list of data consumers in two places: + - Under **Unify > Data Graph**, click the **Data consumers** tab - Under **Unify > Data Graph > Overview** or the **Data Graph editor > Preview**, click into a node on the Data Graph preview and a side sheet will pop up with the list of data consumers for the respective relationship ### Understand changes that may cause breaking and potential breaking changes Upon editing and saving changes to your Data Graph, a modal will pop up to warn of breaking and/or potential breaking changes to your data consumers. You must acknowledge and click **Confirm and save** in order to proceed. + - **Definite breaking change**: Occurs when deleting an entity or relationship that is being referenced by a data consumer. Data consumers affected by breaking changes will fail on the next run. Note: The entity and relationship slug are immutable and treated as a delete if you make changes. You can modify the label. - **Potential breaking change**: Some changes such as updating the entity `table_ref` or `primary_key`, may lead to errors with data consumers. If there’s a breaking change, the data consumer will fail on the next run. Unaffected data consumers will continue to work. ### Detect warehouse breaking changes -Segment has a service that regularly scans and monitors the Data Graph for changes that occur in your warehouse that may break components of the Data Graph, like when the table being referenced by the Data Graph gets deleted from your warehouse or when the primary key column no longer exists. An alert banner will be displayed on the Data Graph landing page. The banner will be removed once the issues are resolved in your warehouse and/or the Data Graph. You will also have the option to trigger a manual sync of your warehouse schema. +Segment has a service that regularly scans and monitors the Data Graph for changes that occur in your warehouse that may break components of the Data Graph, like when the table being referenced by the Data Graph gets deleted from your warehouse or when the primary key column no longer exists. An alert banner will be displayed on the Data Graph landing page. The banner will be removed once the issues are resolved in your warehouse and/or the Data Graph. You will also have the option to trigger a manual sync of your warehouse schema. ### Receive alerts for warehouse breaking changes Configure alerts for breaking changes to receive notifications over Slack, email, or in-app notification whenever Segment detects a breaking change in your warehouse. -To configure alerts for breaking changes: -1. Open your workspace and navigate to **Settings > User Preferences > Activity Notifications**. +To configure alerts for breaking changes: + +1. Open your workspace and navigate to **Settings > User Preferences > Activity Notifications**. 2. Select **Data Graph**. -3. Select one of the following notification methods: - - **Email**: Select this to receive notifications at either the email address associated with your account or another email address that you enter into this field. - - **Slack**: Select this and enter a Slack webhook URL and channel name to send alerts to a channel in your Slack workspace. - - **In-app**: Select this to receive notifications in the Segment app. To view your notifications, select the bell next to your user icon in the Segment app. +3. Select one of the following notification methods: + +- **Email**: Select this to receive notifications at either the email address associated with your account or another email address that you enter into this field. +- **Slack**: Select this and enter a Slack webhook URL and channel name to send alerts to a channel in your Slack workspace. +- **In-app**: Select this to receive notifications in the Segment app. To view your notifications, select the bell next to your user icon in the Segment app. + 4. Click **Save**. From 2cbe76a6a390f54c4b9723632ff25e27bb551dbc Mon Sep 17 00:00:00 2001 From: Logan Luque <98849774+LLuque-twilio@users.noreply.github.com> Date: Mon, 5 May 2025 10:29:25 -0700 Subject: [PATCH 10/41] PR suggestions --- src/unify/data-graph/index.md | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/unify/data-graph/index.md b/src/unify/data-graph/index.md index 173d85f71b..dba6d71ae9 100644 --- a/src/unify/data-graph/index.md +++ b/src/unify/data-graph/index.md @@ -2,8 +2,8 @@ title: Data Graph plan: unify redirect_from: - - "/unify/linked-profiles/data-graph" - - "/unify/data-graph/data-graph" + - '/unify/linked-profiles/data-graph' + - '/unify/data-graph/data-graph' --- The Data Graph acts as a semantic layer that allows businesses to define relationships between various entity datasets in the warehouse — such as accounts, subscriptions, households, and products — with the Segment Profile. It makes these relational datasets easily accessible to business teams for targeted and personalized customer engagements. @@ -178,7 +178,7 @@ The first step in creating a Data Graph is to define your entities. An entity co | Parameters | Definition | | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `entity` | An immutable slug for the entity, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (e.g `account-entity` or `account_entity`). | -| (Optional) `description` | An optional descriptor used to add additional context to the entity | +| `description` (*Optional*) | An optional descriptor used to add additional context to the entity. | | `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, etc. This name can be modified at any time. | | `table_ref` | Defines the fully qualified table reference: `[database name].[schema name].[table name]`. Segment flexibly supports tables, views and materialized views. | | `primary_key` | The unique identifier for the given table. Must be a column with unique values per row. | @@ -246,12 +246,12 @@ Now define your relationships between your entities. Similar to the concept of [ This is the first level of relationships and a unique type of relationship between the Segment profile entity and a related entity. -| Parameters | Definition | -| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | -| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, etc. This name can be modified at any time | -| (Optional) `description` | An optional descriptor used to add additional context to the relationship | -| `related_entity` | References your already defined entity | +| Parameters | Definition | +| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | +| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, etc. This name can be modified at any time | +| `description` (*Optional*) | An optional descriptor used to add additional context to the relationship. | +| `related_entity` | References your already defined entity | To define a profile-to-entity relationship, reference your entity table and depending on your table columns, choose to join on one of the following: @@ -313,13 +313,13 @@ data_graph { For 1:many relationships, define the join on between the two entity tables using the spec below. -| Parameters | Definition | -| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | -| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, and so on. This name can be modified at any time | -| (Optional) `description` | An optional descriptor used to add additional context to the relationship | -| `related_entity` | References your already defined entity | -| `join_on` | Defines relationship between the two entity tables `[lefty entity slug].[column name] = [right entity slug].[column name]`. Note that since you’re referencing the entity slug for the join on, you do not need to define the full table reference | +| Parameters | Definition | +| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | +| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, and so on. This name can be modified at any time | +| `description` (*Optional*) | An optional descriptor used to add additional context to the relationship. | +| `related_entity` | References your already defined entity | +| `join_on` | Defines relationship between the two entity tables `[lefty entity slug].[column name] = [right entity slug].[column name]`. Note that since you’re referencing the entity slug for the join on, you do not need to define the full table reference | **Example:** From 77a86c56de7ba80cca1f8a74860e68511da3987e Mon Sep 17 00:00:00 2001 From: Logan Luque <98849774+LLuque-twilio@users.noreply.github.com> Date: Mon, 5 May 2025 10:52:17 -0700 Subject: [PATCH 11/41] Update entity description --- src/unify/data-graph/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/unify/data-graph/index.md b/src/unify/data-graph/index.md index dba6d71ae9..c5e77f018a 100644 --- a/src/unify/data-graph/index.md +++ b/src/unify/data-graph/index.md @@ -178,7 +178,7 @@ The first step in creating a Data Graph is to define your entities. An entity co | Parameters | Definition | | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `entity` | An immutable slug for the entity, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (e.g `account-entity` or `account_entity`). | -| `description` (*Optional*) | An optional descriptor used to add additional context to the entity. | +| `description` (*Optional*) | An optional descriptor used to add additional context to the entity (E.g. table grain, cadence at which the table/view is refreshed, etc). | | `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, etc. This name can be modified at any time. | | `table_ref` | Defines the fully qualified table reference: `[database name].[schema name].[table name]`. Segment flexibly supports tables, views and materialized views. | | `primary_key` | The unique identifier for the given table. Must be a column with unique values per row. | From 97ef86f03dc94beb41ec944eae8c4ff8b49c4bcc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Drobnik?= Date: Tue, 6 May 2025 09:54:08 +0200 Subject: [PATCH 12/41] Update ChartMogul destination documentation --- .../destinations/catalog/actions-chartmogul/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/connections/destinations/catalog/actions-chartmogul/index.md b/src/connections/destinations/catalog/actions-chartmogul/index.md index 0c9c9a760f..40b12b2726 100644 --- a/src/connections/destinations/catalog/actions-chartmogul/index.md +++ b/src/connections/destinations/catalog/actions-chartmogul/index.md @@ -29,7 +29,7 @@ This destination is maintained by ChartMogul. For any issues with the destinatio ## Supported event calls ChartMogul (Actions) accepts two types of event calls: -- [Track](https://segment.com/docs/connections/spec/track/){:target="_blank"} — used for contact details and custom attributes -- [Group](https://segment.com/docs/connections/spec/group/){:target="_blank"} — used for customer details and custom attributes +- [Identify](https://segment.com/docs/connections/spec/identify/){:target="_blank"} — used for contact details +- [Group](https://segment.com/docs/connections/spec/group/){:target="_blank"} — used for customer details ChartMogul uses attributes from these calls to create new or update existing [custom attributes](https://help.chartmogul.com/hc/en-us/articles/206120219){:target="_blank"} for contacts or customers, or to update customers' select [standard attributes](https://help.chartmogul.com/hc/en-us/articles/5321255006364#standard-attributes){:target="_blank"}. From 9c7ebc3540c0cae0167e180027100e9156d2df7e Mon Sep 17 00:00:00 2001 From: pwseg Date: Tue, 6 May 2025 22:26:18 -0500 Subject: [PATCH 13/41] init plus overview --- src/unify/unify-event-filtering.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/unify/unify-event-filtering.md diff --git a/src/unify/unify-event-filtering.md b/src/unify/unify-event-filtering.md new file mode 100644 index 0000000000..12b1d761a8 --- /dev/null +++ b/src/unify/unify-event-filtering.md @@ -0,0 +1,17 @@ +--- +title: Unify Event Filtering +plan: unify +--- + +Unify Event Filtering lets you control which events reach your Unify space. + +## Overview + +With Unify Event Filtering, you can use block events that aren’t useful for identity resolution or downstream activation, keeping your space cleaner and more efficient. + +Event Filtering is useful when you’re sending a lot of different event types into Segment but only some of them are relevant to Unify. For example, you might want to: + +- Drop telemetry or system events that don’t describe user behavior +- Filter out events from certain regions or user groups +- Keep events in Connections, but exclude them from Unify + From 90eba2ae70df1c50d7b9ae64589cd6d5aa69be60 Mon Sep 17 00:00:00 2001 From: pwseg Date: Tue, 6 May 2025 22:29:21 -0500 Subject: [PATCH 14/41] add table explaining differences --- src/unify/unify-event-filtering.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/unify/unify-event-filtering.md b/src/unify/unify-event-filtering.md index 12b1d761a8..c1c01554a2 100644 --- a/src/unify/unify-event-filtering.md +++ b/src/unify/unify-event-filtering.md @@ -15,3 +15,12 @@ Event Filtering is useful when you’re sending a lot of different event types i - Filter out events from certain regions or user groups - Keep events in Connections, but exclude them from Unify +Unify Event Filtering works differently from Destination Filters in a few important ways: + +| | Unify Event Filtering | Destination Filters | +| ---------------- | ---------------------------------------- | --------------------------------------- | +| Where it applies | Unify space | Individual destinations | +| Filter scope | All sources connected to the space | One source for each destination | +| Filter action | Drops entire events | Can drop or modify events and fields | +| Setup | Created through API, visible in Unify UI | Created in UI or API | +| Timing | Before identity resolution | Before events get sent to a destination | From 185af949aa9f06ab193b1ea5168bb26d1a261da6 Mon Sep 17 00:00:00 2001 From: pwseg Date: Tue, 6 May 2025 22:36:55 -0500 Subject: [PATCH 15/41] Add section explaining filtering --- src/unify/unify-event-filtering.md | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/unify/unify-event-filtering.md b/src/unify/unify-event-filtering.md index c1c01554a2..1e3cebc63d 100644 --- a/src/unify/unify-event-filtering.md +++ b/src/unify/unify-event-filtering.md @@ -7,7 +7,7 @@ Unify Event Filtering lets you control which events reach your Unify space. ## Overview -With Unify Event Filtering, you can use block events that aren’t useful for identity resolution or downstream activation, keeping your space cleaner and more efficient. +With Unify Event Filtering, you can use block events that aren’t useful for [identity resolution](/docs/unify/identity-resolution/) or downstream activation, keeping your space cleaner and more efficient. Event Filtering is useful when you’re sending a lot of different event types into Segment but only some of them are relevant to Unify. For example, you might want to: @@ -15,7 +15,7 @@ Event Filtering is useful when you’re sending a lot of different event types i - Filter out events from certain regions or user groups - Keep events in Connections, but exclude them from Unify -Unify Event Filtering works differently from Destination Filters in a few important ways: +Unify Event Filtering works differently from [Destination Filters](/docs/connections/destinations/destination-filters/) in a few important ways: | | Unify Event Filtering | Destination Filters | | ---------------- | ---------------------------------------- | --------------------------------------- | @@ -24,3 +24,18 @@ Unify Event Filtering works differently from Destination Filters in a few import | Filter action | Drops entire events | Can drop or modify events and fields | | Setup | Created through API, visible in Unify UI | Created in UI or API | | Timing | Before identity resolution | Before events get sent to a destination | + +This helps simplify your setup and reduce noise in profile data without needing repeaters, webhooks, or custom logic. + +## How filtering works + +Unify Event Filtering evaluates every incoming event before it enters your Unify space. If the event matches any of your filters, it gets dropped. + +Keep the following in mind as you work with Unify Event Filtering: + +- Filters are configured at the space level. You don’t create filters per source. Instead, one set of filters applies to all sources connected to the space. +- The filtering logic is based on [Filter Query Language](/docs/api/public-api/fql/). If you’ve used Destination Filters before, it works the same way. You can write expressions to match events based on type, name, traits, properties, or values. +- Matching is inclusive: if an event matches any filter, Segment drops it. +- Filtering happens **before** identity resolution; dropped events never reach the profile graph and won’t affect trait updates or [computed traits](/docs/unify/traits/computed-traits/). + +As a result, Unify Event Filtering helps you keep profile data clean from the start, without having to preprocess or transform events outside of Segment. \ No newline at end of file From c49556000248ee3ee3a6d702e7a0f16acbda9940 Mon Sep 17 00:00:00 2001 From: pwseg Date: Tue, 6 May 2025 22:37:32 -0500 Subject: [PATCH 16/41] add rest of structure --- src/unify/unify-event-filtering.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/unify/unify-event-filtering.md b/src/unify/unify-event-filtering.md index 1e3cebc63d..df23552cfa 100644 --- a/src/unify/unify-event-filtering.md +++ b/src/unify/unify-event-filtering.md @@ -38,4 +38,8 @@ Keep the following in mind as you work with Unify Event Filtering: - Matching is inclusive: if an event matches any filter, Segment drops it. - Filtering happens **before** identity resolution; dropped events never reach the profile graph and won’t affect trait updates or [computed traits](/docs/unify/traits/computed-traits/). -As a result, Unify Event Filtering helps you keep profile data clean from the start, without having to preprocess or transform events outside of Segment. \ No newline at end of file +As a result, Unify Event Filtering helps you keep profile data clean from the start, without having to preprocess or transform events outside of Segment. + +## Creating and managing filters + +## Best practices \ No newline at end of file From ddfcc4ae433d10a1afba8c9c660538f5cfe69469 Mon Sep 17 00:00:00 2001 From: pwseg Date: Tue, 6 May 2025 23:05:10 -0500 Subject: [PATCH 17/41] add comparison table --- src/unify/unify-event-filtering.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/unify/unify-event-filtering.md b/src/unify/unify-event-filtering.md index df23552cfa..d1c8d7f92f 100644 --- a/src/unify/unify-event-filtering.md +++ b/src/unify/unify-event-filtering.md @@ -42,4 +42,25 @@ As a result, Unify Event Filtering helps you keep profile data clean from the st ## Creating and managing filters +During public beta, managing filters requires a mix of API and Segment UI actions. You'll define and create filters using the Space Filter API, then manage their status and visibility in the Segment app. + +To create a filter, use the Space Filter API to write a filtering rule using FQL. The API lets you name the filter, enable or disable it, and delete it. You can create up to 10 filters per space, and any event that matches a filter gets dropped before it reaches Unify. + +After you create a filter, it shows up in your Segment workspace in **Unify > Unify settings > Filters**. From there, you can view existing filters, turn them on or off, rename them, or delete them. However, you can’t edit the filtering logic from within Segment. If you want to edit filtering logic, you'll need to managed it through the API. + +The following table compares what you can do with Event Filtering with the API compared your Segment workspace: + +| Action | Where it happens | +| ------------------------- | ------------------- | +| Create a filter | API only | +| Define filter logic (FQL) | API only | +| Enable or disable filters | API or workspace | +| Rename a filter | API or workspace | +| Delete a filter | API or workspace | +| View filters | Workspace only | +| Edit filter logic | Replace in API only | + +> info "Updating filter logic" +> To update a filter’s logic, you’ll need to delete the existing filter through the Space Filter API and create a new one with the updated expression. + ## Best practices \ No newline at end of file From c6fd8443092f1125357a1d112580d9adf5e32b5a Mon Sep 17 00:00:00 2001 From: pwseg Date: Tue, 6 May 2025 23:09:36 -0500 Subject: [PATCH 18/41] let's wrap it up --- src/unify/unify-event-filtering.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/unify/unify-event-filtering.md b/src/unify/unify-event-filtering.md index d1c8d7f92f..376037a275 100644 --- a/src/unify/unify-event-filtering.md +++ b/src/unify/unify-event-filtering.md @@ -63,4 +63,19 @@ The following table compares what you can do with Event Filtering with the API c > info "Updating filter logic" > To update a filter’s logic, you’ll need to delete the existing filter through the Space Filter API and create a new one with the updated expression. -## Best practices \ No newline at end of file +## Best practices + +Unify Event Filtering is most useful when you want to keep noisy, irrelevant, or duplicate data out of your Unify space. The following table lists best practices to help you get the most value out of filtering: + +| Tip | Why it matters | +| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Filter early | Keeps profiles clean and reduces unnecessary MTU usage. | +| Drop obvious noise | Start with telemetry, test data, or internal events. | +| Keep it simple | A few targeted filters are easier to manage than multiple, complex filters. | +| Think at the space level | Filters apply to all sources. Write conditions accordingly. | +| Test before enabling | Use the [preview endpoint](https://docs.segmentapis.com/tag/Destination-Filters#operation/previewDestinationFilter) to check filter behavior before turning it on. | + + +Unify Event Filtering gives you an early control point for managing the quality of data entering your space. It helps reduce noise, control costs, and improve the accuracy of profile data before any identity resolution takes place. + +To learn more about how Unify spaces work and how Segment processes events after filtering, see the [Unify documentation](/docs/unify/). \ No newline at end of file From 0c464153a5302090dd7045a63d723ee938f7e28f Mon Sep 17 00:00:00 2001 From: pwseg Date: Tue, 6 May 2025 23:12:01 -0500 Subject: [PATCH 19/41] more links --- src/unify/unify-event-filtering.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/unify/unify-event-filtering.md b/src/unify/unify-event-filtering.md index 376037a275..dd1ea15062 100644 --- a/src/unify/unify-event-filtering.md +++ b/src/unify/unify-event-filtering.md @@ -17,13 +17,13 @@ Event Filtering is useful when you’re sending a lot of different event types i Unify Event Filtering works differently from [Destination Filters](/docs/connections/destinations/destination-filters/) in a few important ways: -| | Unify Event Filtering | Destination Filters | -| ---------------- | ---------------------------------------- | --------------------------------------- | -| Where it applies | Unify space | Individual destinations | -| Filter scope | All sources connected to the space | One source for each destination | -| Filter action | Drops entire events | Can drop or modify events and fields | -| Setup | Created through API, visible in Unify UI | Created in UI or API | -| Timing | Before identity resolution | Before events get sent to a destination | +| | Unify Event Filtering | Destination Filters | +| ---------------- | ---------------------------------------------------------------- | --------------------------------------- | +| Where it applies | Unify space | Individual destinations | +| Filter scope | All [sources](/docs/connections/sources/) connected to the space | One source for each destination | +| Filter action | Drops entire events | Can drop or modify events and fields | +| Setup | Created through API, visible in Unify UI | Created in UI or API | +| Timing | Before identity resolution | Before events get sent to a destination | This helps simplify your setup and reduce noise in profile data without needing repeaters, webhooks, or custom logic. @@ -42,7 +42,7 @@ As a result, Unify Event Filtering helps you keep profile data clean from the st ## Creating and managing filters -During public beta, managing filters requires a mix of API and Segment UI actions. You'll define and create filters using the Space Filter API, then manage their status and visibility in the Segment app. +During public beta, managing filters requires a mix of API and Segment UI actions. You'll define and create filters using the [Space Filter API](https://docs.segmentapis.com/tag/Space-Filters/){:target="_blank"}, then manage their status and visibility in the Segment app. To create a filter, use the Space Filter API to write a filtering rule using FQL. The API lets you name the filter, enable or disable it, and delete it. You can create up to 10 filters per space, and any event that matches a filter gets dropped before it reaches Unify. @@ -73,7 +73,7 @@ Unify Event Filtering is most useful when you want to keep noisy, irrelevant, or | Drop obvious noise | Start with telemetry, test data, or internal events. | | Keep it simple | A few targeted filters are easier to manage than multiple, complex filters. | | Think at the space level | Filters apply to all sources. Write conditions accordingly. | -| Test before enabling | Use the [preview endpoint](https://docs.segmentapis.com/tag/Destination-Filters#operation/previewDestinationFilter) to check filter behavior before turning it on. | +| Test before enabling | Use the [preview endpoint](https://docs.segmentapis.com/tag/Destination-Filters#operation/previewDestinationFilter){:target="_blank"} to check filter behavior before turning it on. | Unify Event Filtering gives you an early control point for managing the quality of data entering your space. It helps reduce noise, control costs, and improve the accuracy of profile data before any identity resolution takes place. From 5f22905146b18aabd5c09c988b41b0dabf615b58 Mon Sep 17 00:00:00 2001 From: pwseg Date: Tue, 6 May 2025 23:13:15 -0500 Subject: [PATCH 20/41] add beta callout [netlify-build] --- src/unify/unify-event-filtering.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/unify/unify-event-filtering.md b/src/unify/unify-event-filtering.md index dd1ea15062..8383f66773 100644 --- a/src/unify/unify-event-filtering.md +++ b/src/unify/unify-event-filtering.md @@ -5,6 +5,9 @@ plan: unify Unify Event Filtering lets you control which events reach your Unify space. +> info "Public Beta" +> Unify Event Filtering is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. + ## Overview With Unify Event Filtering, you can use block events that aren’t useful for [identity resolution](/docs/unify/identity-resolution/) or downstream activation, keeping your space cleaner and more efficient. From 1fb767e03d1669494d0fd84304f7bdc71781a34c Mon Sep 17 00:00:00 2001 From: pwseg Date: Tue, 6 May 2025 23:35:38 -0500 Subject: [PATCH 21/41] rename file --- src/unify/{unify-event-filtering.md => event-filtering.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/unify/{unify-event-filtering.md => event-filtering.md} (100%) diff --git a/src/unify/unify-event-filtering.md b/src/unify/event-filtering.md similarity index 100% rename from src/unify/unify-event-filtering.md rename to src/unify/event-filtering.md From aa150074732e8ddfc00577abe347fef81c93a207 Mon Sep 17 00:00:00 2001 From: pwseg Date: Tue, 6 May 2025 23:36:47 -0500 Subject: [PATCH 22/41] capitalize Identity Resolution [netlify-build] --- src/unify/unify-event-filtering.md | 84 ++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/unify/unify-event-filtering.md diff --git a/src/unify/unify-event-filtering.md b/src/unify/unify-event-filtering.md new file mode 100644 index 0000000000..681bd41d98 --- /dev/null +++ b/src/unify/unify-event-filtering.md @@ -0,0 +1,84 @@ +--- +title: Unify Event Filtering +plan: unify +--- + +Unify Event Filtering lets you control which events reach your Unify space. + +> info "Public Beta" +> Unify Event Filtering is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. + +## Overview + +With Unify Event Filtering, you can use block events that aren’t useful for [Identity Resolution](/docs/unify/identity-resolution/) or downstream activation, keeping your space cleaner and more efficient. + +Event Filtering is useful when you’re sending a lot of different event types into Segment but only some of them are relevant to Unify. For example, you might want to: + +- Drop telemetry or system events that don’t describe user behavior +- Filter out events from certain regions or user groups +- Keep events in Connections, but exclude them from Unify + +Unify Event Filtering works differently from [Destination Filters](/docs/connections/destinations/destination-filters/) in a few important ways: + +| | Unify Event Filtering | Destination Filters | +| ---------------- | ---------------------------------------------------------------- | --------------------------------------- | +| Where it applies | Unify space | Individual destinations | +| Filter scope | All [sources](/docs/connections/sources/) connected to the space | One source for each destination | +| Filter action | Drops entire events | Can drop or modify events and fields | +| Setup | Created through API, visible in Unify UI | Created in UI or API | +| Timing | Before Identity Resolution | Before events get sent to a destination | + +This helps simplify your setup and reduce noise in profile data without needing repeaters, webhooks, or custom logic. + +## How filtering works + +Unify Event Filtering evaluates every incoming event before it enters your Unify space. If the event matches any of your filters, it gets dropped. + +Keep the following in mind as you work with Unify Event Filtering: + +- Filters are configured at the space level. You don’t create filters per source. Instead, one set of filters applies to all sources connected to the space. +- The filtering logic is based on [Filter Query Language](/docs/api/public-api/fql/). If you’ve used Destination Filters before, it works the same way. You can write expressions to match events based on type, name, traits, properties, or values. +- Matching is inclusive: if an event matches any filter, Segment drops it. +- Filtering happens **before** Identity Resolution; dropped events never reach the profile graph and won’t affect trait updates or [computed traits](/docs/unify/traits/computed-traits/). + +As a result, Unify Event Filtering helps you keep profile data clean from the start, without having to preprocess or transform events outside of Segment. + +## Creating and managing filters + +During public beta, managing filters requires a mix of API and Segment UI actions. You'll define and create filters using the [Space Filter API](https://docs.segmentapis.com/tag/Space-Filters/){:target="_blank"}, then manage their status and visibility in the Segment app. + +To create a filter, use the Space Filter API to write a filtering rule using FQL. The API lets you name the filter, enable or disable it, and delete it. You can create up to 10 filters per space, and any event that matches a filter gets dropped before it reaches Unify. + +After you create a filter, it shows up in your Segment workspace in **Unify > Unify settings > Filters**. From there, you can view existing filters, turn them on or off, rename them, or delete them. However, you can’t edit the filtering logic from within Segment. If you want to edit filtering logic, you'll need to managed it through the API. + +The following table compares what you can do with Event Filtering with the API compared your Segment workspace: + +| Action | Where it happens | +| ------------------------- | ------------------- | +| Create a filter | API only | +| Define filter logic (FQL) | API only | +| Enable or disable filters | API or workspace | +| Rename a filter | API or workspace | +| Delete a filter | API or workspace | +| View filters | Workspace only | +| Edit filter logic | Replace in API only | + +> info "Updating filter logic" +> To update a filter’s logic, you’ll need to delete the existing filter through the Space Filter API and create a new one with the updated expression. + +## Best practices + +Unify Event Filtering is most useful when you want to keep noisy, irrelevant, or duplicate data out of your Unify space. The following table lists best practices to help you get the most value out of filtering: + +| Tip | Why it matters | +| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Filter early | Keeps profiles clean and reduces unnecessary MTU usage. | +| Drop obvious noise | Start with telemetry, test data, or internal events. | +| Keep it simple | A few targeted filters are easier to manage than multiple, complex filters. | +| Think at the space level | Filters apply to all sources. Write conditions accordingly. | +| Test before enabling | Use the [preview endpoint](https://docs.segmentapis.com/tag/Destination-Filters#operation/previewDestinationFilter){:target="_blank"} to check filter behavior before turning it on. | + + +Unify Event Filtering gives you an early control point for managing the quality of data entering your space. It helps reduce noise, control costs, and improve the accuracy of profile data before any Identity Resolution takes place. + +To learn more about how Unify spaces work and how Segment processes events after filtering, see the [Unify documentation](/docs/unify/). \ No newline at end of file From e7caa79c4bf6776e025a41ccbdef06ad36268647 Mon Sep 17 00:00:00 2001 From: pwseg Date: Tue, 6 May 2025 23:52:00 -0500 Subject: [PATCH 23/41] delete wrong file [netlify-build] --- src/unify/event-filtering.md | 8 +-- src/unify/unify-event-filtering.md | 84 ------------------------------ 2 files changed, 4 insertions(+), 88 deletions(-) delete mode 100644 src/unify/unify-event-filtering.md diff --git a/src/unify/event-filtering.md b/src/unify/event-filtering.md index 8383f66773..681bd41d98 100644 --- a/src/unify/event-filtering.md +++ b/src/unify/event-filtering.md @@ -10,7 +10,7 @@ Unify Event Filtering lets you control which events reach your Unify space. ## Overview -With Unify Event Filtering, you can use block events that aren’t useful for [identity resolution](/docs/unify/identity-resolution/) or downstream activation, keeping your space cleaner and more efficient. +With Unify Event Filtering, you can use block events that aren’t useful for [Identity Resolution](/docs/unify/identity-resolution/) or downstream activation, keeping your space cleaner and more efficient. Event Filtering is useful when you’re sending a lot of different event types into Segment but only some of them are relevant to Unify. For example, you might want to: @@ -26,7 +26,7 @@ Unify Event Filtering works differently from [Destination Filters](/docs/connect | Filter scope | All [sources](/docs/connections/sources/) connected to the space | One source for each destination | | Filter action | Drops entire events | Can drop or modify events and fields | | Setup | Created through API, visible in Unify UI | Created in UI or API | -| Timing | Before identity resolution | Before events get sent to a destination | +| Timing | Before Identity Resolution | Before events get sent to a destination | This helps simplify your setup and reduce noise in profile data without needing repeaters, webhooks, or custom logic. @@ -39,7 +39,7 @@ Keep the following in mind as you work with Unify Event Filtering: - Filters are configured at the space level. You don’t create filters per source. Instead, one set of filters applies to all sources connected to the space. - The filtering logic is based on [Filter Query Language](/docs/api/public-api/fql/). If you’ve used Destination Filters before, it works the same way. You can write expressions to match events based on type, name, traits, properties, or values. - Matching is inclusive: if an event matches any filter, Segment drops it. -- Filtering happens **before** identity resolution; dropped events never reach the profile graph and won’t affect trait updates or [computed traits](/docs/unify/traits/computed-traits/). +- Filtering happens **before** Identity Resolution; dropped events never reach the profile graph and won’t affect trait updates or [computed traits](/docs/unify/traits/computed-traits/). As a result, Unify Event Filtering helps you keep profile data clean from the start, without having to preprocess or transform events outside of Segment. @@ -79,6 +79,6 @@ Unify Event Filtering is most useful when you want to keep noisy, irrelevant, or | Test before enabling | Use the [preview endpoint](https://docs.segmentapis.com/tag/Destination-Filters#operation/previewDestinationFilter){:target="_blank"} to check filter behavior before turning it on. | -Unify Event Filtering gives you an early control point for managing the quality of data entering your space. It helps reduce noise, control costs, and improve the accuracy of profile data before any identity resolution takes place. +Unify Event Filtering gives you an early control point for managing the quality of data entering your space. It helps reduce noise, control costs, and improve the accuracy of profile data before any Identity Resolution takes place. To learn more about how Unify spaces work and how Segment processes events after filtering, see the [Unify documentation](/docs/unify/). \ No newline at end of file diff --git a/src/unify/unify-event-filtering.md b/src/unify/unify-event-filtering.md deleted file mode 100644 index 681bd41d98..0000000000 --- a/src/unify/unify-event-filtering.md +++ /dev/null @@ -1,84 +0,0 @@ ---- -title: Unify Event Filtering -plan: unify ---- - -Unify Event Filtering lets you control which events reach your Unify space. - -> info "Public Beta" -> Unify Event Filtering is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. - -## Overview - -With Unify Event Filtering, you can use block events that aren’t useful for [Identity Resolution](/docs/unify/identity-resolution/) or downstream activation, keeping your space cleaner and more efficient. - -Event Filtering is useful when you’re sending a lot of different event types into Segment but only some of them are relevant to Unify. For example, you might want to: - -- Drop telemetry or system events that don’t describe user behavior -- Filter out events from certain regions or user groups -- Keep events in Connections, but exclude them from Unify - -Unify Event Filtering works differently from [Destination Filters](/docs/connections/destinations/destination-filters/) in a few important ways: - -| | Unify Event Filtering | Destination Filters | -| ---------------- | ---------------------------------------------------------------- | --------------------------------------- | -| Where it applies | Unify space | Individual destinations | -| Filter scope | All [sources](/docs/connections/sources/) connected to the space | One source for each destination | -| Filter action | Drops entire events | Can drop or modify events and fields | -| Setup | Created through API, visible in Unify UI | Created in UI or API | -| Timing | Before Identity Resolution | Before events get sent to a destination | - -This helps simplify your setup and reduce noise in profile data without needing repeaters, webhooks, or custom logic. - -## How filtering works - -Unify Event Filtering evaluates every incoming event before it enters your Unify space. If the event matches any of your filters, it gets dropped. - -Keep the following in mind as you work with Unify Event Filtering: - -- Filters are configured at the space level. You don’t create filters per source. Instead, one set of filters applies to all sources connected to the space. -- The filtering logic is based on [Filter Query Language](/docs/api/public-api/fql/). If you’ve used Destination Filters before, it works the same way. You can write expressions to match events based on type, name, traits, properties, or values. -- Matching is inclusive: if an event matches any filter, Segment drops it. -- Filtering happens **before** Identity Resolution; dropped events never reach the profile graph and won’t affect trait updates or [computed traits](/docs/unify/traits/computed-traits/). - -As a result, Unify Event Filtering helps you keep profile data clean from the start, without having to preprocess or transform events outside of Segment. - -## Creating and managing filters - -During public beta, managing filters requires a mix of API and Segment UI actions. You'll define and create filters using the [Space Filter API](https://docs.segmentapis.com/tag/Space-Filters/){:target="_blank"}, then manage their status and visibility in the Segment app. - -To create a filter, use the Space Filter API to write a filtering rule using FQL. The API lets you name the filter, enable or disable it, and delete it. You can create up to 10 filters per space, and any event that matches a filter gets dropped before it reaches Unify. - -After you create a filter, it shows up in your Segment workspace in **Unify > Unify settings > Filters**. From there, you can view existing filters, turn them on or off, rename them, or delete them. However, you can’t edit the filtering logic from within Segment. If you want to edit filtering logic, you'll need to managed it through the API. - -The following table compares what you can do with Event Filtering with the API compared your Segment workspace: - -| Action | Where it happens | -| ------------------------- | ------------------- | -| Create a filter | API only | -| Define filter logic (FQL) | API only | -| Enable or disable filters | API or workspace | -| Rename a filter | API or workspace | -| Delete a filter | API or workspace | -| View filters | Workspace only | -| Edit filter logic | Replace in API only | - -> info "Updating filter logic" -> To update a filter’s logic, you’ll need to delete the existing filter through the Space Filter API and create a new one with the updated expression. - -## Best practices - -Unify Event Filtering is most useful when you want to keep noisy, irrelevant, or duplicate data out of your Unify space. The following table lists best practices to help you get the most value out of filtering: - -| Tip | Why it matters | -| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Filter early | Keeps profiles clean and reduces unnecessary MTU usage. | -| Drop obvious noise | Start with telemetry, test data, or internal events. | -| Keep it simple | A few targeted filters are easier to manage than multiple, complex filters. | -| Think at the space level | Filters apply to all sources. Write conditions accordingly. | -| Test before enabling | Use the [preview endpoint](https://docs.segmentapis.com/tag/Destination-Filters#operation/previewDestinationFilter){:target="_blank"} to check filter behavior before turning it on. | - - -Unify Event Filtering gives you an early control point for managing the quality of data entering your space. It helps reduce noise, control costs, and improve the accuracy of profile data before any Identity Resolution takes place. - -To learn more about how Unify spaces work and how Segment processes events after filtering, see the [Unify documentation](/docs/unify/). \ No newline at end of file From f9517c7c8cd020298873d53beb12e67580797a09 Mon Sep 17 00:00:00 2001 From: stayseesong <83784848+stayseesong@users.noreply.github.com> Date: Wed, 7 May 2025 13:02:39 -0700 Subject: [PATCH 24/41] Apply suggestions from code review --- src/unify/data-graph/index.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/unify/data-graph/index.md b/src/unify/data-graph/index.md index c5e77f018a..21e83c2a7c 100644 --- a/src/unify/data-graph/index.md +++ b/src/unify/data-graph/index.md @@ -177,9 +177,9 @@ The first step in creating a Data Graph is to define your entities. An entity co | Parameters | Definition | | ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `entity` | An immutable slug for the entity, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (e.g `account-entity` or `account_entity`). | -| `description` (*Optional*) | An optional descriptor used to add additional context to the entity (E.g. table grain, cadence at which the table/view is refreshed, etc). | -| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, etc. This name can be modified at any time. | +| `entity` | An immutable slug for the entity, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (for example, `account-entity` or `account_entity`). | +| `description` (*Optional*) | An optional descriptor used to add additional context to the entity (for example, table grain, cadence at which the table/view is refreshed). | +| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences. This name can be modified at any time. | | `table_ref` | Defines the fully qualified table reference: `[database name].[schema name].[table name]`. Segment flexibly supports tables, views and materialized views. | | `primary_key` | The unique identifier for the given table. Must be a column with unique values per row. | | (If applicable) `enrichment_enabled = true` | Add this if you plan to reference the entity table for [Linked Events](/docs/unify/data-graph/linked-events/) use cases. | @@ -248,10 +248,10 @@ This is the first level of relationships and a unique type of relationship betwe | Parameters | Definition | | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | -| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, etc. This name can be modified at any time | +| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`). | +| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences. This name can be modified at any time. | | `description` (*Optional*) | An optional descriptor used to add additional context to the relationship. | -| `related_entity` | References your already defined entity | +| `related_entity` | This references the already defined entity. | To define a profile-to-entity relationship, reference your entity table and depending on your table columns, choose to join on one of the following: @@ -315,11 +315,11 @@ For 1:many relationships, define the join on between the two entity tables using | Parameters | Definition | | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | +| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`). | | `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, and so on. This name can be modified at any time | | `description` (*Optional*) | An optional descriptor used to add additional context to the relationship. | | `related_entity` | References your already defined entity | -| `join_on` | Defines relationship between the two entity tables `[lefty entity slug].[column name] = [right entity slug].[column name]`. Note that since you’re referencing the entity slug for the join on, you do not need to define the full table reference | +| `join_on` | Defines relationship between the two entity tables `[lefty entity slug].[column name] = [right entity slug].[column name]`. Note that since you’re referencing the entity slug for the join on, you do not need to define the full table reference. | **Example:** @@ -362,10 +362,10 @@ For many:many relationships, define the join on between the two entity tables wi | Parameters | Definition | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`) | -| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, and so on. This name can be modified at any time | -| (Optional) `description` | An optional descriptor used to add additional context to the relationship | -| `related_entity` | References your already defined entity | +| `relationship` | An immutable slug for the relationship, and will be treated as a delete if you make changes. The slug must be in all lowercase, and supports dashes or underscores (like `user-account` or `user_account`). | +| `name` | A label displayed throughout your Segment space for Linked Events, Linked Audiences, and so on. This name can be modified at any time. | +| (Optional) `description` | An optional descriptor used to add additional context to the relationship. | +| `related_entity` | This references your defined entity. | **Junction table spec** From b944e80256325cbe53b18fa8707d1706edb61e6c Mon Sep 17 00:00:00 2001 From: stayseesong <83784848+stayseesong@users.noreply.github.com> Date: Wed, 7 May 2025 13:07:03 -0700 Subject: [PATCH 25/41] Update src/unify/data-graph/index.md --- src/unify/data-graph/index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/unify/data-graph/index.md b/src/unify/data-graph/index.md index 21e83c2a7c..2b2b25d906 100644 --- a/src/unify/data-graph/index.md +++ b/src/unify/data-graph/index.md @@ -371,10 +371,10 @@ For many:many relationships, define the join on between the two entity tables wi | Parameters | Definition | | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `table_ref` | Defines the fully qualified table reference to the join table: `[database name].[schema name].[table name]`. Segment flexibly supports tables, views and materialized views | -| `primary_key` | The unique identifier for the given table. Must be a column with unique values per row | -| `left_join_on` | Define the relationship between the left entity table and the junction table: `[left entity slug].[column name] = [junction table column name]`. Note that schema and table are implied within the junction table column name, so you do not need to define it again | -| `right_join_on` | Define the relationship between the junction table and the right entity table: `[junction table column name] = [right entity slug].[column name]`. Note that schema and table are implied within the junction table column name, so you do not need to define it again | +| `table_ref` | Defines the fully qualified table reference to the join table: `[database name].[schema name].[table name]`. Segment flexibly supports tables, views and materialized views. | +| `primary_key` | The unique identifier for the given table. Must be a column with unique values per row. | +| `left_join_on` | Defines the relationship between the left entity table and the junction table: `[left entity slug].[column name] = [junction table column name]`. Note that schema and table are implied within the junction table column name, so you do not need to define it again. | +| `right_join_on` | Define the relationship between the junction table and the right entity table: `[junction table column name] = [right entity slug].[column name]`. Note that schema and table are implied within the junction table column name, so you do not need to define it again. | When you define a many-to-many relationship using a junction table, `left_join_on` and `right_join_on` tell Data Graph how to connect each entity to the junction table: From e7a026c275788a495a97fbd0ecbbacc61b607e37 Mon Sep 17 00:00:00 2001 From: stayseesong Date: Wed, 7 May 2025 16:46:04 -0700 Subject: [PATCH 26/41] unhide linked audiences braze and iterable --- src/_data/sidenav/main.yml | 4 ++++ src/engage/audiences/linked-audiences-braze.md | 5 ++--- src/engage/audiences/linked-audiences-iterable.md | 3 +-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/_data/sidenav/main.yml b/src/_data/sidenav/main.yml index 0e442607d6..2c75846dec 100644 --- a/src/_data/sidenav/main.yml +++ b/src/_data/sidenav/main.yml @@ -448,6 +448,10 @@ sections: title: Linked Audiences Overview - path: '/engage/audiences/linked-audiences-limits' title: Linked Audiences Limits + - path: '/engage/audiences/linked-audiences-braze' + title: Linked Audiences with Braze + - path : '/engage/audiences/linked-audiences-iterable' + title: Linked Audiences with Iterable - path: '/engage/audiences/account-audiences' title: Account-level Audiences - path: '/engage/audiences/generative-audiences' diff --git a/src/engage/audiences/linked-audiences-braze.md b/src/engage/audiences/linked-audiences-braze.md index a75dc0718c..ef5e5dfab9 100644 --- a/src/engage/audiences/linked-audiences-braze.md +++ b/src/engage/audiences/linked-audiences-braze.md @@ -2,17 +2,16 @@ title: Using Linked Audiences with Braze plan: engage-foundations beta: true -hidden: true +hidden: false --- Linked Audiences allows you [dynamically personalize email messages](https://www.braze.com/docs/user_guide/personalization_and_dynamic_content/liquid){:target="_blank"} in Braze using the predefined traits of any Linked Audience profile and the attributes of any entities used to match the profile into the audience. -The following topic is intended for a Technical Marketer and Data Engineer to complete together while setting up their Linked Audience. ## Supported Braze Engagement Tools -The following engagement tools are available for use with Linked Audiences in Segment: +The following engagement tool is available for use with Linked Audiences in Segment: | Type | Description | | ------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------- | diff --git a/src/engage/audiences/linked-audiences-iterable.md b/src/engage/audiences/linked-audiences-iterable.md index e6070e8faf..8869cdc7de 100644 --- a/src/engage/audiences/linked-audiences-iterable.md +++ b/src/engage/audiences/linked-audiences-iterable.md @@ -2,12 +2,11 @@ title: Using Linked Audiences with Iterable plan: engage-foundations beta: true -hidden: true +hidden: false --- Linked Audiences allows you to [dynamically personalize email messages](https://support.iterable.com/hc/en-us/articles/205480365-Personalizing-Templates-with-Handlebars){:target="_blank"} in Iterable using the predefined traits of any Linked Audience profile and the attributes of any entities used to match the profile into the audience. -The following topic is intended for a Technical Marketer and Data Engineer to complete together while setting up their Linked Audience. ## Supported Iterable Engagement Tools From 4f0cd36175814a757cacd3131f0a458079589007 Mon Sep 17 00:00:00 2001 From: pwseg Date: Thu, 8 May 2025 00:07:44 -0500 Subject: [PATCH 27/41] updates after PM feedback [netlify-build] --- src/unify/event-filtering.md | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/unify/event-filtering.md b/src/unify/event-filtering.md index 681bd41d98..62bb6043a2 100644 --- a/src/unify/event-filtering.md +++ b/src/unify/event-filtering.md @@ -45,11 +45,9 @@ As a result, Unify Event Filtering helps you keep profile data clean from the st ## Creating and managing filters -During public beta, managing filters requires a mix of API and Segment UI actions. You'll define and create filters using the [Space Filter API](https://docs.segmentapis.com/tag/Space-Filters/){:target="_blank"}, then manage their status and visibility in the Segment app. +During public beta, you'll use the [Space Filter API](https://docs.segmentapis.com/tag/Space-Filters/){:target="_blank"} to create and manage all Unify event filters. The API lets you define filters using FQL, name them, enable or disable them, and delete them. Each Unify space can have up to 10 filters. Any event that matches one of those filters gets dropped before it reaches Unify. -To create a filter, use the Space Filter API to write a filtering rule using FQL. The API lets you name the filter, enable or disable it, and delete it. You can create up to 10 filters per space, and any event that matches a filter gets dropped before it reaches Unify. - -After you create a filter, it shows up in your Segment workspace in **Unify > Unify settings > Filters**. From there, you can view existing filters, turn them on or off, rename them, or delete them. However, you can’t edit the filtering logic from within Segment. If you want to edit filtering logic, you'll need to managed it through the API. +After you create a filter through the API, it shows up in your Segment workspace in **Unify > Unify settings > Filters**. From there, you can view existing filters, turn them on or off, rename them, or delete them. However, you can’t edit the filtering logic from within your workspace. If you want to edit filtering logic, you'll need to managed it through the API. The following table compares what you can do with Event Filtering with the API compared your Segment workspace: @@ -60,7 +58,7 @@ The following table compares what you can do with Event Filtering with the API c | Enable or disable filters | API or workspace | | Rename a filter | API or workspace | | Delete a filter | API or workspace | -| View filters | Workspace only | +| View filters | API or workspace | | Edit filter logic | Replace in API only | > info "Updating filter logic" @@ -70,12 +68,12 @@ The following table compares what you can do with Event Filtering with the API c Unify Event Filtering is most useful when you want to keep noisy, irrelevant, or duplicate data out of your Unify space. The following table lists best practices to help you get the most value out of filtering: -| Tip | Why it matters | -| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| Filter early | Keeps profiles clean and reduces unnecessary MTU usage. | -| Drop obvious noise | Start with telemetry, test data, or internal events. | -| Keep it simple | A few targeted filters are easier to manage than multiple, complex filters. | -| Think at the space level | Filters apply to all sources. Write conditions accordingly. | +| Tip | Why it matters | +| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| Filter early | Prevents irrelevant events from affecting profile data or identity resolution. | +| Drop obvious noise | Start with telemetry, test data, or internal events. | +| Keep it simple | A few targeted filters are easier to manage than multiple, complex filters. | +| Think at the space level | Filters apply to all sources. Write conditions accordingly. | | Test before enabling | Use the [preview endpoint](https://docs.segmentapis.com/tag/Destination-Filters#operation/previewDestinationFilter){:target="_blank"} to check filter behavior before turning it on. | From b17e17efd4b3cc23a7edeb6df6b552146598018e Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 8 May 2025 13:01:15 +0100 Subject: [PATCH 28/41] Tweaked formatting Letter cases + punctuation --- .../catalog/cloud-apps/qualtrics/index.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/connections/sources/catalog/cloud-apps/qualtrics/index.md b/src/connections/sources/catalog/cloud-apps/qualtrics/index.md index 69938aa5ad..1d1979b6ea 100644 --- a/src/connections/sources/catalog/cloud-apps/qualtrics/index.md +++ b/src/connections/sources/catalog/cloud-apps/qualtrics/index.md @@ -8,24 +8,24 @@ This is an [Event Cloud Source](/docs/sources/#event-cloud-sources) which can no Qualtrics maintains this source. For any issues with the source, [contact the Qualtrics Support team](mailto:support@qualtrics.com). -> info "Beta Source" -> The Qualtrics Source is in beta, which means that they are still actively developing the source. This doc was last updated on February 15, 2023. If you are interested in joining their beta program or have any feedback to help improve the Qualtrics Source and its documentation, [let the Qualtrics team know](mailto:support@qualtrics.com)!_ +> info "Beta source" +> The Qualtrics Source is in beta, which means that they are still actively developing the source. This doc was last updated on February 15, 2023. If you are interested in joining their beta program or have any feedback to help improve the Qualtrics source and its documentation, [let the Qualtrics team know](mailto:support@qualtrics.com). ## Getting started 1. From your workspace's [Sources catalog page](https://app.segment.com/goto-my-workspace/sources/catalog){:target="_blank”} click **Add Source**. 2. Search for "Qualtrics" in the Sources Catalog, select Qualtrics, and click **Add Source**. -3. On the next screen, give the Source a nickname configure any other settings. +3. On the next screen, give the source a nickname configure any other settings. - The nickname is used as a label in the Segment app, and Segment creates a related schema name in your warehouse. The nickname can be anything, but Segment recommends using something that reflects the source itself and distinguishes amongst your environments (for example, SourceName_Prod, SourceName_Staging, or SourceName_Dev). 4. Click **Add Source** to save your settings. -5. Log in to your Qualtrics Account. Navigate to workflows, select a workflow to send Segment events from, and add a new Segment task. +5. Log in to your Qualtrics Account. Navigate to Workflows, select a workflow to send Segment events from, and add a new Segment task. 6. From within the Segment task, after connecting with your Segment workspace API token, select your Qualtrics source and continue to set up the task with the event, data mapping, and more. - Your workspace token will need Source Admin permissions, at a minimum. 7. For more information on the Qualtrics Segment task, view the [Qualtrics support page](https://www.qualtrics.com/support/integrations/twilio-segment/twilio-segment-task/){:target="_blank"}. ## Stream -Qualtrics uses Segment's stream Source component to send Segment event data. It uses a server-side (select from `track` and `identify`) method(s) to send data to Segment. These events are then available in any destination that accepts server-side events and are available in a schema in your data warehouse, so you can query using SQL. +Qualtrics uses Segment's stream source component to send Segment event data. It uses a server-side (select from `track` and `identify`) method(s) to send data to Segment. These events are then available in any destination that accepts server-side events and are available in a schema in your data warehouse, so you can query using SQL. Qualtrics allows you to configure the userId from various sources from within the Qualtrics platform, for example, data from a survey response or a XM Directory contact's external data reference. The anonymous ID can also be configured from within Qualtrics task setup. @@ -33,18 +33,18 @@ Qualtrics allows you to configure the userId from various sources from within th Use the Qualtrics integration to define the event to be sent to Segment from within the task. This can be customized for a particular use case such as 'Onboarding Survey Completed' which could be the event based on a response to a particular survey. Another example may be 'Contact Updated' based on XM Directory change. These events can be tailored to align with your existing process or particular use case. -## Event Properties +## Event properties The Qualtrics integration allows you to define event properties within the following constraints: - Use `Track` events to define the `properties` object - Use `Identify` events to define the `traits` object -## Adding Destinations +## Adding destinations -Now that your Source is set up, you can connect it with Destinations. +Now that your source is set up, you can connect it with destinations. -Log into your downstream tools and verify that events and properties appear the way you expect. If events and properties don’t appear as you expect them to, check the [Event Delivery](/docs/connections/event-delivery/) tool, and refer to the Destination docs for each tool for troubleshooting. +Log into your downstream tools and verify that events and properties appear the way you expect. If events and properties don’t appear as you expect them to, check the [Event Delivery](/docs/connections/event-delivery/) tool, and refer to the destination docs for each tool for troubleshooting. If there are any issues with how the events are arriving to Segment, [contact the Qualtrics support team](mailto:support@Qualtrics.com). From 67ab254b7d781466da47ed78aba1089225cb2e78 Mon Sep 17 00:00:00 2001 From: Sharon Adewusi Date: Thu, 8 May 2025 14:44:32 +0100 Subject: [PATCH 29/41] Added missing period --- src/getting-started/whats-next.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/getting-started/whats-next.md b/src/getting-started/whats-next.md index 1a421246fe..9dab9da2e3 100644 --- a/src/getting-started/whats-next.md +++ b/src/getting-started/whats-next.md @@ -38,7 +38,7 @@ With Engage, you can create unified customer profiles, enrich those profiles wit ##### Recipes -Need ideas or prior art? [Segment Recipes](https://segment.com/recipes/?utm=docs) are some cool things you can do by hooking your Segment workspace up to different Destination tools. Everything from sending tailored onboarding emails, to joining and cleaning your data with third party tools +Need ideas or prior art? [Segment Recipes](https://segment.com/recipes/?utm=docs) are some cool things you can do by hooking your Segment workspace up to different Destination tools. Everything from sending tailored onboarding emails, to joining and cleaning your data with third party tools. ### Other Resources From cc8b4fb58b8c6674540222774f15f4712687b1f9 Mon Sep 17 00:00:00 2001 From: rchinn1 Date: Thu, 8 May 2025 07:58:02 -0700 Subject: [PATCH 30/41] edits to install page --- src/getting-started/03-planning-full-install.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/getting-started/03-planning-full-install.md b/src/getting-started/03-planning-full-install.md index 5599e9fd40..1c04a2576e 100644 --- a/src/getting-started/03-planning-full-install.md +++ b/src/getting-started/03-planning-full-install.md @@ -24,20 +24,20 @@ Now that you've seen Segment in action, step back and think through what a full Be prepared to invest time deciding with stakeholders how to track your data, and planning how you'll analyze it. The time you spend here will save you lots of time in the future, as following Segment's best practices allows you to easily change your tracking later. -## Define Business Objectives +## Define business objectives Tracking is about learning and taking action. Think about what you want to know about your product or customers. Think about what assumptions need to be tested and what theories need to be proven true or false. Think about the unknowns. Here are some helpful questions to get started: -- What kind of events or data best illustrate or explain how your customers use your product? +- What kinds of events or data best illustrate or explain how your customers use your product? - How do people discover, start using, and paying for your product? - What are the most important steps in a customer's journey? -While it may seem obvious, we highly recommend documenting your high-level business objectives. More specifically, ask yourself: what are the measurable business outcomes you want to achieve this year? Do you want to acquire new customers? Generate more new sign-ups, drive more incremental revenue among your current customer base? +While it may seem obvious, we highly recommend documenting your high-level business objectives. More specifically, ask yourself: what are the measurable business outcomes you want to achieve this year? Do you want to acquire new customers? Generate more new sign-ups? Drive more incremental revenue among your current customer base? -The best way to answer this question is to interview stakeholders in your organization who will consume the data. +The best way to answer these questions is to interview stakeholders in your organization who will consume the data. With your business goals documented, the next step is to map user actions to those business goals. For example, if one of your goals is to activate new signups, you want to think about which activities are related to a signup. Ask yourself, what actions do people take _before_ signing up? Do specific actions predict a user signing up? @@ -55,7 +55,7 @@ While this list represents a tiny fraction of the user actions you _could_ track ## Decide what to collect -With your business objectives documented and mapped to user actions, it's time to build standards that you can use when deciding what to track. With your stakeholders, make a list of the actual events (page or screen views, and user actions) that you want to track. Think about all of the ways your users can interact with your site or app +With your business objectives documented and mapped to user actions, it's time to build standards that you can use when deciding what to track. With your stakeholders, make a list of the actual events (page or screen views, and user actions) that you want to track. Think about all of the ways your users can interact with your site or app. When you're first starting out, we recommend that you limit your tracking plan to a few core events, but add lots of properties to provide context about them. We generally see more success with the “less is more” philosophy of tracking data, but you might also decide to take a more liberal “track more and analyze later” approach. Like everything, each alternative has pros and cons that are important to consider especially as it relates to your company's needs. @@ -95,7 +95,7 @@ Regardless of approach, here are some important best practices to keep in mind: - **Don't create events to track properties:** Avoid adding values to event names when they could be a property. Instead, add values as a property. For example, rather than having an event called "Read Blog Post - Best Tracking Plans Ever", create a "Blog Post Read" event and with a property like `"blog_post_title":"Best Tracking Plans Ever"`. -- **Don't create property keys dynamically:** Avoid creating property names like `"feature_1":"true"`,`"feature_2":"false"` as these are ambiguous and very difficult to analyze +- **Don't create property keys dynamically:** Avoid creating property names like `"feature_1":"true"`,`"feature_2":"false"` as these are ambiguous and very difficult to analyze. ![An image comparing good and bad naming and collection standards](/docs/protocols/images/asset_nVdJ3ZyA.png) @@ -141,11 +141,11 @@ At Segment, we started out tracking these events: - **Source Data Sent** - **Subscription Started** -Then we added some peripheral events to to better understand how we're performing, for the following reasons: +Then we added some peripheral events to better understand how we're performing, for the following reasons: - **User Invited** When users invite more people to their organization, it's a good indicator that they're engaged and serious about using the product. This helps us measure growth in organizations. - **Destination Enabled** Turning on a destination is a key value driver for our customers. -- **Debugger Call Expanded** When we see that a certain customer has used the live event stream feature a number of times, we can contact see if we can help them debug. +- **Debugger Call Expanded** When we see that a customer has used the live event stream feature multiple times, we can contact them to see if we can help them debug. For an Ecommerce company, however, the main events might be something like: From db9bce5eff19081d2f235cf772c52cc058198241 Mon Sep 17 00:00:00 2001 From: rchinn1 Date: Thu, 8 May 2025 07:58:27 -0700 Subject: [PATCH 31/41] more small fixes --- src/getting-started/01-what-is-segment.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/getting-started/01-what-is-segment.md b/src/getting-started/01-what-is-segment.md index b791d80ec6..4078c74a4a 100644 --- a/src/getting-started/01-what-is-segment.md +++ b/src/getting-started/01-what-is-segment.md @@ -12,8 +12,8 @@ In a nutshell, the Segment libraries ([Sources](/docs/connections/sources/catalo [Segment Spec methods](/docs/connections/spec/) are how you collect interaction data from your interfaces, and the [Sources](/docs/connections/sources/) are what you package with your interfaces to collect and route the data. Once you've collected your interaction data, there are several different actions you can take: -- Send it to [Destinations](/docs/connections/destinations/), which receive the data from any number of sources in real time -- Send it to [Warehouses](/docs/connections/storage/) and other bulk storage tools, which hold your raw event schemas and update on regular intervals +- Send it to [Destinations](/docs/connections/destinations/), which receive the data from any number of sources in real time. +- Send it to [Warehouses](/docs/connections/storage/) and other bulk storage tools, which hold your raw event schemas and update on regular intervals. - Enrich the customer data you collect by [connecting data from your other tools](/docs/connections/sources/catalog/#cloud-apps), and then collect it in a warehouse to monitor performance, inform decision-making processes, and create uniquely customized user experiences. - Use [Engage](/docs/engage/), Twilio's marketing automation tool, to build marketing campaigns personalized to your audience. @@ -53,7 +53,7 @@ Although there are some tradeoffs between the two approaches, neither is better TODO: Image removed, didn't work with formatting. need a better version of this flowchart or else to just omit?--> -## The Segment Methods +## The Segment methods The Segment libraries generate messages about what happens on your interface, translate those messages into different formats for use by destinations, and transmit the messages to those tools. From 9960a6d90a7ef4addd27191221840d2062350e56 Mon Sep 17 00:00:00 2001 From: pwseg <86626706+pwseg@users.noreply.github.com> Date: Thu, 8 May 2025 14:00:47 -0500 Subject: [PATCH 32/41] add ID --- .../destinations/catalog/actions-reddit-audiences/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/connections/destinations/catalog/actions-reddit-audiences/index.md b/src/connections/destinations/catalog/actions-reddit-audiences/index.md index 90174af3fa..ae12980367 100644 --- a/src/connections/destinations/catalog/actions-reddit-audiences/index.md +++ b/src/connections/destinations/catalog/actions-reddit-audiences/index.md @@ -1,11 +1,11 @@ --- title: Reddit Audiences +id: 66f2b0f961bb2128729079bb --- {% include content/plan-grid.md name="actions" %} -The Reddit Audiences destination allows advertisers to send Engage audiences from Segment to Reddit to use as [Custom Audiences](https://business.reddithelp.com/s/article/custom-audiences?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank"} which can be used for Reddit Ads features such as audience targeting, retargeting, creating lookalike audiences, and engagement retargeting. - +The Reddit Audiences destination allows advertisers to send Engage audiences from Segment to Reddit to use as [Custom Audiences](https://business.reddithelp.com/s/article/custom-audiences?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank"}, which can be used for Reddit Ads features like audience targeting, retargeting, creating lookalike audiences, and engagement retargeting. This destination is maintained by Reddit. For any issues with the destination, [contact their Support team](mailto:adsapi-partner-support@reddit.com). @@ -27,4 +27,4 @@ This destination is maintained by Reddit. For any issues with the destination, [ 9. Navigate to the engage space that contains the audience, and select it in the **Audiences** tab. 10. Click **Add Destination**. -{% include components/actions-fields.html %} \ No newline at end of file +{% include components/actions-fields.html %} From fe9316fc9974b244ea48e6bf69c97f9864c7af9a Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Thu, 8 May 2025 15:33:57 -0400 Subject: [PATCH 33/41] add user alert tab --- src/monitor/alerts/default-alerts.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/monitor/alerts/default-alerts.md b/src/monitor/alerts/default-alerts.md index 717c7ec1ea..8f1048302f 100644 --- a/src/monitor/alerts/default-alerts.md +++ b/src/monitor/alerts/default-alerts.md @@ -16,6 +16,7 @@ You can create alerts for the following product areas: - [Protocols](#protocols-alerts) - [Unify](#unify-alerts) - [Engage](#engage-alerts) +- [Users](#users-alerts) - [Functions](#functions-alerts) - [Reverse ETL](#reverse-etl-alerts) - [Data Graph](#data-graph-alerts) @@ -116,6 +117,11 @@ your identity-resolved profiles to your data warehouse. > info "Custom Engage alerts" > During the Monitor public beta, you can configure custom [Activation event health spikes or drops](/docs/engage/audiences/#activation-event-health-spikes-or-drops) alerts, but these alerts won't appear in the Monitor tab. +## Users alerts +- **Access Request Created**: A user in your workspace requested access to a resource that they don't currently have permission to view. For more information, see the [Request Access](/docs/segment-app/iam/membership/#request-access) documentation. +- **Public API Tokens Without Owners Detected**: Segment detected that the user that created one of your Public API tokens is no longer in your workspace. Workspace Owners receive the alert on the day that Segment detects the token's owner is no longer in the workspace and then again 30 days after the last alert. +- **Users Invited**: Someone [invited a new Team Member](/docs/segment-app/iam/membership/#invite-a-new-team-member) to your workspace. + ## Functions alerts - **Destination Filter Created**: A user in your workspace created a [destination filter](/docs/connections/destinations/destination-filters/). - **Destination Filter Deleted**: A user in your workspace deleted a [destination filter](/docs/connections/destinations/destination-filters/). From c318fcc09087dee95a57e5eaf5831c069981954a Mon Sep 17 00:00:00 2001 From: pwseg Date: Thu, 8 May 2025 15:11:11 -0500 Subject: [PATCH 34/41] add Trubrics destination docs --- .../destinations/catalog/trubrics/index.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 src/connections/destinations/catalog/trubrics/index.md diff --git a/src/connections/destinations/catalog/trubrics/index.md b/src/connections/destinations/catalog/trubrics/index.md new file mode 100644 index 0000000000..9c68714118 --- /dev/null +++ b/src/connections/destinations/catalog/trubrics/index.md @@ -0,0 +1,24 @@ +--- +title: Trubrics (Actions) Destination +id: 664ce847b3e6f19ea96b3611 +private: true +hidden: true +--- + +{% include content/plan-grid.md name="actions" %} + +[Trubrics](https://trubrics.com/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank”} provides self-serve product analytics for AI product teams. On top of regular product analytics to understand user behavior, Trubrics helps you understand how your AI is performing, and how to improve it. + +This destination is maintained by Trubrics. For any issues with the destination, [contact their Support team](mailto:jeff.kayne@trubrics.com). + +## Getting started + +1. From your workspace's [Destination catalog page](https://app.segment.com/goto-my-workspace/destinations/catalog){:target="_blank”}, search for "Trubrics". +2. Select Trubrics and click **Add Destination**. +3. Select an existing source to connect to Trubrics (Actions). +4. Go to the [Trubrics app](https://app.trubrics.com){:target="_blank"}, and copy the **Project API key** from the settings page. +5. Enter the **Project API Key** in the Trubrics destination settings in Segment, then enable the destination. +6. Add mappings for your AI/user properties. + - To learn more about adding mappings, see [Trubrics <> Segment Mapping Events](https://www.loom.com/share/3bc3a02cf38d47b4b865c50314dbc8fb){:target="_blank”}. + +{% include components/actions-fields.html %} \ No newline at end of file From 6c2fbc996d51133cd3f19e4bd881d1514cf3bbbd Mon Sep 17 00:00:00 2001 From: pwseg Date: Thu, 8 May 2025 15:52:16 -0500 Subject: [PATCH 35/41] catalog update --- src/_data/catalog/destination_categories.yml | 2 +- src/_data/catalog/destinations.yml | 2 +- src/_data/catalog/destinations_private.yml | 2 +- src/_data/catalog/source_categories.yml | 2 +- src/_data/catalog/sources.yml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/_data/catalog/destination_categories.yml b/src/_data/catalog/destination_categories.yml index a6731c764f..65fa36b340 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-05-02 +# destination categories last updated 2025-05-08 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 8b68908ada..55657d2fb1 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-05-02 +# destination data last updated 2025-05-08 items: - id: 637e8d185e2dec264895ea89 display_name: 1Flow diff --git a/src/_data/catalog/destinations_private.yml b/src/_data/catalog/destinations_private.yml index 4a08c84441..a930152ec4 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-05-02 +# destination data last updated 2025-05-08 items: - id: 54521fd925e721e32a72eee1 display_name: Pardot diff --git a/src/_data/catalog/source_categories.yml b/src/_data/catalog/source_categories.yml index e133a992c2..4f4fee434d 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-05-02 +# source categories last updated 2025-05-08 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 ac22ab9638..19ac91cd50 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-05-02 +# sources last updated 2025-05-08 items: - id: 8HWbgPTt3k display_name: .NET From 3aef337230dad0ded2c3700bf7492d91c6a54e9a Mon Sep 17 00:00:00 2001 From: pwseg <86626706+pwseg@users.noreply.github.com> Date: Thu, 8 May 2025 15:53:15 -0500 Subject: [PATCH 36/41] Update src/unify/event-filtering.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/unify/event-filtering.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/unify/event-filtering.md b/src/unify/event-filtering.md index 62bb6043a2..a1be619d3b 100644 --- a/src/unify/event-filtering.md +++ b/src/unify/event-filtering.md @@ -10,7 +10,7 @@ Unify Event Filtering lets you control which events reach your Unify space. ## Overview -With Unify Event Filtering, you can use block events that aren’t useful for [Identity Resolution](/docs/unify/identity-resolution/) or downstream activation, keeping your space cleaner and more efficient. +With Unify Event Filtering, you can use block events that aren’t useful for [Identity Resolution](/docs/unify/identity-resolution/) or downstream activation, which keeps your space cleaner and more efficient. Event Filtering is useful when you’re sending a lot of different event types into Segment but only some of them are relevant to Unify. For example, you might want to: From e51777338d0772373a9ea6c5655cbf153137b2ca Mon Sep 17 00:00:00 2001 From: pwseg <86626706+pwseg@users.noreply.github.com> Date: Thu, 8 May 2025 15:53:26 -0500 Subject: [PATCH 37/41] Update src/unify/event-filtering.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/unify/event-filtering.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/unify/event-filtering.md b/src/unify/event-filtering.md index a1be619d3b..754c6c57bf 100644 --- a/src/unify/event-filtering.md +++ b/src/unify/event-filtering.md @@ -39,7 +39,7 @@ Keep the following in mind as you work with Unify Event Filtering: - Filters are configured at the space level. You don’t create filters per source. Instead, one set of filters applies to all sources connected to the space. - The filtering logic is based on [Filter Query Language](/docs/api/public-api/fql/). If you’ve used Destination Filters before, it works the same way. You can write expressions to match events based on type, name, traits, properties, or values. - Matching is inclusive: if an event matches any filter, Segment drops it. -- Filtering happens **before** Identity Resolution; dropped events never reach the profile graph and won’t affect trait updates or [computed traits](/docs/unify/traits/computed-traits/). +- Filtering happens **before** Identity Resolution: dropped events never reach the profile graph and won’t affect trait updates or [computed traits](/docs/unify/traits/computed-traits/). As a result, Unify Event Filtering helps you keep profile data clean from the start, without having to preprocess or transform events outside of Segment. From 18bea726dac60d9cd810989167e03f0584b13148 Mon Sep 17 00:00:00 2001 From: pwseg <86626706+pwseg@users.noreply.github.com> Date: Thu, 8 May 2025 15:53:36 -0500 Subject: [PATCH 38/41] Update src/unify/event-filtering.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/unify/event-filtering.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/unify/event-filtering.md b/src/unify/event-filtering.md index 754c6c57bf..39ac183254 100644 --- a/src/unify/event-filtering.md +++ b/src/unify/event-filtering.md @@ -45,7 +45,7 @@ As a result, Unify Event Filtering helps you keep profile data clean from the st ## Creating and managing filters -During public beta, you'll use the [Space Filter API](https://docs.segmentapis.com/tag/Space-Filters/){:target="_blank"} to create and manage all Unify event filters. The API lets you define filters using FQL, name them, enable or disable them, and delete them. Each Unify space can have up to 10 filters. Any event that matches one of those filters gets dropped before it reaches Unify. +During public beta, you'll use the [Space Filter API](https://docs.segmentapis.com/tag/Space-Filters/){:target="_blank"} to create and manage all Unify event filters. The API lets you define filters using FQL, name them, enable or disable them, and delete them. Each Unify space can have up to 10 filters. Any event that matches 1 of those filters gets dropped before it reaches Unify. After you create a filter through the API, it shows up in your Segment workspace in **Unify > Unify settings > Filters**. From there, you can view existing filters, turn them on or off, rename them, or delete them. However, you can’t edit the filtering logic from within your workspace. If you want to edit filtering logic, you'll need to managed it through the API. From 218b0b09adec386846784a957801d729eb815a91 Mon Sep 17 00:00:00 2001 From: pwseg <86626706+pwseg@users.noreply.github.com> Date: Thu, 8 May 2025 15:53:47 -0500 Subject: [PATCH 39/41] Update src/unify/event-filtering.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/unify/event-filtering.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/unify/event-filtering.md b/src/unify/event-filtering.md index 39ac183254..c4e8dc3088 100644 --- a/src/unify/event-filtering.md +++ b/src/unify/event-filtering.md @@ -72,7 +72,7 @@ Unify Event Filtering is most useful when you want to keep noisy, irrelevant, or | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Filter early | Prevents irrelevant events from affecting profile data or identity resolution. | | Drop obvious noise | Start with telemetry, test data, or internal events. | -| Keep it simple | A few targeted filters are easier to manage than multiple, complex filters. | +| Keep it simple | A few targeted filters are easier to manage than multiple complex filters. | | Think at the space level | Filters apply to all sources. Write conditions accordingly. | | Test before enabling | Use the [preview endpoint](https://docs.segmentapis.com/tag/Destination-Filters#operation/previewDestinationFilter){:target="_blank"} to check filter behavior before turning it on. | From 8c459108fd495a29176a10994d90178cd981b1ba Mon Sep 17 00:00:00 2001 From: pwseg <86626706+pwseg@users.noreply.github.com> Date: Thu, 8 May 2025 15:54:05 -0500 Subject: [PATCH 40/41] Update src/connections/destinations/catalog/trubrics/index.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/catalog/trubrics/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/connections/destinations/catalog/trubrics/index.md b/src/connections/destinations/catalog/trubrics/index.md index 9c68714118..641bfa2cda 100644 --- a/src/connections/destinations/catalog/trubrics/index.md +++ b/src/connections/destinations/catalog/trubrics/index.md @@ -7,7 +7,7 @@ hidden: true {% include content/plan-grid.md name="actions" %} -[Trubrics](https://trubrics.com/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank”} provides self-serve product analytics for AI product teams. On top of regular product analytics to understand user behavior, Trubrics helps you understand how your AI is performing, and how to improve it. +[Trubrics](https://trubrics.com/?utm_source=segmentio&utm_medium=docs&utm_campaign=partners){:target="_blank”} provides self-serve product analytics for AI product teams. On top of regular product analytics to understand user behavior, Trubrics helps you understand how your AI is performing and how to improve it. This destination is maintained by Trubrics. For any issues with the destination, [contact their Support team](mailto:jeff.kayne@trubrics.com). From 56033e2e908ba666b4425d3e2adf851e345feb12 Mon Sep 17 00:00:00 2001 From: pwseg <86626706+pwseg@users.noreply.github.com> Date: Thu, 8 May 2025 15:54:27 -0500 Subject: [PATCH 41/41] Update src/connections/destinations/catalog/trubrics/index.md Co-authored-by: forstisabella <92472883+forstisabella@users.noreply.github.com> --- src/connections/destinations/catalog/trubrics/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/connections/destinations/catalog/trubrics/index.md b/src/connections/destinations/catalog/trubrics/index.md index 641bfa2cda..34aa98c72e 100644 --- a/src/connections/destinations/catalog/trubrics/index.md +++ b/src/connections/destinations/catalog/trubrics/index.md @@ -20,5 +20,7 @@ This destination is maintained by Trubrics. For any issues with the destination, 5. Enter the **Project API Key** in the Trubrics destination settings in Segment, then enable the destination. 6. Add mappings for your AI/user properties. - To learn more about adding mappings, see [Trubrics <> Segment Mapping Events](https://www.loom.com/share/3bc3a02cf38d47b4b865c50314dbc8fb){:target="_blank”}. + + {% include components/actions-fields.html %} \ No newline at end of file