From c5d2033ea4860e6d4f4e8a6f0a0bf8309a639e02 Mon Sep 17 00:00:00 2001
From: forstisabella <92472883+forstisabella@users.noreply.github.com>
Date: Tue, 6 Jun 2023 20:03:45 -0400
Subject: [PATCH 01/41] init consent management
---
src/_data/sidenav/main.yml | 10 ++++++++++
src/privacy/configure-consent-management.md | 11 +++++++++++
src/privacy/consent-management.md | 11 +++++++++++
src/privacy/enforce-consent.md | 16 ++++++++++++++++
4 files changed, 48 insertions(+)
create mode 100644 src/privacy/configure-consent-management.md
create mode 100644 src/privacy/consent-management.md
create mode 100644 src/privacy/enforce-consent.md
diff --git a/src/_data/sidenav/main.yml b/src/_data/sidenav/main.yml
index ec55e42d88..8758a4574d 100644
--- a/src/_data/sidenav/main.yml
+++ b/src/_data/sidenav/main.yml
@@ -444,6 +444,16 @@ sections:
title: Complying With GDPR
- path: /privacy/user-deletion-and-suppression
title: User Deletion and Suppression
+ - section_title: Consent Management
+ slug: /privacy/consent-management
+ expanded: true
+ section:
+ - path: /privacy/consent-management
+ title: Consent Management Overview
+ - path: /privacy/configure-consent-management
+ title: Configure Consent Management
+ - path: /privacy/enforce-consent
+ title: Enforce Consent Management
- path: /privacy/account-deletion
title: Account & Data Deletion
- path: /privacy/hipaa-eligible-segment
diff --git a/src/privacy/configure-consent-management.md b/src/privacy/configure-consent-management.md
new file mode 100644
index 0000000000..a569d9be22
--- /dev/null
+++ b/src/privacy/configure-consent-management.md
@@ -0,0 +1,11 @@
+---
+title: Configure Consent Management
+---
+> info "Consent Management is currently in private beta"
+> This means that the 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.
+
+## Step 1:
+
+## Step 2:
+
+## Ingesting consent data
\ No newline at end of file
diff --git a/src/privacy/consent-management.md b/src/privacy/consent-management.md
new file mode 100644
index 0000000000..3d9a5da34a
--- /dev/null
+++ b/src/privacy/consent-management.md
@@ -0,0 +1,11 @@
+---
+title: Consent Management Overview
+---
+> info "Consent Management is currently in private beta"
+> This means that the 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.
+
+## Consent preferences
+
+## Consent object
+
+### Consent object vs integrations object
\ No newline at end of file
diff --git a/src/privacy/enforce-consent.md b/src/privacy/enforce-consent.md
new file mode 100644
index 0000000000..7219a45916
--- /dev/null
+++ b/src/privacy/enforce-consent.md
@@ -0,0 +1,16 @@
+---
+title: Enforce Consent
+---
+
+Segment sends data only to destinations in categories the end user has consented to sending data to.
+
+> info "Consent Management is currently in private beta"
+> This means that the 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 object and integrations object conflicts
+
+If the consent object and integrations object have conflicting destination , Segment reconciles them according to the following table:
+
+| Consent Preference | Integration Object | Result |
+| ------------------ | ------------------ | ------ |
+| No data | No data | |
\ No newline at end of file
From 904825f4cab2200f17b604b6be44977bd1d2d769 Mon Sep 17 00:00:00 2001
From: forstisabella <92472883+forstisabella@users.noreply.github.com>
Date: Fri, 9 Jun 2023 12:11:46 -0400
Subject: [PATCH 02/41] enforce content reconciliation tables
---
src/privacy/consent-management.md | 4 +---
src/privacy/enforce-consent.md | 29 +++++++++++++++++++++++++----
2 files changed, 26 insertions(+), 7 deletions(-)
diff --git a/src/privacy/consent-management.md b/src/privacy/consent-management.md
index 3d9a5da34a..0ddf74042b 100644
--- a/src/privacy/consent-management.md
+++ b/src/privacy/consent-management.md
@@ -6,6 +6,4 @@ title: Consent Management Overview
## Consent preferences
-## Consent object
-
-### Consent object vs integrations object
\ No newline at end of file
+## Consent object
\ No newline at end of file
diff --git a/src/privacy/enforce-consent.md b/src/privacy/enforce-consent.md
index 7219a45916..8028b02fe1 100644
--- a/src/privacy/enforce-consent.md
+++ b/src/privacy/enforce-consent.md
@@ -9,8 +9,29 @@ Segment sends data only to destinations in categories the end user has consented
## Reconcile consent object and integrations object conflicts
-If the consent object and integrations object have conflicting destination , Segment reconciles them according to the following table:
+### Integrations object
+The Integrations object is a JSON object you can add to your Segment payloads to control how Segment routes data to your destinations. The Integrations object filters `track`, `page`, `group`, `identify` and `screen` events from client and cloud based sources, and routes or prevents them from going to listen destinations.
-| Consent Preference | Integration Object | Result |
-| ------------------ | ------------------ | ------ |
-| No data | No data | |
\ No newline at end of file
+> success " "
+> For more information about the Integrations object, please see [Filtering your Segment Data](/docs/guides/filtering-data/#filtering-with-the-integrations-object).
+
+If the consent object and integrations object have conflicting destination information, Segment routes data according to the following table:
+
+| Consent Object | Integration Object | Result |
+| --------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | ------ |
+| Not provided or empty object | Not provided or empty object | Message delivered to all enabled destinations |
+| Not provided or empty object | `{facebook: true,`
`amplitude: false}` | Message and metadata delivered to Facebook |
+| `{ad: true,`
`analytics: false}`
//ad = facebook, google ads | Not provided or empty object | Message delivered to the destinations mapped to the consented category. In this case, the message would be delivered to the Ad category (Facebook and Google Ads). No data is delivered to destinations mapped to the analytics category. |
+| `{ad: true,`
`analytics: false}`
//ad = facebook, google ads | `{facebook: true,`
`amplitude: false}` | Message delivered to all ad destinations even though google-ads is not provided in the integrations object. Use metadata if provided for Facebook (the current behavior). No data is delivered to analytics destinations. |
+| `{ad: true,`
`analytics: false}`
//ad = facebook, google ads | `{facebook: false,`
`amplitude: false}` | Message delivered to all ad destinations (Google Ads) but NOT to Facebook.
No data delivered to analytics destinations |
+| `{ad: true,`
`analytics: false}`
//ad = facebook, google ads
//analytics = facebook, snowflake | `{facebook: false,`
`amplitude: false}` | Message delivered to all ad destinations (even though Facebook belongs to analytics and user is not consenting to analytics.) Use metadata if provided for Facebook (current behavior)
No data delivered to analytics destinations (Snowflake) |
+
+## 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. |
\ No newline at end of file
From 3259abd5ef3f81016b92cd793ad1c8c24d9fcdfb Mon Sep 17 00:00:00 2001
From: forstisabella <92472883+forstisabella@users.noreply.github.com>
Date: Mon, 12 Jun 2023 14:50:09 -0400
Subject: [PATCH 03/41] Update enforce-consent.md
---
src/privacy/enforce-consent.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/privacy/enforce-consent.md b/src/privacy/enforce-consent.md
index 8028b02fe1..5700248763 100644
--- a/src/privacy/enforce-consent.md
+++ b/src/privacy/enforce-consent.md
@@ -10,7 +10,7 @@ Segment sends data only to destinations in categories the end user has consented
## Reconcile consent object and integrations object conflicts
### Integrations object
-The Integrations object is a JSON object you can add to your Segment payloads to control how Segment routes data to your destinations. The Integrations object filters `track`, `page`, `group`, `identify` and `screen` events from client and cloud based sources, and routes or prevents them from going to listen destinations.
+The Integrations object is a JSON object you can add to your Segment payloads to control how Segment routes data to your destinations. The Integrations object filters `track`, `page`, `group`, `identify` and `screen` events from client and cloud based sources, and routes or prevents them from going to listed destinations.
> success " "
> For more information about the Integrations object, please see [Filtering your Segment Data](/docs/guides/filtering-data/#filtering-with-the-integrations-object).
From 7979a7b55bd28b015d44887c0ac4959e59ca00b8 Mon Sep 17 00:00:00 2001
From: forstisabella <92472883+forstisabella@users.noreply.github.com>
Date: Tue, 20 Jun 2023 13:17:47 -0400
Subject: [PATCH 04/41] adding to consent management overview, thinking through
prereqs,
---
src/privacy/configure-consent-management.md | 25 ++++++++++++++--
src/privacy/consent-management.md | 33 +++++++++++++++++++--
src/privacy/enforce-consent.md | 10 +++++--
3 files changed, 61 insertions(+), 7 deletions(-)
diff --git a/src/privacy/configure-consent-management.md b/src/privacy/configure-consent-management.md
index a569d9be22..3dacae1d4f 100644
--- a/src/privacy/configure-consent-management.md
+++ b/src/privacy/configure-consent-management.md
@@ -4,8 +4,29 @@ title: Configure Consent Management
> info "Consent Management is currently in private beta"
> This means that the 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.
-## Step 1:
+
-## Step 2:
+## Prerequisites
+
+Before you can configure consent in Segment, you'll need to take the following steps:
+- **Access your consent management tool**. You'll need a list of your consent categories and the key or ID associated with each topic.
+- **Know how your company maps each destination**. You'll need to know which destinations map to each categories.
+- **Update your web libraries with the consent object**. To ensure Segment is receiving your end-user consent preferences, you'll need access to your web libraries so you can include the consent object to every event.
+
+> error "After adding the consent object to your events, your data is immediately impacted"
+> If you disable a consent category, events are not sent to mapped destinations.
+>
+> If a destination is mapped to multiple categories, and the end user has conflicted preferences, data will be sent to the destination.
+>
+> If Segment receives an API call with both an integrations object and a consent object, the consent object takes preference.
+
+## Step 1: Access the Consent Management feature
+
+## Step 2: Create consent categories
+
+> info "Segment recommends mapping all destinations to a category"
+> Each destination should be mapped to a category to ensure completeness of data in your downstream destinations. Any destination that doesn't have a mapping will not receive events with a consent object.
+
+## Step 3:
## Ingesting consent data
\ No newline at end of file
diff --git a/src/privacy/consent-management.md b/src/privacy/consent-management.md
index 0ddf74042b..f5af36c950 100644
--- a/src/privacy/consent-management.md
+++ b/src/privacy/consent-management.md
@@ -1,9 +1,38 @@
---
title: Consent Management Overview
+related:
+ - "/privacy/account-deletion/"
+ - "/privacy/complying-with-the-gdpr/"
---
> info "Consent Management is currently in private beta"
> This means that the 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.
-## Consent preferences
+Consent management is a [description]
-## Consent object
\ No newline at end of file
+> warning "Website sources and event streaming destinations are available to map to consent categories"
+> During the private beta, you can map website sources and event streaming destinations to a consent category. All other sources and destinations will not be affected by consent mappings.
+
+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 (for example, personalization, advertising, and site performance) that describe how your company intends to use that data.
+
+After a user sets their consent preferences, Segment updates the [consent object](#consent-object) with a user's preferences. The events are then sent downstream to any destinations in categories consented to by the user.
+
+> success ""
+> Segment collects consent for both registered users and anonymous users.
+
+If a **consent conflict** exists Segment resolves them according to the [Enforce Consent](/docs/privacy/enforce-consent) documentation.
+
+## Consent object
+
+Segment requires every event from all of your sources to include the end-user consent preferences, captured by your consent management tool, in the form of the **consent object**. The consent object is a JSON object with the following format:
+
+```json
+context {
+ consentCategories {
+ "functional" : true,
+ “advertising” : true,
+ "personalization" : false
+ }
+ }
+```
+
+The Segment consent object is
\ No newline at end of file
diff --git a/src/privacy/enforce-consent.md b/src/privacy/enforce-consent.md
index 5700248763..af58ce6aa3 100644
--- a/src/privacy/enforce-consent.md
+++ b/src/privacy/enforce-consent.md
@@ -2,15 +2,18 @@
title: Enforce Consent
---
-Segment sends data only to destinations in categories the end user has consented to sending data to.
+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 currently in private beta"
> This means that the 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
+
## Reconcile consent object and integrations object conflicts
-### Integrations object
-The Integrations object is a JSON object you can add to your Segment payloads to control how Segment routes data to your destinations. The Integrations object filters `track`, `page`, `group`, `identify` and `screen` events from client and cloud based sources, and routes or prevents them from going to listed destinations.
+You can add the integrations object and the consent object to your Segment payloads to control how Segment routes data to your downstream destination.
> success " "
> For more information about the Integrations object, please see [Filtering your Segment Data](/docs/guides/filtering-data/#filtering-with-the-integrations-object).
@@ -26,6 +29,7 @@ If the consent object and integrations object have conflicting destination infor
| `{ad: true,`
`analytics: false}`
//ad = facebook, google ads | `{facebook: false,`
`amplitude: false}` | Message delivered to all ad destinations (Google Ads) but NOT to Facebook.
No data delivered to analytics destinations |
| `{ad: true,`
`analytics: false}`
//ad = facebook, google ads
//analytics = facebook, snowflake | `{facebook: false,`
`amplitude: false}` | Message delivered to all ad destinations (even though Facebook belongs to analytics and user is not consenting to analytics.) Use metadata if provided for Facebook (current behavior)
No data delivered to analytics destinations (Snowflake) |
+
## 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:
From 2f1da20e486fe22b0ef64e0ec79ffcc6d2b26cec Mon Sep 17 00:00:00 2001
From: forstisabella <92472883+forstisabella@users.noreply.github.com>
Date: Tue, 20 Jun 2023 14:49:34 -0400
Subject: [PATCH 05/41] q's/updates from content office hours
---
src/_data/sidenav/main.yml | 4 ++--
src/privacy/configure-consent-management.md | 23 +++++++++++++++----
...nforce-consent.md => reconcile-consent.md} | 17 ++++++++++++--
3 files changed, 35 insertions(+), 9 deletions(-)
rename src/privacy/{enforce-consent.md => reconcile-consent.md} (87%)
diff --git a/src/_data/sidenav/main.yml b/src/_data/sidenav/main.yml
index 8758a4574d..51306d94e7 100644
--- a/src/_data/sidenav/main.yml
+++ b/src/_data/sidenav/main.yml
@@ -452,8 +452,8 @@ sections:
title: Consent Management Overview
- path: /privacy/configure-consent-management
title: Configure Consent Management
- - path: /privacy/enforce-consent
- title: Enforce Consent Management
+ - path: /privacy/reconcile-consent
+ title: Reconcile Consent Conflicts
- path: /privacy/account-deletion
title: Account & Data Deletion
- path: /privacy/hipaa-eligible-segment
diff --git a/src/privacy/configure-consent-management.md b/src/privacy/configure-consent-management.md
index 3dacae1d4f..7e1ff9c6bd 100644
--- a/src/privacy/configure-consent-management.md
+++ b/src/privacy/configure-consent-management.md
@@ -13,19 +13,32 @@ Before you can configure consent in Segment, you'll need to take the following s
- **Know how your company maps each destination**. You'll need to know which destinations map to each categories.
- **Update your web libraries with the consent object**. To ensure Segment is receiving your end-user consent preferences, you'll need access to your web libraries so you can include the consent object to every event.
+
+
> error "After adding the consent object to your events, your data is immediately impacted"
> If you disable a consent category, events are not sent to mapped destinations.
>
-> If a destination is mapped to multiple categories, and the end user has conflicted preferences, data will be sent to the destination.
+> If a destination is mapped to multiple categories, and the end user has conflicting preferences, data will be sent to the destination.
>
> If Segment receives an API call with both an integrations object and a consent object, the consent object takes preference.
-## Step 1: Access the Consent Management feature
+
+
+## Step 1: Create consent categories
+
+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 **Get started**.
+3.
+
+
+
+> warning "Segment recommends mapping all destinations to a category"
+> Any destination that doesn't have a mapping won't receive events with a consent object.
+
+
-## Step 2: Create consent categories
+## Step 2:
-> info "Segment recommends mapping all destinations to a category"
-> Each destination should be mapped to a category to ensure completeness of data in your downstream destinations. Any destination that doesn't have a mapping will not receive events with a consent object.
## Step 3:
diff --git a/src/privacy/enforce-consent.md b/src/privacy/reconcile-consent.md
similarity index 87%
rename from src/privacy/enforce-consent.md
rename to src/privacy/reconcile-consent.md
index af58ce6aa3..37a792ae82 100644
--- a/src/privacy/enforce-consent.md
+++ b/src/privacy/reconcile-consent.md
@@ -1,5 +1,5 @@
---
-title: Enforce Consent
+title: Reconciling Consent Conflicts
---
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.
@@ -11,15 +11,28 @@ Segment sends data only to destinations in categories consented to by the end us
Segment detects when there are conflicting consent categories for a user and
+
+
+## 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 destination.
+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 the consent object and integrations object have conflicting destination information, Segment routes data according to the following table:
+
+
| Consent Object | Integration Object | Result |
| --------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | ------ |
| Not provided or empty object | Not provided or empty object | Message delivered to all enabled destinations |
From 59bff7e96e847cbb53377c0de1565f88b7bb49db Mon Sep 17 00:00:00 2001
From: forstisabella <92472883+forstisabella@users.noreply.github.com>
Date: Tue, 20 Jun 2023 18:34:23 -0400
Subject: [PATCH 06/41] simplify callout
---
src/privacy/consent-management.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/privacy/consent-management.md b/src/privacy/consent-management.md
index f5af36c950..77331cef1c 100644
--- a/src/privacy/consent-management.md
+++ b/src/privacy/consent-management.md
@@ -9,8 +9,8 @@ related:
Consent management is a [description]
-> warning "Website sources and event streaming destinations are available to map to consent categories"
-> During the private beta, you can map website sources and event streaming destinations to a consent category. All other sources and destinations will not be affected by consent mappings.
+> warning "You can map website sources and event streaming destinations to consent categories during the private beta"
+> All other sources and destinations are not affected by consent mappings.
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 (for example, personalization, advertising, and site performance) that describe how your company intends to use that data.
From 0addcf6457fa7994c45bb641d197a5b59518a22e Mon Sep 17 00:00:00 2001
From: forstisabella <92472883+forstisabella@users.noreply.github.com>
Date: Tue, 20 Jun 2023 18:36:06 -0400
Subject: [PATCH 07/41] Update consent-management.md
---
src/privacy/consent-management.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/privacy/consent-management.md b/src/privacy/consent-management.md
index 77331cef1c..9ec82665bf 100644
--- a/src/privacy/consent-management.md
+++ b/src/privacy/consent-management.md
@@ -12,7 +12,7 @@ Consent management is a [description]
> warning "You can map website sources and event streaming destinations to consent categories during the private beta"
> All other sources and destinations are not affected by consent mappings.
-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 (for example, personalization, advertising, and site performance) that describe how your company intends to use that data.
+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.
After a user sets their consent preferences, Segment updates the [consent object](#consent-object) with a user's preferences. The events are then sent downstream to any destinations in categories consented to by the user.
From 3be13557b6f84bf42d9dff5f7010f2cbc0d744a1 Mon Sep 17 00:00:00 2001
From: forstisabella <92472883+forstisabella@users.noreply.github.com>
Date: Wed, 21 Jun 2023 19:57:08 -0400
Subject: [PATCH 08/41] add image, update order of operations
---
src/privacy/configure-consent-management.md | 3 +++
src/privacy/consent-management.md | 19 +++++++++----------
src/privacy/images/consent-overview.png | Bin 0 -> 3151500 bytes
3 files changed, 12 insertions(+), 10 deletions(-)
create mode 100644 src/privacy/images/consent-overview.png
diff --git a/src/privacy/configure-consent-management.md b/src/privacy/configure-consent-management.md
index 7e1ff9c6bd..1c6625c47e 100644
--- a/src/privacy/configure-consent-management.md
+++ b/src/privacy/configure-consent-management.md
@@ -26,6 +26,9 @@ Before you can configure consent in Segment, you'll need to take the following s
## Step 1: Create consent categories
+> warning "You can map website sources and event streaming destinations to consent categories during the private beta"
+> All other sources and destinations are not affected by consent mappings.
+
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 **Get started**.
3.
diff --git a/src/privacy/consent-management.md b/src/privacy/consent-management.md
index 9ec82665bf..2bda630311 100644
--- a/src/privacy/consent-management.md
+++ b/src/privacy/consent-management.md
@@ -7,32 +7,31 @@ related:
> info "Consent Management is currently in private beta"
> This means that the 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.
-Consent management is a [description]
+Segment works with your third party consent management platform to collect the categories an end user consents to, map each of your Segment destinations to a consent category, and route events only to the categories consented to by a user.
-> warning "You can map website sources and event streaming destinations to consent categories during the private beta"
-> All other sources and destinations are not affected by consent mappings.
+
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.
-After a user sets their consent preferences, Segment updates the [consent object](#consent-object) with a user's preferences. The events are then sent downstream to any destinations in categories consented to by the user.
+After a user sets their consent preferences, Segment updates the [consent object](#consent-object) with a user's preferences. The events are then sent downstream to any destinations in categories that a user consents to sharing data with.
> success ""
> Segment collects consent for both registered users and anonymous users.
-If a **consent conflict** exists Segment resolves them according to the [Enforce Consent](/docs/privacy/enforce-consent) documentation.
+If a **consent conflict** exists (for example, one user on two different devices consented to two different categories), Segment resolves the conflict according to the [Reconcile Consent](/docs/privacy/reconcile-consent) documentation.
## Consent object
-Segment requires every event from all of your sources to include the end-user consent preferences, captured by your consent management tool, in the form of the **consent object**. The consent object is a JSON object with the following format:
+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 {
consentCategories {
- "functional" : true,
- “advertising” : true,
- "personalization" : false
+ "functional": true,
+ “advertising”: true,
+ "personalization": false
}
}
```
-The Segment consent object is
\ No newline at end of file
+Once you've added the consent object to your web libraries and started collecting user data, you can use the Consent Management tab in the Segment app to [map your destinations to the consent categories](/docs/src/privacy/configure-consent-management) you set up in your third-party consent management platform.
\ No newline at end of file
diff --git a/src/privacy/images/consent-overview.png b/src/privacy/images/consent-overview.png
new file mode 100644
index 0000000000000000000000000000000000000000..1dfb7a344b4c9af8ce6320f593bf2ca2ed8f9710
GIT binary patch
literal 3151500
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