You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/privacy/consent-management/consent-in-segment-connections.md
+3-1Lines changed: 3 additions & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -41,7 +41,9 @@ Segment requires every event from all of your sources to include the end user co
41
41
42
42
```
43
43
44
-
Events without the consent object will continue to flow to destinations without consent enforcement.
44
+
Events without the consent object will continue to flow to destinations without consent enforcement.
45
+
46
+
Segment events without a context or consent object or that have an empty context or consent object do not impact [consent preferences on the Profile](/docs/privacy/consent-management/consent-in-unify) and these events will flow to all destinations.
Copy file name to clipboardExpand all lines: src/privacy/consent-management/consent-in-unify.md
+55-23Lines changed: 55 additions & 23 deletions
Original file line number
Diff line number
Diff line change
@@ -4,18 +4,46 @@ plan: consent-management
4
4
redirect_from: "/privacy/consent-in-unify"
5
5
---
6
6
7
-
Segment uses the [consent object](/docs/privacy/consent-management/consent-in-segment-connections/#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.
7
+
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.
8
8
9
-
> info "Consent on the profile is in public beta"
10
-
> Storing consent preferences on the profile is actively in development and some things may change before it becomes generally available.
9
+
> info "Consent on the Profile is in private beta"
10
+
> Storing consent preferences on the Profile is actively in development and some functionality may change before it becomes generally available.
11
11
12
+
## Consent object
13
+
14
+
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 nestled inside of the [context object](/docs/connections/spec/common/#context) with the following format:
15
+
16
+
> success ""
17
+
> The JSON keys in the consent object should represent the `categoryId` for each consent category.
18
+
19
+
```json
20
+
{
21
+
"context": {
22
+
"consent": {
23
+
"categoryPreferences": {
24
+
"Advertising": true,
25
+
"Analytics": false,
26
+
"Functional": true,
27
+
"DataSharing": false
28
+
}
29
+
}
30
+
}
31
+
}
32
+
33
+
```
34
+
35
+
Segment events without a context object or consent object or events that have an empty context or consent object do not impact consent preferences on the Profile and have the following behavior:
36
+
- Segment sets a value of `false` on a Profile for all consent categories for which consent has never collected.
37
+
- Segment sets a value of `false` on a Profile for each consent category in any events with an empty `context.consent.categoryPreferences` object.
38
+
- Segment sets a value of `false` on a Profile for categories not addressed in an `context.consent.categoryPreferences` object.
39
+
- Profiles that have consent categories which have never been collected are set to `false` during a Profile Merge. This might result in a [Profile level conflict](#profile-level-conflict).
12
40
13
41
## Segment Consent Preference Updated event
14
42
15
43
> success ""
16
44
> The Segment Consent Preference Updated event is generally available (GA).
17
45
18
-
Every time an end user provides or updates their consent preferences, Segment requires you to generate a **Segment Consent Preference Updated** event. If you are using [Segment's OneTrust consent wrappers](/docs/privacy/consent-management/configure-consent-management/#step-2-integrating-your-cmp-with-segment), Segment automatically generates a Segment Consent Preference Updated event. This event is required to add the end user’s consent preference on their profile in Unify.
46
+
Every time an end user provides or updates their consent preferences, Segment requires you to generate a **Segment Consent Preference Updated** event. If you are using [Segment's OneTrust consent wrappers](/docs/privacy/consent-management/configure-consent-management/#step-2-integrating-your-cmp-with-segment), Segment automatically generates a Segment Consent Preference Updated event. This event is required to add the end user’s consent preference on their Profile in Unify.
19
47
20
48
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 Updated [Track call](/docs/connections/spec/track/) demonstrating their new consent preferences would have the following format:
21
49
@@ -55,16 +83,19 @@ If you use Destination Actions to send consent information to your destinations,
55
83
> info "Sharing consent with Classic Destinations is not available"
56
84
> Segment only supports sharing consent with Actions Destinations.
57
85
58
-
## Profile conflicts
59
-
You can experience conflicts in an end user's consent preferences when they set different consent preferences across different devices (device-level conflicts) or when you merge two Profiles with different consent preferences into one profile (profile-level conflicts).
86
+
## Storing consent preferences on the Profile
87
+
Segment stamps consent preference on every Segment event from streaming and Reverse ETL sources to store them on the Profile.
88
+
89
+
> warning "Storing consent on the Profile is in private beta"
90
+
> Reach out to your sales contact or [request a demo](https://segment.com/contact/demo){:target="_blank"} to participate in the private beta.
60
91
61
92
### Device-level conflicts
62
93
A device-level conflict occurs when conflicting consent preferences linked to one user ID are collected from two distinct devices.
63
94
64
95
> success ""
65
96
> Segment uses `anonymousId` to approximate device identification, as some of Segment's libraries don't track `deviceId`.
66
97
67
-
For example, if an end-user didn’t consent to Advertising on their mobile phone, but later consented to Advertising on their desktop computer, this user would have a conflicting consent preference for the `advertising` category.
98
+
For example, if an end-user didn't consent to Advertising on their mobile phone, but later consented to Advertising on their desktop computer, this user would have a conflicting consent preference for the `advertising` category.
68
99
69
100
By default, Segment relies on the latest consent preferences collected for a user and would set the `advertising` category to `true` given that the **latest** consent preference collected (from the desktop computer) consented to the `advertising` category.
70
101
@@ -75,38 +106,39 @@ Examples of other conflict resolution strategies include:
75
106
-**Ask user to resolve conflict**: Ask a user for consent preference information and apply their preferences across all of a user's devices. If this new request for consent preferences results in a conflict with the information stored in your single source of truth, prompt your user to resolve the conflict and provide their consent preferences.
76
107
77
108
> success ""
78
-
> An end user's profile with device level conflicts will always result in a consent status of `true` or `false` for the conflicting consent categories.
109
+
> An end user's Profile with device level conflicts will always result in a consent status of `true` or `false` for the conflicting consent categories.
79
110
80
-

111
+

81
112
82
113
### Profile-level conflict
83
-
A profile-level conflict occurs when two distinct userIDs with different consent preferences are merged into one Unify profile. A profile-level conflict can also occur when a userID and an anonymousID (one without a linked userID) are linked to the same profile by an external ID, like an email address or phone number, and the consent preferences of both profiles do not match.
114
+
A Profile-level conflict occurs when two distinct userIDs with different consent preferences are merged into one Unify Profile. A Profile-level conflict can also occur when a userID and an anonymousID (one without a linked userID) are linked to the same Profile by an external ID, like an email address or phone number, and the consent preferences of both Profiles do not match.
115
+
116
+

84
117
85
-

118
+
To avoid Profile-level conflicts, Segment recommends that you take the following steps:
86
119
87
-
To avoid profile-level conflicts, Segment recommends that you take the following steps:
88
-
1.**Use `user_id` to uniquely identify a profile or person**: Using other identifiers, like a phone number, email address, or `anonymousId`, can result in a profile-level conflict. With a unique `user_id` for each profile, there can never be a profile level conflict between two users on the same profile.
89
-
2.**Set `user_id` as the highest priority identifier**: Setting `user_id` as the highest priority identifier in your [Identity Resolution settings](/docs/unify/identity-resolution/identity-resolution-settings/#priority) correctly models the one-to-many relationship between `user_id` and `anonymousId`.
90
-
3.**Maintain the default `reset()` behavior that represents a logout and flushes the `user_id` and `anonymousId`**: When a user explicitly logs out of your application, call `analytics.reset()` to prevent any further event activity from being associated with the previous user and generate a new anonymousId for subsequent activity until a user logs in again. This helps you avoid ambiguity when multiple people use a shared device.
120
+
***Ensure your Identity Resolution rules have exactly 1 identifier (for example, `user_id` or email or `phone_number`) that uniquely identifies a profile or person**: Set this identifier to have a priority of 1 and limit your identifier to 1 value ever. With a unique, persistent identifier for each profile, there can never be a profile level conflict between two users on the same Profile. Segment evaluates and stores events with `ids` that are discarded due to a maximum value limit violation on the existing Profile.
121
+
***Only collect any additional identifiers when that unique identifier is present**: For example, if consent is initially captured for an anonymous ID and email, but no `user_id` (the unique identifier), it will create a profile (P1). Later, if the same email is captured with a `user_id`, a different anonymous ID, and updated consent preferences, a second profile is created. Since both profiles share the same email, a profile merge will occur, potentially leading to conflict in consent preferences.
122
+
***Maintain the default `reset()` behavior**: When a user explicitly logs out of your application, call `analytics.reset()` to prevent any further event activity from being associated with the previous user and generate a new `anonymousId` for subsequent activity until a user logs in again. This helps you avoid ambiguity when multiple people use a shared device.
91
123
92
124
> success ""
93
-
> Profile conflicts only impact profiles used in Engage spaces.
125
+
> Profile conflicts only impact Profiles used in Engage spaces.
94
126
95
127
## Enforcing consent in Twilio Engage
96
-
Consent enforcement in Twilio Engage and Linked is currently unavailable during the public beta. Segment stores consent preferences as traits on the Profile. These traits can be used like any other when building Audiences/Journeys in Twilio Engage and Linked Audiences.
128
+
Consent enforcement in Twilio Engage and Linked is currently unavailable during the public beta. Segment stores consent preferences as traits on the Profile.
97
129
98
130
> warning ""
99
-
> Consent stored on the profile does not automatically enforce consent in Twilio Engage or Linked Audiences.
131
+
> Consent stored on the Profile does not automatically enforce consent in Twilio Engage or Linked Audiences.
100
132
101
-
## Validating consent preferences stored on a profile
102
-
You can validate consent is present on the profile by looking for the consent trait provided for a profile on the consent tab.
133
+
## Validating consent preferences stored on a Profile
134
+
You can validate consent is present on the Profile by looking for the consent trait provided for a Profile on the consent tab.
103
135
104
136
-**If the value is `true`**: Your user consented to have their data used for this purpose
105
137
-**If the value is `false`**: Your user did not consent to have their data used for this purpose
106
-
-**If the value is `conflict`**: At the time this profile was merged, there was a conflict in the consent preferences recorded for a consent category. For more information about consent conflicts, see the [profile-level conflict](#profile-level-conflict) documentation.
138
+
-**If the value is `conflict`**: At the time this Profile was merged, there was a conflict in the consent preferences recorded for a consent category. For more information about consent conflicts, see the [Profile-level conflict](#profile-level-conflict) documentation.
107
139
108
140
109
-
## Troubleshooting consent preferences stored on the profile
141
+
## Troubleshooting consent preferences stored on the Profile
110
142
111
143
### If I have 2 sources connected to a Unify space and only 1 is set up to collect consent, which consent preferences does Segment record?
112
-
Consent preferences collected in the [consent object](/docs/privacy/consent-management/consent-in-segment-connections/#consent-object) from the source are used to store consent on the profile. Sources with no consent object do not impact what is stored on the profile. If the source generates an empty consent object, Segment interprets this as an end-user failing to consent to any category. As a result, the consent preference will be updated to `false` for all consent categories.
144
+
Consent preferences collected in the [consent object](/docs/privacy/consent-management/consent-in-segment-connections/#consent-object) from the source are used to store consent on the Profile. Sources with no consent object do not impact what is stored on the Profile. If the source generates an empty consent object, Segment interprets this as an end-user failing to consent to any category. As a result, the consent preference will be updated to `false` for all consent categories.
0 commit comments