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