Guide - Comment mettre en place LinkedIn CAPI avec GTM Server Side

Après avoir passé un temps certain à chercher à faire fonctionner le template GTM Server Side pour mettre en place la Conversions API de LinkedIn, nous vous livrons un guide pas à pas pour y voir plus clair !
Ce guide fera fréquemment référence à Facebook CAPI car il s’agit d’un grand classique, souvent implémenté en tout premier. Si vous n’y avez pas encore touché, on a un super article à vous conseiller.

1. Tag LinkedIn : rappel du fonctionnement côté client

Traditionnellement, les tags LinkedIn sont installées client-side. On distingue alors deux éléments principaux : l’Insight Tag et le suivi des conversions.

1.1 L’Insight Tag

C’est le tag principal, qui doit être installé sur l’ensemble des pages du site. C’est ce tag qui charge la librairie JS de LinkedIn et qui récupère les informations principales.
En voici un exemple ci-dessous.
javascript
<script type="text/javascript"> _linkedin_partner_id = "XXXXXX"; window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; window._linkedin_data_partner_ids.push(_linkedin_partner_id); </script><script type="text/javascript"> (function(l) { if (!l){window.lintrk = function(a,b){window.lintrk.q.push([a,b])}; window.lintrk.q=[]} var s = document.getElementsByTagName("script")[0]; var b = document.createElement("script"); b.type = "text/javascript";b.async = true; b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; s.parentNode.insertBefore(b, s);})(window.lintrk); </script> <noscript> <img height="1" width="1" style="display:none;" alt="" src="https://px.ads.linkedin.com/collect/?pid=6529889&fmt=gif" /> </noscript>
Bien entendu, si vous utilisez Google Tag Manager, il est recommandé de privilégier le template (disponible dans la galerie) → https://tagmanager.google.com/gallery/#/owners/linkedin/templates/linkedin-gtm-community-template
Image without caption

1.2 Le suivi des conversions

Les conversions se configurent au sein de LinkedIn Campaign Manager (Analyser > Suivi des conversions).
Image without caption
Une fois la conversion créée, vous allez avoir accès à l’ID de conversion. En voici un exemple :
javascript
window.lintrk('track', { conversion_id: 12345678 });
👉
On est donc sur un fonctionnement assez classique, avec, d’une part, un tag global à installer sur l’ensemble des pages et d’autre part un tag de conversion. Cela dit, il reste un élément important à garder en tête : en créant une conversion, nous avons dû sélectionner la source de données, ici l’Insight Tag.

2. Mise en place de LinkedIn CAPI en server side

2.1 Overview

2.1.1 Template

Le template à utiliser est celui proposé par LinkedIn. Il est disponible ici :
Tag Manager Template Gallery
Deploy tags in Google Tag Manager easily and safely with the Community Template Gallery
⚠️
Attention, ce template ne permet que de mettre en place un suivi des conversions i.e. des différentes conversions que vous avez pu configurer au sein de l’interface. Il ne reprend donc pas l’ensemble des fonctionnalités de l’Insight Tag !
On y reviendra un peu plus loin mais le template proposé par LinkedIn est… perfectible.
Image without caption
On y retrouve la possibilité de :
  • préciser le token
  • préciser l’ID de conversion
  • préciser l’Event ID le cas échéant
  • préciser la Conversion Value
👉
Il n’est pas possible de faire grand chose au sein du template proposé par LinkedIn. Il est donc essentiel de configurer un flux aussi propre que possible !

2.2 Guide pour mettre en place LinkedIn Server Side, étape par étape

Sur LinkedIn, lors de la création d’une conversion, vous devez choisir la source de données

2.2.1 Création des éléments nécessaires

⚠️
Pour cette partie, vous aurez besoin des droits suffisants dans Campaign Manager.
Etape 1 : Créer un Token API
Au sein du Campaign Manager, il va vous falloir créer un token.
Pour cela, il faut aller dans Analyser > Suivi des conversions > Source de données puis cliquer sur “Créer une source” et sélectionner “API des conversions ou CSV”.
Image without caption
Il faut ensuite sélectionner “Intégration de l’API de conversions” puis “Google Tag Manager”
Image without caption
👉
Vous allez ensuite pouvoir générer un Token API. Attention à bien le noter !
Etape 2 : Créer une conversion
⚠️
Ici, LinkedIn va fonctionner différemment de Meta notamment. Lors de la création d’une conversion dans l’interface LinkedIn, celle-ci est associée à une source de données (Insight Tag ou API par exemple). Il est donc nécessaire de créer une nouvelle conversion compatible avec l’API.
Comme d’habitude, cela se passe sous Analyser > Suivi des conversions > Créer une conversion > API des conversions ou conversion de CSV.
Image without caption
Il suffira ensuite de suivre les différentes étapes.
Une fois cela fait, il s’agit de récupérer la Conversion Rule ID : il s’agit de l’identifiant de conversion utilisé pour identifier la conversion.
⚠️
Attention ! Il se trouve que cet ID n’est pas indiqué dans l’interface… Cela aurait été trop simple…
L’unique moyen de le trouver, à date, est de se rendre sur la conversion en question et de récupérer la valeur au sein de l’URL (comme indiqué dans la capture ci-dessous).
Image issue de la documentation LinkedIn https://www.linkedin.com/help/lms/answer/a1718034
Image issue de la documentation LinkedIn https://www.linkedin.com/help/lms/answer/a1718034
👉
Vous êtes en possession du token et avez maintenant une conversion avec l’API comme source de données. Vous pouvez maintenant attaquer le vif du sujet !

2.2.2 Mise à jour de GTM Web

Le tableau proposé par LinkedIn est très important
Image without caption
Ce tableau indique en effet que certains paramètres sont obligatoires :
  • le rule_id : c’est assez logique, il s’agit de l’identifiant qui identifie la conversion
  • l’heure de l’événement : généré automatiquement
  • mais surtout, au moins l’un des paramètres parmi les suivants :
    • user_data.sha256_email_address : il s’agit de l’adresse email hashée de l’utilisateur
    • user_data.linkedinFirstPartyId : il s’agit de la valeur du cookie li_fat_id, qui existe uniquement pour les utilisateurs ayant cliqué sur une publicité LinkedIn
    • user_data.acxiomID
    • user_data.moatID
Dans le cas où vous n’auriez pas encore la possibilité d’envoyer l’adresse email à votre serveur, il faudra donc envoyer autre chose, comme le user_data.linkedinFirstPartyId.
Pour récupérer cette valeur, il faut récupérer la valeur du cookie li_fat_id, que vous allez pouvoir passer dans user_data.linkedinFirstPartyId.
Ici, on récupère la valeur du cookie li_fat_id, avec un fallback éventuel sur le paramètre d’URL dans le cas peu probable où une race condition s’appliquerait.
Ici, on récupère la valeur du cookie li_fat_id, avec un fallback éventuel sur le paramètre d’URL dans le cas peu probable où une race condition s’appliquerait.
⚠️
Si vous utilisez uniquement cet identifiant, n’oubliez pas qu’il n’est disponible que pour les utilisateurs venant d’une publicité LinkedIn ! On verra dans la partie suivante comment gérer cela.

2.2.3 Mise à jour de GTM Server Side

Dans GTM Server Side, nous allons utiliser le template cité précédemment, disponible ici https://tagmanager.google.com/gallery/#/owners/linkedin/templates/linkedin-gtm-community-template
Image without caption
Quelques éléments à garder en tête
Token API
Il s’agit du Token API que vous avez généré. Pour rappel, la marche à suivre est décrite plus haut Guide - Comment mettre en place LinkedIn CAPI avec GTM Server SideGuide - Comment mettre en place LinkedIn CAPI avec GTM Server Side
Conversion Rule ID
Là encore il s’agit de l’ID de la conversion que vous avez pu créer précédemment. Voir Guide - Comment mettre en place LinkedIn CAPI avec GTM Server SideGuide - Comment mettre en place LinkedIn CAPI avec GTM Server Side
Déduplication
Si vous avez bien suivi la première partie (et si c’est le cas, félicitations), vous avez remarqué que la création des conversions était un peu différente de Facebook par exemple :
  • avec Facebook, vous auriez créé un événement de conversion, par “souscription” et vous auriez pu l’envoyer client-side et via l’API. Vous auriez ensuite dédupliqué grâce à l’Event ID
  • avec LinkedIn, vous allez créer une conversion client-side “souscription” et une conversion API “soucription api” → les données remonteront donc par défaut dans 2 conversions différentes.
Dès lors, quel intérêt à la déduplication ? La documentation LinkedIn nous apporte une réponse : si 1 événement client-side et 1 événement via API portent le même Event ID alors LinkedIn gardera uniquement l’événement client-side.
Voir pour plus d’informations.
Conversion Value
On arrive à la question épineuse de la Conversion Value… Théoriquement, c’est une valeur optionnelle. Dans mes tests, j’obtenais une erreur dans la preview GTM Server Side lorsque cette valeur n’était pas renseignée…
J’en suis venu à renvoyer {"currencyCode": "EUR", "amount": "1"} dans ce champs (n’ayant pas de “vraie” valeur pour la conversion en question).
Comment déclencher le tag ?
Il faudra ensuite gérer les règles de déclenchement du tag. Rien de farfelu ici mais il y a un élément à prendre en compte.
Dans le cas où vous envoyez uniquement le li_fat_id à GTM Server Side et donc que vous n’avez aucun autre identifiant à disposition, il vous faudra vous assurer de ne déclencher le tag que quand le li_fat_id existe.
Pour cela, il s’agit de créer le déclencheur adéquat. Différentes approches sont valables et peuvent fonctionner. Dans le screenshot ci-dessous, un déclencheur a été créé au sein de GTM Server Side et va être utilisé comme exception (et non pas déclencheur).
En cas d’allergie aux exceptions, vous pouvez bien entendu gérer cela directement au sein de votre déclencheur !
Plein de manières de faire, par exemple en utilisant une exception.
Plein de manières de faire, par exemple en utilisant une exception.

Conclusion

Implémenter LinkedIn CAPI, c’est complètement possible. En revanche, le template proposé par LinkedIn ne facilite pas forcément la vie.
Avec ce guide, vous devriez avoir les éléments clés pour mettre en place cette Conversion API. Et si vous avez besoin d’aide sur le sujet, n’hésitez pas à nous envoyer un petit message 😉

Quentin Bosco

✍️
L’auteur : Quentin Bosco
Image without caption
Lead Tracking & Web Analytics chez UnNest, je vous accompagne sur l’ensemble des sujets liés à la collecte de la donnée et au server side.
Précédemment consultant en agence et Responsable Analytics chez Yves Rocher, j’interviens sur les sujets de collecte de la donnée depuis 8 ans et ai développé un goût & une expertise sur l’ensemble des sujets relatifs au server side.
✉️ Me contacter : quentin.bosco@unnest.co