Outbound Safety & Relevance Kit (2026)
Copy‑paste kit to run relevance‑first outbound without burning domains: Clay JSON schema for public‑source lead research, two complete 8‑touch sequences, domain rotation + warm‑up SOP with pause thresholds, reply‑classifier labels with a 15‑minute SLA, and a Postmaster Tools weekly checklist.
This is the copy‑paste kit we use to run relevance‑first outbound without burning accounts or domains. It’s designed for small, remote teams sending well under “bulk” thresholds—but compliant even if you scale. Notes up front:
- Gmail’s bulk‑sender definition applies to messages sent to personal Gmail accounts. If you ever send ~5,000+ messages in 24 hours to personal Gmail from the same primary domain (once is enough), you’re permanently treated as a bulk sender. Enforcement ramped up in November 2025.
- Meet authentication and alignment: SPF, DKIM, DMARC (min p=none), From: alignment to either SPF or DKIM org domain, valid PTR, TLS.
- For promotional mail, implement one‑click unsubscribe per RFC 8058 and honor within 48 hours.
- LinkedIn: do manual engagement only. No automation/scraping. Apollo: use in‑product features—no bots/scrapers. Clay: enrich from public URLs only (company site, blog, PR/news pages)—do not feed Sales Navigator links.
- Honor local laws (e.g., CAN‑SPAM, GDPR/ePrivacy) and platform terms. When in doubt, send fewer, better messages.
1) Lead‑research agent for Clay (public‑source only) — JSON schema + gates
Use this to generate 5–10 real angles per prospect from public sources, then choose one angle per message. Create a Clay table with these input columns:
- company_url (homepage)
- about_url (optional)
- blog_or_news_url (optional)
- press_or_announcements_url (optional)
- product_or_docs_url (optional)
- recent_article_url (optional; must be a public newsroom/blog—no LinkedIn)
AI step (Claude/OpenAI) configuration:
System prompt
You are a B2B lead‑research agent. Only use PUBLIC web pages we provide. Never use LinkedIn or gate‑kept sources. Return precise, verifiable angles with citations.
Rules:
- Produce 5–10 angles or return an empty list if evidence is thin.
- Each angle must reference a specific page section or quote and include the source URL.
- No flattery. No generic “I love your blog.” Each angle must be unique and actionable.
- If sources conflict or are >18 months old, lower confidence.
- If a page signals “no cold outreach,” return zero angles and set block_reason.
JSON schema (paste in model JSON mode)
{
"type": "object",
"required": ["prospect_summary", "angles"],
"properties": {
"prospect_summary": {
"type": "object",
"required": ["what_they_sell", "target_users", "recent_signals"],
"properties": {
"what_they_sell": {"type": "string"},
"target_users": {"type": "string"},
"recent_signals": {"type": "array", "items": {"type": "string"}}
}
},
"angles": {
"type": "array",
"items": {
"type": "object",
"required": ["angle", "why_now", "evidence_quote", "evidence_url", "opening_line", "category", "confidence_0_to_1"],
"properties": {
"angle": {"type": "string"},
"why_now": {"type": "string"},
"evidence_quote": {"type": "string"},
"evidence_url": {"type": "string", "format": "uri"},
"opening_line": {"type": "string"},
"category": {"type": "string", "enum": ["product", "hiring", "funding", "customer_story", "changelog", "partnership", "pricing", "workflow", "risk"]},
"confidence_0_to_1": {"type": "number", "minimum": 0, "maximum": 1},
"do_not_use_if": {"type": "string", "description": "When this angle would backfire."}
}
}
},
"block_reason": {"type": "string"}
}
}
Quality gates inside Clay
- Reject row if angles.length = 0.
- Reject angle if evidence_url domain is LinkedIn or if opening_line duplicates another angle by >60% similarity.
- Add a boolean column
legal_or_opt_out_signalif block_reason is present; never email these rows.
Usage pattern
- Pick one angle for first message; hold 1–2 backups for bumps. Keep evidence_url handy for your reply thread.
2) 8‑touch hybrid sequence (LinkedIn‑first → email)
Manual‑first to comply with platform policy. 8 touches over ~3 weeks. Cap to what a human can do well.
Daily caps
- ≤20 manual LinkedIn actions/day per rep (connection requests + DMs + meaningful comments combined).
Pacing (default)
- Day 0 (Mon): Light engage 1 — view profile, follow company, like 1 recent post.
- Day 1 (Tue): Connection request with note (≤260 chars).
- Day 3 (Thu): Comment with substance (2–3 lines) on a relevant post.
- Day 4 (Fri): DM #1 short value; ask permission to email a 2‑paragraph summary.
- Day 6 (Mon): Email #1 (personalized; see Section 3/4 for copy rules).
- Day 10 (Fri): DM #2 quick check + one‑line value.
- Day 14 (Tue): Email #2 value/case.
- Day 21 (Tue): Break‑off with resource + open door.
Templates (swap [BRACKETS])
Connection note "[FIRST], noticed [ANGLE.WHY_NOW] from [SOURCE]. Not pitching—curious how you’re measuring [METRIC] this quarter. —[YOU]"
Comment (example) "The [CHANGELOG/POST TOPIC] jumped out. If [CONSTRAINT], have you tried [TACTIC]? We saw [X%] lift moving it earlier in the flow."
DM #1 (ask‑to‑email) "[FIRST]—saw [ANGLE] here: [URL]. If helpful, I can email a 2‑para teardown of how teams in [THEIR NICHE] cut [PAIN] by [RESULT]. Ok to send?"
DM #2 (nudge) "Looping back on the [ANGLE] note. Want the 2‑para version or a quick Loom?"
Objection handlers (DM)
- “Not the right person” → "Appreciate it—who owns [METRIC/WORKFLOW] so I don’t spam you?"
- “No time” → "Understood. If I send a 90‑sec Loom tailored to [ANGLE], worth a skim this week?"
- “We’re set” → "Makes sense. If [TRIGGER] changes, what would you revisit first? I’ll note it and check back in [MONTH]."
- “Policy/No DMs” → "Thanks for the heads‑up—won’t DM again. If ok, I’ll email one summary and include one‑click opt‑out."
Fail‑safes
- If no connection acceptance by Day 6, skip DMs and proceed email‑only.
- Never automate profile views/comments/DMs. Keep it human. Document each touch in your CRM/Sheet.
3) 8‑touch sequences (email‑first variant + copy you can ship)
Stay well below reputation cliffs. Follow authentication and one‑click rules. Templates below assume B2B cold outreach.
Sending window
- Local to recipient, Tue–Thu, 08:30–11:00 or 14:00–16:30. Avoid :00 timestamps; randomize ±7–11 minutes.
Daily caps (cold)
- Per inbox: ramp 15 → 25 → 40 → 50/day over 4 weeks; do not exceed 60/day.
- Per sending domain: max 200/day across all inboxes until strong reputation; never exceed 500/day cold.
Headers (RFC 8058 one‑click example)
List-Unsubscribe: <mailto:unsubscribe@[YOURDOMAIN].com?subject=unsubscribe>, <https://[YOURDOMAIN].com/u/[TOKEN]>
List-Unsubscribe-Post: List-Unsubscribe=One-Click
Honor removals within 48 hours. Include a plain “reply STOP to opt‑out” line in the body as a belt‑and‑suspenders courtesy.
Subject line bank (pick 1)
- "[FIRST], re: [ANGLE.category] on [SITE]"
- "Quick idea on [PAIN] from your [ARTICLE TITLE]"
- "Sanity check on [METRIC] targets"
Email #1 (Day 6 if LinkedIn‑first; Day 0 if email‑first)
Hi [FIRST],
Noticed [ANGLE.why_now] here: [ANGLE.evidence_url]. If you’re aiming to [TARGET OUTCOME], a 2‑step change we’ve shipped for [PEERS/ NICHE] cut [PAIN] by [RESULT RANGE].
Happy to send the exact steps (2 short paras) or a 90‑sec Loom—your call.
—[YOU], [ROLE]
[ONE-LINE CREDENTIAL]
[Unsub: 1‑click enabled; reply STOP to opt‑out]
Bump #1 (Day +2) "Worth a 2‑para summary on [ANGLE] or should I close the loop?"
Email #2 (value/case) (Day +7)
Subject: the 2‑step we use for [PAIN]
[FIRST], here’s the 2‑para version I mentioned:
1) [STEP A] → impact: [NUMBER] with [TOOL/CONSTRAINT].
2) [STEP B] → impact: [NUMBER]; watch for [GOTCHA].
If it’s useful, I can tailor this to your [STACK/CONSTRAINT] and show the before/after in 5 mins.
—[YOU]
Bump #2 (Day +3 from Email #2) "Keep or kill this thread? If ‘kill,’ I’ll archive you."
Email #3 (break‑off) (Day +7 from Bump #2)
Closing this out, but leaving you a resource our founders liked: [TEMPLATE/PLAYBOOK URL]. If [TRIGGER EVENT], ping me and I’ll send a focused plan.
All the best,
[YOU]
Objection handlers (email)
- Not the right person → "Who owns [WORKFLOW/METRIC] so I can route this correctly?"
- No budget → "Understood. If we showed a zero‑license version that saves [HOURS/$] in [X weeks], worth a later look?"
- Send info → "Sent the 2‑para version above; want the 90‑sec Loom tailored to [ANGLE]?"
- Already solved → "Nice. What would have to change for this to outperform your current [TOOL/PROCESS]?"
Compliance reminders
- Keep Gmail spam rate comfortably <0.3% in Postmaster. If you ever approach it, pause. Personal Gmail volume near 5,000/day → you’re a bulk sender forever; be fully compliant.
4) Domain rotation + warm‑up SOP (with hard pause rules)
Use separate sending domains (not your primary corporate domain). Subdomains under the same primary still aggregate for Gmail’s bulk classification, so treat each primary domain independently. Authenticate every domain.
Baseline architecture
- 2–4 secondary primary domains (brand‑consistent variants). Example: statelessfounder.co, statelessfounder.ai.
- 2–4 mailboxes per domain (e.g., kira@, santi@, ops@). Unique display names and signatures.
- Dedicated inbox per rep to keep human reply behavior natural.
DNS + transport
- SPF: include your ESP/sequencer.
- DKIM: 2048‑bit keys; rotate annually.
- DMARC: start p=none; rua to a monitored mailbox; move to quarantine/reject only when confident.
- PTR: ensure rDNS maps IP → sending host.
- TLS: require opportunistic TLS; most ESPs default to this.
Warm‑up & ramp (per inbox)
- Week 1: 15/day (seed replies from teammates and friendly domains; write real responses).
- Week 2: 25/day.
- Week 3: 40/day.
- Week 4: 50/day (do not exceed 60/day cold ongoing).
Pause/retire thresholds (any one triggers action)
- Gmail Postmaster Spam Rate ≥0.20% for 2 consecutive days → pause that domain 72 hours; narrow targeting; review copy.
- Gmail Postmaster Spam Rate ≥0.30% any day → immediate stop for that domain 7 days; investigate; consider retiring.
- Hard bounces ≥2% in a batch/campaign → stop list; verify syntax & mail‑server existence; re‑validate.
- ESP complaint rate ≥0.10% (e.g., Amazon SES review threshold) → pause and remediate.
Daily send ceilings (cold)
- Per inbox: ≤60/day after ramp.
- Per domain: ≤200/day until reputation is demonstrably solid; scale by adding domains, not by spiking volume.
Hygiene & patterns
- Never reuse identical first lines; rotate structure, not just synonyms.
- Keep HTML minimal; plaintext or light‑HTML with 1–2 links max.
- Avoid link shorteners; use branded links.
- Seed to 3–5 monitoring inboxes (Gmail/Outlook/Apple) and watch placement weekly.
Recordkeeping
- Maintain a domain ledger: created_on, DNS auth status, warm‑up dates, current caps, last Postmaster check, spam rate trend, pause history.
5) Reply‑classifier labels + 15‑minute routing SLA
Route real interest in under 15 minutes during sender working hours; never let good replies sit.
Labels
- Interested
- Referral (gave a name or asked you to contact someone else)
- Not Now (explicit defer: “later/Q3/next year”)
- Spam/Unsubscribe (opt‑out language or abuse)
Classifier spec (for your sequencer or an automation tool)
Input: { thread_text, latest_reply_text, received_at_local, sender_mailbox, prospect_email }
Output: {
label: "Interested" | "Referral" | "Not Now" | "Spam/Unsubscribe" | "Unclear",
confidence: 0..1,
referral_contact: { name?: string, email?: string, role?: string },
sla_window: { should_alert: boolean, reason?: string }
}
Rules of thumb:
- “let’s talk”, “interested”, calendly links, specific time windows → Interested.
- “not now/quarter/next year/circle back” → Not Now.
- “try [NAME/EMAIL]”, “I’m not the right person” with a contact → Referral.
- “unsubscribe/stop/remove” or abuse → Spam/Unsubscribe.
Automations
- Interested → Immediately alert Slack/Telegram + assign task due in 15 minutes (working hours 09:00–17:00 sender local). Outside hours: schedule for 09:05 next business day. Auto‑insert a reply draft with the chosen angle and a 2‑slot calendar link.
- Referral → Create new contact; send “asked‑to‑introduce” email citing the referrer; thank the referrer with a one‑liner.
- Not Now → Log next‑touch date the prospect gave; enroll in a single “check‑back” step on that date with a new angle.
- Spam/Unsubscribe → Immediately suppress at person + domain; reply only if a human confirmation is polite/required; remove from all future sends.
Fast‑reply skeletons
- Interested "Great—how does [TOMORROW 10:30/14:00 YOUR TIME] look? Here’s a 2‑slot link: [CAL]. I’ll tailor the walkthrough to [ANGLE]."
- Referral "Appreciate it—will reach out to [NAME]. I referenced you so they have context."
- Not Now "Thanks for the clarity. I set a reminder for [MONTH]. If anything changes before then—e.g., [TRIGGER]—want me to jump in sooner?"
- Unsubscribe "All set—you’re off our list. Thanks for letting me know."
6) Gmail Postmaster Tools setup + weekly review checklist
Set this up once per primary domain you send from; review weekly. Data is delayed (expect 24–48 hours lag).
Initial setup (once)
- Authenticate: SPF, DKIM, DMARC (p=none minimum) with alignment to the From: org domain used to send.
- Verify Postmaster Tools access to each primary sending domain.
- Send only over TLS; ensure PTR (reverse DNS) is valid for your sending IPs.
- Implement RFC 8058 one‑click unsubscribe for promotional mail; honor within 48 hours.
Weekly review (15–20 minutes; Monday 10:00 your time)
- Compliance status → any red/yellow? Fix DNS first.
- Spam Rate dashboard → keep <0.3%. If ≥0.2% for 2 days, invoke pause plan.
- Delivery Errors → look for spikes (temp/permanent rejects); correlate to campaigns.
- Feedback loop/complaints (via ESP) → keep ≤0.1%.
- IP/Domain reputation → if dropping, narrow audience + reduce daily caps.
- Seed inbox checks → spot test rendering and placement.
- Unsub flow → test the one‑click link and mailto path; confirm suppression works.
- Changelog → record issues + fixes in your domain ledger.
Operating notes
- Subdomains under one primary still aggregate for bulk classification; separate primaries if you need parallel volume, but never to dodge compliance.
- If you truly approach ~5,000/day to personal Gmail, accept bulk‑sender status and ensure every requirement is green before you scale.
7) Quick reference: caps, thresholds, legal notes
Keep this taped above your monitor. These are the cliffs you avoid and the defaults you use.
Non‑negotiables
- SPF + DKIM + DMARC (p=none min) + From: alignment + valid PTR + TLS.
- One‑click unsubscribe (RFC 8058) for promotional traffic; honor in ≤48h.
- Manual LinkedIn only. Clay reads public URLs only. Apollo use stays inside its UI.
Caps
- ≤60 cold emails/day per inbox after ramp; ≤200/day per domain until reputation is strong.
- ≤20 manual LinkedIn actions/day per rep.
Pause rules
- Gmail Spam Rate ≥0.20% for 2 days → 72h pause + fix.
- Gmail Spam Rate ≥0.30% any day → 7‑day stop; consider retire.
- Hard bounces ≥2% → stop + re‑validate.
- ESP complaints ≥0.10% → pause + remediate.
Sequence order (default)
- LinkedIn‑first (engage → connect → DM ask‑to‑email) → Email #1 → DM nudge → Email #2 → break‑off.
- Email‑first for accounts with dormant LinkedIn or when connection requests are saturated.
Legal + platform
- Honor local email laws and company policies. Respect “do not contact” signals found in robots.txt, privacy, or careers pages.
- November 2025: Gmail enforcement increased; assume your traffic is scrutinized. Microsoft began enforcement on May 5, 2025. Build for compliance, not loopholes.
If something breaks
- Send less, to tighter ICP slices. Fix DNS/auth first. Rotate to rested domains only after you’ve corrected the cause—not as a band‑aid.