Écrire des scripts d'organisation
Écrire et tester des scripts d'organisation Global qui s'exécutent dans OmniLab Pages sans perturber l'expérience participant.
Ce guide est le complément développeur de l'article d'administration sur la configuration des scripts. Utilisez-le lorsque vous écrivez ou relisez le JavaScript qui s'exécute dans OmniLab Pages.
Où le script s'exécute
Les scripts d'organisation s'exécutent dans l'environnement OmniLab Pages côté participant, pas dans OmniLab Studio. Avant l'exécution des scripts actifs, OmniLab initialise window.omnilab et peut exposer à la page à la fois les données de groupe et des données de contact basiques.
window.omnilab?.contact?.externalId
window.omnilab?.contact?.email
window.omnilab?.group
window.omnilab?.group?.configuration?.variables
window.omnilab?.group?.uniqueKey
window.location.pathnameLes valeurs de contact ne sont disponibles que lorsque le participant est déjà connu dans ce parcours.
Votre code doit contenir de vraies balises script
OmniLab attend que le champ de code du script contienne un ou plusieurs blocs <script>...</script> valides. Les scripts inline et les chargeurs de scripts externes sont tous deux pris en charge.
<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: "omnilab_view",
organisation_key: window.omnilab?.group?.uniqueKey,
page: window.location.pathname,
});
</script><script async src="https://www.googletagmanager.com/gtm.js?id=GTM-AB12C3D"></script>Contexte et comportement de déclenchement
| Réglage | Ce que cela signifie |
|---|---|
ALL | S'exécute dans OmniLab Pages en iframe et hors iframe |
IFRAME_ONLY | S'exécute uniquement quand OmniLab est embarqué |
NON_IFRAME_ONLY | S'exécute uniquement quand OmniLab Pages est autonome |
VISIT | Se charge pendant la visite normale de la page |
REGISTRATION | Réserve le script pour l'étape d'inscription |
Si le déclencheur courant est REGISTRATION, OmniLab garde tout de même les autres scripts actifs disponibles et ajoute les scripts ciblés sur l'inscription pour cette étape. En pratique, utilisez un script REGISTRATION séparé pour les événements de conversion plutôt que de surcharger le script de vue de page de base.
Cas d'usage sûrs
- Chargeurs d'analytics comme GTM, un tag de base de pixel, ou un bootstrap de
dataLayer - Comportement par organisation basé sur
window.omnilab.group.configuration.variables - Pushs d'événements légers à la visite ou à l'inscription
- Améliorations DOM mineures qui ne dépendent pas de sélecteurs fragiles et ne bloquent pas l'interaction
<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: "omnilab_view",
organisation_key: window.omnilab?.group?.uniqueKey,
country: window.omnilab?.group?.configuration?.variables?.country,
locale: window.omnilab?.group?.configuration?.variables?.locale || "en_US",
page: window.location.pathname,
surface: "OmniLab Pages",
});
</script><script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: "registration_complete",
external_id: window.omnilab?.contact?.externalId,
email: window.omnilab?.contact?.email,
organisation_key: window.omnilab?.group?.uniqueKey,
});
</script>Ce qu'il faut éviter
- Remplacer ou surcharger la logique métier d'OmniLab
- Le travail synchrone bloquant qui retarde le chargement de la page ou empêche la participation
- Les réécritures DOM fragiles qui dépendent de noms de classes ou de détails de layout instables
- Collecter des données personnelles supplémentaires sans base légale claire ni revue
- Les grosses bibliothèques côté client non essentielles au parcours participant
Un script cassé peut casser toutes les expériences embarquées
Comme ces scripts s'exécutent dans OmniLab Pages, un seul mauvais script peut affecter des campagnes en production. Gardez-les courts, testez-les en staging, et donnez aux admins un plan de retour arrière avant la production.
Workflow de test local
- Construisez et relisez le script dans un environnement de staging.
- Testez la diffusion en iframe et hors iframe si le script dépend du conteneur.
- Si le déclencheur est
REGISTRATION, complétez un parcours d'inscription complet et inspectez la console et le panneau réseau du navigateur. - Après que les admins ont enregistré le script, republiez la campagne concernée avant de valider l'expérience en production.
Passation aux admins
Lorsque vous remettez un script à un admin, fournissez :
- le nom du script
- le contexte visé (
ALL,IFRAME_ONLY, ouNON_IFRAME_ONLY) - le déclencheur visé (
VISITouREGISTRATION) - si le script doit démarrer actif ou inactif
- une instruction de retour arrière et un résultat de test en staging
Exemples complets de scripts
Chargeur de base Google Tag Manager
Utilisez ceci lorsque votre équipe veut disposer de GTM avant de déclencher d'autres événements.
<script>
(function (w, d, s, l, i) {
w[l] = w[l] || [];
w[l].push({
'gtm.start': new Date().getTime(),
event: 'gtm.js',
});
var f = d.getElementsByTagName(s)[0],
j = d.createElement(s),
dl = l != 'dataLayer' ? '&l=' + l : '';
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
f.parentNode.insertBefore(j, f);
})(window, document, 'script', 'dataLayer', 'GTM-AB12C3D');
</script>Événement de vue avec variables d'organisation
<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'view_page',
country: window.omnilab?.group?.configuration?.variables?.country,
region: window.omnilab?.group?.configuration?.variables?.region,
language:
window.omnilab?.group?.configuration?.variables?.centerLanguage || 'English',
locale:
window.omnilab?.group?.configuration?.variables?.locale || 'en_US',
page: window.location.pathname,
page_type: 'Experience',
organisation_key: window.omnilab?.group?.uniqueKey?.toUpperCase(),
surface: 'OmniLab Pages',
});
</script>Événement d'inscription avec dataLayer.push
Utilisez ceci lorsque vous voulez émettre un événement de type conversion après l'inscription.
<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'registration_complete',
organisation_key: window.omnilab?.group?.uniqueKey?.toUpperCase(),
country: window.omnilab?.group?.configuration?.variables?.country,
locale:
window.omnilab?.group?.configuration?.variables?.locale || 'en_US',
page: window.location.pathname,
registration_status: 'complete',
});
</script>Déclencheur d'inscription Meta Pixel
Utilisez ce pattern lorsque le pixel Meta de base est déjà présent et que vous devez seulement déclencher un événement depuis OmniLab Pages.
<script>
if (typeof window.fbq === 'function') {
window.fbq('track', 'CompleteRegistration', {
organisation_key: window.omnilab?.group?.uniqueKey,
country: window.omnilab?.group?.configuration?.variables?.country,
locale:
window.omnilab?.group?.configuration?.variables?.locale || 'en_US',
page: window.location.pathname,
});
}
</script>Chemins de variables d'organisation disponibles
| Ce que vous voulez lire | Chemin de variable | Exemple de résultat |
|---|---|---|
| Pays | window.omnilab?.group?.configuration?.variables?.country | France |
| Surcharge de langue locale | window.omnilab?.group?.configuration?.variables?.centerLanguage | French |
| Code locale | window.omnilab?.group?.configuration?.variables?.locale | fr_FR |
| Région | window.omnilab?.group?.configuration?.variables?.region | Europe |
| Clé d'organisation | window.omnilab?.group?.uniqueKey | paris-centre |
| Chemin de page courant | window.location.pathname | /summer-experience |
Ajoutez un fallback lorsque c'est nécessaire, par exemple centerLanguage || 'English' ou locale || 'en_US'.
Gardez les payloads analytics génériques
Privilégiez le contexte d'organisation, de locale, de page et d'événement, sauf si votre plan de mesure exige réellement davantage. Si une destination attend des valeurs transformées ou filtrées, appliquez cette logique dans votre script avant l'envoi.
Pour aller plus loin
Scripts d'organisation
Voir le guide d'administration pour créer et gérer les scripts dans OmniLab.
Variables au niveau organisation
Utiliser les variables d'organisation pour adapter un script global à plusieurs organisations.
Intégration borne (approfondissement technique)
Gérer les scripts pour les expériences embarquées en iframe ou WebView.
Guides
Approfondir les patterns d'implémentation derrière les scripts, les templates Liquid, les wrappers borne et les parcours de réservation.
Approfondissement des templates Liquid et des variables
Écrire du Liquid valide pour les notifications OmniLab et comprendre quelles variables chaque type de notification accepte.