Skip to main content

Overview

Adobe Experience Platform provides a simple way to deploy and manage all the analytics, marketing and advertising tags necessary to power relevant customer experiences. The tags are offered to the Adobe Experience Cloud customers as an included, value-add feature. Zeotap provides the Zeotap Collect Tag Extension within the Adobe Experience Platform marketplace to capture events and user identities and enable cookie syncing on the Web.

Prerequisites

The following are the prerequisites that you need to set up before proceeding with this integration:
  • Tags – Tags allow you to build and maintain your own integrations, called extensions. These extensions are available to the Adobe Experience Cloud customers in an app-store experience so they can quickly install, configure and deploy their tags. For more information about tags, refer here.
  • Extensions – An extension is a package of code (JavaScript, HTML and CSS) that extends the tag’s functionality. In other words, extensions are apps that you can use to achieve your tasks. For more information about Extensions, refer here.
  • Rules – Rules are the conditions that combine multiple events, sequenced in the way that you want to use the ‘if/then’ logic. You can use Rules to configure the following attributes:
    • Events
    • Conditions
    • Actions
    For more information about Rules, refer here.
  • Data Elements – Data Elements are variables that are stored on the Adobe Experience Platform as a library. You can use them to populate the value fields while configuring the Action under Rules. For more information about Data Elements, refer here.

Configuring the Zeotap Collect Extension

Enter the following details to configure the Zeotap Collect Extension:
  • Write Key - When you create an Adobe Experience Platform Tag Extension source in your Sources account, a Write Key is auto-generated by the system. This is a mandatory field for recording events.
  • Consent Method – The Zeotap Collect Extension has three different options to communicate consent. While initialising, you can set options for the extension to consume consent according to your requirements. Note that, in any of these methods, you can send Brand Consent fields.
    • Default Opt-in – This option signifies whether the extension can record events or not. When selected, the extension has the consent to capture events, collect user identities or cookie syncing and is used as a fallback when user consent is not specified. By default, Explicit is enabled as the Consent Method unless you select otherwise. —> Note that for this consent type, the setConsent string (including the Track, Cookie Sync, and Identify fields) will not be considered. —> When the TCF API is available, you can also send the TC string. —> To send Brand Consent fields, use the options under Rules > Actions > Extension: Zeotap Collect, and select Action Type: Set Custom Consent, as shown below.
    • Custom – This method is relevant when you do not want to give consent explicitly or even use the TCF API. Instead, you have your own custom consent flow. If you opt for this option, ensure that you are also implementing the setConsent (Track, Cookie Sync and Identify) action provided by the extension, in order to resolve consent for Zeotap extension. —> When the TCF API is available, you can also send the TC string. —> To send Brand Consent fields, use the options under Rules > Actions > Extension: Zeotap Collect, and select Action Type: Set Custom Consent.
    • GDPR – This method automatically checks for a TCF 2.0 Consent Management Platform (CMP) implemented on your website. If you already have a TCF 2.0 CMP implemented on your website, then the extension resolves consent by querying the TCF API. The JavaScript that the extension adds to the page also queries the TCF consent string to fetch the Publisher’s consent before recording the events. —> When the TCF API is available, you can also send the TC string. —> To send Brand Consent fields, use the options under Rules > Actions > Extension: Zeotap Collect, and select Action Type: Set Custom Consent. The following are the parameters that need to be configured while using the GDPR consent type:
      • Purposes for track – This option is used to pass a list of purpose IDs, based on which you can manage the consent for tracking. By default, the three options shown in the image below are selected. However, You can modify them using the drop-down menu.
      • Check for Zeotap vendor consent – You can select the Check for Zeotap vendor consent checkbox to allow the extension to verify the Zeotap vendor consent in the tcdata (consent data JSON generated by the CMP on the website) before capturing events. By default, the Check for Zeotap vendor consent checkbox is unchecked.
    • PII Hashing Configurations – This option allows you to configure how Personally Identifiable Information (PIIs) like email, cellphone and more must be collected by Zeotap. The following are the PIIs hashing configurations available:
      • PIIs (email, cellphone) are hashed by the customer – The client sends hashed user PIIs in the formats of SHA256, MD5 and SHA1 as mentioned in the table below.
      • PIIs (email, cellphone) are raw and must be hashed by Zeotap – The client sends raw user PIIs, but they want Zeotap to hash them in the formats of SHA256, MD5 and SHA1 as mentioned in the table below.
      • PIIs (email, cellphone) are raw and must be consumed as is – The client sends raw user PIIs and they do not want Zeotap to hash them
    • Country Code– This option allows you to enter the ISO Alpha 3 country code for the country that you want to associate your users with.

User Identities

User information is available in the form of identifiers that can be categorised as below.
  • Personal Identifiable Information (PII)
    • Raw User PII
    • Hashed User PII
  • Custom Identities

Personal Identifiable Information (PII)

Personal Identifiable Information (PII) is any data that confirms an individual’s identity. Zeotap extension accepts email address, cellphone number, login Id and so on as PIIs. PII can be categorised as Raw User PII and Hashed User PII.

Raw User PII

The client captures user identities in the raw form and may or may not want Zeotap to hash them. The Raw User PIIs supported by Zeotap are listed below.
Raw User PIIDescription
fpuidThis is the first-party ID for a given user, such as a crmID or DBID.
emailThis is the user’s raw email address.
cellnoThis is the user’s raw cell phone number.
loginidThis is the user’s login ID.
cellno_ccThis is the user’s raw cell phone number with the country code.

Hashed User PII

The client only sends in user PII that are hashed using algorithms like SHA-256, SHA1 and MD5. The Hashed User PIIs supported by Zeotap are listed below.
HASHED USER PIIDESCRIPTION
fpuidThis is the first-party ID for a given user, such as a crmID or DBID.
email_sha256_lowercaseThis is the user’s email address hashed to sha256 after converting it to lowercase.
email_sha256_uppercaseThis is the user’s email address hashed to sha256 after converting it to uppercase.
email_md5_lowercaseThis is the user’s email address hashed to md5 after converting it to lowercase.
email_md5_uppercaseThis is the user’s email address hashed to md5 after converting to uppercase.
email_sha1_lowercaseThis is the user’s email address hashed to sha1 after converting to lowercase.
email_sha1_uppercaseThis is the user’s email address hashed to sha1 after converting to uppercase.
cellno_without_country_code_sha256This is the user’s cell phone number without the country code and hashed to sha256.
cellno_without_country_code_md5This is the user’s cell phone number without the country code and hashed to md5.
cellno_without_country_code_sha1This is the user’s cell phone number without the country code and hashed to sha1.
cellno_with_country_code_sha256This is the user’s cell phone number with the country code and hashed to sha256.
cellno_with_country_code_md5This is the user’s cell phone number with the country code and hashed to md5.
cellno_with_country_code_sha1This is the user’s cell phone number with the country code and hashed to sha1.
cellno_e164_sha256This is the user’s cell phone number in e164 format hashed to sha256.
cellno_e164_sha1This is the user’s cell phone number in e164 format hashed to sha1.
cellno_e164_md5This is the user’s cell phone number in e164 format hashed to md5.
loginid_sha256_lowercaseThis is the user’s login ID that is logged. The login ID is hashed to sha256 after converting to lowercase.
loginid_sha256_uppercaseThis is the user’s login ID that is logged. The login ID is hashed to sha256 after converting to uppercase.
loginid_md5_lowercaseThis is the user’s login ID that is logged. The login ID is hashed to md5 after converting to lowercase.
loginid_md5_uppercaseThis is the user’s login ID that is logged. The login ID is hashed to md5 after converting to uppercase.
loginid_sha1_lowercaseThis is the user’s login ID that is logged. The login ID is hashed to sha1 after converting to lowercase.
loginid_sha1_uppercaseThis is the user’s login ID that is logged. The login ID is hashed to sha1 after converting to uppercase.

Custom Identities

Custom identities are the identities that the client chooses to input and can be any of their first-party identifiers. Hashing configurations are not applicable for custom identities. Some examples of custom identities are crmID, ECID and visitorID.
Note:To know about the hashing guidelines for email and cell phone numbers, refer here.

Zeotap Collect Extension Actions

Zeotap Collect Extension supports the following Action Types under Rules:
  • Load Zeotap SDK – You can select Load Zeotap SDK as the action type for all the rules that involve the Zeotap Collect Extension. This ensures that the Collect JavaScript is stamped on the client’s website.
  • Set Custom Consent – If you choose Custom as the consent mechanism while configuring the Zeotap Collect Extension, then ensure to set up the Set Custom Consent action under Rules.
  • Sync User Identities – Set the key-value pairs for the identities to be captured (includes User PIIs and Custom Identities like ECID, crmID, visitorID).
  • Track Event– The available Event Types and the resulting actions are explained in the table below.
EVENT TYPEDESCRIPTION
Page View• Set the key-value pair based on your data tracking requirement. For example, page name, page category and so on.

Note:

When this rule is triggered, the key-value pairs in the action configuration screen are sent to the Zeotap CDP, along with the event attributes that are passed as a second argument to _satellite.track(Direct Call).


• You can add any number of keys and values.
User Attributes• Set the key-value pair based on the user attributes that you want to capture as a part of the event. For example, age, gender and so on.

• You can add any number of keys and values.


Note:

The records for the country and city columns are blacklisted for ingestion because SPL uses the user’s IP address to find out the country and city automatically. For the complete list of blacklisted fields, click here.
Custom Event• Specify the Name for the event to be triggered.

• Set the key-value pair based on your data tracking requirement.

• You can add any number of keys and values.
Zeotap allows you to collect the user’s web data from different platforms and target the users by cookie syncing with selected partners. You can use the Zeotap’s list of integrated partners for cookie syncing.
Note:For Zeotap Collect Extension, Cookie Sync is enabled by default. To disable it, reach out to the Zeotap POC.

Zeotap Collect Extension Checklist

This checklist covers the important activities that you can perform to check the implementation of the Zeotap Collect Extension within the Adobe Experience Platform.
  • Once the customer initiates the Zeotap Init action, at first, they must confirm that the zeotap.min.js SDK fetch call returns a status of 200 as shown below.
  • To verify that the integration is functioning properly, enter Zeotap on the Console tab. The expected response is the object displayed below. e {_q: Array(0), _qcmp:Array(0)}
Note:Note that if the response is undefined, it indicates that the Zeotap’s initialisation is unsuccessful. Additionally, the variables _q and _qcmp must be empty arrays. If they are not, the events are added to the queue while the consent is still unresolved.
  • Check the Fetch/XHR calls (GET and POST calls) in the Network tab.
    • GET call: Facilitates cookie sync with our channel partners.
    • POST call: After you implement the Zeotap Track Event action, you can see these POST calls under the Network section. The expected POST call is 204 > ok.
      Note:Verify that the write_key is correct if the response is not 204/200.

Events flowing into Zeotap CDP

Once you have created an Adobe Experience Platform Tag Extension source and successfully completed the implementation stages, it is essential that you understand how the events flow into Zeotap CDP. This forms the base for all the downstream systems that the events flow into and get consumed. Request
<https://spl.zeotap.com/fp?cmp=1&cookieSync=true&gdpr=1&gdpr_consent=CPpIRAAPpIRAAA
KAuAENC9CsAP_AAH_AAAYgJTtd_H__bW9r-f5_aft0eY1P9_r77uQzDhfNk-4F3L_W_LwX52E7NF
36tq4KmR4ku1LBIUNlHNHUDVmwaokVryHsak2cpTNKJ6BEkHMZO2dYGF5vmxtj-QKY5_5_d3b
x2D-t_9v-39z3z81Xn3d5_-_02PCdU5_9Dfn9fR_b89KP9_78v8v8_9_rk3_e3_3_79_7_H9-eCUYBJh
q3EAXZljgzaBhFAiBGFYSEUCgAgoBhaICABwcFOysAn1hEgAQCgCMCIEOAKMCAQAACQBIRAB
IEWCAAAEQCAAEACARCABgYBBYAWAgEAAIBoGKIUAAgSEGRERFKYEBUCQQEtlQglBdIaYQB
VlgBQCI2CgARBICKwABAWDgGCJASsWCBJiDaIARgBQCiVCtRSemgIAA.fhgACAgAAAAA&
identify=true&optin=yes&payload=eyJ1c2VyX3ppIjoiM2EwZWFjNWYtMjMyZS00NWI3LWI2NzgtO
WE2NTQ5YjI5OGViIiwidXNlcl96cyI6IjhkN2M0ZDdiLWJhNzktNGE3My1iNjgyLTU3MGMxZjZkZmRhYyJ9&t
rack=true&w_k=ZGE0ODc1YmItYTA3Zi00MmFlLWFiZDMtMTkzMzQyMDgzMzRi>
Consent Flags
Query ParameterDescription
optinThis indicates whether the SDK has consent for any of the actions or not.
trackThis indicates whether the SDK has consent to track event or user data.
identifyThis indicates whether the SDK has consent to identify the user, using Zeotap ID+ 1P cookie.
cookieSyncThis indicates whether the SDK has consent to cookieSync with the organisation’s channel partners.
cmpThis indicates whether consent is resolved through the TCFAPI present on the page; 1 if True, else 0 for False.
gdpr_consentThis indicates the TCF V2 consent string, if the Consent Resolution mechanism selected is TCF.
General
Query ParameterDescription
w_kThis indicates the encoded write_key of the Zeotap Collect Source.
payloadThis indicates the encoded identities passed to the Zeotap JavaScript on the website. This can be User PIIs or Custom Identities, along with the default 1P cookies set by the JavaScript on the website after initialisation.
Response The response consists of a list of image pixel tags with the respective URLs to cookie sync. <img style='display:none' src='{{REDIRECTION_URL}}'>

Call to capture Event Data

Request URL - <https://spl.zeotap.com/fp?cookieSync=true&identify=true&optin=yes&track=true> Request Method - POST Request Payload The request payload consists of the following nodes:
  • Event node to capture the event properties
  • User node to capture user identities whether hashed or raw identities, based on the hashing configuration
  • Page node to capture page related information like url, referrer, pageCategory and more
Code
{
   "event":{
      "name":"addToCart",
      "pid":"p12345",
      "colour":"white",
      "size":"large",
      "timestamp":"1356739200"
   },
   "page":{
      "name":"Product",
      "title":"View eletronic toothbrush at low prices",
      "referrer":"<https://www.xyz.com/discountbin",>
      "url":"<https://www.xyz.com/products/sanitary/toothbrush/?pid=p12345",>
      "path":"/products/sanitary/toothbrush/?pid=p12345"
   },
   "user":{
      "loginid":"user.1900",
      "email":"user1900@gmail.com",
      "cellno":"987654321"
   },
   "meta":{
      "colours":[
         "blue",
         "pink",
         "white"
      ],
      "sizes":[
         "small",
         "regular",
         "large"
      ]
   }
}

ID5 Integration

The Zeotap SDK offers an optional integration with ID5. You need your unique Partner ID provided by ID5 to integrate it using Zeotap.

Step 1: Add the ID5 JavaScript Library

  1. Load the ID5 JavaScript library on the client’s website, in your script section.
  2. Include the library after the CMP JavaScript and before the Zeotap Collect SDK.
JavaScript
<script src="https://cdn.id5-sync.com/api/1.0/id5-api.js"></script>

Step 2: Configure ID5 in Zeotap Tag

  1. Check the enable ID5 option on the configure screen of extension.
  2. Input the associated ID5 Partner ID.
  3. If you wish to share the sha256 hashed email and cellphone number, check the send custom identifier to ID5 option.

Step 3: Transmission of ID5 id to Zeotap

  1. Zeotap interacts with ID5 and attempts to retrieve the ID5 id.
  2. This ID (if obtained) is then transmitted in all events under user node in the payload.
  3. ID5 User id is then logged into the zeotap platform.

Troubleshooting

Known IssueErrorReasonResolution
In some cases, the Zeotap action scripts can run into a race condition. In such cases the rules implementing Track Event or Sync User Identities can throw an error.• VM3703:2 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'setPageProperties')

• Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'setUserIdentities';)
This occurs when the Zeotap Init and Track Event/Sync User Identities actions are occurring at the same time. As a result, the Zeotap SDK methods are being called before the Zeotap JS is initialised on the page.To fix this, a Custom Code Event is used to fire the Track Event/Sync User Identities rule, which checks if the Zeotap SDK is initialised or not. Here is an example of how to create a Custom Code Event:

// this code checks if zeotap is initialised after every 1 second, once initialised it triggers the event and clears the interval.
const interval = setInterval(() => {
      if (window.zeotap) {
            // Zeotap script initialised
            trigger()
clearInterval(interval)
      }
}, 1000)

Use Cases

Learn more about implementing the Adobe Experience Platform Tag Extension through the use cases explained below.

Use Case 1: Add to Cart Event

This use case explains how to configure the Add to Cart event on the Adobe Experience Platform. After you add and configure the Tag by providing the Write key, Consent method and PII hashing configuration, you must set the Rules for the Add to Cart event by specifying the actions to occur if the condition is met.
1
Log into the Adobe Experience Platform.
2
On the left menu, go to the AUTHORING section and then click Rules.
3
In the interface that appears, click Add Rule.
4
Enter a name for the Rule, like addToCart. Configure the Events and Actions as mentioned in the section below. Note that based on the events configured, the actions occur.
5
Under EVENTS, click Add.
6
In the window that appears, make the following selections:a. Select Core as the Extension. Note that some default event types are available for each Extension.b. Select Direct Call as the Event Type. In the Identifier field that appears enter a string that is passed to _satellite.track( ) in the Direct Call, without any quotes(’). Here, addToCart is the string passed.c. The Name field is auto-populated based on the selected Extension and Event Type. Click Keep Changes to save the event configuration.
7
To trigger the event, invoke the following from the website: _satellite.track('addToCart', { ... event params })
8
After adding the Event, add Conditions based on your requirement.
9
After adding the Conditions, click Add under ACTIONS.
10
Select Core as the Extension and Custom Code as the Action Type.
11
In the RHS interface, select JavaScript under Language.
12
Click </> Open Editor and paste the JavaScript as mentioned below and save the changes.
Code
console.log('event logged', event.detail);
_satellite.setVar('productID',event.detail.productID);
_satellite.setVar('color',event.detail.color);
13
Another Action to collect the user identities is configured using the following attributes:
  • Extension: Zeotap Collect
  • Action Type: Track Event
  • Event Type: Custom Event (the key-value pair is set based on the data tracking requirement)
14
Save the configurations and build the changes.
Note:Once the rule is triggered, the key-value pairs in the action configuration screen are sent to the the Zeotap CDP along with the event attributes that are passed as a second argument to _satellite.track(Direct Call).

Use Case 2: Sync User Identities

The Sync User Identities event allows the client to share user PII or custom identities from their website to the Zeotap CDP to create unique user profiles. This use case explains how to configure the Sync User Identities event in the Adobe Experience Platform. After you have added and configured the Tag by providing the Write key, Consent method and PII hashing configuration, you must set the Rules for Sync User Identities by specifying that actions to occur if the condition is met.
1
Log into the Adobe Experience Platform.
2
On the left menu, go to the AUTHORING section and then click Rules.
3
In the interface that appears, click Add Rule.
4
Enter a name for the Rule, like syncUserIdentities. Configure the Events and Actions as mentioned in the section below. Note that based on the events configured, the actions occur.
5
Under EVENTS, click Add
6
In the window that appears, make the following selections:a. Select Core as the Extension. Note that some default event types are available for each Extension.b. Select Direct Call as the Event Type. In the Identifier field that appears enter a string that is passed to _satellite.track( ) in the Direct Call, without any quotes(’). Here, syncUserIdentities is the string passed.c. The Name field is auto-populated based on the selected Extension and Event Type. Click Keep Changes to save the event configuration.
7
To trigger the event, invoke the following from the website: _satellite.track('syncUserIdentities', { ... event params })
8
After adding the Event, add Conditions based on your requirement.
9
After adding the Conditions, click Add under ACTIONS.
10
Select Core as the Extension and Custom Code as the Action Type.
11
In the RHS interface, select JavaScript under Language.
12
Click </> Open Editor and paste the JavaScript as mentioned below and save the changes.
Code
console.log('sync user', event.detail);
_satellite.setVar('userName', event.detail.userName);
_satellite.setVar('userEmail', event.detail.userEmail);
_satellite.setVar('userCell', event.detail.userCell);
13
Another Action to collect the user PII or custom identities is configured with the following attributes:
  • Extension: Zeotap Collect
  • Action Type: Sync User Identities
  • In the RHS interface, set the key-value pair based on the data tracking requirement.
14
Save the configurations and build the changes.
Last modified on February 26, 2026