
# Attribution des clics publicitaires pour WhatsApp

Si vous diffusez des publicités Meta ou Google vers une page de votre propre site web, et que cette page contient un bouton WhatsApp, <span data-t="appName">DM Champ</span> peut vous indiquer de quel clic publicitaire provient chaque conversation WhatsApp. Il vous suffit d'insérer un petit script sur votre site web. Lorsqu'un visiteur appuie sur votre bouton WhatsApp, le clic est mémorisé et associé au premier message qu'il vous envoie. Le contact affiche ensuite la campagne dont il provient, et les données du clic sont transmises avec le contact vers les webhooks, l'API et, si vous le souhaitez, renvoyées vers Meta.

Cela fonctionne pour n'importe quelle page dotée d'un bouton WhatsApp : une page de destination, une page de réservation, une page tarifaire ou un questionnaire qui se termine par « Envoyer mes réponses sur WhatsApp ».

> Cette page concerne les publicités qui envoient les utilisateurs vers **votre site web** en premier. Si vos publicités ouvrent directement WhatsApp (publicités « Click to WhatsApp » de Meta), cela est pris en charge automatiquement, sans script, dans [Attribution des publicités Click-to-WhatsApp](click-to-whatsapp-attribution.md).

---

## Configuration

1. Allez dans **Paramètres → Suivi des clics publicitaires** (groupe Intégrations).
2. Cliquez sur **Activer et obtenir mon script**. Votre compte obtient sa propre clé de site et un script d'une ligne.
3. Copiez le script et collez-le juste avant la balise de fermeture `</body>` sur chaque page contenant un bouton WhatsApp :

{% code overflow="wrap" %}
```html
<script src="https://api.dmchamp.com/v1/ad-visit/YOUR_SITE_KEY.js" async></script>
```
{% endcode %}

4. Facultatif : sous **Numéro WhatsApp**, saisissez le numéro vers lequel vos boutons renvoient. Seuls les liens vers ce numéro seront alors suivis. Laissez vide pour suivre tous les liens WhatsApp du site.
5. Choisissez le libellé du numéro de demande (voir ci-dessous) et cliquez sur **Enregistrer**. Vous n'avez pas besoin de modifier le script sur votre site web après une modification des paramètres.
6. Testez-le : ouvrez votre page à partir d'un lien contenant une balise de campagne, par exemple `https://yoursite.com/?utm_source=test&utm_campaign=setup-check`, appuyez sur votre propre bouton WhatsApp et envoyez le message. Ouvrez ce contact dans Chats : le panneau de contact affiche **Provient d'un clic publicitaire** avec la campagne.

La clé de site est déjà incluse dans le script. Ce n'est pas un mot de passe, il n'y a donc aucun problème à ce qu'elle figure sur une page publique.

::: master-only
**Agences :** chaque compte client possède sa propre clé de site et son propre script, de sorte que le site web de chaque client rapporte les données dans son propre compte. Vous pouvez masquer la section pour un client via la visibilité du menu, comme pour toute autre section de paramètres.
:::

---

## Ce que fait le script

- **Au chargement de la page**, il conserve les identifiants de clic publicitaire et les balises de campagne (les paramètres `utm_`) provenant de l'adresse de la page dans le stockage de session de l'onglet du navigateur, afin qu'ils soient toujours présents si le visiteur consulte une autre page au préalable. Il ne définit aucun cookie, ne charge rien d'autre et n'envoie rien.
- **Lorsque le visiteur appuie sur un lien WhatsApp** (`wa.me`, `api.whatsapp.com/send` ou `whatsapp://send`), il ajoute le numéro de demande au message, enregistre la visite et laisse l'appui se poursuivre vers WhatsApp normalement.

Rien n'est envoyé à <span data-t="appName">DM Champ</span> avant l'appui.

---

## Le numéro de demande

Un numéro court, semblable à la référence qu'une boutique ou une clinique vous donnerait, est ajouté au message WhatsApp du visiteur. C'est ainsi que <span data-t="appName">DM Champ</span> sait exactement quel clic publicitaire correspond à quelle conversation. Un message ressemble à ceci :

```
Hi, I would like to know more.
Enquiry no. 4827
```

- **Libellé :** « Réf. demande » est la valeur par défaut. Vous pouvez utiliser n'importe quelle ligne de texte qui semble naturelle pour votre entreprise, comme « Réf. réservation » ou « Réf ». Pas de chiffres.
- **Emplacement :** **Sur sa propre dernière ligne** (par défaut) ou **À la fin du texte**. La page des paramètres affiche un aperçu en direct.
- **Longueur :** 4 chiffres, ou 5 lorsque votre site est très fréquenté.
- **Votre agent IA ne le voit jamais** et ne le répète jamais. La boîte de réception affiche le message complet, numéro inclus.

Vous pouvez désactiver le numéro de demande. La correspondance ne fonctionne alors que sur le texte du message, de sorte que deux visiteurs envoyant exactement le même texte (par exemple les mêmes réponses à un quiz) ne peuvent pas être distingués, et certains clics ne seront pas mis en correspondance.

---

## Votre propre code de quiz ou de bouton

Si votre page génère elle-même le message WhatsApp (un quiz qui insère les réponses dans le texte, ou votre propre code de bouton), ajoutez `data-manual` à la balise script :

{% code overflow="wrap" %}
```html
<script src="https://api.dmchamp.com/v1/ad-visit/YOUR_SITE_KEY.js" data-manual async></script>
```
{% endcode %}

Avec `data-manual`, le script ne modifie plus les liens WhatsApp de lui-même. Votre propre code l'appelle juste avant l'ouverture de WhatsApp, afin que chaque visite soit enregistrée une seule fois :

- `window.ChatAttribution.text(finalText, number)` renvoie votre texte avec le numéro de demande ajouté et enregistre la visite. Utilisez le texte renvoyé dans votre lien WhatsApp.
- `window.ChatAttribution.link(finalText, number)` fait de même et renvoie un lien `wa.me` prêt à l'emploi avec ce texte. Omettez le numéro pour utiliser celui défini sous **Numéro WhatsApp** dans les paramètres.

{% code overflow="wrap" %}
```html
<script>
  function sendAnswers(answers) {
    var text = "Hi, my answers: " + answers.join(", ");
    if (window.ChatAttribution) {
      window.location.href = window.ChatAttribution.link(text, "+15551234567");
    } else {
      window.location.href = "https://wa.me/15551234567?text=" + encodeURIComponent(text);
    }
  }
</script>
```
{% endcode %}

La branche `else` permet au bouton de continuer à fonctionner si le script n'a pas été chargé, par exemple lorsqu'une extension de navigateur le bloque. Un texte qui contient déjà un numéro émis par le script n'est jamais modifié une seconde fois.

---

## Ce qui est enregistré

Au moment du clic, l'enregistrement de la visite contient :

- les identifiants de clic publicitaire présents dans l'adresse de la page, tels que `fbclid` (Meta) et `gclid` (Google)
- les cookies `_fbc` et `_fbp`, si votre propre pixel Meta les a définis sur votre site (le script les lit, il ne les définit jamais)
- les balises de campagne (`utm_source`, `utm_medium`, `utm_campaign`, `utm_content`, `utm_term`)
- la page d'atterrissage, la page d'origine du visiteur, le navigateur et le texte du message
- l'adresse IP et l'heure, ajoutées par <span data-t="appName">DM Champ</span> lors de l'arrivée de la visite

Les enregistrements de visite sont conservés pendant **90 jours**. Lorsqu'une visite est mise en correspondance, une copie de ses données de clic est stockée sur le contact et reste associée à celui-ci jusqu'à ce que vous la supprimiez.

**Votre politique de confidentialité :** le script s'exécute sur votre site web, votre politique de confidentialité doit donc le mentionner : ce qu'il enregistre (la liste ci-dessus) et le fait qu'il le fasse lorsqu'un visiteur appuie sur un bouton WhatsApp.

---

## Comment fonctionne la mise en correspondance

Lorsque le premier message d'un contact arrive, <span data-t="appName">DM Champ</span> recherche une visite effectuée dans les **15 minutes** précédentes :

1. **D'abord par numéro de demande.** Un message contenant un numéro émis par le script est mis en correspondance avec cette visite.
2. **Sinon par texte identique.** Un message ayant exactement le même texte qu'une visite est mis en correspondance avec celle-ci. Lorsque deux visiteurs différents envoient le même texte dans le créneau imparti, aucun n'est mis en correspondance, volontairement, afin qu'un contact ne soit jamais attribué à la mauvaise publicité.

Un message ultérieur contenant le numéro de demande est également mis en correspondance, tant que le contact n'a pas encore de correspondance.

Limites :

- **La première correspondance l'emporte.** Une fois qu'un contact a une correspondance, elle n'est jamais écrasée.
- **WhatsApp uniquement :** les canaux WhatsApp Business API et WhatsApp Web.
- **15 minutes :** un visiteur qui appuie sur le bouton mais envoie le message beaucoup plus tard n'est pas mis en correspondance.
- **Vers l'avenir uniquement :** les contacts datant d'avant l'installation du script n'ont aucune correspondance.

---

## Où le voir

- **Panneau de contact :** **Provenant d'un clic sur une publicité** avec la campagne ou la source et la date. Survolez pour voir les détails.
- **Webhooks :** `contact.ad_attribution` dans les [webhooks de tags d'agent](webhooks.md#contact-tags-updated-webhook) et dans chaque événement d'abonnement webhook qui transporte un contact.
- **API :** `ad_attribution` sur la liste de contacts et `adAttribution` sur un contact unique, dans la section Contacts de la référence API.
- **Outils MCP :** le même objet sur chaque contact qu'ils renvoient.

La valeur est `null` lorsque le contact n'a aucune correspondance.

| Champ | Ce que c'est |
|---|---|
| `visit_at` | Quand le visiteur a appuyé sur le bouton WhatsApp. |
| `matched_at` | Quand la visite a été mise en correspondance avec le contact. |
| `match_method` | `reference` (mis en correspondance par numéro de demande) ou `text` (mis en correspondance par texte de message identique). |
| `reference` | Le numéro de demande, ou `null` lorsqu'il était désactivé. |
| `fbc` / `fbp` | Le clic Meta et les cookies de navigateur de votre propre pixel Meta, s'ils sont présents. |
| `fbclid` | L'identifiant de clic publicitaire Meta provenant de l'adresse de la page. |
| `gclid` / `gbraid` / `wbraid` | Les identifiants de clic publicitaire Google provenant de l'adresse de la page. |
| `utm_source` / `utm_medium` / `utm_campaign` / `utm_content` / `utm_term` | Les tags de campagne provenant de l'adresse de la page. |
| `landing_url` | La page sur laquelle le visiteur a atterri. |
| `referrer` | La page d'où provient le visiteur. |
| `client_ip` | L'adresse IP du visiteur. |
| `user_agent` | Le navigateur du visiteur. |
| `site_key` | La clé de site du script qui a enregistré la visite. |
| `visit_id` | L'identifiant de l'enregistrement de visite. |

---

## Envoyer les résultats à Meta (optionnel)

Vous pouvez laisser <span data-t="appName">DM Champ</span> rapporter les résultats à votre compte publicitaire Meta, afin que Meta apprenne quelles publicités génèrent de vrais prospects et ventes et les optimise en conséquence. Cela utilise vos propres détails de l'API Conversions de Meta.

1. Dans le Gestionnaire d'événements Meta, trouvez l'identifiant de votre pixel (aussi appelé jeu de données) sous Sources de données, et créez un jeton d'accès sous Paramètres, API Conversions, **Générer un jeton d'accès**.
2. Dans **Paramètres → Suivi des clics publicitaires**, sous **Envoyer les résultats à Meta (optionnel)**, saisissez l'**Identifiant du pixel / jeu de données** et le **Jeton d'accès**. Lors des tests, vous pouvez ajouter le **Code d'événement de test** depuis l'onglet Événements de test de Meta ; effacez-le une fois terminé. Cliquez sur **Enregistrer les détails Meta**.
3. Ouvrez l'éditeur d'agent, allez dans l'onglet **Tags** et ouvrez un tag. Sous **Envoyer à Meta**, choisissez l'événement : **Lead**, **Contact**, **Schedule**, **Purchase** ou un nom personnalisé. Ajoutez optionnellement une valeur et une devise.

À partir de là, chaque fois que ce tag est appliqué à un contact (par l'IA, manuellement, via l'API ou par une automatisation), <span data-t="appName">DM Champ</span> envoie l'événement à Meta avec les données de clic stockées du contact (`fbc`, `fbp`, adresse IP, navigateur, page d'atterrissage) ainsi que son téléphone, son e-mail et son nom, hachés, afin que Meta puisse les lier à la publicité. Un contact sans correspondance envoie tout de même l'événement, avec uniquement le téléphone, l'e-mail et le nom hachés.

- **Pas de double comptage :** chaque événement possède un identifiant fixe composé de l'identifiant du contact et du nom du tag. Si votre CRM envoie le même événement à Meta avec le même identifiant, Meta n'en conserve qu'un seul.
- **Fenêtre d'attribution de Meta :** Meta n'attribue un événement à une publicité que dans sa fenêtre d'attribution, qui est par défaut de 7 jours après le clic. Une affaire conclue des semaines plus tard ne sera pas comptabilisée seule, envoyez donc également un événement antérieur, par exemple un tag pour la consultation réservée ou payée.

---

## FAQ

**Cela fonctionne-t-il si ma publicité ouvre directement WhatsApp ?**
Ces publicités ne passent pas par votre site web, donc le script ne s'exécute jamais. Meta envoie les détails de la publicité avec le premier message à la place, voir [Attribution des publicités Click-to-WhatsApp](click-to-whatsapp-attribution.md).

**Le script ralentit-il mon site web ou définit-il des cookies ?**
Il se charge en arrière-plan (`async`), ne définit aucun cookie et ne charge rien d'autre. Il n'envoie quelque chose que lorsqu'un visiteur appuie sur un bouton WhatsApp.

**Puis-je suivre les publicités Google ainsi que les publicités Meta ?**
Oui. Les identifiants de clic Google (`gclid`, `gbraid`, `wbraid`) et tous les tags de campagne sont enregistrés et affichés sur le contact. L'envoi des résultats est disponible uniquement pour Meta.

**Pourquoi un contact n'a-t-il pas obtenu de correspondance ?**
Les raisons les plus courantes : le message est arrivé plus de 15 minutes après l'appui, le numéro de demande a été supprimé du message, le numéro de demande est désactivé et un autre visiteur a envoyé le même texte, ou la page ne contient pas le script.

**Mon site web contient des liens vers deux numéros WhatsApp. Puis-je n'en suivre qu'un seul ?**
Oui. Saisissez ce numéro sous **Numéro WhatsApp** dans les paramètres. Laissez vide pour suivre tous les liens WhatsApp.

**Puis-je modifier le libellé plus tard ?**
Oui. Les modifications s'appliquent immédiatement à votre site web ; vous n'avez pas besoin de coller à nouveau le script.
