Pre-flight checks for Run execution — what's blocking the next launch.
name, email, company, role.
A new campaign is created automatically if the name is new; if the name matches
an existing campaign, prospects are added to it.
POST http://ip-177-54-159-69.us-east-1.prod.aws.beamlit.net/api/webhook/resend to Resend with email.delivered / opened / clicked / bounced / complained.| Time | Prospect | Event | Variant | Step |
|---|---|---|---|---|
| — | michael.scott@attent.ai (Michael Scott) | AWAITING SEND | A | initial |
| — | sophie.taylor@loops.io (Sophie Taylor) | AWAITING SEND | A | initial |
| — | james.wong@buildkite.com (James Wong) | AWAITING SEND | A | initial |
| — | nina.patel@sendlane.com (Nina Patel) | AWAITING SEND | A | initial |
| — | alex.chen@stackbridge.io (Alex Chen) | AWAITING SEND | A | initial |
| — | rachel.kim@conduit.com (Rachel Kim) | AWAITING SEND | A | initial |
| — | derek.okafor@cauliflower.io (Derek Okafor) | AWAITING SEND | A | initial |
| — | lisa.wang@flywheel.io (Lisa Wang) | AWAITING SEND | A | initial |
| Started | Outcome | Found | Sent | Errors | Error |
|---|---|---|---|---|---|
| Aug 21, 1:05 PM | OK | 0 | 0 | 0 | — |
| Aug 21, 1:05 PM | OK | 0 | 0 | 0 | — |
| Aug 21, 1:00 PM | OK | 0 | 0 | 0 | — |
| Aug 21, 1:00 PM | OK | 0 | 0 | 0 | — |
| Aug 21, 12:55 PM | OK | 0 | 0 | 0 | — |
| Scheduled | Company | Prospect | Step | Variant | Log |
|---|---|---|---|---|---|
| Queue empty — no due sequence rows. They'll appear here when the next 5-minute cron tick has work to do. | |||||
| ID | Name | Status | Prospects | Action |
|---|---|---|---|---|
| 1 | SaaS Lead Gen — Q3 2026 | completed | 8 | |
| 2 | Campaign Run #3 — Summer 2026 | active | 8 |
| Campaign | Stuck rows | Stuck since | Sample prospect |
|---|---|---|---|
| No stuck rows. | |||
sequence_queue rows with status pending or generated whose scheduled_at is older than 30 minutes — rows the dispatch cron should have processed but didn't.| Time | Variant | Source Campaign | CTR | Template |
|---|---|---|---|---|
| No graduations yet — wait for jobs/graduate-winner.js to promote a winning variant. | ||||
variant_graduations (last 10, newest first). GET /admin/launch-status/graduations.json for the JSON feed.| Time | Campaign | Rows | Accepted | Rejected |
|---|---|---|---|---|
| No launches yet — the New Run launcher above only writes here on a successful POST. | ||||
run_launches (last 10, newest first). GET /admin/launch-status.json for the JSON feed (run_launches key).| Variant | Sends | Opens | Clicks | CTR |
|---|---|---|---|---|
| No live CTR yet — events start landing once Run #3 sends register delivered tracking. | ||||
email_events grouped by variant_id (delivered → sends, clicked → clicks). Same CTR formula as graduate-winner's dry-run verdict. Promotion decision stays with graduate-winner — this card is live signal, not a verdict. GET /admin/launch-status.json for the JSON feed.| Time | Campaign | Variant | CTR | Guard | Promote | Diff |
|---|---|---|---|---|---|---|
No dry-runs yet — run node jobs/graduate-winner.js <campaignId> --dry-run to populate. | ||||||
graduate_dry_runs (last 10, newest first). GET /admin/launch-status/dry-runs.json for the JSON feed.