Skip to contentSkip to navigationSkip to topbar
On this page
Looking for more inspiration?Visit the
(information)
You're in the right place! Segment documentation is now part of Twilio Docs. The content you are used to is still here—just in a new home with a refreshed look.

Consent on the Profile


FREE x
TEAM x
BUSINESS
ADDON x

Segment uses the consent object on Segment events, including the Segment Consent Preference Updated 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.

A device-level conflict occurs when conflicting consent preferences linked to one user ID are collected from two distinct devices.

(success)

Segment uses `anonymousId` to approximate device identification

Because some of Segment's libraries don't track deviceId, Segment uses anonymousId to approximate device identification.

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.

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.

If you would like to use a different method of conflict resolution, you must build an approach to address and resolve conflicting consent preferences in your website or mobile app and then send the updated consent back to Segment.

Examples of other conflict resolution strategies include:

  • Rely on a single source of truth for consent preferences: Apply the consent preferences found in your single source of truth across all of a user's devices.
  • 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.
(information)

Consent status for device-level conflicts

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.

A diagram showing different consent preferences being reconciled for a single Profile.

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.

A diagram showing different users linked to one Profile.

To avoid Profile-level conflicts, Segment recommends that you take the following steps:

  • 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.
  • 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 one profile. 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.
  • 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.
(success)

Success!

Profile-level conflicts only impact Profiles used in Engage spaces.