> ## Documentation Index
> Fetch the complete documentation index at: https://storekit.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Suivi des événements

> Référence sur les événements de comportement client collectés par storekit et leur intégration avec les plateformes d'analytique comme Google Analytics, GTM et Meta Pixel.

storekit collecte des événements comportementaux pour vous aider à comprendre les parcours clients, optimiser les conversions et alimenter les intégrations marketing. Cette page explique ce que nous suivons, comment les données circulent et comment les événements s'intègrent aux plateformes tierces.

## Collecte native d'événements

storekit collecte automatiquement des événements sur le web et les applications natives, sans nécessiter de code supplémentaire.

### Événements commerce principaux

<AccordionGroup>
  <Accordion title="active_on_site">
    Déclenché lorsqu'un client arrive sur le magasin.

    ```json theme={null}
    {
      "event": "active_on_site",
      "properties": {
        "accountId": "40586258-8a99-4651-b79f-0a1ab602a926",
        "id": 8709,
        "slug": "your-store"
      }
    }
    ```
  </Accordion>

  <Accordion title="menu_loaded">
    Déclenché lorsque le menu est entièrement chargé.

    ```json theme={null}
    {
      "event": "menu_loaded",
      "properties": {
        "menuId": 12345
      }
    }
    ```
  </Accordion>

  <Accordion title="viewed_product">
    Déclenché lorsqu'un client ouvre la modale d'un produit.

    ```json theme={null}
    {
      "event": "viewed_product",
      "properties": {
        "id": 98765,
        "name": "Flat White",
        "currency": "GBP",
        "price": 350,
        "image": "https://cdn.storekit.com/products/flat-white.jpg",
        "plu": "FW001",
        "sku": "SKU-FW-001"
      }
    }
    ```
  </Accordion>

  <Accordion title="add_to_cart">
    Déclenché lorsqu'un article est ajouté au panier.

    ```json theme={null}
    {
      "event": "add_to_cart",
      "properties": {
        "id": 98765,
        "name": "Flat White",
        "price": 400,
        "image": "https://cdn.storekit.com/products/flat-white.jpg",
        "modifiers": [
          {
            "id": 111,
            "name": "Oat Milk",
            "price": 50
          }
        ]
      }
    }
    ```
  </Accordion>

  <Accordion title="remove_from_cart">
    Déclenché lorsqu'un article est retiré du panier.

    ```json theme={null}
    {
      "event": "remove_from_cart",
      "properties": {
        "id": 98765,
        "name": "Flat White",
        "price": 400,
        "image": "https://cdn.storekit.com/products/flat-white.jpg",
        "modifiers": []
      }
    }
    ```
  </Accordion>

  <Accordion title="started_checkout">
    Déclenché lorsque le client ouvre l'écran de paiement.

    ```json theme={null}
    {
      "event": "started_checkout",
      "properties": {
        "currency": "GBP",
        "items": [
          {
            "id": 98765,
            "name": "Flat White",
            "price": 400,
            "quantity": 2,
            "modifiers": []
          }
        ],
        "venueSlug": "your-store",
        "value": 8.00
      }
    }
    ```
  </Accordion>

  <Accordion title="order_completed">
    Déclenché lorsque le paiement est confirmé et la commande passée.

    ```json theme={null}
    {
      "event": "order_completed",
      "properties": {
        "orderId": "ord_789xyz",
        "total": 12.50,
        "currency": "GBP",
        "venueSlug": "your-store",
        "order": {
          "items": [...],
          "fulfillmentMethod": "delivery",
          "customer": {...}
        }
      }
    }
    ```
  </Accordion>
</AccordionGroup>

### Événements de recherche et de découverte

<AccordionGroup>
  <Accordion title="products_searched">
    Déclenché lorsqu'un client effectue une recherche (avec un debounce de 1 seconde).

    ```json theme={null}
    {
      "event": "products_searched",
      "properties": {
        "query": "coffee",
        "resultCount": 12
      }
    }
    ```
  </Accordion>

  <Accordion title="cross_sell_modal_view">
    Déclenché lorsque la modale upsell/cross-sell est affichée.

    ```json theme={null}
    {
      "event": "cross_sell_modal_view",
      "properties": {
        "productCount": 4,
        "crossSellType": "product"
      }
    }
    ```

    `crossSellType` vaut soit `"product"`, soit `"category"` selon la configuration.
  </Accordion>
</AccordionGroup>

### Événements de remise

<AccordionGroup>
  <Accordion title="discount_entered">
    Déclenché lorsqu'un client soumet un code de remise.

    ```json theme={null}
    {
      "event": "discount_entered",
      "properties": {
        "code": "SUMMER20"
      }
    }
    ```
  </Accordion>

  <Accordion title="discount_applied">
    Déclenché lorsqu'un code de remise est appliqué avec succès.

    ```json theme={null}
    {
      "event": "discount_applied",
      "properties": {
        "discount_id": 456,
        "discount_name": "Summer Sale",
        "discount_amount": 500,
        "discount_type": "percentage"
      }
    }
    ```
  </Accordion>

  <Accordion title="discount_denied">
    Déclenché lorsqu'un code de remise est rejeté.

    ```json theme={null}
    {
      "event": "discount_denied",
      "properties": {
        "discount_code": "EXPIRED10",
        "reason": "Code has expired",
        "status_code": 400
      }
    }
    ```
  </Accordion>
</AccordionGroup>

### Événements d'offres promotionnelles

<AccordionGroup>
  <Accordion title="viewed_offer">
    Déclenché lorsqu'une offre promotionnelle devient visible.

    ```json theme={null}
    {
      "event": "viewed_offer",
      "properties": {
        "offerId": 123,
        "linkId": "link_abc",
        "type": "banner",
        "value": "20% off"
      }
    }
    ```
  </Accordion>

  <Accordion title="click_offer">
    Déclenché lorsqu'un client clique sur une offre promotionnelle.

    ```json theme={null}
    {
      "event": "click_offer",
      "properties": {
        "offerId": 123,
        "linkId": "link_abc",
        "type": "banner",
        "value": "20% off"
      }
    }
    ```
  </Accordion>
</AccordionGroup>

### Événements Stories

<AccordionGroup>
  <Accordion title="story_viewer_opened">
    Déclenché lorsqu'un client ouvre le lecteur de stories.

    ```json theme={null}
    {
      "event": "story_viewer_opened",
      "properties": {
        "storyId": 789,
        "storyIndex": 0,
        "storyTitle": "New Summer Menu",
        "totalStories": 5,
        "source": "menu_page"
      }
    }
    ```
  </Accordion>

  <Accordion title="story_viewed">
    Déclenché lorsqu'une page de story est vue.

    ```json theme={null}
    {
      "event": "story_viewed",
      "properties": {
        "storyId": 789,
        "storyTitle": "New Summer Menu",
        "pageIndex": 2,
        "totalPages": 4,
        "hasVideo": true,
        "hasCta": true
      }
    }
    ```
  </Accordion>

  <Accordion title="story_navigation">
    Déclenché lorsqu'un client navigue entre les pages d'une story.

    ```json theme={null}
    {
      "event": "story_navigation",
      "properties": {
        "storyId": 789,
        "fromPage": 1,
        "toPage": 2,
        "direction": "forward",
        "method": "tap"
      }
    }
    ```
  </Accordion>

  <Accordion title="story_cta_clicked">
    Déclenché lorsqu'un client clique sur un CTA dans une story.

    ```json theme={null}
    {
      "event": "story_cta_clicked",
      "properties": {
        "storyId": 789,
        "pageIndex": 2,
        "ctaType": "product",
        "ctaLabel": "Order Now",
        "ctaData": { "productId": 456 },
        "videoProgressPercent": 75
      }
    }
    ```
  </Accordion>

  <Accordion title="story_completed">
    Déclenché lorsqu'un client visualise toutes les pages d'une story.

    ```json theme={null}
    {
      "event": "story_completed",
      "properties": {
        "storyId": 789,
        "storyTitle": "New Summer Menu",
        "totalPages": 4,
        "timeSpentSeconds": 32
      }
    }
    ```
  </Accordion>

  <Accordion title="story_viewer_closed">
    Déclenché lorsque le lecteur de stories est fermé.

    ```json theme={null}
    {
      "event": "story_viewer_closed",
      "properties": {
        "storyId": 789,
        "pageIndex": 2,
        "totalStoriesViewed": 3,
        "totalPagesViewed": 8,
        "timeSpentSeconds": 45,
        "closeMethod": "swipe_down"
      }
    }
    ```
  </Accordion>
</AccordionGroup>

### Événements d'expérimentation

<AccordionGroup>
  <Accordion title="viewed_experiment">
    Déclenché lorsqu'un client est exposé à une variante d'un test A/B.

    ```json theme={null}
    {
      "event": "viewed_experiment",
      "properties": {
        "experimentId": "checkout-flow-v2",
        "variationId": 1,
        "venueId": 8709,
        "accountId": "40586258-8a99-4651-b79f-0a1ab602a926",
        "venueSlug": "your-store"
      }
    }
    ```
  </Accordion>
</AccordionGroup>

## Résolution de l'ID d'article

Lors de l'envoi d'événements aux plateformes d'analytique, storekit résout l'`item_id` selon la priorité suivante :

1. **PLU** — Code de recherche du point de vente (préféré pour les magasins connectés à un POS)
2. **SKU** — Stock keeping unit
3. **POS ID** — Identifiant du système POS externe
4. **ID** — ID interne du produit storekit (par défaut)

Cela garantit que vos données d'analytique utilisent les mêmes identifiants que votre système POS pour un reporting et une attribution précis.

```
item_id = product.plu || product.sku || product.posId || product.id
```

<Tip>
  Pour de meilleurs résultats, assurez-vous que vos produits disposent de codes PLU configurés si vous utilisez une intégration POS. Cela maintient la cohérence entre vos données d'analytique et vos rapports POS.
</Tip>

## Intégrations avec les plateformes

storekit transmet les événements aux plateformes tierces dans leur format natif. Les événements sont transformés automatiquement — aucun mapping requis.

### Meta (Facebook) Pixel

Les événements sont envoyés à l'API Pixel de Meta. Un événement `PageView` se déclenche automatiquement à l'initialisation.

<AccordionGroup>
  <Accordion title="AddToCart">
    Déclenché par `add_to_cart`

    ```json theme={null}
    {
      "content_ids": [98765],
      "content_name": "Flat White",
      "currency": "GBP",
      "value": "4.00",
      "content_type": "product"
    }
    ```
  </Accordion>

  <Accordion title="InitiateCheckout">
    Déclenché par `started_checkout`

    ```json theme={null}
    {
      "currency": "GBP",
      "value": 8.00
    }
    ```
  </Accordion>

  <Accordion title="Purchase">
    Déclenché par `order_completed`

    ```json theme={null}
    {
      "currency": "GBP",
      "value": "12.50",
      "content_type": "product"
    }
    ```
  </Accordion>
</AccordionGroup>

<Info>
  Meta Pixel offre une meilleure attribution que les pixels côté navigateur uniquement, en particulier face aux changements de confidentialité iOS et aux bloqueurs de publicité.
</Info>

### Google Analytics 4 / Google Tag Manager

Les événements sont poussés dans le `dataLayer` en suivant le schéma e-commerce de GA4.

<AccordionGroup>
  <Accordion title="active_on_site">
    ```json theme={null}
    {
      "event": "active_on_site",
      "userId": null,
      "sessionId": null,
      "pagePath": null
    }
    ```
  </Accordion>

  <Accordion title="view_item">
    Déclenché par `viewed_product`

    ```json theme={null}
    {
      "event": "view_item",
      "currency": "GBP",
      "value": 3.50,
      "items": [
        {
          "item_id": "FW001",
          "item_name": "Flat White"
        }
      ]
    }
    ```
  </Accordion>

  <Accordion title="add_to_cart">
    ```json theme={null}
    {
      "event": "add_to_cart",
      "value": 4.00,
      "currency": "GBP",
      "items": [
        {
          "item_name": "Flat White",
          "item_id": "FW001",
          "price": 4.00,
          "quantity": 1
        }
      ]
    }
    ```
  </Accordion>

  <Accordion title="begin_checkout">
    Déclenché par `started_checkout`

    ```json theme={null}
    {
      "event": "begin_checkout",
      "value": 8.00,
      "currency": "GBP",
      "items": [
        {
          "item_name": "Flat White",
          "affiliation": "your-store",
          "item_id": "FW001",
          "price": 4.00,
          "quantity": 2,
          "category": "Hot Drinks",
          "item_variant": "Oat Milk"
        }
      ]
    }
    ```
  </Accordion>

  <Accordion title="purchase">
    Déclenché par `order_completed`

    ```json theme={null}
    {
      "event": "purchase",
      "transaction_id": "ord_789xyz",
      "value": 12.50,
      "currency": "GBP",
      "items": [
        {
          "item_name": "Flat White",
          "affiliation": "your-store",
          "item_id": "FW001",
          "price": 4.00,
          "quantity": 2,
          "category": "Hot Drinks",
          "item_variant": "Oat Milk"
        }
      ]
    }
    ```
  </Accordion>
</AccordionGroup>

### Klaviyo

Les événements sont envoyés à Klaviyo pour l'automatisation email marketing. L'identité client est liée par e-mail lorsque disponible via `klaviyo.identify()`.

<AccordionGroup>
  <Accordion title="Active on Site">
    Déclenché par `active_on_site`

    ```json theme={null}
    {
      "AccountId": "40586258-8a99-4651-b79f-0a1ab602a926",
      "VenueId": 8709,
      "VenueSlug": "your-store"
    }
    ```
  </Accordion>

  <Accordion title="Viewed Product">
    Déclenché par `viewed_product`

    ```json theme={null}
    {
      "ProductId": 98765,
      "ProductName": "Flat White",
      "ProductPrice": 350,
      "ProductImage": "https://cdn.storekit.com/products/flat-white.jpg"
    }
    ```
  </Accordion>

  <Accordion title="Added to Cart">
    Déclenché par `add_to_cart`

    ```json theme={null}
    {
      "ProductId": 98765,
      "ProductName": "Flat White",
      "ProductPrice": 400,
      "ProductImage": "https://cdn.storekit.com/products/flat-white.jpg"
    }
    ```
  </Accordion>

  <Accordion title="Started Checkout">
    Déclenché par `started_checkout`

    ```json theme={null}
    {
      "Currency": "GBP",
      "Value": 8.00
    }
    ```
  </Accordion>
</AccordionGroup>

### Collecte d'événements 1st party

Pour les clients qui souhaitent une pleine propriété des données, storekit peut envoyer les événements directement vers votre propre entrepôt de données. Tous les événements incluent automatiquement des propriétés de contexte de base.

**Contexte de base (inclus dans tous les événements) :**

```json theme={null}
{
  "account_id": "40586258-8a99-4651-b79f-0a1ab602a926",
  "venue_id": 8709,
  "venue_slug": "your-store"
}
```

<AccordionGroup>
  <Accordion title="venue_loaded">
    Déclenché par `active_on_site`. Identifie également l'utilisateur.

    ```json theme={null}
    {
      "event": "venue_loaded"
    }
    ```
  </Accordion>

  <Accordion title="menu_loaded">
    ```json theme={null}
    {
      "event": "menu_loaded",
      "menu_id": 12345
    }
    ```
  </Accordion>

  <Accordion title="product_modal_view">
    Déclenché par `viewed_product`

    ```json theme={null}
    {
      "event": "product_modal_view",
      "product_id": 98765,
      "product_name": "Flat White",
      "product_price": 350,
      "product_image": "https://cdn.storekit.com/products/flat-white.jpg",
      "product_plu": "FW001"
    }
    ```
  </Accordion>

  <Accordion title="add_to_cart">
    ```json theme={null}
    {
      "event": "add_to_cart",
      "product_id": 98765,
      "product_name": "Flat White",
      "product_price": 400,
      "product_image": "https://cdn.storekit.com/products/flat-white.jpg",
      "product_quantity": 1,
      "product_plu": "FW001",
      "add_to_cart_source": null
    }
    ```
  </Accordion>

  <Accordion title="remove_from_cart">
    ```json theme={null}
    {
      "event": "remove_from_cart",
      "product_id": 98765,
      "product_name": "Flat White",
      "product_price": 400,
      "product_image": "https://cdn.storekit.com/products/flat-white.jpg",
      "product_quantity": 1,
      "product_plu": "FW001"
    }
    ```
  </Accordion>

  <Accordion title="order_completed">
    ```json theme={null}
    {
      "event": "order_completed",
      "orderId": "ord_789xyz",
      "total": 12.50,
      "currency": "GBP"
    }
    ```
  </Accordion>

  <Accordion title="cross_sell_modal_view">
    ```json theme={null}
    {
      "event": "cross_sell_modal_view",
      "product_count": 4,
      "cross_sell_type": "product"
    }
    ```
  </Accordion>

  <Accordion title="viewed_offer">
    ```json theme={null}
    {
      "event": "viewed_offer",
      "offer_id": 123,
      "link_id": "link_abc",
      "type": "banner",
      "value": "20% off"
    }
    ```
  </Accordion>

  <Accordion title="clicked_offer">
    Déclenché par `click_offer`

    ```json theme={null}
    {
      "event": "clicked_offer",
      "offer_id": 123,
      "link_id": "link_abc",
      "type": "banner",
      "value": "20% off"
    }
    ```
  </Accordion>

  <Accordion title="products_searched">
    ```json theme={null}
    {
      "event": "products_searched",
      "query": "coffee",
      "result_count": 12
    }
    ```
  </Accordion>

  <Accordion title="experiment_viewed">
    Déclenché par `viewed_experiment`

    ```json theme={null}
    {
      "event": "experiment_viewed",
      "experiment_key": "checkout-flow-v2",
      "variation_id": 1,
      "account_id": "40586258-8a99-4651-b79f-0a1ab602a926",
      "venue_id": 8709,
      "venue_slug": "your-store"
    }
    ```
  </Accordion>

  <Accordion title="story_viewer_opened">
    ```json theme={null}
    {
      "event": "story_viewer_opened",
      "story_id": 789,
      "story_index": 0,
      "story_title": "New Summer Menu",
      "total_stories": 5,
      "source": "menu_page"
    }
    ```
  </Accordion>

  <Accordion title="story_viewed">
    ```json theme={null}
    {
      "event": "story_viewed",
      "story_id": 789,
      "story_title": "New Summer Menu",
      "page_index": 2,
      "total_pages": 4,
      "has_video": true,
      "has_cta": true
    }
    ```
  </Accordion>

  <Accordion title="story_navigation">
    ```json theme={null}
    {
      "event": "story_navigation",
      "story_id": 789,
      "from_page": 1,
      "to_page": 2,
      "direction": "forward",
      "method": "tap"
    }
    ```
  </Accordion>

  <Accordion title="story_cta_clicked">
    ```json theme={null}
    {
      "event": "story_cta_clicked",
      "story_id": 789,
      "page_index": 2,
      "cta_type": "product",
      "cta_label": "Order Now",
      "cta_data": { "productId": 456 },
      "video_progress_percent": 75
    }
    ```
  </Accordion>

  <Accordion title="story_completed">
    ```json theme={null}
    {
      "event": "story_completed",
      "story_id": 789,
      "story_title": "New Summer Menu",
      "total_pages": 4,
      "time_spent_seconds": 32
    }
    ```
  </Accordion>

  <Accordion title="story_viewer_closed">
    ```json theme={null}
    {
      "event": "story_viewer_closed",
      "story_id": 789,
      "page_index": 2,
      "total_stories_viewed": 3,
      "total_pages_viewed": 8,
      "time_spent_seconds": 45,
      "close_method": "swipe_down"
    }
    ```
  </Accordion>
</AccordionGroup>

## Configuration

### Activer les intégrations

1. Rendez-vous dans **Settings > Integrations** dans votre tableau de bord
2. Sélectionnez la plateforme d'analytique
3. Saisissez votre ID de pixel/mesure ou clé API :
   * **Google Tag Manager** : Container ID (GTM-XXXXX)
   * **Meta Pixel** : Pixel ID
   * **Klaviyo** : API Key
4. Les événements commencent à circuler immédiatement

### Intégrations de chat prises en charge

Le système d'analytique initialise également les widgets de chat lorsqu'ils sont configurés :

* Front Chat
* Superchat
* Tawk.to
* Intercom

## Dépannage

<AccordionGroup>
  <Accordion title="Les événements n'apparaissent pas dans Meta/Google">
    Vérifiez que votre ID de pixel est correct et que l'intégration est activée. Les événements côté serveur peuvent prendre jusqu'à 24 heures pour apparaître dans certains tableaux de bord en raison des délais de traitement des plateformes.
  </Accordion>

  <Accordion title="Les valeurs de revenus ne correspondent pas">
    Assurez-vous que votre plateforme d'analytique est configurée pour la bonne devise. storekit envoie les valeurs dans la devise locale du magasin. Notez que les prix dans les événements sont en unités mineures (pence/cents) sauf indication contraire.
  </Accordion>

  <Accordion title="Identité utilisateur manquante">
    Les visiteurs anonymes sont suivis avec un ID basé sur l'appareil. L'identité utilisateur est associée dès qu'ils fournissent leur e-mail au paiement.
  </Accordion>

  <Accordion title="Mode Store Designer">
    L'analytique est désactivée lors de la consultation du magasin en mode Store Designer, afin d'éviter de polluer vos données avec du trafic de test.
  </Accordion>
</AccordionGroup>


## Related topics

- [Dispatch et optimisation d'itinéraires Shipday](/docs/fr/guides/integrations/delivery/shipday.md)
- [Imprimer les modificateurs comme des produits](/docs/fr/guides/menu/print-modifiers-as-products.md)
- [Créer des stories menu avec du contenu vidéo et des CTA](/docs/fr/guides/marketing/stories.md)
- [Import en masse de réductions](/docs/fr/guides/discounts/bulk-import.md)
- [Klaviyo](/docs/fr/guides/integrations/marketing/klaviyo.md)
