# Paramètres → Conversions

L'onglet **Conversions** des Paramètres (`/settings?tab=automations`, groupe **Événements et CAPI**) renvoie vos conversions réelles (leads, réservations, ventes, paiements) aux plateformes publicitaires, côté serveur, sans code. Les anciennes adresses `/settings/automations` et `/settings/automations/meta-capi` redirigent vers cet onglet.

Pourquoi c'est important : les régies n'optimisent que sur ce qu'elles voient. Une vente conclue au téléphone trois semaines après le clic n'existe pas pour Meta ou Google tant que personne ne la leur renvoie. Ici, chaque événement reçu par DURUM peut repartir vers le pixel ou le compte publicitaire de votre choix, avec le montant et la devise du compte.

L'onglet se lit de haut en bas : **destinations connectées**, **conversions** (les workflows), **journal des envois**.

## 1. Destinations connectées

Une carte par plateforme : **Facebook**, **TikTok**, **Google**, **Snapchat**, **LinkedIn**, **ChatGPT** et **Whop**. Chaque carte connectée offre un bouton **Tester** qui envoie un événement de vérification et affiche le résultat (« Facebook OK, events_received: 1 », par exemple), avec, s'il y a lieu, les points à corriger.

### Facebook (Meta)

Deux façons de connecter un pixel :

- **Compte connecté (recommandé)** : si le compte Meta Ads est déjà connecté dans Intégrations, la fenêtre liste vos pixels (champ **Pixel Meta (compte connecté)**). Aucun jeton à coller. Champ optionnel **Test Event Code** (laisser vide pour le mode production).
- **Saisie manuelle (System User)** : champs `Pixel ID`, `Access Token` (jeton d'utilisateur système) et `Test Event Code` optionnel.

Un compte peut porter **plusieurs pixels** (**+ Ajouter un pixel**). Chaque pixel reçoit des règles de routage par domaine et par chemin d'URL de la page d'atterrissage ; le pixel marqué **catch-all** reçoit tout ce qu'aucune règle ne capte. Un pixel sans règle et non catch-all ne reçoit rien.

### Google

Pas de jeton à coller : la carte réutilise la connexion **Google Ads** faite dans Intégrations. Vous choisissez une **action de conversion** de type « Importer, autres sources de données ou CRM » (les actions incompatibles avec l'import sont signalées « non compatible envoi »). Plusieurs comptes Google Ads peuvent être ajoutés ; un compte encore utilisé par une conversion ne peut pas être retiré. Si les conditions du suivi avancé ne sont pas acceptées sur le compte, Google refusera les conversions portant un courriel ou un téléphone : la carte l'indique.

### TikTok, Snapchat, LinkedIn, ChatGPT, Whop

| Plateforme | Champs demandés |
|------------|-----------------|
| TikTok | `Pixel Code`, `Access Token` (longue durée), `Test Event Code` optionnel |
| Snapchat | `Snap Pixel ID`, `Access Token`, `Test Event Code` optionnel |
| LinkedIn | `Conversion Rule ID / URN`, `Access Token` (portée `rw_conversions`) |
| ChatGPT | `Pixel ID` (`px_…`, OpenAI Ads Manager, onglet Conversions), `Server-side key` |
| Whop | Connexion en un clic (Business ID `biz_…` puis autorisation), ou clé API en repli |

Les identifiants sont validés par un appel de test avant d'être enregistrés (**Valider & connecter**). En modification, un champ secret laissé vide conserve la valeur actuelle.

## 2. Conversions (workflows)

Une conversion = un **déclencheur** DURUM, des **filtres** optionnels, un **délai** optionnel et une ou plusieurs **actions** (destination + nom d'événement). Le créateur guidé fait le plus gros du travail ; l'éditeur complet permet d'affiner.

### Déclencheurs

| Déclencheur | Événement DURUM |
|-------------|-----------------|
| Lead | `lead` |
| Candidature | `application` |
| Booking (RDV) | `booking` |
| No-show | `no_show` |
| Vente | `sale` |
| Paiement | `payment` |
| Remboursement | `refund` |
| Nouveau client | `new_customer` (premier achat payant d'un contact ; éditeur complet seulement) |

Vos [événements personnalisés](https://docs.durum.ai/dashboard/comment-on-compte#evenements-personnalises-evenements-ou-contacts-uniques) sont aussi proposés comme déclencheurs. Un déclencheur peut aussi être une **URL de webhook** propre au workflow, pour un outil qui n'est pas intégré.

### Filtres

Une ou plusieurs conditions sur les données de l'événement (`utm_source`, `utm_campaign`, `calendar_name`, `product_key` ou tout champ en notation pointée), combinées en ET / OU, avec les opérateurs égale, différent, contient, ne contient pas, supérieur à, inférieur à, existe, n'existe pas, dans la liste, hors de la liste. Pour `booking` et `no_show`, un sélecteur de **calendriers** limite l'envoi à certains calendriers ; sans sélection, tous les bookings partent.

### Délai

**Attendre avant d'envoyer** : immédiat, 5 minutes, 15 minutes, 1 heure, 6 heures, 1 jour, 3 jours, 7 jours, ou une durée personnalisée jusqu'à 30 jours.

### Actions

Chaque action vise une destination et un **nom d'événement** de la régie (liste standard, ou **Conversion personnalisée** pour un nom libre). Le nom recommandé est présélectionné selon le déclencheur :

| Déclencheur | Facebook | Google | TikTok |
|-------------|----------|--------|--------|
| Lead | `Lead` | `Lead` | `Lead` |
| Candidature | `SubmitApplication` | `SubmitLeadForm` | `SubmitForm` |
| Booking | `Schedule` | `BookAppointment` | `Subscribe` |
| No-show | `Contact` | `Lead` | `Contact` |
| Vente, Paiement, Remboursement | `Purchase` | `Purchase` | `CompletePayment` (`PlaceAnOrder` pour un remboursement) |
| Nouveau client | `NewClient` (conversion personnalisée) | `SignUp` | `CompleteRegistration` |

Options par action :

- **Pixel** de destination si le compte Facebook porte plusieurs pixels (sinon routage automatique par l'URL de la page).
- **Compte Google Ads** et **action de conversion** si plusieurs sont connectés ; cases **Customer Match** pour alimenter en plus une liste de clients.
- **Mode test** avec `Test Event Code` (code proposé : `DURUMTEST`) : l'événement n'apparaît que dans l'onglet Test events du gestionnaire d'événements, aucune conversion réelle n'est comptée. Un workflow en test porte le badge **MODE TEST**.

> **Tip: Montant, devise et identité : rien à configurer**
>
> DURUM envoie automatiquement tout ce qu'il a reçu : courriel, téléphone, nom, ville, province, pays, code postal, montant, devise, produit et numéro de commande. Le montant d'un remboursement part en négatif. La devise est celle de l'événement, sinon la **devise du compte** (voir [Devise et fuseau horaire du compte](https://docs.durum.ai/pages/profil#devise-et-fuseau-horaire-du-compte)). Un mapping manuel (`value`, `currency`, `content_name`, `content_ids`, `order_id`, `predicted_ltv`) n'est utile que pour surcharger une de ces valeurs.

### Liste des conversions

Chaque ligne montre l'état (actif ou en pause), le nom, le mapping `événement → événement régie`, et ses statistiques : nombre de déclenchements, taux de succès, nombre de filtrés (« Tout filtré (aucun envoi) », « Jamais déclenché »). Le taux de succès ne compte pas les événements filtrés : un workflow qui filtre comme demandé n'est pas pénalisé. Actions : **Pause / Activer**, **Éditer**, **Supprimer**. Filtres par source, destination, statut et nom.

Si aucune destination n'est connectée, une bannière prévient : « Aucun pixel connecté. Tes conversions seront sauvegardées mais ne se déclencheront pas. » Le créateur guidé avertit aussi quand un workflow actif envoie déjà le même événement vers la même plateforme sans filtre distinctif (risque de doublon).

## 3. La garde « aucun événement sans identifiant »

Une régie ne peut pas rattacher un événement à une personne sans identifiant. Avant chaque envoi, DURUM vérifie donc que l'événement en porte un ; sinon il n'est **pas envoyé** et le journal l'explique.

- **Facebook** : il faut au moins un identifiant fort (courriel `em`, téléphone `ph`, `fbc`, `fbp`, `external_id` ou `lead_id`), à défaut prénom **et** nom, à défaut adresse IP **et** navigateur. Sinon, statut **Ignoré** avec le motif `meta_sans_identifiant: ni courriel, ni telephone, ni nom, ni fbc/fbp, ni IP+navigateur (Meta refuse, sous-code 2804050)`.
- **Google** : il faut un identifiant de clic (`gclid`, `wbraid`, `gbraid`), un courriel ou un téléphone. Sinon, statut **Ignoré** avec le motif `google_sans_identifiant: ni clic (gclid/wbraid/gbraid), ni courriel, ni telephone`.

Pourquoi cette garde : Meta traite un lot entier dans une seule requête. Un seul événement vide faisait refuser le lot complet, jusqu'à 24 événements sains avec lui, et chaque reprise rejouait la même erreur. Depuis, l'événement vide est écarté avant l'envoi, et si un lot est quand même refusé pour un paramètre invalide, chaque événement du lot repart **seul** pour isoler le fautif.

Sont également écartés, jamais envoyés : les contacts de test ou neutralisés, les identités fictives (numéros `555-01xx`, domaines réservés) et les appels de webhook en double (même workflow, même courriel, à quelques minutes d'intervalle).

## 4. Journal des envois

Le journal liste chaque envoi avec son **statut**, la destination, le nom du workflow et de l'événement envoyé, la date, le nombre d'essais. Cliquer sur une ligne ouvre le détail : **Pourquoi ce statut ?**, l'identifiant d'événement (dédoublonnage), la date planifiée et la date d'envoi, puis trois blocs : **Données envoyées à la plateforme**, **Réponse de la plateforme**, **Données de l'événement déclencheur**. Pour un événement filtré, chaque condition est affichée avec son verdict et la valeur réellement reçue.

| Statut | Signification |
|--------|---------------|
| Envoyé | Accepté par la plateforme |
| En attente | En file d'envoi, pris en charge au prochain passage (toutes les minutes) |
| Envoi en cours | Envoi vers la plateforme en cours |
| Échec | L'envoi a échoué ; il sera réessayé automatiquement, ou vous pouvez le renvoyer maintenant |
| Abandonné | Cinq tentatives échouées, plus aucun réessai automatique : corrigez la cause, puis renvoyez |
| Filtré | Comportement normal : les filtres du workflow excluent cet événement |
| Ignoré | Non envoyé : la donnée source était incomplète au moment du traitement (garde ci-dessus, contact de test, construction impossible) |

Filtres du journal : statut, destination, conversion. Pagination de 50 lignes. Les compteurs par statut restent visibles quel que soit le filtre.

### Renvoyer

Un bandeau apparaît dès qu'il existe des envois en **Échec** ou **Abandonné** : « N envois en échec ne sont jamais arrivés à destination. Les données sont conservées : le renvoi est possible. » Le bouton **Tout renvoyer** (ou **Renvoyer** sur une ligne) remet ces événements en file avec un compteur d'essais à zéro. Un événement **Ignoré** n'est pas rejouable : c'est la donnée source qu'il faut corriger, puis un nouvel événement partira.

### Cadence et reprises

Les envois partent **toutes les minutes**, par lots de 25 événements maximum par destination, sans jamais mélanger deux pixels ou deux actions de conversion Google dans un même appel. En cas d'échec, cinq tentatives avec des délais croissants (5 s, 30 s, 5 min, 30 min, 6 h), puis **Abandonné**.

## Dépannage

| Symptôme | Cause probable et correctif |
|----------|-----------------------------|
| « Aucun pixel trouvé via le compte Meta connecté » | Connectez le compte Meta Ads dans Intégrations, ou saisissez le pixel manuellement |
| « Connecte d'abord le compte Google Ads dans Intégrations » | La connexion Google Ads est absente ; les conversions la réutilisent |
| « Aucune action de conversion active dans ce compte » | Créez dans Google Ads une action de type « Importer, autres sources de données ou CRM » |
| Beaucoup de lignes **Ignoré** avec `meta_sans_identifiant` | Vos formulaires ou calendriers n'envoient ni courriel ni téléphone : vérifiez l'intégration source |
| Lignes **Abandonné** | Jeton expiré, pixel invalide ou permissions manquantes : consultez la **Réponse de la plateforme**, corrigez la connexion (bouton **Tester**), puis **Tout renvoyer** |
| Un workflow enregistré ne se déclenche jamais | Aucune destination connectée (badge **INACTIF**), ou workflow en pause |
| Les événements n'apparaissent que dans Test events | Le workflow est en **MODE TEST** : décochez le mode test dans l'action |

## Qui y a accès

L'onglet demande la permission **Intégrations** (`settings_integrations`), accordée par défaut aux rôles propriétaire, administrateur, media buyer, membre et client ; le directeur des ventes, le représentant et l'observateur ne l'ont pas. Un client ou un compte en essai ne voit que les conversions de son propre compte.

---

Source: https://docs.durum.ai/pages/parametres-conversions
