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
* Update Adobe Heartbeat docs
* info formatting :)
* Update getting started
* Add identity resolution and setup/settings to side nav
* Refactor using side nav tabs
* Update images for AA Settings V2
* Change side nav title for implementing AA
* Update Overview & Success Events
* Rename images using -
* Add eVar section
* Update merchandising events
* Update props
* Update list variablese
* Add external docs for list vars
* Add hierarchy varrs
* Add segment dest specific options
* Update hyperlinks in table of contents
* Remove provide feedback from images
* Add more edits to implementation/settings page
* Revamp the AA landing page
* Fix images and add context data variable format chart to mobile page
* Change context data variable table on heartbead page
* Link to best practices LinkURL
* First iteration on updating Identity Resolution tab
* Add new decision tree
* Update Identity Resolution
* Update Identity Resolution cloud header size
* Update best practices and fix merch events
* Apply suggestions from code review
add gh-based suggestions, will just commit the rest direct to branch
* Assorted edits
* more edits
* edits with B
* Fix eVar link to and add context data section
* Update images with latest app deploy
* Change intro to identity resolution and add settings images
* Address some TODOs in settings section
* Update todo for tabs with JSON settings and specify XML is SS only
* Update Custom Video Metadata
Co-authored-by: LRubin <[email protected]>
* Change HB Adobe steps to numbers
* Add JSON & XML example to eccommerce spec
* Address comments in Remove Fallbacks for VisitorIds
* small copy edits
* more copy edits
* a few more oopses
* Fix typos
* checkin
* check in copy edits with B
* Address final todos
* Fix format
* Change TOC on index to match side-nav
* Change name to mapping Segment to AA
* Fix broken links in settings.md
* Fix broken links in identity.md
Co-authored-by: sanscontext <[email protected]>
Co-authored-by: LRubin <[email protected]>
Copy file name to clipboardExpand all lines: src/connections/destinations/catalog/adobe-analytics/best-practices.md
+33-46Lines changed: 33 additions & 46 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,17 @@ title: Adobe Analytics Best Practices
3
3
strat: adobe
4
4
---
5
5
6
-
There are a few common questions that we've heard over time that are worth mentioning.
6
+
This page contains best practices and tips for setting up and testing Adobe Analytics with Segment.
7
+
8
+
## Validating by Data by Component
9
+
10
+
The following list contains tools you can use to validate data coming from Segment and going to each different Adobe Analytics component
11
+
12
+
-**Analytics.js** - [Adobe Experience Cloud Debugger](https://chrome.google.com/webstore/detail/adobe-experience-cloud-de/ocdmogmohccmeicdhlhhgepeaijenapj) and Chrome Developer Tools
13
+
-**Other Segment server libraries** - Segment's in-app [Event Tester Tool](/docs/connections/test-connections/)
14
+
-**iOS Device mode** - Charles Proxy, DEBUG mode
15
+
-**Android Device Mode** - Charles Proxy, VERBOSE logging
16
+
7
17
8
18
## Reducing API calls by sending events on page or screen
9
19
@@ -19,7 +29,7 @@ For example, instead of sending the Product Viewed event as a `track` to AA, you
19
29
}
20
30
```
21
31
22
-
When the integration option `events` is passed in, we map the events and send them using the `<events>` tag. In the example above, we would build`<events>event35, scAdd</events>`.
32
+
When the integration option `events` is passed in, Segment maps the events and sends them using the `<events>` tag. In the example above, the output would be`<events>event35, scAdd</events>`.
23
33
24
34
_Considerations_
25
35
@@ -33,19 +43,20 @@ _Considerations_
33
43
```
34
44
35
45
## Setting custom linkTypes, linkNames and linkUrls
36
-
If you are setting up the Adobe Analytics destination in cloud-mode, you can pass in custom linkTypes, linkNames and linkURLs.
37
46
38
-
**Note**: If you pass in the `visitorId` in a destination specific `integration` object within your Segment `page` or `track` events, then the `visitorId` passed will persist on page or track calls that occur after an identify call. This will effectively supersede Segment setting the `visitorId` variable to your `userId` after an `identify` call.
47
+
If you are setting up the Adobe Analytics destination in cloud-mode, you can pass in custom `linkTypes`, `linkNames` and `linkURLs`.
48
+
49
+
**Note**: If you pass in the `visitorId` in a destination-specific `integration` object in your Segment Page or Track events, the `visitorId` passed persists on Page or Track calls that occur after an Identify call. This effectively supersedes the `visitorId` variable Segment would set to your `userId` after an Identify call.
39
50
40
-
We know this is daunting territory, so don't hesitate to contact us directly for guidance!
51
+
We know this is daunting territory, so don't hesitate to [contact us directly for guidance](https://segment.com/help/contact/)!
41
52
42
-
**Setting the event linkType**
53
+
### Setting the event linkType
43
54
44
-
By default, Segment's integration with Adobe Analytics automatically sets an events linkType as a custom link or 'o' for 'other' within the s.tl() call. If you want to set the linkType of an event as download or exit links, you can pass in the following values within the `integrations.adobe analytics` object of your Segment event payload.
55
+
By default, Segment's integration with Adobe Analytics automatically sets an events `linkType` as a custom link `o` for 'other' within the `s.tl()` call. To set the `linkType` of an event as download or exit link, you can pass in a different value in the `integrations.adobe analytics` object of your Segment event payload.
45
56
46
-
A value of `d` or `D`will map to download links and a value of `e` or `E`will map to exit links
57
+
A value of `d` or `D`maps to "download" links, and a value of `e` or `E`maps to "exit" links
47
58
48
-
Below is a sample snippet of how you would set a Segment event as a download link type:
59
+
The example below shows of how you would set a Segment event as a download link type:
49
60
50
61
```javascript
51
62
"integrations": {
@@ -55,64 +66,40 @@ Below is a sample snippet of how you would set a Segment event as a download lin
55
66
}
56
67
```
57
68
58
-
If you pass in Segment events with a download (d or D) linkType, it will populate the Download link report in your Adobe Analytics reporting suite. If you pass in Segment events with a exit (e or E) linkType, it will populate the Exit link report in your Adobe Analytics reporting suite. Finally, if you pass in Segment event with either no linkType or a value of "o" or "O" in the integration.Adobe Analytics object, it will populate the custom link report in your Adobe Analytics reporting suite.
69
+
If you pass in Segment events with a download (d or D) linkType, they appear the Download link report in your Adobe Analytics reporting suite. If you pass in Segment events with an "exit" (e or E) linkType, they appear in the Exit link report in your Adobe Analytics reporting suite. Finally, if you pass in Segment events with a value of `o` or `O`, or _no_ linkType in the `integration.Adobe Analytics` object, they appear in the custom link report in your Adobe Analytics reporting suite.
59
70
60
-
**Setting the event linkName**
71
+
### Setting the event linkName
61
72
62
-
If you want to pass in a custom LinkName to Adobe Analytics, you can now define it by passing it as a string within the `integrations.Adobe Anlaytics`object of your Segment event. An example would be like the one below:
73
+
To pass in a custom LinkName to Adobe Analytics, pass it as a string in the `integrations.Adobe Analytics`object of your Segment event. The example below sets the custom linkname to "Click me".
63
74
64
75
```javascript
65
76
"integrations": {
66
77
"Adobe Analytics": {
67
-
"linkName":"some link name"
78
+
"linkName":"Click me"
68
79
}
69
80
}
70
81
```
71
82
72
-
If a custom linkName is not specified in the integration specific object in the payload, Segment will default to mapping `linkName` to the value from `(context.page.url)`. If there is no URL present Segment will set `linkName` to `No linkName provided`.
83
+
If you don't specify a custom linkName in the integration specific object in the payload, Segment defaults to mapping `linkName` to the value from `(context.page.url)`. If no URL is present, Segment sets `linkName` to `No linkName provided`.
73
84
74
-
NOTE: The `useLegacyLinkName` setting in the UI will be respected if you have the setting enabled and you send a custom `linkName` in the integration specific object.
85
+
> note ""
86
+
> **Note**: If you enable the `useLegacyLinkName` setting in the UI, Segment prepends `Link Name -` to the value you specified in the integration-specific object.
75
87
76
-
**Setting the event LinkURL**
88
+
### Setting the event LinkURL
77
89
78
-
If you want to pass in a custom LinkUrl to Adobe Analytics, you can do this by passing it as a string within the `integrations.Adobe Anlaytics`object of your Segment event. An example would be like the one below:
90
+
To pass a custom LinkUrl to Adobe Analytics, pass it as a string in the `integrations.Adobe Analytics`object of your Segment event. The example below sets the custom linkURLs to "example.com/example".
79
91
80
92
```javascript
81
93
"integrations": {
82
94
"Adobe Analytics": {
83
-
"linkUrl":"some link url"
95
+
"linkUrl":"example.com/example"
84
96
}
85
97
}
86
98
```
87
99
88
-
If a custom linkUrl is not specified in the integration specific object in the payload, Segment will default to mapping `linkUrl` to the `(context.page.url)`. If there is no URL present Segment will set `linkUrl` to `No linkUrl provided`.
89
-
90
-
91
-
## Best practices for userId and sessioning
92
-
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, this can break the links between anonymous and identified users inside your reports, if you're only using Analytics.js to send data to Adobe.
93
-
94
-
Adobe Analytics unfortunately counts every "effective" visitor ID as a *unique* visitor. There is no ability for Segment to alias, implicitly or explicitly, two effective IDs on your behalf.
95
-
96
-
Key to understanding the implications of this fact is an understanding of what Adobe Analytics means by **"effective" visitor ID**. To do so, we recommend reading [this section of their documentation](https://marketing.adobe.com/resources/help/en_US/sc/implement/xdevice_visid.html).
97
-
98
-
With analytics.js, we use the default auto-generated Adobe Analytics [`s_vi` cookie value](https://marketing.adobe.com/developer/documentation/data-insertion/c-visitor-id) as effective visitor ID until you `identify` your users. If you provide your Marketing Cloud ID Service Organization ID, then we'll set the MCVID and use that instead.
99
-
100
-
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 their documentation and discussion with many customers, we believe this is the best practice because now you can seamlessly track this user across devices whenever they are logged in.
101
-
102
-
So if you'd like to track your users on the server as well, you have a few options. If you're only tracking logged-in users, sending their `userId` in your events ensures that the events are attributed to the proper user. If you're tracking anonymous users too, Segment sends the `s_vi` cookie from Adobe if you pass it under `context['Adobe Analytics'].visitorId` as the `visitorId`. Then we fallback on the `userId` and lastly the Segment `anonymousId`, which you'll notice is a different ID from the anonymous `s_vi` value used on the client (Adobe Analytics' auto-generated effective ID for anonymous users).
103
-
104
-
If you don't mind slightly inflated unique user counts, this may be acceptable, as all events in that anonymous user's session are still attributable to a single user ID. If you really do want to tie the anonymous event from the client side with your server side events, you could grab the `s_vi` cookie value from the client and pass it to your server. We respect any value passed in `context["Adobe Analytics"].visitorId` and pass that as the `visitorID` if provided. But keep in mind that if you go this route, you would probably need to manage the `s_vi` cookies for all your users since you always need to pass it with all your server side calls. Note that you can only parse the `s_vi` cookie if you have **1st party cookie** enabled in you reporting suite.
105
-
106
-
Thus our recommendation is to take the slightly inflated user count, and just 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 right user.
107
-
108
-
If you're using the `marketingCloudVisitorID`, we recommend doing this and including it in `context["Adobe Analytics"].marketingCloudVisitorId`. Segment sends both the `userId` (or `anonymousId`, if the call is anonymous) in the `<visitorId>` tag and the MCVID in the `<marketingCloudVisitorID>` tag, and Adobe handles it from there.
109
-
110
-
**Note**: If you pass in the `visitorId` in a destination specific `integration` object within your Segment `page` or `track` events, then the `visitorId` persists on page or track calls that occur after an identify call. This effectively supersedes Segment setting the `visitorId` variable to your `userId` after an `identify` call.
111
-
112
-
<!-- TODO if you manually pass the visitorID in the Segment page or track call, then it sticks around after identify is called, and it prevents it from breaking - whatever you pass in the integrations object overrides what segment's adobe integration code logic does-->
113
-
114
-
We know this is daunting territory, so don't hesitate to contact us directly for guidance!
100
+
If you don't specify a custom linkUrl in the integration specific object in the payload, Segment defaults to mapping `linkUrl` to the `(context.page.url)`. If no is URL present, Segment sets `linkUrl` to `No linkUrl provided`.
115
101
116
102
## Populating Custom Links report with server side data
117
103
118
-
Since we cannot automatically track page data for **server side** calls, if you want to populate the **Custom Links** report in Adobe Analytics, you must manually pass `context.page.url`.
104
+
Since Segment cannot automatically track page data for **server side** calls, you must manually pass `context.page.url` if you want to populate the **Custom Links** report in Adobe Analytics.
105
+
<!-- TODO this is a lot to parse. can we explain when you might do this? -->
0 commit comments