Guide d'Intégration du SDK Web+
Cette page explique comment implémenter le SDK+ Rokt Ecommerce Web. Le SDK+ transmet les données utilisateur et transactionnelles à Rokt sur les pages configurées afin que Rokt puisse afficher des expériences pertinentes, telles que des offres sur les pages de confirmation.
1. Initialize the Rokt SDK+#
Incluez le script d'initialisation du SDK+ sur chaque page de votre site. Le cache du navigateur signifie que le SDK+ se charge à partir du cache sur les pages suivantes plutôt que de le recharger.
Pour les applications monopage : Insérez le script dans le head de votre index.html principal, ou partout où votre contenu est rendu.
Pour les applications multipages : Placez le script dans votre fichier de mise en page partagé principal. Si vous n'utilisez pas un système de rendu basé sur des modèles, ajoutez-le à chaque fichier HTML.
L'utilisation d'un domaine de première partie lors de l'intégration du SDK+ Web dans votre site garantit que le SDK+ utilise votre propre domaine lors des appels à l'API de Rokt, offrant à vos clients une expérience fluide et minimisant le risque de contenu bloqué. Pour savoir comment configurer un domaine de première partie pour votre intégration SDK+, consultez Intégration de domaine de première partie.
<script type="text/javascript">
// Enter your Rokt API key
const API_KEY = "YOUR_API_KEY";
// Enter your custom subdomain if you are using a first-party domain configuration (optional)
const ROKT_DOMAIN = "https://apps.rokt-api.com";
window.mParticle = {
config: {
// Set the data environment:
// Set isDevelopmentMode to true if you are still testing your integration.
// Set isDevelopmentMode to false if your integration is ready for production data.
isDevelopmentMode: true,
// Identify the current user:
// If you do not have the user's email address, you can pass in a null value
identifyRequest: {
userIdentities: {
// If you're using an un-hashed email address, set it in 'email' (preferred).
email: 'j.smith@example.com',
// If you're using a hashed email address, set it in 'email_sha256' instead of 'email'.
email_sha256: 'sha256 hashed email goes here',
// Customer phone number in E.164 format.
mobile_number: '+13125551515',
// If you're using a hashed mobile number, set it in 'mobile_sha256' instead of 'mobile_number'.
mobile_sha256: 'sha256 hashed mobile goes here',
// Partner's internal customer/account identifier (if the user is logged in).
customerid: 'cust_10482'
}
},
// If the user is identified with their email address, set additional user attributes.
identityCallback: function(result) {
if (result.getUser()) {
result.getUser().setUserAttribute('attribute_key', 'attribute_value');
}
}
}
};
// Load the SDK+
(function(e) { window.mParticle = window.mParticle || {}; window.mParticle.EventType = { Unknown: 0, Navigation: 1, Location: 2, Search: 3, Transaction: 4, UserContent: 5, UserPreference: 6, Social: 7, Other: 8, Media: 9 }; window.mParticle.eCommerce = { Cart: {} }; window.mParticle.Identity = {}; window.mParticle.Rokt = {}; window.mParticle.config = window.mParticle.config || {}; window.mParticle.config.rq = []; window.mParticle.config.snippetVersion = 2.8; window.mParticle.ready = function(e) { window.mParticle.config.rq.push(e); }; ["endSession", "logError", "logBaseEvent", "logEvent", "logForm", "logLink", "logPageView", "setSessionAttribute", "setAppName", "setAppVersion", "setOptOut", "setPosition", "startNewSession", "startTrackingLocation", "stopTrackingLocation"].forEach(function(e) { window.mParticle[e] = function() { var t = Array.prototype.slice.call(arguments); t.unshift(e); window.mParticle.config.rq.push(t); }; }); ["setCurrencyCode", "logCheckout"].forEach(function(e) { window.mParticle.eCommerce[e] = function() { var t = Array.prototype.slice.call(arguments); t.unshift("eCommerce." + e); window.mParticle.config.rq.push(t); }; }); ["identify", "login", "logout", "modify"].forEach(function(e) { window.mParticle.Identity[e] = function() { var t = Array.prototype.slice.call(arguments); t.unshift("Identity." + e); window.mParticle.config.rq.push(t); }; }); ["selectPlacements","hashAttributes","hashSha256","setExtensionData","use","getVersion","terminate","onShoppableAdsReady"].forEach(function(e) { window.mParticle.Rokt[e] = function() { var t = Array.prototype.slice.call(arguments); t.unshift("Rokt." + e); window.mParticle.config.rq.push(t); }; }); var t = window.mParticle.config.isDevelopmentMode ? 1 : 0, n = "?env=" + t, a = window.mParticle.config.dataPlan; if (a) { var o = a.planId, r = a.planVersion; o && (r && (r < 1 || r > 1e3) && (r = null), n += "&plan_id=" + o + (r ? "&plan_version=" + r : "")); } var i = window.mParticle.config.versions, s = []; i && Object.keys(i).forEach(function(e) { s.push(e + "=" + i[e]); }); var c = document.createElement("script"); c.type = "text/javascript"; c.async = !0; window.ROKT_DOMAIN = ROKT_DOMAIN || 'https://apps.rokt-api.com'; mParticle.config.domain = ROKT_DOMAIN.split('//')[1]; c.src = ROKT_DOMAIN + "/js/v2/" + e + "/app.js" + n + "&" + s.join("&"); c.onerror = function() { var u = ["https://apps.","rokt","ecommerce",".com"].join(""); window.ROKT_DOMAIN = u; mParticle.config.domain = u.split("//")[1]; var d = document.createElement("script"); d.type = "text/javascript"; d.async = !0; d.src = u + "/js/v2/" + e + "/app.js" + n + "&" + s.join("&"); var f = document.getElementsByTagName("script")[0]; f.parentNode.insertBefore(d, f); }; var l = document.getElementsByTagName("script")[0]; l.parentNode.insertBefore(c, l); })(API_KEY);
</script>
Lors de l'insertion du script d'initialisation dans votre site, vous verrez des champs personnalisables pour :
1Entering your Rokt API key#
Définissez API_KEY sur la clé API Rokt fournie par votre gestionnaire de compte Rokt.
2Entering a custom first-party domain#
Suivez les instructions dans Configuration de domaine de première partie, et définissez ROKT_DOMAIN sur votre sous-domaine personnalisé. Acheminer le SDK+ Rokt via votre propre domaine réduit le risque que les bloqueurs de publicités et les navigateurs bloquent les publicités ou les données.
3Setting your data environment#
Définissez isDevelopmentMode sur true lors des tests pour acheminer les données vers l'environnement de développement, et false pour envoyer l'activité client en direct à la production.
4Identifying your user and setting attributes#
Dans identifyRequest, transmettez l'e-mail brut et non haché de l'utilisateur dans le champ email. Incluez mobile_number et customerid lorsque disponibles — plus de signaux améliorent la résolution d'identité. Une fois identifié, utilisez le identityCallback pour définir des attributs utilisateur supplémentaires. Pour une liste des attributs recommandés, consultez Attributs utilisateur.
// The identityCallback determines if the identifyRequest was successful.
identityCallback: function(result) {
if (result.getUser()) {
// If the user was identified, set additional user attributes with setUserAttribute.
result.getUser().setUserAttribute('attribute_key', 'attribute_value');
}
}
Incluez toujours identifyRequest dans le script d'initialisation. Si vous n'avez pas l'e-mail de l'utilisateur à l'initialisation, définissez email sur null — le SDK+ s'initialisera quand même, et vous pourrez identifier l'utilisateur plus tard via Étape 2.
2. Identify the User#
Le script d'initialisation SDK+ identifie l'utilisateur actuel en utilisant les identifiants que vous avez fournis dans l'objet identifyRequest du script. Après l'initialisation du SDK, vous devez garder l'identité de l'utilisateur synchronisée chaque fois qu'il se connecte, se déconnecte ou fournit un identifiant (par exemple, lors du paiement) en utilisant la méthode appropriée décrite ci-dessous.
Identifiants utilisateur pris en chargeLien direct vers Identifiants utilisateur pris en charge
Afficher les identifiants utilisateur pris en charge
| Champ | Type | Description |
|---|---|---|
email | string | Adresse e-mail brute, non hachée. |
email_sha256 | string | E-mail haché en SHA-256. Utilisez à la place de email lorsque seule la forme hachée est disponible. |
mobile_sha256 | string | Numéro de mobile haché en SHA-256. Utilisez à la place de mobile_number lorsque seule la forme hachée est disponible. |
mobile_number | string | Numéro de téléphone au format E.164 (par exemple, +13125551515). |
customerid | string | Identifiant interne client/compte. Envoyez sur chaque page pour les utilisateurs connectés. |
Pour identifier l'utilisateur :
1Create an identifyRequest object#
Créez un objet identifyRequest pour contenir les identifiants de l'utilisateur. Vous devez intégrer l'adresse e-mail brute, non hachée de l'utilisateur dans le champ email.
2Create an identityCallback#
Pour définir des attributs utilisateur supplémentaires, créez un identityCallback. Si le identifyRequest réussit, alors tous les attributs utilisateur que vous définissez dans le rappel sont attribués à l'utilisateur identifié.
3Send the request using the method that matches the user's action#
Passez le identifyRequest (et éventuellement identityCallback) à la méthode qui correspond à l'action de l'utilisateur :
mParticle.Identity.login: appelez lorsque l'utilisateur se connecte ou crée un compte.mParticle.Identity.identify: appelez lorsque vous obtenez l'e-mail de l'utilisateur en cours de session sans transition de connexion (par exemple, un invité entre son e-mail lors du paiement).mParticle.Identity.logout: appelez lorsque l'utilisateur se déconnecte.
Appeler ces méthodes fait évoluer l'enregistrement SDK de l'état actuel de l'utilisateur. Les méthodes login et logout enregistrent également automatiquement un événement correspondant pour améliorer l'attribution de Rokt.
Par exemple, pour identifier un utilisateur nommé Jane Smith avec l'adresse e-mail j.smith@example.com, le numéro de mobile +13125551515, et l'ID client cust_10482 :
// 1. Create the identifyRequest object
const identifyRequest = {
userIdentities: {
email: 'j.smith@example.com',
// If you are passing a hashed email address, set it inside the 'email_sha256' field instead of 'email'.
email_sha256: 'SHA-256 hashed email address',
mobile_number: '+13125551515',
// If you are passing a hashed mobile number, set it inside the 'mobile_sha256' field instead of 'mobile_number'.
mobile_sha256: 'SHA-256 hashed mobile number',
customerid: 'cust_10482'
}
};
// 2. User attributes are set using identityCallback
const identityCallback = function(result) {
if (result.getUser()) {
result.getUser().setUserAttribute('firstname', 'Jane');
result.getUser().setUserAttribute('lastname', 'Smith');
}
};
// 3. Call one of the following methods that best matches the user's action:
mParticle.Identity.login(identifyRequest, identityCallback); // Call when the user logs in or creates an account
mParticle.Identity.identify(identifyRequest, identityCallback); // Call when you obtain the user's email mid-session, but not during a login
mParticle.Identity.logout({}); // Call when the user logs out
3. Set User Attributes#
Définissez progressivement les attributs utilisateur tout au long du parcours client complet, pas seulement lors du paiement. Plus vous définissez d'attributs, mieux Rokt peut résoudre l'identité du client et fournir des offres pertinentes.
Définissez de nouveaux attributs utilisateur dès qu'ils sont disponibles. Une collecte d'attributs plus précoce donne à Rokt plus de signaux pour améliorer la rapidité et la pertinence des placements rendus sur la page de confirmation.
// To retrieve the current user, call getCurrentUser.
const currentUser = mParticle.Identity.getCurrentUser();
// Once you have successfully set the current user to a const called `currentUser`, you can set user attributes with:
currentUser.setUserAttribute("firstname", "Jane");
currentUser.setUserAttribute("lastname", "Smith");
currentUser.setUserAttribute("mobile_number", "+13125551515");
currentUser.setUserAttribute("birthyear", 1990);
currentUser.setUserAttribute("gender", "F");
// Address attributes (collect the billing address at checkout)
currentUser.setUserAttribute("billingaddress1", "123 Main St");
currentUser.setUserAttribute("billingaddress2", "Apt 4B");
currentUser.setUserAttribute("billingcity", "Brooklyn");
currentUser.setUserAttribute("billingstate", "NY");
currentUser.setUserAttribute("billingzipcode", "11201");
currentUser.setUserAttribute("country", "US");
// Lifecycle and loyalty attributes
currentUser.setUserAttribute("customertype", "logged_in");
currentUser.setUserAttribute("newcustomer", false);
currentUser.setUserAttribute("loyaltytier", "gold");
currentUser.setUserAttribute("loyaltyid", "LOY-7781");
currentUser.setUserAttribute("customersegment", "vip");
// Marketing attribution
currentUser.setUserAttribute("utmsource", "google");
currentUser.setUserAttribute("utmmedium", "cpc");
currentUser.setUserAttribute("utmcampaign", "spring_sale");
// To set a list attribute, set the value of the attribute to an array of strings. For example:
currentUser.setUserAttribute("favorite_genres", ["documentary", "comedy", "romance", "drama"]);
// To remove a user attribute, call removeUserAttribute and pass in the attribute name. All user attributes share the same key space.
currentUser.removeUserAttribute("attribute_to_remove");
Attributs utilisateurLien direct vers Attributs utilisateur
Définissez autant d'attributs suivants que vous pouvez collecter.
Afficher tous les attributs utilisateur
| Champ | Type | Description |
|---|---|---|
firstname | string | Prénom du client. Utilisé pour la personnalisation. |
lastname | string | Nom de famille du client. Utilisé pour la personnalisation. |
mobile_number | string | Numéro de téléphone formaté comme 1112345678 ou +1 (222) 345-6789. Utilisé pour la résolution d'identité et la pertinence. |
birthyear | integer | Année de naissance du client (par exemple 1990). Champ de date de naissance préféré. Alternatifs : dob (yyyymmdd), age. Utilisé pour l'éligibilité et la pertinence. |
dob | string | Date de naissance, yyyymmdd. Alternative à birthyear. Utilisé pour l'éligibilité et la pertinence. |
age | integer | Âge du client. Alternative à birthyear. Utilisé pour l'éligibilité et la pertinence. |
gender | string | Genre du client. Par exemple, M, F, Male, ou Female. Utilisé pour la pertinence. |
title | string | Titre honorifique. Par exemple, Mr, Mrs, Ms. Utilisé pour la personnalisation. |
language | string | Code de langue ISO 639-1 associé à l'achat. Utilisé pour la pertinence. |
billingaddress1 | string | Adresse de rue (par exemple 123 Main St). Utilisé pour la résolution d'identité et la pertinence. |
billingaddress2 | string | Appartement/unité (par exemple Apt 4B). Utilisé pour la résolution d'identité. |
billingcity | string | Ville de facturation. Utilisé pour la pertinence. |
billingstate | string | État / province / région de facturation. Utilisé pour la pertinence et l'éligibilité. |
billingzipcode | string | Code postal complet (préférence américaine pour ZIP+4). Utilisé pour la résolution d'identité et la pertinence. |
country | string | Code de pays ISO 3166-1 alpha-2 (par exemple US, GB, AU). Utilisé pour l'éligibilité et la pertinence. |
newcustomer | boolean | Indique si c'est un premier acheteur (true / false). Utilisé pour la pertinence. |
customertype | string | Indique si l'utilisateur est authentifié (guest / logged_in). Utilisé pour la pertinence. |
loyaltytier | string | Niveau du programme de fidélité partenaire. Utilisé pour la pertinence et l'éligibilité. |
loyaltyid | string | ID de membre du programme de fidélité. Utilisé pour la résolution d'identité. |
predictedltv | decimal | Valeur totale à vie prédite, généralement produite par un modèle d'apprentissage automatique partenaire. Utilisé pour la pertinence. |
subscriptionstatus | string | État de l'abonnement si applicable (active, trial, churned, paused, none). Utilisé pour la pertinence et l'éligibilité. |
customersegment | string | Segmentation interne du partenaire (par exemple, vip, at_risk, new, reactivated). Utilisé pour la pertinence. |
acquisitionchannel | string | Comment le client a été initialement acquis. Utilisé pour la pertinence. |
utmsource | string | Source d'attribution marketing. Utilisé pour la pertinence. |
utmmedium | string | Moyen d'attribution marketing. Utilisé pour la pertinence. |
utmcampaign | string | Campagne d'attribution marketing. Utilisé pour la pertinence. |
utmcontent | string | Variante de contenu d'attribution marketing. Utilisé pour la pertinence. |
utmterm | string | Terme / mot-clé d'attribution marketing. Utilisé pour la pertinence. |
referrer | string | URL de référence — signal d'intention. Utilisé pour la pertinence. |
Tous les attributs utilisateur (y compris les attributs de liste et les balises) doivent avoir des noms distincts.
4. Log Events#
Enregistrez les vues de page, les événements commerciaux et les événements personnalisés pour que Rokt puisse comprendre où se trouve chaque client dans son parcours.
Les vues de page indiquent à Rokt sur quelle page se trouve le client. Enveloppez chaque appel dans mParticle.ready() pour qu'il se déclenche après l'initialisation du SDK+. Sur les pages transactionnelles (PLP, PDP, panier, paiement, confirmation), déclenchez également l'événement commercial correspondant depuis Commerce events pour envoyer les détails au niveau du produit et de la commande.
Enregistrez ceci lorsque le client arrive sur la page d'accueil de votre site, y compris les racines de chemin vides comme /.
| Field | Type | Description |
|---|---|---|
screenname | string | Last segment of the URL path (e.g. /products/shoes → shoes). Defaults to home if the path is empty. |
pagetype | string | Type of page being viewed: home, PLP, PDP, cart, checkout, confirmation. |
url | string | Full URL of the current page. |
title | string | Page title (from document.title). |
sitesection | string | Top-level site section (e.g. mens, womens, support). |
referringpage | string | Referring URL captured from document.referrer. |
window.mParticle.ready(function() {
mParticle.logPageView("page_view", {
screenname: "home",
pagetype: "home",
url: window.location.toString(),
title: document.title,
sitesection: "root",
referringpage: document.referrer
});
});
Enregistrez ceci sur une page de liste de produits (PLP) : une page de catégorie, de collection ou de résultats de recherche où le client parcourt plusieurs produits à la fois.
| Field | Type | Description |
|---|---|---|
screenname | string | Last segment of the URL path (e.g. /products/shoes → shoes). Defaults to home if the path is empty. |
pagetype | string | Type of page being viewed: home, PLP, PDP, cart, checkout, confirmation. |
url | string | Full URL of the current page. |
title | string | Page title (from document.title). |
sitesection | string | Top-level site section (e.g. mens, womens, support). |
referringpage | string | Referring URL captured from document.referrer. |
window.mParticle.ready(function() {
mParticle.logPageView("page_view", {
screenname: "shoes",
pagetype: "PLP",
url: window.location.toString(),
title: document.title,
sitesection: "mens",
referringpage: document.referrer
});
});
Enregistrez ceci sur une page de détail de produit (PDP) lorsque le client ouvre un seul produit pour voir ses détails, son prix et ses options.
| Field | Type | Description |
|---|---|---|
screenname | string | Last segment of the URL path (e.g. /products/shoes → shoes). Defaults to home if the path is empty. |
pagetype | string | Type of page being viewed: home, PLP, PDP, cart, checkout, confirmation. |
url | string | Full URL of the current page. |
title | string | Page title (from document.title). |
sitesection | string | Top-level site section (e.g. mens, womens, support). |
referringpage | string | Referring URL captured from document.referrer. |
window.mParticle.ready(function() {
mParticle.logPageView("page_view", {
screenname: "trail-runner-v3",
pagetype: "PDP",
url: window.location.toString(),
title: document.title,
sitesection: "mens",
referringpage: document.referrer
});
});
Enregistrez ceci lorsque le client ouvre la page du panier pour examiner les articles qu'il a ajoutés.
| Field | Type | Description |
|---|---|---|
screenname | string | Last segment of the URL path (e.g. /products/shoes → shoes). Defaults to home if the path is empty. |
pagetype | string | Type of page being viewed: home, PLP, PDP, cart, checkout, confirmation. |
url | string | Full URL of the current page. |
title | string | Page title (from document.title). |
sitesection | string | Top-level site section (e.g. mens, womens, support). |
referringpage | string | Referring URL captured from document.referrer. |
window.mParticle.ready(function() {
mParticle.logPageView("page_view", {
screenname: "cart",
pagetype: "cart",
url: window.location.toString(),
title: document.title,
sitesection: "checkout",
referringpage: document.referrer
});
});
Enregistrez ceci lorsque le client entre dans le flux de paiement pour finaliser sa commande, en saisissant les détails de livraison, de facturation ou de paiement.
| Field | Type | Description |
|---|---|---|
screenname | string | Last segment of the URL path (e.g. /products/shoes → shoes). Defaults to home if the path is empty. |
pagetype | string | Type of page being viewed: home, PLP, PDP, cart, checkout, confirmation. |
url | string | Full URL of the current page. |
title | string | Page title (from document.title). |
sitesection | string | Top-level site section (e.g. mens, womens, support). |
referringpage | string | Referring URL captured from document.referrer. |
window.mParticle.ready(function() {
mParticle.logPageView("page_view", {
screenname: "checkout",
pagetype: "checkout",
url: window.location.toString(),
title: document.title,
sitesection: "checkout",
referringpage: document.referrer
});
});
Enregistrez ceci sur la page de confirmation de commande après un achat réussi. C'est la principale surface où Rokt rend les offres post-transaction.
| Field | Type | Description |
|---|---|---|
screenname | string | Last segment of the URL path (e.g. /products/shoes → shoes). Defaults to home if the path is empty. |
pagetype | string | Type of page being viewed: home, PLP, PDP, cart, checkout, confirmation. |
url | string | Full URL of the current page. |
title | string | Page title (from document.title). |
sitesection | string | Top-level site section (e.g. mens, womens, support). |
referringpage | string | Referring URL captured from document.referrer. |
window.mParticle.ready(function() {
mParticle.logPageView("page_view", {
screenname: "order-10482",
pagetype: "confirmation",
url: window.location.toString(),
title: document.title,
sitesection: "checkout",
referringpage: document.referrer
});
});
Les événements commerciaux transportent des détails au niveau du produit pour chaque étape du parcours client. Déclenchez un événement commercial distinct pour chaque action produit que le client effectue.
Les attributs d'événements commerciaux utilisent le flatcase (par exemple, cartitems, productsku, itemprice). La méthode createProduct et l'objet transactionAttributes utilisent le PascalCase (par exemple, Name, SKU, Id). Les deux conventions apparaissent dans les sous-sections ci-dessous.
Le suivi d'un événement commercial se déroule en trois phases :
1Define the product#
Construisez un produit avec mParticle.eCommerce.createProduct. Les arguments positionnels couvrent le nom, le SKU, le prix, la quantité, la variante, la catégorie, la marque et la position.
const product = mParticle.eCommerce.createProduct(
'Double Room - Econ Rate', // Name
'econ-1', // SKU
100.00, // Price
4, // Quantity
'standard', // Variant
'room', // Category
'lodge-o-rama' // Brand
);
2Summarize the transaction#
Construisez un objet transactionAttributes pour les événements Purchase, Checkout et CheckoutOption. Utilisez des clés en PascalCase (Id, Revenue, Tax, Shipping, Coupon). Les coupons au niveau de la commande appartiennent ici, pas sur les produits individuels.
const transactionAttributes = {
Id: 'ORDER-12345',
Revenue: 149.99,
Tax: 12.50,
Shipping: 5.99,
Coupon: 'SUMMER20'
};
3Log the commerce event#
Appelez mParticle.eCommerce.logProductAction, en passant le type d'action du produit, votre ou vos produits, les attributs au niveau de l'événement, les indicateurs personnalisés optionnels, et (le cas échéant) le transactionAttributes. Pour les impressions, appelez mParticle.eCommerce.logImpression à la place. Choisissez l'action client que vous souhaitez enregistrer :
Enregistrez une vue de page de liste de produits (ou de page de catégorie) comme une impression de produit. Passez chaque produit visible en un seul appel, et définissez le Name de l'impression sur le nom de la liste / catégorie (Rokt utilise cela comme listname).
| Champ | Type | Requis | Description |
|---|---|---|---|
Name | string | oui | Nom de la liste ou de la catégorie (par exemple, "Mens Running Shoes"). Devient listname. |
Products | array | oui | Objets produits de createProduct. Définissez Position pour le rang 1-indexé de chaque article. |
currency | string | oui | Code de devise ISO 4217 (passé comme customAttribute au niveau de l'événement). |
// Position (8th positional arg) is the 1-indexed rank in the list.
const product = mParticle.eCommerce.createProduct(
'Trail Runner v3', // Name
'SKU-001', // SKU
129.95, // Price
null, null, // Quantity, Variant
'Shoes', // Category
'BrandX', // Brand
1 // Position in list
);
mParticle.eCommerce.logImpression(
{ Name: 'Mens Running Shoes', Product: [product] }, // Name -> listname
{ currency: 'USD' } // event-level attrs
);
Enregistrez quand un client ouvre une page de détail de produit.
| Champ | Type | Requis | Description |
|---|---|---|---|
productsku | string | oui | SKU du produit. |
productname | string | oui | Nom d'affichage. |
itemprice | decimal | oui | Prix unitaire au moment de la vue. |
currency | string | oui | Code de devise ISO 4217. |
listname | string | non | Définir si l'utilisateur est arrivé d'un PLP. |
const product = mParticle.eCommerce.createProduct(
'Trail Runner v3', // Name
'SKU-001', // SKU
129.95, // Price
1 // Quantity
);
mParticle.eCommerce.logProductAction(
mParticle.ProductActionType.ViewDetail,
[product],
{ currency: 'USD', listname: 'PLP-Running' }, // event-level attrs
null, // custom flags
null // no transactionAttributes
);
Enregistrez quand un client ajoute un article au panier.
| Champ | Type | Requis | Description |
|---|---|---|---|
productsku | string | oui | SKU du produit. |
quantity | integer | oui | Unités ajoutées. |
itemprice | decimal | oui | Prix unitaire au moment de l'ajout. |
currency | string | oui | Code de devise ISO 4217. |
couponCode | string | non | Coupon au niveau de la commande, si appliqué au moment de l'ajout. |
const product = mParticle.eCommerce.createProduct(
'Trail Runner v3', // Name
'SKU-001', // SKU
129.95, // Price
1 // Quantity
);
mParticle.eCommerce.logProductAction(
mParticle.ProductActionType.AddToCart,
[product],
{ currency: 'USD' },
null,
null
);
Enregistrez quand un client retire un article du panier.
| Champ | Type | Requis | Description |
|---|---|---|---|
productsku | string | oui | SKU du produit. |
quantity | integer | oui | Unités retirées. |
currency | string | oui | Code de devise ISO 4217. |
const product = mParticle.eCommerce.createProduct(
'Trail Runner v3', // Name
'SKU-001', // SKU
129.95, // Price
1 // Quantity removed
);
mParticle.eCommerce.logProductAction(
mParticle.ProductActionType.RemoveFromCart,
[product],
{ currency: 'USD' },
null,
null
);
Enregistrez lorsque le client arrive sur la page du panier. Étant donné que les vues de la page du panier n'ont pas de ProductActionType natif, utilisez mParticle.logEvent avec le nom de l'événement "view_cart" et EventType.Other. Passez le contenu complet du panier en tant qu'attributs de l'événement.
| Champ | Type | Requis | Description |
|---|---|---|---|
event_name | string | oui | Toujours "view_cart". |
event_type | EventType | oui | Utilisez mParticle.EventType.Other. |
cartitems | array | oui | Contenu complet du panier sous forme de tableau JSON réel (ne pas convertir en chaîne). |
cartitemcount | integer | oui | Nombre de lignes du panier. |
totalprice | decimal | oui | Total du panier. |
currency | string | oui | Code de devise ISO 4217. |
couponcode | string | non | Promotion au niveau de la commande, si appliquée. |
Articles du panierLien direct vers Articles du panier
Chaque entrée dans le tableau cartitems a la structure suivante :
| Field | Type | Description |
|---|---|---|
cartitemid | string | Stable partner-side cart-line identifier. Usually equals productsku when there is one line per SKU; use a unique value if you allow multiple lines for the same SKU (e.g. gift-wrap variants). |
productsku | string | Product SKU / stock identifier. |
productname | string | Product display name. |
productcategory | string | Product category / taxonomy leaf. |
productbrand | string | Product brand. |
productvariant | string | Variant identifier (size, color, etc.). |
itemprice | decimal | Per-unit price at event time. |
unitprice | decimal | Per-unit list price pre-discount. Omit if equal to itemprice. |
quantity | integer | Units in this line. |
currency | string | ISO 4217 code. Omit if matches the top-level currency. |
couponcode | string | Coupon applied to this line (if any). Order-level promos belong in transactionAttributes.Coupon. |
productposition | integer | 1-indexed rank of the product within a list or search results. |
Ne pas envoyer les articles du panier sous forme de chaînes séparées par des virgules ou sous forme de blob JSON sérialisé. Envoyez un véritable tableau JSON pour que les champs restent typés.
mParticle.logEvent(
"view_cart",
mParticle.EventType.Other,
{
cartitemcount: 3,
totalprice: 169.85,
currency: "USD",
couponcode: "SUMMER20",
cartitems: [
{ cartitemid: "SKU-001", productsku: "SKU-001", productname: "Trail Runner v3", itemprice: 129.95, quantity: 1 },
{ cartitemid: "SKU-002", productsku: "SKU-002", productname: "Cushion Insole", itemprice: 19.95, quantity: 2 }
]
}
);
Enregistrez lorsque le client entre dans le processus de paiement. Envoyez le tableau complet cartitems avec les totaux au niveau du panier.
| Champ | Type | Requis | Description |
|---|---|---|---|
cartitems | array | oui | Contenu complet du panier. |
totalprice | decimal | oui | Total du panier avant taxes/livraison. |
cartitemcount | integer | oui | Nombre de lignes du panier. |
currency | string | oui | Code de devise ISO 4217. |
couponCode | string | non | Promotion au niveau de la commande, si appliquée. |
const product1 = mParticle.eCommerce.createProduct('Trail Runner v3', 'SKU-001', 129.95, 1);
const product2 = mParticle.eCommerce.createProduct('Cushion Insole', 'SKU-002', 19.95, 2);
mParticle.eCommerce.logProductAction(
mParticle.ProductActionType.Checkout,
[product1, product2],
{
currency: 'USD',
cartitemcount: 3,
totalprice: 169.85,
couponCode: 'SUMMER20'
},
null,
null
);
Enregistrez lorsque le client termine l'étape de livraison. Passez option: 'shipping' avec les sélections de livraison.
| Champ | Type | Requis | Description |
|---|---|---|---|
cartitems | array | oui | Contenu complet du panier. |
option | string | oui | Toujours "shipping" pour cet événement. |
shippingmethod | string | oui | standard / express / next_day. |
zipcode | string | oui | Code postal de livraison. |
country | string | oui | Code de pays ISO 3166-1 alpha-2. |
totalprice | decimal | oui | Total du panier. |
currency | string | oui | Code de devise ISO 4217. |
const product1 = mParticle.eCommerce.createProduct('Trail Runner v3', 'SKU-001', 129.95, 1);
const product2 = mParticle.eCommerce.createProduct('Cushion Insole', 'SKU-002', 19.95, 2);
mParticle.eCommerce.logProductAction(
mParticle.ProductActionType.CheckoutOption,
[product1, product2],
{
option: 'shipping',
shippingmethod: 'express',
zipcode: '94103',
country: 'US',
totalprice: 169.85,
currency: 'USD'
},
null,
null
);
Enregistrez lorsque le client termine l'étape de paiement. Passez option: 'payment' avec le mode de paiement sélectionné.
| Champ | Type | Requis | Description |
|---|---|---|---|
cartitems | array | oui | Contenu complet du panier. |
option | string | oui | Toujours "payment" pour cet événement. |
paymenttype | string | oui | credit_card / paypal / apple_pay / etc. |
payment_method | string | non | Méthode spécifique lorsque pertinent (par exemple, marque de carte). |
paymentServiceProvider | string | non | Identifiant PSP (par exemple, stripe). Doit être en camelCase. |
ccbin | string | non | Les 6-8 premiers chiffres de la carte, si une carte a été utilisée. |
totalprice | decimal | oui | Total du panier. |
currency | string | oui | Code de devise ISO 4217. |
const product1 = mParticle.eCommerce.createProduct('Trail Runner v3', 'SKU-001', 129.95, 1);
const product2 = mParticle.eCommerce.createProduct('Cushion Insole', 'SKU-002', 19.95, 2);
mParticle.eCommerce.logProductAction(
mParticle.ProductActionType.CheckoutOption,
[product1, product2],
{
option: 'payment',
paymenttype: 'credit_card',
payment_method: 'visa',
paymentServiceProvider: 'stripe',
ccbin: '424242',
totalprice: 169.85,
currency: 'USD'
},
null,
null
);
Enregistrez lorsqu'une commande est confirmée. Envoyez le tableau complet cartitems plus un objet transactionAttributes résumant la commande.
| Champ | Type | Requis | Description |
|---|---|---|---|
cartitems | array | oui | Contenu complet du panier au moment de la commande. |
transactionId | string | oui | Identifiant de commande / transaction. |
totalprice | decimal | oui | Total de la commande (Revenu). |
tax | decimal | oui | Taxe totale sur la commande. |
shipping | decimal | oui | Coût d'expédition. |
currency | string | oui | Code de devise ISO 4217. |
couponCode | string | non | Promotion au niveau de la commande, si appliquée. |
cartitemcount | integer | non | Nombre de lignes de panier. |
Les coupons au niveau de la commande appartiennent à transactionAttributes.CouponCode. Lorsqu'une seule commande comporte plusieurs SKU avec différentes promotions, attachez des coupons par ligne à l'objet produit en tant qu'attribut personnalisé nommé couponcode.
const product1 = mParticle.eCommerce.createProduct('Trail Runner v3', 'SKU-001', 129.95, 1);
const product2 = mParticle.eCommerce.createProduct('Cushion Insole', 'SKU-002', 19.95, 2);
const transactionAttributes = {
Id: 'ORDER-10482', // transactionId
Revenue: 169.85, // totalprice (order-level)
Tax: 14.20, // tax
Shipping: 5.99, // shipping
CouponCode: 'SUMMER20' // couponCode (order-level promo)
};
mParticle.eCommerce.logProductAction(
mParticle.ProductActionType.Purchase,
[product1, product2],
{ currency: 'USD', cartitemcount: 3 },
null,
transactionAttributes
);
Enregistrez lorsqu'une commande (ou une ligne à l'intérieur) est remboursée. Envoyez uniquement les produits remboursés, ainsi qu'un objet transactionAttributes faisant référence à la commande originale.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
productsku | string | oui | SKU de la ou des lignes remboursées. |
quantity | integer | oui | Unités remboursées. |
transactionId | string | oui | ID de la commande originale remboursée. |
totalprice | decimal | oui | Montant remboursé. |
currency | string | oui | Code de devise ISO 4217. |
const refundedProduct = mParticle.eCommerce.createProduct(
'Trail Runner v3', // Name
'SKU-001', // SKU
129.95, // Price
1 // Quantity refunded
);
const transactionAttributes = {
Id: 'ORDER-10482', // transactionId (original order)
Revenue: 129.95 // totalprice (refunded amount)
};
mParticle.eCommerce.logProductAction(
mParticle.ProductActionType.Refund,
[refundedProduct],
{ currency: 'USD' },
null,
transactionAttributes
);
Enregistrez lorsque le client effectue une recherche sur le site. Étant donné que les recherches sur le site n'ont pas de ProductActionType natif, utilisez mParticle.logEvent avec le nom de l'événement "search" et EventType.Search. Incluez la chaîne de recherche et le nombre de résultats retournés.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
event_name | string | oui | Toujours "search". |
event_type | EventType | oui | Utilisez mParticle.EventType.Search. |
searchstring | string | oui | Ce que le client a tapé dans la boîte de recherche. |
resultcount | integer | oui | Nombre de résultats retournés. |
mParticle.logEvent(
"search",
mParticle.EventType.Search,
{
searchstring: "blue running shoes",
resultcount: 24
}
);
Suivez tout autre élément avec mParticle.logEvent. Passez un nom d'événement, un EventType qui le catégorise, et un objet d'attributs libre décrivant ce qui s'est passé.
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
event_name | string | oui | Un nom identifiant l'événement (par exemple, "video_play", "newsletter_subscribed"). |
event_type | EventType | oui | Catégorise l'événement. Supporté : Navigation, Location, Search, Transaction, UserContent, UserPreference, Social, Other. Par défaut à Unknown si omis. |
attributes | object | non | Paires clé-valeur décrivant l'événement. Toutes les clés et valeurs de chaîne sont supportées. |
Un événement personnalisé que Rokt recommande de déclencher est Prêt à Commander — enregistrez cela au point du processus de commande où le client a saisi ses détails de paiement et est sur le point de confirmer la commande, mais avant qu'il ne clique sur Passer la Commande ou Acheter Maintenant. Cela aide Rokt à optimiser le processus de sélection afin que les offres soient affichées aussi rapidement que possible sur la page suivante.
Déclenchez l'événement une fois que toutes les conditions suivantes sont remplies :
- Le panier est finalisé (articles et quantités confirmés).
- Une méthode d'expédition a été sélectionnée.
- Une méthode de paiement a été saisie ou sélectionnée.
- L'utilisateur est sur l'écran de révision/paiement final, avant la soumission de la commande.
Incluez tous les attributs finaux qui n'étaient pas disponibles plus tôt dans la session (par exemple, payment_method_type, qui est généralement connu uniquement à ce stade).
window.mParticle.ready(function() {
mParticle.logEvent(
'Ready to Checkout',
mParticle.EventType.Transaction,
{
checkout_ready: 'true',
payment_method_type: 'credit_card',
shipping_address_verified: 'true',
shippingmethod: 'express',
cartitemcount: '3',
cart_total: '430.00',
currency: 'USD',
},
);
});
5. Show a Placement#
Sur chaque page de paiement et de confirmation où vous souhaitez que Rokt affiche du contenu, appelez selectPlacements avec l'un des identifiants de page pris en charge et les attributs client + transaction. Rokt utilise ces signaux pour choisir et afficher l'offre la plus pertinente.
Les attributs passés dans selectPlacements remplacent toutes les valeurs antérieures définies via setUserAttribute. Fournissez toujours la valeur la plus récente.
Identifiants de page
stg.rokt.conf: A confirmation page in a staging (or testing) environment.prod.rokt.conf: A confirmation page in a production environment.stg.rokt.payments: A payments page in a staging (or testing) environment.prod.rokt.payments: A payments page in a production environment.
Passez le même ensemble d'attributs, quel que soit le positionnement. La référence complète des attributs est ci-dessous.
Afficher tous les attributs de placement
| Field | Type | Description |
|---|---|---|
email | string | Customer email address (unhashed). Used for identity resolution and Shoppable Ads order confirmation. |
firstname | string | Customer first name. Used for personalization and Shoppable Ads order fulfillment. |
lastname | string | Customer last name. Used for personalization and Shoppable Ads order fulfillment. |
mobile_number | string | Customer mobile number (E.164 format, e.g. +13125551515). Used for identity resolution and Shoppable Ads. |
confirmationref | string | Order / confirmation reference number. Used for relevance, deduplication, and Shoppable Ads order reconciliation. |
currency | string | Transaction currency (ISO 4217, e.g. USD, GBP, AUD, JPY). Used for relevance and Shoppable Ads. |
country | string | ISO 3166-1 alpha-2 country code. Used for eligibility and relevance. |
language | string | Customer's preferred language (ISO 639-1, e.g. en, de, fr). Used for relevance. |
totalprice | decimal | Total cart value including tax and shipping. Used for relevance. |
amount | decimal | Cart subtotal before tax and shipping. Distinct from totalprice. Required for Pay+ on the payments page; also used by Shoppable Ads. |
cartItems | array | Structured array of cart-line objects. See Cart items reference under Commerce Events. Used for relevance. |
couponcode | string | Promo code applied, if any. Used for relevance. |
newcustomer | boolean | Whether this is a first-time buyer. Used for relevance. |
customertype | string | Whether the user is authenticated (guest / logged_in). Used for relevance. |
value | decimal | Customer cumulative purchase value. Used for relevance. |
subscriptionstatus | string | Subscription state if applicable (active, trial, churned, paused, none). Used for relevance and eligibility. |
customersegment | string | Partner internal segmentation (vip, at_risk, new, reactivated). Used for relevance. |
paymenttype | string | Payment method selected (credit_card, paypal, apple_pay, gift_card). Used for Pay+ eligibility and Shoppable Ads payment method prioritization. |
paymentServiceProvider | string | Comma-separated list of payment methods accepted on the page (e.g. "cardpayment,paypal"). Accepted values: applepay, googlepay, paypal, venmo, affirm, afterpay, klarna, alipay, amazonpay, cardpayment, rakutenpay. Must be camelCase. Used for Pay+ eligibility. |
ccbin | string | Credit card BIN (6-8 digits). Used for relevance. |
billingaddress1 | string | Billing street address. Used for identity resolution and relevance. |
billingaddress2 | string | Billing apartment/unit. Used for identity resolution. |
billingcity | string | Billing city. Used for relevance. |
billingstate | string | Billing state / region. Used for relevance. |
billingzipcode | string | Billing ZIP / postcode. Used for identity resolution, relevance, and Shoppable Ads. |
billingname | string | Full cardholder name on the billing address. Used for identity resolution and payment validation. |
shippingmethod | string | Shipping method selected (standard, express, next_day). Used for relevance. |
shippingname | string | Full recipient name on the shipping address. Used for Shoppable Ads order fulfillment. |
shippingaddress1 | string | Shipping street address. Used for relevance and Shoppable Ads order fulfillment. |
shippingcity | string | Shipping city. Used for relevance and Shoppable Ads order fulfillment. |
shippingstate | string | Shipping state / region. Used for relevance and Shoppable Ads order fulfillment. |
shippingzipcode | string | Shipping ZIP / postcode. Used for relevance and Shoppable Ads order fulfillment. |
shippingcountry | string | Shipping country (ISO 3166-1 alpha-2). Used for relevance and Shoppable Ads order fulfillment. |
partnerpaymentreference | string | Non-guessable identifier used to look up the customer's vaulted payment method. Required for Shoppable Ads card forwarding; if absent, card forwarding is unavailable. |
last4digits | string | Last 4 digits of the card used on the primary transaction. Displayed to the customer for confirmation during Shoppable Ads. |
plcc | string | "yes" or "no" — whether the customer has a private-label credit card with the partner. Used for Pay+ relevance. |
discountamount | decimal | Order-level discount applied (e.g. 10.00). Used for Pay+ relevance. |
prescreen | string | "yes" or "no" — whether the customer has pre-qualified for a credit offer. Used for Pay+ relevance. |
Ne pas envoyer les articles du panier sous forme de chaînes séparées par des virgules ou sous forme de blob JSON sérialisé. Envoyez un vrai tableau JSON pour que les champs restent typés. Pour la référence complète des champs d'article de panier, voir la section Articles de panier sous Événements de commerce.
Les placements en superposition s'affichent au-dessus de votre page de confirmation dans un conteneur géré par Rokt, ne nécessitant aucune modification du DOM de votre page. Utilisé pour les annonces de remerciement standard et les annonces achetables.
Pour insérer un placement en superposition, appelez selectPlacements une fois que la page de confirmation est chargée :
window.mParticle.ready(async function () {
const selection = await window.mParticle.Rokt.selectPlacements({
identifier: "prod.rokt.conf",
attributes: {
// Identity
email: "j.smith@example.com",
firstname: "Jenny",
lastname: "Smith",
mobile_number: "+13125551515",
// Transaction
confirmationref: "ORDER-10482",
currency: "USD",
country: "US",
language: "en",
totalprice: 149.99,
couponcode: "SUMMER20",
// Customer context
newcustomer: false,
customertype: "logged_in",
value: 2340.00,
subscriptionstatus: "active",
customersegment: "vip",
// Payment (include paymenttype + paymentServiceProvider for Pay+)
paymenttype: "credit_card",
paymentServiceProvider: "cardpayment",
ccbin: "411112",
// Cart contents — see the Placement Attributes reference for the full
// attribute set and the Cart items reference for the per-line shape.
cartItems: [
{ cartitemid: "SKU-001", productsku: "SKU-001", productname: "Trail Runner v3", itemprice: 129.95, quantity: 1 }
]
}
});
});
Les placements intégrés s'affichent en ligne à une position fixe que vous contrôlez sur la page (par exemple, au-dessus des options de paiement sur une page de panier). Les annonces de remerciement et Pay+ utilisent des placements intégrés ; Pay+ doit utiliser des placements intégrés.
1Add a placeholder div#
Ajoutez un <div> avec l'ID du conteneur fourni par votre gestionnaire de compte Rokt à l'endroit où vous souhaitez que le placement s'affiche. Coordonnez-vous avec votre gestionnaire de compte Rokt pour choisir le nom du conteneur.
<div id="rokt-{container-name}"></div>
2Call selectPlacements#
Appelez selectPlacements avec l'identifiant de page correspondant. Pour les navigations SPA, fermez le placement lorsque le client quitte la page pour éviter qu'il ne persiste lors de la navigation arrière.
window.mParticle.ready(async function () {
const selection = await window.mParticle.Rokt.selectPlacements({
identifier: "prod.rokt.payments",
attributes: {
// Identity
email: "j.smith@example.com",
firstname: "Jenny",
lastname: "Smith",
mobile_number: "+13125551515",
// Transaction
currency: "USD",
country: "US",
language: "en",
totalprice: 149.99,
amount: 129.95,
couponcode: "SUMMER20",
// Customer context
newcustomer: false,
customertype: "logged_in",
value: 2340.00,
subscriptionstatus: "active",
customersegment: "vip",
// Payment (paymenttype + paymentServiceProvider required for Pay+)
paymenttype: "credit_card",
paymentServiceProvider: "cardpayment",
ccbin: "411112",
// Cart contents — see the Placement Attributes reference for the full
// attribute set and the Cart items reference for the per-line shape.
cartItems: [
{ cartitemid: "SKU-001", productsku: "SKU-001", productname: "Trail Runner v3", itemprice: 129.95, quantity: 1 }
]
}
});
// For SPA navigations, close the placement when the customer leaves the page.
if (selection) {
selection.close();
}
});
Si vous utilisez Pay+, vous devez fermer votre placement après que l'utilisateur a navigué ailleurs pour éviter qu'il ne persiste lors de la navigation arrière.
Pay+ exige que votre appel selectPlacements de page de confirmation existante passe déjà paymenttype avec le reste des attributs de placement ci-dessus. Sans paymenttype sur la page de confirmation, Rokt ne peut pas attribuer correctement la part de portefeuille. Validez votre intégration de page de confirmation avec votre gestionnaire de compte Rokt avant d'activer Pay+ en production.
Les placements interstitiels s'affichent entre les pages de paiement et de confirmation, permettant aux clients d'acheter des produits supplémentaires. Utilisé par les annonces achetables.
1Wrap your page content#
Enveloppez le contenu de votre page de confirmation dans la balise <rokt-thank-you>. Rokt supprime le contenu enveloppé lorsqu'une offre est disponible et affiche l'expérience plein écran à sa place. Si aucune offre n'est éligible, le contenu enveloppé s'affiche normalement.
<body>
<!-- Your header -->
<rokt-thank-you id="rokt-thank-you">
<!-- Your confirmation page content -->
</rokt-thank-you>
<!-- Your footer -->
</body>
2Call selectPlacements#
Appelez selectPlacements avec l'identifiant de la page de confirmation et incluez tous les attributs de placement disponibles pour que Rokt puisse évaluer l'éligibilité et afficher l'offre.
window.mParticle.ready(async function () {
await window.mParticle.Rokt.selectPlacements({
identifier: "prod.rokt.conf", // use stg.rokt.conf in test environments
attributes: {
// Identity
email: "j.smith@example.com",
firstname: "Jenny",
lastname: "Smith",
mobile_number: "+13125551515",
// Transaction
confirmationref: "ORDER-10482",
currency: "USD",
country: "US",
language: "en",
totalprice: 149.99,
couponcode: "SUMMER20",
// Customer context
newcustomer: false,
customertype: "logged_in",
value: 2340.00,
subscriptionstatus: "active",
customersegment: "vip",
// Payment
paymenttype: "credit_card",
paymentServiceProvider: "cardpayment",
ccbin: "411112",
// Cart contents — see the Placement Attributes reference for the full
// attribute set and the Cart items reference for the per-line shape.
cartItems: [
{ cartitemid: "SKU-001", productsku: "SKU-001", productname: "Trail Runner v3", itemprice: 129.95, quantity: 1 }
]
}
});
});
Le wrapper <rokt-thank-you> émet également des événements de cycle de vie auxquels vous pouvez vous abonner pour un comportement personnalisé (couvert dans une étape future).
Si votre site intègre Rokt dans une iframe cross-origin, ajoutez allow="payment" à l'élément iframe pour que les API de paiement fonctionnent à l'intérieur de l'expérience Interstitial.
Attributs <rokt-thank-you>
L'élément <rokt-thank-you> accepte les attributs optionnels suivants pour personnaliser le comportement de chargement :
| Attribut | Description | Valeur par défaut |
|---|---|---|
loader | URL optionnelle vers un GIF indicateur de chargement affiché pendant que Rokt sélectionne un emplacement pour la page de confirmation. Fournissez votre propre ressource pour remplacer la valeur par défaut. | Indicateur de chargement Rokt |
fallback-timeout | Durée en millisecondes avant que la sélection de l'emplacement n'expire et que la page de confirmation native ne s'affiche. | 5000 |
partner-opt-in | Forcer l'activation de l'expérience Interstitial. Utilisation : <rokt-thank-you partner-opt-in>. | — |
partner-opt-out | Forcer le saut de l'expérience Interstitial. Utilisation : <rokt-thank-you partner-opt-out>. | — |
6. Subscribe to Placement Events#
Le SDK+ émet des événements tout au long du cycle de vie de l'emplacement. Abonnez-vous à ces événements pour exécuter une logique personnalisée lorsqu'un emplacement est prêt, lorsqu'un client interagit avec un emplacement, ou lorsque l'enveloppe de placement interstitial passe d'un état à un autre.
En vous abonnant à un événement de placement, vous pouvez recevoir des notifications déclenchées lorsqu'un emplacement est prêt ou lorsqu'un client interagit avec une offre.
window.mParticle.ready(async function () {
const selection = await window.mParticle.Rokt.selectPlacements({
// add attributes
});
// Listen for when the placement becomes interactive/ready to display
selection.on('PLACEMENT_INTERACTIVE').subscribe(() => {
// Logic to run after Placement has become interactive
});
// Listen for when user engages positively or negatively with an offer
selection.on('OFFER_ENGAGEMENT').subscribe(function () {
// Logic to run after offer is engaged with
});
});
L'élément <rokt-thank-you> utilisé par le format interstitial émet des événements de cycle de vie auxquels vous pouvez vous abonner pour un comportement personnalisé. Enregistrez les écouteurs avec window.mParticle.Rokt.onShoppableAdsReady() — ce rappel est déclenché dès que l'élément est prêt, de sorte que les écouteurs enregistrés avant mParticle.ready() ne sont jamais manqués.
Afficher les événements de cycle de vie rokt-thank-you
| Événement | Émis lorsque |
|---|---|
THANK_YOU_ELEMENT_LOADING_INITIATED | L'élément <rokt-thank-you> entre dans son état de chargement. |
THANK_YOU_ELEMENT_COMPLETE | L'élément <rokt-thank-you> rend le contenu de confirmation du partenaire. |
// Register listeners before mParticle.ready() so events are never missed.
window.mParticle.Rokt.onShoppableAdsReady(() => {
window.RoktThankYouElement.on('THANK_YOU_ELEMENT_LOADING_INITIATED').subscribe(() => {
// Triggered when the Thank You element enters its loading state
});
window.RoktThankYouElement.on('THANK_YOU_ELEMENT_COMPLETE').subscribe(() => {
// Triggered when the Thank You element renders the partner confirmation
});
});
window.mParticle.ready(() => {
// Standard mParticle initialization continues here
});
7. Appendix#
Référence pour fermer les emplacements dans les applications monopage, activer les extensions pour les fonctionnalités avancées, et configurer le comportement optionnel du lanceur.
Fermer un emplacementLien direct vers Fermer un emplacement
Dans les applications monopage, appelez .close() sur l'objet d'emplacement après que l'utilisateur ait navigué ailleurs pour que l'emplacement ne persiste pas lors de la navigation arrière.
// Closes the placement called 'selection'
selection.close();
Si vous utilisez Pay+, vous devez fermer votre emplacement après que l'utilisateur ait navigué ailleurs.
Fonctionnalité supplémentaire via des extensionsLien direct vers Fonctionnalité supplémentaire via des extensions
Certaines fonctionnalités nécessitent des extensions. Activez-les en appelant mParticle.Rokt.use() avant selectPlacements(). Par exemple, pour afficher des emplacements de vente incitative sur une page de remerciement, activez d'abord l'extension ThankYouPageJourney :
window.mParticle.ready(async function() {
// Enable the necessary extension prior to selecting placements
await window.mParticle.Rokt.use("ThankYouPageJourney");
const selection = await mParticle.Rokt.selectPlacements({
identifier: "yourPageIdentifier",
attributes: {
"email": "j.smith@example.com"
// Any additional user attributes you want to pass to Rokt
},
});
})
Passage d'options supplémentaires pour le lanceur d'intégrationLien direct vers Passage d'options supplémentaires pour le lanceur d'intégration
Configurez le comportement optionnel en définissant window.mParticle.config.launcherOptions dans le script d'initialisation :
// Include this as part of the initialization script in step 1 above
window.mParticle.config.launcherOptions = {
noFunctional: true,
noTargeting: true,
// See all optional launcher options that can be set below
};
Gérer les préférences de cookies des clientsLien direct vers Gérer les préférences de cookies des clients
Utilisez ces options pour respecter les préférences de désactivation des clients en désactivant les cookies fonctionnels ou de ciblage.
| Paramètre | Type | Défaut | Description |
|---|---|---|---|
noFunctional | boolean | false | Définissez sur true pour empêcher Rokt d'utiliser des identifiants de suivi de première partie lorsque le client a désactivé les cookies fonctionnels. Les cookies fonctionnels alimentent la personnalisation de première partie et les fonctionnalités avancées de paiement comme les Upsells. |
noTargeting | boolean | false | Définissez sur true pour empêcher Rokt d'utiliser des identifiants de suivi intersites pour la session lorsque le client a désactivé les cookies de ciblage. Les identifiants fonctionnels restent actifs à moins que noFunctional ne soit également défini sur true. |
Pour une discussion plus détaillée, voir Indicateurs de consentement aux cookies.
Mesurer la performance de chargement des pages dans les applications monopageLien direct vers Mesurer la performance de chargement des pages dans les applications monopage
Fournissez le timestamp du chargement d'une page virtuelle pour que Rokt puisse mesurer avec précision la performance dans les SPAs et détecter les anomalies pouvant impacter l'expérience client.
| Paramètre | Type | Défaut |
|---|---|---|
pageInitTimestamp | Date | PerformanceNavigationTiming.responseStart |
Lorsque le lanceur s'initialise sur une page virtuelle dans une SPA, transmettez le timestamp de l'initialisation de cette page pour que Rokt puisse mesurer la performance de chargement par rapport à la page qui l'a déclenchée.
Lier l'activité client avec un ID de session RoktLien direct vers Lier l'activité client avec un ID de session Rokt
Transmettez un ID de session Rokt généré précédemment pour vous assurer que l'activité à travers différentes parties de l'expérience est correctement liée.
| Paramètre | Type | Défaut |
|---|---|---|
sessionId | string | — |
Si vous avez généré un ID de session Rokt à partir d'une interaction backend antérieure, transmettez-le ici pour que Rokt puisse l'associer à l'activité front-end.
Personnaliser la façon dont les liens s'ouvrent dans votre expérienceLien direct vers Personnaliser la façon dont les liens s'ouvrent dans votre expérience
Activez cette option lorsque vous souhaitez un contrôle total sur la façon dont les liens Rokt et des annonceurs s'ouvrent (par exemple, à l'intérieur d'un WebView au lieu d'un navigateur).
| Paramètre | Type | Défaut |
|---|---|---|
overrideLinkNavigation | boolean | false |
Lorsqu'il est défini sur true, Rokt cesse de gérer directement l'ouverture des liens et émet à la place un événement partenaire LINK_NAVIGATION_REQUEST. Pour distinguer les liens Rokt et des annonceurs des vôtres, vérifiez si l'URL contient "rokt.com".
Abonnez-vous à l'événement sur la sélection retournée par selectPlacements. Chaque événement transporte une seule chaîne url — le lien activé par le client. Ouvrez-le immédiatement, dans le contexte dont vous avez besoin (un onglet de navigateur, un WebView, etc.), pour éviter de dégrader l'expérience client.
const selection = await window.mParticle.Rokt.selectPlacements({
// identifier and attributes as in the examples above
});
selection.on("LINK_NAVIGATION_REQUEST").subscribe((event) => {
// event.url is the link the customer activated — open it immediately
window.open(event.url);
});
Si un événement LINK_NAVIGATION_REQUEST n'est pas consommé dans les 3 secondes, une erreur est levée — assurez-vous qu'un abonnement actif existe pour traiter l'événement.
8. Test Your Integration#
Pour confirmer que le SDK+ s'initialise, identifie l'utilisateur, enregistre les événements et demande les offres correctement :
1Open a new browser window#
Ouvrez une nouvelle fenêtre de navigateur pour commencer avec un état propre.
2Open developer tools#
Ouvrez le panneau des outils de développement de votre navigateur. Pour la plupart des navigateurs, vous pouvez le faire en cliquant avec le bouton droit de la souris sur votre écran et en cliquant sur Inspecter.
Activez l'option qui conserve les requêtes réseau à travers les chargements de page (Préserver le log dans Chrome, Edge et Safari, ou Conserver les logs dans Firefox).
3Filter network requests#
Depuis le panneau des outils de développement, allez à l'onglet Réseau et filtrez pour rokt-api.com. Si vous utilisez un domaine de premier niveau personnalisé, filtrez pour votre sous-domaine personnalisé à la place.
Pour trouver une requête spécifique, vous pouvez également filtrer par son nom de point de terminaison : /identity, /events, /experiences, ou /offers.
4Run the test journey#
Avec l'enregistrement de l'onglet Réseau, complétez un parcours de test à travers les pages où vous avez intégré le SDK+.
Ouvrez le panneau des outils de développement avant de naviguer sur votre site pour que le navigateur enregistre toutes les requêtes SDK+.
5Verify the identity request#
Filtrez pour /identity, puis sélectionnez la requête qui correspond à l'action d'identité que vous avez effectuée, comme identify ou login. Confirmez qu'elle a un statut réussi, puis vérifiez l'onglet Charge utile ou Requête pour les identifiants de test que vous vous attendiez à envoyer.
6Verify page-view and commerce events#
Filtrez pour /events, puis sélectionnez la requête générée pendant votre parcours de test. Confirmez qu'elle a un statut réussi. Vérifiez l'onglet Charge utile ou Requête pour vérifier que la requête contient l'événement de vue de page ou de commerce et les attributs que vous vous attendiez à envoyer.
Les requêtes d'événements peuvent contenir plusieurs événements, donc inspectez la charge utile complète de la requête lorsque vous vérifiez une action spécifique.
7Verify the selection request#
Filtrez pour /experiences, puis pour /offers. Selon le routage de votre SDK+, une sélection réussie utilise l'un de ces points de terminaison :
/v1/experiences/v2/sessions/offers
Vous n'avez besoin de voir qu'une de ces requêtes. Sélectionnez la requête avec un statut 200, puis vérifiez l'onglet Charge utile ou Requête pour vérifier les données partagées avec Rokt.
Lors des tests, vous pourriez également voir une requête /v1/experiences avec un statut 204. Utilisez la requête avec un statut 200 lors de la vérification de la charge utile.
DépannageLien direct vers Dépannage
Si votre intégration ne fonctionne pas, vérifiez l'onglet Console dans les outils de développement de votre navigateur pour les erreurs du SDK+ de Rokt. Les problèmes courants incluent :
Erreurs d'initialisationLien direct vers Erreurs d'initialisation
- Assurez-vous que le script d'initialisation du SDK+ a été placé sur la bonne page.
- Si vous avez intégré en utilisant un gestionnaire de balises, assurez-vous d'avoir configuré vos déclencheurs de balises pour que l'initialisation se charge sur les bonnes pages, et que vos balises
selectPlacementset de journalisation des conversions se déclenchent après l'initialisation du SDK+.
Erreurs de syntaxeLien direct vers Erreurs de syntaxe
Assurez-vous de ne manquer aucune virgule dans votre code d'intégration.
Pour vérifier les erreurs de syntaxe :
1Open the Console tab#
Accédez au panneau des outils de développement de votre navigateur et sélectionnez l'onglet Console.
2Find the error#
Si le fichier où vous avez placé le Web SDK+ contient une erreur, elle devrait être enregistrée dans la console. Cliquez sur le fichier pour voir le code et l'erreur signalée.
3Verify commas#
Toute erreur est indiquée dans le fichier. En particulier, vérifiez que tous les attributs sont séparés par des virgules comme indiqué ci-dessous.
email: ''
mobile_number: '',
email: '',
mobile_number: '',