Every event carries a prompt_ready string — a short text rendering of the event (who, what, when) produced server-side, deterministic, capped at 4 KB. Pass it to a model when that’s where the event is going; ignore it otherwise. event.data still has the raw payload either way.
Example
For a Stripe invoice.paid:
Stripe invoice.paid event at 2026-04-17T19:22:04Z.
Customer cus_abc (alice@acme.com).
Invoice in_xyz — $42.00 USD. Paid at 2026-04-17T19:22:00Z.
For a forwarded email:
Email from alice@acme.com to support@in.nevo.sh.
Subject: Re: API limits.
Body: can we bump our monthly quota?
Notes
- Deterministic. Same input, same output. No model calls, no drift.
- Versioned.
prompt_ready_versionstamps which renderer generation produced the text, so a backfill can target stale rows if the renderer changes. - Optional. Build your own prompt from
event.datawhenever the default doesn’t fit.