automation · $39 · digital download · instant ZIP
Buy now — use today
Outcome: Map lead → proposal → invoice → paid with automation recipes
For: Solo operators drowning in manual admin
- ZIP download right after PayPal (success page)
- Full guide in Markdown + printable HTML (Print to PDF)
- extras/: START HERE, swipe templates, worked examples, worksheets, 30-day plan, FAQ
- Pays for itself if it saves ~1–2 hours or helps close one small upsell
After payment: instant ZIP with the full guide plus an extras folder (templates, examples, worksheets, 30-day plan).
Digital download · keep your PayPal receipt · no login required
Lead-to-Invoice Automation Playbook (n8n / Make)
Price: $39 USD · Format: Workflow recipes + implementation checklist + field maps · Delivery: Instant after PayPal
Who this is for
Solo freelancers and operators who:
- Copy-paste leads from forms into spreadsheets by hand
- Forget follow-ups and unpaid invoices
- Want automation without hiring a developer
- Can use n8n Cloud/self-host or Make.com
The problem
Admin time is silent profit leak. Done-for-you automation packs sell in 2026 because they save 10+ hours of setup. Buyers don’t want theory — they want recipe maps.
Outcome
A concrete Lead → Proposal → Invoice → Paid → Delivery system you can implement step by step.
System overview
Inbound lead
→ CRM/Sheet row + notify you
→ Proposal sent (status)
→ Accepted → invoice draft
→ Paid → delivery email + thank-you
→ No reply → follow-up sequence
→ Weekly unpaid digest
Recipe 1 — Form lead → CRM row → ping
Trigger: New Typeform / Tally / Google Form response
Actions:
- Normalize fields: name, email, company, budget, need
- Create/update row in Notion or Google Sheet
- Slack/email/Telegram ping: “New lead: {{name}} — {{need}}”
- Tag status =
new
Field map
| Form | CRM |
|---|---|
| Full name | name |
| Company | company |
| Budget | budget |
| Message | need |
| Source UTM | source |
Recipe 2 — Proposal accepted → invoice draft
Trigger: Status changed to proposal_accepted OR signed DocuSign/HelloSign
Actions:
- Create invoice draft (Wave/PayPal/Stripe invoice / Sheet log)
- Fill line items from proposal package
- Set due date = +7 days (or deposit due immediately)
- Notify you: “Send invoice to {{email}}”
Recipe 3 — Payment received → delivery + thank-you
Trigger: PayPal/Stripe payment webhook OR manual status paid
Actions:
- Mark invoice
paid - Send delivery email template (attach file or link)
- Create project folder checklist task
- Optional: add to “active clients” view
Recipe 4 — No-reply follow-up sequence
If status stays proposal_sent for 3 days → email #1
If still no reply at day 6 → email #2
If day 10 → polite breakup email
Email #1 angle: value bump + ask one question
Email #2 angle: alternative package
Breakup: “Closing the file Friday — want me to keep a slot?”
Recipe 5 — Unpaid invoice weekly digest
Trigger: Every Monday 9:00
Actions: Query invoices where status != paid AND due < today
Send yourself a digest list with amounts and days overdue.
Implementation checklist
- [ ] Choose n8n or Make
- [ ] Connect form + sheet/Notion + email
- [ ] Create status field enum: new / contacted / proposal_sent / accepted / invoiced / paid / lost
- [ ] Test with one fake lead end-to-end
- [ ] Connect PayPal/Stripe webhook (or manual paid toggle)
- [ ] Turn on follow-up scenario with test delays first
- [ ] Add weekly unpaid digest
- [ ] Document your “happy path” in 5 bullets for future you
Troubleshooting
- Duplicate leads: Upsert by email key
- Missed webhooks: Add manual “Mark paid” button/status
- Too many notifications: Batch digest instead of instant pings for low-priority events
ROI
If setup would take you 10 hours at $40/hr, that’s $400 of time. This playbook compresses the design work so you configure instead of invent.
Delivery
Full playbook with recipes, field maps, and checklist after PayPal. Tools themselves are separate accounts (n8n/Make free tiers often enough to start).
Bonus deep library (included in your ZIP)
ZIP extras include node-by-node build sheets, Make/n8n stack examples, field dictionaries, and a 30-day rollout. Start at extras/00-START-HERE.md.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ultra-detailed appendix
Status machine (do not invent extra statuses early)
new → contacted → proposal_sent → accepted → invoiced → paid
Side doors: on_hold, lost
Field normalization rules
- Email: lowercase trim
- Budget: strip currency symbols; store number + currency
- Name: keep as submitted; don’t auto-split weirdly
- Source: utm_source or “manual”
n8n node sketch (Recipe 1)
- Webhook / Form trigger
- Set (normalize)
- Notion/Sheet: upsert by email
- IF new vs existing
- Slack/Email notify
- Optional: wait 3 days → IF still proposal_sent → follow-up
Make.com sketch (Recipe 3 paid)
- PayPal / Stripe instant payment notification OR manual Watch rows
- Update invoice status paid
- Gmail delivery template
- Create task / checklist row
Failure modes library
| Failure | Guard |
|---|---|
| Double email | dedupe key email+date |
| Paid but no delivery | manual paid button + daily unpaid≠paid audit |
| Follow-up after they replied | cancel scenario on status change |
| Timezone Monday digest | set account TZ explicitly |
14-day test plan
Day 1–2 schema · Day 3 fake lead · Day 4 proposal_sent test · Day 5 follow-up with 5-min delay · Day 6 paid path · Day 7 digest · Day 8–14 real leads with you watching every run.
Ready? Get the ZIP
Map lead → proposal → invoice → paid with automation recipes — $39 one-time.
Buy with PayPal — $39After payment: instant ZIP with the full guide plus an extras folder (templates, examples, worksheets, 30-day plan).