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

# Dynamic Yield (RealTime)

## Overview

Dynamic Yield is a personalisation platform that builds actionable customer segments in real time, enabling marketers to increase revenue through personalisation, recommendations, automatic optimisation, and one-to-one messaging. This integration streams the **Journey ID** from Zeotap CDP to Dynamic Yield in real time as soon as a user qualifies for a Journey, so on-site experiences can be personalised based on the Journey the user is currently enrolled in.

## Supported Identifiers

This integration supports SHA256 Hashed email, MAIDs, and Journey ID. You can also send any custom identifier and attributes. However, ensure that you create them under **Data Feed** in Dynamic Yield as explained in the [Prerequisites](#prerequisites) section.

## Available Actions and Supported Features

The following table lists the available action types for the integration and the supported features for each action type:

| Action Name                                                  | [ID EXTENSION](https://docs.zeotap.com/articles/#!segment-customer/extend-your-audience/a/h2_1167151146) | [DELETE](https://docs.zeotap.com/articles/#!integrate-customer/delta-upload-and-delete-functions) | [DELTA UPLOAD](https://docs.zeotap.com/articles/#!integrate-customer/delta-upload-and-delete-functions) |
| :----------------------------------------------------------- | :------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------ |
| Send attributes and identifiers to Dynamic Yield in RealTime | ✅                                                                                                        | -                                                                                                 | -                                                                                                       |

## Prerequisites

Before pushing audiences to Dynamic Yield, ensure that you have set up the User Data Feed as mentioned below.

1. Create a User Feed and obtain the Feed ID.
2. Choose a Unique User Identifier or create one.
3. Decide which attributes (columns) to pass in the API and set up the schema that determines where and how the information is stored in Dynamic Yield.
4. Create an API Key.

**Once the Data Feed is set up, you can start sending audiences and Journey enrolments from Zeotap CDP to Dynamic Yield.**

<Note>
  For more information, refer to the [Dynamic Yield documentation](https://support.dynamicyield.com/hc/en-us/articles/4409595248017-Update-Your-User-Profile-Data-by-API).
</Note>

### Step 1 - Create a New User Feed and Obtain the Feed ID

In Dynamic Yield, a User Feed ID is a unique identifier for a set of user data feeds that drive personalised experiences across channels. A user feed can contain a variety of user data points such as browsing history, purchase history, and demographic information. To create a new User Feed and obtain the Feed ID, perform the following steps:

<Steps>
  <Step>
    Log in to your Dynamic Yield account.
  </Step>

  <Step>
    In the left navigation panel, click **Audience Hub**.
  </Step>

  <Step>
    Under **Audience Hub**, navigate to the **Extensions** tab.
  </Step>

  <Step>
    Under **Profile**, click **Add Source**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-add-source.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=39a966ae703a071ec62f42eb2fac3996" width="2048" height="792" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-add-source.png" />
    </Frame>
  </Step>

  <Step>
    On the new screen, under **Feed Source**, select **Sync via API** and copy the **Feed key** displayed below it — this is your **User Feed ID**. You will paste it into Zeotap CDP while creating the destination.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-feed-key.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=16dd07633ae5656459eee69e852f3b2e" width="2048" height="754" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-feed-key.png" />
    </Frame>
  </Step>
</Steps>

### Step 2 - Choose a Unique User Identifier or Create One

Under **Unique User Identifier**, you can choose **Email Address (CUID)** or **DYID** by default. To add a custom identifier, perform the following steps:

<Steps>
  <Step>
    On the top bar, click **Settings > General Settings**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-settings-menu.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=fcb76c15d2239ade0a25d3d43e1149db" width="510" height="486" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-settings-menu.png" />
    </Frame>
  </Step>

  <Step>
    Under **User Identifier Types**, click **Add Identifier Type** and choose **Phone Number** or **Other**. If you choose **Other**, you can name your custom identifier.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-add-identifier-type.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=e1be8e7919e4a4f5deb1a3ac5ea8998c" width="1892" height="866" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-add-identifier-type.png" />
    </Frame>
  </Step>

  <Step>
    The newly created identifier appears under **User Unique Identifier** on the User Feed creation screen.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-custom-identifier-listed.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=f2e576b3794e85333b684d0843598b7b" width="2032" height="1414" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-custom-identifier-listed.png" />
    </Frame>
  </Step>
</Steps>

### Step 3 - Decide the Attributes to Send and Set up the Schema

Under **Data Schema**, define the identifiers and attributes you want to send to Dynamic Yield. Use the **Schema Creator** for an easier no-code experience.

<Frame>
  <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-data-schema.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=aa8e7f21e59602f24fa88e2338afa27c" width="1768" height="422" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-data-schema.png" />
</Frame>

<Steps>
  <Step>
    Click **Schema Creator**. You can either create a schema from scratch or modify an existing schema.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-schema-creator-start.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=dfbba31eeb36c1ace3c8ba020be96adf" width="1082" height="464" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-schema-creator-start.png" />
    </Frame>
  </Step>

  <Step>
    If you choose **Start from Scratch**, provide the following details:

    a. Under **Column name in your user data source**, enter `journey_id`. Use this exact name in the **Destination** field on the mapping screen when creating the destination in Zeotap CDP.

    <Warning>
      The `journey_id` value is **case-sensitive**. It must match exactly between Dynamic Yield and the Zeotap CDP mapping screen.
    </Warning>

    b. Under **Condition name in your audiences**, enter the name as you would like it to appear in Audience conditions (for example, `Journey ID`).

    c. Set the **Condition type** to **String** for the Journey ID field.

    <Note>
      The Journey ID field must have its **Condition type** set to **String**.
    </Note>

    d. Once done, click **Copy to Clipboard** to copy the schema.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-schema-creator-form.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=2fb3362caf2d7691cbab2ba4b33ddae1" width="2048" height="599" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-schema-creator-form.png" />
    </Frame>
  </Step>

  <Step>
    Paste the copied schema into the space provided under **Data Schema**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-schema-pasted.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=d24fc95b43333462a3bfb611c1ca4de7" width="2048" height="695" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-schema-pasted.png" />
    </Frame>

    <Note>
      At this stage, you may encounter an error such as `Illegal Character in: {Your Data Feed}`. If this occurs, remove any special characters (for example, hyphens or underscores) from the data feed name. If you are editing an existing data feed and adding a field, include `"default": null` after `"uiType": "input"` in the data schema before saving.
    </Note>
  </Step>

  <Step>
    Click **Save & Activate**. The User Feed is now listed on the **Data Feeds** page.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-feed-saved.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=eb9632dd4c0f3f4bb265de85a7b39e3d" width="2048" height="1185" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-feed-saved.png" />
    </Frame>
  </Step>
</Steps>

### Step 4 - Create the API Access Token / API Key

You must create an API Key that you will paste into Zeotap CDP while creating the destination. To do so, perform the following steps:

<Steps>
  <Step>
    In the Dynamic Yield console, click **Settings > API Keys** and click **New Key**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-api-keys-nav.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=0a46d36ec0a25771356dc422bc4385c8" width="2048" height="414" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-api-keys-nav.png" />
    </Frame>
  </Step>

  <Step>
    In the window that appears:

    a. Enter a **Name** and (optionally) internal notes.

    b. Under **Source**, select **Server-side**.

    c. Under **ACL**, select the **User Data Profile** permission.

    d. Click **Save**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-create-api-key.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=597f0ec941179f3af3e81d84ca742833" width="2048" height="870" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-create-api-key.png" />
    </Frame>
  </Step>

  <Step>
    The created API Key gets listed on the API Keys page. Copy it to use while creating the destination in Zeotap CDP.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-api-keys-list.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=39f876f6b76cff79e5d00aa819f7a78b" width="2048" height="741" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-api-keys-list.png" />
    </Frame>
  </Step>
</Steps>

## Create a Destination for Dynamic Yield (RealTime)

Once the prerequisites are in place, perform the following steps to create the destination in Zeotap CDP:

<Steps>
  <Step>
    Log in to the **Zeotap CDP** app and go to the **Destinations** application.
  </Step>

  <Step>
    Click **+ Create Destination**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-zeotap-destinations.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=d22e4f287ad49a0698c3435a1a7cd960" width="2048" height="568" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-zeotap-destinations.png" />
    </Frame>
  </Step>

  <Step>
    Under **All Destinations**, search for **Dynamic Yield**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-zeotap-search.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=de93b8771c00f8666d6f5d0a6a15883c" width="2048" height="635" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-zeotap-search.png" />
    </Frame>
  </Step>

  <Step>
    Click **Dynamic Yield**. On the **Enter Destination Details** screen, the left panel describes the integration; enter your credentials on the right:

    a. Enter a **Name** for the destination.

    b. Enter the **User Feed ID** and **API Access Token** obtained from Dynamic Yield.

    c. Under **Cluster Region**, choose the region of your Dynamic Yield data centre.

    d. Under **User Unique Identifier in Dynamic Yield**, choose the unique identifier that matches what you selected when creating the User Data Feed in Dynamic Yield. You can choose **Hashed Email Address** or **Custom Identifier**.

    * If you choose **Hashed Email Address**, the Unique Identifier for Email field is auto-populated with the value `ihe`.
    * If you choose **Custom Identifier**, enter the exact identifier name as defined in Dynamic Yield. This name will also be used in the mapping screen, so ensure it matches your Dynamic Yield configuration precisely.

    e. Review all values and click **Next** to proceed to mapping.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-destination-form.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=7b30d4f4556b0265caef7ef2338ffc51" width="2048" height="1008" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-destination-form.png" />
    </Frame>
  </Step>

  <Step>
    On the **Action and Mapping** screen, select **Send attributes and identifiers to Dynamic Yield in RealTime** as the action. The Destination fields are pre-populated — you only need to select the corresponding Catalogue fields on the left:

    * **CUID (Customer Unique Identifier)** — Against the **CUID** destination field, select the identifier you configured during destination creation from the **Catalogue** dropdown (your hashed email address or your custom identifier).
    * **Journey ID** — Against the **Journey ID** destination field, open the **Catalogue** dropdown and switch to the **Platform Attributes** tab. Select **Journey ID** from the list. When a user qualifies for a Journey in Zeotap, the corresponding Journey ID is automatically sent to Dynamic Yield in real time, enabling personalisation based on the Journey the user is currently enrolled in.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-mapping.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=4b539e9827061904b5ae62ee571f0a48" width="2048" height="1182" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-mapping.png" />
    </Frame>

    <Note>
      The custom CUID nomenclature entered here must be identical to the identifier you defined in Dynamic Yield and provided during the destination setup.
    </Note>
  </Step>

  <Step>
    Once all mappings are complete, click **Create Destination**. The destination is now listed in the **Journeys** application and can be linked to a Journey.
  </Step>
</Steps>

## Activate the Destination on Journeys

After creating the destination, link it inside the **Send to Destinations** node within a Journey workflow:

<Steps>
  <Step>
    In the workflow, click **+** and choose **Send to Destinations**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/4Dur5DFq2fyd71SA/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-action-picker.png?fit=max&auto=format&n=4Dur5DFq2fyd71SA&q=85&s=9714babc8549f1a7635f0eed51d9e600" width="1032" height="542" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-action-picker.png" />
    </Frame>
  </Step>

  <Step>
    Choose the Dynamic Yield destination from the list of available destinations using the search box.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-destinations-list.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=af98b9f48e11996c17e17adda65e8d56" width="1600" height="891" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-destinations-list.png" />
    </Frame>
  </Step>

  <Step>
    Under the **Destination Details** tab, the relevant fields are automatically populated based on the values entered while creating the destination.
  </Step>

  <Step>
    Click **Save Destination**. The destination is now attached to the Journey node and will receive the Journey ID for every user who qualifies for that Journey in real time.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-journey-node.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=ccf32be5b1fbe88849cfc20ad9076ccb" width="1896" height="1122" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-journey-node.png" />
    </Frame>
  </Step>
</Steps>

<Note>
  The terms *Audiences* and *Segments* are used interchangeably to refer to customer cohorts belonging to a specific category. For example, an Audience or a segment can be a specific group of customers who are over 18 years of age and have performed an `addToCart` event within the last 30 days.
</Note>

## Create Audiences and Campaigns in Dynamic Yield

To create audiences in Dynamic Yield using the Journey ID streamed from Zeotap, perform the following steps:

<Steps>
  <Step>
    Log in to the Dynamic Yield UI with your credentials.
  </Step>

  <Step>
    Under the **Audience** tab, go to **Audience Manager** and click **Create Audience**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-audience-manager.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=9d7e2b0076a69a68a503e65c7a1752e2" width="2048" height="1399" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-audience-manager.png" />
    </Frame>
  </Step>

  <Step>
    From the options, select **User Attributes**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-user-attributes.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=6fe4027c4115196a4a33e6651a1074de" width="1806" height="1470" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-user-attributes.png" />
    </Frame>
  </Step>

  <Step>
    Enter a name for the Audience.
  </Step>

  <Step>
    Under **Conditions**, provide the following:

    a. In the first field, choose the **User Data Feed** to include for this Audience.

    b. In the second field, select **Realtime Journey ID** (or any other identifier or attribute you have sent from Zeotap). You can add any number of attributes by adding new conditions.

    c. In the third field, choose the operator (for example, `Is`, `contains`, `equals`).

    d. In the fourth field, choose the desired value from the dropdown — values populate based on the User Data Feed chosen.

    e. Set the timeframe of the condition up to **30 days**. Options for 3 months or 1 year are available but cannot be selected — selecting them shows the error *"Projected performance is not supported for audience time frame over 30 days"*.

    f. Once all the conditions are set, click **Save Audience**.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-audience-conditions.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=c31167bb9957c872af45f46f9f976de6" width="2048" height="566" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-audience-conditions.png" />
    </Frame>
  </Step>

  <Step>
    Under the **Projected Audience Performance** tab, you can view the projected audience size for the selected timeframe.
  </Step>

  <Step>
    The audiences created here are used for building Campaigns under **Web Personalisation** in the Dynamic Yield interface.

    <Frame>
      <img src="https://mintcdn.com/zeotap/xzZ7DaVdxdIveMg2/articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-campaign-types.png?fit=max&auto=format&n=xzZ7DaVdxdIveMg2&q=85&s=14093040c87b6657c5441a007f81d9ca" width="1926" height="2048" data-path="articles/integrate-customer/Storage/integrate-customer/dynamic-yield-realtime/dynamic-yield-realtime-campaign-types.png" />
    </Frame>
  </Step>
</Steps>
