TDCSites
Webhooks & API

Event Types

The complete catalog of webhook events you can subscribe to, grouped by resource, with example payloads.

These are every event the platform can dispatch to a webhook. Subscribe to only the events you need when creating or editing a webhook. Every delivery uses the standard payload envelope; the per-event fields below appear inside data.object.


Forms

EventFired when
form.submission.createdA form is successfully submitted.
form.submission.status_changedA submission's status changes (e.g. marked spam or archived).
{
  "id": "evt_e798e4f1-6712-4f38-a15d-8be167cdfa77",
  "event": "form.submission.created",
  "created": "2026-06-06T12:00:00.000Z",
  "apiVersion": "2026-05-01",
  "workspaceId": "ws_abc123",
  "siteId": "site_xyz456",
  "data": {
    "object": {
      "id": "sub_9f2",
      "formId": "form_77",
      "workspaceId": "ws_abc123",
      "siteId": "site_xyz456",
      "pageId": "page_5",
      "data": {
        "full_name": "Jane Doe",
        "email": "jane@example.com",
        "message": "Hello!"
      },
      "status": "NEW",
      "ipAddress": "203.0.113.10",
      "userAgent": "Mozilla/5.0...",
      "referrer": "https://google.com",
      "submittedAt": "2026-06-06T12:00:00.000Z"
    }
  }
}

Sites

EventFired when
site.createdA new site is created.
site.updatedSite configuration changes.
site.deletedA site is deleted.
site.publishedA page on the site is published.
{
  "id": "evt_d6a8a4f1-8172-4d38-b15d-9be267cdfa11",
  "event": "site.updated",
  "created": "2026-06-06T12:00:00.000Z",
  "apiVersion": "2026-05-01",
  "workspaceId": "ws_abc123",
  "siteId": "site_xyz456",
  "data": {
    "object": {
      "id": "site_xyz456",
      "name": "Acme Marketing",
      "slug": "acme-marketing",
      "workspaceId": "ws_abc123",
      "subdomain": "acme",
      "customDomain": "www.acme.com",
      "domainStatus": "active",
      "createdAt": "2026-06-06T10:00:00.000Z",
      "updatedAt": "2026-06-06T12:00:00.000Z"
    }
  }
}

Blog

EventFired when
blog.post.createdA blog post draft is created.
blog.post.updatedA post is modified.
blog.post.publishedA post is published.
blog.post.deletedA post is deleted.
{
  "id": "evt_c498e4f1-9872-4f38-a15d-0be167cdfa88",
  "event": "blog.post.published",
  "created": "2026-06-06T12:00:00.000Z",
  "apiVersion": "2026-05-01",
  "workspaceId": "ws_abc123",
  "siteId": "site_xyz456",
  "data": {
    "object": {
      "postId": "post_789",
      "siteId": "site_xyz456",
      "title": "Welcome to the New Era",
      "slug": "welcome-to-the-new-era",
      "publishedAt": "2026-06-06T12:00:00.000Z"
    }
  }
}

CMS Collections

EventFired when
collection.item.createdA collection item is created.
collection.item.updatedA collection item is updated.
collection.item.deletedA collection item is deleted.
{
  "id": "evt_b398e4f1-1272-4f38-a15d-1be167cdfa99",
  "event": "collection.item.created",
  "created": "2026-06-06T12:00:00.000Z",
  "apiVersion": "2026-05-01",
  "workspaceId": "ws_abc123",
  "siteId": "site_xyz456",
  "data": {
    "object": {
      "id": "item_foo",
      "collectionId": "col_bar",
      "siteId": "site_xyz456",
      "data": {
        "name": "Jane Doe",
        "role": "Software Engineer"
      },
      "collectionName": "Team Members",
      "collectionSlug": "team-members",
      "createdAt": "2026-06-06T12:00:00.000Z",
      "updatedAt": "2026-06-06T12:00:00.000Z"
    }
  }
}

Custom Domains

EventFired when
domain.verifiedA custom domain passes DNS verification.
domain.failedA custom domain fails verification.
{
  "id": "evt_a298e4f1-2342-4f38-a15d-2be167cdfa00",
  "event": "domain.verified",
  "created": "2026-06-06T12:00:00.000Z",
  "apiVersion": "2026-05-01",
  "workspaceId": "ws_abc123",
  "siteId": "site_xyz456",
  "data": {
    "object": {
      "siteId": "site_xyz456",
      "domain": "www.acme.com",
      "sslStatus": "active"
    }
  }
}

Billing

EventFired when
subscription.updatedA workspace subscription changes plan or limits.
subscription.cancelledA subscription is cancelled.
trial.startedA workspace enters a trial period.
trial.endedA trial period expires.
{
  "id": "evt_9198e4f1-3452-4f38-a15d-3be167cdfa11",
  "event": "subscription.updated",
  "created": "2026-06-06T12:00:00.000Z",
  "apiVersion": "2026-05-01",
  "workspaceId": "ws_abc123",
  "siteId": null,
  "data": {
    "object": {
      "workspaceId": "ws_abc123",
      "planKey": "pro",
      "status": "active",
      "currentPeriodEnd": "2026-07-06T12:00:00.000Z"
    }
  }
}

Billing events are workspace-wide and reflect the lifecycle described in Subscription Management. Use them to keep external systems in sync with a customer's plan.


Workspace Members

EventFired when
member.invitedA new workspace member is invited.
member.joinedA pending member accepts their invitation.
{
  "id": "evt_8098e4f1-4562-4f38-a15d-4be167cdfa22",
  "event": "member.invited",
  "created": "2026-06-06T12:00:00.000Z",
  "apiVersion": "2026-05-01",
  "workspaceId": "ws_abc123",
  "siteId": null,
  "data": {
    "object": {
      "workspaceId": "ws_abc123",
      "invitedEmail": "member@example.com",
      "role": "editor",
      "invitedAt": "2026-06-06T12:00:00.000Z"
    }
  }
}