# Pixel Tracking API

Pixel Tracking, également connu sous le nom de gifs 1x1, ou clear gifs, vous permet d’enregistrer des données depuis n’importe quel site web (ou application) **où JavaScript ou les requêtes POST ne sont pas autorisées**, mais où vous pouvez insérer une image (aka GET hit)

{% hint style="info" %}
Lorsque une requête POST est possible, veuillez préférer le [API de tracking http](/fr/fonctionnalites/sources/sources-catalog/server/http-tracking-api.md), plus pratique à utiliser.
{% endhint %}

## Appel d’événement basique

Pour envoyer un appel d’événement basique à l’aide du pixel tracking, construisez une requête GET vers l’URL du endpoint de tracking avec les paramètres de requête nécessaires. L’exemple suivant montre un appel d’événement basique pour suivre une page view :

{% code fullWidth="false" %}

```c
GET  https://collect.commander1.com/events?tc_s={siteId}&token={yourSourceKey}&event_name=page_view&prop1=value1
```

{% endcode %}

Dans l’exemple ci-dessus, remplacez `{siteId}` par l’ID de votre site (aka workspace), `{yourSourceKey}` par votre source key spécifique, et `value1` par la valeur souhaitée pour `prop1`. N’oubliez pas d’encoder les valeurs de chaîne dans l’URL, surtout si elles contiennent des caractères spéciaux ou des espaces.

## Appel d’événement avec des objets et des tableaux

Pixel tracking permet d’utiliser des structures de données plus complexes comme des objets et des tableaux. Pour les inclure dans vos appels d’événement, vous pouvez imbriquer les paramètres en indiquant les objets et leurs propriétés à l’aide de crochets, aussi bien pour les objets que pour les tableaux. Les noms des propriétés sont placés entre crochets et les propriétés imbriquées sont elles-mêmes placées entre leurs propres crochets. L’exemple suivant montre un appel d’événement avec des objets et des tableaux :

```json
{
  "event_name": "page_view",
  "tc_s": "1234",
  "token": "abcdef",
  "page_type": "product_list",
  "page_name": "Best sellers",
  "user": {
    "id": "12356",
    "email": "toto@domain.fr",
    "consent_categories": [
      "1",
      "3"
    ]
  }
}
```

Pour transformer l’appel d’événement JSON ci-dessus au format de paramètres URL, suivez ces étapes :

1. Commencez avec une chaîne vide pour le format de paramètres URL.
2. Copiez les paires clé-valeur du niveau supérieur de l’objet JSON (`event_name`, `tc_s`, `token`, `page_type`, `page_name`) telles quelles, en les séparant par des esperluettes (`&`).
3. Pour les objets imbriqués comme `user`, représentez-les dans le format de paramètres URL en ajoutant la clé imbriquée à l’aide de crochets (`[]`).
4. Pour les valeurs de tableau comme `user[consent_categories]`, ajoutez `[]` à la clé pour indiquer un paramètre de tableau.
5. Incluez chaque élément du tableau comme une paire clé-valeur distincte, en ajoutant également la notation entre crochets à la clé.
6. Encodez les valeurs de chaîne dans l’URL, par exemple en remplaçant l’espace dans `Best sellers` avec `%20` and the `@` le symbole dans l’adresse e-mail par `%40`.

Le format de paramètres URL transformé pour l’appel d’événement JSON serait :

{% code overflow="wrap" %}

```plaintext
GET  https://collect.commander1.com/events?tc_s=1234&token=abcdef&event_name=page_view&page_type=product_list&page_name=Best%20sellers&user[id]=12356&user[email]=toto%40domain.fr&user[consent_categories][]=1&user[consent_categories][]=3
```

{% endcode %}

## Gérer un tableau d’objets (ex : items)

Les tableaux d’objets peuvent également être gérés dans les appels d’événement pixel tracking. Cela vous permet d’inclure plusieurs items dans un seul événement, comme un événement d’achat. Prenons un exemple de gestion d’un tableau d’objets pour des items dans un événement d’achat :

```json
{
  "id": "O_12345",
  "revenue": 16.00,
  "value": 22.53,
  "shipping_amount": 3.33,
  "tax_amount": 3.20,
  "currency": "EUR",
  "user": {
    "id": "12356",
    "email": "toto@domain.fr"
  },
  "items": [
    {
      "id": "SKU_12345",
      "quantity": 1,
      "product": {
        "id": "12345",
        "name": "Trex tshirt",
        "category_1": "clothes",
        "colors": ["red"],
        "price": 9.99
      }
    },
    {
      "id": "SKU_12346",
      "quantity": 1,
      "price": 9.99,
      "product": {
        "id": "12346",
        "name": "Heart tshirt",
        "colors": ["blue", "white"],
        "price": 9.99
      }
    }
  ]
}
```

Pour inclure le tableau d’objets dans l’appel d’événement, suivez ces étapes :

1. Incluez les paires clé-valeur du niveau supérieur de l’objet JSON comme d’habitude (`id`, `revenue`, `value`, `shipping_amount`, `tax_amount`, `currency`, `user`).
2. Pour le tableau d’objets, spécifiez la clé (par ex.  `items`) et utilisez des crochets (`[]`) pour indiquer un paramètre de tableau.
3. Incluez chaque objet du tableau comme un ensemble distinct de paires clé-valeur, en conservant la structure des objets.
4. Si nécessaire, imbriquez des objets ou des tableaux supplémentaires à l’intérieur des objets du tableau.

Exemple de transformation de l’appel d’événement JSON au format de paramètres URL :

{% code overflow="wrap" %}

```plaintext
id=O_12345&revenue=16.00&value=22.53&shipping_amount=3.33&tax_amount=3.20&currency=EUR&user[id]=12356&user[email]=toto%40domain.fr&items[0][id]=SKU_12345&items[0][quantity]=1&items[0][product][id]=12345&items[0][product][name]=Trex%20tshirt&items[0][product][category_1]=clothes&items[0][product][colors][]=red&items[0][product][price]=9.99&items[1][id]=SKU_12346&items[1][quantity]=1&items[1][price]=9.99&items[1][product][id]=12346&items[1][product][name]=Heart%20tshirt&items[1][product][colors][]=blue&items[1][product][colors][]=white&items[1][product][price]=9.99
```

{% endcode %}

Dans le format de paramètres URL transformé, chaque item du tableau est représenté par son index, suivi des clés et des valeurs de l’objet imbriqué.


---

# Agent Instructions: 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/sources/sources-catalog/web/pixel-tracking.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.
