Skip to content

Events

An Event records that something happened, named by its Noun and a past-tense Verb, carries the record it changed, and wakes the Workflows that listen.

An Event records that something happened, named by its Noun and a past-tense Verb: Offer.published, Startup.launched. Events never change, and every one carries the record as it was left.

Every Event

Every Verb emits one when its Action completes, and every Noun emits created from the Verbs it inherits. Workflows wake on Events, Metrics count them, and webhooks deliver them.

Events
291
Wake a Workflow
17
Nouns that emit
100

Product 46

Growth 67

Finance 56

Team 21

Legal & trust 12

Core grammar 57

A lime dot marks an Event that wakes a Workflow. Each name opens the Event's page, with its full payload and an example. Each Workflow names its Trigger, and triggers explains how one listens.

What one carries

Beside its $id, each delivery has the same four fields: name, at, seq and data. data holds what the Verb returned, including the record it acted on. When the Event moved the record to a new state, previous holds the state it left.

Order.paid arrives like this:

FieldTypeRequiredDescription
namestringrequiredOrder.paid.
atdatetimerequiredWhen it happened.
seqintegerIts position in the namespace, one more than the Event before; any seq is a cursor into the history.
datajsonrequiredThe Thing as the Action left it.
data.orderOrderrequiredThe paid Order.
data.order.totalmoneyrequiredThe amount charged.
data.order.statusstringrequiredOne of placed, paid, fulfilled, closed, canceled, or refunded.
data.order.merchantOfRecordPartyThe Party that charges and books the revenue.
data.order.outsidebooleanComputed: true when its Customer shares no owner, Studio account, Agreement, or sibling chain with the Startup.
data.order.linesjsonEach Offer bought, its quantity, amount and the Party that charges for it; a Service line carries its own verdict.
data.order.fulfillmentstringWhere a Service Order’s work stands between paid and fulfilled.
data.order.paymentstringauthorized when the Quote is accepted; captured on the Event the Outcome Contract earns names.
data.order.revisionsUsedintegerRevisions the Customer has asked for, counted against the Outcome Contract’s revisions.
data.order.risknumberThe payment’s fraud risk score from 0 to 99 at screening, as Stripe scored it.
data.order.taxmoneyThe sales tax, VAT or GST computed at placement for the buyer’s location and the Offer’s tax category.
data.order.taxJurisdictionstringWhere the tax is owed, such as US-CA or EU-DE, or none when no registration applies.
data.order.briefjsonThe scope a Service Order bought, from its Quote request: sizes, inputs and turnaround. Intake checks the inputs against it.
data.order.dueAtdatetimeWhen a Service Order’s work is due; time waiting on the Customer moves it later.
data.order.taxExemptionCredentialThe exemption or resale certificate that zeroed the tax, when one applies.
data.order.collectedBystringThe id of the venue that charged the buyer and pays the Startup; unset when the Startup’s own checkout collected.
data.previous.statusstringrequiredThe status before this Event: placed.
JSON
{
  "$id": "https://api.sb/quietcopy.com/events/event_1",
  "$type": "Event",
  "name": "Order.paid",
  "at": "2026-10-22T12:00:00Z",
  "data": {
    "order": {
      "$id": "https://api.sb/quietcopy.com/orders/order_1",
      "$type": "Order",
      "total": {
        "amount": 39,
        "currency": "USD"
      },
      "status": "paid",
      "merchantOfRecord": "party_1",
      "outside": true,
      "lines": {},
      "fulfillment": "intake",
      "payment": "authorized",
      "revisionsUsed": 1,
      "risk": 1,
      "tax": {
        "amount": 39,
        "currency": "USD"
      },
      "taxJurisdiction": "US-CA",
      "brief": {},
      "dueAt": "2026-10-22T12:00:00Z",
      "taxExemption": "credential_1",
      "collectedBy": "aws-marketplace"
    },
    "previous": {
      "status": "placed"
    }
  },
  "seq": 1
}

seq counts up by one across the whole Startup, so any seq is a cursor. A handler that stores the last one it read never misses an Event and never reads one twice.

Who raises one

Raised byExampleWhen
A VerbOrder.paidThe Action that ran the Verb completes
An inherited writeLead.createdA record is created, updated or deleted
The payment railTransaction.settledStripe reports money moving
The clockInvoice.overdueA date passes with nothing done
The runtimeAction.doneWork finishes or fails with no one calling
A state changeSubscription.pastDueA record enters a state an Event marks

The last four are Events no Verb emits. Each one names the Noun it is about, so its delivery has the same shape.