Cold Email Deliverability Auditor
Audit a cold email program's sending setup and message body against the things that decide whether mail reaches an inbox: SPF, DKIM and DMARC records with their alignment and policy, the DNS lookup limit, a separate sending domain versus the primary corporate one, domain age and warmup state, list hygiene with bounce and complaint exposure, spam-trigger language, link and image ratio, unsubscribe presence, and the volume ramp per mailbox. Findings come back by severity with the concrete fix and the order to apply them. Use when a sending domain is new, replies have collapsed, or nobody has checked the DNS records, the list, and the copy in the same sitting.
Paste your SPF, DKIM and DMARC records, your sending stats, and one real email, and this skill audits the whole path to the inbox: authentication and alignment, sending-domain separation, domain age and warmup, bounce and complaint exposure, spam-trigger language, links and images, unsubscribe, and volume ramp. Findings come back by severity with the fix and the order to apply them.
Install to ~/.claude/skills/cold-email-deliverability-auditor/SKILL.md
npx agentscamp add skills/cold-email-deliverability-auditorPerfect personalization does not help from a domain that is not authenticated. Nothing in Anthropic's sales plugin touches the technical side of sending, and neither does most sales tooling — the sequencer sends what you give it and reports opens. This skill audits the layer underneath: the DNS records that prove you are you, the domain you send from, the list you send to, and the message itself. It works from text you paste, so it runs anywhere Claude does; pair it with outreach-claim-checker, which checks whether the email is true, once you know it will arrive.
When to use this skill
- You are about to start sending from a new domain or a new set of mailboxes.
- Reply rates fell off a cliff and nothing about the copy changed.
- Mail lands in Promotions or Spam for some recipients and Inbox for others.
- You inherited a sending setup and have never seen its DNS records.
- Your provider or a prospect's IT team bounced messages with a DMARC or SPF error you cannot read.
- Before a volume increase, a domain migration, or moving cold outbound off the primary corporate domain.
NOTE
This skill reads what you paste. It does not query DNS, log into a mailbox, or test-send. Ask your ESP or a DNS lookup for the raw records and paste them in. Every threshold below is a default this skill applies so its output is consistent; where your provider publishes its own numbers, say so and those win. Two thresholds are not ours: Google's published Email sender guidelines require authentication for every sender and, above 5,000 messages a day to Gmail accounts, SPF and DKIM and DMARC, one-click unsubscribe, and a spam-complaint rate kept under 0.3%. RFC 7208 caps SPF at 10 DNS lookups.
Inputs to ask for
Ask for all of these in one message; audit what arrives and mark the rest "not supplied" rather than guessing.
- The sending domain and the primary company domain.
- The SPF TXT record, the DKIM record for each selector in use, the DMARC TXT record, and the MX record.
- The date the sending domain was registered, and the date it started sending.
- Sending platform, number of mailboxes, and messages per mailbox per day for the last four weeks.
- Hard bounce rate, soft bounce rate, and spam-complaint rate over the same period.
- Where the list came from, when it was last verified, and whether it is verified at send time.
- One real email exactly as sent — subject, body, signature, links, images, footer.
- Whether open tracking, click tracking, or a custom tracking domain is on.
Instructions
- Establish the setup. Restate the domain, mailbox count, daily volume, and program age in four lines so the reader can confirm you are auditing the right thing. Note anything not supplied.
- Check authentication. For each record, report what it says, then what it means.
- SPF: exactly one SPF record for the domain (two is a permanent error); every sending platform present in it; count the DNS lookups against the limit of 10; the qualifier at the end (
-allfail,~allsoftfail,+allis a hole). - DKIM: a published key per selector, the signing domain, and the key length. 1024-bit is weak; 2048-bit is the current default.
- DMARC: the policy (
p=none,quarantine,reject), anysp=, the percentage, and whetherrua=reporting goes somewhere a human reads. - Alignment: DMARC passes only when a passing SPF or DKIM domain aligns with the visible From domain. Check the envelope-from and the DKIM
d=against the From. Platforms that send on your behalf without a custom return-path break SPF alignment silently.
- SPF: exactly one SPF record for the domain (two is a permanent error); every sending platform present in it; count the DNS lookups against the limit of 10; the qualifier at the end (
- Check domain strategy. Cold outbound sent from the primary corporate domain puts payroll, invoices, and password resets behind the same reputation. Flag it. A dedicated domain should be a plausible variant of the brand, have a working MX and a redirect to the main site, and carry its own DMARC.
- Check age and warmup. Compute the domain's age from registration and from first send. Domains younger than 30 days sending at full volume are the single most common cause of a program that never worked. Report the ramp actually observed week over week and flag any increase greater than roughly double the prior week, or a first week above 20 messages per mailbox per day.
- Check list hygiene. Apply these defaults: hard bounces at or above 5% is critical, 2 to 5% is high, under 2% is acceptable but worth watching; spam complaints at or above 0.3% is critical against Google's published threshold, and 0.1% is the number to aim at. Flag any list that was scraped, purchased, or has not been verified in 90 days, and any send with no verification step between export and send. Note whether role addresses (info@, sales@, support@) and known spam traps patterns (long-dead domains, catch-all-only domains) were filtered.
- Check the message. Read the pasted email and mark:
- Language: guarantee-and-urgency phrasing, all-caps words, exclamation stacking, money symbols in the subject, "free", "act now", "risk-free", and the subject line length.
- Structure: total links, whether any is a link shortener, image count and the image-to-text ratio, whether the email is a single image, and whether a plain-text alternative exists.
- Tracking: an open-tracking pixel and click-rewriting on cold mail, and whether tracking runs on a custom subdomain of the sending domain or on the vendor's shared domain.
- Footer: a working unsubscribe or opt-out path and a physical address. One-click unsubscribe (
List-UnsubscribewithList-Unsubscribe-Post) is required for bulk senders under Google's guidelines and is worth having below the threshold too. - Identity: whether the From name and address match a real person with a real mailbox that can receive replies.
- Assign severity. Deterministic, first match wins:
- Critical — no SPF, no DKIM, no DMARC record, SPF over the lookup limit, two SPF records,
+all, cold sending from the primary domain, bounces at or above 5%, complaints at or above 0.3%, or no unsubscribe path. - High — DMARC alignment failing,
p=nonewith no plan to enforce, a domain under 30 days at full volume, a ramp jump over 2x, an unverified or purchased list, or a single-image email. - Medium — 1024-bit DKIM, no
ruareporting, shared tracking domain, more than two links, spam-trigger language, no plain-text alternative. - Low — subject length, formatting, signature bloat.
- Critical — no SPF, no DKIM, no DMARC record, SPF over the lookup limit, two SPF records,
- Order the fixes. Authentication first, then domain strategy, then list, then volume, then copy. Say which fixes take effect on the next send and which need DNS propagation or a warmup period before the effect is visible. Do not recommend raising volume in the same pass as a reputation fix; one change at a time, or you cannot tell what worked.
- Say what you could not check. Reputation with a specific mailbox provider, whether a domain is on a blocklist, and actual inbox placement are all live lookups. Name them as the next steps outside this skill rather than implying the audit covered them.
Output
- Setup summary — domain, mailboxes, volume, program age, what was not supplied.
- Findings table — severity, area (authentication, domain, warmup, list, message), what was found, why it matters, and the exact fix, including the literal record to publish where the fix is a DNS change.
- Fix order — a numbered sequence with the wait time attached to each step.
- Re-check list — what to re-measure after each fix, and when.
- Out of scope — the live checks this audit could not perform.
Example
An excerpt from an audit of a two-week-old sending domain:
| Sev | Area | Finding | Fix |
|---|---|---|---|
| Critical | Auth | Two SPF TXT records on the domain — a permerror, so SPF never passes | Merge into one record with both include: mechanisms |
| Critical | Domain | Cold sequences sending from the primary corporate domain | Move to a dedicated domain; warm it before cutover |
| High | Warmup | 14 days old, already at 120/mailbox/day | Drop to 20/day, add ~50% per week |
| High | List | 2,400 rows exported in March, never re-verified | Verify at send time; expect 6-9% to drop |
| Medium | Message | 6 links, 2 of them shortened | One link, no shorteners |
Order: SPF (48h to propagate and confirm) → DMARC rua → domain move →
list verification → volume reset → copy. Re-measure bounces after send 1.Once the path to the inbox is sound, the content still has to be true — that is outreach-claim-checker, run from /check-outreach. Sequencers like Outreach and Apollo control the sending side of this (see sales engagement platform); the whole installable set is listed in Claude skills for sales, and Claude for sales teams is where this fits in the wider workflow. For the writing itself, email-sequence-drafter drafts the sequence this audit then checks.
Filed under
claude · sales · cold-email · deliverability · dmarc
Related
- Outreach Claim CheckerCheck every factual and personalization claim in a drafted outreach email, or a batch of them, against the research the draft was written from: funding rounds, job titles and recent moves, tech stack, headcount, product launches and press, and named mutual connections. Each claim is marked sourced with the line that supports it, unsourced, contradicted, or stale, then unsupported specifics are cut or narrowed to what the research actually says, and every email leaves with a send, fix, or hold verdict. A source is never invented and never inferred. Use when outreach was personalized from AI or analyst research and nobody has verified the details before it reaches a prospect.
- Claude for Sales Teams: The Surface MapWhich Claude surface a sales team should actually open: Anthropic's free sales plugin, claude.ai Projects, Cowork, Claude Code, and MCP connectors.
- Claude Skills for Sales: The Set Worth InstallingThe Claude skills a sales team should install: Anthropic's nine official ones, plus four of ours that verify and audit what the official set writes.
- Sales Engagement PlatformA sales engagement platform is the system reps work out of: it sequences emails, calls, and tasks across channels and logs every touch back into the CRM.
- Email Sequence DrafterDraft a four-to-six email sequence from a goal, an audience, and the product notes you paste in: a send-timing table, one job per email, three subject-line variants per email with character counts, a formatted and a plain-text version of each message, every product claim traced to your notes, and a compliance footer placeholder on every email. Use when a welcome, onboarding, launch, or nurture sequence has to be written from what the product actually does rather than from what a template assumes.
- ApolloApollo pairs a 240M+ contact database with outbound sequencing in one seat, and its MCP server is the most agentic thing about it.
- Claude Code for Revenue Ops: Connectors, CRM Audits, and the Fine PrintRunning Anthropic's sales plugin in Claude Code: wiring MCP connectors, auditing a CRM export, and the vendor terms that decide what you may connect.
- OutreachOutreach is a sales-execution platform that owns the outbound rep's whole workflow, repackaged around agents including Outreach Omni and Agent Studio.