From 4ff9ce9d35fa03823e47a18743797ebb0eb70188 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Fri, 28 Mar 2025 13:44:55 -0400 Subject: [PATCH 01/23] custom alerts to monitor tab --- src/_data/sidenav/main.yml | 4 +- src/connections/alerting.md | 3 ++ src/monitor/alerts/custom-alerts.md | 77 +++++++++++++++++++++++++++++ src/monitor/alerts/index.md | 16 ++++-- 4 files changed, 95 insertions(+), 5 deletions(-) create mode 100644 src/monitor/alerts/custom-alerts.md diff --git a/src/_data/sidenav/main.yml b/src/_data/sidenav/main.yml index 0e442607d6..e971afea5a 100644 --- a/src/_data/sidenav/main.yml +++ b/src/_data/sidenav/main.yml @@ -297,8 +297,6 @@ sections: title: Event Delivery - path: /connections/delivery-overview title: Delivery Overview - - path: /connections/alerting - title: Connections Alerting - path: /connections/find-writekey title: Locate Your Write Key - path: /connections/integration_error_codes @@ -608,6 +606,8 @@ sections: title: Alerts Overview - path: /monitor/alerts/default-alerts title: Default Alerts + - path: /monitor/alerts/custom-alerts + title: Custom Alerts - section_title: Protocols section: - path: /protocols diff --git a/src/connections/alerting.md b/src/connections/alerting.md index 690fe781ec..85204c4d2b 100644 --- a/src/connections/alerting.md +++ b/src/connections/alerting.md @@ -1,6 +1,7 @@ --- title: Connections Alerting beta: true +hidden: true --- Connections Alerting allows Segment users to receive in-app, email, and Slack notifications related to the performance and throughput of an event-streaming connection. @@ -34,6 +35,8 @@ To delete a source volume alert, select the icon in the Actions column for the a > info "Deleting alerts created by other users requires Workspace Owner permissions" > All users can delete source volume alerts that they created, but only those with Workspace Owner permissions can delete alerts created by other users. + + ## Successful delivery rate alerts You can create an alert that notifies you when the volume of events successfully received by your destination in the last 24 hours falls below a percentage you set. For example, if you set a percentage of 99%, Segment notifies you if your destination had a successful delivery rate of 98% or below. diff --git a/src/monitor/alerts/custom-alerts.md b/src/monitor/alerts/custom-alerts.md new file mode 100644 index 0000000000..791d9029f2 --- /dev/null +++ b/src/monitor/alerts/custom-alerts.md @@ -0,0 +1,77 @@ +--- +title: Custom Alerts +--- + +Segment's custom alerts allow you to customize the sensitivity of the trigger that activates an alert so you can more accurately detect event volume fluctuations in your integrations. + +> info "Public beta" +> The Monitor hub is in Public Beta. Some functionality may change before it becomes generally available. During the public beta, only default alerts are located in the Monitor tab. + +You can create alerts for the following product areas: +- [Sources](#source-volume-alert) +- [Destinations](#successful-delivery-rate-alert) +- [Twilio Engage](#activation-event-health-spikes-or-drops) + +## Source volume alert +You can create an alert that notifies you when the volume of events received by your source in the last 24 hours changes beyond a percentage you set. For example, if you set a change percentage of 4% and your source received 100 events over the first 24 hours, Segment would notify you the following day if your source ingested fewer than 96 or more than 104 events. + +To receive a source volume alert in a Slack channel, you must first create a Slack webhook. For more information about Slack webhooks, see the [Sending messages using incoming webhooks](https://api.slack.com/messaging/webhooks){:target="_blank”} documentation. + +A screenshot of the Source Volume alert creation sidesheet. + +To create a source volume alert: +1. In your workspace, navigate to Connections, select Sources, and select the Event streams tab. +2. Select the [event streams source](/docs/connections/sources/#event-streams-sources) you'd like to configure alerts for. +2. Select the Alerts tab and click **Create 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. + - **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**. + +To make changes to a source volume alert, select the icon in the Actions column for the alert and click **Edit**. + +To delete a source volume alert, select the icon in the Actions column for the alert and click **Delete**. + +> info "Deleting alerts created by other users requires Workspace Owner permissions" +> All users can delete source volume alerts that they created, but only those with Workspace Owner permissions can delete alerts created by other users. + +## Successful delivery rate alert + +You can create an alert that notifies you when the volume of events successfully received by your destination in the last 24 hours falls below a percentage you set. For example, if you set a percentage of 99%, Segment notifies you if your destination had a successful delivery rate of 98% or below. + +To receive a successful delivery rate alert in a Slack channel, you must first create a Slack webhook. For more information about Slack webhooks, see the [Sending messages using incoming webhooks](https://api.slack.com/messaging/webhooks){:target="_blank”} documentation. + +To create a successful delivery rate alert: +1. Navigate to the [cloud-mode destinations](/docs/connections/destinations/#:~:text=Cloud%2Dmode%3A%20The%20sources%20send%20data%20directly%20to%20the%20Segment%20servers%2C%20which%20then%20translate%20it%20for%20each%20connected%20downstream%20destination%2C%20and%20send%20it%20on.) you'd like to configure alerts for. +2. Select the Alerts tab and click **Create 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. + - **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**. + +To make changes to a successful delivery rate alert, select the icon in the Actions column for the alert and click **Edit**. + +To delete a successful delivery rate alert, select the icon in the Actions column for the alert and click **Delete**. + +## Activation event health spikes or drops + +You can create an Activation event health spikes or drops alert that notifies you when events sent from your audience to a downstream destination have failures to a destination above a certain threshold. For example, if you set a change percentage of 4% and your destination received 100 events from your Audience over the first 24 hours, Segment would notify you the following day if your destination ingested fewer than 96 or more than 104 events. + +To create an Activation event health spikes or drops alert: +1. From your Segment workspace's home page, navigate to **Engage > Audiences**. +2. Select the Audience you want to create an alert for, select the Alerts tab, and click **Create alert**. +3. On the Create alert sidesheet, select the destination for which you'd like to monitor event health. +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. + - **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**. + +To make changes to an Activation event health spikes or drops alert, select the icon in the Actions column for the alert and click **Edit**. + +To delete a Activation event health spikes or drops alert, select the icon in the Actions column for the alert and click **Delete**. \ No newline at end of file diff --git a/src/monitor/alerts/index.md b/src/monitor/alerts/index.md index b4f91288b8..bc2dd893ee 100644 --- a/src/monitor/alerts/index.md +++ b/src/monitor/alerts/index.md @@ -10,10 +10,20 @@ Segment has two kinds of alerts: - **Default alerts**: Alerts that have a preset threshold and are often used to detect changes users make to the integrations in your workspace. For example, a _Source created_ alert is a default alert. - **Custom alerts**: Alerts that allow you to customize the sensitivity of the trigger that activates an alert so you can more accurately detect event volume fluctuations in your sources and destinations. For example, a _Source volume fluctuation_ alert would be a custom alert, as you could select a percentage of fluctuation that would work for your business needs. + +
{% include components/reference-button.html href="/monitor/alerts/default-alerts" variant="related" - icon="monitor.svg" + icon="segment-app.svg" title="Default alerts" - description="Learn more about Segment's default alerts." -%} \ No newline at end of file + description="Default alerts are often used to detect changes users made in your workspace." +%} + +{% include components/reference-button.html + href="/monitor/alerts/custom-alerts" + icon="book.svg" + title="Custom alerts" + description="Custom alerts allow you detect fluctuations in event volumes." + %} +
\ No newline at end of file From 806c982a65609ed9a3720a618ff67089eb01da53 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Fri, 28 Mar 2025 13:49:40 -0400 Subject: [PATCH 02/23] [netlify-build] --- src/monitor/alerts/custom-alerts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/monitor/alerts/custom-alerts.md b/src/monitor/alerts/custom-alerts.md index 791d9029f2..e0b9e075b7 100644 --- a/src/monitor/alerts/custom-alerts.md +++ b/src/monitor/alerts/custom-alerts.md @@ -74,4 +74,4 @@ To create an Activation event health spikes or drops alert: To make changes to an Activation event health spikes or drops alert, select the icon in the Actions column for the alert and click **Edit**. -To delete a Activation event health spikes or drops alert, select the icon in the Actions column for the alert and click **Delete**. \ No newline at end of file +To delete a Activation event health spikes or drops alert, select the icon in the Actions column for the alert and click **Delete**. From e47c6d27c4b37aa2828fba6c703fa4315d8aa1d0 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Fri, 28 Mar 2025 14:33:04 -0400 Subject: [PATCH 03/23] [netlify-build] --- src/monitor/alerts/custom-alerts.md | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/monitor/alerts/custom-alerts.md b/src/monitor/alerts/custom-alerts.md index e0b9e075b7..4426854d23 100644 --- a/src/monitor/alerts/custom-alerts.md +++ b/src/monitor/alerts/custom-alerts.md @@ -5,11 +5,12 @@ title: Custom Alerts Segment's custom alerts allow you to customize the sensitivity of the trigger that activates an alert so you can more accurately detect event volume fluctuations in your integrations. > info "Public beta" -> The Monitor hub is in Public Beta. Some functionality may change before it becomes generally available. During the public beta, only default alerts are located in the Monitor tab. +> The Monitor hub is in Public Beta. Some functionality may change before it becomes generally available. During the public beta, custom alerts are not located in the Monitor tab. You can create alerts for the following product areas: - [Sources](#source-volume-alert) - [Destinations](#successful-delivery-rate-alert) +- [Reverse ETL](#mapping-level-successful-delivery-rate-fluctuations) - [Twilio Engage](#activation-event-health-spikes-or-drops) ## Source volume alert @@ -17,7 +18,7 @@ You can create an alert that notifies you when the volume of events received by To receive a source volume alert in a Slack channel, you must first create a Slack webhook. For more information about Slack webhooks, see the [Sending messages using incoming webhooks](https://api.slack.com/messaging/webhooks){:target="_blank”} documentation. -A screenshot of the Source Volume alert creation sidesheet. +A screenshot of the Source Volume alert creation sidesheet. To create a source volume alert: 1. In your workspace, navigate to Connections, select Sources, and select the Event streams tab. @@ -57,6 +58,26 @@ To make changes to a successful delivery rate alert, select the icon in the Acti To delete a successful delivery rate alert, select the icon in the Actions column for the alert and click **Delete**. +## Mapping-level successful delivery rate fluctuations + +You can create an alert that notifies you when the volume of events successfully received by your mapping in the last 24 hours falls below a percentage you set. For example, if you set a percentage of 99%, Segment notifies you if your destination had a successful delivery rate of 98% or below. + +To receive a successful delivery rate fluctuation alert in a Slack channel, you must first create a Slack webhook. For more information about Slack webhooks, see Slack's [Sending messages using incoming webhooks](https://api.slack.com/messaging/webhooks){:target="_blank”} documentation. + +![A screenshot of the Alerts tab for a Mapping, with the new mapping sidesheet partially filled out.](/docs/connections/reverse-etl/images/mapping-alerting.jpeg) + +To subscribe to alerts for successful delivery fluctuations at the mapping level: +1. Navigate to your intended mapping and select the **Alerts** tab. +2. Click **Create alert**. +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. + - **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**. + +To edit or disable your alert, navigate to your mapping's Alerts tab and select the Actions menu for the alert you'd like to edit. + ## Activation event health spikes or drops You can create an Activation event health spikes or drops alert that notifies you when events sent from your audience to a downstream destination have failures to a destination above a certain threshold. For example, if you set a change percentage of 4% and your destination received 100 events from your Audience over the first 24 hours, Segment would notify you the following day if your destination ingested fewer than 96 or more than 104 events. From c2fe446c05c27a86056e98cf97c5bc8deba77f68 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Tue, 17 Jun 2025 11:20:25 -0400 Subject: [PATCH 04/23] Create consent-in-engage.md --- .../consent-management/consent-in-engage.md | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/privacy/consent-management/consent-in-engage.md diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md new file mode 100644 index 0000000000..ddf45a39cb --- /dev/null +++ b/src/privacy/consent-management/consent-in-engage.md @@ -0,0 +1,46 @@ +--- +title: Consent in Twilio Engage +plan: consent-management +--- + +Segment uses the [consent object](/docs/privacy/consent-in-unify/#segment-consent-preference-event) on Segment events, including the [Segment Consent Preference Updated](/docs/privacy/consent-in-unify/#segment-consent-preference-updated-event) Track event, to evaluate and store consent preferences on an end user's Profile. + +Once an end user's consent preferences are stored on their Profile, you can create Audiences that respect end user consent preferences to better comply with privacy regulations. + +> warning "Storing consent on the Profile is in private beta" +> Reach out to your sales contact or [request a demo](https://segment.com/contact/demo){:target="_blank"} to participate in the private beta. + +## Enforce consent preferences in your Audience + +### Prerequisites + +Before using an end user's consent preferences to create your Audiences, you must complete the following prerequisites: +- + +### Step 1: Enable consent in your Unify space + +### Step 2: Create your Audience + +> info "Consent preferences can affect Audience sync size" +> The number of profiles that sync to your Audience depends on the number of end users that consented to their data being shared with the destinations connected to your Audience. + + +## Verify that your Audiences respect consent preferences + +After you've enabled consent management in your Unify space and created a new audience, Segment automatically filters out data from end users that have not consented to the category that you mapped to your connected destination. + +However, if you'd like to confirm that this behavior is working as intended, you can either [compare an end user profile against your mapped categories](#compare-an-end-user-profile-to-your-mapped-categories) or check Delivery Overview for a "filtered at destination" event. + +### Compare an end user profile to your mapped categories +To verify that your end user's consent preferences match the category that you mapped to your destination: + +1. Navigate to the connected destination and select an end user profile. +2. Return to Segment and compare the consent preferences of that profile against the consent category of the connected destination. +3. Verify that the consent preferences of your selected user match the consent category that you mapped to your destination. + +### Use Delivery Overview + +You can use Delivery Overview to verify that your destination is enforcing your user's consent preferences. + +To + From e68a330f95044ee8548c89bc0eb089dca19a0381 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Fri, 11 Jul 2025 15:45:57 -0400 Subject: [PATCH 05/23] first pass --- .../consent-management/consent-in-engage.md | 58 ++++++++++++++----- .../consent-management/consent-in-unify.md | 20 ++++--- src/privacy/consent-management/index.md | 4 +- 3 files changed, 61 insertions(+), 21 deletions(-) diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md index ddf45a39cb..a447c4d8b3 100644 --- a/src/privacy/consent-management/consent-in-engage.md +++ b/src/privacy/consent-management/consent-in-engage.md @@ -1,35 +1,63 @@ --- -title: Consent in Twilio Engage +title: Consent in Engage Audiences plan: consent-management --- Segment uses the [consent object](/docs/privacy/consent-in-unify/#segment-consent-preference-event) on Segment events, including the [Segment Consent Preference Updated](/docs/privacy/consent-in-unify/#segment-consent-preference-updated-event) Track event, to evaluate and store consent preferences on an end user's Profile. -Once an end user's consent preferences are stored on their Profile, you can create Audiences that respect end user consent preferences to better comply with privacy regulations. +Once an end user's consent preferences are stored on their Profile, you can create Engage Audiences that respect end user consent preferences to better comply with privacy regulations. -> warning "Storing consent on the Profile is in private beta" -> Reach out to your sales contact or [request a demo](https://segment.com/contact/demo){:target="_blank"} to participate in the private beta. +> warning "Consent in Engage Audiences is in public beta" +> Consent in Engage Audiences is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. +> +> During the public beta, only Profiles Audiences are supported by Consent in Engage Audiences. -## Enforce consent preferences in your Audience - -### Prerequisites +## Enforce consent preferences in your Audiences Before using an end user's consent preferences to create your Audiences, you must complete the following prerequisites: -- +- You've previously set up [Consent in Segment Connections](/docs/privacy/consent-management/consent-in-segment-connections) or [Consent in Reverse ETL](/docs/privacy/consent-management/consent-in-retl) and have events stamped with the [consent object](/docs/privacy/consent-management/consent-in-segment-connections#consent-object) streaming from your source or available in your data warehouse. +- You've previously set up [Consent in Unify](/docs/privacy/consent-management/consent-in-unify) and stamped all of your Profiles with end user consent preferences. ### Step 1: Enable consent in your Unify space +Once your consent categories are set up and mapped and each of your Profiles is stamped with the consent object, you're ready to enable Consent Management in your Unify space. You must enable Consent Management in each Unify space that you'd like to enforce consent preferences. If you've chosen not to enable Consent Management for a Unify space but you've previously set up Consent Management for Reverse ETL or Segment Connections, Segment will continue to stamp consent preferences on your Profiles. + +> info "" +> In order to enable Consent Management in your Unify space, you must have a [Workspace Owner role](/docs/segment-app/iam/roles/). + +To enable Consent Management in your Unify space: +1. Navigate to Unify and select the space where you'd like to enable Consent Management. +2. Select **Unify settings** and navigate to the **Space management** tab. +3. Select the **Consent management** setting and enable the toggle to turn on Consent Management for your Unify space. +4. On the **Enable consent enforcement for [Space Name]?** popup, enter the name of your Unify space and click **Enable enforcement**. + +After you've enabled Consent Management in your Unify space, you can create an Audience that only includes users that have consented to the use of their data for a particular purpose. + +> warning "Consent enforcement is not automatically applied to Audiences that existed prior to the enablement of Consent Management in your Unify space" +> Audiences that existed before you enabled Consent Management in a Unify space only enforce consent preferences for new Profiles that enter an Audience after you enable Consent Management. If you want to ensure each of your Audiences only includes consenting Profiles, request a resync: only Profiles that consented to the category mapped to your destination will re-enter the Audience and be sent downstream to your destination. All Audiences created after you enable Consent Management for a space only contain Profiles that consented to the use of their data for the mapped destination. + + ### Step 2: Create your Audience -> info "Consent preferences can affect Audience sync size" -> The number of profiles that sync to your Audience depends on the number of end users that consented to their data being shared with the destinations connected to your Audience. +> info "Consent preferences can affect Audience sync size" +> The number of profiles that sync to your Audience depends on the number of end users that consented to their data being shared with the destinations connected to your Audience. To see the impact of consent on your Audience, add consent traits to the Audience builder. + +During the public beta, you can create Profiles Audiences from your users' consent preferences. + +To create a Profiles Audience that includes consent traits: +1. Navigate to **Engage > Audiences** and click **+ New audience**, then select **Audience**. +2. On the Select Audience Type screen, select **Profiles audience** then click **Next**. +3. Add a condition and select **Have a consent trait**, then select your intended consent category, operator, and true/false value. +4. Continue building your Audience, adding additional conditions as you see fit. When you're satisfied with your Audience conditions, click **Next**. +5. Select one or more destinations that you'd like to receive your Audience. +Destinations mapped to a consent category only receive the Profiles of users that have consented to that category. Destinations not mapped to a consent category receive all Profiles in an Audience, regardless of the Profile's consent preferences. If opt to send your Audience to multiple destinations belonging to multiple categories then each destination receives data for the Profiles that have consent to the destination’s mapped category. For example, if you have an audience mapped to Google Ads (mapped to the Ads consent category) and Snowflake (mapped to the Analytics consent category), then Google Ads receives all profiles that have consent to Ads independent of users consent preferences to Analytics, and Snowflake receives all profiles that have consented to Analytics independent of their Ads preferences. ## Verify that your Audiences respect consent preferences After you've enabled consent management in your Unify space and created a new audience, Segment automatically filters out data from end users that have not consented to the category that you mapped to your connected destination. -However, if you'd like to confirm that this behavior is working as intended, you can either [compare an end user profile against your mapped categories](#compare-an-end-user-profile-to-your-mapped-categories) or check Delivery Overview for a "filtered at destination" event. +However, if you'd like to confirm that this behavior is working as intended, you can either [compare an end user profile against your mapped categories](#compare-an-end-user-profile-to-your-mapped-categories) or verify that [Delivery Overview](#use-delivery-overview) contains a`FILTERED_BY_END_USER_CONSENT` event. ### Compare an end user profile to your mapped categories To verify that your end user's consent preferences match the category that you mapped to your destination: @@ -40,7 +68,11 @@ To verify that your end user's consent preferences match the category that you m ### Use Delivery Overview -You can use Delivery Overview to verify that your destination is enforcing your user's consent preferences. +You can use Delivery Overview to verify that your destination is enforcing your user's consent preferences by checking for the presence of a `FILTERED_BY_END_USER_CONSENT` discard reason. -To +To verify that your events are being filtered by end user consent: +1. Select the destination connected your Engage Audience. +2. On the Delivery Overview page, select **Filtered at destination**. +3. Search through the table of discarded events until you find an event with a discard reason of `FILTERED_BY_END_USER_CONSENT`. +If the discard reason `FILTERED_BY_END_USER_CONSENT` is present in the point in your data pipeline where your destination discards events, your destination is enforcing your end users' consent preferences appropriately. If you cannot find a `FILTERED_BY_END_USER_CONSENT` discard reason, either wait a few minutes for more events to flow to your destination before reviewing the discard reasons again or revisit the consent settings for your Unify space. diff --git a/src/privacy/consent-management/consent-in-unify.md b/src/privacy/consent-management/consent-in-unify.md index bcae9b9169..25becf6dfc 100644 --- a/src/privacy/consent-management/consent-in-unify.md +++ b/src/privacy/consent-management/consent-in-unify.md @@ -77,20 +77,26 @@ If you use Protocols, the Segment app automatically adds the Segment Consent Pre > > See the [Semantic Events](/docs/connections/spec/semantic/) docs for more details. -### Sharing consent with Actions destinations +### Share consent with Actions destinations In addition to enforcing consent in Connections, you may want these preferences to flow to each destination so your destinations can be aware when an end-user revokes their consent. You can use the [Destination Actions framework](/docs/connections/destinations/actions) to edit the destination's mapping and copy the consent preferences from the Segment Consent Preference Updated event to a destination-specified consent field. If you use Destination Actions to send consent information to your destinations, the Segment Consent Preference Updated event should **only** include information about a user's consent preferences because this event is sent regardless of an end-user's consent preferences. -> info "Sharing consent with Classic Destinations is not available" +> warning "Sharing consent with Classic Destinations isn't available" > Segment only supports sharing consent with Actions Destinations. -## Storing consent preferences on the Profile -Segment stamps consent preference on every Segment event from streaming and Reverse ETL sources to store them on the Profile. +## Store consent preferences on the Profile +Segment stamps consent preference on every Segment event from streaming and Reverse ETL sources as a trait to store them on the Profile. -> warning "Storing consent on the Profile is in private beta" -> Reach out to your sales contact or [request a demo](https://segment.com/contact/demo){:target="_blank"} to participate in the private beta. +> info "Storing consent on the Profile is in public beta" +> Consent in Unify is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. + +If you're using Consent Management and Profiles, you shouldn't give your customers a Custom Trait value that matches one of the consent categories that you set up in the Segment app, as this can lead to unexpected Audience behavior. For example, if your end user consented to the "Marketing" destination category, you shouldn't give them a custom trait of `segment_consent_preference.categories.marketing.`, as this can lead your user to unexpectedly enter or leave an Audience. + +## Consent preference conflicts + +When collecting end user consent, you can occasionally capture multiple consent preferences linked to the same user, for example, from a user's cell phone browser and the web browser on their laptop (called a [device-level conflict](#device-level-conflict)) or when two distinct Unify profiles are merged together (called a [profile-level conflict](#profile-level-conflict)). ### Device-level conflicts A device-level conflict occurs when conflicting consent preferences linked to one user ID are collected from two distinct devices. @@ -128,7 +134,7 @@ To avoid Profile-level conflicts, Segment recommends that you take the following > Profile conflicts only impact Profiles used in Engage spaces. ## Enforcing consent in Twilio Engage -Segment stores consent preferences as traits on the Profile, which you can use to [build Audiences](/docs/engage/audiences/#building-an-audience). +Segment stores consent preferences as traits on the Profile, which you can use to [build Audiences](/docs/privacy/consent-management/consent-in-engage). ## Validating consent preferences stored on a Profile You can validate consent is present on the Profile by looking for the consent trait provided for a Profile on the consent tab. diff --git a/src/privacy/consent-management/index.md b/src/privacy/consent-management/index.md index 7f8c3698e2..ba10f23938 100644 --- a/src/privacy/consent-management/index.md +++ b/src/privacy/consent-management/index.md @@ -18,4 +18,6 @@ The events, stamped with the consent object, are then sent downstream to any des For more information about consent in Segment Connections, see the [Consent in Segment Connections](/docs/privacy/consent-management/consent-in-segment-connections) documentation. -If you are a Unify user, you can also see the [Consent in Unify](/docs/privacy/consent-management/consent-in-unify) for more information about the Segment Consent Preference Updated event, which Segment uses to add consent preference to the Profile. +If you are a Unify user, you can also see [Consent in Unify](/docs/privacy/consent-management/consent-in-unify) for more information about the Segment Consent Preference Updated event, which Segment uses to add consent preference to the Profile. + +Twilio Engage users can learn more about creating Audiences that respect end-user consent preferences in the [Consent in Twilio Engage](/docs/privacy/consent-management/consent-in-engage) documentation. From 85903193b8d5c36ba7b6bb128fed50dab0afc98e Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Mon, 14 Jul 2025 08:14:33 -0400 Subject: [PATCH 06/23] editing pass --- .../consent-management/consent-in-engage.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md index a447c4d8b3..509454c158 100644 --- a/src/privacy/consent-management/consent-in-engage.md +++ b/src/privacy/consent-management/consent-in-engage.md @@ -16,11 +16,11 @@ Once an end user's consent preferences are stored on their Profile, you can crea Before using an end user's consent preferences to create your Audiences, you must complete the following prerequisites: - You've previously set up [Consent in Segment Connections](/docs/privacy/consent-management/consent-in-segment-connections) or [Consent in Reverse ETL](/docs/privacy/consent-management/consent-in-retl) and have events stamped with the [consent object](/docs/privacy/consent-management/consent-in-segment-connections#consent-object) streaming from your source or available in your data warehouse. -- You've previously set up [Consent in Unify](/docs/privacy/consent-management/consent-in-unify) and stamped all of your Profiles with end user consent preferences. +- You generate the [Segment Consent Preference Updated](/docs/privacy/consent-management/consent-in-unify#segment-consent-preference-updated-event) Track event each time a user updates their consent preferences. This event stamps each Profile with a user's consent preferences. ### Step 1: Enable consent in your Unify space -Once your consent categories are set up and mapped and each of your Profiles is stamped with the consent object, you're ready to enable Consent Management in your Unify space. You must enable Consent Management in each Unify space that you'd like to enforce consent preferences. If you've chosen not to enable Consent Management for a Unify space but you've previously set up Consent Management for Reverse ETL or Segment Connections, Segment will continue to stamp consent preferences on your Profiles. +Once your consent categories are set up and mapped and each of your Profiles is stamped with the Segment Consent Preference Updated event, you're ready to enable Consent Management in your Unify space. You must enable Consent Management in each Unify space that you'd like to enforce consent preferences. If you've chosen not to enable Consent Management for a Unify space but you've previously set up Consent Management for Reverse ETL or Segment Connections, Segment will continue to stamp consent preferences on your Profiles. > info "" > In order to enable Consent Management in your Unify space, you must have a [Workspace Owner role](/docs/segment-app/iam/roles/). @@ -34,7 +34,7 @@ To enable Consent Management in your Unify space: After you've enabled Consent Management in your Unify space, you can create an Audience that only includes users that have consented to the use of their data for a particular purpose. > warning "Consent enforcement is not automatically applied to Audiences that existed prior to the enablement of Consent Management in your Unify space" -> Audiences that existed before you enabled Consent Management in a Unify space only enforce consent preferences for new Profiles that enter an Audience after you enable Consent Management. If you want to ensure each of your Audiences only includes consenting Profiles, request a resync: only Profiles that consented to the category mapped to your destination will re-enter the Audience and be sent downstream to your destination. All Audiences created after you enable Consent Management for a space only contain Profiles that consented to the use of their data for the mapped destination. +> Audiences that existed before you enabled Consent Management in a Unify space only enforce consent preferences for new Profiles that enter the Audience after you enabled Consent Management. If you want to ensure each of your Audiences only includes consenting Profiles, request a resync: only Profiles that consented to the category mapped to your destination will re-enter the Audience and be sent downstream to your destination. All Audiences created after you enable Consent Management for a space only contain Profiles that consented to the use of their data for the mapped destination(s). ### Step 2: Create your Audience @@ -51,19 +51,19 @@ To create a Profiles Audience that includes consent traits: 4. Continue building your Audience, adding additional conditions as you see fit. When you're satisfied with your Audience conditions, click **Next**. 5. Select one or more destinations that you'd like to receive your Audience. -Destinations mapped to a consent category only receive the Profiles of users that have consented to that category. Destinations not mapped to a consent category receive all Profiles in an Audience, regardless of the Profile's consent preferences. If opt to send your Audience to multiple destinations belonging to multiple categories then each destination receives data for the Profiles that have consent to the destination’s mapped category. For example, if you have an audience mapped to Google Ads (mapped to the Ads consent category) and Snowflake (mapped to the Analytics consent category), then Google Ads receives all profiles that have consent to Ads independent of users consent preferences to Analytics, and Snowflake receives all profiles that have consented to Analytics independent of their Ads preferences. +Destinations mapped to a consent category only receive the Profiles of users that have consented to that category. Destinations not mapped to a consent category receive all Profiles in an Audience, regardless of the Profile's consent preferences. If opt to send your Audience to multiple destinations belonging to multiple categories, then each destination receives data for the Profiles that have consent to the destination’s mapped category. For example, if you have an audience mapped to Google Ads (mapped to the Advertising consent category) and Snowflake (mapped to the Analytics consent category), then Google Ads receives all profiles that have consented to Advertising consent category, independent of users' who consented to Analytics, and Snowflake receives all profiles that have consented to Analytics, independent of their Advertising preferences. ## Verify that your Audiences respect consent preferences -After you've enabled consent management in your Unify space and created a new audience, Segment automatically filters out data from end users that have not consented to the category that you mapped to your connected destination. +After you've enabled consent management in your Unify space and created a new audience with a consent trait, Segment automatically filters out data from end users that have not consented to the category that you mapped to your connected destination. -However, if you'd like to confirm that this behavior is working as intended, you can either [compare an end user profile against your mapped categories](#compare-an-end-user-profile-to-your-mapped-categories) or verify that [Delivery Overview](#use-delivery-overview) contains a`FILTERED_BY_END_USER_CONSENT` event. +However, if you'd like to confirm that this behavior is working as intended, you can either [compare an end user profile against your mapped categories](#compare-an-end-user-profile-to-your-mapped-categories) or verify that [Delivery Overview](#use-delivery-overview) contains a `FILTERED_BY_END_USER_CONSENT` event. -### Compare an end user profile to your mapped categories -To verify that your end user's consent preferences match the category that you mapped to your destination: +### Compare an end user Profile to your mapped categories -1. Navigate to the connected destination and select an end user profile. -2. Return to Segment and compare the consent preferences of that profile against the consent category of the connected destination. +To verify that your end user's consent preferences match the category that you mapped to your destination: +1. Navigate to the connected destination and select a Profile. +2. Return to Segment and compare the consent preferences of that Profile against the consent category of the connected destination. 3. Verify that the consent preferences of your selected user match the consent category that you mapped to your destination. ### Use Delivery Overview @@ -71,8 +71,8 @@ To verify that your end user's consent preferences match the category that you m You can use Delivery Overview to verify that your destination is enforcing your user's consent preferences by checking for the presence of a `FILTERED_BY_END_USER_CONSENT` discard reason. To verify that your events are being filtered by end user consent: -1. Select the destination connected your Engage Audience. +1. Select the destination connected to your Engage Audience. 2. On the Delivery Overview page, select **Filtered at destination**. 3. Search through the table of discarded events until you find an event with a discard reason of `FILTERED_BY_END_USER_CONSENT`. -If the discard reason `FILTERED_BY_END_USER_CONSENT` is present in the point in your data pipeline where your destination discards events, your destination is enforcing your end users' consent preferences appropriately. If you cannot find a `FILTERED_BY_END_USER_CONSENT` discard reason, either wait a few minutes for more events to flow to your destination before reviewing the discard reasons again or revisit the consent settings for your Unify space. +If the discard reason `FILTERED_BY_END_USER_CONSENT` is present in the point where your destination discards events, your destination is enforcing your end users' consent preferences appropriately. If you cannot find a `FILTERED_BY_END_USER_CONSENT` discard reason, either wait a few minutes for more events to flow to your destination before reviewing the discard reasons again or revisit the conditions that you used to generate your Audience. From df456b7a116f1417a19eb66fc0a9c6ea78ef0f58 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Mon, 14 Jul 2025 08:19:48 -0400 Subject: [PATCH 07/23] [netlify-build] --- src/privacy/consent-management/consent-in-unify.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/privacy/consent-management/consent-in-unify.md b/src/privacy/consent-management/consent-in-unify.md index cbd51e0736..c46ebb40e5 100644 --- a/src/privacy/consent-management/consent-in-unify.md +++ b/src/privacy/consent-management/consent-in-unify.md @@ -4,7 +4,7 @@ plan: consent-management redirect_from: "/privacy/consent-in-unify" --- -Segment uses the [consent object](#consent-object) on Segment events, including the [Segment Consent Preference Updated](#segment-consent-preference-updated-event) Track event, to evaluate and store consent preferences on the Profile. Consent on the Profiles serves as the source of truth of an end user’s consent preference when enforcing consent in Twilio Engage or Linked Audiences. +Segment uses the [consent object](#consent-object) on Segment events, including the [Segment Consent Preference Updated](#segment-consent-preference-updated-event) Track event, to evaluate and store consent preferences on the Profile. Consent on the Profiles serves as the source of truth of an end user’s consent preference when enforcing consent in Twilio Engage. ## Consent object @@ -90,7 +90,7 @@ If you use Destination Actions to send consent information to your destinations, Segment stamps consent preference on every Segment event from streaming and Reverse ETL sources as a trait to store them on the Profile. > info "Storing consent on the Profile is in public beta" -> Consent in Unify is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. +> Storing consent preferences on a Unify Profile is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. If you're using Consent Management and Profiles, you shouldn't give your customers a Custom Trait value that matches one of the consent categories that you set up in the Segment app, as this can lead to unexpected Audience behavior. For example, if your end user consented to the "Marketing" destination category, you shouldn't give them a custom trait of `segment_consent_preference.categories.marketing.`, as this can lead your user to unexpectedly enter or leave an Audience. From d125bcf3665ebd08dcb28dfede120585c50e6e4e Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Mon, 14 Jul 2025 08:56:12 -0400 Subject: [PATCH 08/23] add to sidebar [netlify-build] --- src/_data/sidenav/main.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/_data/sidenav/main.yml b/src/_data/sidenav/main.yml index 43d04ab97e..9554a60e4d 100644 --- a/src/_data/sidenav/main.yml +++ b/src/_data/sidenav/main.yml @@ -614,7 +614,9 @@ sections: - path: /privacy/consent-management/consent-in-unify title: Consent Stored on the Profile - path: /privacy/consent-management/consent-in-retl - title: Consent in Reverse ETL + title: Consent in Reverse + - path: /privacy/consent-management/consent-in-engage + title: Consent in Engage Audiences - path: /privacy/consent-management/consent-faq title: Consent FAQs - path: /privacy/data-retention-policy From 73f216835c7690a3f7fc0b66597e6ab860322c73 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Mon, 14 Jul 2025 09:15:37 -0400 Subject: [PATCH 09/23] fix [netlify-build] --- src/_data/sidenav/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/_data/sidenav/main.yml b/src/_data/sidenav/main.yml index 9554a60e4d..319fb119cc 100644 --- a/src/_data/sidenav/main.yml +++ b/src/_data/sidenav/main.yml @@ -614,7 +614,7 @@ sections: - path: /privacy/consent-management/consent-in-unify title: Consent Stored on the Profile - path: /privacy/consent-management/consent-in-retl - title: Consent in Reverse + title: Consent in Reverse ETL - path: /privacy/consent-management/consent-in-engage title: Consent in Engage Audiences - path: /privacy/consent-management/consent-faq From 7cb55bba137c1ab9e7131d1abc679369d3964e37 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Tue, 15 Jul 2025 08:57:34 -0400 Subject: [PATCH 10/23] Apply suggestions from code review Co-authored-by: stayseesong <83784848+stayseesong@users.noreply.github.com> --- .../consent-management/consent-in-engage.md | 18 +++++++++++------- .../consent-management/consent-in-unify.md | 2 +- src/privacy/consent-management/index.md | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md index 509454c158..3c6c0b5d2e 100644 --- a/src/privacy/consent-management/consent-in-engage.md +++ b/src/privacy/consent-management/consent-in-engage.md @@ -7,7 +7,7 @@ Segment uses the [consent object](/docs/privacy/consent-in-unify/#segment-consen Once an end user's consent preferences are stored on their Profile, you can create Engage Audiences that respect end user consent preferences to better comply with privacy regulations. -> warning "Consent in Engage Audiences is in public beta" +> info "Consent in Engage Audiences is in public beta" > Consent in Engage Audiences is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. > > During the public beta, only Profiles Audiences are supported by Consent in Engage Audiences. @@ -20,20 +20,20 @@ Before using an end user's consent preferences to create your Audiences, you mus ### Step 1: Enable consent in your Unify space -Once your consent categories are set up and mapped and each of your Profiles is stamped with the Segment Consent Preference Updated event, you're ready to enable Consent Management in your Unify space. You must enable Consent Management in each Unify space that you'd like to enforce consent preferences. If you've chosen not to enable Consent Management for a Unify space but you've previously set up Consent Management for Reverse ETL or Segment Connections, Segment will continue to stamp consent preferences on your Profiles. +Once your consent categories are set up and mapped and each of your Profiles is stamped with the Segment Consent Preference Updated event, you're ready to enable Consent Management in your Unify space. You must enable Consent Management in each Unify space that you'd like to enforce consent preferences. If you've chosen not to enable Consent Management for a Unify space but you've previously set up Consent Management for Reverse ETL or Segment Connections, Segment continues to stamp consent preferences on your Profiles. > info "" > In order to enable Consent Management in your Unify space, you must have a [Workspace Owner role](/docs/segment-app/iam/roles/). To enable Consent Management in your Unify space: -1. Navigate to Unify and select the space where you'd like to enable Consent Management. +1. Navigate to **Unify** and select the space where you'd like to enable Consent Management. 2. Select **Unify settings** and navigate to the **Space management** tab. 3. Select the **Consent management** setting and enable the toggle to turn on Consent Management for your Unify space. 4. On the **Enable consent enforcement for [Space Name]?** popup, enter the name of your Unify space and click **Enable enforcement**. After you've enabled Consent Management in your Unify space, you can create an Audience that only includes users that have consented to the use of their data for a particular purpose. -> warning "Consent enforcement is not automatically applied to Audiences that existed prior to the enablement of Consent Management in your Unify space" +> warning "Consent enforcement does not automatically apply to Audiences that existed prior to the enablement of Consent Management in your Unify space" > Audiences that existed before you enabled Consent Management in a Unify space only enforce consent preferences for new Profiles that enter the Audience after you enabled Consent Management. If you want to ensure each of your Audiences only includes consenting Profiles, request a resync: only Profiles that consented to the category mapped to your destination will re-enter the Audience and be sent downstream to your destination. All Audiences created after you enable Consent Management for a space only contain Profiles that consented to the use of their data for the mapped destination(s). @@ -51,11 +51,15 @@ To create a Profiles Audience that includes consent traits: 4. Continue building your Audience, adding additional conditions as you see fit. When you're satisfied with your Audience conditions, click **Next**. 5. Select one or more destinations that you'd like to receive your Audience. -Destinations mapped to a consent category only receive the Profiles of users that have consented to that category. Destinations not mapped to a consent category receive all Profiles in an Audience, regardless of the Profile's consent preferences. If opt to send your Audience to multiple destinations belonging to multiple categories, then each destination receives data for the Profiles that have consent to the destination’s mapped category. For example, if you have an audience mapped to Google Ads (mapped to the Advertising consent category) and Snowflake (mapped to the Analytics consent category), then Google Ads receives all profiles that have consented to Advertising consent category, independent of users' who consented to Analytics, and Snowflake receives all profiles that have consented to Analytics, independent of their Advertising preferences. +Destinations mapped to a consent category only receive the Profiles of users who have given consent to that category. Destinations not mapped to a consent category receive all Profiles in an Audience, regardless of the Profile's consent preferences. + +If you opt to send your Audience to multiple destinations belonging to multiple categories, then each destination receives data for the Profiles that have consent to the destination’s mapped category. For example, if you have an audience mapped to Google Ads (mapped to the Advertising consent category) and Snowflake (mapped to the Analytics consent category), then: +* Google Ads receives all profiles that have consented to Advertising consent category, independent of users' who consented to Analytics +* Snowflake receives all profiles that have consented to Analytics, independent of their Advertising preferences. ## Verify that your Audiences respect consent preferences -After you've enabled consent management in your Unify space and created a new audience with a consent trait, Segment automatically filters out data from end users that have not consented to the category that you mapped to your connected destination. +After you enable consent management in your Unify space and create a new audience with a consent trait, Segment automatically filters out data from end users that have not consented to the category that you mapped to your connected destination. However, if you'd like to confirm that this behavior is working as intended, you can either [compare an end user profile against your mapped categories](#compare-an-end-user-profile-to-your-mapped-categories) or verify that [Delivery Overview](#use-delivery-overview) contains a `FILTERED_BY_END_USER_CONSENT` event. @@ -75,4 +79,4 @@ To verify that your events are being filtered by end user consent: 2. On the Delivery Overview page, select **Filtered at destination**. 3. Search through the table of discarded events until you find an event with a discard reason of `FILTERED_BY_END_USER_CONSENT`. -If the discard reason `FILTERED_BY_END_USER_CONSENT` is present in the point where your destination discards events, your destination is enforcing your end users' consent preferences appropriately. If you cannot find a `FILTERED_BY_END_USER_CONSENT` discard reason, either wait a few minutes for more events to flow to your destination before reviewing the discard reasons again or revisit the conditions that you used to generate your Audience. +If the discard reason `FILTERED_BY_END_USER_CONSENT` is present in the point where your destination discards events, your destination is enforcing your end users' consent preferences appropriately. If you can't find a `FILTERED_BY_END_USER_CONSENT` discard reason, either wait a few minutes for more events to flow to your destination before reviewing the discard reasons again or revisit the conditions that you used to generate your Audience. diff --git a/src/privacy/consent-management/consent-in-unify.md b/src/privacy/consent-management/consent-in-unify.md index c46ebb40e5..dde6d3a570 100644 --- a/src/privacy/consent-management/consent-in-unify.md +++ b/src/privacy/consent-management/consent-in-unify.md @@ -87,7 +87,7 @@ If you use Destination Actions to send consent information to your destinations, > Segment only supports sharing consent with Actions Destinations. ## Store consent preferences on the Profile -Segment stamps consent preference on every Segment event from streaming and Reverse ETL sources as a trait to store them on the Profile. +Segment stamps consent preferences on every Segment event from streaming and Reverse ETL sources as a trait to store them on the Profile. > info "Storing consent on the Profile is in public beta" > Storing consent preferences on a Unify Profile is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. diff --git a/src/privacy/consent-management/index.md b/src/privacy/consent-management/index.md index 15380d2d5b..6c4fd8ea4d 100644 --- a/src/privacy/consent-management/index.md +++ b/src/privacy/consent-management/index.md @@ -24,6 +24,6 @@ The events, stamped with the consent object, are then sent downstream to any des For more information about consent in Segment Connections, see the [Consent in Segment Connections](/docs/privacy/consent-management/consent-in-segment-connections) documentation. -If you are a Unify user, you can also see [Consent in Unify](/docs/privacy/consent-management/consent-in-unify) for more information about the Segment Consent Preference Updated event, which Segment uses to add consent preference to the Profile. +If you're a Unify user, you can also see [Consent in Unify](/docs/privacy/consent-management/consent-in-unify) for more information about the Segment Consent Preference Updated event, which Segment uses to add consent preference to the Profile. Twilio Engage users can learn more about creating Audiences that respect end-user consent preferences in the [Consent in Twilio Engage](/docs/privacy/consent-management/consent-in-engage) documentation. From cf19988913d054eb5e0da4cb11606d4e4efe5418 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Tue, 15 Jul 2025 13:54:59 -0400 Subject: [PATCH 11/23] initial draft --- .../consent-management/consent-in-engage.md | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md index 3c6c0b5d2e..47785195a0 100644 --- a/src/privacy/consent-management/consent-in-engage.md +++ b/src/privacy/consent-management/consent-in-engage.md @@ -3,35 +3,36 @@ title: Consent in Engage Audiences plan: consent-management --- -Segment uses the [consent object](/docs/privacy/consent-in-unify/#segment-consent-preference-event) on Segment events, including the [Segment Consent Preference Updated](/docs/privacy/consent-in-unify/#segment-consent-preference-updated-event) Track event, to evaluate and store consent preferences on an end user's Profile. +Segment uses the [consent object](/docs/privacy/consent-in-unify/#segment-consent-preference-event) on Segment events, including the [Segment Consent Preference Updated](/docs/privacy/consent-in-unify/#segment-consent-preference-updated-event) Track event, to evaluate and store consent preferences on an [end user's Profile](/docs/privacy/consent-management/consent-in-unify#segment-consent-preference-updated-event). Once an end user's consent preferences are stored on their Profile, you can create Engage Audiences that respect end user consent preferences to better comply with privacy regulations. > info "Consent in Engage Audiences is in public beta" > Consent in Engage Audiences is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. > -> During the public beta, only Profiles Audiences are supported by Consent in Engage Audiences. +> Only Profiles Audiences are supported by Consent in Engage Audiences. Consent in Engage Audiences does **not** support Engage Accounts Audiences, Linked Audiences, Predictions, and Journeys. ## Enforce consent preferences in your Audiences Before using an end user's consent preferences to create your Audiences, you must complete the following prerequisites: -- You've previously set up [Consent in Segment Connections](/docs/privacy/consent-management/consent-in-segment-connections) or [Consent in Reverse ETL](/docs/privacy/consent-management/consent-in-retl) and have events stamped with the [consent object](/docs/privacy/consent-management/consent-in-segment-connections#consent-object) streaming from your source or available in your data warehouse. +- You've previously set up [Consent in Segment Connections](/docs/privacy/consent-management/configure-consent-management) or [Consent in Reverse ETL](/docs/privacy/consent-management/consent-in-retl) and have events stamped with the [consent object](/docs/privacy/consent-management/consent-in-segment-connections#consent-object) streaming from your source or available in your data warehouse. - You generate the [Segment Consent Preference Updated](/docs/privacy/consent-management/consent-in-unify#segment-consent-preference-updated-event) Track event each time a user updates their consent preferences. This event stamps each Profile with a user's consent preferences. ### Step 1: Enable consent in your Unify space -Once your consent categories are set up and mapped and each of your Profiles is stamped with the Segment Consent Preference Updated event, you're ready to enable Consent Management in your Unify space. You must enable Consent Management in each Unify space that you'd like to enforce consent preferences. If you've chosen not to enable Consent Management for a Unify space but you've previously set up Consent Management for Reverse ETL or Segment Connections, Segment continues to stamp consent preferences on your Profiles. +Once your consent categories are set up and mapped and each of your Profiles is stamped with your end user's consent preferences, you're ready to enable Consent Management in your Unify space. You must enable Consent Management in each Unify space that you'd like Segment to automatically enforce consent preferences. If you've chosen not to enable Consent Management for a Unify space but you've previously set up Consent Management for Reverse ETL or Segment Connections, Segment continues to stamp consent preferences on your Profiles. If you enable or disable a Unify space, Segment doesn't automatically enforce consent in your Audiences, but continues to store consent preferences on your Profiles. > info "" > In order to enable Consent Management in your Unify space, you must have a [Workspace Owner role](/docs/segment-app/iam/roles/). To enable Consent Management in your Unify space: -1. Navigate to **Unify** and select the space where you'd like to enable Consent Management. -2. Select **Unify settings** and navigate to the **Space management** tab. -3. Select the **Consent management** setting and enable the toggle to turn on Consent Management for your Unify space. -4. On the **Enable consent enforcement for [Space Name]?** popup, enter the name of your Unify space and click **Enable enforcement**. +1. Navigate to **Privacy > Consent Management** and select the Settings tab. +2. Enable the toggle under the Status column to turn on Consent Management for your Unify space. +3. On the **Enable consent enforcement for [Space Name]?** popup, enter the name of your Unify space and click **Enable enforcement**. -After you've enabled Consent Management in your Unify space, you can create an Audience that only includes users that have consented to the use of their data for a particular purpose. +After you’ve enabled Consent Management in your Unify space, you can create an Audience as you normally would and Segment automatically enforces your end users' consent preferences. When Segment enforces consent preferences, allow or block profiles from being sent to downstream Engage destinations based on end-user consent preference for that category. + + > warning "Consent enforcement does not automatically apply to Audiences that existed prior to the enablement of Consent Management in your Unify space" > Audiences that existed before you enabled Consent Management in a Unify space only enforce consent preferences for new Profiles that enter the Audience after you enabled Consent Management. If you want to ensure each of your Audiences only includes consenting Profiles, request a resync: only Profiles that consented to the category mapped to your destination will re-enter the Audience and be sent downstream to your destination. All Audiences created after you enable Consent Management for a space only contain Profiles that consented to the use of their data for the mapped destination(s). From f510efbd3890f906c1c12c48ce5074ab51714014 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Wed, 16 Jul 2025 10:01:25 -0400 Subject: [PATCH 12/23] addtl updates [netlify-build] --- .../consent-management/consent-in-engage.md | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md index 47785195a0..e7bceef5d7 100644 --- a/src/privacy/consent-management/consent-in-engage.md +++ b/src/privacy/consent-management/consent-in-engage.md @@ -25,32 +25,27 @@ Once your consent categories are set up and mapped and each of your Profiles is > info "" > In order to enable Consent Management in your Unify space, you must have a [Workspace Owner role](/docs/segment-app/iam/roles/). +Before you enable consent in your Unify space, you can verify that your Profiles have consent preferences by creating an Audience with a consent trait condition. If the majority of Profiles have consent preferences on them, you're ready to enable consent enforcement in your Unify space. + +If you have Profiles with consent preferences for some, but not all consent categories, Segment adds all categories to a `categoryPreferences` object on an Identify or Track call and considers consent categories without current consent preferences to be `false`. If you have Profiles with no consent preferences, Segment automatically adds an empty `categoryPreferences` object on an Identify or Track call and prevents those Profiles from flowing downstream to your destination. + To enable Consent Management in your Unify space: 1. Navigate to **Privacy > Consent Management** and select the Settings tab. 2. Enable the toggle under the Status column to turn on Consent Management for your Unify space. 3. On the **Enable consent enforcement for [Space Name]?** popup, enter the name of your Unify space and click **Enable enforcement**. -After you’ve enabled Consent Management in your Unify space, you can create an Audience as you normally would and Segment automatically enforces your end users' consent preferences. When Segment enforces consent preferences, allow or block profiles from being sent to downstream Engage destinations based on end-user consent preference for that category. - - +After you’ve enabled Consent Management in your Unify space, you can create an Audience as you normally would and Segment automatically allows or blocks profiles from flowing to your downstream destinations, based on end-user preferences and your destination mapping. > warning "Consent enforcement does not automatically apply to Audiences that existed prior to the enablement of Consent Management in your Unify space" -> Audiences that existed before you enabled Consent Management in a Unify space only enforce consent preferences for new Profiles that enter the Audience after you enabled Consent Management. If you want to ensure each of your Audiences only includes consenting Profiles, request a resync: only Profiles that consented to the category mapped to your destination will re-enter the Audience and be sent downstream to your destination. All Audiences created after you enable Consent Management for a space only contain Profiles that consented to the use of their data for the mapped destination(s). +> Audiences that existed before you enabled Consent Management in a Unify space only enforce consent preferences for new Profiles that enter the Audience after you enabled Consent Management. If you want to ensure each of your Audiences only includes consenting Profiles, request a resync. All Audiences created after you enable Consent Management for a space automatically enforce consent preferences when sharing their data with mapped destination(s). ### Step 2: Create your Audience > info "Consent preferences can affect Audience sync size" -> The number of profiles that sync to your Audience depends on the number of end users that consented to their data being shared with the destinations connected to your Audience. To see the impact of consent on your Audience, add consent traits to the Audience builder. - -During the public beta, you can create Profiles Audiences from your users' consent preferences. +> The number of profiles that sync to your Engage destination(s) depends on the number of end users that consented to their data being shared with the destinations connected to your Audience. To see the impact of consent on your Audience, add consent traits to the Audience builder. -To create a Profiles Audience that includes consent traits: -1. Navigate to **Engage > Audiences** and click **+ New audience**, then select **Audience**. -2. On the Select Audience Type screen, select **Profiles audience** then click **Next**. -3. Add a condition and select **Have a consent trait**, then select your intended consent category, operator, and true/false value. -4. Continue building your Audience, adding additional conditions as you see fit. When you're satisfied with your Audience conditions, click **Next**. -5. Select one or more destinations that you'd like to receive your Audience. +During the public beta, you can create a Profiles Audiences as you normally would and Segment automatically enforces consent in your downstream destinations. If you don't want Segment to automatically enforce consent, disable consent enforcement in your Unify space and manually add the consent trait Audience condition when building your Audiences. Destinations mapped to a consent category only receive the Profiles of users who have given consent to that category. Destinations not mapped to a consent category receive all Profiles in an Audience, regardless of the Profile's consent preferences. @@ -60,7 +55,7 @@ If you opt to send your Audience to multiple destinations belonging to multiple ## Verify that your Audiences respect consent preferences -After you enable consent management in your Unify space and create a new audience with a consent trait, Segment automatically filters out data from end users that have not consented to the category that you mapped to your connected destination. +After you enable consent management in your Unify space and create a new audience, Segment automatically filters out data from end users that have not consented to the category that you mapped to your connected destination. However, if you'd like to confirm that this behavior is working as intended, you can either [compare an end user profile against your mapped categories](#compare-an-end-user-profile-to-your-mapped-categories) or verify that [Delivery Overview](#use-delivery-overview) contains a `FILTERED_BY_END_USER_CONSENT` event. @@ -80,4 +75,4 @@ To verify that your events are being filtered by end user consent: 2. On the Delivery Overview page, select **Filtered at destination**. 3. Search through the table of discarded events until you find an event with a discard reason of `FILTERED_BY_END_USER_CONSENT`. -If the discard reason `FILTERED_BY_END_USER_CONSENT` is present in the point where your destination discards events, your destination is enforcing your end users' consent preferences appropriately. If you can't find a `FILTERED_BY_END_USER_CONSENT` discard reason, either wait a few minutes for more events to flow to your destination before reviewing the discard reasons again or revisit the conditions that you used to generate your Audience. +If the discard reason `FILTERED_BY_END_USER_CONSENT` is present in the point where your destination discards events, your destination is enforcing your end users' consent preferences appropriately. From d70e365c1b37e9de3197be8cf1aefe471945dfd4 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Wed, 16 Jul 2025 13:19:56 -0400 Subject: [PATCH 13/23] add unsupported destinations [netlify-build] --- src/privacy/consent-management/consent-in-engage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md index e7bceef5d7..a53983bcb7 100644 --- a/src/privacy/consent-management/consent-in-engage.md +++ b/src/privacy/consent-management/consent-in-engage.md @@ -10,7 +10,7 @@ Once an end user's consent preferences are stored on their Profile, you can crea > info "Consent in Engage Audiences is in public beta" > Consent in Engage Audiences is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. > -> Only Profiles Audiences are supported by Consent in Engage Audiences. Consent in Engage Audiences does **not** support Engage Accounts Audiences, Linked Audiences, Predictions, and Journeys. +> Only Profiles Audiences are supported by Consent in Engage Audiences. Consent in Engage Audiences does **not** support Engage Accounts Audiences, Linked Audiences, Predictions, and Journeys. Segment does not automatically enforce consent for the [LiveRamp Audiences](/docs/connections/destinations/catalog/actions-liveramp-audiences/) and [The Trade Desk CRM](/docs/connections/destinations/catalog/actions-the-trade-desk-crm/) destinations. ## Enforce consent preferences in your Audiences From 2026da72d72cc1cd4b8cb3a121b76263495d78c3 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Thu, 17 Jul 2025 10:42:43 -0400 Subject: [PATCH 14/23] Apply suggestions from code review --- src/privacy/consent-management/consent-in-engage.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md index a53983bcb7..6ee109d17f 100644 --- a/src/privacy/consent-management/consent-in-engage.md +++ b/src/privacy/consent-management/consent-in-engage.md @@ -10,7 +10,7 @@ Once an end user's consent preferences are stored on their Profile, you can crea > info "Consent in Engage Audiences is in public beta" > Consent in Engage Audiences is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. > -> Only Profiles Audiences are supported by Consent in Engage Audiences. Consent in Engage Audiences does **not** support Engage Accounts Audiences, Linked Audiences, Predictions, and Journeys. Segment does not automatically enforce consent for the [LiveRamp Audiences](/docs/connections/destinations/catalog/actions-liveramp-audiences/) and [The Trade Desk CRM](/docs/connections/destinations/catalog/actions-the-trade-desk-crm/) destinations. +> Only Profiles Audiences are supported by Consent in Engage Audiences. Consent in Engage Audiences does **not** support Engage Accounts Audiences, Linked Audiences, Predictions, Computed Traits, and Journeys. Segment does not automatically enforce consent for the [LiveRamp Audiences](/docs/connections/destinations/catalog/actions-liveramp-audiences/) and [The Trade Desk CRM](/docs/connections/destinations/catalog/actions-the-trade-desk-crm/) destinations. ## Enforce consent preferences in your Audiences @@ -20,7 +20,7 @@ Before using an end user's consent preferences to create your Audiences, you mus ### Step 1: Enable consent in your Unify space -Once your consent categories are set up and mapped and each of your Profiles is stamped with your end user's consent preferences, you're ready to enable Consent Management in your Unify space. You must enable Consent Management in each Unify space that you'd like Segment to automatically enforce consent preferences. If you've chosen not to enable Consent Management for a Unify space but you've previously set up Consent Management for Reverse ETL or Segment Connections, Segment continues to stamp consent preferences on your Profiles. If you enable or disable a Unify space, Segment doesn't automatically enforce consent in your Audiences, but continues to store consent preferences on your Profiles. +Once your consent categories are set up, you've mapped your destinations to a consent category, and each of your Profiles is stamped with your end user's consent preferences, you're ready to enable Consent Management in your Unify space. You must enable Consent Management in each Unify space that you'd like Segment to automatically enforce consent preferences. If you've chosen not to enable Consent Management for a Unify space but you've previously set up Consent Management for Reverse ETL or Segment Connections, Segment continues to stamp consent preferences on your Profiles. If you enable or disable consent enforcement in your Unify space, you are only enabling or disabling automatic consent enforcement in Engage Audiences: Segment will continue to store consent preferences on your Profiles even if you've disabled consent enforcement in your Unify space. > info "" > In order to enable Consent Management in your Unify space, you must have a [Workspace Owner role](/docs/segment-app/iam/roles/). From 6865b18d1a33095743baa0d3d1d811a13ff68cd4 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Fri, 18 Jul 2025 12:07:23 -0400 Subject: [PATCH 15/23] Update src/privacy/consent-management/consent-in-engage.md --- src/privacy/consent-management/consent-in-engage.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md index 6ee109d17f..75265b90ae 100644 --- a/src/privacy/consent-management/consent-in-engage.md +++ b/src/privacy/consent-management/consent-in-engage.md @@ -61,10 +61,7 @@ However, if you'd like to confirm that this behavior is working as intended, you ### Compare an end user Profile to your mapped categories -To verify that your end user's consent preferences match the category that you mapped to your destination: -1. Navigate to the connected destination and select a Profile. -2. Return to Segment and compare the consent preferences of that Profile against the consent category of the connected destination. -3. Verify that the consent preferences of your selected user match the consent category that you mapped to your destination. +You can verify that your Audiences are respecting consent preferences by selecting a user Profile, identifying one category they consented to, and confirming that the user's Profile appears in one of the destinations mapped to that category. ### Use Delivery Overview From aab2c6f175c990f0001d2bc51869951fcd20ac58 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Fri, 18 Jul 2025 12:08:14 -0400 Subject: [PATCH 16/23] [netlify-build] --- src/privacy/consent-management/consent-in-engage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md index 6ee109d17f..7727de904a 100644 --- a/src/privacy/consent-management/consent-in-engage.md +++ b/src/privacy/consent-management/consent-in-engage.md @@ -75,4 +75,4 @@ To verify that your events are being filtered by end user consent: 2. On the Delivery Overview page, select **Filtered at destination**. 3. Search through the table of discarded events until you find an event with a discard reason of `FILTERED_BY_END_USER_CONSENT`. -If the discard reason `FILTERED_BY_END_USER_CONSENT` is present in the point where your destination discards events, your destination is enforcing your end users' consent preferences appropriately. +If the discard reason `FILTERED_BY_END_USER_CONSENT` is present in the point where your destination discards events, your destination is enforcing your end users' consent preferences appropriately. \ No newline at end of file From 89ad32e00d268b01d7faca1126ff71d71d52f2c8 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Fri, 18 Jul 2025 12:16:05 -0400 Subject: [PATCH 17/23] [netlify-build] --- src/privacy/consent-management/consent-in-engage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md index 863f3f3d78..75265b90ae 100644 --- a/src/privacy/consent-management/consent-in-engage.md +++ b/src/privacy/consent-management/consent-in-engage.md @@ -72,4 +72,4 @@ To verify that your events are being filtered by end user consent: 2. On the Delivery Overview page, select **Filtered at destination**. 3. Search through the table of discarded events until you find an event with a discard reason of `FILTERED_BY_END_USER_CONSENT`. -If the discard reason `FILTERED_BY_END_USER_CONSENT` is present in the point where your destination discards events, your destination is enforcing your end users' consent preferences appropriately. \ No newline at end of file +If the discard reason `FILTERED_BY_END_USER_CONSENT` is present in the point where your destination discards events, your destination is enforcing your end users' consent preferences appropriately. From f6b54b96378cf2dbe2b897848c9848702e4b00bc Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Fri, 18 Jul 2025 13:39:45 -0400 Subject: [PATCH 18/23] reorganize content [netlify-build] --- .../consent-management/consent-in-engage.md | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md index 75265b90ae..c404fcf420 100644 --- a/src/privacy/consent-management/consent-in-engage.md +++ b/src/privacy/consent-management/consent-in-engage.md @@ -5,7 +5,7 @@ plan: consent-management Segment uses the [consent object](/docs/privacy/consent-in-unify/#segment-consent-preference-event) on Segment events, including the [Segment Consent Preference Updated](/docs/privacy/consent-in-unify/#segment-consent-preference-updated-event) Track event, to evaluate and store consent preferences on an [end user's Profile](/docs/privacy/consent-management/consent-in-unify#segment-consent-preference-updated-event). -Once an end user's consent preferences are stored on their Profile, you can create Engage Audiences that respect end user consent preferences to better comply with privacy regulations. +Once an end user's consent preferences are stored on their Profile, you can create Engage Audiences that respect end user consent preferences to better comply with privacy regulations. > info "Consent in Engage Audiences is in public beta" > Consent in Engage Audiences is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. @@ -15,49 +15,49 @@ Once an end user's consent preferences are stored on their Profile, you can crea ## Enforce consent preferences in your Audiences Before using an end user's consent preferences to create your Audiences, you must complete the following prerequisites: -- You've previously set up [Consent in Segment Connections](/docs/privacy/consent-management/configure-consent-management) or [Consent in Reverse ETL](/docs/privacy/consent-management/consent-in-retl) and have events stamped with the [consent object](/docs/privacy/consent-management/consent-in-segment-connections#consent-object) streaming from your source or available in your data warehouse. -- You generate the [Segment Consent Preference Updated](/docs/privacy/consent-management/consent-in-unify#segment-consent-preference-updated-event) Track event each time a user updates their consent preferences. This event stamps each Profile with a user's consent preferences. +- You set up [Consent in Segment Connections](/docs/privacy/consent-management/configure-consent-management) or [Consent in Reverse ETL](/docs/privacy/consent-management/consent-in-retl) and have events stamped with the [consent object](/docs/privacy/consent-management/consent-in-segment-connections#consent-object) streaming from your source or available in your data warehouse. +- You generate the [Segment Consent Preference Updated](/docs/privacy/consent-management/consent-in-unify#segment-consent-preference-updated-event) Track event each time a user updates their consent preferences. This event stamps each Profile with a user's consent preferences. +- You verified that your Profiles have consent preferences by creating an Audience with a consent trait condition. If the majority of Profiles have consent preferences on them, you're ready to enable consent enforcement in your Unify space. + +> info "How does Segment handle Profiles with missing consent preferences?" +> If you have Profiles with consent preferences for some, but not all consent categories, Segment adds all categories to a `categoryPreferences` object on an Identify or Track call and considers consent categories without current consent preferences to be `false`. If you have Profiles with no consent preferences, Segment automatically adds an empty `categoryPreferences` object on an Identify or Track call and prevents those Profiles from flowing downstream to your destination. ### Step 1: Enable consent in your Unify space -Once your consent categories are set up, you've mapped your destinations to a consent category, and each of your Profiles is stamped with your end user's consent preferences, you're ready to enable Consent Management in your Unify space. You must enable Consent Management in each Unify space that you'd like Segment to automatically enforce consent preferences. If you've chosen not to enable Consent Management for a Unify space but you've previously set up Consent Management for Reverse ETL or Segment Connections, Segment continues to stamp consent preferences on your Profiles. If you enable or disable consent enforcement in your Unify space, you are only enabling or disabling automatic consent enforcement in Engage Audiences: Segment will continue to store consent preferences on your Profiles even if you've disabled consent enforcement in your Unify space. +Once your consent categories are set up, you've mapped your destinations to a consent category, and each of your Profiles is stamped with your end user's consent preferences, you're ready to enable Consent Management in your Unify space. You must enable Consent Management in each Unify space that you'd like Segment to automatically enforce consent preferences. > info "" -> In order to enable Consent Management in your Unify space, you must have a [Workspace Owner role](/docs/segment-app/iam/roles/). - -Before you enable consent in your Unify space, you can verify that your Profiles have consent preferences by creating an Audience with a consent trait condition. If the majority of Profiles have consent preferences on them, you're ready to enable consent enforcement in your Unify space. - -If you have Profiles with consent preferences for some, but not all consent categories, Segment adds all categories to a `categoryPreferences` object on an Identify or Track call and considers consent categories without current consent preferences to be `false`. If you have Profiles with no consent preferences, Segment automatically adds an empty `categoryPreferences` object on an Identify or Track call and prevents those Profiles from flowing downstream to your destination. +> To enable Consent Management in your Unify space, you must have a [Workspace Owner role](/docs/segment-app/iam/roles/). To enable Consent Management in your Unify space: 1. Navigate to **Privacy > Consent Management** and select the Settings tab. 2. Enable the toggle under the Status column to turn on Consent Management for your Unify space. 3. On the **Enable consent enforcement for [Space Name]?** popup, enter the name of your Unify space and click **Enable enforcement**. -After you’ve enabled Consent Management in your Unify space, you can create an Audience as you normally would and Segment automatically allows or blocks profiles from flowing to your downstream destinations, based on end-user preferences and your destination mapping. - -> warning "Consent enforcement does not automatically apply to Audiences that existed prior to the enablement of Consent Management in your Unify space" -> Audiences that existed before you enabled Consent Management in a Unify space only enforce consent preferences for new Profiles that enter the Audience after you enabled Consent Management. If you want to ensure each of your Audiences only includes consenting Profiles, request a resync. All Audiences created after you enable Consent Management for a space automatically enforce consent preferences when sharing their data with mapped destination(s). +After you’ve enabled Consent Management in your Unify space, you can create an Audience as you normally would and Segment automatically enforces consent in your downstream destinations. +> info "" +> If you choose not to enable Consent Management for a Unify space but you've set up Consent Management for Reverse ETL or Segment Connections, Segment continues to stamp consent preferences on your Profiles. If you enable or disable consent enforcement in your Unify space, you are only enabling or disabling automatic consent enforcement in Engage Audiences: Segment will continue to store consent preferences on your Profiles even if you've disabled consent enforcement in your Unify space. ### Step 2: Create your Audience -> info "Consent preferences can affect Audience sync size" -> The number of profiles that sync to your Engage destination(s) depends on the number of end users that consented to their data being shared with the destinations connected to your Audience. To see the impact of consent on your Audience, add consent traits to the Audience builder. - -During the public beta, you can create a Profiles Audiences as you normally would and Segment automatically enforces consent in your downstream destinations. If you don't want Segment to automatically enforce consent, disable consent enforcement in your Unify space and manually add the consent trait Audience condition when building your Audiences. - -Destinations mapped to a consent category only receive the Profiles of users who have given consent to that category. Destinations not mapped to a consent category receive all Profiles in an Audience, regardless of the Profile's consent preferences. +During the public beta, you can create a Profiles Audiences as you normally would and Segment automatically allows or blocks profiles from flowing to your downstream destinations, based on end-user preferences and your destination mapping. If you don't want Segment to automatically enforce consent, disable consent enforcement in your Unify space and manually add the consent trait Audience condition when building your Audiences. If you opt to send your Audience to multiple destinations belonging to multiple categories, then each destination receives data for the Profiles that have consent to the destination’s mapped category. For example, if you have an audience mapped to Google Ads (mapped to the Advertising consent category) and Snowflake (mapped to the Analytics consent category), then: * Google Ads receives all profiles that have consented to Advertising consent category, independent of users' who consented to Analytics * Snowflake receives all profiles that have consented to Analytics, independent of their Advertising preferences. +> info "Consent preferences can affect Audience sync size" +> The number of profiles that sync to your Engage destination(s) depends on the number of end users that consented to their data being shared with the destinations connected to your Audience. To see the impact of consent on your Audience, add consent traits to the Audience builder. + ## Verify that your Audiences respect consent preferences After you enable consent management in your Unify space and create a new audience, Segment automatically filters out data from end users that have not consented to the category that you mapped to your connected destination. -However, if you'd like to confirm that this behavior is working as intended, you can either [compare an end user profile against your mapped categories](#compare-an-end-user-profile-to-your-mapped-categories) or verify that [Delivery Overview](#use-delivery-overview) contains a `FILTERED_BY_END_USER_CONSENT` event. +However, if you'd like to confirm that this behavior is working as intended, you can either [compare an end user Profile against your mapped categories](#compare-an-end-user-profile-to-your-mapped-categories) or verify that [Delivery Overview](#use-delivery-overview) contains a `FILTERED_BY_END_USER_CONSENT` event. + +> warning "Consent enforcement does not automatically apply to Audiences that existed prior to the enablement of Consent Management in your Unify space" +> Audiences that existed before you enabled Consent Management in a Unify space only enforce consent preferences for new Profiles that enter the Audience after you enabled Consent Management. If you want to ensure each of your Audiences only includes consenting Profiles, request a resync. All Audiences created after you enable Consent Management for a space automatically enforce consent preferences when sharing their data with mapped destination(s). ### Compare an end user Profile to your mapped categories @@ -72,4 +72,4 @@ To verify that your events are being filtered by end user consent: 2. On the Delivery Overview page, select **Filtered at destination**. 3. Search through the table of discarded events until you find an event with a discard reason of `FILTERED_BY_END_USER_CONSENT`. -If the discard reason `FILTERED_BY_END_USER_CONSENT` is present in the point where your destination discards events, your destination is enforcing your end users' consent preferences appropriately. +If the discard reason `FILTERED_BY_END_USER_CONSENT` is present in the point where your destination discards events, your destination is enforcing your end users' consent preferences appropriately. \ No newline at end of file From 66554875cbc32fe221980027e21289a916579e5f Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Mon, 21 Jul 2025 10:57:40 -0400 Subject: [PATCH 19/23] content update [netlify-build] --- .../consent-management/consent-in-engage.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md index c404fcf420..fac97d694d 100644 --- a/src/privacy/consent-management/consent-in-engage.md +++ b/src/privacy/consent-management/consent-in-engage.md @@ -3,28 +3,26 @@ title: Consent in Engage Audiences plan: consent-management --- -Segment uses the [consent object](/docs/privacy/consent-in-unify/#segment-consent-preference-event) on Segment events, including the [Segment Consent Preference Updated](/docs/privacy/consent-in-unify/#segment-consent-preference-updated-event) Track event, to evaluate and store consent preferences on an [end user's Profile](/docs/privacy/consent-management/consent-in-unify#segment-consent-preference-updated-event). +Once an end user's consent preferences are [stored on their Profile](/docs/privacy/consent-management/consent-in-unify#segment-consent-preference-updated-event), you can create Engage Audiences that respect end user consent preferences to better comply with privacy regulations. -Once an end user's consent preferences are stored on their Profile, you can create Engage Audiences that respect end user consent preferences to better comply with privacy regulations. - -> info "Consent in Engage Audiences is in public beta" +> info "Consent in Engage Profiles Audiences is in public beta" > Consent in Engage Audiences is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. > -> Only Profiles Audiences are supported by Consent in Engage Audiences. Consent in Engage Audiences does **not** support Engage Accounts Audiences, Linked Audiences, Predictions, Computed Traits, and Journeys. Segment does not automatically enforce consent for the [LiveRamp Audiences](/docs/connections/destinations/catalog/actions-liveramp-audiences/) and [The Trade Desk CRM](/docs/connections/destinations/catalog/actions-the-trade-desk-crm/) destinations. +> Consent in Engage Audiences does **not** support Engage Accounts Audiences, Linked Audiences, Predictions, Computed Traits, and Journeys. Segment does not automatically enforce consent for the [LiveRamp Audiences](/docs/connections/destinations/catalog/actions-liveramp-audiences/) and [The Trade Desk CRM](/docs/connections/destinations/catalog/actions-the-trade-desk-crm/) destinations. ## Enforce consent preferences in your Audiences -Before using an end user's consent preferences to create your Audiences, you must complete the following prerequisites: -- You set up [Consent in Segment Connections](/docs/privacy/consent-management/configure-consent-management) or [Consent in Reverse ETL](/docs/privacy/consent-management/consent-in-retl) and have events stamped with the [consent object](/docs/privacy/consent-management/consent-in-segment-connections#consent-object) streaming from your source or available in your data warehouse. -- You generate the [Segment Consent Preference Updated](/docs/privacy/consent-management/consent-in-unify#segment-consent-preference-updated-event) Track event each time a user updates their consent preferences. This event stamps each Profile with a user's consent preferences. -- You verified that your Profiles have consent preferences by creating an Audience with a consent trait condition. If the majority of Profiles have consent preferences on them, you're ready to enable consent enforcement in your Unify space. +Before enforcing consent preferences in your Profiles Audiences, you must complete the following prerequisites: +- Set up [Consent in Segment Connections](/docs/privacy/consent-management/configure-consent-management) or [Consent in Reverse ETL](/docs/privacy/consent-management/consent-in-retl) and have events stamped with the [consent object](/docs/privacy/consent-management/consent-in-segment-connections#consent-object) streaming from your source or available in your data warehouse. +- Map your Engage Destinations to consent categories. Segment assumes all Engage Destinations not mapped to a consent category do not require consent and will recieve all events containing a consent object. +- Verify that your Profiles have consent preferences by creating an Audience with a consent trait condition. If the majority of Profiles have consent preferences on them, you're ready to enable consent enforcement in your Unify space. > info "How does Segment handle Profiles with missing consent preferences?" > If you have Profiles with consent preferences for some, but not all consent categories, Segment adds all categories to a `categoryPreferences` object on an Identify or Track call and considers consent categories without current consent preferences to be `false`. If you have Profiles with no consent preferences, Segment automatically adds an empty `categoryPreferences` object on an Identify or Track call and prevents those Profiles from flowing downstream to your destination. ### Step 1: Enable consent in your Unify space -Once your consent categories are set up, you've mapped your destinations to a consent category, and each of your Profiles is stamped with your end user's consent preferences, you're ready to enable Consent Management in your Unify space. You must enable Consent Management in each Unify space that you'd like Segment to automatically enforce consent preferences. +You can enable Consent Management in each Unify space that you'd like Segment to automatically enforce consent preferences. If you've chosen not to enable Consent Management for a Unify space but have set up Consent Management for Reverse ETL or Segment Connections, Segment continues to stamp consent preferences on your Profiles. > info "" > To enable Consent Management in your Unify space, you must have a [Workspace Owner role](/docs/segment-app/iam/roles/). @@ -34,14 +32,14 @@ To enable Consent Management in your Unify space: 2. Enable the toggle under the Status column to turn on Consent Management for your Unify space. 3. On the **Enable consent enforcement for [Space Name]?** popup, enter the name of your Unify space and click **Enable enforcement**. -After you’ve enabled Consent Management in your Unify space, you can create an Audience as you normally would and Segment automatically enforces consent in your downstream destinations. +### Step 2: Create your Audience -> info "" -> If you choose not to enable Consent Management for a Unify space but you've set up Consent Management for Reverse ETL or Segment Connections, Segment continues to stamp consent preferences on your Profiles. If you enable or disable consent enforcement in your Unify space, you are only enabling or disabling automatic consent enforcement in Engage Audiences: Segment will continue to store consent preferences on your Profiles even if you've disabled consent enforcement in your Unify space. +You can create a Profiles Audiences as you normally would and Segment automatically enforces consent in your downstream destinations. If you don't want Segment to automatically enforce consent, disable consent enforcement in your Unify space and manually add the consent trait Audience condition when building your Audiences. -### Step 2: Create your Audience +> warning "Consent enforcement doesn't automatically apply to Audiences that existed prior to the enablement of Consent Management in your Unify space" +> Audiences that existed before you enabled Consent Management in a Unify space only enforce consent preferences for new Profiles that enter the Audience after you enabled Consent Management. If you want to ensure each of your Audiences only includes consenting Profiles, request a resync. All Audiences created after you enable Consent Management for a space automatically enforce consent preferences when sharing their data with mapped destination(s). -During the public beta, you can create a Profiles Audiences as you normally would and Segment automatically allows or blocks profiles from flowing to your downstream destinations, based on end-user preferences and your destination mapping. If you don't want Segment to automatically enforce consent, disable consent enforcement in your Unify space and manually add the consent trait Audience condition when building your Audiences. +Destinations mapped to a consent category only receive the Profiles of users who have given consent to that category. Destinations not mapped to a consent category receive all Profiles in an Audience, regardless of the Profile's consent preferences. If you opt to send your Audience to multiple destinations belonging to multiple categories, then each destination receives data for the Profiles that have consent to the destination’s mapped category. For example, if you have an audience mapped to Google Ads (mapped to the Advertising consent category) and Snowflake (mapped to the Analytics consent category), then: * Google Ads receives all profiles that have consented to Advertising consent category, independent of users' who consented to Analytics @@ -50,9 +48,11 @@ If you opt to send your Audience to multiple destinations belonging to multiple > info "Consent preferences can affect Audience sync size" > The number of profiles that sync to your Engage destination(s) depends on the number of end users that consented to their data being shared with the destinations connected to your Audience. To see the impact of consent on your Audience, add consent traits to the Audience builder. +If you have Profiles with consent preferences for some, but not all consent categories, Segment adds all available categories to the `categoryPreferences` object on all Identify and/or Track calls and considers missing consent categories to be `false`. If you have Profiles with no consent preferences, Segment automatically adds an empty `categoryPreferences` object and prevents those Profiles from flowing downstream to your destination. + ## Verify that your Audiences respect consent preferences -After you enable consent management in your Unify space and create a new audience, Segment automatically filters out data from end users that have not consented to the category that you mapped to your connected destination. +After you enable consent management in your Unify space, Segment automatically filters out end users that have not consented to the category that you mapped to your connected destination. However, if you'd like to confirm that this behavior is working as intended, you can either [compare an end user Profile against your mapped categories](#compare-an-end-user-profile-to-your-mapped-categories) or verify that [Delivery Overview](#use-delivery-overview) contains a `FILTERED_BY_END_USER_CONSENT` event. @@ -65,7 +65,7 @@ You can verify that your Audiences are respecting consent preferences by selecti ### Use Delivery Overview -You can use Delivery Overview to verify that your destination is enforcing your user's consent preferences by checking for the presence of a `FILTERED_BY_END_USER_CONSENT` discard reason. +You can use [Delivery Overview](/docs/connections/delivery-overview/) to verify that your destination is enforcing your user's consent preferences by checking for the presence of a `FILTERED_BY_END_USER_CONSENT` discard reason. To verify that your events are being filtered by end user consent: 1. Select the destination connected to your Engage Audience. From 968dac285576f62d275f4412ae2d80cda45fa730 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Mon, 21 Jul 2025 11:25:27 -0400 Subject: [PATCH 20/23] addtl fixes [netlify-build] --- src/privacy/consent-management/consent-in-engage.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md index fac97d694d..de52ca2ac0 100644 --- a/src/privacy/consent-management/consent-in-engage.md +++ b/src/privacy/consent-management/consent-in-engage.md @@ -17,9 +17,6 @@ Before enforcing consent preferences in your Profiles Audiences, you must comple - Map your Engage Destinations to consent categories. Segment assumes all Engage Destinations not mapped to a consent category do not require consent and will recieve all events containing a consent object. - Verify that your Profiles have consent preferences by creating an Audience with a consent trait condition. If the majority of Profiles have consent preferences on them, you're ready to enable consent enforcement in your Unify space. -> info "How does Segment handle Profiles with missing consent preferences?" -> If you have Profiles with consent preferences for some, but not all consent categories, Segment adds all categories to a `categoryPreferences` object on an Identify or Track call and considers consent categories without current consent preferences to be `false`. If you have Profiles with no consent preferences, Segment automatically adds an empty `categoryPreferences` object on an Identify or Track call and prevents those Profiles from flowing downstream to your destination. - ### Step 1: Enable consent in your Unify space You can enable Consent Management in each Unify space that you'd like Segment to automatically enforce consent preferences. If you've chosen not to enable Consent Management for a Unify space but have set up Consent Management for Reverse ETL or Segment Connections, Segment continues to stamp consent preferences on your Profiles. From 5aa78fb9025316b881058441bd84a7642035961a Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Tue, 29 Jul 2025 12:52:12 -0400 Subject: [PATCH 21/23] Liveramp and TTD CRM destinations now supported --- src/privacy/consent-management/consent-in-engage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md index de52ca2ac0..a206bd8c98 100644 --- a/src/privacy/consent-management/consent-in-engage.md +++ b/src/privacy/consent-management/consent-in-engage.md @@ -8,7 +8,7 @@ Once an end user's consent preferences are [stored on their Profile](/docs/priva > info "Consent in Engage Profiles Audiences is in public beta" > Consent in Engage Audiences is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. > -> Consent in Engage Audiences does **not** support Engage Accounts Audiences, Linked Audiences, Predictions, Computed Traits, and Journeys. Segment does not automatically enforce consent for the [LiveRamp Audiences](/docs/connections/destinations/catalog/actions-liveramp-audiences/) and [The Trade Desk CRM](/docs/connections/destinations/catalog/actions-the-trade-desk-crm/) destinations. +> Consent in Engage Audiences does **not** support Engage Accounts Audiences, Linked Audiences, Predictions, Computed Traits, and Journeys. ## Enforce consent preferences in your Audiences From 2c9816d604a968e0e0f6988664397d2552cf803e Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Tue, 2 Sep 2025 10:23:50 -0400 Subject: [PATCH 22/23] Update src/privacy/consent-management/consent-in-engage.md --- src/privacy/consent-management/consent-in-engage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/privacy/consent-management/consent-in-engage.md b/src/privacy/consent-management/consent-in-engage.md index a206bd8c98..1bcb7ab1e7 100644 --- a/src/privacy/consent-management/consent-in-engage.md +++ b/src/privacy/consent-management/consent-in-engage.md @@ -6,7 +6,7 @@ plan: consent-management Once an end user's consent preferences are [stored on their Profile](/docs/privacy/consent-management/consent-in-unify#segment-consent-preference-updated-event), you can create Engage Audiences that respect end user consent preferences to better comply with privacy regulations. > info "Consent in Engage Profiles Audiences is in public beta" -> Consent in Engage Audiences is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. +> Consent in Engage Audiences is in public beta, and Segment is actively working on this feature. Some functionality may change before it becomes generally available. Contact your account team to participate in the public beta. > > Consent in Engage Audiences does **not** support Engage Accounts Audiences, Linked Audiences, Predictions, Computed Traits, and Journeys. From fc858ae323f6be15a9eeb6f9ed69db5a3ed73580 Mon Sep 17 00:00:00 2001 From: forstisabella <92472883+forstisabella@users.noreply.github.com> Date: Tue, 2 Sep 2025 13:41:41 -0400 Subject: [PATCH 23/23] add screenshot standardize language --- src/monitor/alerts/custom-alerts.md | 14 ++++++++------ src/monitor/images/custom-alerting.png | Bin 0 -> 119220 bytes 2 files changed, 8 insertions(+), 6 deletions(-) create mode 100644 src/monitor/images/custom-alerting.png diff --git a/src/monitor/alerts/custom-alerts.md b/src/monitor/alerts/custom-alerts.md index 4426854d23..5edc84d751 100644 --- a/src/monitor/alerts/custom-alerts.md +++ b/src/monitor/alerts/custom-alerts.md @@ -5,7 +5,9 @@ title: Custom Alerts Segment's custom alerts allow you to customize the sensitivity of the trigger that activates an alert so you can more accurately detect event volume fluctuations in your integrations. > info "Public beta" -> The Monitor hub is in Public Beta. Some functionality may change before it becomes generally available. During the public beta, custom alerts are not located in the Monitor tab. +> The Monitor hub is in Public Beta. Some functionality may change before it becomes generally available. + +![A screenshot of the custom alerts tab for a Segment workspace depicting three different source volume alerts with different integrations and thresholds.](/docs/monitor/images/custom-alerting.png) You can create alerts for the following product areas: - [Sources](#source-volume-alert) @@ -14,7 +16,7 @@ You can create alerts for the following product areas: - [Twilio Engage](#activation-event-health-spikes-or-drops) ## Source volume alert -You can create an alert that notifies you when the volume of events received by your source in the last 24 hours changes beyond a percentage you set. For example, if you set a change percentage of 4% and your source received 100 events over the first 24 hours, Segment would notify you the following day if your source ingested fewer than 96 or more than 104 events. +You can create an alert that notifies you when the volume of events received by your source in the last 24 hours changes beyond a threshold you set. For example, if you set a threshold of 4% and your source received 100 events over the first 24 hours, Segment would notify you the following day if your source ingested fewer than 96 or more than 104 events. To receive a source volume alert in a Slack channel, you must first create a Slack webhook. For more information about Slack webhooks, see the [Sending messages using incoming webhooks](https://api.slack.com/messaging/webhooks){:target="_blank”} documentation. @@ -40,14 +42,14 @@ To delete a source volume alert, select the icon in the Actions column for the a ## Successful delivery rate alert -You can create an alert that notifies you when the volume of events successfully received by your destination in the last 24 hours falls below a percentage you set. For example, if you set a percentage of 99%, Segment notifies you if your destination had a successful delivery rate of 98% or below. +You can create an alert that notifies you when the volume of events successfully received by your destination in the last 24 hours falls below a threshold you set. For example, if you set a threshold of 99%, Segment notifies you if your destination had a successful delivery rate of 98% or below. To receive a successful delivery rate alert in a Slack channel, you must first create a Slack webhook. For more information about Slack webhooks, see the [Sending messages using incoming webhooks](https://api.slack.com/messaging/webhooks){:target="_blank”} documentation. To create a successful delivery rate alert: 1. Navigate to the [cloud-mode destinations](/docs/connections/destinations/#:~:text=Cloud%2Dmode%3A%20The%20sources%20send%20data%20directly%20to%20the%20Segment%20servers%2C%20which%20then%20translate%20it%20for%20each%20connected%20downstream%20destination%2C%20and%20send%20it%20on.) you'd like to configure alerts for. 2. Select the Alerts tab and click **Create alert**. -3. On the Create alert sidesheet, enter a percentage. You will receive events if your successful delivery rate falls below this percentage. +3. On the Create alert sidesheet, enter a percentage. You will receive events if your successful delivery rate falls below this threshold. 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. @@ -60,7 +62,7 @@ To delete a successful delivery rate alert, select the icon in the Actions colum ## Mapping-level successful delivery rate fluctuations -You can create an alert that notifies you when the volume of events successfully received by your mapping in the last 24 hours falls below a percentage you set. For example, if you set a percentage of 99%, Segment notifies you if your destination had a successful delivery rate of 98% or below. +You can create an alert that notifies you when the volume of events successfully received by your mapping in the last 24 hours falls below a threshold you set. For example, if you set a threshold of 99%, Segment notifies you if your destination had a successful delivery rate of 98% or below. To receive a successful delivery rate fluctuation alert in a Slack channel, you must first create a Slack webhook. For more information about Slack webhooks, see Slack's [Sending messages using incoming webhooks](https://api.slack.com/messaging/webhooks){:target="_blank”} documentation. @@ -80,7 +82,7 @@ To edit or disable your alert, navigate to your mapping's Alerts tab and select ## Activation event health spikes or drops -You can create an Activation event health spikes or drops alert that notifies you when events sent from your audience to a downstream destination have failures to a destination above a certain threshold. For example, if you set a change percentage of 4% and your destination received 100 events from your Audience over the first 24 hours, Segment would notify you the following day if your destination ingested fewer than 96 or more than 104 events. +You can create an Activation event health spikes or drops alert that notifies you when events sent from your audience to a downstream destination have failures to a destination above a certain threshold. For example, if you set a threshold of 4% and your destination received 100 events from your Audience over the first 24 hours, Segment would notify you the following day if your destination ingested fewer than 96 or more than 104 events. To create an Activation event health spikes or drops alert: 1. From your Segment workspace's home page, navigate to **Engage > Audiences**. diff --git a/src/monitor/images/custom-alerting.png b/src/monitor/images/custom-alerting.png new file mode 100644 index 0000000000000000000000000000000000000000..6d8faca373ca04f6c4ce267f3da1cc1df9dfaba0 GIT binary patch literal 119220 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%0D>M#(_#bi0cDe(Zg_{CzJNUj(vJNUA@B7gTK9_ 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