Identity Resolution in Segment Adobe Analytics

This page explains how your destination settings (for Identity Resolution and Timestamps) change how user session data (the userId and visitorId) are sent to Adobe Analytics. You should get familiar with the destination settings in the Segment app before continuing.

The Identity Resolution destination settings are:

  • Marketing Cloud ID
  • Drop VisitorID, and No Fallbacks for VisitorID:Server-Side Only destination settings.

The Timestamp destination settings are:

  • Timestamp Option
  • Send Both Timestamp and VisitorID for Timestamp Optional Reporting Suites
  • Prefer VisitorID for Hybrid Timestamp Reporting

Analytics.js - Device Mode

If you’re using Analytics.js in device-mode, Segment “wraps” the Adobe libraries. In this configuration, Segment sends Events directly from the client using the Adobe Analytics Appmeasurement.js library. For more information on choosing a connection mode see our section on Choosing between Device-mode and Cloud-mode. In this section we will discuss how identity resolution is handled if you are using Analytics.js in device-mode.

You can enable Drop Visitor ID from the Segment app to prevent Adobe from creating a new user profile when you set window.s.visitorID with a custom value. However if you’re only using Analytics.js to send data to Adobe, this can make it difficult to combine anonymous and identified users inside your reports.

Adobe Analytics counts every “effective” visitor ID as a unique visitor. Unfortunately, Segment cannot to alias two effective IDs on your behalf, either implicitly or explicitly.

To understand this, it’s important to first understand what Adobe Analytics means by “effective” visitor ID identifiers. We recommend reading the Adobe documentation on connecting users across devices.

Analytics.js automatically generates an Adobe Analytics s_vi cookie value which it uses as a visitor ID until you identify your users. If you provide your Marketing Cloud ID Service Organization ID, then Segment sets the Experience Cloud ID and uses that instead.

Once you identify your user, Segment sets the visitorId variable to your userId. This effectively creates a new user, which does have unique user implications. However, based on a thorough reading of the Adobe documentation and discussion with many customers, we believe this is the best practice because it allows you to seamlessly track logged-in users across devices.

Cloud Mode - Server Side

In Cloud Mode, you can send data through the Segment servers where it is then mapped and sent on to Adobe Analytics. “Cloud-mode” data is data sent without bundling the Segment-Adobe-Analytics SDK. You enable Cloud-mode from the Adobe Analytics source settings in the Segment app. It can be sent using mobile libraries, Analytics.js, and other server-based sources. Cloud mode data is sent to Adobe using Adobe’s data insertion API in XML format. For more information on choosing a connection mode see our section on Choosing between Device-mode and Cloud-mode. In this section we will discuss how identity resolution is handled if you are using a Cloud Mode connection.

There are several options for tracking your users on the server. If you only track logged-in users, you can send their userId in your events to ensures that the events are attributed to the correct user. If you’re tracking anonymous users, Segment sends the s_vi cookie from Adobe if you pass it under context['Adobe Analytics'].visitorId as the visitorId. If you do not pass as visitorID, Segment uses the userId if present, or as a last resort uses the Segment anonymousId. The Segment anonymousId is different from the anonymous s_vi value that Adobe Analytics auto-generates and uses on the client as an anonymous ID.

This may be acceptable if your organization can handle slightly inflated user counts, because all events in that anonymous user’s session can still be attributed to a single user ID. If you want to tie the anonymous event from the device with your server-side events, you could extract the s_vi cookie value from the client and pass it to your server. Segment retains any value passed in context["Adobe Analytics"].visitorId and passes that as the visitorID when provided. However if you use this method, you might need to manage the s_vi cookies for all of your users since you must always pass it with each server side call. You can only parse the s_vi cookie if you have 1st party cookie enabled in you reporting suite.

Segment recommends that you accept the slightly inflated user count, and use the Segment userId as the visitorId. Yes, you’ll have two user profiles if you have any anonymous client side events, but you can always set up custom eVars to connect the few anonymous events to the correct user.

If you’re using the Experience Cloud ID, you should accept this and use the Segment userId, and include a marketingCloudVisitorId in context["Adobe Analytics"].marketingCloudVisitorId. Segment sends both the userId (or anonymousId, if the call is anonymous) in the <visitorId> tag and the Experience Cloud ID in the <marketingCloudVisitorID> tag, and Adobe resolves the users from there.

Note: If you use the destination-specific integration object to pass the visitorId in your Segment page or track events, then the visitorId persists on Page or Track calls that occur after an Identify call. You can use this to override the Segment setting the visitorId variable to your userId after an identify call.

We know this is daunting territory, so don’t hesitate to contact us directly for guidance.

No Fallbacks for VisitorId Setting - Cloud Mode Only

Segment introduced a new No Fallbacks for Visitor ID setting to help with the transition from using the Adobe Analytics visitorID to using the Experience Cloud ID (ECID). If a visitorId is not explicitly sent in the integration specific object in your payload (ie. context["Adobe Analytics"].visitorId), Segment will fallback to setting the <visitorID> tag to userId (or anonymousId, if the call is anonymous). You can use this setting to indicate that you only want the <visitorId> tag to be set with the visitorId value sent in your integration specific object. Enabling this will help to reduce inflated user counts that are set with a Segment userId.

If you disable the Drop Visitor ID setting, Segment sends a <visitorID> in these three scenarios:

  • When your calls don’t send timestamps (meaning the Timestamp Option setting is set to disabled)
  • When your calls use hybrid timestamp mode and are sending visitorId
  • When your calls use hybrid timestamp mode and are sending visitorId and timestamp

NOTE: If one of these three scenarios is met and a your calls do not send a visitorId in the integrations object, Segment falls back to setting the visitorId to a Segment userId. This timestamp-dependent behavior does not change when you enable No Fallbacks for Visitor ID. The No Fallbacks for Visitor ID setting is an added feature in addition to that setting.

If No Fallbacks for Visitor ID is enabled, and you’re setting a marketingCloudVisitorID in the integrations object, then Segment will never pass anything except the visitorId from the integrations object as the <visitorID> tag.

This decision tree is a visual representation of how Segment’s Adobe Analytics destination settings and payload data interact with Segment to determine when to send a visitorId to Adobe.

This page was last modified: 27 Jul 2020

Get started with Segment

Segment is the easiest way to integrate your websites & mobile apps data to over 300 analytics and growth tools.
Create free account