Select spec version:

Adobe Analytics Destination Config Reference

Beta
Complete Rudder CLI reference for the Adobe Analytics destination config keys, variable and merchandising mappings, video heartbeat, device mode, and source types.
Available Plans
  • free
  • growth
  • enterprise

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_analytics
  • definition_version: 1

Sample configuration

yaml
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:
            - analytics

The 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 cloud mode Adobe Analytics accepts track, page, and screen events. In device mode, web sources send page and track, while Android and iOS sources send identify, track, and screen.

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

Required

Type: 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 cloud mode and to web sources in device mode. Android and iOS device mode take the report suite from the app’s ADBMobileConfig.json file 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

Secret

Type: 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 device mode on web sources only.
  • At most 100 characters, and must not contain line breaks. A value containing .ngrok.io fails 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 cloud mode and to web sources in device mode.
  • Rudder CLI doesn’t require this key, even when a source connects in cloud mode. Without it, RudderStack can’t deliver cloud-mode events.
  • At most 100 characters, and must not contain line breaks. A value containing .ngrok.io fails validation.
  • A {{ path || fallback }} template is accepted in place of a literal.

marketing_cloud_org_id

Secret

Type: 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 cloud mode and to web sources in device mode.
  • 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_optionVisitor IDTimestamp
disabledSent, unless drop_visitor_id is trueNot sent
enabledNot sentSent
hybrid, with prefer_visitor_id: trueSent, unless drop_visitor_id is trueNot sent
hybrid, with prefer_visitor_id: falseNot sentSent
optionalNot sentNot 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, or optional.
  • optional sets 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_option is hybrid. 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 cloud mode only. Cloud mode sends no timestamp unless this is true.
  • 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 cloud mode 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 as event1,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 cloud mode, an event that’s neither an ecommerce event nor mapped here fails, unless it carries properties.overrideEventName. That includes page and screen calls, which cloud mode matches by name.
yaml
rudder_events_to_adobe_events:
  - from: Signed Up
    to: event1
  - from: Plan Upgraded
    to: event2,event3

See 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 cloud mode and to web sources in device mode. In cloud mode, it affects only events whose properties.overridePageView is true.

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.
yaml
context_data_mapping:
  - from: section
    to: siteSection

See 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 cloud mode, it’s prepended to each variable name from context_data_mapping.
  • In device mode, 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" for eVar2.
  • Applies to cloud mode and to web sources in device mode.
yaml
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" for hier1.
  • Applies to cloud mode and to web sources in device mode.

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" for list1.
  • 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 cloud mode and to web sources in device mode.
yaml
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" for prop3.
  • delimiter — |, :, ,, ;, or /. Set it on every entry here too. Without one, cloud mode skips the entry, and web device mode joins the values with |.
  • Applies to cloud mode and to web sources in device mode.

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:

  • from and to — 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 as Order Completed.
  • to — Adobe event, such as event5.

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, or sku. With id, RudderStack reads product_id, falling back to id.
See Ecommerce Events for how RudderStack maps ecommerce events to Adobe.

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

Secret

Type: 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.io fails validation.
  • Templates aren’t accepted — the value must be a literal.

Supply it as a {{ .VAR }} reference rather than a literal — see Secrets.

See Adobe Analytics Heartbeat Measurement.

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 of initHeartbeat, heartbeatPlaybackStarted, heartbeatPlaybackPaused, heartbeatPlaybackResumed, heartbeatPlaybackCompleted, heartbeatPlaybackInterrupted, heartbeatContentStarted, heartbeatContentComplete, heartbeatAdBreakStarted, heartbeatAdBreakCompleted, heartbeatAdStarted, heartbeatAdCompleted, heartbeatAdSkipped, heartbeatSeekStarted, heartbeatSeekCompleted, heartbeatBufferStarted, heartbeatBufferCompleted, heartbeatQualityUpdated, or heartbeatUpdatePlayhead. Rudder CLI doesn’t require it, but an entry without one maps nothing.
  • On web, applies only when heartbeat_tracking_server_url is set. Android and iOS don’t support initHeartbeat or heartbeatUpdatePlayhead.
yaml
events_to_types:
  - from: Video Playback Started
    to: heartbeatPlaybackStarted

Web 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_url is 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_url is set.

Event filtering

Client-side event filtering applies only to sources connected in device mode — web, android, or ios — because the SDK is what applies the filter. Rudder CLI accepts the block in any mode, but events sent in cloud mode 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 other track event is dropped.
  • blacklist — array of event names to drop; every other track event 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.
yaml
connection_mode:
  web: device
event_filtering:
  blacklist:
    - Product Viewed

Per-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 device for react_native.
yaml
connection_mode:
  web: device
  ios: device
  cloud: cloud

Source types

Adobe Analytics accepts events from these source types in the mentioned connection modes:

Source typeConnection mode
androidcloud, device
android_kotlincloud
ioscloud, device
ios_swiftcloud
webcloud, device
unitycloud
react_nativecloud
fluttercloud
cordovacloud
cloudcloud
warehousecloud

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, so amp and shopify are 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:

yaml
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 }}"
bash
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.yaml

Note that:

  • rudder-cli import writes 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_url isn’t a secret, though it often names the same host as tracking_server_url, so rudder-cli import writes it in plain text.
  • In web device mode 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

Questions? Let's figure it out together.

Join the RudderStack Slack community to connect with other users, customers, and the RudderStack team — or reach out for direct support.