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

# Event tracking

> Referentie voor de klantgedrag-events die storekit verzamelt en hoe ze integreren met analytics-platforms zoals Google Analytics, GTM en Meta Pixel.

storekit verzamelt gedragsevents om je te helpen klantreizen te begrijpen, conversies te optimaliseren en marketingintegraties aan te sturen. Deze pagina legt uit wat we tracken, hoe data stroomt en hoe events integreren met platforms van derden.

## Native event-verzameling

storekit verzamelt automatisch events op web- en native apps zonder dat er extra code nodig is.

### Kern-commerce-events

<AccordionGroup>
  <Accordion title="active_on_site">
    Wordt afgevuurd wanneer een klant op de store terechtkomt.

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

  <Accordion title="menu_loaded">
    Wordt afgevuurd wanneer het menu volledig is geladen.

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

  <Accordion title="viewed_product">
    Wordt afgevuurd wanneer een klant een productmodal opent.

    ```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">
    Wordt afgevuurd wanneer een item aan het mandje wordt toegevoegd.

    ```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">
    Wordt afgevuurd wanneer een item uit het mandje wordt verwijderd.

    ```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">
    Wordt afgevuurd wanneer de klant het checkout-scherm opent.

    ```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">
    Wordt afgevuurd wanneer de betaling is bevestigd en de order is geplaatst.

    ```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>

### Zoek- en discovery-events

<AccordionGroup>
  <Accordion title="products_searched">
    Wordt afgevuurd wanneer een klant een zoekopdracht uitvoert (gedebounced met 1 seconde).

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

  <Accordion title="cross_sell_modal_view">
    Wordt afgevuurd wanneer de upsell/cross-sell-modal wordt getoond.

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

    `crossSellType` is `"product"` of `"category"` afhankelijk van de configuratie.
  </Accordion>
</AccordionGroup>

### Kortings-events

<AccordionGroup>
  <Accordion title="discount_entered">
    Wordt afgevuurd wanneer een klant een kortingscode indient.

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

  <Accordion title="discount_applied">
    Wordt afgevuurd wanneer een kortingscode succesvol wordt toegepast.

    ```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">
    Wordt afgevuurd wanneer een kortingscode wordt geweigerd.

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

### Promotie-events

<AccordionGroup>
  <Accordion title="viewed_offer">
    Wordt afgevuurd wanneer een promotionele aanbieding zichtbaar wordt.

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

  <Accordion title="click_offer">
    Wordt afgevuurd wanneer een klant op een promotionele aanbieding klikt.

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

### Stories-events

<AccordionGroup>
  <Accordion title="story_viewer_opened">
    Wordt afgevuurd wanneer een klant de story viewer opent.

    ```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">
    Wordt afgevuurd wanneer een storypagina wordt bekeken.

    ```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">
    Wordt afgevuurd wanneer een klant tussen storypagina's navigeert.

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

  <Accordion title="story_cta_clicked">
    Wordt afgevuurd wanneer een klant op een CTA binnen een story klikt.

    ```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">
    Wordt afgevuurd wanneer een klant alle pagina's van een story heeft bekeken.

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

  <Accordion title="story_viewer_closed">
    Wordt afgevuurd wanneer de story viewer wordt gesloten.

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

### Experiment-events

<AccordionGroup>
  <Accordion title="viewed_experiment">
    Wordt afgevuurd wanneer een klant aan een A/B-testvariant wordt blootgesteld.

    ```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>

## Item-ID-resolutie

Bij het versturen van events naar analytics-platforms bepaalt storekit het `item_id` volgens de volgende prioriteit:

1. **PLU** — Point of sale-lookupcode (voorkeur voor stores met een POS-koppeling)
2. **SKU** — Stock keeping unit
3. **POS-ID** — Externe POS-systeemidentifier
4. **ID** — Interne product-ID van storekit (fallback)

Dit zorgt ervoor dat je analytics-data dezelfde identifiers gebruikt als je POS-systeem voor accurate rapportage en attributie.

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

<Tip>
  Voor de beste resultaten zorg je dat je producten PLU-codes hebben ingesteld als je een POS-integratie gebruikt. Zo blijft je analytics-data consistent met je POS-rapporten.
</Tip>

## Platformintegraties

storekit stuurt events door naar platforms van derden in hun eigen formaat. Events worden automatisch getransformeerd — geen mapping vereist.

### Meta (Facebook) Pixel

Events worden naar Meta's Pixel-API gestuurd. Een `PageView`-event wordt automatisch bij initialisatie afgevuurd.

<AccordionGroup>
  <Accordion title="AddToCart">
    Getriggerd door `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">
    Getriggerd door `started_checkout`

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

  <Accordion title="Purchase">
    Getriggerd door `order_completed`

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

<Info>
  Meta Pixel biedt betere attributie dan alleen browser-pixels, vooral met iOS-privacywijzigingen en ad blockers.
</Info>

### Google Analytics 4 / Google Tag Manager

Events worden naar de `dataLayer` gepusht volgens het e-commerce-schema van 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">
    Getriggerd door `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">
    Getriggerd door `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">
    Getriggerd door `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

Events worden naar Klaviyo gestuurd voor e-mailmarketingautomatisering. Klantidentiteit wordt gekoppeld via e-mail, indien beschikbaar, met `klaviyo.identify()`.

<AccordionGroup>
  <Accordion title="Active on Site">
    Getriggerd door `active_on_site`

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

  <Accordion title="Viewed Product">
    Getriggerd door `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">
    Getriggerd door `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">
    Getriggerd door `started_checkout`

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

### 1st-party event-verzameling

Voor klanten die volledig eigenaarschap over hun data willen, kan storekit events rechtstreeks naar je eigen datawarehouse sturen. Alle events bevatten automatisch basis-contextproperties.

**Basiscontext (opgenomen in alle events):**

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

<AccordionGroup>
  <Accordion title="venue_loaded">
    Getriggerd door `active_on_site`. Identificeert ook de gebruiker.

    ```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">
    Getriggerd door `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">
    Getriggerd door `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">
    Getriggerd door `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>

## Configuratie

### Integraties inschakelen

1. Ga in je dashboard naar **Settings > Integrations**
2. Selecteer het analytics-platform
3. Voer je pixel-/measurement-ID of API-key in:
   * **Google Tag Manager**: Container-ID (GTM-XXXXX)
   * **Meta Pixel**: Pixel-ID
   * **Klaviyo**: API-key
4. Events beginnen direct te stromen

### Ondersteunde chatintegraties

Het analytics-systeem initialiseert ook chat-widgets wanneer geconfigureerd:

* Front Chat
* Superchat
* Tawk.to
* Intercom

## Problemen oplossen

<AccordionGroup>
  <Accordion title="Events verschijnen niet in Meta/Google">
    Controleer of je pixel-ID correct is en de integratie is ingeschakeld. Server-side events kunnen tot 24 uur duren voordat ze in sommige dashboards verschijnen vanwege verwerkingsvertragingen op het platform.
  </Accordion>

  <Accordion title="Omzetbedragen kloppen niet">
    Zorg dat je analytics-platform is ingesteld op de juiste valuta. storekit stuurt bedragen in de lokale valuta van de store. Merk op dat prijzen in events in minor units (pence/cents) worden verzonden, tenzij anders vermeld.
  </Accordion>

  <Accordion title="Ontbrekende gebruikersidentiteit">
    Anonieme bezoekers worden gevolgd met een device-gebaseerde ID. De gebruikersidentiteit wordt gekoppeld zodra ze bij het afrekenen hun e-mailadres opgeven.
  </Accordion>

  <Accordion title="Store Designer-modus">
    Analytics zijn uitgeschakeld wanneer de store in Store Designer-modus wordt bekeken, om te voorkomen dat je data met testverkeer vervuild raakt.
  </Accordion>
</AccordionGroup>


## Related topics

- [Maak menu-stories met videocontent en CTA's](/docs/nl/guides/marketing/stories.md)
- [Webhook-events](/docs/nl/developers/webhooks/webhook-events.md)
- [Shipday dispatch en routeoptimalisatie](/docs/nl/guides/integrations/delivery/shipday.md)
- [Overzicht van integraties](/docs/nl/guides/integrations/overview.md)
- [Orkestro-integratie voor vloot- en on-demand koeriersbezorging](/docs/nl/guides/integrations/delivery/orkestro.md)
