Here we go through the process of how Publishers can send adtechpasses to DSPs via their SSP, allowing use cases such as targeting and frequency capping. Below are the integration steps for passing the adtechpass using Prebid.js, with support for other potential integrations.
utiqPass
key.To confirm that the adtechpass is available you can run the following command in your browser console:
> Utiq.API.getIdGraphEntry("atid")
-> 'gB4jvq2Jwm5X5+EN4IccBuK+N251EKix6lnMs8XyL4O/tr95G7fi5cuoOT3RwjzDi0eTUdvKR9nn6gyqwoswvw==-ndye'
If an adtechpass is returned, then your integration is ready to go.
To send the adtechpass via an SSP using Prebid, you need to:
Ensure you use Prebid version 8.2 or higher.
To check your Prebid version, run the following command in your browser console:
> pbjs.version
-> 'v8.9.0'
Ensure you enabled the “Utiq” user id module in your prebid version
To check if the Utiq user id module is enabled, run the following command in your browser console:
> pbjs.installedModules
-> ['appnexusBidAdapter', 'consentManagement', 'consentManagementGpp', 'consentManagementUsp', 'enrichmentFpdModule', 'gdprEnforcement', 'gppControl_usnat', 'gptPreAuction', 'pubProvidedIdSystem', 'rubiconBidAdapter', 'userId', 'utiqSystem']
If any of the two requirements are not fulfilled, please make sure to update your Prebid version and enable the Utiq user id module here.
If all prerequisites have been fulfilled, you can now update your prebid configuration to start sending the Utiq passes to your SSPs.
To do that, simply add the below lines to your prebid configuration:
pbjs.setConfig({
userSync: {
userIds: [{
name: "utiq"
}]
}
});
Full documentation about the Utiq Prebid user id module is available here.
If you use the Prebid GDPR Enforcement Module, which prevents access to local storage for non consented vendors, you may need to add a vendor exception for the Utiq user id module to work, as Utiq is not a TCF vendor and will be automatically blocked by Prebid when GDPR Enforcement is enabled. Utiq performs its own consent check, outside TCF, to ensure that there is no device storage access in the absence of consent.
To do that, you can use below configuration:
pbjs.setConfig({
consentManagement: {
gdpr: {
cmpApi: 'iab', // activates the enforcement module
rules: [{ // these are the default values
purpose: "storage",
enforcePurpose: true, // block localStorage based on purpose 1 of TCF
enforceVendor: true, // block localStorage for non consented / non TCF vendors
vendorExceptions: ["utiq"] // configuration line to add to make utiq exception
}]
}
}
});
To confirm that the implementation is correct, you can type the below command in your browser console:
> pbjs.getUserIdsAsEidBySource("utiq.com")
-> {source: 'utiq.com', uids: Array(1)}
if the eid
object with source "utiq.com"
is returned, you are all set!
You can also confirm the adtechpass is sent as part of the payload from the SSPs. This check however, will depend on each SSP. For example, for Appnexus SSP, you can check that "utiq.com"
is present as part of the eids
object in the appnexus prebid call as per below example:
Here is an example of an OpenRTB bid request with the utiq user id:
https://adtech.com/xxx/bids
Content:
{"site": {"id": "123456", "domain": "domain.com", "page": "domain.com", "publisher": {"id": "1234", "name": "Domain.com"}}, "device": {"ip": "172.31.1.0", "geo": {"country": "GBR"}, "language": "en", "devicetype": 2, "ext": {"truncated_ip": 1}, "ua": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36"}, "user": {"id": "37801268-60e0-491b-a4fd-17c416a6d99c", "data": [{"id": "123456"}],
"ext": {
"eids": [
{
"source": "utiq.com",
"uids": [
{
"id": "fH6cXAjRWrVKqvH9bE/jriedN1JX3v0VyFOSPR9yQbqCHTSnR6/BEB41mln4fuyla9DtCDnehmC4m2DnhRpbBg==-xxxx"
}
]
}
]
}
}, "wseat": ["5515"], "cur": ["EUR"], "regs": {"ext": {"gdpr": 0}}, "ext": {}, "source": {"ext": {"schain": {"ver": "1.0", "complete": 1, "nodes": [{"asi": "domain.com", "sid": "1234", "hp": 1}]}}}, "id": "65424020-4e69-4096-973a-2212a64a58cb", "imp": [{"id": "1", "banner": {"id": "1", "pos": 1, "format": [{"w": 728, "h": 90}], "w": 728, "h": 90}, "bidfloor": 0.01, "bidfloorcur": "EUR", "secure": 0, "pmp": {"deals": [{"id": "12345678", "bidfloor": 0.01, "bidfloorcur": "EUR", "wseat": ["1234"], "at": 3}], "private_auction": 1}, "tagid": "123456"}], "at": 1}