Skip to content

Campaigns & Recipients

Where devices and published links are “always-on” surfaces, a campaign is a time-boxed, metered outreach to a known list of people — each getting their own personalized link.

A campaign owns:

  • A list of recipients (imported/managed in the campaign manager).
  • One target device — the rendering surface every recipient’s chat uses. Presentation, custom template and access rules are inherited from that device.
  • Its own budget, in one of two modes:
Mode Analogy How it works
Metered Taxi meter You authorize interactions via top-offs and pay for what’s used.
Committed Buffet A fixed total agreed up front.
  • An optional schedule (start date / end date).
  • An optional reference field for your own records (e.g. a PO number).

A campaign’s state is derived automatically from the commit marker and schedule:

draft → upcoming → active → completed
State Chat links Editable? What triggers it
Draft Off Yes Not yet committed
Upcoming Off Yes Committed, but before start date
Active Live No Inside the schedule window
Completed Off No Past end date, or manually halted
  • Committing a campaign moves it out of draft — that is the billable moment.
  • You can top off a metered budget at any time.
  • You can halt an active campaign early; it moves straight to completed.

Once a campaign is active, each recipient gets a personalized link:

/i/<token>
  • The token is an unguessable per-recipient secret — the link is the credential, so treat recipient links like passwords.
  • Each link renders the campaign’s target device, but carries its own prompt injection (personalized instructions, with {email} / {label} placeholders resolved per person) and its own interaction limits.
  • Links only work while the campaign is active; before commit or after completion/halt they return an error.
  • Every interaction is metered against the campaign budget so you can see budget-vs-actual at any time.