contact.created) — the value you put in topics when calling POST /v4/webhooks. Call this endpoint first, before creating any webhook, to see exactly which event types exist and what each one's data payload looks like; it's the single source of truth, so build your UI or integration against this response rather than a hardcoded list, since the catalogue grows over time.contact.subscribed does not exist. Only contact.unsubscribed does. There was no single write path that could honestly mean "opted in to marketing" as opposed to "added to list X" — see contact.list_added for the general case.cart.abandoned does not exist yet. It requires detecting the absence of a checkout, which needs a scheduled sweep rather than a write to hook — not yet implemented.curl --location '/v4/webhooks/topics' \
--header 'Authorization: Bearer eyJhbGciOiJFZERTQSIsImtpZCI6Im1haW4ta2V5IiwidHlwIjoiSldUIn0...'{"topics": [{"name": "contact.created", "summary": "A new contact was created.", "exampleData": {"contact": {"contactId": "0f3e2b1a-...", "clientContactId": "1042", "email": "jan@example.cz"}}}, {"name": "contact.unsubscribed", "summary": "A contact was removed from a subscription list (or unsubscribed from all).", "exampleData": {"contact": {"contactId": "0f3e2b1a-...", "clientContactId": "1042", "email": "jan@example.cz"}, "lists": [{"id": 7, "name": "Newsletter"}]}}, {"name": "order.cancelled", "summary": "An order's state changed to cancelled.", "exampleData": {"order": {"orderId": "9c1a...", "clientOrderId": "ORD-2026-0042", "state": "cancelled"}}}]}