> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zeotap.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Implement an Adobe Experience Platform Tag Extension Source

## 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](https://experienceleague.adobe.com/docs/experience-platform/tags/home.html?lang=en).
* **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](https://experienceleague.adobe.com/docs/experience-platform/tags/ui/extensions/overview.html?lang=en).
* **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](https://experienceleague.adobe.com/docs/experience-platform/tags/ui/rules.html?lang=en).
* **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](https://experienceleague.adobe.com/docs/experience-platform/tags/ui/data-elements.html?lang=en).

<Frame>
  <img src="https://mintcdn.com/zeotap/jefybC-lvH-uRq2b/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24.png?fit=max&auto=format&n=jefybC-lvH-uRq2b&q=85&s=4c2f8a0afb3766c3ae15d08bba3081c2" width="1778" height="934" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24.png" />
</Frame>

## Configuring the Zeotap Collect Extension

<Frame>
  <img src="https://mintcdn.com/zeotap/jefybC-lvH-uRq2b/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source/implement-an-adobe-experience-platform-tag-extension-source-2025-02-20-3.png?fit=max&auto=format&n=jefybC-lvH-uRq2b&q=85&s=c158263b34fe81c2458e7f5c2a121723" width="1988" height="1600" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source/implement-an-adobe-experience-platform-tag-extension-source-2025-02-20-3.png" />
</Frame>

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.

    <Frame>
      <img src="https://mintcdn.com/zeotap/jefybC-lvH-uRq2b/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source/implement-an-adobe-experience-platform-tag-extension-source-2025-02-28.png?fit=max&auto=format&n=jefybC-lvH-uRq2b&q=85&s=a5c6b586f2839b5d7fef508b0c3b8f4f" width="2902" height="678" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source/implement-an-adobe-experience-platform-tag-extension-source-2025-02-28.png" />
    </Frame>

  * **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**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/jefybC-lvH-uRq2b/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source/implement-an-adobe-experience-platform-tag-extension-source-2025-02-20.png?fit=max&auto=format&n=jefybC-lvH-uRq2b&q=85&s=6407843a8e769ab3fb204cecae97cb79" width="2044" height="1302" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source/implement-an-adobe-experience-platform-tag-extension-source-2025-02-20.png" />
    </Frame>

  * **GDPR** – This method automatically checks for a [TCF 2.0 Consent Management Platform (CMP)](https://iabeurope.eu/tcf-2-0/) 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](https://github.com/InteractiveAdvertisingBureau/GDPR-Transparency-and-Consent-Framework/blob/master/TCFv2/IAB%20Tech%20Lab%20-%20CMP%20API%20v2.md). 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.
      <Frame>
        <img src="https://mintcdn.com/zeotap/jefybC-lvH-uRq2b/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source/implement-an-adobe-experience-platform-tag-extension-source-2025-02-20-2.png?fit=max&auto=format&n=jefybC-lvH-uRq2b&q=85&s=2ef90b5d5d0325f4712ae25167058fe2" width="888" height="544" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source/implement-an-adobe-experience-platform-tag-extension-source-2025-02-20-2.png" />
      </Frame>
    * **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](/articles/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source#h3_1165312883)) 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](/articles/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source#h4_1951363256) 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](/articles/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source#h4__2008758683), 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](/articles/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source#h4__2008758683) 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 PII** | **Description**                                                           |
| ---------------- | ------------------------------------------------------------------------- |
| fpuid            | This is the first-party ID for a given user, such as a `crmID` or `DBID`. |
| email            | This is the user's raw email address.                                     |
| cellno           | This is the user's raw cell phone number.                                 |
| loginid          | This is the user’s login ID.                                              |
| cellno\_cc       | This 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 PII**                  | **DESCRIPTION**                                                                                               |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------- |
| `fpuid`                              | This is the first-party ID for a given user, such as a `crmID` or `DBID`.                                     |
| `email_sha256_lowercase`             | This is the user's email address hashed to `sha256` after converting it to lowercase.                         |
| `email_sha256_uppercase`             | This is the user's email address hashed to `sha256` after converting it to uppercase.                         |
| `email_md5_lowercase`                | This is the user's email address hashed to `md5` after converting it to lowercase.                            |
| `email_md5_uppercase`                | This is the user's email address hashed to `md5` after converting to uppercase.                               |
| `email_sha1_lowercase`               | This is the user's email address hashed to `sha1` after converting to lowercase.                              |
| `email_sha1_uppercase`               | This is the user's email address hashed to `sha1` after converting to uppercase.                              |
| `cellno_without_country_code_sha256` | This is the user's cell phone number without the country code and hashed to `sha256`.                         |
| `cellno_without_country_code_md5`    | This is the user's cell phone number without the country code and hashed to `md5`.                            |
| `cellno_without_country_code_sha1`   | This is the user's cell phone number without the country code and hashed to `sha1`.                           |
| `cellno_with_country_code_sha256`    | This is the user's cell phone number with the country code and hashed to `sha256`.                            |
| `cellno_with_country_code_md5`       | This is the user's cell phone number with the country code and hashed to `md5`.                               |
| `cellno_with_country_code_sha1`      | This is the user's cell phone number with the country code and hashed to `sha1`.                              |
| `cellno_e164_sha256`                 | This is the user's cell phone number in e164 format hashed to `sha256`.                                       |
| `cellno_e164_sha1`                   | This is the user's cell phone number in e164 format hashed to `sha1`.                                         |
| `cellno_e164_md5`                    | This is the user's cell phone number in e164 format hashed to `md5`.                                          |
| `loginid_sha256_lowercase`           | This is the user’s login ID that is logged. The login ID is hashed to `sha256` after converting to lowercase. |
| `loginid_sha256_uppercase`           | This is the user’s login ID that is logged. The login ID is hashed to `sha256` after converting to uppercase. |
| `loginid_md5_lowercase`              | This is the user’s login ID that is logged. The login ID is hashed to `md5` after converting to lowercase.    |
| `loginid_md5_uppercase`              | This is the user’s login ID that is logged. The login ID is hashed to `md5` after converting to uppercase.    |
| `loginid_sha1_lowercase`             | This is the user’s login ID that is logged. The login ID is hashed to `sha1` after converting to lowercase.   |
| `loginid_sha1_uppercase`             | This 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>
  **Note:**

  To know about the hashing guidelines for email and cell phone numbers, refer [here](https://docs.zeotap.com/smart/project-unify/hashing-guidelines).
</Note>

## Zeotap Collect Extension Actions

Zeotap Collect Extension supports the following **Action Types** under **Rules**:

<Frame>
  <img src="https://mintcdn.com/zeotap/jefybC-lvH-uRq2b/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-03-28-1.png?fit=max&auto=format&n=jefybC-lvH-uRq2b&q=85&s=2465690e90cf7abf0a31439f779f7e01" width="3584" height="1082" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-03-28-1.png" />
</Frame>

* **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 TYPE**  | **DESCRIPTION**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Page View       | • Set the key-value pair based on your data tracking requirement. For example, page name, page category and so on.<br /><br /><Note>**Note**: <br /><br />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)`.<br /></Note><br /><br />• You can add any number of keys and values. <br /><Frame><img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-1.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=959a55c8c01f851d8939731d1e5643ef" width="1748" height="670" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-1.png" /></Frame>                                                                                                                |
| 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.<br /><br />• You can add any number of keys and values.<br /><Frame><img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-data-collection-source-2023-01-12-3.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=5118309328325e1deeb97900d7b6df58" width="1720" height="674" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-data-collection-source-2023-01-12-3.png" /></Frame><br /><br /><Note>**Note**: <br /><br />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](/articles/integrate-customer/blacklisted-fields-for-data-ingestion).<br /></Note> |
| Custom Event    | • Specify the **Name** for the event to be triggered.<br /><br />• Set the key-value pair based on your data tracking requirement.<br /><br />• You can add any number of keys and values.<br /><Frame><img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-data-collection-source-2023-01-12-4.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=e1b49f85606fb8b24639b20807ac7ab5" width="1710" height="838" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-data-collection-source-2023-01-12-4.png" /></Frame>                                                                                                                                                                                                                                                                                                                                                              |

## Cookie Sync

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>
  **Note:**

  For Zeotap Collect Extension, Cookie Sync is enabled by default. To disable it, reach out to the **Zeotap POC**.
</Note>

## 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.

<Frame>
  <img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-2.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=9c533a0b15fafc2a73f36e39d1adce9d" width="2052" height="958" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-2.png" />
</Frame>

* 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:**

  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.
</Note>

* Check the Fetch/XHR calls (GET and POST calls) in the Network tab.
  * **GET call:** Facilitates cookie sync with our channel partners.
    <Frame>
      <img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-3.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=b0c24b6141cfe779009b9960bc19b01f" width="1668" height="780" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-3.png" />
    </Frame>
  * **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.

    <Frame>
      <img src="https://mintcdn.com/zeotap/jefybC-lvH-uRq2b/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-4.png?fit=max&auto=format&n=jefybC-lvH-uRq2b&q=85&s=0cbb7ce8927e0ff354ae8e8184255b8d" width="2414" height="1120" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-4.png" />
    </Frame>

    <Note>
      **Note:**

      Verify that the `write_key` is correct if the response is not 204/200.
    </Note>

## 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.

### Call to Initiate Cookie Syncing

**Request**

```bash theme={null}
<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 Parameter** | **Description**                                                                                                 |
| :------------------ | --------------------------------------------------------------------------------------------------------------- |
| `optin`             | This indicates whether the SDK has consent for any of the actions or not.                                       |
| `track`             | This indicates whether the SDK has consent to track event or user data.                                         |
| `identify`          | This indicates whether the SDK has consent to identify the user, using Zeotap ID+ 1P cookie.                    |
| `cookieSync`        | This indicates whether the SDK has consent to cookieSync with the organisation's channel partners.              |
| `cmp`               | This indicates whether consent is resolved through the TCFAPI present on the page; 1 if True, else 0 for False. |
| `gdpr_consent`      | This indicates the TCF V2 consent string, if the Consent Resolution mechanism selected is TCF.                  |

**General**

| **Query Parameter** | **Description**                                                                                                                                                                                                                |
| :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `w_k`               | This indicates the encoded write\_key of the Zeotap Collect Source.                                                                                                                                                            |
| `payload`           | This 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

```json Code theme={null}
{
   "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 JavaScript theme={null}
<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.

<Frame>
  <img src="https://mintcdn.com/zeotap/jefybC-lvH-uRq2b/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source/Adobe_ID5.png?fit=max&auto=format&n=jefybC-lvH-uRq2b&q=85&s=50b07d9d28337c8f9c4c132525b6431a" width="1849" height="1652" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source/Adobe_ID5.png" />
</Frame>

### 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 Issue**                                                                                                                                                              | **Error**                                                                                                                                                                                                                          | **Reason**                                                                                                                                                                                                          | **Resolution**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 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')`<br /><br />• 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:<br /><br />`// this code checks if zeotap is initialised after every 1 second, once initialised it triggers the event and clears the interval.`<br />`const interval = setInterval(() => {`<br />      `if (window.zeotap) {`<br />            `// Zeotap script initialised`<br />            `trigger()`<br />`clearInterval(interval)`<br />      `}`<br />`}, 1000)`<br /> |

## 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.

<Steps>
  <Step>
    Log into the Adobe Experience Platform.
  </Step>

  <Step>
    On the left menu, go to the **AUTHORING** section and then click **Rules**.
  </Step>

  <Step>
    In the interface that appears, click **Add Rule**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/jefybC-lvH-uRq2b/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-5.png?fit=max&auto=format&n=jefybC-lvH-uRq2b&q=85&s=d7419a2b08d7695c6817d9b8ca846660" width="3584" height="1014" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-5.png" />
    </Frame>
  </Step>

  <Step>
    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.

    <Frame>
      <img src="https://mintcdn.com/zeotap/jefybC-lvH-uRq2b/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-6.png?fit=max&auto=format&n=jefybC-lvH-uRq2b&q=85&s=876adb677c23cb5db214f5065fb2f0c2" width="3584" height="1358" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-6.png" />
    </Frame>
  </Step>

  <Step>
    Under **EVENTS**, click **Add**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/jefybC-lvH-uRq2b/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-7.png?fit=max&auto=format&n=jefybC-lvH-uRq2b&q=85&s=e1a2bad8a39902babf32aceafd526f39" width="710" height="306" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-7.png" />
    </Frame>
  </Step>

  <Step>
    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.

    <Frame>
      <img src="https://mintcdn.com/zeotap/jefybC-lvH-uRq2b/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-8.png?fit=max&auto=format&n=jefybC-lvH-uRq2b&q=85&s=b1660c77be8655392bf69065708eba7b" width="3584" height="1012" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-8.png" />
    </Frame>
  </Step>

  <Step>
    To trigger the event, invoke the following from the website:
    `_satellite.track('addToCart', { ... event params })`
  </Step>

  <Step>
    After adding the Event, add Conditions based on your requirement.
  </Step>

  <Step>
    After adding the Conditions, click **Add** under **ACTIONS**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-21.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=a11f394587216b98380058ad6b7c61f7" width="852" height="272" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-21.png" />
    </Frame>
  </Step>

  <Step>
    Select **Core** as the **Extension** and **Custom Code** as the **Action Type**.
  </Step>

  <Step>
    In the RHS interface, select **JavaScript** under **Language**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-10.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=7eff16b05c790fbea92e358958c92abf" width="3584" height="1026" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-10.png" />
    </Frame>
  </Step>

  <Step>
    Click **\</> Open Editor** and paste the JavaScript as mentioned below and save the changes.

    ```bash Code theme={null}
    console.log('event logged', event.detail);
    _satellite.setVar('productID',event.detail.productID);
    _satellite.setVar('color',event.detail.color);
    ```
  </Step>

  <Step>
    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)

    <Frame>
      <img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-11.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=42579d656ca19eabf7b4301c9a099eb9" width="3584" height="1212" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-11.png" />
    </Frame>
  </Step>

  <Step>
    Save the configurations and build the changes.

    <Frame>
      <img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-12.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=d4c17b6cf05cabb63396528c6e7acd9d" width="3584" height="1464" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-12.png" />
    </Frame>

    <Note>
      **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)`.
    </Note>
  </Step>
</Steps>

### 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.

<Steps>
  <Step>
    Log into the Adobe Experience Platform.
  </Step>

  <Step>
    On the left menu, go to the **AUTHORING** section and then click **Rules**.
  </Step>

  <Step>
    In the interface that appears, click **Add Rule**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-13.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=eeb20e7c2ca49083f9aeff57f05bd05d" width="3584" height="1014" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-13.png" />
    </Frame>
  </Step>

  <Step>
    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.

    <Frame>
      <img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-14.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=96830dbf2f36fd8e8d90d1b4b3048f72" width="3584" height="1352" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-14.png" />
    </Frame>
  </Step>

  <Step>
    Under **EVENTS**, click **Add**

    <Frame>
      <img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-15.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=ed1a9a1f461aa3c862efc3500e2f7377" width="710" height="306" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-15.png" />
    </Frame>
  </Step>

  <Step>
    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.

    <Frame>
      <img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-16.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=c85e3933d0923376cbe9848876cf0fa6" width="3584" height="1016" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-16.png" />
    </Frame>
  </Step>

  <Step>
    To trigger the event, invoke the following from the website:
    `_satellite.track('syncUserIdentities', { ... event params })`
  </Step>

  <Step>
    After adding the Event, add Conditions based on your requirement.
  </Step>

  <Step>
    After adding the Conditions, click **Add** under **ACTIONS**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-22.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=1117fdbf6559e136d5c2afe5f3b9dde5" width="852" height="272" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-22.png" />
    </Frame>
  </Step>

  <Step>
    Select **Core** as the **Extension** and **Custom Code** as the **Action Type**.
  </Step>

  <Step>
    In the RHS interface, select **JavaScript** under **Language**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-18.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=e5c928228afd1ccd8735a4eeccb36773" width="3584" height="1026" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-18.png" />
    </Frame>
  </Step>

  <Step>
    Click **\</> Open Editor** and paste the JavaScript as mentioned below and save the changes.

    ```bash Code theme={null}
    console.log('sync user', event.detail);
    _satellite.setVar('userName', event.detail.userName);
    _satellite.setVar('userEmail', event.detail.userEmail);
    _satellite.setVar('userCell', event.detail.userCell);
    ```
  </Step>

  <Step>
    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.

    <Frame>
      <img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-19.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=24e239149aea52e0c645744bf25fbd06" width="3584" height="1222" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-19.png" />
    </Frame>
  </Step>

  <Step>
    Save the configurations and build the changes.

    <Frame>
      <img src="https://mintcdn.com/zeotap/PPCc1iCw6zeHLKUm/articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-20.png?fit=max&auto=format&n=PPCc1iCw6zeHLKUm&q=85&s=b19da18d0f557636b7e550d1c91c2dea" width="3584" height="1482" data-path="articles/integrate-customer/Storage/integrate-customer/implement-an-adobe-experience-platform-tag-extension-source-2023-01-24-20.png" />
    </Frame>
  </Step>
</Steps>
