Adobe Analytics Destination Config Reference
Beta- free
- growth
- enterprise
16 minute read
Adobe Analytics is a web and app analytics destination. RudderStack sends events to Adobe’s Data Insertion API from its servers, or loads Adobe’s own libraries in device mode — in the browser, and in Android and iOS apps.
In an Adobe Analytics destination spec:
type: adobe_analyticsdefinition_version: 1
Sample configuration
version: rudder/v1
kind: destination
metadata:
name: adobe-analytics-prod
spec:
id: adobe-analytics-prod
display_name: Adobe Analytics Production
type: adobe_analytics
definition_version: 1
enabled: true
config:
report_suite_ids: acmeprod,acmeglobal
tracking_server_url: "{{ .ADOBE_TRACKING_SERVER_URL }}"
tracking_server_secure_url: acme.sc.omtrdc.net
marketing_cloud_org_id: "{{ .ADOBE_MARKETING_CLOUD_ORG_ID }}"
drop_visitor_id: false
timestamp_option: disabled
prefer_visitor_id: false
rudder_events_to_adobe_events:
- from: Signed Up
to: event1
track_page_name: true
context_data_mapping:
- from: section
to: siteSection
context_data_prefix: rs
e_var_mapping:
- from: plan
to: "2"
list_mapping:
- from: interests
to: "1"
delimiter: ","
custom_props_mapping:
- from: category
to: "3"
delimiter: "|"
event_merch_event_to_adobe_event:
- from: Order Completed
to: event5
event_merch_properties:
- revenue
product_identifier: sku
heartbeat_tracking_server_url: "{{ .ADOBE_HEARTBEAT_TRACKING_SERVER_URL }}"
events_to_types:
- from: Video Playback Started
to: heartbeatPlaybackStarted
- from: Video Playback Completed
to: heartbeatPlaybackCompleted
event_filtering:
blacklist:
- Product Viewed
connection_mode:
web: device
cloud: cloud
consent_management:
web:
- provider: oneTrust
consents:
- analyticsThe above example loads Adobe’s library on web sources in device mode and sends server-side events in cloud mode, which needs tracking_server_secure_url — see Connection. It sends userId as Adobe’s visitor ID, and sets up video heartbeat tracking for the web library — see Identity and timestamps and Video heartbeat.
Config keys
config accepts only the keys listed below. The shared config key rules cover unknown keys, defaults, and immutability.
Adobe Analytics keys split by connection mode and platform, and each group below says which mode its keys affect. Rudder CLI accepts every key whatever the mode — a key for another mode is stored and ignored.
In
cloudmode Adobe Analytics acceptstrack,page, andscreenevents. Indevicemode, web sources sendpageandtrack, while Android and iOS sources sendidentify,track, andscreen.
Connection
These keys tell Adobe Analytics where the data belongs. In web device mode, a report suite or tracking server the page already sets on Adobe’s s_account or s object takes precedence over these keys.
report_suite_ids
RequiredType:
string
Description:
Report suite IDs RudderStack sends events to, separated by commas — for example acmeprod,acmeglobal. They’re listed on the Adobe Analytics settings page.
Notes:
- Applies to
cloudmode and towebsources indevicemode. Android and iOS device mode take the report suite from the app’sADBMobileConfig.jsonfile instead. - At most 300 characters, and must not contain line breaks.
- A
{{ path || fallback }}template is accepted in place of a literal, and isn’t measured against the length limit. - A spec that omits this key fails validation with
'report_suite_ids' is required.
tracking_server_url
SecretType:
string
Description:
Hostname of your Adobe Analytics tracking server — Adobe’s trackingServer variable — without http:// or https://, for example acme.sc.omtrdc.net.
Notes:
- Applies to
devicemode onwebsources only. - At most 100 characters, and must not contain line breaks. A value containing
.ngrok.iofails validation. - A
{{ path || fallback }}template is accepted in place of a literal.
Supply it as a {{ .VAR }} reference rather than a literal — see Secrets.
See Connection settings.
tracking_server_secure_url
Type:
string
Description:
Hostname of your Adobe Analytics tracking server for HTTPS requests — Adobe’s trackingServerSecure variable — for example acme.sc.omtrdc.net. Cloud mode sends every event to this host.
Notes:
- Applies to
cloudmode and towebsources indevicemode. - Rudder CLI doesn’t require this key, even when a source connects in
cloudmode. Without it, RudderStack can’t deliver cloud-mode events. - At most 100 characters, and must not contain line breaks. A value containing
.ngrok.iofails validation. - A
{{ path || fallback }}template is accepted in place of a literal.
marketing_cloud_org_id
SecretType:
string
Description:
Your Adobe Marketing Cloud organization ID, for example 1A2B3C4D5E6F7A8B9C0D1E2F@AdobeOrg. In web device mode, setting it starts Adobe’s Visitor ID service (visitorAPI.js) with this ID. In cloud mode, RudderStack sends it with each event.
Notes:
- Applies to
cloudmode and towebsources indevicemode. - At most 100 characters, and must not contain line breaks.
- Templates aren’t accepted in place of a literal; a template is measured as text against the same limit.
Supply it as a {{ .VAR }} reference rather than a literal — see Secrets.
See Identity resolution.
Identity and timestamps
These keys apply in cloud mode and to web sources in device mode. Adobe doesn’t accept both a visitor ID and a timestamp in one hit, so drop_visitor_id, timestamp_option, and prefer_visitor_id together decide which one each event carries:
timestamp_option | Visitor ID | Timestamp |
|---|---|---|
disabled | Sent, unless drop_visitor_id is true | Not sent |
enabled | Not sent | Sent |
hybrid, with prefer_visitor_id: true | Sent, unless drop_visitor_id is true | Not sent |
hybrid, with prefer_visitor_id: false | Not sent | Sent |
optional | Not sent | Not sent |
The visitor ID is the event’s userId, so an event without one carries none. In cloud mode, a timestamp is sent only when timestamp_optional_reporting is also true.
drop_visitor_id
Type:
boolean
Default value:
true
Description:
Don’t send the event’s userId as Adobe’s visitor ID. Set it to false to send the visitor ID in the cases the table above lists.
timestamp_option
Type:
string
Default value:
disabled
Description: Whether your report suites accept timestamped data, non-timestamped data, or both. It decides whether each event carries a visitor ID or a timestamp, as the table above shows.
Notes:
- One of
disabled,enabled,hybrid, oroptional. optionalsets neither a visitor ID nor a timestamp.
prefer_visitor_id
Type:
boolean
Default value:
false
Description:
With timestamp_option: hybrid, send the visitor ID instead of the timestamp.
Notes:
- Applies when
timestamp_optionishybrid. Leave it unset otherwise.
timestamp_optional_reporting
Type:
boolean
Default value:
false
Description: Send event timestamps in cloud mode, for report suites where timestamps are optional. The dashboard calls it Send Both Timestamp and VisitorID for Timestamp Optional Reporting Suites.
Notes:
- Applies to
cloudmode only. Cloud mode sends no timestamp unless this istrue. - Adobe advises against it, because it can put data out of order. It also needs Optional Timestamp turned on for the report suite.
no_fallback_visitor_id
Type:
boolean
Default value:
false
Description:
Don’t set Adobe’s fallback visitor ID. When false, RudderStack sets it from the event’s AdobeFallbackVisitorId external ID, if there is one.
Notes:
- Applies to
cloudmode only.
Event mapping
rudder_events_to_adobe_events
Type:
array of objects
Description: Maps RudderStack event names to Adobe events.
Notes:
from— RudderStack event name.to— Adobe events to send for it, separated by commas, such asevent1,event2. On Android and iOS, it’s the action name sent to Adobe.- Both are required in each entry, each at most 100 characters and without line breaks.
- Applies in every mode. In
cloudmode, an event that’s neither an ecommerce event nor mapped here fails, unless it carriesproperties.overrideEventName. That includespageandscreencalls, which cloud mode matches by name.
rudder_events_to_adobe_events:
- from: Signed Up
to: event1
- from: Plan Upgraded
to: event2,event3See Overriding Adobe parameters for overrideEventName and the other cloud-mode overrides.
track_page_name
Type:
boolean
Default value:
true
Description:
Send a pageName with every track event. The dashboard calls it Enable pageName for Track Events.
Notes:
- Applies to
cloudmode and towebsources indevicemode. Incloudmode, it affects only events whoseproperties.overridePageViewistrue.
Variables
These keys map event fields to Adobe’s custom variables. In every mapping, from and to are both required, each at most 100 characters and without line breaks. Templates aren’t accepted in place of a literal; a template is measured as text against the same limit.
Index values are digit strings. Write "2", not 2, or validation fails.
context_data_mapping
Type:
array of objects
Description: Maps event fields to Adobe context data variables, which Adobe processing rules can read.
Notes:
from— event field, such as a property name.to— context data variable name.- Applies in every mode.
context_data_mapping:
- from: section
to: siteSectionSee Mappings.
context_data_prefix
Type:
string
Description: Prefix added to context data variable names. The dashboard calls it Prefix to prepend to all contextData properties.
Notes:
- In
cloudmode, it’s prepended to each variable name fromcontext_data_mapping. - In
devicemode, the SDK also sends event properties as context data under their own names, and prefixes those instead —<prefix>.<property>on web,<prefix><property>on Android and iOS. - At most 100 characters, and must not contain line breaks.
- Templates aren’t accepted in place of a literal; a template is measured as text against the same limit.
e_var_mapping
Type:
array of objects
Description: Maps event fields to Adobe eVars.
Notes:
from— event field, such as a property name.to— eVar index, written as a string:"2"foreVar2.- Applies to
cloudmode and towebsources indevicemode.
e_var_mapping:
- from: plan
to: "2"See Mapping for eVars and hierarchy variables for the values from accepts.
hier_mapping
Type:
array of objects
Description:
Maps event fields to Adobe hierarchy variables, on the same terms as e_var_mapping.
Notes:
from— event field, such as a property name.to— hierarchy index, written as a string:"1"forhier1.- Applies to
cloudmode and towebsources indevicemode.
list_mapping
Type:
array of objects
Description: Maps event properties to Adobe list variables.
Notes:
from— event property holding an array, or a comma-separated string.to— list index, written as a string:"1"forlist1.delimiter—|,:,,,;, or/, used to join the values. Set it on every entry, because an entry without one isn’t sent. The dashboard defaults it to,, but Rudder CLI doesn’t fill it in.- Applies to
cloudmode and towebsources indevicemode.
list_mapping:
- from: interests
to: "1"
delimiter: ","custom_props_mapping
Type:
array of objects
Description:
Maps event properties to Adobe props, on the same terms as list_mapping.
Notes:
from— event property holding an array, or a comma-separated string.to— prop index, written as a string:"3"forprop3.delimiter—|,:,,,;, or/. Set it on every entry here too. Without one,cloudmode skips the entry, and web device mode joins the values with|.- Applies to
cloudmode and towebsources indevicemode.
mobile_event_mapping
Type:
array of objects
Description:
The dashboard labels it Map RudderStack event field to Adobe mobile events, but no connection mode reads it. Android and iOS device mode take event names from rudder_events_to_adobe_events, and context data from context_data_mapping.
Notes:
fromandto— the same shape as the other mappings.- Rudder CLI accepts it so that a destination already carrying a value keeps it. Leave it out of a new destination.
Merchandising
These keys build Adobe’s merchandising event and product strings for ecommerce events. They apply in cloud mode and to web sources in device mode, except product_identifier, which applies in every mode. In every mapping, from and to are both required, each at most 100 characters and without line breaks.
event_merch_event_to_adobe_event
Type:
array of objects
Description: Maps RudderStack events to Adobe merchandising events of the currency or counter type, in the event string.
Notes:
from— RudderStack event name, such asOrder Completed.to— Adobe event, such asevent5.
event_merch_properties
Type:
array of strings
Description:
Event properties holding the currency or counter values for the events mapped in event_merch_event_to_adobe_event. With revenue listed, an Order Completed event mapped to event5 produces an event string such as purchase,event5=19.9.
Notes:
- Each name is at most 100 characters, and must not contain line breaks.
- Templates aren’t accepted in place of a literal; a template is measured as text against the same limit.
product_merch_event_to_adobe_event
Type:
array of objects
Description: Maps RudderStack events to Adobe merchandising events of the currency or counter type, in the product string.
Notes:
from— RudderStack event name.to— Adobe event.
product_merch_properties
Type:
array of strings
Description:
Properties holding the currency or counter values for the events mapped in product_merch_event_to_adobe_event. A name starting with products., such as products.price, is read from each product.
Notes:
- Each name is at most 100 characters, and must not contain line breaks.
- Templates aren’t accepted in place of a literal; a template is measured as text against the same limit.
product_merch_evars_map
Type:
array of objects
Description:
Maps properties to merchandising eVars in the product string, for the events mapped in product_merch_event_to_adobe_event. RudderStack joins them with | and appends them to each product.
Notes:
from— property name.to— eVar index, written as a string, such as"4".
product_identifier
Type:
string
Default value:
name
Description: Product field that identifies each product to Adobe, which accepts only one.
Notes:
- One of
name,id, orsku. Withid, RudderStack readsproduct_id, falling back toid.
Video heartbeat
These keys configure Adobe’s heartbeat tracking for video, so they apply only to sources connected in device mode — web, android, or ios.
heartbeat_tracking_server_url
SecretType:
string
Description:
Hostname of your Adobe heartbeat tracking server, such as acme.hb.omtrdc.net. Adobe provides it. Setting it turns on heartbeat tracking — on web, the SDK loads Adobe’s heartbeat library in place of the standard one.
Notes:
- At most 100 characters, and must not contain line breaks. A value containing
.ngrok.iofails validation. - Templates aren’t accepted — the value must be a literal.
Supply it as a {{ .VAR }} reference rather than a literal — see Secrets.
ssl_heartbeat
Type:
boolean
Default value:
true
Description: Send heartbeat calls over HTTPS.
events_to_types
Type:
array of objects
Description: Maps RudderStack video events to Adobe heartbeat events.
Notes:
from— RudderStack event name. Required, at most 100 characters and without line breaks.to— one ofinitHeartbeat,heartbeatPlaybackStarted,heartbeatPlaybackPaused,heartbeatPlaybackResumed,heartbeatPlaybackCompleted,heartbeatPlaybackInterrupted,heartbeatContentStarted,heartbeatContentComplete,heartbeatAdBreakStarted,heartbeatAdBreakCompleted,heartbeatAdStarted,heartbeatAdCompleted,heartbeatAdSkipped,heartbeatSeekStarted,heartbeatSeekCompleted,heartbeatBufferStarted,heartbeatBufferCompleted,heartbeatQualityUpdated, orheartbeatUpdatePlayhead. Rudder CLI doesn’t require it, but an entry without one maps nothing.- On web, applies only when
heartbeat_tracking_server_urlis set. Android and iOS don’t supportinitHeartbeatorheartbeatUpdatePlayhead.
events_to_types:
- from: Video Playback Started
to: heartbeatPlaybackStartedWeb library hosting
Both keys apply to device mode on web sources only. Each is at most 100 characters and must not contain line breaks, and a value containing .ngrok.io fails validation. Templates aren’t accepted — the value must be a literal.
proxy_normal_url
Type:
string
Description:
URL of your own copy of Adobe’s JavaScript library. When omitted, the SDK loads RudderStack’s hosted copy from cdn.rudderlabs.com.
Notes:
- Used when
heartbeat_tracking_server_urlis unset.
proxy_heartbeat_url
Type:
string
Description:
URL of your own copy of Adobe’s heartbeat library. When omitted, the SDK loads RudderStack’s hosted copy from cdn.rudderlabs.com.
Notes:
- Used when
heartbeat_tracking_server_urlis set.
Event filtering
Client-side event filtering applies only to sources connected indevicemode —web,android, orios— because the SDK is what applies the filter. Rudder CLI accepts the block in any mode, but events sent incloudmode reach Adobe Analytics unfiltered.
event_filtering
Type:
object
Description:
Restricts which track events the SDK passes to Adobe Analytics, by event name.
Notes:
whitelist— array of event names to allow; every othertrackevent is dropped.blacklist— array of event names to drop; every othertrackevent is allowed.- The two are mutually exclusive, and Rudder CLI enforces it — setting both fails validation.
- Each name is at most 100 characters, and must not contain line breaks.
connection_mode:
web: device
event_filtering:
blacklist:
- Product ViewedPer-source keys
Both keys are objects keyed by the local source type — the tokens listed under Source types. A key naming a source type this destination doesn’t support fails validation.
connection_mode
Type:
object
Description: Maps each source type you connect to the mode its events reach Adobe Analytics in, using the modes in Source types.
Notes:
- An entry is required for each source type you connect — see Connect a source.
- A mode the source type doesn’t support on this destination fails validation — for example
deviceforreact_native.
connection_mode:
web: device
ios: device
cloud: cloudconsent_management
Type:
object
Description:
Consent provider configuration per source type. The entry shape, accepted providers, and the rules on resolution_strategy and consents are shared across all destination types — see Consent management.
Source types
Adobe Analytics accepts events from these source types in the mentioned connection modes:
| Source type | Connection mode |
|---|---|
android | cloud, device |
android_kotlin | cloud |
ios | cloud, device |
ios_swift | cloud |
web | cloud, device |
unity | cloud |
react_native | cloud |
flutter | cloud |
cordova | cloud |
cloud | cloud |
warehouse | cloud |
web, android, and ios offer device mode. On mobile, device mode runs through the Android (Java) and iOS (Obj-C) SDKs, which load Adobe’s mobile SDK in the app. The Kotlin and Swift SDKs — android_kotlin and ios_swift — are cloud only. See Sending events via web device mode and Sending events via mobile device mode.
warehouse is the token a Reverse ETL source resolves to. Rudder CLI manages the destination’s warehouse entry — if the destination is connected to a Reverse ETL source, set connection_mode.warehouse: cloud in its spec, or apply removes it.
Rudder CLI can also declare the Reverse ETL connection itself, for the types listed under Supported destinations — see Manage Reverse ETL Connections using Rudder CLI.
The dashboard additionally offers Adobe Analytics to AMP and Shopify sources. Rudder CLI doesn’t manage those connections, soampandshopifyare invalid here.
Connect a source
An event stream connection to this destination is checked against two rules at validate time.
The source’s type must be supported. A source’s type resolves to one of the tokens above before the check — a JavaScript source resolves to web, and webhook and server-side SDK sources resolve to cloud. Every type an event stream source can resolve to is supported here, so this check always passes.
The destination config must carry a connection_mode entry for that source type. This lives on the destination spec, not on the connection spec. Without it:
destination 'adobe-analytics-prod' config has no 'connection_mode' entry for source type 'web'Adobe Analytics needs no additional config keys to connect a source of any type, in any mode. However, cloud mode can’t deliver events without tracking_server_secure_url.
Secrets
tracking_server_url, marketing_cloud_org_id, and heartbeat_tracking_server_url are the secret keys. Write each one you use as a {{ .VAR }} reference and supply the value at apply time:
config:
tracking_server_url: "{{ .ADOBE_TRACKING_SERVER_URL }}"
marketing_cloud_org_id: "{{ .ADOBE_MARKETING_CLOUD_ORG_ID }}"
heartbeat_tracking_server_url: "{{ .ADOBE_HEARTBEAT_TRACKING_SERVER_URL }}"export RUDDER_ADOBE_TRACKING_SERVER_URL="..."
export RUDDER_ADOBE_MARKETING_CLOUD_ORG_ID="..."
export RUDDER_ADOBE_HEARTBEAT_TRACKING_SERVER_URL="..."
rudder-cli apply
# or
rudder-cli apply --var-file secrets.vars.yamlNote that:
rudder-cli importwrites only the secrets the API returns, as{{ .VAR }}references, and leaves the others out. Add any secret key it leaves out, then supply the variables before you apply — see Secrets.tracking_server_secure_urlisn’t a secret, though it often names the same host astracking_server_url, sorudder-cli importwrites it in plain text.- In web
devicemode these values are embedded in the page’s JavaScript, so masking them protects your YAML, not the values themselves.
See How to Use Variable Substitution in Rudder CLI.
Changes by release
No changes since this type became available.
For changes across every destination type, see Destination Type Changes by Release.
See more
- Adobe Analytics Setup Guide for the dashboard settings, identity resolution, timestamps, and mappings
- Adobe Analytics Heartbeat Measurement for the video events heartbeat tracking sends
- Destination Type Reference for Rudder CLI for the rules shared across destination types
- Destination YAML Reference for the spec envelope