diff --git a/src/privacy/configure-consent-management.md b/src/privacy/configure-consent-management.md index e1bd6ea7d7..ba87f66e6b 100644 --- a/src/privacy/configure-consent-management.md +++ b/src/privacy/configure-consent-management.md @@ -1,13 +1,17 @@ --- title: Configure Consent Management hidden: true +related: + - "/privacy/consent-management/" + - "/privacy/consent-in-segment-connections/" + - "/privacy/consent-in-unify/" --- > info "Consent Management is in private beta" > This means that Consent Management features are in active development, and some functionality may change before it becomes generally available. [Contact Segment](https://segment.com/help/contact/){:target="_blank"} with any feedback or questions. -After setting up a third-party consent management platform (CMP), you can enforce the consent collected from your users by configuring consent categories in your your Segment workspace and adding the [consent object](/docs/privacy/consent-management/#consent-object) to your web libraries. +After setting up your consent management platform (CMP), you can enforce the consent collected from your users by adding the [consent object](/docs/privacy/consent-in-segment-connections/#consent-object) to your events. -Once you've configured consent in the Segment app, your events are routed only to the categories your end users consented to share data with. +Once you've configured consent in the Segment app and updated your sources to contain consent preference in every event, your events are routed only to the categories your end users consented to share data with. Events without the consent preference will continue to flow to destinations without consent enforcement. ## Prerequisites @@ -17,14 +21,14 @@ Once you've configured consent in the Segment app, your events are routed only t Before you can configure consent in Segment, take the following steps: - **Set up your third-party consent management tool and create consent categories**. Take note of your consent categories and the key or ID associated with each category. - **Know how your company uses each destination**. You need to know which destinations to map to each category. -- **Access to your web libraries**. After you set up consent categories in the Segment app, you need to add a wrapper to your Analytics.js snippet so that Segment can receive your end users' preferences. Segment provides a [wrapper for OneTrust](#step-2-add-the-consent-wrapper-to-analyticsjs), or if you're using a different CMP, you can create your own wrapper using the [instructions provided in the analytics-next repository](https://github.com/segmentio/analytics-next/tree/master/packages/consent/consent-tools){:target="_blank”}. +- **Access to your web and mobile libraries**. After you set up consent categories in the Segment app, you need to integrate your CMP and your Segment sources using a wrapper or other solution. + + ## Step 1: Create consent categories in the Segment app > info "Limited availability of sources and destinations during private beta" -> During private beta, you can send events from web sources to consent categories. Enforcement of consent preferences is only available for event streaming destinations, webhooks, and functions. You can map one event streaming destination, webhook, or function to multiple consent categories. All other source and destination types are not impacted by consent mappings. -> -> Storage, RETL, and Engage destinations do not enforce consent preferences. +> During private beta, AWS S3, RETL, and Engage destinations do not enforce consent preferences. 1. From the [Segment homepage](https://app.segment.com/goto-my-workspace/){:target="_blank”}, select the Privacy tab and click **Consent Management**. 2. On the Consent management page, click **Create categories**. @@ -37,10 +41,29 @@ Before you can configure consent in Segment, take the following steps: 5. Once you've finished setting up your category or categories, click **Save**. > warning "Segment recommends mapping all destinations to a category" -> Segment assumes all destinations without a mapping do not require user consent and will receive all events containing a consent object. +> Segment assumes all destinations without a mapping do not require user consent and will receive all events containing a consent object. If a destination is mapped to multiple categories, a user must consent to all categories for data to flow to the destination. + +## Step 2: Integrating your CMP with Segment + +Once you've created consent categories in the Segment app, you need to integrate your CMP with Segment. Segment recommends using a CMP wrapper, but you can use any solution provided it meets the following criteria: +- Reads the end user consent preference from your CMP and includes the [consent object](/docs/privacy/consent-in-segment-connections/#consent-object) in every event +- If using Unify and Engage, generates the [Segment Consent Preference](/docs/privacy/consent-in-unify/#segment-consent-preference-event) event every time a user provides or updates their consent preferences with their anonymousId and userId + +Segment provides a OneTrust wrapper for the following sources: +- **Analytics.js**: Please follow the instructions from the README in the [@segment/analytics-consent-wrapper-onetrust repository](https://github.com/segmentio/analytics-next/tree/master/packages/consent/consent-wrapper-onetrust){:target="_blank"}. +- **Kotlin**: Please follow the instructions from the README in the [@segment-integrations/analytics-kotlin-consent](https://github.com/segment-integrations/analytics-kotlin-consent/blob/main/README.md#getting-started){:target="_blank"} repository. + + +If you'd like to integrate with any other CMP, Segment requires you to build your own wrapper or use any mechanism provided it meets the above requirements of data and event generation. + +> warning "Consent Management is not backwards compatible with Segment's legacy Android library" +> If you are using Segment's legacy Android library, you will need to upgrade to [Kotlin](/docs/connections/sources/catalog/libraries/mobile/kotlin-android/migration/) before using Consent Management. + + ## Edit consent categories diff --git a/src/privacy/consent-in-segment-connections.md b/src/privacy/consent-in-segment-connections.md new file mode 100644 index 0000000000..c9cddeaa0d --- /dev/null +++ b/src/privacy/consent-in-segment-connections.md @@ -0,0 +1,81 @@ +--- +title: Consent in Segment Connections +hidden: true +related: + - "/privacy/consent-management/" + - "/privacy/configure-consent-management/" + - "/privacy/consent-in-unify/" +--- + +> info "Consent Management is in private beta" +> This means that Consent Management features are in active development, and some functionality may change before it becomes generally available. [Contact Segment](https://segment.com/help/contact/){:target="_blank"} with any feedback or questions. + +Segment Connections users can add the [consent object](#consent-object) to their sources to stamp events with the end user consent preferences captured by your consent management platform (CMP) and send them downstream to destinations in categories that an end user consented to share data with. Events without the consent object continue to flow to destinations without consent enforcement. + +For more information about configuring consent categories, see the [Configure Consent Management](/docs/privacy/configure-consent-management/#step-1-create-consent-categories-in-the-segment-app) documentation. + +If your sources also contain the integrations object, Segment will look at the consent object first, and then take into account the integrations object according to the table in the [Reconcile consent object and integrations object](#reconcile-consent-object-and-integrations-object-conflicts) documentation. + +> info "Unify users must send an additional event to add consent preferences to Profiles" +> If you use Unify, see the [Consent in Unify](/docs/privacy/consent-in-unify) documentation for more information about the Segment Consent Preference event, which Segment uses with the consent object to add consent preference to Profiles. + +## Consent object + +Segment requires every event from all of your sources to include the end user consent preferences, captured by your CMP or your application logic, in the form of the **consent object**. The consent object is a JSON object with the following format: + +```json +{ +"context": { + "consent": { + "categoryPreferences": { + "Advertising": true, + "Analytics": false, + "Functional": true, + "DataSharing": false + } + } + } +} + +``` + + + +Events without the consent object will continue to flow to destinations without consent enforcement. + +## Reconcile consent conflicts + +Segment resolves conflicts between your [consent object and your integration object](#reconcile-consent-object-and-integrations-object-conflicts) and between your [CMP and the consent categories you configured in the Segment app](#reconcile-cmp-and-segment-consent-category-conflicts). + +### Reconcile consent object and integrations object conflicts + +You can add both the integrations object and the consent object to your Segment payloads for greater control over how Segment routes data to your downstream destinations. + +> success "" +> For more information about the Integrations object, please see [Filtering your Segment Data](/docs/guides/filtering-data/#filtering-with-the-integrations-object). + +If an event includes both an integrations and consent object, Segment will look at the consent object first, and then take into account the integrations object according to the following table: + +| Consent Object | Integration Object | Result | +| --------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | ------ | +| Not provided or empty consent object

`"context": {`
`}`
OR
`"context": {`
` "consent": {`
` }`
`}` | Not provided or empty object | Data flows to all destinations. | +| Empty categoryPreference object

`"context": {`
` "consent": {`
` "categoryPreference": {`
` }`
` }`
`}`| Not provided or empty object | Data does **NOT** flow to any mapped destinations - consent is considered to be `false` for all categories.

Data flows to all destinations **NOT** mapped to a consent category. | +| Not provided

`"context": {`
`}` | `{facebook: true,`
`amplitude: false}` | Data flows to the destinations that are `true` in the integrations object (Facebook). Any metadata provided in the integrations object also flows to your downstream destinations. | +| Empty consent object

`"context": {`
` "consent": {`
` }`
`}`
OR
`"context": {`
` "consent": {`
` "categoryPreference": {`
` }`
` }`
`}`| `{facebook: true,`
`amplitude: false}` | Data does **NOT** flow to any mapped destinations - consent is considered to be `false` for all categories.

Data flows to all destinations **NOT** mapped to a consent category, destinations set to `true` in the integrations object, and destinations not included in the integrations object. | +| `{ad: true,`
`analytics: false}`

_Segment has no category-to-destination mapping for ad and analytics_ | Provided, not provided, or empty object | Data flows to all destinations, as all destinations are unmapped. If the integrations object is present, data flow may be impacted. | +| `{ad: true,`
`analytics: false}`

_ad = facebook, google-ads_
| Not provided or empty object | Data flows to destinations that map to a consented purpose. In this case, data flows to all ad destinations (Facebook and Google Ads).

No data flows to analytics destinations. | +| `{ad: true,`
`analytics: false}`

_ad = facebook, google-ads_
_analytics = amplitude_ | `{facebook: true,`
`amplitude: false}` | Data flows to all ad destinations, even though Google Ads is not present in the integrations object.

Data does **NOT** flow to analytics destinations. | +| `{ad: true,`
`analytics: false}`

_ad = facebook, google-ads_
_analytics = amplitude_ | `{facebook: false,`
`amplitude: false}` | Data only flows to Google Ads and not to Facebook, which is `false` in the integrations object.

Data does **NOT** flow to analytics destinations. | +| `{ad: true,`
`analytics: false}`

_ad = facebook, google-ads_
_analytics = facebook, amplitude_ | `{facebook: true,`
`amplitude: false}` | When destinations are mapped to multiple categories, data only flows if consent is `true` for all categories. In this case, data only flows to Google Ads and not to Facebook.

Data does **NOT** flow to analytics destinations. | +| `{ad: true,`
`analytics: true}`

_ad = facebook, google-ads_
_analytics = facebook, amplitude_ | `{facebook: true,`
`amplitude: false}` | When destinations are mapped to multiple categories, data only flows if consent is `true` for all categories. In this case, data flows to Google Ads and Facebook. No data flows to Amplitude because it is `false` in the integrations object. | +| `{ad: false,`
`analytics: true}`

_ad = facebook, google-ads_
_analytics = facebook, amplitude_ | `{facebook: true,`
`amplitude: false}` | When destinations are mapped to multiple categories, data only flows if consent is `true` for all categories.

In this example, data does **NOT** flow to any destination because of the interaction between the integrations and consent objects. | + +### Reconcile CMP and Segment consent category conflicts + +If you have a category configured in your consent management tool (for example, `advertising`) and there is no category with the same ID in Segment, the data will flow to unmapped destinations. If destinations are mapped to a different category in the Segment app, data flow will honor end user consent for that category. + +If there is a category configured in Segment (`functional`) that is not mapped in your CMP, data will not flow to destinations mapped to the `functional` category. + +## Content observability + +Events discarded due to consent preferences appear in [Delivery Overview](/docs/connections/delivery-overview/) at the "Filtered at destination" step with the discard reason *Filtered by end user consent*. \ No newline at end of file diff --git a/src/privacy/consent-in-unify.md b/src/privacy/consent-in-unify.md new file mode 100644 index 0000000000..9af6ab463d --- /dev/null +++ b/src/privacy/consent-in-unify.md @@ -0,0 +1,49 @@ +--- +title: Consent in Unify +hidden: true +related: + - "/privacy/consent-management/" + - "/privacy/configure-consent-management/" + - "/privacy/consent-in-segment-connections/" +--- + +> info "Consent in Unify and Twilio Engage is currently unavailable." +> However, Segment's OneTrust consent wrappers automatically generate the Segment Consent Preference Track event, which will be required for future integrations with Unify and Twilio Engage. + +Segment uses Profiles in [Unify](/docs/unify/) as the source of truth of an end user's consent preference when enforcing consent in Twilio Engage. To get consent preference on the Profile, Segment requires the use of the [Segment Consent Preference event](#segment-consent-preference-event) and [Identify](/docs/connections/spec/Identify) events to route events to Unify. The Segment Consent Preference and Identify event should include the [consent object](/docs/privacy/consent-in-segment-connections/#consent-object). + +## Segment Consent Preference event +Every time an end user provides or updates their consent preferences, Segment requires you to generate a **Segment Consent Preference** event. If you are using [Segment's OneTrust consent wrappers](/docs/privacy/configure-consent-management/#step-2-integrating-your-cmp-with-segment), Segment automatically generates a Segment Consent Preference event. This event is required to add the end user’s consent preference on their Profile in Unify. + +For example, if an end user agreed to share their information for functional and advertising purposes but not for analytics or data sharing, the Segment Consent Preference [Track call](/docs/connections/spec/track/) demonstrating their new consent preferences would have the following format: + +``` json +{ + "anonymousId": "23adfd82-aa0f-45a7-a756-24f2a7a4c895", + "type": "track", + "event": "Segment Consent Preference", + "userId": "u123", + "traits": { + "email": "peter@example.com", + "phone": "555-555-5555", + } + "timestamp": "2023-01-01T00:00:00.000Z", + "context": { + "consent": { + "categoryPreferences" : { + "Advertising": true, + "Analytics": false, + "Functional": true, + "DataSharing": false + } + } + } +} +``` + +If you use Protocols, the Segment app automatically adds the Segment Consent Preference event to all your existing Tracking Plans and for every new Tracking Plan. Segment recommends you don’t edit or delete the default fields in the Segment Consent Preference events, but you can add new fields as needed. + +> info "Segment Consent Preference is a reserved event name" +> Segment has standardized a series of reserved event names that have special semantic meaning and maps these events to tools that support them. +> +> See the [Semantic Events](/docs/connections/spec/semantic/) docs for more details. diff --git a/src/privacy/consent-management.md b/src/privacy/consent-management.md index a6018a98c1..234c15b5e9 100644 --- a/src/privacy/consent-management.md +++ b/src/privacy/consent-management.md @@ -1,135 +1,28 @@ --- title: Consent Management Overview hidden: true +hide_toc: true related: - - "/privacy/account-deletion/" - - "/privacy/complying-with-the-gdpr/" + - "/privacy/configure-consent-management/" + - "/privacy/consent-in-segment-connections/" + - "/privacy/consent-in-unify/" --- > info "Consent Management is in private beta" > This means that Consent Management features are in active development, and some functionality may change before it becomes generally available. [Contact Segment](https://segment.com/help/contact/){:target="_blank"} with any feedback or questions. -When an end user visits your site, they set **consent preferences**, or make decisions about the types of data they want you to collect, use, and share. These consent preferences are typically presented as a set list of categories that describe how your company intends to use that data. Common categories include personalization, advertising, and site performance. +When an end user visits your web or mobile app, they set **consent preferences**, or make decisions about the types of data they want you to collect, use, and share. These consent preferences are typically presented as a set list of categories that describe how your company intends to use that data. Some common categories include personalization, advertising, and site performance. -Segment works with your third-party consent management platform (CMP) or bespoke consent solution to capture an end user's consent preferences and enforce those preferences by only routing events to the categories consented to by an end user. +Segment integrates with your commercial third-party or bespoke consent management platform (CMP) that captures an end user's consent preferences and enforces those preferences by only routing events to the categories consented to by an end user. ![Diagram outlining information flowing from an end user to Segment destinations](/docs/privacy/images/consent-overview.png) -After a user sets their consent preferences, Segment captures them with the [Analytics.js Consent Tools wrapper](https://github.com/segmentio/analytics-next/tree/master/packages/consent/consent-tools) and updates the [consent object](#consent-object). The events are then sent downstream to any streaming destinations in categories that a user consented to share data with. +After a user sets their consent preferences on your web or mobile app, Segment requires you to add the [consent object](/docs/privacy/consent-in-segment-connections/#consent-object) to all events. If you are using OneTrust, Segment provides a wrapper for your web and mobile libraries that can add the consent object to your events. If you are using another CMP, you are required to add the consent object to your events by either creating your own wrapper or using another mechanism. For more information, see the [Configure Consent Management documentation](/docs/privacy/configure-consent-management/#step-2-integrating-your-cmp-with-segment). + +The events, stamped with the consent object, are then sent downstream to any destinations in categories that an end user consented to share data with. > info "" > Segment collects consent for both registered users and anonymous users. -## Enforce consent -Segment routes events with a consent object to the destinations in categories consented to by a user and to destinations that do not have a consent category. - -If an end user changes the categories they consent to (or if they consent using a different device or identifier,) any events they generate after updating their consent preferences will contain the updated consent information. Segment only sends events to the destinations in the categories that are currently consented to. - -> warning "Segment recommends mapping all destinations to a category" -> Segment assumes any destinations without a mapping do not require user consent and will receive all events containing a consent object. - - - - -To learn more about configuring consent categories in your workspace, see the [Configure Consent Management documentation](/docs/privacy/configure-consent-management/). - -## Consent object - -Segment requires every event from all of your sources to include the end-user consent preferences, captured by your consent management tools or your application logic, in the form of the **consent object**. The consent object is a JSON object with the following format: - -```json -{ -"context": { - "consent": { - "consentPreferences": { - "Advertising": true, - "Analytics": false, - "Functional": true, - "DataSharing": false - } - } - } -} - -``` - - - -## Reconcile consent conflicts - -Segment resolves conflicts between your [consent object and your integration object](#reconcile-consent-object-and-integrations-object-conflicts) and between your [CMP and the consent categories you configured in the Segment app](#reconcile-cmp-and-segment-consent-category-conflicts). - -### Reconcile consent object and integrations object conflicts - -You can add both the integrations object and the consent object to your Segment payloads for greater control over how Segment routes data to your downstream destinations. - -> success " " -> For more information about the Integrations object, please see [Filtering your Segment Data](/docs/guides/filtering-data/#filtering-with-the-integrations-object). - -If an event includes both an integrations and consent object, Segment will look at the consent object first, and then take into account the integrations object according to the following table: - -| Consent Object | Integration Object | Result | -| --------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | ------ | -| Not provided

`"context": {`
`}` | Not provided or empty object | Data flows to all destinations | -| Empty consent object

`"context": {`
` "consent": {`
` }`
`}`
OR
`"context": {`
` "consent": {`
` "categoryPreference": {`
` }`
` }`
`}`| Not provided or empty object | Data does **NOT** flow to any mapped destinations - consent is considered to be `false` for all categories.

Data flows to all destinations **NOT** mapped to a consent category. | -| Not provided

`"context": {`
`}` | `{facebook: true,`
`amplitude: false}` | Data flows to the destinations that are `true` in the integrations object (Facebook). Any metadata provided in the integrations object also flows to your downstream destinations. | -| Empty consent object

`"context": {`
` "consent": {`
` }`
`}`
OR
`"context": {`
` "consent": {`
` "categoryPreference": {`
` }`
` }`
`}`| `{facebook: true,`
`amplitude: false}` | Data does **NOT** flow to any mapped destinations - consent is considered to be `false` for all categories.

Data flows to all destinations **NOT** mapped to a consent category, destinations set to `true` in the integrations object, and destinations not included in the integrations object. | -| `{ad: true,`
`analytics: false}`

_Segment has no category-to-destination mapping for ad and analytics_ | Provided, not provided, or empty object | Data flows to all destinations, as all destinations are unmapped. If the integrations object is present, data flow may be impacted. | -| `{ad: true,`
`analytics: false}`

_ad = facebook, google-ads_
| Not provided or empty object | Data flows to destinations that map to a consented purpose. In this case, data flows to all ad destinations (Facebook and Google Ads).

No data flows to analytics destinations. | -| `{ad: true,`
`analytics: false}`

_ad = facebook, google-ads_
_analytics = amplitude_ | `{facebook: true,`
`amplitude: false}` | Data flows to all ad destinations, even though Google Ads is not present in the integrations object.

Data does **NOT** flow to analytics destinations. | -| `{ad: true,`
`analytics: false}`

_ad = facebook, google-ads_
_analytics = amplitude_ | `{facebook: false,`
`amplitude: false}` | Data only flows to Google Ads and not to Facebook, which is `false` in the integrations object.

Data does **NOT** flow to analytics destinations. | -| `{ad: true,`
`analytics: false}`

_ad = facebook, google-ads_
_analytics = facebook, amplitude_ | `{facebook: true,`
`amplitude: false}` | When destinations are mapped to multiple categories, data only flows if consent is `true` for all categories. In this case, data only flows to Google Ads and not to Facebook.

Data does **NOT** flow to analytics destinations. | -| `{ad: true,`
`analytics: true}`

_ad = facebook, google-ads_
_analytics = facebook, amplitude_ | `{facebook: true,`
`amplitude: false}` | When destinations are mapped to multiple categories, data only flows if consent is `true` for all categories. In this case, data flows to Google Ads and Facebook. No data flows to Amplitude because it is `false` in the integrations object. | -| `{ad: false,`
`analytics: true}`

_ad = facebook, google-ads_
_analytics = facebook, amplitude_ | `{facebook: true,`
`amplitude: false}` | When destinations are mapped to multiple categories, data only flows if consent is `true` for all categories.

In this example, data does **NOT** flow to any destination because of the interaction between the integrations and consent objects. | - -### Reconcile CMP and Segment consent category conflicts - -If you have a category configured in your consent management tool (for example, `advertising`) and there is no category with the same ID in Segment, the data will flow to unmapped destinations. If destinations are mapped to a different category in the Segment app, data flow will honor end user consent for that category. - -If there is a category configured in Segment (`functional`) that is not mapped in your CMP, data will not flow to destinations mapped to the `functional` category. - -## Consent observability +For more information about consent in Segment Connections, see the [Consent in Segment Connections](/docs/privacy/consent-in-segment-connections) documentation. - - -Events discarded due to consent preferences appear in [Delivery Overview](/docs/connections/delivery-overview/) at the "Filtered at destination" step with the discard reason __Filtered by end user consent__. \ No newline at end of file +If you are a Unify user, you can also see the [Consent in Unify](/docs/privacy/consent-in-unify) for more information about the Segment Consent Preference event, which Segment uses to add consent preference to the Profile. diff --git a/src/privacy/reconcile-consent.md b/src/privacy/reconcile-consent.md deleted file mode 100644 index a513ee0167..0000000000 --- a/src/privacy/reconcile-consent.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Reconciling Consent Conflicts -hidden: true ---- - -Segment sends data only to destinations in categories consented to by the end user. When conflicts arise between the consent object and integrations object or your consent management tool, Segment reconciles consent according to the following tables. - - - -> info "Consent Management is in private beta" -> This means that Consent Management features are in active development, and some functionality may change before it becomes generally available. [Contact Segment](https://segment.com/help/contact/){:target="_blank"} with any feedback or questions. - -## Reconcile consent category trait conflicts - -Segment detects when there are conflicting consent categories for a user and reconciles them according to the following table: - - - -## Reconcile a user's conflicting preferences - -If a user has conflicting preferences (for example, they consented yes for a category on mobile, but not on the web, or consented differently using two different emails) Segment routes data according to the following table: - -| Category | Consent on mobile | Consent on the web | -| -------- | ----------------- | ------------------ | - - - - -## Reconcile consent object and integrations object conflicts - -You can add the integrations object and the consent object to your Segment payloads to control how Segment routes data to your downstream destinations. - -> success " " -> For more information about the Integrations object, please see [Filtering your Segment Data](/docs/guides/filtering-data/#filtering-with-the-integrations-object). - -If an event includes both an integrations and consent object, Segment will look at the consent object first, and then take into account the integrations object according to the following table: - - -| Consent Object | Integration Object | Result | -| --------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | ------ | -| Not provided or empty object | Not provided or empty object | Message delivered to all destinations | -| `context {consent{}}`
OR
`context {consent {categoryPreference{}}}` | Not provided or empty object | Data **NOT** delivered - consent is considered to be `false` for all categories | -| Not provided or empty object

`context{}` | `{facebook: true,`
`amplitude: false}` | Message and metadata delivered to Facebook | -| Empty consent object
`context {consent{}}`
OR
`context {``consent {``categoryPreference{}``}}` | `{facebook: true,`
`amplitude: false}` | Data **NOT** delivered - consent is considered to be `false` for all categories | -| `{ad: true,`
`analytics: false}`

_Segment has no category-to-destination mapping for ad and analytics_ | Provided, not provided, or empty object | Data **NOT** delivered | -| `{ad: true,`
`analytics: false}`

_ad = facebook, google ads_
| Not provided or empty object | Data delivered to destinations that map to consented purpose. In this case, data is delivered to all ad destinations (Facebook and Google Ads).

No data delivered to analytics destinations | -| `{ad: true,`
`analytics: false}`

_ad = facebook, google ads_
_analytics = amplitude_ | `{facebook: true,`
`amplitude: false}` | Data delivered to all ad destinations even though Google Ads is not present in the integrations object.
Metadata is sent from Facebook.

Data **NOT** delivered to analytics destinations. | -| `{ad: true,`
`analytics: false}`

_ad = facebook, google ads_
_analytics = amplitude_ | `{facebook: false,`
`amplitude: false}` | Data delivered only to Google Ads, not to Facebook. Data **NOT** delivered to analytics destinations. | -| `{ad: true,`
`analytics: true}`

_ad = facebook, google ads_
_analytics = facebook, amplitude_ | `{facebook: true,`
`amplitude: false}` | Data delivered to all ad destinations, including Facebook, because analytics is true.
Metadata is sent from Facebook.
No data is sent to Amplitude because it is `false` in the integrations object. | -| `{ad: false,`
`analytics: true}`

_ad = facebook, google ads_
_analytics = facebook, amplitude_ | `{facebook: true,`
`amplitude: false}` | Data **NOT** delivered to ad destinations. Data delivered to Facebook for analytics only and not to Amplitude. | - - -## Reconcile Consent Management tool and Segment tool conflicts - -If there is a mismatch in consent categories between your consent management tool and the Segment app, Segment reconciles the consent object according to the following table: - -| Consent Management Tool | Segment App | Result | -| ------------------------------------------------------ | ------------------------------------------------------------------------ | ------ | -| `{ad: true}` | There is no "ad" category | No data is shared to destinations that the customer may think of as "ad" destinations or may have been mapped in the consent management tool | -| `{person: true}` | There is no category `person`, but there is a `personalization` category | No data is shared to destinations the customer may consider `person` or the mapped `personalization` category | -| `{ad: true`,
`person: true`,
`analytics:true}` | The `ad`, `person`, `analytics`, and `functional` categories are mapped | Data will be shared with consenting categories of ad, person, and analytics.

No data will be shared with destinations mapped to `functional`, because this content is considered to be false. | -