Skip to content

Events not arriving

Diagnose why events sent to the Ingestion API aren't showing up.

Events you send to POST /api/v1/t are not arriving — analytics show no events, or events you expect are missing for a given visitor, window, or campaign.

  1. POST /api/v1/t — invalid or missing API key (401) — the request is rejected before it is ever queued.

    bash
    curl -s -o /dev/null -w "%{http_code}\n" -X POST https://api.retidal.com/api/v1/t \
    -H "X-API-Key: $RETIDAL_API_KEY" -H "Content-Type: application/json" \
    -d '{"eventName": "page_view", "visitorId": "vid_abc123"}'
    # 401 means the key is missing, revoked, or malformed — reissue it, see Authentication

    POST /api/v1/t accepts any valid project API key — it has no scope gate beyond that, so a scope error is never the cause here (unlike decide, profile, or the coupon routes, which do require a specific scope).

  2. POST /api/v1/t — enforce-mode validation rejected every event in the batch (422) — check the response body for errors[].

    bash
    curl -s -X POST "https://api.retidal.com/api/v1/t?sync=1" \
    -H "X-API-Key: $RETIDAL_API_KEY" -H "Content-Type: application/json" \
    -d '{"eventName": "page_view", "visitorId": "vid_abc123"}'
    # a 422 body's errors[] names the field/rule that failed catalog validation
  3. POST /api/v1/t — a dependency is transiently unavailable (503) — this endpoint has no dedicated rate limit; a 503 (SELECTOR_LOOKUP_FAILED or QUEUE_UNAVAILABLE) is the only transient-failure status it returns, and the response carries retryAfter.

    A 503 fails the whole request before any event is queued, so it will not appear in Console → Projects → Debug (which only shows events that were captured with ?debug=1) — check your integration’s own request logs for the response code.

  4. POST /api/v1/t — the event was accepted asynchronously but persistence isn’t proven yet — the default 202 response only means the event was validated and dispatched to background processing, not that it reached storage.

    bash
    curl -s "https://api.retidal.com/api/v1/t?sync=1" \
    -H "X-API-Key: $RETIDAL_API_KEY" -H "Content-Type: application/json" \
    -d '{"eventName": "page_view", "visitorId": "vid_abc123"}'
    # a sync 200 with "processed": true is the only proof the event reached storage

If the status code and body above don’t explain it, work through the health checklist.