> 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

[Facebook ](https://www.facebook.com/)est un service de médias sociaux et de réseautage social en ligne détenu par [Meta](https://www.meta.com).\
Cette destination vous permet d'envoyer directement tout type d'événement à Facebook 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 de campagnes liées à un produit spécifique aux utilisateurs qui l'ont déjà acheté, ou envoyer aussi des campagnes aux utilisateurs qui ont 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](/files/5b89e6ce71a0c83e62a8068270c695d24563c4ed)

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

![Nouveau Web Pixel](/files/6ed3f4674f04919692969f52d183963dacb96aef)

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

![](/files/b62946f989b4836d87561665764e19127b9c8e94)

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

## Où puis-je trouver l'ID du Pixel ?

Vous devez renseigner l'ID du pixel 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 l'ID du Pixel](/files/5dc3ee77ef5a13969bde8f998e902aa4b9b23ab3)

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

Ensuite, vous avez besoin de l'Access Token

## Où puis-je trouver l'access token ?

Vous pouvez définir votre access token de deux façons :

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

{% hint style="info" %}
Si vous configurez les deux, « 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) Connector Credentials` ou cliquez sur le lien `ajouter un nouveau compte` dans les paramètres de la destination.\
   \
   ![](/files/2a11325b156e49ffd50ac976300a463f85b6d592)\\
2. Cliquez sur `(3) Add connector credentials` en haut à droite :\
   \
   ![](/files/b20129590571ac2b846174ac9979dade1882dd16)\\
3. Sélectionnez `(4) Facebook Ads`\
   \
   ![](/files/7860127a63d6187789a4817a53751cf6f862ce34)\\
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) API Authentication` → `(6) Credentials`\
   \
   ![](/files/fce68502f40418245b892740a11db032cc6d2710)
6. Enregistrez les paramètres de votre destination.

### Générez 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` .

![](/files/12bf468c054e8b4fbf3a5ea38b8c8f76356b29a7)

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).

![](/files/ca6098faf9d90419a18007ea5c0fab2df1a7f97a)

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

![](/files/75bd2f939e7831421d6d4fb2164401e8d14b3fa8)

5. Repérez le lien `(4)` `Generate access token` et cliquez dessus pour générer un access token

![](/files/c02369daf2fc441c0bd65e06440f408ee5b04c1e)

{% hint style="warning" %}
Si vous ne pouvez pas cliquer sur le lien « Generate access token », alors vous n'avez pas les droits d'administrateur.
{% endhint %}

6. Copiez et collez votre access token dans le champ `API Access Token` 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 (email 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 Consent Management Platform. (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 saisir un ID de catégorie, celui correspondant à Facebook (advertising) dans les catégories de consentement Trust.

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

Nous devons distinguer 3 cas :

* Vos événements en ligne sont collectés via le tag d'événement Commanders Act : vous devez fournir, dans les tags d'événements, la liste des ID de catégories consenties par l'utilisateur, via la `consent_categories` propriété.
* Vous nous transmettez 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ètre 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,

  des é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 la déduplication entre le pixel et le serveur est-elle gérée ?

Utiliser à la fois le pixel et le serveur est recommandé 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 automatiquement généré par notre Commanders Act Tag et nous récupérons la même valeur pour le serveur sur `integrations.facebook.event_id`. Par conséquent, ces 2 valeurs doivent être identiques. *`Event_name`* doit aussi être le même.

*`Fbp`* le paramètre est automatiquement récupéré pour 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 automatiquement généré.

Sur le serveur :

```
integrations.facebook.event_id
```

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

## Correspondances avec les Facebook Standard Events

Le *Facebook CAPI Destination* transformera le *Commanders Act* événement 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* des événements tels que :

```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 néanmoins personnaliser chacune d'elles 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><thead><tr><th width="381">Propriétés Commanders Act</th><th>Propriétés Facebook</th></tr></thead><tbody><tr><td><code>event_id</code> <strong>[2][3]</strong></td><td><code>event_id</code> <strong>[1]</strong></td></tr><tr><td><code>event_name</code></td><td><code>event_name</code> <strong>[4]</strong></td></tr><tr><td><code>context.event_timestamp</code></td><td><code>event_time</code> <strong>[5]</strong></td></tr><tr><td><code>context.page.url</code></td><td><code>event_source_url</code></td></tr><tr><td><code>context.page.referrer</code></td><td><code>referrer_url</code></td></tr><tr><td><p><code>Activer le suivi d'application</code></p><p><code>type</code></p></td><td><code>action_source</code> <strong>[6]</strong></td></tr><tr><td><code>opt_out</code> <strong>[3]</strong></td><td><code>opt_out</code> <strong>[7]</strong></td></tr><tr><td><code>data_processing_options</code> <strong>[3]</strong></td><td><code>data_processing_options</code> <strong>[7]</strong></td></tr><tr><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>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éfinissez-la en fonction des propriétés disponibles, dans l'ordre indiqué à gauche. Par défaut, une valeur aléatoire générée à partir du timestamp est utilisée.\
**2.** Dans le chemin de base/la racine de votre événement.\
**3.** Dans <mark style="color:bleu;">`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, le timestamp actuel est utilisé.\
**6.** Voir [Correspondance : action\_source](#mapping-action_source) pour plus de détails.\
**7.** Voir plus de détails via ce [LINK](https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/server-event).
{% endhint %}

### Correspondance : `event_name`

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

Si la destination reçoit un *Commanders Act Event* avec `event_name` correspondant à la liste, il sera automatiquement envoyé sous le nom de *Facebook Standard Event* associé. Sinon, il sera envoyé sans aucune transformation

| Commanders Act Events | Facebook Events        |
| --------------------- | ---------------------- |
| `begin_checkout`      | `InitiateCheckout`     |
| `purchase`            | `Purchase`             |
| `add_to_cart`         | `AddToCart`            |
| `view_item`           | `ViewContent`          |
| `view_item_list`      | `ViewContent`          |
| `search`              | `Search`               |
| `add_payment_info`    | `AddPaymentInfo`       |
| `add_to_wishlist`     | `AddToWishlist`        |
| `generate_lead`       | `Lead`                 |
| `page_view`           | `PageView`             |
| `sign_up`             | `CompleteRegistration` |
| `contact`             | `Contact`              |
| `customize_product`   | `CustomizeProduct`     |
| `donate`              | `Donate`               |
| `find_location`       | `FindLocation`         |
| `schedule`            | `Schedule`             |
| `search`              | `Search`               |
| `start_trial`         | `StartTrial`           |
| `submit_application`  | `SubmitApplication`    |
| `subscribe`           | `Subscribe`            |

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 en utilisant *Properties Transformations* dans les paramètres de la 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 l'activité en ligne).\
`SI` `Activer le suivi d'application` est coché ALORS `action_source='app'`

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

* `SI` votre événement a la propriété `type='offline'`
* `ALORS` le *Facebook Event* aura `action_source='physical_store'`
* `SINON` le *Facebook Event* aura `action_source='website'`

Exemple :

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

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

Si vous devez écraser cette valeur, vous pouvez actuellement utiliser *Properties Transformation* 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><thead><tr><th width="405">Propriétés Commanders Act</th><th>Propriétés Facebook</th></tr></thead><tbody><tr><td><code>user.id</code> (haché)<br><code>context.device.sdk_id</code><br><code>user.tcId</code> , <code>user.tcid</code> ou <code>user.tc_id</code></td><td><code>user_data.external_id</code> <strong>[1]</strong></td></tr><tr><td><code>user.email</code></td><td><code>user_data.em</code> (email, haché)</td></tr><tr><td><code>user.phone</code></td><td><code>user_data.ph</code> (téléphone, haché)</td></tr><tr><td><code>user.gender</code></td><td><code>user_data.ge</code> (genre, haché)</td></tr><tr><td><code>user.birthdate</code></td><td><code>user_data.db</code> (date de naissance, hachée)</td></tr><tr><td><code>user.lastname</code></td><td><code>user_data.ln</code> (nom de famille, haché)</td></tr><tr><td><code>user.firstname</code></td><td><code>user_data.fn</code> (prénom, haché)</td></tr><tr><td><code>user.city</code></td><td><code>user_data.ct</code> (ville, hachée)</td></tr><tr><td><code>user.state</code></td><td><code>user_data.st</code> (état, haché)</td></tr><tr><td><code>user.zipcode</code></td><td><code>user_data.zp</code> (code postal, haché)</td></tr><tr><td><code>user.country</code></td><td><code>user_data.country</code> (haché)</td></tr><tr><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> <strong>[3][4]</strong></td><td><code>user_data.client_user_agent</code></td></tr><tr><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>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>advertising_id</code> <strong>[3]</strong></td><td><code>user_data.anon_id</code> <strong>[6]</strong><br><code>user_data.madid</code> <strong>[6]</strong></td></tr><tr><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>user_data[Nom de propriété]</code> <strong>[8]</strong></td><td><code>user_data[Nom de propriété]</code></td></tr></tbody></table>

{% hint style="info" %}
**1.** Chaîne séparée par des virgules : valeurs dans l'ordre fourni à gauche.\
**2.** Dans <mark style="color:bleu;">`integrations.facebook`</mark> ou à la racine de vos événements, le premier ayant la priorité.\
**3.** Dans <mark style="color:bleu;">`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 tag client-side 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 également connu sous le nom d'App-Scoped ID.\
**8.** Dans <mark style="color:bleu;">`integrations.facebook`</mark> de votre événement.
{% endhint %}

Chaque propriété peut être remplacée à l'aide de `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'en envoyer autant 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 faire correspondre un utilisateur, l'un de ces événements doit contenir des informations supplémentaires (`em` et `ph` sont les plus adaptés au matching)

### 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 à l'aide de 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 la logique suivante :

* 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 défini avec toutes les informations produit.
* sinon, `custom_data.content_ids` est défini avec tous les `product.id` .
  {% endhint %}

| Propriétés Commanders Act                                            | Propriétés Facebook                          |
| -------------------------------------------------------------------- | -------------------------------------------- |
| `value`                                                              | `custom_data.value`                          |
| <p><code>currency</code></p><p><code>items.0.currency</code></p>     | `custom_data.currency`                       |
| `partners.facebook.net_revenue`                                      | `custom_data.net_revenue`                    |
| `ID`                                                                 | `custom_data.order_id`                       |
| `search_term`                                                        | `custom_data.search_string`                  |
| `items.X.product.id`                                                 | `custom_data.contents.X.id` **\[1]**         |
| `items.X.quantity`                                                   | `custom_data.contents.X.quantity` **\[1]**   |
| `items.X.product.price`                                              | `custom_data.contents.X.item_price` **\[1]** |
| `items.0.product.name`                                               | `custom_data.content_name`                   |
| `items.0.product.category_1`                                         | `custom_data.content_category`               |
| `items.X.product.id`                                                 | `custom_data.content_ids` **\[2]**           |
| `Valeur du type de contenu`                                          | `custom_data.content_type` **\[3]**          |
| `status`                                                             | `custom_data.status`                         |
| `items.length`                                                       | `custom_data.num_items`                      |
| `Envoyez toutes les propriétés de votre événement comme custom data` | `custom_data[Nom de propriété]` **\[4]**     |
| `custom_data[Nom de propriété]` **\[5]**                             | `custom_data[Nom de propriété]`              |

{% 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 produit. Mutuellement exclusif avec `custom_data.contents`.\
**3.** Selon la valeur sélectionnée pour <mark style="color:bleu;">`Valeur du type de contenu`</mark> , que vous pouvez trouver sous <mark style="color:bleu;">`Paramètres avancés`</mark> , il s'agit soit de <mark style="color:bleu;">`product`</mark> soit de ne pas être défini.\
**4.** Lorsque <mark style="color:bleu;">`Envoyez toutes les propriétés de votre événement comme custom data`</mark> est coché, toutes les propriétés de votre événement de type "string", "number" et "boolean" seront incluses dans <mark style="color:bleu;">`custom_data`</mark> avec le même nom de propriété.\
**5.** Dans <mark style="color:bleu;">`integrations.facebook`</mark> dans votre événement.
{% endhint %}

#### Comportement par défaut

Facebook définit 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 remplissons `custom_data` comme suit :

1. Nous copions toutes les *propriétés de l'événement CommandersAct* dans `custom_data` (sauf certains champs contextuels comme `source_key`)
2. Ensuite, nous mappons les propriétés standard selon le tableau ci-dessus (cela peut écraser les valeurs 1)
3. Enfin, nous remplaçons avec `integrations.facebook.custom_data.<property>` si elle existe

#### Remplacer `custom_data`

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

Mais vous pouvez remplacer la valeur finale à l'aide de `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 %}

| Propriétés Commanders Act               | Propriétés Facebook                      |
| --------------------------------------- | ---------------------------------------- |
| `ad_tracking_enabled` **\[1]**          | `advertiser_tracking_enabled` **\[\*]**  |
| `application_tracking_enabled` **\[1]** | `application_tracking_enabled` **\[\*]** |
| `context.campaign.name`                 | `campaign_ids`                           |
| `install_referrer` **\[2]**             | `install_referrer`                       |
| `installer_package` **\[2]**            | `installer_package`                      |
| `url_schemes` **\[2]**                  | `url_schemes`                            |
| `windows_attribution_id` **\[2]**       | `windows_attribution_id`                 |
| `type` **\[1]**                         | `extinfo[0]` **\[3]**                    |
| `app.namespace` **\[1]**                | `extinfo[1]`                             |
| `app.build` **\[1]**                    | `extinfo[2]`                             |
| `app.version` **\[1]**                  | `extinfo[3]`                             |
| `os.version` **\[1]**                   | `extinfo[4]`                             |
| `model` **\[1]**                        | `extinfo[5]`                             |
| `langue` **\[1]**                       | `extinfo[6]`                             |
| `[Aucun champ par défaut]` **\[4]**     | `extinfo[7]`                             |
| `network.carrier` **\[1]**              | `extinfo[8]`                             |
| `screen.width` **\[1]**                 | `extinfo[9]`                             |
| `screen.height` **\[1]**                | `extinfo[10]`                            |
| `screen.density` **\[1]**               | `extinfo[11]`                            |
| `[Aucun champ par défaut]` **\[5]**     | `extinfo[12]`                            |
| `[Aucun champ par défaut]` **\[6]**     | `extinfo[13]`                            |
| `[Aucun champ par défaut]` **\[7]**     | `extinfo[14]`                            |
| `fuseau horaire` **\[1]**               | `extinfo[15]`                            |

{% hint style="info" %}
**\*** Propriété obligatoire.\
**1.** Dans <mark style="color:bleu;">`context.device`</mark> de votre événement.\
**2.** Dans <mark style="color:bleu;">`integrations.facebook`</mark> ou à la racine de vos événements, le premier ayant la priorité.\
**3.** Lorsque <mark style="color:bleu;">`context.device.type`</mark> est défini avec <mark style="color:bleu;">`Android`</mark> ou <mark style="color:bleu;">`iOS`</mark> (insensible à la casse), cela est défini avec <mark style="color:bleu;">`a2`</mark> ou <mark style="color:bleu;">`i`</mark>`2` respectivement.\
**4.** Peut être défini dans <mark style="color:bleu;">`Mappage intelligent`</mark> → <mark style="color:bleu;">`Données de l'application`</mark> → <mark style="color:bleu;">`Fuseau horaire abrégé de l'appareil`</mark> .\
**5.** Peut être défini dans <mark style="color:bleu;">`Mappage intelligent`</mark> → <mark style="color:bleu;">`Données de l'application`</mark> → <mark style="color:bleu;">`Cœurs CPU`</mark> .\
**6.** Peut être défini dans <mark style="color:bleu;">`Mappage intelligent`</mark> → <mark style="color:bleu;">`Données de l'application`</mark> → <mark style="color:bleu;">`Taille du stockage externe`</mark> .\
**7.** Peut être défini dans <mark style="color:bleu;">`Mappage intelligent`</mark> → <mark style="color:bleu;">`Données de l'application`</mark> → <mark style="color:bleu;">`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 plutôt les paramètres de destination pour des raisons de maintenance et de fiabilité.
{% endhint %}

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

Pour voir la qualité du matching dans l'interface Facebook, allez ici :\
**Events manager** **>** **sélectionnez l'événement > View Details > Event Matching > Rating Background**

## 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).\
Vous devez simplement envoyer un [événement d'achat](/fr/developpeurs/tracking-and-integrations/tracking/events-reference.md#purchase) avec le `type` propriété est égale à `offline`\
Plus de détails sur le mapping automatique ici : [Mappage 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:

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

The question should be specific, self-contained, and written in natural language.
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.
