Prérequis
- Un site qui prend en charge HTTPS.
- Vous pouvez publier des modifications dans GTM pour le conteneur du site.
- Complétez le flux de configuration du SDK Web OneSignal jusqu’à atteindre l’étape Ajouter le code au site. Si vous faites cela, vous aurez :
- Une application OneSignal Web Push créée avec un OneSignal App ID.
- La configuration du OneSignal Service Worker.
Configuration
1. Configurez votre application web OneSignal
Suivez la configuration du SDK Web jusqu’à atteindre l’étape Ajouter le code au site. C’est ici que vous obtiendrez l’OneSignal App ID.
Une fois que vous atteignez cette étape, vous devrez apporter quelques ajustements au code pour qu'il fonctionne avec Google Tag Manager.
2. Créez des variables GTM
Créez des variables GTM pour les valeurs que vous pouvez référencer dans les balises GTM. L’utilisation de variables évite de coder en dur les valeurs et facilite la maintenance de votre configuration. Créez une variable OneSignal App ID- Dans GTM, allez dans Variables > New.
- Choisissez Constant.
- Nommez-la
os_app_id. - Définissez la valeur sur votre OneSignal App ID.
- Enregistrez.

Création d'une variable OneSignal App ID
Vous pouvez maintenant référencer votre App ID n’importe où dans GTM en utilisant
{{os_app_id}}. - Data Layer Variable (recommandé)
- First-Party Cookie
- DOM Variable (avancé)
- Dans GTM, allez dans Variables > New.
- Choisissez Data Layer Variable.
- Nommez-la
external_id. - Définissez le Data Layer Variable Name sur
external_id. - Ne définissez pas de valeur par défaut.
- Enregistrez.
Un exemple de la façon de pousser la valeur dans le dataLayer sera fourni dans la section suivante.
- Dans GTM, allez dans Variables > New.
- Variable Type : Data Layer Variable.
- Nommez-la
onesignal_id. - Définissez le Data Layer Variable Name sur
onesignal_id. - Ne définissez pas de valeur par défaut.
- Enregistrez.
Un exemple de la façon de pousser la valeur dans le dataLayer sera fourni dans la section suivante.
L’OneSignal ID est généré après l’abonnement. Si vous prévoyez de remplir cette valeur, vous devez explicitement la pousser dans le dataLayer depuis un callback OneSignal.
3. Créez la balise d’initialisation OneSignal
- Dans GTM, allez dans Tags > New.
- Nommez la balise :
OneSignal - Init - Tag Type : Custom HTML
- Collez le code ci-dessous
HTML
- Configurez le timing sous Advanced Settings > Tag firing options sur Once per page.
- Sous Triggering, sélectionnez Initialization - All Pages.

Configuration de la balise OneSignal - Init
4. Définissez l’External ID et les balises
Définir l’External ID est optionnel mais recommandé car cela vous permet d’identifier les utilisateurs sur plusieurs appareils et de synchroniser avec votre backend.Définissez external_id et capturez le onesignal_id
Utilisez cette balise lorsque vous souhaitez :
- Identifier les utilisateurs dans OneSignal avec votre propre ID utilisateur (external_id)
- Capturer l’ID généré par OneSignal pour l’analytique ou l’utilisation GTM en aval lorsqu’aucun external ID n’existe
external_id dans le dataLayer et utilisez la variable {{external_id}} de l’étape 2 ci-dessus. Par exemple :
HTML
- Tag name :
OneSignal – Set External ID or Get OneSignal ID - Tag type : Custom HTML
- Tag firing options : Once per page (recommandé)
- Trigger : Utiliser avec l’événement
OneSignalInitialized(défini dans la balise OneSignal - Init ci-dessus)
HTML
Définissez les balises de données
Cette étape envoie les balises de données utilisateur à OneSignal en utilisant le SDK Web. Configuration de balise- Name :
OneSignal - Add Tags. - Tag Type : Custom HTML.
- Tag firing options : Once per page (recommandé)
- Trigger :
- Utiliser avec l’événement
OneSignalInitialized(défini dans la balise OneSignal - Init ci-dessus) - Votre condition pour que la balise se déclenche (par ex. “Connexion réussie”, “Page de profil”, “Achat”, etc.)
- Utiliser avec l’événement
HTML
N’envoyez les balises que lorsque vous avez les données utilisateur disponibles (par ex., après la connexion, après le chargement d’un profil, ou après un événement de conversion connu).
Consent Mode et considérations de confidentialité
Si votre site utilise Consent Mode / un CMP, décidez si OneSignal doit se charger :- Uniquement après consentement (courant pour l’UE/Royaume-Uni), ou
- Immédiatement (courant là où le stockage “fonctionnel” est autorisé par défaut).
Test
- Dans GTM, ouvrez le mode Preview.
-
Chargez votre site et confirmez :
OneSignal - Initse déclenche une fois.OneSignalInitializedapparaît dans la timeline des événements GTM (si vous avez conservé le push d’événement).
- Abonnez-vous à votre site web. Consultez Demandes de permission web pour les détails sur les invites.
- Dans le tableau de bord OneSignal, allez dans Audience > Subscriptions et confirmez qu’un abonnement apparaît après votre inscription. Vous devriez également voir un External ID si vous en avez défini un.
- Envoyez un push de test depuis Messages > New Push.
Si l’initialisation fonctionne, vous verrez le SDK chargé sur la page et les abonnements apparaissant dans OneSignal après l’inscription.
Dépannage
-
La balise Init se déclenche, mais le SDK ne se charge jamais
- Vérifiez si une Content Security Policy (CSP) bloque
https://cdn.onesignal.com. - Vérifiez les bloqueurs de publicités/bloqueurs de scripts.
- Vérifiez si une Content Security Policy (CSP) bloque
-
Erreurs
dataLayer- Assurez-vous que
window.dataLayer = window.dataLayer || []est défini avant tout appel àdataLayer.push().
- Assurez-vous que
-
Invites en double / chargement en double du SDK
- Assurez-vous que vous ne chargez pas également OneSignal via le code du site, un plugin CMS ou une autre balise GTM.
-
Add Tags s’exécute mais n’apparaît pas dans OneSignal
- Confirmez que le Trigger Group attend OneSignalInitialized.
- Confirmez que votre déclencheur d’action utilisateur se déclenche réellement.
- Confirmez que les balises sont des paires clé/valeur valides et dans les limites du plan.