How to set up cold email for your agency
Start with one niche, one buyer and one service your agency can deliver. A web, design, SEO or WordPress agency needs an offer that matches both the prospect and the evidence, plus someone ready to handle replies.
- Step 1
Choose separate sending domains
Register brand-related domains you control and redirect their websites to your main site. Keep cold outreach off the main domain and record who owns each domain.
- Step 2
Create mailboxes and authenticate DNS
We use three domains with one Google Workspace mailbox each. Activate mail with the MX records Google Admin specifies, then publish SPF, DKIM and DMARC for every domain before any sending.
- Step 3
Verify routing and warm up
Send tests to mailboxes you control, check authentication in the received headers and test replies forwarded to the main inbox. Warm up new mailboxes with genuine, expected correspondence before cold volume; do not treat elapsed time as proof of readiness.
- Step 4
Build and verify the list
Confirm the business, recipient role and email, then run email verification. Remove duplicates, suppressed contacts and anyone already contacted through email, postcards or another channel unless an existing plan explicitly calls for coordinated follow-up.
- Step 5
Document one relevant finding
Review the live website and reproduce one observation connected to your offer. Save the page, click path, screenshot, device and date so another person can verify it.
- Step 6
Write and inspect the message
Use the finding, its practical implication and one small offer, followed by a soft ask. Add an honest identity, advertising disclosure, valid postal address and easy opt-out, then check a fully rendered test for unresolved placeholders.
- Step 7
Launch at low volume and ramp
Start at 10 cold emails per mailbox per day, then move to 15 and finally 20 to 25 only when checks remain healthy. Count initial messages and follow-ups together, stay inside recipient business hours and use random spacing.
- Step 8
Follow up and stop on replies
Schedule two to three follow-ups a few days apart, each adding useful evidence or context. Test that any reply cancels the sequence and that an opt-out enters the suppression list before another send.
- Step 9
Measure and decide
Review delivery, bounces, replies, positive replies, meetings held, pipeline and wins by domain and variant. Pause for authentication failures, rising bounces or complaints before expanding a campaign.
Use separate domains with a clear brand connection
We run three sending domains with one Google Workspace mailbox on each, never our main domain. Naming patterns such as get[brand].com, hello[brand].com and try[brand].com illustrate the relationship; they are examples, not domains to copy or a promise of availability.
Domain and reply checks
- Own and identify the senderUse domains your agency controls and a real sender name. Create an actual mailbox on each sending domain, not just an alias for the main mailbox, and confirm the connected tool sends from that mailbox. Avoid lookalikes of another business or an identity that hides the advertiser.
- Redirect the websiteOpen each secondary domain in a browser and confirm it reaches your main site without a certificate warning. A web redirect does not configure email or authenticate it.
- Forward replies with labelsIn Gmail settings, configure and verify forwarding to the main inbox, retaining the original mailbox copy. In the main inbox, filter the forwarded messages by their original recipient and apply a label per sending domain. Reply to a test message and confirm the conversation and label are preserved.
- Keep mailbox visibilityMake sure the sending tool still detects replies in the original mailbox. Read both places during setup and test that forwarding does not prevent sequence cancellation.
- Separate every clientFor client campaigns, use separate domains and mailboxes per client, never a shared pool. Keep each client's data, access and suppression records separate, with suppression applied across that client's sending domains.
Publish SPF, DKIM and DMARC before warmup
Set all three on every sending domain as our operating requirement, even at low volume. The SPF example below assumes Google Workspace is the only sender; if other services send for the domain, merge their authorized sources into the existing SPF record instead of publishing a second one.
Host: @ | Type: TXT
Value: v=spf1 include:_spf.google.com ~all
Host: google._domainkey | Type: TXT
Value: {{complete_DKIM_value_generated_in_Google_Admin}}
Host: _dmarc | Type: TXT
Value: v=DMARC1; p=none; rua=mailto:[email protected]
After legitimate senders pass and reports are clean:
v=DMARC1; p=quarantine; rua=mailto:[email protected]Verify the actual message
- Generate and enable DKIMIn Google Admin, open Apps, Google Workspace, Gmail, Authenticate email; select the sending domain, generate the record and publish it in DNS. Use the google selector for google._domainkey, then start authentication after Google can find the record.
- Check public DNSUse Google Admin Toolbox Dig to query the domain TXT, google._domainkey TXT and _dmarc TXT. Confirm the host was not accidentally doubled by a DNS panel that appends the domain automatically.
- Inspect received headersSend from the actual mailbox through the actual tool to a Gmail test inbox and use Show original. Require SPF PASS, DKIM PASS and DMARC PASS; check that SPF or DKIM aligns with the visible From domain, rather than accepting a pass for an unrelated domain.
- Receive and review DMARC reportsReplace yourdomain.com, create the report destination and review legitimate sending sources and alignment. Move to quarantine only after those sources pass consistently; clean means no unexplained failures from authorized senders, not merely no reports arriving.
At 20 to 25 emails per mailbox per day you are far below the bulk threshold, so a plain reply opt-out ('reply no thanks') is what we use and what CAN-SPAM accepts. If you ever grow into bulk volume, switch to a platform that adds one-click unsubscribe headers (List-Unsubscribe and List-Unsubscribe-Post) and test them on a received message.
↑ Back to topWarm up first, then ramp per mailbox
Let a new mailbox establish normal, expected correspondence before introducing cold volume. We do not assign a universal warmup duration or treat synthetic engagement as evidence of inbox placement; authentication, real reply handling and controlled placement tests determine whether to proceed.
- Before launch
Warmup and seed tests
Exchange genuine mail with willing contacts and test Gmail and Yahoo inboxes you control. Check authentication, spam placement and reply routing before scheduling prospects.
- First stage
10 per mailbox daily
Start with a small verified batch. Check failures, replies and complaint signals before increasing; the cap includes follow-ups.
- Next stage
15 per mailbox daily
Increase only after the previous stage remains healthy. Hold or reduce volume if delivery, list quality or reply handling needs work.
- Our ceiling
20 to 25 per mailbox daily
This is our cold outreach operating ceiling, not Google's account limit or an industry benchmark. Add properly prepared mailboxes and domains for justified expansion after quality is stable.
| Setting | Our configuration | Verify |
|---|---|---|
| Window | Weekdays, 9 AM to 5 PM Eastern | Use recipient business hours |
| Spacing | Random 60 to 180 seconds | Inspect scheduled timestamps |
| Daily cap | Initial emails plus follow-ups | Review each mailbox queue |
| First message | Plain text; no images or pixels | Read the received test |
Our 9 AM to 5 PM Eastern window fits the recipients in that campaign; adjust it when a prospect is in another time zone. Random spacing controls pacing inside the window, while the daily cap still applies. Few or no links keep the first email focused; send the screenshot or report after the recipient asks.
↑ Back to topBuild a small, verified list with a suppression gate
Choose businesses your agency can serve and confirm a relevant decision-maker through public business information. An address being public or technically valid does not establish consent, buying intent or a reason to send.
| Field | Save | Ready when |
|---|---|---|
| Fit | Niche, location, service match | Offer fits the business |
| Recipient | Name, role, source, date | Role is relevant and confirmed |
| Address, verifier result, date | Valid; uncertainty held back | |
| Prior contact | CRM and every channel checked | No conflicting outreach |
| Suppression | Reason, date, sender or client | No matching exclusion |
| Evidence | Finding and research record | Reproduced and current |
Before import and again before send
- Verify each addressUse an email verification tool and retain the result and date. Exclude invalid addresses and hold unknown or catch-all results for further review; a verifier cannot promise delivery.
- Deduplicate people and businessesNormalize email case and compare domain, business and decision-maker records. Check email, postcard, call and other outreach logs so two channels do not start competing sequences.
- Enforce suppression centrallyKeep bounces, complaints, opt-outs and 'no thanks' records out of every campaign for that sender or client, across all its domains. Record bounce diagnostics for investigation, but do not automatically retry suppressed addresses.
- Test the exclusionCreate a controlled test record on the suppression list and attempt a preview import or queue check. Done means it cannot enter the sending queue, including through a later list upload.
Personalize with evidence that matches what you sell
We review the prospect's live website and document one specific, verifiable finding. One lesson from our outreach: an SEO agency wants SEO findings, while a web design agency wants design or functional findings. Apply that lesson to the service you sell and the buyer you approach.
Useful personalization
- The Contact page displays a form shortcode where the fields should appear.
- The visible Request an estimate button opens a 404 page.
- A named page lacks relevant structured data in a specified validator, with the scope explained.
Weak personalization
- A first-name merge field and a generic compliment.
- An 'outdated site' claim without a reproducible example.
- A ranking or revenue-loss claim inferred from one missing markup item.
Evidence that earns a first line
- Follow the visitor's real routeOpen the live page, click the visible action and retry in a normal browser. For a mobile claim, verify on a cellphone and record the conditions; a blocked audit tool is not evidence of a broken website.
- Save a reproducible observationRecord the source page, link label, destination, date, device and browser. Capture the source action and result, then ask another reviewer to repeat the route.
- Scope an SEO findingName the page and validator, such as Google's Rich Results Test, and check whether the schema is relevant. Missing structured data alone proves neither a ranking penalty nor lost traffic.
- Prepare a useful artifactMake a clean screenshot and a short report page with the observation, test date, reproduction route and suggested next step. Keep customer data out and recheck the finding before sending or repeating it.
Use the WordPress maintenance checklist to organize relevant technical checks, then choose only what you actually verified. If you sell implementation through a partner, confirm the scope your white-label development team can deliver before offering a repair.
↑ Back to topOne finding, one small offer and a soft ask
We use a short plain subject and A/B test options such as '{{prospect}} and {{agency}}' versus 'Question:'. Keep the audience, offer and body consistent when testing the subject, and compare positive replies and meetings held. Never imply a prior conversation with a fake Re: prefix.
Finding first
Name the exact page and action in the first line. A greeting is optional; an unsupported compliment adds no evidence.
Explain the impact
Use one modest sentence about the visitor task. Do not estimate lost leads or money without the business's data.
Make a small offer
Offer the screenshot, short report or a scoped repair. Ask whether that would be useful before asking for a meeting.
Subject: {{prospect}} and {{agency}}
Hi {{first_name}}, on {{review_date}}, the Request an estimate button on {{page_name}} opened a 404 page in my browser.
That route did not let me reach the estimate form.
I saved a screenshot and can send a short report with the click path and a suggested next step.
Would that be useful?
{{sender_name}} | {{agency}}
Advertisement for {{agency}}'s web services.
{{valid_physical_postal_address}}
To opt out, reply 'no thanks' and I won't write again.Read the actual received test
- Replace every placeholderVerify the name, page, date, sender and real postal address. Use a hypothetical example only as a template, never as an unverified claim about a prospect.
- Check the whole messageKeep plain text, a real signature and a legible ad disclosure and opt-out. No images or tracking pixels are needed in the first email; remove unnecessary links.
- Make the offer deliverableHave the screenshot or report ready before offering it. When someone accepts, send that artifact and answer the question before adding another ask.
Add something new, then close the sequence
We use two to three follow-ups spaced a few days apart. The timeline is an example schedule relative to the first email; move any scheduled send into the recipient's weekday business window and recheck time-sensitive findings.
- Day 0
Share the finding
Send the first email after verification. Offer the screenshot or short report rather than an unsolicited attachment.
- Day 3
Add the reproduction route
Explain exactly where you clicked and when you checked. Use the first follow-up example below after confirming it is still accurate.
- Day 7
Add a repair direction
Offer a concrete next check, with any uncertainty stated. Use the second follow-up example if it fits the actual issue.
- Day 14
Optional third follow-up
Send only if you have a genuinely new, verified observation worth sharing. Otherwise end after two follow-ups; silence is not permission to keep writing.
Subject: {{original_subject}}
Hi {{first_name}}, one detail that may help: I reached the error from {{source_page}}, using the Request an estimate button.
I checked again on {{recheck_date}} and saw the same result in {{browser_and_device}}.
Would you like the screenshot to forward to whoever manages the site?
{{sender_name}} | {{agency}}
Advertisement for {{agency}}'s web services.
{{valid_physical_postal_address}}
To opt out, reply 'no thanks' and I won't write again.Subject: {{original_subject}}
Hi {{first_name}}, a useful first check is to compare the button destination with the current estimate page, then retest the published button.
I cannot confirm the cause from the public page, but I can send the click path and that check in a short handoff note.
Would that help? I'll close the loop here if it is not a priority.
{{sender_name}} | {{agency}}
Advertisement for {{agency}}'s web services.
{{valid_physical_postal_address}}
To opt out, reply 'no thanks' and I won't write again.Apply CAN-SPAM to B2B outreach too
CAN-SPAM applies to commercial B2B email as well as consumer campaigns. This guide focuses on US B2B outreach and is not legal advice; Canada has CASL, and EU outreach involves GDPR and applicable electronic-marketing rules. Determine the recipient's jurisdiction before using this workflow elsewhere.
Commercial email requirements
- Use accurate headers and subjectsFrom, Reply-To and routing information must identify the sender honestly. The subject must describe the message without implying an existing relationship.
- Identify the advertisementClearly disclose that the message is an ad. Keep the disclosure readable in the initial message and follow-ups.
- Include a valid physical postal addressUse the actual sender's valid postal address. Fer Marketing operates as Fer LLC at 32 N Gould St, Sheridan, WY 82801; agencies adapting the templates must use their own valid address.
- Provide and honor an easy opt-outAccept a simple reply without payment or extra personal data. CAN-SPAM requires honoring opt-outs within 10 business days and keeping the mechanism working for at least 30 days after sending; our operating rule is immediate suppression.
- Monitor your vendorsYou remain responsible when a vendor sends for you. Test identification, unsubscribe handling and suppression across every domain before launch and after tool changes.
Track conversations and business outcomes by domain
Log the sending domain, mailbox, variant, prospect and campaign on each send. Separate message-level delivery data from unique-prospect outcomes so follow-ups do not inflate the number of people reached; open tracking is not needed to judge the campaign.
| Metric | Definition | Recording rule |
|---|---|---|
| Delivered | Accepted by the recipient server | Acceptance is not inbox placement |
| Bounce rate | Bounced attempts / sent attempts | Multiply by 100; use one period |
| Replies | Unique prospects who replied | Separate human and automated |
| Positive replies | Explicit interest or accepted next step | Tag consistently; exclude opt-outs |
| Meetings held | Conversations that occurred | Separate from bookings and no-shows |
| Pipeline | Qualified opportunity value | Record stage, amount and source |
| Won | Closed-won deals and value | Use your CRM's agreed definition |
| Signal | What it means | What to do |
|---|---|---|
| Bounces up | List or routing may be wrong | Pause; verify list and diagnostics |
| Zero replies | Placement or message may be weak | Seed-test placement; rewrite finding line |
| One domain deteriorates | Domain or mailbox issue possible | Pause it; inspect headers and reports |
| Complaints or opt-outs | Relevance or permission is poor | Suppress; review targeting and cadence |
| Replies, little interest | Finding or offer may not fit | Recheck service match and ask |
| Bookings, few held | Scheduling friction possible | Confirm time zones and attendance |
Campaign / period: {{campaign}} / {{dates}}
Domain / mailbox / variant: {{domain}} / {{mailbox}} / {{variant}}
Sent attempts / delivered / bounces: {{sent}} / {{accepted}} / {{bounces}}
Unique prospects / human replies / automated replies: {{prospects}} / {{human}} / {{auto}}
Positive replies / meetings held: {{positive}} / {{held}}
Qualified pipeline / won value: {{pipeline}} / {{won}}
Suppressions checked / action / owner: {{check}} / {{action}} / {{owner}}Coordinate cold email with postcards and real delivery capacity
We also use personalized postcards to put a documented website finding in front of a business. Follow the postcard campaign guide for the physical card and report workflow, then coordinate email through the same prospect record and suppression checks.
One contact history
Log the mailing date, finding, report version and email owner. Decide the combined sequence before either channel starts; avoid duplicate introductions.
One honest conversation
Do not claim someone saw a card or report without evidence. Offer the same useful artifact and honor refusals across the coordinated campaign.
A deliverable offer
Keep the repair within your agency's capabilities, confirm scope before promising work and assign someone to respond when a prospect accepts.
If you want help operating the method, contact Fer Marketing with your niche, offer, target geography and current sending setup. We can discuss cold email separately or as part of a coordinated postcard campaign, with scope confirmed before work begins.
↑ Back to topFrequently asked questions
How do agencies get clients with cold email?
Choose a specific buyer and service, verify the contact and open with a reproducible website finding related to that service. Offer a useful screenshot or report, follow up with new context and track positive replies through meetings and won work; results depend on fit, delivery and execution.
Should I send cold email from my main domain?
Our method uses separate brand-related sending domains, never the main domain, with one Google Workspace mailbox per domain. Redirect their websites to the main site and route replies to a monitored inbox; separation does not guarantee protection from reputation problems.
Do I need SPF, DKIM and DMARC for cold email?
We configure all three for every sending domain before warmup or outreach. Verify public DNS and a message sent through the actual tool, requiring authentication passes and DMARC alignment with the visible From domain.
How many cold emails should each mailbox send daily?
Our starting point is 10, followed by 15 and a ceiling of 20 to 25 per mailbox daily when checks remain healthy. Count follow-ups within the cap; these are our operating limits, not Google account limits or promised safe thresholds.
How long should a new mailbox warm up?
There is no universal duration that proves readiness. Let it handle genuine, expected correspondence, then verify authentication, controlled inbox placement and reply handling before introducing a small cold batch.
What counts as personalization in agency cold email?
A specific current observation that the recipient can verify, connected to a service you sell, counts as useful personalization. A first-name field plus praise is insufficient; save the click path, screenshot, date and testing conditions.
How many follow-ups should I send?
We use two to three, for example around days 3, 7 and optionally 14, with new evidence or context in each. Stop automation on any reply and suppress refusals immediately; end earlier if you have nothing useful to add.
Does CAN-SPAM apply to B2B cold email?
Yes, it applies to commercial B2B messages, including truthful sender details, ad identification, a valid physical postal address and an easy opt-out honored within 10 business days. Our workflow suppresses opt-outs immediately; provider policies and other jurisdictions impose separate requirements.
Is a reply opt-out enough, or do I need an unsubscribe link?
For low-volume, one-to-one cold outreach, a clear reply opt-out that you honor works for CAN-SPAM, and it is what we use. Senders who reach Google's bulk threshold (close to 5,000 messages a day to Gmail accounts) must also support one-click unsubscribe headers.
Can an agency share sending domains across clients?
Our method keeps separate domains and mailboxes for each client, never a shared pool. Separate access and data, and apply each client's suppression records across all that client's sending domains.
What should I check if nobody replies?
Pause expansion and send controlled seed tests to check authentication and placement. Then inspect list accuracy, finding relevance and the first line; no replies alone cannot tell you which factor failed.
Does Fer Marketing offer cold email as a service?
Yes, separately or coordinated with personalized postcards. Cold email is quoted after a short call based on scope and volume; we do not publish a fixed cold email price.
Send your niche, offer and current setup to [email protected]. We can help you define a cold email campaign grounded in verified findings and a service your agency can deliver.