# Pixel Tracking API

Pixel Tracking, également connu sous le nom de gifs 1x1, ou de 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és**, mais où vous pouvez insérer une image (aka GET hit)

{% hint style="info" %}
Lorsque qu’une requête POST est possible, veuillez privilégier le [http tracking API](https://doc.commandersact.com/fr/fonctionnalites/sources/sources-catalog/server/http-tracking-api), plus pratique à utiliser.
{% endhint %}

## Appel d’événement de base

Pour envoyer un appel d’événement de base à 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 illustre un appel d’événement de base pour suivre une page vue :

{% 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 la chaîne de caractères en URL, surtout si elle contient des caractères spéciaux ou des espaces.

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

Le 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 avec des crochets, pour les objets comme 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 illustre 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 en forme de paramètres d’URL, suivez ces étapes :

1. Commencez avec une chaîne vide pour la forme des paramètres d’URL.
2. Copiez les paires clé-valeur au 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 la forme des paramètres d’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 des crochets à la clé.
6. Encodez les valeurs de chaîne en URL, par exemple en remplaçant l’espace dans `Best sellers` avec `%20` and the `@` le symbole dans l’adresse e-mail par `%40`.

La forme des paramètres d’URL transformée 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 du pixel tracking. Cela vous permet d’inclure plusieurs éléments 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 au niveau supérieur de l’objet JSON comme d’habitude (`id`, `revenue`, `valeur`, `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 d’autres objets ou tableaux à l’intérieur des objets du tableau.

Exemple de transformation de l’appel d’événement JSON en forme de paramètres d’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 la forme des paramètres d’URL transformée, chaque élément du tableau est représenté par son index, suivi des clés et des valeurs de l’objet imbriqué.
