WundertreOS

Event types

Reference for every webhook event WundertreOS can emit.

Every webhook delivery is an HTTP POST to your target_url with a JSON body shaped like:

json
{
  "id": "ev1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
  "event_type": "contact.tag_added",
  "org_id": "a1b2c3d4-1111-2222-3333-444455556666",
  "data": {
    "id": "c8b1f3a0-4d2e-4f9a-9b1c-2d4e5f6a7b8c",
    "org_id": "a1b2c3d4-1111-2222-3333-444455556666",
    "event_type": "contact.tag_added",
    "contact": { /* full ls_contacts row */ },
    "occurred_at": "2026-05-17T14:30:00.000Z"
  },
  "delivered_at": "2026-05-17T14:30:01.000Z"
}

The top-level id is the delivery/event id (from the webhook_events row). data.id is the resource id — the contact, deal, or activity the event is about. They are different UUIDs.

Inside data, the resource is nested under a key matching its kind:

Event typeNested keyShape
contact.*data.contactFull ls_contacts row (every DB column, not the trimmed REST field set returned by /api-contacts)
deal.*data.dealFull deal row
contact.note_addeddata.activityFull activity row (the note)
Companion contact.updated deliveries

For contact.tag_added and contact.enriched, the system also enqueues a separate contact.updated delivery for the same contact. Your endpoint will receive both — dedupe on X-Wunder-Delivery if you only want to process one.

WundertreOS emits exactly these event types:

Contact events

Event types
FieldTypeDescription
contact.createdeventFires when a new contact is created — manually, via import, or via API.
contact.updatedeventFires when any field on a contact changes.
contact.tag_addedeventFires when one or more tags are added to a contact.
contact.enrichedeventFires when WundertreOS's enrichment service adds new data (company, LinkedIn, technographics) to a contact.
contact.note_addedeventFires when a note activity is added to a contact's timeline.

Deal events

Event types
FieldTypeDescription
deal.createdeventFires when a new deal is created.
deal.updatedeventFires on any deal field change, including stage transitions and won/lost.

Example payload: contact.tag_added

json
{
  "id": "ev1a2b3c-4d5e-6f7a-8b9c-0d1e2f3a4b5c",
  "event_type": "contact.tag_added",
  "org_id": "a1b2c3d4-1111-2222-3333-444455556666",
  "data": {
    "id": "c8b1f3a0-4d2e-4f9a-9b1c-2d4e5f6a7b8c",
    "org_id": "a1b2c3d4-1111-2222-3333-444455556666",
    "event_type": "contact.tag_added",
    "contact": {
      "id": "c8b1f3a0-4d2e-4f9a-9b1c-2d4e5f6a7b8c",
      "org_id": "a1b2c3d4-1111-2222-3333-444455556666",
      "first_name": "Jane",
      "last_name": "Doe",
      "email": "jane@example.com",
      "tags": ["lead", "vip"],
      "status": "active",
      "created_at": "2026-05-10T09:12:00Z",
      "updated_at": "2026-05-17T14:30:00Z"
    },
    "occurred_at": "2026-05-17T14:30:00.000Z"
  },
  "delivered_at": "2026-05-17T14:30:01.000Z"
}

Delivery headers

Every delivery includes:

HeaderValue
Content-Typeapplication/json
X-Wunder-Signaturesha256=<hex hmac> — see Verify signatures
X-Hook-SignatureSame HMAC value, included for Zapier REST Hooks compatibility
X-Wunder-EventThe event_type of this delivery
X-Wunder-DeliveryThe unique event id (use it to dedupe retries)