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)
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:
https://experienceleague.adobe.com/en/docs/experience-platform/web-sdk/identity/overview
https://experienceleague.adobe.com/en/docs/experience-platform/xdm/data-types/identity
Testing: Filter Network for interact
and check attribute events.0.xdm.identityMap.utiq
AudienceStream
Last update: July 2025 (check vendor documentation)
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 assignedSet 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:
https://docs.tealium.com/server-side/visitor-stitching/visitor-id-attribute/
https://docs.tealium.com/early-access/api/api-v3/tealium-collect-http-api-v3-early-access/
Testing:
Filter Network for
collect.tealiumiq.com/event
and check attributeutiq_mtid
Use Tealium Tools to confirm identity mappings
Permutive
Last update: April 2025 (check vendor documentation)
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)
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)
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)
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:
https://segment.com/docs/connections/sources/catalog/libraries/website/javascript/#identify
https://segment.com/docs/connections/sources/catalog/libraries/website/javascript/#track
Testing:
For trait: Filter Network for
api.segment.io/v1/i
and check attributetraits
For event: Filter Network for
api.segment.io/v1/t
and check attributeevent
andproperties