> For the complete documentation index, see [llms.txt](https://doc.commandersact.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://doc.commandersact.com/fr/fonctionnalites/destinations/destinations-catalog/facebook/facebook-conversions-api.md).

# Facebook Conversions API

alias Facebook CAPI

[Facebook ](https://www.facebook.com/)est un service de médias sociaux et de réseau social en ligne détenu par [Meta](https://www.meta.com).\
Cette destination vous permet d'envoyer directement vers Facebook tout type d'événement via API : en envoyant des conversions en ligne et hors ligne, vous pouvez augmenter la portée et la précision de vos campagnes.

Vous pouvez, par exemple, ne pas envoyer aux utilisateurs ayant déjà acheté un produit les campagnes liées à ce produit spécifique, ou vous pouvez aussi envoyer des campagnes aux utilisateurs ayant acheté un produit spécifique dans une logique de cross-sell.

## Comment envoyer des événements à Facebook ?

Facebook a développé une API appelée 'Facebook Conversions API' <https://developers.facebook.com/docs/marketing-api/conversions-api>

Vous avez besoin d'un compte Facebook Business Manager <https://business.facebook.com/>

Puis, dans le menu, cliquez sur 'Events Manager' :

![Events Manager](https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-05193d4de0332f3d3712f960e42bce6a1085de0c%2Fcapture-de-cran-2020-10-29-a-10.30.43.png?alt=media\&token=136c164e-6ddd-4703-8eaa-d3c5068b5c3f)

Ici, vous devez créer un nouveau Web Pixel :

![Nouveau Web Pixel](https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-42e8808fc941ff07a1b58f89f384978ea0bbc9c5%2Fcapture-de-cran-2020-10-29-a-12.01.41.png?alt=media\&token=bbafefdc-1a11-499f-8a9f-884a29f2e0e0)

Sélectionnez Conversions API et donnez un nom à votre connexion :

![](https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-bc0ed9d57cb8dd326ba7b7eb2b3954ccd57278c3%2Fcapture-de-cran-2020-10-29-a-12.02.46.png?alt=media\&token=cd961d98-381f-4ba5-b95f-95ccd66b5ee9)

Votre pixel est maintenant créé et vous aurez accès aux ID nécessaires sur notre connecteur.

## Où puis-je trouver le Pixel ID ?

Vous devez renseigner le Pixel ID dans notre connecteur, c'est l'ID du pixel que vous venez de créer aux étapes ci-dessus.

Vous pouvez trouver cet ID lorsque vous cliquez sur le nom du pixel et à droite des activités du graphique. Vous pouvez aussi le trouver dans l'onglet des paramètres.

![Trouver le Pixel ID](https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-c4a4c3fff2991ca0e75e8388e8528d6652b306f0%2Fcapture-de-cran-2020-10-29-a-12.13.54.png?alt=media\&token=e1d0e725-c854-4e78-9617-7e276e53e726)

Vous pouvez maintenant copier et coller cet ID dans notre connecteur.

Ensuite, vous avez besoin du jeton d'accès

## Où puis-je trouver le jeton d'accès ?

Vous pouvez définir votre jeton d'accès de deux façons :

1. Facebook Login For Business Authentication
2. Générer un token longue durée

{% hint style="info" %}
Si vous configurez les deux, la « Facebook Login For Business Authentication » sera prioritaire.
{% endhint %}

### Facebook Login For Business Authentication

{% hint style="success" %}
C'est la méthode d'authentification recommandée.
{% endhint %}

1. Dans [votre compte Commanders Act](https://app.commandersact.com/), accédez à `(1) Administration` → `(2) Identifiants du connecteur` ou cliquez sur le lien `ajouter un nouveau compte` dans les paramètres de destination.\
   \
   ![](https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-c29c9035ed0f8f9a9ca72da232341c8914423f1a%2Ftoken_1.png?alt=media)\\
2. Cliquez `(3) Ajouter des identifiants de connecteur` en haut à droite :\
   \
   ![](https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-d11166531dd35851086dd43afed2317a0bfcecf8%2Ftoken_2.png?alt=media)\\
3. Sélectionnez `(4) Facebook Ads`\
   \
   ![](https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-c568d18392c4e6d7d5232caf4179b6894e7ef1df%2Ftoken_3.png?alt=media)\\
4. Connectez-vous avec les identifiants de votre compte Facebook.
5. Accédez aux paramètres de votre destination et sélectionnez vos identifiants ajoutés dans le menu déroulant sous `(5) Authentification API` → `(6) Identifiants`\
   \
   ![](https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-13a4fd19caef40d786074f302982a133c6b9cc95%2Ftoken_4.png?alt=media)
6. Enregistrez les paramètres de votre destination.

### Générer un token longue durée

1. Accédez à [Meta Event Manager](https://www.facebook.com/events_manager2/)
2. Dans le menu de gauche, sélectionnez `(1)` `Sources de données` .

![](https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-0408a68e9579210479f2439b3cd870219ef827b7%2Ffacebook_capi_1.png?alt=media)

3. Localisez votre `(2)` jeu de données existant et sélectionnez-le ou [créez un nouveau jeu de données](https://www.facebook.com/business/help/5818684664831465?id=490360542427371).

![](https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-201de67954592e6f286a7104b5f6e6eea84911c9%2Ffacebook_capi_2.png?alt=media)

4. Cliquez sur l'onglet `(3)` `Paramètres`

![](https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-a682f428fd56018a4f256526061ee75dba3cf85b%2Ffacebook_capi_3.png?alt=media)

5. Localisez le lien `(4)` `Générer un jeton d'accès` et cliquez dessus pour générer un jeton d'accès

![](https://3282103337-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-Mk6XpTQ2LaRLcr2tA-d%2Fuploads%2Fgit-blob-657c8883aa160ff85195ed0a48450c30c9d7bde9%2Ffacebook_capi_4.png?alt=media)

{% hint style="warning" %}
Si vous ne pouvez pas cliquer sur le lien « Générer un jeton d'accès », alors vous n'avez pas les droits d'administration.
{% endhint %}

6. Copiez et collez votre jeton d'accès dans le champ `Jeton d'accès API` dans votre destination et enregistrez les paramètres de votre destination.

## Comment gérer les consentements ?

* Seuls les événements avec un consentement seront envoyés à Facebook
* Seules les conversions contenant des informations personnelles (e-mail et/ou numéro de téléphone...) seront envoyées à Facebook

### Pour les clients disposant de notre produit TRUST Commander :

TRUST Commander est notre plateforme de gestion du consentement. (Plus d'informations : <https://www.commandersact.com/en/solutions/trustcommander/>)

Sur le connecteur, le consentement est géré avec le champ 'User Consent Category'. Vous devez renseigner un ID de catégorie, celui correspondant à Facebook (advertising) dans les catégories de consentement Trust.

### Pour les clients sans notre produit TRUST Commander :

Nous devons distinguer 3 cas :

* Vos événements en ligne sont collectés via notre tag d'événement Commanders Act : vous devez fournir, dans les tags d'événement, la liste des ID de catégories consenties par l'utilisateur, via le `consent_categories` property.
* Vous nous envoyez vos événements via API ou fichier CSV : un champ `consent_categories` doit être ajouté au JSON ou au CSV pour préciser les ID des catégories de consentement de l'utilisateur. Ensuite, dans le paramétrage du connecteur, utilisez le champ 'User Consent Category' pour saisir un ID de catégorie, celui correspondant à Facebook (advertising)
* Vous gérez déjà les consentements de votre côté et vous ne nous envoyez, depuis votre serveur,

  que les événements ayant obtenu le consentement pour la catégorie advertising.\
  Dans ce cas, ne remplissez pas le champ ‘User Consent Category’ dans le connecteur.

## Comment est gérée la déduplication entre le pixel et le serveur ?

L'utilisation conjointe du pixel et du serveur est recommandée par Facebook, car cela peut éviter de perdre des données.

Pour que cela fonctionne, vous devez avoir la même configuration pour le pixel et le serveur, en utilisant les mêmes paramètres Facebook.

{% hint style="warning" %}
**event\_id** doit être le même
{% endhint %}

Sur le pixel, *`event_id`* est généré automatiquement par notre Commanders Act Tag et nous récupérons la même valeur pour le serveur sur `integrations.facebook.event_id`. En conséquence, ces 2 valeurs doivent être identiques. *`Event_name`* doit aussi être le même.

*`Fbp`* le paramètre est automatiquement récupéré afin de conserver la même valeur entre le pixel et le serveur.

La déduplication fonctionne lorsque le même événement est envoyé *d'abord* depuis le navigateur et *ensuite* depuis le serveur, sinon cela crée un doublon.\
Les événements sont envoyés en temps réel.

### Exemples

Sur le pixel :

```
fbq('track', 'AddToCart', {
  value: #CARTVALUE#,
  currency: #CURRENCY#,
  contents: fb_addtocart_products,
  content_type: 'product'
}, { eventID: tC.uniqueEventId });
```

`eventID: tC.uniqueEventId` est généré automatiquement.

Sur le serveur :

```
integrations.facebook.event_id
```

`integrations.facebook.event_id` récupère automatiquement la valeur eventID venant du pixel (`eventID: tC.uniqueEventId`) pour les événements standards.

## Correspondances avec les événements standard Facebook

La *destination Facebook CAPI* transformera l' *événement Commanders Act* comme...

```json
{
  "event_name": "purchase",
  "id": "purchase_id_1234",
  "type": "online",
  "user": {
    "email": "user@example.com",
    "id": "user_example_id",
    "tcId": "202205231352367212315156",
    "consistent_anonymous_id": "202205231352367212315156",
    "consent_categories": [ "1", "2", "3", "4" ]
  }
  "value": 246.9,
  "currency": "EUR",
  "items": [
    {
      "product": {
        "id": "product123"
      },
      "price": "123.45",
      "id": "ET",
      "item_category": "Car",
      "item_quantity": 2
    }
  ],
  "context": {
    "event_id": "1a01c3e940f150eb9b8c542587f1abfd8f0e1cc1f",
    "event_timestamp": 1707830130234,
    "page": {
      "location": {
        "href": "https://site.com/path?s=2",
        "hostname": "site.com",
        "pathname": "/path",
        "search": "?s=2"
      },
      "url": "https://site.com/path?s=2"
    },
    "device": {
      "ip": "123.123.123.123",
      "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36"
    },
    "cookie": "_fbp=fb.1.1653472342558.832801021; some_other=cookie;"
  },
  "integrations": {
    "facebook": {
      "custom_data": {
        "category": "category1"
      },
      "user_data": {
        "fbp": "fb.1.1558571054389.1098115397"
      }
    }
  },
}
```

...en *Facebook CAPI* événements comme :

```json
{
  "event_name": "Purchase",
  "event_time": 1707830130,
  "event_source_url": "https://site.com/path?s=2",
  "action_source": "website",
  "user_data": {
    "em": [
      "b4c9a289323b21a01c3e940f150eb9b8c542587f1abfd8f0e1cc1ffc5e475514"
    ],
    "external_id": [
      "user_example_id"
    ],
    "client_ip_address": "123.123.123.123",
    "client_user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36",
    "fbc": "fb.1.1554763741205.AbCdEfGhIjKlMnOpQrStUvWxYz1234567890",
    "fbp": "fb.1.1558571054389.1098115397"
  },
  "custom_data": {
    "id": "purchase_id_1234",
    "currency": "EUR",
    "value": 246.9,
    "contents": [
      {
        "id": "product123",
        "quantity": 2,
        "item_price": 123.45
      }
    ]
  }
}
```

Les correspondances suivantes sont entièrement automatisées et ne nécessitent, par défaut, aucune configuration supplémentaire. Vous pouvez toutefois les personnaliser comme suit.

### Correspondance : (racine)

{% embed url="<https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/server-event>" %}

{% hint style="info" %}
La plupart des propriétés peuvent être remappées à l'aide de notre fonctionnalité « Smart Mapping ».
{% endhint %}

<table data-header-hidden="false" data-header-sticky><thead><tr><th>Champs Smart Mapping</th><th width="381">Propriétés par défaut de Commanders Act</th><th>Propriétés Facebook</th></tr></thead><tbody><tr><td><code>-</code></td><td><code>event_id</code> <strong>[2][3]</strong></td><td><code>event_id</code> <strong>[1]</strong></td></tr><tr><td><code>-</code></td><td><code>event_name</code></td><td><code>event_name</code> <strong>[4]</strong></td></tr><tr><td><code>Horodatage de l'événement</code></td><td><code>context.event_timestamp</code></td><td><code>event_time</code> <strong>[5]</strong></td></tr><tr><td><code>URL source</code></td><td><code>context.page.url</code></td><td><code>event_source_url</code></td></tr><tr><td><code>URL du référent</code></td><td><code>context.page.referrer</code></td><td><code>referrer_url</code></td></tr><tr><td><code>-</code></td><td><p><code>Activer le suivi de l'App</code></p><p><code>type</code></p></td><td><code>action_source</code> <strong>[6]</strong></td></tr><tr><td><code>-</code></td><td><code>opt_out</code> <strong>[3]</strong></td><td><code>opt_out</code> <strong>[7]</strong></td></tr><tr><td><code>-</code></td><td><code>data_processing_options</code> <strong>[3]</strong></td><td><code>data_processing_options</code> <strong>[7]</strong></td></tr><tr><td><code>-</code></td><td><code>data_processing_options_country</code> <strong>[3]</strong></td><td><code>data_processing_options_country</code> <strong>[7]</strong></td></tr><tr><td><code>-</code></td><td><code>data_processing_options_state</code> <strong>[3]</strong></td><td><code>data_processing_options_state</code> <strong>[7]</strong></td></tr></tbody></table>

{% hint style="info" %}
**1.** Défini à partir des propriétés disponibles, dans l'ordre indiqué à gauche. Par défaut, une valeur générée aléatoirement sur la base de l'horodatage sera utilisée.\
**2.** Dans le chemin de base/la racine de votre événement.\
**3.** Dans <mark style="color:blue;">`integrations.facebook`</mark> de votre événement.\
**4.** Voir [Correspondance : event\_name](#mapping-event_name) pour plus de détails.\
**5.** Si aucune valeur n'est fournie, l'horodatage actuel est utilisé.\
**6.** Voir [Correspondance : action\_source](#mapping-action_source) pour plus de détails.\
**7.** Voir plus de détails via ce [lien](https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/server-event).
{% endhint %}

### Correspondance : `event_name`

Facebook Pixel spécifie [*Événements standard*](https://developers.facebook.com/docs/facebook-pixel/implementation/conversion-tracking#standard-events) dont la sémantique correspond aux événements du [*standard Commanders Act*](https://community.commandersact.com/platform-x/developers/tracking/events-reference)

Si la destination reçoit un *événement Commanders Act* dont `event_name` correspond à la liste, il sera automatiquement envoyé sous le *nom d'événement standard Facebook* associé. Sinon, il sera envoyé sans aucune transformation

<table data-header-hidden="false" data-header-sticky><thead><tr><th>Événements Commanders Act</th><th>Événements Facebook</th></tr></thead><tbody><tr><td><code>begin_checkout</code></td><td><code>InitiateCheckout</code></td></tr><tr><td><code>purchase</code></td><td><code>Purchase</code></td></tr><tr><td><code>add_to_cart</code></td><td><code>AddToCart</code></td></tr><tr><td><code>view_item</code></td><td><code>ViewContent</code></td></tr><tr><td><code>view_item_list</code></td><td><code>ViewContent</code></td></tr><tr><td><code>search</code></td><td><code>Search</code></td></tr><tr><td><code>add_payment_info</code></td><td><code>AddPaymentInfo</code></td></tr><tr><td><code>add_to_wishlist</code></td><td><code>AddToWishlist</code></td></tr><tr><td><code>generate_lead</code></td><td><code>Lead</code></td></tr><tr><td><code>page_view</code></td><td><code>PageView</code></td></tr><tr><td><code>sign_up</code></td><td><code>CompleteRegistration</code></td></tr><tr><td><code>contact</code></td><td><code>Contact</code></td></tr><tr><td><code>customize_product</code></td><td><code>CustomizeProduct</code></td></tr><tr><td><code>donate</code></td><td><code>Donate</code></td></tr><tr><td><code>find_location</code></td><td><code>FindLocation</code></td></tr><tr><td><code>schedule</code></td><td><code>Schedule</code></td></tr><tr><td><code>search</code></td><td><code>Search</code></td></tr><tr><td><code>start_trial</code></td><td><code>StartTrial</code></td></tr><tr><td><code>submit_application</code></td><td><code>SubmitApplication</code></td></tr><tr><td><code>subscribe</code></td><td><code>Subscribe</code></td></tr></tbody></table>

Exemples :

* Si la destination voit un `add_to_cart` événement *(DANS la liste)*, il enverra un `AddToCart` à Facebook CAPI
* Si la destination voit un `custom_name` événement *(PAS DANS la liste)*, il enverra un `custom_name` à Facebook CAPI *(aucune transformation)*

{% hint style="info" %}
**Remarque :** Vous pouvez personnaliser event\_name à l'aide de *Transformations de propriétés* dans les paramètres de destination.
{% endhint %}

### Correspondance : `action_source`

{% embed url="<https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/server-event>" %}

Par défaut, `action_source` sera défini sur `'website'` (la plupart des événements concernent une activité en ligne).\
`SI` `Activer le suivi de l'App` est coché ALORS `action_source='app'`

#### Spécificité des conversions hors ligne :

* `SI` votre événement possède la propriété `type='offline'`
* `ALORS` le *Événement Facebook* aura `action_source='physical_store'`
* `SINON` le *Événement Facebook* aura `action_source='website'`

Exemple :

```json
// CommandersAct
{
  "event_name": "purchase",
  "type": "offline",
  // ...
}

// Événement envoyé à l'API Facebook :
{
  "event_name": "Purchase",
  "action_source": "physical_store"
  "custom_data": { /* */ }
  // ...
}
```

Si vous devez écraser cette valeur, vous pouvez actuellement utiliser *Transformation des propriétés* pour définir `integrations.facebook.action_source`.

### Correspondance : `user_data`

{% embed url="<https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/customer-information-parameters>" %}

{% hint style="info" %}
La plupart des propriétés peuvent être remappées à l'aide de notre fonctionnalité « Smart Mapping ».
{% endhint %}

<table data-header-hidden="false" data-header-sticky><thead><tr><th>Champ Smart Mapping</th><th width="322">Propriétés par défaut de Commanders Act</th><th>Propriétés Facebook</th></tr></thead><tbody><tr><td><p><code>ID externe</code></p><p><code>-</code><br><code>-</code><br><code>-</code><br><code>-</code><br><code>-</code></p></td><td><p><code>user.id</code></p><p><code>user.id_sha256</code><br><code>context.device.sdk_id</code><br><code>user.tcId</code><br><code>user.tcid</code><br><code>user.tc_id</code></p></td><td><code>user_data.external_id</code> <strong>[1]</strong> (haché)</td></tr><tr><td><code>Email haché</code></td><td><code>user.email</code></td><td><code>user_data.em</code> (haché)</td></tr><tr><td><code>Numéro de téléphone haché</code></td><td><code>user.phone</code></td><td><code>user_data.ph</code> (haché)</td></tr><tr><td><code>Genre haché</code></td><td><code>user.gender</code></td><td><code>user_data.ge</code> (haché)</td></tr><tr><td><code>Date de naissance hachée</code></td><td><code>user.birthdate</code></td><td><code>user_data.db</code> (haché)</td></tr><tr><td><code>Prénom haché</code></td><td><code>user.firstname</code></td><td><code>user_data.fn</code> (haché)</td></tr><tr><td><code>Nom de famille haché</code></td><td><code>user.lastname</code></td><td><code>user_data.ln</code> (haché)</td></tr><tr><td><code>Ville hachée</code></td><td><code>user.city</code></td><td><code>user_data.ct</code> (haché)</td></tr><tr><td><code>État haché</code></td><td><code>user.state</code></td><td><code>user_data.st</code> (haché)</td></tr><tr><td><code>Code postal haché</code></td><td><code>user.zipcode</code></td><td><code>user_data.zp</code> (haché)</td></tr><tr><td><code>Pays haché</code></td><td><code>user.country</code></td><td><code>user_data.country</code> (haché)</td></tr><tr><td><code>Adresse IP</code></td><td><code>ip</code> <strong>[3][4]</strong></td><td><code>user_data.client_ip_address</code></td></tr><tr><td><code>User Agent</code></td><td><code>user_agent</code> <strong>[3][4]</strong></td><td><code>user_data.client_user_agent</code></td></tr><tr><td><code>-</code></td><td><code>fbc</code> <strong>[2]</strong><br><code>Le cookie "_fbc"</code> <strong>[5]</strong></td><td><code>user_data.fbc</code> (Click ID)</td></tr><tr><td><code>-</code></td><td><code>fbp</code> <strong>[2]</strong><br><code>Le cookie "_fbp"</code> <strong>[5]</strong></td><td><code>user_data.fbp</code> (Browser ID)</td></tr><tr><td><code>Anon ID</code></td><td><code>advertising_id</code> <strong>[3]</strong></td><td><code>user_data.anon_id</code> <strong>[6]</strong></td></tr><tr><td><code>ID d'annonceur mobile</code></td><td><code>advertising_id</code> <strong>[3]</strong></td><td><code>user_data.madid</code> <strong>[6]</strong></td></tr><tr><td><code>Facebook Login ID</code></td><td><code>partners.facebook.fb_login_id</code></td><td><code>user_data.fb_login_id</code> <strong>[7]</strong></td></tr><tr><td><code>-</code></td><td><code>user_data[Nom de la propriété]</code> <strong>[8]</strong></td><td><code>user_data[Nom de la propriété]</code></td></tr></tbody></table>

{% hint style="info" %}
**1.** Chaîne séparée par des virgules : les valeurs dans l'ordre indiqué à gauche.\
**2.** Dans <mark style="color:blue;">`integrations.facebook`</mark> ou dans la racine de vos événements, le premier ayant la priorité.\
**3.** Dans <mark style="color:blue;">`context.device`</mark> de votre événement.\
**4.** Défini automatiquement s'il est généré par Commanders Act OneTag.\
**5.** Créé automatiquement par le client-side tag Facebook Pixel.\
**6.** Uniquement pour les événements d'application.\
**7.** L'identifiant attribué par Meta lorsqu'une personne se connecte pour la première fois à une instance d'une application. Il est aussi connu sous le nom d'App-Scoped ID.\
**8.** Dans <mark style="color:blue;">`integrations.facebook`</mark> de votre événement.
{% endhint %}

Chaque propriété peut être remplacée via `integrations.facebook.user_data.<property>`

#### Informations minimales requises <a href="#minimal-required-information" id="minimal-required-information"></a>

Les événements ne peuvent être utilisés que s'il y a suffisamment d'informations pour faire correspondre un utilisateur. Facebook attend au moins une `user_data` propriété, mais recommande fortement d'envoyer autant de propriétés que possible.

Voici nos conditions pour envoyer les événements :

* au moins 1 de ces champs : `em`, `ph`, `external_id`, `fbp`, `fbc`
* au moins 3 des autres champs

**Remarque :** external\_id, fbp, fbc permettront d'associer l'événement à d'autres événements. Mais pour associer un utilisateur, l'un de ces événements doit contenir des informations supplémentaires (`em` et `ph` sont les plus adaptés à l'association)

### Correspondance : `custom_data`

{% embed url="<https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/custom-data>" %}

{% hint style="info" %}
La plupart des propriétés peuvent être remappées grâce à notre fonctionnalité "Smart Mapping".\
Les champs `custom_data.contents` et `custom_data.content_ids` sont mutuellement exclusifs, ce qui signifie qu'un seul d'entre eux peut être présent selon cette logique :

* Si toutes ces propriétés sont présentes et définies dans items : `product.id` , `quantity` , et `product.price` , alors `custom_data.contents` est renseigné avec toutes les informations produit.
* sinon, `custom_data.content_ids` est renseigné avec toutes les `product.id` .
  {% endhint %}

<table data-header-hidden="false" data-header-sticky><thead><tr><th width="232">Champs Smart Mapping</th><th width="414">Propriétés par défaut de Commanders Act</th><th width="336">Propriétés Facebook</th></tr></thead><tbody><tr><td><code>Valeur</code></td><td><code>valeur</code></td><td><code>custom_data.value</code></td></tr><tr><td><p><code>Devise</code></p><p><code>-</code></p></td><td><p><code>devise</code></p><p><code>items.0.currency</code></p></td><td><code>custom_data.currency</code></td></tr><tr><td><code>Revenu net</code></td><td><code>partners.facebook.net_revenue</code></td><td><code>custom_data.net_revenue</code></td></tr><tr><td><code>ID de commande</code></td><td><code>id</code></td><td><code>custom_data.order_id</code></td></tr><tr><td><code>-</code></td><td><code>search_term</code></td><td><code>custom_data.search_string</code></td></tr><tr><td><code>-</code></td><td><code>items.X.product.id</code></td><td><code>custom_data.contents.X.id</code> <strong>[1]</strong></td></tr><tr><td><code>-</code></td><td><code>items.X.quantity</code></td><td><code>custom_data.contents.X.quantity</code> <strong>[1]</strong></td></tr><tr><td><code>-</code></td><td><code>items.X.product.price</code></td><td><code>custom_data.contents.X.item_price</code> <strong>[1]</strong></td></tr><tr><td><code>-</code></td><td><code>items.0.product.name</code></td><td><code>custom_data.content_name</code></td></tr><tr><td><code>-</code></td><td><code>items.0.product.category_1</code></td><td><code>custom_data.content_category</code></td></tr><tr><td><code>-</code></td><td><code>items.X.product.id</code></td><td><code>custom_data.content_ids</code> <strong>[2]</strong></td></tr><tr><td><p><code>Type de contenu</code></p><p><code>-</code></p></td><td><p><code>partners.facebook.content_type</code></p><p><code>Valeur du type de contenu</code></p></td><td><code>custom_data.content_type</code> <strong>[3]</strong><br><code>custom_data.fb_content_type</code> <strong>[4]</strong></td></tr><tr><td><code>-</code></td><td><code>status</code></td><td><code>custom_data.status</code></td></tr><tr><td><code>Articles</code></td><td><code>items.length</code></td><td><code>custom_data.num_items</code></td></tr><tr><td><code>-</code></td><td><code>Envoyez toutes les propriétés de votre événement comme données personnalisées</code></td><td><code>custom_data[Nom de la propriété]</code> <strong>[5]</strong></td></tr><tr><td><code>Données personnalisées supplémentaires</code></td><td><code>custom_data[Nom de la propriété]</code> <strong>[6]</strong></td><td><code>custom_data[Nom de la propriété]</code></td></tr></tbody></table>

{% hint style="info" %}
**1.** Mutuellement exclusif avec `custom_data.content_ids` et défini si toutes les propriétés suivantes sont présentes et valides : `items.X.product.id` , `items.X.product.price` , `items.x.quantity` .\
**2.** Tableau contenant tous les identifiants de produits. Mutuellement exclusif avec `custom_data.contents`.\
**3.** Défini lorsque <mark style="color:blue;">`action_source`</mark> est <mark style="color:blue;">`site web`</mark> ou <mark style="color:blue;">`physical_store`</mark> . Selon la valeur sélectionnée pour <mark style="color:blue;">`Valeur du type de contenu`</mark> , que vous pouvez trouver sous <mark style="color:blue;">`Paramètres avancés`</mark> , il s'agit soit de <mark style="color:blue;">`product`</mark> ou non défini. Le champ Smart Mapping <mark style="color:blue;">`Type de contenu`</mark> est prioritaire sur <mark style="color:blue;">`Valeur du type de contenu`</mark> .\
**4.** Défini lorsque <mark style="color:blue;">`action_source`</mark> est <mark style="color:blue;">`app`</mark> .\
**5.** Lorsque <mark style="color:blue;">`Envoyez toutes les propriétés de votre événement comme données personnalisées`</mark> est cochée, toutes les propriétés de votre événement de type "string", "number" et "boolean" seront incluses dans <mark style="color:blue;">`custom_data`</mark> avec le même nom de propriété.\
**6.** Dans <mark style="color:blue;">`integrations.facebook`</mark> dans votre événement.
{% endhint %}

#### Comportement par défaut

Facebook spécifie des règles pour [les propriétés standard](https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/custom-data). Le reste est totalement libre.

Par défaut, nous renseignons `custom_data` comme suit :

1. Nous copions toutes les *CommandersAct Event* propriétés dans `custom_data` (sauf certains champs de contexte comme `source_key`)
2. Ensuite, nous faisons correspondre les propriétés standard selon le tableau ci-dessus (peut écraser les valeurs du point 1).
3. Enfin, nous remplaçons par `integrations.facebook.custom_data.<property>` si elle existe

#### Écraser `custom_data`

Le meilleur choix serait d'utiliser *Transformation des propriétés* pour modifier les propriétés de votre événement qui seront copiées dans `custom_data`.

Mais vous pouvez remplacer la valeur finale en utilisant `integrations.facebook.custom_data.<property>`.

Exemple :

```
cact('trigger', 'purchase', {
    "currency": "EUR",
    "value": 101,
    "integrations": {
        "facebook": {
            "custom_data": {
                "content_name": "some_custom_name",
                "your_field": "your_value"
            }
        }
    }
});
```

### Correspondance : `app_data`

{% embed url="<https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/app-data>" %}

{% hint style="info" %}
La plupart des propriétés peuvent être remappées à l'aide de notre fonctionnalité « Smart Mapping ».
{% endhint %}

<table data-header-hidden="false" data-header-sticky><thead><tr><th>Champs Smart Mapping</th><th>Propriétés Commanders Act</th><th>Propriétés Facebook</th></tr></thead><tbody><tr><td><code>Suivi de l'annonceur activé</code></td><td><code>ad_tracking_enabled</code> <strong>[1]</strong></td><td><code>advertiser_tracking_enabled</code> <strong>[*]</strong></td></tr><tr><td><code>Suivi de l'application activé</code></td><td><code>application_tracking_enabled</code> <strong>[1]</strong></td><td><code>application_tracking_enabled</code> <strong>[*]</strong></td></tr><tr><td><code>IDs de campagne</code></td><td><code>context.campaign.name</code></td><td><code>campaign_ids</code></td></tr><tr><td><code>-</code></td><td><code>install_referrer</code> <strong>[2]</strong></td><td><code>install_referrer</code></td></tr><tr><td><code>-</code></td><td><code>installer_package</code> <strong>[2]</strong></td><td><code>installer_package</code></td></tr><tr><td><code>-</code></td><td><code>url_schemes</code> <strong>[2]</strong></td><td><code>url_schemes</code></td></tr><tr><td><code>-</code></td><td><code>windows_attribution_id</code> <strong>[2]</strong></td><td><code>windows_attribution_id</code></td></tr><tr><td><code>Type d'OS</code></td><td><code>type</code> <strong>[1]</strong></td><td><code>extinfo[0]</code> <strong>[3]</strong></td></tr><tr><td><code>Nom du package de l'application</code></td><td><code>app.namespace</code> <strong>[1]</strong></td><td><code>extinfo[1]</code></td></tr><tr><td><code>Build de l'application</code></td><td><code>app.build</code> <strong>[1]</strong></td><td><code>extinfo[2]</code></td></tr><tr><td><code>Version de l'application</code></td><td><code>app.version</code> <strong>[1]</strong></td><td><code>extinfo[3]</code></td></tr><tr><td><code>Version de l'OS</code></td><td><code>os.version</code> <strong>[1]</strong></td><td><code>extinfo[4]</code></td></tr><tr><td><code>Modèle de l'appareil</code></td><td><code>model</code> <strong>[1]</strong></td><td><code>extinfo[5]</code></td></tr><tr><td><code>Langue de l'appareil</code></td><td><code>language</code> <strong>[1]</strong></td><td><code>extinfo[6]</code></td></tr><tr><td><code>Fuseau horaire abrégé de l'appareil</code></td><td><code>[Aucun champ par défaut]</code> <strong>[4]</strong></td><td><code>extinfo[7]</code></td></tr><tr><td><code>Opérateur réseau</code></td><td><code>network.carrier</code> <strong>[1]</strong></td><td><code>extinfo[8]</code></td></tr><tr><td><code>Largeur de l'écran</code></td><td><code>screen.width</code> <strong>[1]</strong></td><td><code>extinfo[9]</code></td></tr><tr><td><code>Hauteur de l'écran</code></td><td><code>screen.height</code> <strong>[1]</strong></td><td><code>extinfo[10]</code></td></tr><tr><td><code>Densité de l'écran</code></td><td><code>screen.density</code> <strong>[1]</strong></td><td><code>extinfo[11]</code></td></tr><tr><td><code>Cœurs CPU</code></td><td><code>[Aucun champ par défaut]</code> <strong>[5]</strong></td><td><code>extinfo[12]</code></td></tr><tr><td><code>Taille du stockage externe</code></td><td><code>[Aucun champ par défaut]</code> <strong>[6]</strong></td><td><code>extinfo[13]</code></td></tr><tr><td><code>Taille du stockage disponible</code></td><td><code>[Aucun champ par défaut]</code> <strong>[7]</strong></td><td><code>extinfo[14]</code></td></tr><tr><td><code>Fuseau horaire de l'appareil</code></td><td><code>timezone</code> <strong>[1]</strong></td><td><code>extinfo[15]</code></td></tr></tbody></table>

{% hint style="info" %}
**\*** Propriété obligatoire.\
**1.** Dans <mark style="color:blue;">`context.device`</mark> de votre événement.\
**2.** Dans <mark style="color:blue;">`integrations.facebook`</mark> ou dans la racine de vos événements, le premier ayant la priorité.\
**3.** Lorsque <mark style="color:blue;">`context.device.type`</mark> est défini avec <mark style="color:blue;">`Android`</mark> ou <mark style="color:blue;">`iOS`</mark> (insensible à la casse), cela est défini avec <mark style="color:blue;">`a2`</mark> ou <mark style="color:blue;">`i`</mark>`2` respectivement.\
**4.** Peut être défini dans <mark style="color:blue;">`Smart Mapping`</mark> → <mark style="color:blue;">`Données de l'application`</mark> → <mark style="color:blue;">`Fuseau horaire abrégé de l'appareil`</mark> .\
**5.** Peut être défini dans <mark style="color:blue;">`Smart Mapping`</mark> → <mark style="color:blue;">`Données de l'application`</mark> → <mark style="color:blue;">`Cœurs CPU`</mark> .\
**6.** Peut être défini dans <mark style="color:blue;">`Smart Mapping`</mark> → <mark style="color:blue;">`Données de l'application`</mark> → <mark style="color:blue;">`Taille du stockage externe`</mark> .\
**7.** Peut être défini dans <mark style="color:blue;">`Smart Mapping`</mark> → <mark style="color:blue;">`Données de l'application`</mark> → <mark style="color:blue;">`Taille du stockage disponible`</mark> .
{% endhint %}

### `integrations.facebook.*` dépréciation

{% hint style="warning" %}
`integrations.facebook.*` l'utilisation sera dépréciée.\
La fonctionnalité fonctionne toujours, mais il est recommandé d'utiliser les paramètres de destination à la place pour des raisons de maintenance et de fiabilité.
{% endhint %}

## Vérifiez les résultats dans l'interface Facebook

Pour voir la qualité de l'appariement dans l'interface Facebook, allez ici :\
**Gestionnaire d'événements** **>** **sélectionnez l'événement > Voir les détails > Appariement des événements > Contexte de notation**

## Comment envoyer des conversions hors ligne

La méthode recommandée consiste à utiliser le [HTTP Tracking API](/fr/fonctionnalites/sources/sources-catalog/server/http-tracking-api.md) source pour envoyer vos événements hors ligne depuis vos serveurs (ou tout autre émetteur).\
Il vous suffit d'envoyer un [événement d'achat](/fr/developpeurs/tracking-and-integrations/tracking/events-reference.md#purchase) avec la `type` propriété égale à `offline`\
Plus de détails sur le mappage automatique ici : [Mappage de action\_source](#offline-conversions-specificity)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://doc.commandersact.com/fr/fonctionnalites/destinations/destinations-catalog/facebook/facebook-conversions-api.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
