Skip to content

When to reach out: the Event and the window

Every Event that starts an Outreach Play, the window it stays open and the payload it carries.

When to reach out lists every Event that starts an Outreach Play, the window it stays open and the payload it carries. A Trigger costs $0; each touch costs what its email costs.

The Event and the windowMode try
You, to your agent

Which Events start our outreach, how long does each stay open, and send me each one as it happens.

curl "https://api.sb/leaseline.app/triggers?limit=20" \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"

curl "https://api.sb/leaseline.app/events?where=name%20%3D%20%22Conversation.answered%22&limit=1" \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"

curl -X POST "https://api.sb/leaseline.app/watches?mode=try" \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"selector":"Conversation.answered","url":"https://leaseline.app/hooks/sb"}'
import { $ } from 'startup-builder'

const { triggers } = await $.Trigger.list({ limit: 20 })   // what starts each Play, and its selector
const { events: [last] } = await $.Event.list({ where: 'name = "Conversation.answered"', limit: 1 })   // the latest reply that names a date to write again
await $.Watch.create({ selector: 'Conversation.answered', url: 'https://leaseline.app/hooks/sb' }, { mode: 'try' })   // each delivery signed
return triggers
npx startup-builder do Trigger.list --json '{"limit":20}'
npx startup-builder do Event.list --json '{"where":"name = \"Conversation.answered\"","limit":1}'
npx startup-builder do Watch.create --json '{"selector":"Conversation.answered","url":"https://leaseline.app/hooks/sb"}' --try
{
  "name": "do",
  "arguments": {
    "code": "const { triggers } = await $.Trigger.list({ limit: 20 })   // what starts each Play, and its selector\nconst { events: [last] } = await $.Event.list({ where: 'name = \"Conversation.answered\"', limit: 1 })   // the latest reply that names a date to write again\nawait $.Watch.create({ selector: 'Conversation.answered', url: 'https://leaseline.app/hooks/sb' }, { mode: 'try' })   // each delivery signed\nreturn triggers",
    "mode": "try"
  }
}
Response200application/json
{
  "triggers": [
    {
      "$id": "https://api.sb/leaseline.app/triggers/not-now-date",
      "$type": "Trigger",
      "event": "Conversation.answered",
      "where": "reply.kind = 'not-now' and reply.date <= now"
    },
    {
      "$id": "https://api.sb/leaseline.app/triggers/pricing-visit",
      "$type": "Trigger",
      "event": "Visit.recorded",
      "where": "page.path = '/pricing'"
    },
    {
      "$id": "https://api.sb/leaseline.app/triggers/form-submitted",
      "$type": "Trigger",
      "event": "Lead.created"
    }
  ]
}
samplePreview

What it does

What you pay forPrice per unit (sample)The call
A Trigger$0POST /{namespace}/triggers
A signed delivery to your endpoint$0POST /{namespace}/watches

Run it

StepCallWhat it does here
1GET /{namespace}/triggerswhat starts each Play, and its selector
2GET /{namespace}/eventsthe latest reply that names a date to write again
3POST /{namespace}/watcheseach delivery signed

Set it up

CheckOn the day-0 StartupFixYour timeWaitThen
inbound-sourcefailconnect the form, inbox or ad source whose Events start your Plays5 minnonePOST /{namespace}/integrations/connect

The records

One Trigger · sample
{
  "trigger": {
    "$id": "https://api.sb/leaseline.app/triggers/not-now-date",
    "$type": "Trigger",
    "event": "Conversation.answered",
    "where": "reply.kind = 'not-now' and reply.date <= now"
  }
}
When Event Starts on Window Plays Payload
Introducer answer Action.answered event where action.kind = 'intro-ask' 1d Warm intros { action } · payload
Target opt-in Action.answered event where answer = 'yes' 2d Warm intros { action } · payload
Organization ad engagement Ad.clicked threshold where 3 or more clicks, or 1 lead-form open, from a treated company in 14 days 14d Buying committee Not live yet
Introducer joined Agreement.signed event where kind in ('holder', 'advisor') or customer.outcomeAt < now - 30d 14d Warm intros { agreement } · payload
Account touch hold Approval.approved event where kind = 'account-touch' 14d Lead nurture, Product signals { approval } · payload
Voice requested Call.requested event where channel = 'voice' 1h Waitlist interviews Not live yet
Inbound call Channel.called event where direction = 'inbound' 1h Outbound calling Not live yet
Dropped call Channel.missed event where answered = false or callbackAsked = true 1d Outbound calling Not live yet
Cap mismatch Check.failed event where page.cap differs from waitlist.cap 1d Waitlist interviews Not live yet
Checkout exit Checkout.abandoned state where status = 'abandoned' on a started signup or checkout 7d Product-led growth Not live yet
Public filing Company.filed event where a permit, lease, license or registration the ICP files 14d Cold email Not live yet
Funding Company.funded at where day 21 to day 45 after a priced round or grant is announced 45d Cold email Not live yet
Named organization moment Company.funded event where funding, hiring, a technology change, a filing or a rival complaint at a treated company 30d Buying committee, Moment outreach Not live yet
Voice consent form Consent.granted event where purpose = 'ai-voice-call' 1d Outbound calling Not live yet
Member role change Contact.enriched event where a mapped member left, or someone new took a mapped role 30d Buying committee { contact } · payload
Dormant connection Contact.imported state where first-degree, ICP-fit, no Message from the Human in 180 days 30d LinkedIn outbound Not live yet
Records imported Contact.imported event where each row carries its collecting Form, Registration or trial 730d Lead reactivation Not live yet
Stalled signup Contact.stalled state where status = 'stalled': signed up, no conversion Event 30d Product-led growth Not live yet
Answer owed Content.published event where matches a ghosted Form’s question at 0.8 or more 30d Lead reactivation { content } · payload
Outcome fact Content.published event where kind = 'outcome' and verified 30d Lead reactivation { content } · payload
Form non-booker Conversation.answered state where a booking link offered and no Meeting.booked 24 hours after the answer 7d Lead nurture { conversation } · payload
Not now date Conversation.answered at where the date the Person’s own reply named 14d Cold email { conversation } · payload
Referral named Conversation.answered event where the reply names a colleague and agrees to be mentioned 7d Cold email { conversation } · payload
Chat non-booker Conversation.closed state where an address captured, a booking link offered and no Meeting.booked within 1 hour 7d Lead nurture { conversation } · payload
Customer words batch Conversation.closed threshold where newQuotes >= 30 30d Positioning tournament { conversation } · payload
Call me reply Conversation.labeled event where label = 'call-me' 1d Outbound calling Not live yet
Activation reached Customer.activated event where first = true 72h Lead nurture, Product-led growth, Waitlist interviews { customer } · payload
Senior signup Customer.activated event where the Person's own stated role is director or above, at a strong-fit Organization 7d Product signals { customer } · payload
Dormant signup Customer.stalled state where status = 'stalled': no activation Event 7 days after signup 14d Product signals Not live yet
Heatmap due Dashboard.scheduled at where month.start 7d Positioning tournament { dashboard } · payload
Single sign-on objection lost Deal.lost event where reason mentions 'single-sign-on' 180d Lead reactivation { deal } · payload
Decision hold Deal.proposed state where status in ('proposed', 'contract') 90d Gifting { deal } · payload
Quiet deal Deal.stalled state where status = 'open' and a Meeting held and no member reply for 10 business days 30d Gifting Not live yet
Free limit near Entitlement.checked threshold where used / bound >= 0.8 on a free meter 7d Lead nurture { allowed, entitlement, remaining, resetsAt, upgrade } · payload
Limit approach Entitlement.checked threshold where used / bound at 0.8 or more this period 7d Agent-to-agent selling { allowed, entitlement, remaining, resetsAt, upgrade } · payload
Limit pair Entitlement.checked threshold where allowed = false for 2 or more People at one Organization on the same Limit 7d Product signals { allowed, entitlement, remaining, resetsAt, upgrade } · payload
Limit pressure Entitlement.checked threshold where used / bound >= 0.8 inside the first 30 paid days, or a member refused a Verb the next Offer grants 3d Product-led growth { allowed, entitlement, remaining, resetsAt, upgrade } · payload
Limit reached Entitlement.checked threshold where used past bound; the Offer's atBound runs 1d Agent-to-agent selling { allowed, entitlement, remaining, resetsAt, upgrade } · payload
Locked verb call Entitlement.checked event where a locked Verb, unclaimed: claim-required 24h Agent-to-agent selling { allowed, entitlement, remaining, resetsAt, upgrade } · payload
Usage threshold Entitlement.checked threshold where allowed = false, or 20 % or less of the grant left 2d Product-led growth { allowed, entitlement, remaining, resetsAt, upgrade } · payload
Lead pricing return Event.captured threshold where pricing or plan Page views on 2 or more days in 7 72h Lead nurture { event } · payload
Organization visit Event.captured event where page in ('pricing', 'comparison', 'docs') and the Organization resolved 3d LinkedIn outbound { event } · payload
Paid predictor Event.captured threshold where the fitted usage Event reaches its fitted count within 7 days of signup 7d Product-led growth { event } · payload
Team cluster Event.captured threshold where 3 or more active People at one free or trial Organization within 14 days 14d Product signals { event } · payload
Commitment stated Evidence.created event where kind = 'commitment' 3d Waitlist interviews { evidence } · payload
Read-me request Form.submitted event where form = 'read-me', from a company outside the census 24h Benchmark rows Not live yet
Regrade request Form.submitted event where form = 'regrade', from the row Page or a reply 24h Benchmark rows Not live yet
Reading dispute Form.submitted event where form = 'dispute', from the row Page or a reply 2d Benchmark rows Not live yet
Gathering announced Gathering.opened event where a topic or series a pooled Person registered for 21d Lead reactivation Not live yet
Registrant silent Gathering.registered state where last Registration 180 days old, with no reply, Registration or Deal since 365d Lead reactivation { registration, gathering } · payload
Fixable error Interface.called event where an error kind with a recorded fix, or a new kind 7d Agent-to-agent selling Not live yet
Principal quiet Interface.called state where no call for 14 days after 4 weeks of weekly paid calls 30d Agent-to-agent selling Not live yet
Unclaimed use Interface.called threshold where the third successful non-empty call while unclaimed 48h Agent-to-agent selling Not live yet
Interview abandoned Interview.abandoned event where kind = 'signup' 7d Waitlist interviews Not live yet
Interview completed Interview.completed event where kind = 'signup' 1h Waitlist interviews Not live yet
Ad lead form Lead.created event 1d Instant response { lead } · payload
Form submitted Lead.created event 1d Instant response { lead } · payload
Nurture handoff Lead.nurtured at where 60 days after a silent or ceiling exit from lead-nurture 365d Lead reactivation { lead } · payload
Lead routed to nurture Lead.qualified event where route in ('nurture', 'self-serve') 24h Lead nurture { deal, lead } · payload
Tournament signup matured Lead.qualified event where experiment != null and age = 14d 14d Positioning tournament { deal, lead } · payload
Strong fit lead Lead.qualified event where fit = 'strong' and intent = 'strong' and voiceConsent = false 1d Outbound calling { deal, lead } · payload
Meeting no-show Meeting.booked state where missed and not rebooked within 2 hours 72h Lead nurture { meeting } · payload
Onboarding held Meeting.held event where kind = 'onboarding' 7d Waitlist interviews Not live yet
Chat app message Message.created event where direction = 'inbound' 1d Instant response { message } · payload
Direct message Message.created event where direction = 'inbound' 1d Instant response { message } · payload
Inbound email Message.created event where direction = 'inbound' 1d Instant response { message } · payload
Site chat opened Message.created event where direction = 'inbound' 1h Instant response { message } · payload
Address given Message.received event where direction = 'inbound' and postalAddress is set 30d Gifting Not live yet
Intro made Message.received event where participants include the introducer and the target 4h Warm intros Not live yet
LinkedIn reply Message.replied event where direction = 'inbound' 1h LinkedIn outbound Not live yet
Output disputed Message.replied event where says an output fact is wrong 1d Waitlist interviews Not live yet
Air cover requested Message.scheduled event where step = 1 and sendAt >= now + 9d 14d Cold email, Moment outreach, LinkedIn outbound, Account visits { message } · payload
Pool threshold Metric.watched threshold where month-to-date pool cost reaches 80 % or 100 % 1d Product-led growth { watch, metric } · payload
Stance decay Metric.watched threshold where rate <= 0.7 × verdictRate 30d Positioning tournament { watch, metric } · payload
Verb cost shift Metric.watched threshold where a Verb's p95 cost per call moves 30 % or more against its prior 28 days 7d Product-led growth { watch, metric } · payload
Cell filled Monitor.checked threshold where rivalsSaying(winningCell) >= 2 14d Positioning tournament { monitor } · payload
Fix live Monitor.checked event where the fix named in the row is live on the company's page 30d Benchmark rows { monitor } · payload
Index due Monitor.checked at where 7 days after the last reading, or 14 days before the quarterly publication 7d Benchmark rows { monitor } · payload
Lead silent 90 Monitor.checked state where 90 days since the last Lead Event 1d Lead nurture, Lead reactivation { monitor } · payload
Open issue Monitor.checked state where status = 'open' and unassigned, in the Product's domain, that takes outside fixes 30d Proof-of-work outreach { monitor } · payload
Public change Monitor.checked event where a content change on one of the company's measured public Pages 24h Benchmark rows { monitor } · payload
Public surface change Monitor.checked event where the changed surface is one the Product's cheapest Verb can assess 14d Proof-of-work outreach { monitor } · payload
Rank move Monitor.checked threshold where value moved by the smallest real change, and percentile by 5 points or more 3d Benchmark rows { monitor } · payload
Rival claim change Monitor.checked event where changed = true 30d Positioning tournament { monitor } · payload
Ready row Monitor.checked state where gap over the floor, a reproducible fix, and a verified address for the owning role 7d Benchmark rows { monitor } · payload
Technology change Monitor.checked event where a product the Startup integrates with or replaces is added or dropped 30d Cold email { monitor } · payload
Offer changed Offer.published event where answers a blocker a pooled Person stated 30d Lead reactivation { offer } · payload
First paid Offer.subscribed event where the first Price above 0 30d Product-led growth { subscription, offer } · payload
Trial ending Offer.trialed at where 3 days before trialEndsAt, unpaid 3d Lead nurture { subscription, offer } · payload
Trial lapsed Offer.trialed at where 60 days after trial access ended with no paid Period 365d Lead reactivation { subscription, offer } · payload
Opening published Opening.published event where the opening is for the role the Product serves or replaces 30d Cold email Not live yet
Checkout abandoned Order.started state where a known Lead and no Order.placed within 60 minutes 48h Lead nurture { order } · payload
Acquisition hold Organization.acquired state where hold = 'acquisition' 90d Moment outreach Not live yet
Renewal window Organization.adopted at where termEnds - 75d 45d Moment outreach Not live yet
Stated initiative Organization.announced event where topic = 'renewals' 30d Moment outreach Not live yet
New leader Organization.appointed event where function = 'operations' 60d Moment outreach Not live yet
Alternative outage Organization.degraded event where severity = 'major' 90d Moment outreach Not live yet
Upstream deprecation Organization.deprecated at where endOfLife - 90d 90d Moment outreach Not live yet
Crisis hold Organization.disrupted state where hold = 'crisis' 30d Moment outreach Not live yet
Layoff hold Organization.downsized state where hold = 'layoff' 14d Moment outreach Not live yet
Fiscal year end Organization.filed at where fiscalYearEnd - 56d 28d Moment outreach Not live yet
Site change Organization.published event where path in ('trust', 'enterprise', 'pricing') 30d Moment outreach Not live yet
Stale job post Organization.reposted threshold where openDays >= 60 30d Moment outreach Not live yet
Alternative price rise Organization.repriced event where namedByOrganization = true 60d Moment outreach Not live yet
Tender hold Organization.tendered event where status = 'open' 90d Gifting Not live yet
Active pricing Page.viewed event where path = '/pricing', at an Organization with use in the last 7 days 3d Product signals Not live yet
Customer pricing visit Page.viewed event where path in ('/pricing', '/billing', '/cancel'), by a paying Customer 7d Product signals Not live yet
Sample forwarded Page.viewed threshold where the Sample Page read from 3 or more places at one Organization within 14 days 14d Proof-of-work outreach Not live yet
Sample viewed Page.viewed event where path = the Person's own Sample Page; it raises the next touch's score and never starts a Message alone 30d Proof-of-work outreach Not live yet
Announced moment Person.announced event where kind in ('new-role', 'funding', 'hiring', 'launch') 21d LinkedIn outbound Not live yet
Rival post commenter Person.commented event where on a rival’s or an ICP creator’s public Post, pasted by the Human 7d LinkedIn outbound Not live yet
Request accepted Person.connected event 3d LinkedIn outbound Not live yet
Problem post Person.posted event where about the Problem, on a Venue with a read path or shared by the Human 7d LinkedIn outbound Not live yet
Own post reactor Person.reacted event where on the Human’s own Post, with no words, pasted by the Human 7d LinkedIn outbound Not live yet
Tournament funded PlayMix.compiled threshold where budget >= 1500 7d Positioning tournament { playMix } · payload
Event trip Post.published event where kind = 'event-attendance' 21d Gifting { post } · payload
Cold call reason Prospect.created event where reason != null and businessNumber != null 7d Outbound calling { prospect } · payload
Member engaged Prospect.engaged event where replies, accepts a Meeting, or views the committee Page 14d Buying committee { lead, prospect } · payload
Member hand raise Prospect.engaged event where asks for a Meeting, a Price, a pilot or the security report 24h Buying committee { lead, prospect } · payload
Product hand raise Prospect.engaged event where the answer is to a touch of this Play, read as interested 1d Product signals { lead, prospect } · payload
Public ask Question.asked event where asks for a link, an asset, a demo, a price or a private answer 24h Proof-of-work outreach Not live yet
Competitor complaint Review.published event where a public review or thread names an alternative 7d Cold email { review } · payload
Admit due Schedule.fired at where each Monday 09:00 in the founder’s time zone 1d Waitlist interviews Not live yet
Slots published Schedule.fired at where each Friday 16:00 in the founder’s time zone 7d Waitlist interviews Not live yet
Story ungraded Story.revised state where stance.backedBy = null 30d Positioning tournament Not live yet
Subscription ended Subscription.ended state where status = 'ended' after a cancel 60d Product-led growth Not live yet
Agent provision Tenant.provisioned event where the caller has no API Key 72h Agent-to-agent selling { tenant } · payload
Claim expiry due Tenant.provisioned at where 24 hours before expiresAt 24h Agent-to-agent selling { tenant } · payload
Sibling cell claim Territory.requested event where cell = winningCell 7d Positioning tournament Not live yet
Intro path Thing.related event where grade >= 70 or grade rose by 20 30d Warm intros { relationship, thing } · payload
Interest match Version.deployed event where matches the Lead’s recorded interest 30d Lead nurture { version } · payload
Loss reason resolved Version.deployed event where matches a recorded loss reason 30d Lead reactivation { version } · payload
Need shipped Version.deployed event where answers a need a pooled Person stated 30d Lead reactivation { version } · payload
Reason fixed Version.deployed event where the Change names a churn reason code in its fixes 30d Product-led growth { version } · payload
Claim page open Visit.recorded event where the claim Page, left without claiming 24h Agent-to-agent selling Not live yet
Evaluation visit Visit.recorded event where page in ('setup docs', 'API reference', 'integration', 'case study', 'security') and organization resolved 7d Account visits Not live yet
Pricing visit Visit.recorded event where a resolved company reads the pricing or comparison Pages 72h Cold email Not live yet
Repeat visit Visit.recorded threshold where a buying Page on a second day within 7 days 7d Account visits Not live yet
Activation stalled Visitor.identified state where no activation Event 24 hours after signup 7d Lead nurture { contact, visitor } · payload
Form ghosted Visitor.identified state where made by a Form, 30 days old, no Worker reply, no Enrollment and no Deal 730d Lead reactivation { contact, visitor } · payload
Known return Visitor.identified event where a pooled Contact, known by the Startup’s own first-party id 72h Lead reactivation { contact, visitor } · payload
Organization surge Visitor.identified threshold where 3 or more Visitors resolved to one treated company within 7 days 7d Buying committee, Account visits { contact, visitor } · payload
Person match Visitor.identified threshold where match confidence above the floor and the notice accepted 72h Account visits { contact, visitor } · payload
Admitted unbooked Waitlist.admitted state where admittedAt < now - 2d and onboardingMeeting is null 5d Waitlist interviews { leads, waitlist } · payload
Waitlist admitted Waitlist.admitted event 7d Lead nurture { leads, waitlist } · payload
Waitlist joined Waitlist.joined event where waitlist.status = 'open' 7d Waitlist interviews { lead, waitlist } · payload

146 Triggers on 86 Events. An Event the snapshot lacks waits on the hub and reads Not live yet.

Calls

CallWhat it doesWhat else happensEvent
GET /{namespace}/triggersNot in the hub registry snapshot.Today: ——
POST /{namespace}/triggersNot in the hub registry snapshot.Today: ——
GET /{namespace}/eventsNot in the hub registry snapshot.Today: ——
POST /{namespace}/watchesNot in the hub registry snapshot.Today: ——

Events

Trigger.created · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Trigger.created",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "trigger": {
      "$id": "https://api.sb/leaseline.app/triggers/trigger_1",
      "$type": "Trigger",
      "event": "Example event",
      "schedule": "Example schedule"
    }
  }
}
Watch.created · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Watch.created",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "watch": {
      "$id": "https://api.sb/leaseline.app/watches/watch_1",
      "$type": "Watch",
      "selector": "Example selector",
      "url": "https://leaseline.app"
    }
  }
}

Each live Event below is the signed delivery a Watch on it receives, projected from the hub’s registry. Reproduce one in test with npx startup-builder trigger <Event>, then npx startup-builder clock advance --by <window>.

Action.answered · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Action.answered",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "action": {
      "$id": "https://api.sb/leaseline.app/actions/action_1",
      "$type": "Action",
      "status": "pending",
      "mode": "try"
    }
  }
}
Agreement.signed · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Agreement.signed",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "agreement": {
      "$id": "https://api.sb/leaseline.app/agreements/agreement_1",
      "$type": "Agreement",
      "status": "signed"
    }
  }
}
Approval.approved · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Approval.approved",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "approval": {
      "$id": "https://api.sb/leaseline.app/approvals/approval_1",
      "$type": "Approval",
      "status": "pending",
      "mode": "try"
    }
  }
}
Contact.enriched · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Contact.enriched",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "contact": {
      "$id": "https://api.sb/leaseline.app/contacts/contact_1",
      "$type": "Contact",
      "email": "dana@leaseline.app",
      "phone": "Example phone"
    }
  }
}
Content.published · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Content.published",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "content": {
      "$id": "https://api.sb/leaseline.app/content/content_1",
      "$type": "Content",
      "title": "Leaseline Pro"
    }
  }
}
Conversation.answered · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Conversation.answered",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "conversation": {
      "$id": "https://api.sb/leaseline.app/conversations/conversation_1",
      "$type": "Conversation",
      "subject": "Example subject",
      "answeredAt": "2026-10-22T12:00:00Z"
    }
  }
}
Conversation.closed · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Conversation.closed",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "conversation": {
      "$id": "https://api.sb/leaseline.app/conversations/conversation_1",
      "$type": "Conversation",
      "subject": "Example subject",
      "answeredAt": "2026-10-22T12:00:00Z"
    }
  }
}
Customer.activated · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Customer.activated",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "customer": {
      "$id": "https://api.sb/leaseline.app/customers/customer_1",
      "$type": "Customer",
      "since": "2026-10-22T12:00:00Z"
    }
  }
}
Dashboard.scheduled · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Dashboard.scheduled",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "dashboard": {
      "$id": "https://api.sb/leaseline.app/dashboards/dashboard_1",
      "$type": "Dashboard",
      "scope": "Startup"
    }
  }
}
Deal.lost · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Deal.lost",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "deal": {
      "$id": "https://api.sb/leaseline.app/deals/deal_1",
      "$type": "Deal",
      "status": "Lost"
    }
  }
}
Deal.proposed · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Deal.proposed",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "deal": {
      "$id": "https://api.sb/leaseline.app/deals/deal_1",
      "$type": "Deal",
      "status": "Proposed"
    }
  }
}
Entitlement.checked · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Entitlement.checked",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "allowed": true,
    "entitlement": {
      "$id": "https://api.sb/leaseline.app/entitlements/entitlement_1",
      "$type": "Entitlement",
      "verb": "verb_1"
    },
    "remaining": 1,
    "resetsAt": "2026-10-22T12:00:00Z",
    "upgrade": {
      "$id": "https://api.sb/leaseline.app/offers/offer_1",
      "$type": "Offer",
      "price": {
        "amount": 29,
        "currency": "USD"
      }
    }
  }
}
Event.captured · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Event.captured",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "event": {
      "$id": "https://api.sb/leaseline.app/events/event_1",
      "$type": "Event",
      "name": "Leaseline",
      "at": "2026-10-22T12:00:00Z"
    }
  }
}
Evidence.created · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Evidence.created",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "evidence": {
      "$id": "https://api.sb/leaseline.app/evidence/evidence_1",
      "$type": "Evidence",
      "grade": "Behavior"
    }
  }
}
Gathering.registered · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Gathering.registered",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "registration": {
      "$id": "https://api.sb/leaseline.app/registrations/registration_1",
      "$type": "Registration",
      "status": "invited"
    },
    "gathering": {
      "$id": "https://api.sb/leaseline.app/gatherings/gathering_1",
      "$type": "Gathering",
      "title": "Leaseline Pro",
      "at": "2026-10-22T12:00:00Z"
    }
  }
}
Lead.created · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Lead.created",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "lead": {
      "$id": "https://api.sb/leaseline.app/leads/lead_1",
      "$type": "Lead",
      "status": "new"
    }
  }
}
Lead.nurtured · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Lead.nurtured",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "lead": {
      "$id": "https://api.sb/leaseline.app/leads/lead_1",
      "$type": "Lead",
      "status": "new"
    }
  }
}
Lead.qualified · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Lead.qualified",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "deal": {
      "$id": "https://api.sb/leaseline.app/deals/deal_1",
      "$type": "Deal",
      "status": "Open"
    },
    "lead": {
      "$id": "https://api.sb/leaseline.app/leads/lead_1",
      "$type": "Lead",
      "status": "new"
    }
  }
}
Meeting.booked · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Meeting.booked",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "meeting": {
      "$id": "https://api.sb/leaseline.app/meetings/meeting_1",
      "$type": "Meeting",
      "at": "2026-10-22T12:00:00Z"
    }
  }
}
Message.created · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Message.created",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "message": {
      "$id": "https://api.sb/leaseline.app/messages/message_1",
      "$type": "Message",
      "medium": "email",
      "direction": "inbound",
      "body": "Example body"
    }
  }
}
Message.scheduled · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Message.scheduled",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "message": {
      "$id": "https://api.sb/leaseline.app/messages/message_1",
      "$type": "Message",
      "medium": "email",
      "direction": "inbound",
      "body": "Example body"
    }
  }
}
Metric.watched · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Metric.watched",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "watch": {
      "$id": "https://api.sb/leaseline.app/watches/watch_1",
      "$type": "Watch",
      "selector": "Example selector",
      "url": "https://leaseline.app"
    },
    "metric": {
      "$id": "https://api.sb/leaseline.app/metrics/metric_1",
      "$type": "Metric",
      "query": "Example query",
      "status": "draft"
    }
  }
}
Monitor.checked · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Monitor.checked",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "monitor": {
      "$id": "https://api.sb/leaseline.app/monitors/monitor_1",
      "$type": "Monitor",
      "kind": "internal",
      "target": "/health"
    }
  }
}
Offer.published · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Offer.published",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "offer": {
      "$id": "https://api.sb/leaseline.app/offers/offer_1",
      "$type": "Offer",
      "price": {
        "amount": 29,
        "currency": "USD"
      }
    }
  }
}
Offer.subscribed · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Offer.subscribed",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "subscription": {
      "$id": "https://api.sb/leaseline.app/subscriptions/subscription_1",
      "$type": "Subscription",
      "status": "active"
    },
    "offer": {
      "$id": "https://api.sb/leaseline.app/offers/offer_1",
      "$type": "Offer",
      "price": {
        "amount": 29,
        "currency": "USD"
      }
    }
  }
}
Offer.trialed · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Offer.trialed",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "subscription": {
      "$id": "https://api.sb/leaseline.app/subscriptions/subscription_1",
      "$type": "Subscription",
      "status": "active"
    },
    "offer": {
      "$id": "https://api.sb/leaseline.app/offers/offer_1",
      "$type": "Offer",
      "price": {
        "amount": 29,
        "currency": "USD"
      }
    }
  }
}
Order.started · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Order.started",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "order": {
      "$id": "https://api.sb/leaseline.app/orders/order_1",
      "$type": "Order",
      "total": {
        "amount": 29,
        "currency": "USD"
      },
      "status": "placed"
    }
  }
}
PlayMix.compiled · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "PlayMix.compiled",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "playMix": {
      "$id": "https://api.sb/leaseline.app/play-mixes/play_mix_1",
      "$type": "PlayMix",
      "version": 1,
      "plays": {},
      "compiledAt": "2026-10-22T12:00:00Z"
    }
  }
}
Post.published · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Post.published",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "post": {
      "$id": "https://api.sb/leaseline.app/posts/post_1",
      "$type": "Post",
      "format": "Example format",
      "status": "draft"
    }
  }
}
Prospect.created · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Prospect.created",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "prospect": {
      "$id": "https://api.sb/leaseline.app/prospects/prospect_1",
      "$type": "Prospect",
      "foundIn": "Example found in",
      "basis": "Example basis"
    }
  }
}
Prospect.engaged · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Prospect.engaged",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "lead": {
      "$id": "https://api.sb/leaseline.app/leads/lead_1",
      "$type": "Lead",
      "status": "new"
    },
    "prospect": {
      "$id": "https://api.sb/leaseline.app/prospects/prospect_1",
      "$type": "Prospect",
      "foundIn": "Example found in",
      "basis": "Example basis"
    }
  }
}
Review.published · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Review.published",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "review": {
      "$id": "https://api.sb/leaseline.app/reviews/review_1",
      "$type": "Review",
      "rating": 1,
      "status": "submitted"
    }
  }
}
Tenant.provisioned · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Tenant.provisioned",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "tenant": {
      "$id": "https://api.sb/leaseline.app/tenants/tenant_1",
      "$type": "Tenant",
      "placement": "path",
      "apiVersion": "v2"
    }
  }
}
Thing.related · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Thing.related",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "relationship": {
      "$id": "https://api.sb/leaseline.app/relationships/relationship_1",
      "$type": "Relationship",
      "predicate": "Example predicate",
      "inverse": "Example inverse"
    },
    "thing": {
      "$id": "https://api.sb/leaseline.app/things/thing_1",
      "$type": "Thing",
      "id": "Example id",
      "type": [
        "noun_1"
      ]
    }
  }
}
Version.deployed · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Version.deployed",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "version": {
      "$id": "https://api.sb/leaseline.app/versions/version_1",
      "$type": "Version",
      "fingerprint": "sha256:9f2c4e1a7b3d"
    }
  }
}
Visitor.identified · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Visitor.identified",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "contact": {
      "$id": "https://api.sb/leaseline.app/contacts/contact_1",
      "$type": "Contact",
      "email": "dana@leaseline.app",
      "phone": "Example phone"
    },
    "visitor": {
      "$id": "https://api.sb/leaseline.app/visitors/visitor_1",
      "$type": "Visitor",
      "firstSeenAt": "2026-10-22T12:00:00Z"
    }
  }
}
Waitlist.admitted · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Waitlist.admitted",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "leads": [
      {
        "$id": "https://api.sb/leaseline.app/leads/lead_1",
        "$type": "Lead",
        "status": "new"
      }
    ],
    "waitlist": {
      "$id": "https://api.sb/leaseline.app/waitlists/waitlist_1",
      "$type": "Waitlist",
      "invited": 1,
      "rank": "signup"
    }
  }
}
Waitlist.joined · StartupBuilder-Signature
{
  "$id": "https://api.sb/leaseline.app/events/event_1",
  "$type": "Event",
  "name": "Waitlist.joined",
  "at": "2026-10-22T12:00:00Z",
  "seq": 1,
  "data": {
    "lead": {
      "$id": "https://api.sb/leaseline.app/leads/lead_1",
      "$type": "Lead",
      "status": "new"
    },
    "waitlist": {
      "$id": "https://api.sb/leaseline.app/waitlists/waitlist_1",
      "$type": "Waitlist",
      "invited": 1,
      "rank": "signup"
    }
  }
}

Refuses when

CheckRefusesFixThen
suppressed-contacta send or Sequence step to a Contact on a Suppression, from any PlayLeave them out: run the List again, which drops every suppressed Contact.POST /{namespace}/collections/query
no-consenta send or Sequence step whose purpose the Contact has given no Consent forRecord the Contact’s yes, with where they gave it, before the first send.POST /{namespace}/consents
422RefusedStep two to Lakeside Rentals’ owner did not send: they asked us to stop on Oct 12.
CheckFixThen
suppressed-contact failLeave them out: run the List again, which drops every suppressed Contact.POST /{namespace}/collections/query
JSON
{
  "type": "https://startupbuilder.dev/errors/refused",
  "title": "Refused",
  "status": 422,
  "detail": "Step two to Lakeside Rentals’ owner did not send: they asked us to stop on Oct 12.",
  "checks": [
    {
      "check": "suppressed-contact",
      "status": "fail",
      "observed": "Suppression suppression_6, unsubscribed 2026-10-12",
      "doc": "/code/refusals#check-suppressed-contact",
      "fix": "Leave them out: run the List again, which drops every suppressed Contact.",
      "then": "Collection.query"
    }
  ]
}

It says no, says why, and names the fix.

422RefusedPinecrest Homes’ second visitor was not enrolled: no Consent on record for sales email.
CheckFixThen
suppressed-contact pass—POST /{namespace}/collections/query
no-consent failRecord the Contact’s yes, with where they gave it, before the first send.POST /{namespace}/consents
JSON
{
  "type": "https://startupbuilder.dev/errors/refused",
  "title": "Refused",
  "status": 422,
  "detail": "Pinecrest Homes’ second visitor was not enrolled: no Consent on record for sales email.",
  "checks": [
    {
      "check": "suppressed-contact",
      "status": "pass"
    },
    {
      "check": "no-consent",
      "status": "fail",
      "observed": "no Consent for purpose sales-email",
      "doc": "/code/refusals#check-no-consent",
      "fix": "Record the Contact’s yes, with where they gave it, before the first send.",
      "then": "Consent.create"
    }
  ]
}

It says no, says why, and names the fix.

Pauses when

StopPauses whenFixThen
kill-switchyou press it, or the injection Stop firesReview what fired, then turn the Process back on.POST /{namespace}/processes/{process}/enable
Campaign.paused · kill-switch · Not live yet, gaps #2 · sample
{
  "$id": "https://api.sb/leaseline.app/events/event_951",
  "$type": "Event",
  "name": "Campaign.paused",
  "at": "2026-10-19T16:45:00Z",
  "data": {
    "campaign": {
      "$id": "https://api.sb/leaseline.app/campaigns/cold-email",
      "$type": "Campaign"
    },
    "reason": {
      "limit": "kill-switch",
      "observed": "pressed by worker_1",
      "bound": "off",
      "window": "now"
    }
  }
}

Plays that use it

PlayWhat it doesIts Metric
Instant responseAnswers every form and email within 5 minutes from your own pages, books the call, starts the trial or hands it to the right person.inbound-meeting-rate
Cold emailWrites first to people at companies that showed two fresh public reasons to talk, three short emails at most, and answers every reply by kind.positive-reply-rate
Warm introsFinds who already knows each company you want, and that person asks them first, from their own account, before any introduction.intro-acceptance-rate
Proof-of-work outreachSends each Prospect one finished piece of your product’s work, made from their own public data, in a plain email that asks for nothing.proof-reply-rate
LinkedIn outboundPicks each day’s People on LinkedIn, drafts the connection note and the Messages, and queues them in your send tray; you press every send.linkedin-reply-rate
Outbound callingA disclosed voice agent calls back anyone who asks within 60 seconds and answers your number; a person dials every cold call.callback-meeting-rate
GiftingSends one gift the Person picks after two relevant touches at a live moment, with you approving each, and counts the Meetings it adds.gift-meetings-per-100
Lead reactivationWrites once to each old Lead nobody works, only when something new answers what they asked, from their last contact at the Startup.reactivated-pipeline
Lead nurtureFollows up each unbought Lead with notes keyed to what they did, most in month one, until they buy, reply or go quiet 90 days.nurture-conversion
Account visitsFinds the fitting companies behind visits to your own buying pages and writes to the right person there, from facts, never from the visit.visit-reply-lift
Product signalsFinds teams getting value on a free account and writes to the right person, citing only their own usage, after you approve the first send.pql-deal-rate
Buying committeeWrites to 3 or more roles at each named company, one a week, and hands each engaged company to your AE within a day.committee-deal-lift
Waitlist interviewsInterviews each Waitlist signup with your disclosed agent, admits by fit under a published cap, and sends a result built on their company.interview-activation-rate

Cost only: it moves no Metric itself, and what it costs counts against each Play that uses it.

Hub guides it deepens

On startupbuilder.devIdWhat it holds
Triggernoun:triggerthe record, its fields and every call on it
Eventnoun:eventthe record, its fields and every call on it
Schedulescapability:schedulesthe System, its capability and its calls

Example

Leaseline, whenWhat happenedCost (sample)
2026-10-19Lee at Northgate Rentals writes “Try us again in January”—
2027-01-05the Trigger fires inside its 14-day window, and the SDR agent writes once$0.04

Compiled, not written: edit its page, then regenerate. Every step runs from a sentence or a line of code. In your words: the CRM words you know, and where each lives here.

Contents