Quel type de mesure ?
Le first-id peut-être utilisé à des fins de mesure lors de la diffusion de formats publicitaires sur une page d’un site qui dispose d’un first-id. Si vous souhaitez Récupérer un first-id pour l’insérer dans un tracking existant, vous pouvez utliser le code fourni en bas de cette page.
l’identifiant first-id peut être passé en tant que paramètre de comptabilisation d’impression, ou/et de clic. La plupart des url de tracking disposent d’évenements customisables à l’intérieur duquel vous pouvez passer les first-id et opérer une mesure jusqu’à la conversion si l’annonceur dispose aussi de first-id et que l’identifiant est passé de la même façon sur des pages de confirmation de commande par exemple.
Implémentation technique
Les formats display ou native qui sont servis via des adservers sont encapsulés au mieux dans une friendly iframe , au pire dans une safe frame. Cela empêche le script publicitaire de la campagne de communiquer avec la page, et donc de récupérer la valeur du first-id.
Notre sdk disponible sur les pages de nos clients permettent d’ouvrir un canal de communication entre l’iframe publicitaire et la page via le protocole postMessage.
Voici le code qui vous permet de récupérer le first-id s’il existe :
💡 Notez que ce code ne fait que récupérer la valeur du first-id. Si vous souhaitez le passer dans un script de tracking existant existant, il faudra coder cette fonctionnalité.
/**
* Periodically requests the FirstID from the parent page via postMessage,
* and listens for responses to initialize the iframe context.
*/
function askFirstIdToParentIframe() {
let intervalReferenceRequestFirstIdFromParent = null
/**
* Sends a request to the parent window to obtain the FirstID.
* Called repeatedly until the iframe receives a valid response.
*/
const requestFirstIdFromParent = () => {
console.debug(Request FirstID from parent each 100 ms...);
// Send a message to the parent window (window.top).
// The parent page is expected to listen for "requestFirstID".
window.top.postMessage("requestFirstID", "*");
};
// Starts a recurring interval to request the FirstID
// until a valid response is received.
intervalReferenceRequestFirstIdFromParent = setInterval(
requestFirstIdFromParent,
100
);
/**
* Listens for incoming postMessage events (from the parent or other sources).
* Goal: detect the message containing the FirstID and handle it.
*/
window.addEventListener("message", (event) => {
console.debug("[FIRSTID IFRAME] message from parent", event);
// Ignore any message that does not contain a FirstID.
if (!event.data.firstid) {
return;
}
// Once the FirstID is received, stop further interval requests.
clearInterval(intervalReferenceRequestFirstIdFromParent);
console.debug(
[FIRSTID IFRAME] iframe successfully received FirstID ${event.data.firstid},
event
);
// Send an acknowledgment back to the parent window
event.source.postMessage("firstidACK", "*");
// Retrieve or propagate the FirstID through callbacks, events, variables, etc.
// TODO
}, true);
}