Early bird discounts live! Claim your offer

project.updated

Any mutable project field changes.

When this fires

Any mutable field on a project changes — display name, handle, description, terms, privacy text, or other dashboard-editable settings. State-flag transitions (archive, restore) emit dedicated events instead.

Required ability

project:view — token must carry this at mint time to subscribe an endpoint to this event.

Payload

{
  "id": "evt_01HX...",
  "type": "project.updated",
  "created_at": "2026-05-18T10:05:00Z",
  "api_version": "2026-05-01",
  "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
  "data": {
    "project": {
      "id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
      "name": "Research Premium",
      "handle": "research-premium",
      "active": true,
      "team_id": "a83f0d51-4c92-4b7e-8615-2fd9e70a3c86"
    },
    "changes": {
      "description": {
        "from": "Weekly research drops.",
        "to": "Daily research drops and monthly AMAs."
      }
    }
  }
}

Field reference

FieldTypeNotes
idstring ULIDUnique event id, prefixed evt_. Use for idempotent processing.
typestringAlways project.updated for this event.
created_atISO 8601 timestampServer-side emission time.
api_versionstringWebhook API contract version.
project_idstring UUIDProject this event belongs to.
data.projectobjectPost-update project snapshot — id, name, handle, active, team_id only.
data.changesobject<string, {from,to}>Map of fields that changed. Keys are project attribute names; values are before/after.

Caveats

  • The changes block contains only the fields that mutated; unchanged fields are not included.
  • changes can report fields the project snapshot does not carry — description, terms, privacy, metrics, type, bot_id, banner_url, and photo_url. Read the new value from changes[field].to, or fetch the project from GET /v1/projects/{project}.
  • POST /v1/projects/{project}/archive and /restore emit the dedicated project.archived / project.restored events, but a plain PATCH that sets active reports the flip in changes.active on project.updated instead — handle both.
  • Rotating a bot through the Telegram bot flow does not trigger project.updated — it emits project.bot.disconnected / project.bot.connected. Changing bot_id through PATCH /v1/projects/{project} does emit project.updated with changes.bot_id and emits no project.bot.* event.

How is this guide?

On this page

Subscriby is a product designed by you — for you.

No boardroom full of executives deciding what we ships next. Our roadmap always shaped by you with your feedback.

Share feedback or a request