neo
docs / generic webhook

Generic order webhook

POST one JSON object per order to your workspace webhook URL (find it in Settings → Order webhooks). One order = one conversion = one CAPI Purchase, deduped by order_id. Send upsells and OTOs as separate orders — never collapse by customer.

Schema

POST /api/wh/generic/{token}
Content-Type: application/json

{
  "order_id":     "string, required — your unique order id",
  "email":        "string, optional — buyer email (enables email matching)",
  "amount_cents": 2700,          // integer, required
  "currency":     "EUR",         // 3-letter code, default EUR
  "product_id":   "string, optional",
  "product_name": "string, optional",
  "ft_vid":       "string, optional — visitor id from the hidden form field",
  "occurred_at":  "2026-07-21T12:00:00Z" // ISO 8601, optional, default now
}

Responses

Attribution

Pass ft_vid when you have it (the snippet auto-fills it into a hidden field on every form) — that gives an exact cookie match. Otherwise we match by email against captured leads. If neither matches, the order is honestly labeled unattributed — we count, we don't model.