Skip to content

Offer.accepted

Emitted each time an Offer is accepted.

Offer.accept emits Offer.accepted when it completes on an Offer.

PropertyValue
Emitted byOffer.accept
NounOffer
MovesLead new to converted when the Lead buys on its own
WakesSignal interview

Payload

Each delivery is an Event record. data holds what Offer.accept returns.

FieldTypeRequiredDescription
namestringrequiredOffer.accepted.
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.customerCustomerrequiredThe Customer the party is or becomes.
data.offerOfferrequiredThe Offer accepted.
data.offer.pricemoneyrequiredThe amount, currency, and unit. Zero is a price.
data.offer.termstextThe conditions the Customer accepts, refund rights included.
data.offer.fromstringLineage: the slot it compiles from, as Hypothesis#<slot>@v<version>.
data.offer.activationjsonThe Event, count and window that mark a Customer activated, such as Reminder.sent 20 times within 7 days.
data.offer.creditmoneyThe Credit Grant each purchase issues, for an Offer that sells prepaid credit, such as $50 of calls.
data.offer.atBoundstringWhat a call past an Entitlement’s Limit gets: stop, overage or upgrade (refuse it, bill it through the Meter, or move to the next Offer).
data.offer.intervalstringHow often it bills: once, day, week, month or year.
data.offer.availableFromdatetimeWhen it can first be bought. Unset: from when it is published.
data.offer.availableUntildatetimeWhen it can last be bought. Existing Subscriptions continue past it.
data.offer.trialjsonThe free trial every new Customer starts with: days, and card true to take a card up front. Unset: no trial.
data.offer.seatsstringHow a per-seat Price counts: manual (the buyer sets the quantity) or members (people in the Customer’s Tenant, prorated as they change).
data.offer.uptimejsonThe monthly uptime it promises, and the share of that month’s charge credited back below each level.
data.offer.licensestringWhat a buyer may do with the records it sells: use them internally, display them to its own users, or redistribute them.
data.offer.attributiontextThe credit line a buyer shows wherever the records appear.
data.offer.privateToPartyThe one Party who sees it and may accept it, making it a private Offer; no pricing page lists it.

Example

JSON
{
  "$id": "https://api.sb/petpantry.shop/events/event_1",
  "$type": "Event",
  "name": "Offer.accepted",
  "at": "2026-10-22T12:00:00Z",
  "data": {
    "customer": {
      "$id": "https://api.sb/petpantry.shop/customers/customer_1",
      "$type": "Customer",
      "since": "2026-10-22T12:00:00Z"
    },
    "offer": {
      "$id": "https://api.sb/petpantry.shop/offers/offer_1",
      "$type": "Offer",
      "price": {
        "amount": 54,
        "currency": "USD"
      },
      "terms": "Full refund within 14 days of purchase. Delivery in 2 business days.",
      "from": "Hypothesis#approach@v1",
      "activation": {},
      "credit": {
        "amount": 54,
        "currency": "USD"
      },
      "atBound": "stop",
      "interval": "once",
      "availableFrom": "2026-10-22T12:00:00Z",
      "availableUntil": "2026-10-22T12:00:00Z",
      "trial": {
        "days": 14,
        "card": true
      },
      "seats": "manual",
      "uptime": {
        "target": 99.9,
        "credits": [
          {
            "below": 99.9,
            "percent": 10
          },
          {
            "below": 99,
            "percent": 25
          }
        ]
      },
      "license": "internal",
      "attribution": "Renewal data from Leaseline",
      "privateTo": "party_1"
    }
  },
  "seq": 1
}