Skip to main content
Skip table of contents

CDP Integration

This page contains integration guides with various CDP solutions, of how to pass martechpass as declared ID.

Why Integrate Utiq martechpass with CDPs?

The martechpass enables CDPs to identify and unify user profiles more accurately, even across sessions, devices, and browsers. As a declared ID, it provides a reliable anchor for user data, enhancing personalization and activation potential.

Primary Use Cases

  • Audience Building & Activation: Collect traits and behaviors tied to martechpass, and activate audiences across owned media, AdTech platforms, or via data clean rooms.

  • First-Party Data Activation: Empower brands to activate customer insights without relying on third-party cookies or shared identifiers.

Learn more: Utiq Use Cases

Vendor Integrations

For each integration, Utiq recommends retrieving the mtid using onIdsAvailable via the addEventListener API, especially when embedding via third-party scripts.

Adobe CDP

Last update: April 2025 (check vendor documentation)

JS
window.Utiq ||= {};
window.Utiq.queue ||= [];

const handleIdsAvailable = ({ mtid }) => {
  // Callback action for onIdsAvailable
  
  if (mtid && typeof alloy === 'function') {
    alloy("sendEvent", {
      xdm: {
        "identityMap": {
          "utiq": [ // Ensure it's a registered identity namespace in Adobe CDP
            {
              "id": mtid,
              "authenticatedState": "ambiguous",
              "primary": false
            }
          ]
        }
      }
    });
  } else {
    console.error('Adobe CDP is not available, or MTID is missing.');
  }
};

window.Utiq.queue.push(() => {
  window.Utiq.API.addEventListener('onIdsAvailable', handleIdsAvailable);
});

Ensure that ‘utiq’ is a registered identity namespace in Adobe CDP.

Documentation:

Testing: Filter Network for interact and check attribute events.0.xdm.identityMap.utiq

AudienceStream

Last update: July 2025 (check vendor documentation)

JS
window.Utiq ||= {};
window.Utiq.queue ||= [];

const handleIdsAvailable = ({ mtid }) => {
  // Callback action for onIdsAvailable
  
  if (mtid && typeof utag === 'object' && typeof utag.link === 'function') {
    utag.link({
      tealium_event: 'utiqUserIdReady', // Custom event name
      utiq_mtid: mtid                   // Pass Utiq ID to Tealium iQ
    });
  } else {
    console.error('Tealium iQ is not available, or MTID is missing.');
  }
};

window.Utiq.queue.push(() => {
  window.Utiq.API.addEventListener('onIdsAvailable', handleIdsAvailable);
});

Configurations in Tealium iQ Tag Management

Create a Data Layer Variable

  • Go to Data Layer > Add Variable

  • Name: utiq_mtid

  • Type: JavaScript Variable

  • Variable: utiq_mtid

Enable ‘Collect Tag’

  • Go to Tags > Add Tag

  • Choose ‘Tealium Collect Tag’

  • Scope: All Pages or relevant rule

Configurations in Tealium EventStream

  • Go to Data Layer > Event Attributes

  • Look for attribute utiq_mtid (Type: String)

  • If it doesn't exist, create it

    • Source: Event data

    • Match field name from payload: utiq_mtid

Configurations in Tealium AudienceStream

  • Go to Attributes

  • Create a new attribute:

    • Type: Visitor String

    • Name: Utiq MTID (or similar)

    • Enrichment Rule:

      • When: utiq_mtid (event attribute) is assigned

      • Set Visitor String to the value of utiq_mtid

      • Optional: Add validation (e.g., matches regex or exists)

This maps the MTID from a single event to the user profile

Documentation:

Testing:

  • Filter Network for collect.tealiumiq.com/event and check attribute utiq_mtid

  • Use Tealium Tools to confirm identity mappings

Permutive

Last update: April 2025 (check vendor documentation)

JS
window.Utiq ||= {};
window.Utiq.queue ||= [];

const handleIdsAvailable = ({ mtid }) => {
  // Callback action for onIdsAvailable
  
  if (mtid && window.permutive && typeof window.permutive.identify === 'function') {
    window.permutive.identify([
      {
        id: mtid,
        tag: 'utiq', // Ensure it's a registered identifier in Permutive CDP
        priority: 1
      }
    ])
  } else {
    console.error('Permutive is not available, or MTID is missing.');
  }
};

window.Utiq.queue.push(() => {
  window.Utiq.API.addEventListener('onIdsAvailable', handleIdsAvailable);
});

Ensure that ‘utiq’ is a registered identifier in Permutive CDP.

Documentation:

Testing: Look for localStorage permutive-data-misc containing utiq in identities. Also filter network for identify and check if mtid is part of the aliases object.

ADEX

Last update: April 2025 (check vendor documentation)

JS
window.Utiq ||= {};
window.Utiq.queue ||= [];

// Define your ADEX variables here
const adexCustomerId = <customerId>; // Replace <customerId> with your real Customer ID
const adexTagId = <tagId>; // Replace <tagId> with your real Tag ID

const handleIdsAvailable = ({ mtid }) => {
  // Callback action for onIdsAvailable
  
  window._adexc = window._adexc || [];
  const instancePath = `/${adexCustomerId}/${adexTagId}/`;
  window._adexc.push([instancePath, "cm", "_cm", [308, mtid]]) // '308' is Utiq's partner ID
};

window.Utiq.queue.push(() => {
  window.Utiq.API.addEventListener('onIdsAvailable', handleIdsAvailable);
});

Replace <customerId> and <tagId> with your real Customer ID and Tag ID.

'308' is Utiq's partner ID.

Documentation:

Testing: Filter Network for 2.gif?axd_pid=308 and check attribute axd_fuid

Emetriq

Last update: July 2025 (check vendor documentation)

JS
window.Utiq ||= {};
window.Utiq.queue ||= [];

const handleIdsAvailable = ({ mtid }) => {
  // Callback action for onIdsAvailable
  
  const emetriqIsPresent = Array.from(document.scripts).some(script =>
    script.src.includes('xplosion.de')
  );
  
  if (mtid && emetriqIsPresent) {
    const syncUrl = `https://uss.xplosion.de/usersync?sid=YOUR_SID&fpid=${encodeURIComponent(mtid)}`; // Change YOUR_SID with your actual customer/partner ID
    new Image().src = syncUrl;
  } else {
    console.error('Emetriq is not available, or MTID is missing.');
  }
};

window.Utiq.queue.push(() => {
  window.Utiq.API.addEventListener('onIdsAvailable', handleIdsAvailable);
});

Documentation:

Testing: Filter Network for uss.xplosion.de/usersync and check attribute fpid

Segment

Last update: July 2025 (check vendor documentation)

JS
window.Utiq ||= {};
window.Utiq.queue ||= [];

const handleIdsAvailable = ({ mtid }) => {
  // Callback action for onIdsAvailable
  
  if (mtid && typeof analytics === 'object' && typeof analytics.identify === 'function') {
    analytics.identify({
      utiq_mtid: mtid // Add MTID to Segment traits
    });
    
    // Optional: track event if you want to trigger workflows
    /*
    analytics.track('utiqUserIdReady', {
      utiq_mtid: mtid
    });
    */
  } else {
    console.error('Segment is not available, or MTID is missing.');
  }
};

window.Utiq.queue.push(() => {
  window.Utiq.API.addEventListener('onIdsAvailable', handleIdsAvailable);
});

Documentation:

Testing:

  • For trait: Filter Network for api.segment.io/v1/i and check attribute traits

  • For event: Filter Network for api.segment.io/v1/t and check attribute event and properties

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.