---
schema_version: "1"
id: 2dd654c5e8115d65a4200ef981058c3e88ec5df84037d8e415d9a3a48ea15462
title: Ingest and Model Digital Identifiers for JSON-based External Activation Targets
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/data/264-0-0/c360_a_map_digital_identifiers_activation_toolkit.md
canonical_url: https://help.salesforce.com/s/articleView?id=data.c360_a_map_digital_identifiers_activation_toolkit.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: b442a44c4186080df6d44db441666f7a436e5aea06ad33269edfbf37d59b29e5
description: Ingest and model your digital identifier data by using the standard ContactPointDigitalId data model object (DMO). Independent Software Vendors (ISV) use the activation toolkit to build activations that query this DMO to resolve digital identities across digital media platforms.
products:
  - Data 360
release: "264"
---
# Ingest and Model Digital Identifiers for JSON-based External Activation Targets

Ingest and model your digital identifier data by using the standard `ContactPointDigitalId` data model object (DMO). Independent Software Vendors (ISV) use the activation toolkit to build activations that query this DMO to resolve digital identities across digital media platforms.

### Required Editions

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small edition"><colgroup><col> <col></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;">Available in: Lightning Experience</td><td class="slds-cell-wrap" style="vertical-align:top;">Available in: <strong class="uicontrol">Developer</strong>, <strong class="uicontrol">Enterprise</strong> and <strong class="uicontrol">Unlimited</strong> Editions</td></tr></tbody></table>

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-data-data_cloud-264-0-0-production-enus/f3569962-3c9b-4f83-9d0c-b6a574e785da/images/icon_note.png)

Note To activate anonymous digital identifiers, it's recommended to use ContactPointDigitalID DMO instead of mapping the digital identifiers to custom fields on the Individual DMO.

Before mapping your data, it’s important to understand the target blueprint. Map your source identifiers to the `ContactPointDigitalId` DMO. For activations to work, this DMO must have an established Many-to-One (N:1) relationship to the Individual DMO (linking `ContactPointDigitalId.ssot__IndividualId__c` to `Individual.ssot__Id__c`). You can verify or create this relationship in the Data Model tab. This mapping is mandatory when you use the activation toolkit for JSON-based external activation platforms that rely on specific digital identifiers (for example, UID2, RampID).

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-data-data_cloud-264-0-0-production-enus/f3569962-3c9b-4f83-9d0c-b6a574e785da/images/icon_note.png)

Note

If your activation only targets email or phone-based destinations (by using `ContactPointEmail` or `ContactPointPhone`), this DMO is optional, though it’s recommended to centralize all digital identities here.

## Prepare Your Source Data

You can ingest data via multiple methods, including CSV/File ingestion, Ingestion API, or WebSDK. Regardless of the ingestion method (batch or streaming), your source data structure must support the granular mapping required by the DMO. Pivot your source data so that you have one column for the identifier's type and another for its value.

![Example](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-data-data_cloud-264-0-0-production-enus/f3569962-3c9b-4f83-9d0c-b6a574e785da/images/icon_example.png)

Example <table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small " summary="Example Source Data Structure">
            <caption>Example Source Data Structure</caption>
            <colgroup>
              <col style="width:25%">
              <col style="width:25%">
              <col style="width:25%">
              <col style="width:25%">
            </colgroup>
            <thead class="slds-text-title_caps ">
              <tr class="">
                <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d234377e114">Individual_ID</th>
                <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d234377e117">FirstName</th>
                <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d234377e120">Digital_ID_Type</th>
                <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d234377e123">Digital_ID_Value</th>
              </tr>
            </thead>
            <tbody>
              <tr class="">
                <td data-label="Individual_ID" class="slds-cell-wrap" style="vertical-align:top;" headers="d234377e114 ">1001</td>

                <td data-label="FirstName" class="slds-cell-wrap" style="vertical-align:top;" headers="d234377e117 ">Ana</td>

                <td data-label="Digital_ID_Type" class="slds-cell-wrap" style="vertical-align:top;" headers="d234377e120 ">TD ID</td>

                <td data-label="Digital_ID_Value" class="slds-cell-wrap" style="vertical-align:top;" headers="d234377e123 ">
                  <p style="margin-bottom:0;">cdcbe3dd-8fe3-44d6-a4b3-ba55e4400000</p>
                </td>

              </tr>
              <tr class="">
                <td data-label="Individual_ID" class="slds-cell-wrap" style="vertical-align:top;" headers="d234377e114 ">1001</td>

                <td data-label="FirstName" class="slds-cell-wrap" style="vertical-align:top;" headers="d234377e117 ">Ana</td>

                <td data-label="Digital_ID_Type" class="slds-cell-wrap" style="vertical-align:top;" headers="d234377e120 ">GoogleID</td>

                <td data-label="Digital_ID_Value" class="slds-cell-wrap" style="vertical-align:top;" headers="d234377e123 ">
                  <p style="margin-bottom:0;">584eb2cf-182c-409a-b1f0-9a4827179841</p>
                </td>

              </tr>
              <tr class="">
                <td data-label="Individual_ID" class="slds-cell-wrap" style="vertical-align:top;" headers="d234377e114 ">1002</td>

                <td data-label="FirstName" class="slds-cell-wrap" style="vertical-align:top;" headers="d234377e117 ">Bob</td>

                <td data-label="Digital_ID_Type" class="slds-cell-wrap" style="vertical-align:top;" headers="d234377e120 ">TD ID</td>

                <td data-label="Digital_ID_Value" class="slds-cell-wrap" style="vertical-align:top;" headers="d234377e123 ">
                  <p style="margin-bottom:0;">74e6751f-8f86-4dbb-a96e-d9123456789</p>
                </td>

              </tr>
            </tbody>
          </table>

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-data-data_cloud-264-0-0-production-enus/f3569962-3c9b-4f83-9d0c-b6a574e785da/images/icon_note.png)

Note The 'Digital ID Type' and 'Digital ID Value' are specific fields on the ContactPointDigitalId DMO. Your source data must be explicitly mapped and ingested into these fields.

## Configure the ID Type Mapping

Before you begin mapping your data stream, make sure that the identifier types in your source data perfectly match the configuration in the Data 360 Setup page.

As a Data 360 Admin user, go to **Data 360 Setup > External Activation Target > \[Target Name\] > ID Type Mapping** and configure the ID type mapping.

The exact string value in your source data's Digital\_ID\_Type column (for example, "TD ID") must perfectly match the string configured in the ID Type column by the Data 360 administrator. Because Data 360 uses this string as a strict filter during activation, a case-sensitive mismatch (for example, a value in your data might appear as “TDID,” whereas the Data 360 setup lists it as “TD ID”) results in zero activated records.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-data-data_cloud-264-0-0-production-enus/f3569962-3c9b-4f83-9d0c-b6a574e785da/images/icon_note.png)

Note

During activation, the final computation includes both the partner-supported ID type in the left column (for example, Google) and all mapped aliases in the right column (for example, GID, gid, and GAid). In this example, any record in the `ContactPointDigitalId` DMO with a `DigitalIdType` value of Google, GID, gid, or GAid is activated to the corresponding destination.

## Create and Map Your Data Stream

After preparing your source file, create your data stream and map it to the standard DMOs.

![Note](https://sf-zdocs-cdn-prod.zoominsoftware.com/tdta-data-data_cloud-264-0-0-production-enus/f3569962-3c9b-4f83-9d0c-b6a574e785da/images/icon_note.png)

Note Data 360 doesn’t automatically link new DMOs. After you complete these mapping steps, you’ll likely need to create the relationship manually between `ContactPointDigitalId` and `Individual`.

1. Create a data stream and point it to your data source.
2. In the mapping canvas, map your profile data to the Individual DMO.
    - Map Individual\_ID -> Individual.IndividualId
    - Map FirstName -> Individual.FirstName
    - If you're activating anonymous users, you don't have standard profile data like a First Name or a known Customer ID. In this case, you must use a persistent digital identifier (such as a Device ID or Cookie ID) to act as the individual's profile ID. Map this value to the `ssot__IndividualId__c` field to represent the anonymous individual in the data model.
3. In the mapping canvas, map your source fields from the data lake object (DLO) to the specific fields on the ContactPointDigitalId DMO. Correct field-level mapping is critical to prevent zero population errors during activation.
    
      
    | Target Field (ContactPointDigitalId DMO) | Source Field Description | Notes |
    | --- | --- | --- |
    | ssot\_\_Id\_\_c (Primary Key) | Unique record ID (for example, Device ID, Event ID, or UUID) | This must be a unique key for the record itself (For Example, device\_id or event\_id). Don’t map the Digital ID value here. |
    | ssot\_\_IndividualId\_\_c | Individual ID | Links this digital ID to a specific profile. |
    | ssot\_\_DigitalIdType\_\_c | Type string (for example, "TDID", "GoogleID") | This identifies what kind of ID it is. This ID is case-sensitive. |
    | ssot\_\_DigitalIdValueText\_\_c | The actual ID token | The alphanumeric string used by the platform (For Example, the UID2 token). |
4. Map the relationship field that links the two objects. This step is critical.
    - Map Individual\_ID -> ContactPointDigitalId.IndividualId\_\_c
    - Verify or create the Data Model relationship. Go to the Data Model tab and make sure a Many-to-One (N:1) relationship exists between ContactPointDigitalId and Individual. If it doesn’t exist, create it manually by linking `ContactPointDigitalId.ssot__IndividualId__c` to `Individual.ssot__Id__c`.

This mapping creates the correct, related data structure that is required for activations.

#### See Also

- [_Salesforce Help_: Map Data Model Objects](https://help.salesforce.com/s/articleView?id=data.c360_a_map_custom_data_model_objects.htm&language=en_US)
- [_Salesforce Help_: External Activation Platforms](https://help.salesforce.com/s/articleView?id=data.c360_a_build_external_activation_platforms.htm&language=en_US)