5 Signs Your Roofing Company Email Marketing Needs an Audit
On this page
A roofing company email marketing audit is broken when it grades campaign performance but ignores the four things that actually decide whether email helps your business: whether the messages are legal, whether they reach the inbox, whether the list is real, and whether anyone handles the replies. Open rate and click rate sit on top of all of that. If the foundation is cracked, a pretty dashboard just hides the problem.
Here is the short version. A real audit checks five layers, in this order: compliance (does the email meet the law and your own claims), authentication and deliverability (will Gmail, Yahoo, and Outlook actually accept it), list quality (do you know where every contact came from), job attribution (did the email lead to booked inspections, beyond clicks), and follow-up ownership (does a human answer the replies and process the opt-outs). If your audit starts with open rates and never reaches those five, it is broken no matter how good the numbers look.
This matters more for roofers than for most businesses. Your sends are spiky. You go quiet for weeks, then blast a storm list the day after hail. You reactivate five-year-old estimates before a slow season. You import a canvassing spreadsheet into a new CRM. Every one of those moves is exactly the behavior that mailbox providers flag and that compliance regulators notice. A roofing list is also unusually messy: past customers, open bids, warranty contacts, storm leads, real-estate referral partners, and cold door-knock data all live in the same database, and they do not deserve the same email.
Below are the five signs your audit is broken, what to inspect for each, the current 2026 rules that decide whether your mail gets delivered or rejected, and a scorecard plus templates you can run this week. The goal is simple: turn email from a thing you hope works into a channel you can prove works, house by house.
The five-layer model: what a real audit actually checks
Before the signs, here is the structure a working audit follows. Most roofing audits I see only touch the top row and call it a day.
| Layer | Core question | What breaks if you skip it |
|---|---|---|
| Compliance | Is this email legal and are the claims supportable? | Fines, complaints, lost trust, regulator attention |
| Authentication & deliverability | Will major inbox providers accept it? | Mail lands in spam or gets rejected outright |
| List quality | Do I know the source and status of every contact? | Wasted sends, complaints, suppression failures |
| Job attribution | Did this lead to inspections, estimates, signed work? | You optimize clicks while revenue stays flat |
| Follow-up ownership | Does a person handle replies, opt-outs, bounces? | Hot leads rot, opt-outs get ignored, list decays |
Notice the order. Compliance and deliverability come first because they decide whether the message is allowed and whether it arrives. Attribution and follow-up come last because they decide whether the message earned anything. Open rate is a symptom that sits across all five. When it drops, the cause is almost always one of these layers, not your subject line.
Sign 1: Your audit opens with open rates instead of the law
If the first slide of your email review is a line chart of open rates, the audit is already off the rails. Performance numbers are the last thing to check, not the first. The first question is whether the email is allowed to exist in the form you sent it.
A roofing email that promotes inspections, repairs, financing, warranties, storm response, or seasonal maintenance is a commercial message under federal law. In the United States that means the FTC's CAN-SPAM Act applies. The rules are not exotic. Commercial email must not use false or misleading header information, must not use deceptive subject lines, must identify the message as an ad where required, must include a valid physical postal address, must offer a clear way to opt out, must honor opt-out requests promptly, and must monitor what anyone sending on your behalf is doing. That last one matters: hiring a marketing agency or using a lead vendor does not move the legal responsibility off your company.
The stakes are not theoretical. CAN-SPAM penalties are assessed per email, and the maximum civil penalty was adjusted to $53,088 per message effective in 2025. In 2024 the FTC and DOJ obtained a $2.95 million penalty against Verkada, its largest CAN-SPAM action, after the company sent more than 30 million commercial emails while failing to honor opt-outs, failing to make the opt-out clear, and omitting a valid physical address. No regulator is going to chase a small roofing company over a single newsletter. But a contractor who imports a 40,000-row cold list, sends storm offers with a broken unsubscribe link, and ignores the replies is doing the exact things that draw complaints.
The claims problem unique to roofing
Compliance is not only structural. The words matter too. The FTC's advertising and marketing guidance requires that claims be truthful and able to be backed up. Roofing email is full of phrases that get companies in trouble:
- "Free roof" — almost never literally true; it usually means an insurance claim the homeowner may or may not get.
- "Insurance approved" or "guaranteed claim approval" — you do not control the carrier's decision.
- "No deductible" / "we waive your deductible" — in many states, eating a deductible is illegal insurance fraud, not a promotion.
- "Every roof in this area was damaged" — a blanket claim you cannot support house by house.
- "Storm special, this week only" — fine if the terms are real and disclosed; a problem if there is no actual deadline or terms.
An audit that checks open rates but never reads the subject lines and body copy for unsupportable claims is grading the wrong thing. A good audit marks every claim pass, fail, or needs-review, and routes the borderline ones to whoever in your shop owns legal review.
What to inspect for Sign 1
- Sender name and from-address: do they clearly identify your company?
- Subject line: does it match the body, or is it bait?
- Physical postal address: present, current, and real in every template?
- Unsubscribe: visible, plain-language, and functional?
- Opt-out handling: honored within the required window, every time?
- Vendor oversight: is your agency or lead source following the same rules?
- Claims: every storm, insurance, warranty, and pricing claim reviewed and supportable?
If you cannot answer those cleanly, fix them before you spend one minute debating send times.
Sign 2: Nobody can explain SPF, DKIM, and DMARC, and your mail is quietly getting filtered
The second sign is technical, and it is the one that silently kills more roofing campaigns than bad copy ever will. If no one at your company can tell you the sending domain, the email platform, whether SPF and DKIM are set up, what your DMARC policy is, and whether your bounces and unsubscribes are handled correctly, your audit is incomplete. Worse, you may be getting filtered or rejected without knowing it.
The rules tightened hard between 2024 and 2026, and they are now enforced. Gmail and Yahoo rolled out sender requirements that took effect in 2024, and Microsoft followed for Outlook, Hotmail, and Live in 2025. Here is the current state of play across the major inboxes.
| Requirement | Gmail (bulk) | Yahoo (bulk) | Microsoft Outlook (high-volume) |
|---|---|---|---|
| SPF + DKIM | Required | Required | Required |
| DMARC policy (at least p=none) with alignment | Required | Required | Required |
| Spam complaint rate ceiling | Stay under 0.10%, never hit 0.30% | Under 0.30% | Authentication-focused; keep complaints low |
| One-click unsubscribe (RFC 8058) | Required | Required | Strongly recommended |
| Honor unsubscribes promptly | Within 2 days | Within 2 days | Expected |
| "Bulk / high volume" threshold | ~5,000+ messages/day to that provider | ~5,000+/day | ~5,000+/day |
Sources for the table: Google's email sender guidelines FAQ, the Yahoo Sender Hub best practices, and Microsoft's high-volume sender announcement. Always confirm the live numbers against those pages before a big send, because providers adjust them.
Why this hits roofers harder than the 5,000/day number suggests
It is tempting to read "5,000 messages per day" and assume the rules do not apply to you. Two reasons that thinking is dangerous. First, the spam-complaint and one-click-unsubscribe expectations effectively apply to everyone, not only the biggest senders; the providers reserve the right to filter any sender that authenticates poorly or generates complaints. Second, roofing sends are bursty by nature. You might send 300 emails a week most of the year, then push 8,000 storm-response emails in a single morning after a hailstorm. That spike can put you over the bulk threshold on exactly the day you most need the mail to land. Microsoft's enforcement moved non-compliant high-volume mail to Junk first, then began rejecting it outright with a 550 error. A rejected storm email is a missed roof.
The "mystery slump" this explains
Here is the pattern I see constantly. An owner notices replies dried up. He blames the offer, rewrites the subject line, sends again, gets nothing, and concludes "email doesn't work for roofers." The real cause is almost always under the hood: a new sending domain with no warm-up, a DKIM signature that stopped aligning after a platform change, an SPF record that broke when someone edited DNS, or a spam-complaint spike from a cold import. No subject line fixes a deliverability failure. Better copy sent to the spam folder is still in the spam folder.
What to inspect for Sign 2
- Sending domain and subdomain (are you sending from your real brand domain?)
- Email platform and whether it signs DKIM for your domain
- SPF record present and not exceeding lookup limits
- DMARC policy published and aligned (p=none at minimum)
- One-click unsubscribe header active on bulk/marketing mail
- Bounce handling: are hard bounces auto-suppressed?
- Complaint rate: do you monitor it, and is it well under 0.30%?
- Recent DNS or platform changes that could have broken alignment
- A named owner for this checklist (your platform support, DNS host, or an email consultant)
If no one owns this, that is the finding. Assign it.
Sign 3: Your list cannot prove where contacts came from
The third sign is list provenance. Pull up your email audience right now. For any given contact, can you answer: where did this person come from, what is our relationship, when did we last touch them, did they opt in, and are they tied to a real property? If the honest answer is "they're just in the database," you are not auditing email marketing. You are blasting a spreadsheet and hoping.
Roofing lists are uniquely tangled because the business touches so many relationship types. A working audit segments by source and status, because each group deserves a different message, a different cadence, and a different legal footing.
| Segment | Typical source | Relationship strength | Best action |
|---|---|---|---|
| Past replacement customers | Signed jobs in CRM | Strong, warm | Warranty care, maintenance, referral asks |
| Open / unsold estimates | Bids never closed | Warm, time-decaying | Targeted follow-up, financing, re-quote |
| Repair-only customers | Service tickets | Moderate | Upsell to inspection, maintenance plan |
| Storm-event leads | Canvass, forms after a storm | Variable, often cold | Low-pressure inspection invite, service-area check |
| Warranty / maintenance subscribers | Plan signups | Strong, recurring | Scheduling reminders, plan renewals |
| Referral / trade partners | Realtors, property managers, GCs | Strong, B2B | Different content entirely; not consumer offers |
| Cold imports / purchased data | Bought lists, scraped data | None | Legal review before use; often archive |
When all of these are merged into one "All Contacts" list and hit with the same "Need a new roof?" blast, three things happen at once: the warm customers feel spammed, the cold imports complain, and your spam rate climbs toward the 0.30% cliff that gets the whole domain filtered. One bad segment poisons delivery for the good ones.
Suppression is half the audit
Most roofers audit who they are mailing and forget to audit who they must never mail. Suppression records are as important as the audience itself. Your audit must confirm that unsubscribed contacts, hard bounces, complaint addresses, and explicit do-not-contact requests are excluded everywhere. The danger zone is multiple tools. If your newsletter goes out of one platform, your storm campaign out of another, and your CRM sends estimate follow-ups, an opt-out in one system may not exist in the others. That is how a homeowner who unsubscribed last spring gets a storm blast in the fall, complains, and dents your deliverability.
This is also where good recordkeeping pays off. Contractors who keep clean property-level history know more than an email address; they know the roof behind it: when it was last worked on, whether there is an open warranty, what the last estimate was, and whether a recent storm crossed that address. Tools built for this, like RoofPredict, help organize that property and storm context so a contractor can build segments that match real roofing situations rather than mailing one undifferentiated blob. To be clear about the limits: that kind of tool helps you target and document the right homes; it does not stand in for consent, privacy review, or your email platform's settings, and it does not inspect roofs or certify their condition.
What to inspect for Sign 3
- Can you name the source for every segment?
- Is opt-in status recorded, especially for older or imported contacts?
- Are contacts tied to property records rather than floating email addresses?
- Is suppression synced across every sending tool?
- Have you tested an unsubscribe end to end and confirmed it sticks?
- Are cold/purchased contacts walled off pending legal review?
Sign 4: Your metrics don't connect to a single booked inspection
The fourth sign is the attribution gap, and it is the one that wastes the most money quietly. Opens, clicks, and form fills are activity, not outcomes. A roofing email audit has to trace the line from send to scheduled inspection to issued estimate to signed work. If your report ends at "1,200 opens and 90 clicks" and never reaches "how many roofs did we actually get on," you are optimizing the wrong end of the funnel.
Clicks with no booked inspections is a diagnosis, not a dead end. Walk the chain and find the break:
- Lots of opens, few clicks: the offer or subject promise is weak.
- Lots of clicks, few form fills: the landing page is slow, long, confusing, or untrusted.
- Lots of form fills, few booked inspections: nobody is calling leads back fast enough, or the phone line is unmanned.
- Booked inspections outside your service area: your segmentation or geo-targeting is broken.
- Booked inspections you cannot staff: marketing is outrunning production capacity.
That last point is the one roofing audits forget. Email is not a closed marketing loop; it dumps work onto operations. A storm-readiness email sent ahead of a forecast can generate a flood of inspection requests that needs phone coverage, field crews, photo intake, and emergency triage to absorb. If the office cannot answer for two days, the campaign "worked" and the company still lost the jobs to whoever called back first.
Trace one campaign, end to end
The single most useful artifact an audit can produce is one campaign traced all the way through. Use a table like this and fill it in from real records, not estimates.
| Field | Example entry |
|---|---|
| Segment | Past customers, 18-36 months since job |
| Message / offer | Free fall maintenance check |
| Call to action | Book online or call office |
| Destination | Booking page + tracked phone number |
| Reply inbox | service@yourdomain, monitored by office manager |
| Follow-up owner | Office manager, same-day callback target |
| Inspections booked | 31 (from CRM) |
| Estimates issued | 12 |
| Outcome | 4 signed, 5 pending, 3 declined |
| Unsubscribe rate | 0.4% |
| Complaint rate | 0.02% |
| Notes | 6 replies were warranty questions, not new work |
Report conservatively, on purpose
Resist the urge to put a revenue number on every email. "This campaign generated 31 booked inspections in the CRM" is a claim you can defend. "This email produced $140,000" usually hides assumptions about close rate, job size, and attribution that fall apart under a question. Roofing sales involve phone calls, referrals, insurance conversations, repeat site visits, and offline decisions that no email platform can fully see. Honest, checkable numbers build more trust with an owner than inflated ones, and they make next quarter's audit comparable.
Sign 5: No one owns the replies, the opt-outs, and the failed sends
The fifth sign is the one that turns a working campaign into a leaky bucket: nobody owns the aftermath. Every send creates a second wave of work. Replies. Phone calls. Bounced addresses. Unsubscribes. Customer questions. Wrong-number corrections. Photos from homeowners. Appointment requests. If no human is assigned to that wave, the audit is broken even when the open rate looks great, because hot leads cool, opt-outs get missed, and the list quietly rots.
Start with the reply path, because it is the most expensive thing to get wrong. Does your from-address even accept replies, or are you sending from a no-reply that bounces a homeowner who is trying to book? Who watches that inbox, and how fast do roofing questions get answered? Are replies logged to the CRM and attached to the right property? When a homeowner replies with three photos of a missing ridge cap after a storm, is there an organized place for those to land, or do they get buried in someone's personal inbox?
Next, the opt-out and suppression machinery. CAN-SPAM requires you to honor opt-outs, and the major inbox providers now expect one-click unsubscribe and quick processing. Your audit should actually test it: unsubscribe a test address, confirm the suppression record was created, then confirm the next campaign skips it across every platform you use. A broken unsubscribe is both a legal exposure and a deliverability killer, because frustrated recipients who cannot opt out hit "report spam" instead, and that is the metric the inboxes punish.
Don't bolt SMS onto email without separate review
Many roofers wire texting and automated calling into the same nurture flow as email. Treat those as a different legal animal. Automated calls and texts fall under different rules and consent standards than email; the FCC's guidance on unwanted calls and texts is the starting point, and the consent bar for automated texting is higher than for email. Get qualified legal help before you connect email campaigns to automated calling or texting systems. An email opt-in is not a texting opt-in.
Failed sends feed list hygiene
Hard bounces, full-mailbox responses, spam complaints, and typo corrections are not noise to ignore; they are your list-cleaning to-do list. The audit should name who reviews them, how often, and what they do with them. A simple weekly routine, run by one named person, keeps the list healthy and the complaint rate low, which protects every future send.
What to inspect for Sign 5
- Does the from-address accept and route replies to a monitored inbox?
- Is there a callback time target for inbound leads, and is it met?
- Are replies and homeowner photos logged to the correct property record?
- Has a real opt-out been tested end to end across all tools?
- Is there a named owner for bounces and complaints, with a review cadence?
- Is any connected SMS/calling reviewed under its own consent rules?
The roofing email audit scorecard
Put the five signs into one page you can actually run. Score each area pass, needs-review, or fail, and assign an owner. The output of an audit is a work list, not a grade.
| Area | Pass looks like | Needs review | Fail | Owner |
|---|---|---|---|---|
| Compliance basics | Sender, subject, address, unsubscribe all clean; claims supportable; vendors covered | A claim or disclosure is fuzzy | Deceptive subject, missing address, or unsupportable claim | Owner / legal reviewer |
| Authentication & deliverability | SPF, DKIM, DMARC aligned; one-click unsubscribe live; complaints well under 0.30% | Setup exists but no owner can verify it | No one can confirm settings; mail filtered or rejected | Email platform / DNS host |
| List quality | Every segment's source and status known; suppression synced everywhere | Some segments unclear | One big undifferentiated list with imported data | Marketing lead |
| Job attribution | Replies and booked inspections tracked to outcome | Partial CRM connection | Clicks only, no outcome tracking | Sales manager |
| Follow-up ownership | Reply inbox, opt-outs, bounces all assigned and timely | Irregular review | No owner after the send | Office manager |
Run this scorecard on a schedule, not after a disaster. The trigger events that should force an audit:
- Before storm season, while you have time to fix authentication.
- Before reactivating an old list of leads or past estimates.
- Before changing CRM or email platforms.
- Before any large maintenance or reactivation campaign.
- After any spike in bounces, complaints, or unsubscribes.
- After a provider rule change (Gmail, Yahoo, and Microsoft have all moved recently).
A copy-ready pre-send audit checklist
Keep this taped near whoever hits "send." It is the 10-minute version of the full audit, meant to catch the failures that hurt most.
ROOFING EMAIL PRE-SEND CHECK
COMPLIANCE
[ ] From name clearly identifies our company
[ ] Subject line matches the body (no bait)
[ ] Current physical postal address in the footer
[ ] Visible, plain-language unsubscribe link
[ ] No 'free roof / no deductible / guaranteed claim' language
[ ] Any storm/insurance claim is supportable
DELIVERABILITY
[ ] Sending from our real brand domain
[ ] SPF, DKIM, DMARC confirmed aligned
[ ] One-click unsubscribe header active
[ ] Complaint rate from last send under 0.30% (target under 0.10%)
[ ] Hard bounces suppressed before this send
LIST
[ ] This send goes to a defined segment, not 'everyone'
[ ] Suppression list synced across all tools
[ ] No cold/purchased contacts in this send (or legal-cleared)
FOLLOW-UP
[ ] From-address accepts replies to a monitored inbox
[ ] Named owner for callbacks today
[ ] Callback time target set (e.g., same day)
[ ] Place to log replies + homeowner photos to the right property
SIGN-OFF
[ ] One owner has run this list and approved the send
Regional and seasonal reality: why timing breaks roofing audits
Email behaves differently for a roofer in hail country than for one in a calm coastal market, and an audit that ignores that will misread the data. In the Plains and Mountain West, the NOAA Storm Prediction Center tracks the severe convective weather that drives demand spikes; a hail swath can turn a quiet list into 8,000 urgent sends overnight. That is exactly when authentication and capacity have to already be in place, because there is no time to fix DNS the morning after a storm. In gulf and Atlantic markets, hurricane season reshapes the calendar; in the upper Midwest and Northeast, ice dams and winter wind create their own follow-up waves.
Material lifespan also shapes who is even worth emailing. Manufacturers and roofing pros generally put asphalt shingle life in the 15-to-30-year band depending on product and conditions, and Owens Corning advises homeowners to start planning for replacement around the 20-year mark even before visible problems appear. Architectural shingles tend toward the upper part of that range; basic 3-tab toward the lower. For your list, that means a roof you replaced two years ago is a warranty and referral contact, not a replacement prospect, while a 22-year-old roof in your past-estimate file is a far better target. Mailing both the same "time for a new roof" message wastes sends and invites complaints from the people you just served.
This is where targeting and recordkeeping earn their keep. A storm date crossing a specific address, paired with an estimated roof-age range, tells you which homes a storm likely wore out and which are brand-new and should be skipped. Contractors who use this kind of property-level context, including platforms like RoofPredict that pair an estimated age range with storm-physics scoring per home, can build email segments that map to real roof situations instead of mailing a whole ZIP code. Again, the honest limit: that points you at the right doors and gives a canvasser a per-home talking point; it does not diagnose damage, certify remaining roof life, or decide an insurance outcome. The roof still has to be inspected.
Before you switch platforms or reactivate an old list
Most broken audits surface during a change. A roofer moves CRMs or email providers, imports every address it can find, and assumes the shiny new platform will fix old process problems. It does the opposite. Weak consent records, duplicate contacts, dead addresses, and missing suppression lists become easier to send at scale. Migration is not a contact transfer; it is a controlled change to your sender identity and your follow-up workflow.
Before you migrate, export and review the current suppression list, bounce history, complaint history, active segments, automations, templates, forms, landing pages, reply inboxes, and sending domains. Decide who owns DNS changes and who will test SPF, DKIM, and DMARC alignment on the new platform before a single live campaign goes out. Warm up a new sending domain gradually rather than blasting day one.
Old-list reactivation needs even more care, because the legal and deliverability risk is concentrated there. A homeowner who asked for a repair estimate five years ago is not a current subscriber. Separate old leads, past customers, warranty contacts, referral partners, and cold imports. Some should stay archived. Some deserve a low-pressure reconnection note. Some need legal or privacy review before any send. Then test small: send to a slice, watch deliverability, replies, unsubscribes, complaints, and office load. If the first send spikes opt-outs or confusion, stop and fix the list before scaling.
Common mistakes that show up in roofing email audits
- Treating compliance as a footer afterthought instead of the first check.
- Assuming the 5,000/day bulk threshold means the rules do not apply, then blowing past it on a storm day.
- Editing DNS without testing authentication, breaking DKIM alignment silently.
- Merging past customers, cold imports, and B2B partners into one list.
- Suppressing opt-outs in one tool but not the others.
- Reporting revenue estimates instead of checkable booked-inspection counts.
- Sending from a no-reply address, so homeowners trying to book hit a wall.
- Bolting SMS onto email without separate consent review.
- Reactivating a five-year-old list at full volume with no warm-up or test.
- Blaming the offer for a slump that is actually a deliverability failure.
What to ask before you sign off on a campaign
A short set of questions that forces the five layers into the open. If your team cannot answer all of them, the audit is not done.
- Who is the sender, and is the postal address current in this template?
- Are SPF, DKIM, and DMARC aligned for this sending domain right now?
- What was our complaint rate on the last send, and is it under 0.30%?
- What defined segment is this going to, and where did those contacts come from?
- Is suppression synced across every tool we send from?
- Who is answering replies and calling leads back, and how fast?
- How will we know how many inspections this booked, beyond how many clicked?
- Have we tested an unsubscribe end to end this quarter?
How to actually check SPF, DKIM, and DMARC without a developer
The Sign 2 checklist sounds like it needs an engineer. It does not. Most of it is reading, and a roofing owner can do it in an afternoon. Here is the plain-language version of what each record does and how to confirm it.
SPF (Sender Policy Framework) is a public list, published in your domain's DNS, of which servers are allowed to send mail for your domain. When your email platform sends on your behalf, the receiving inbox checks whether that platform is on your SPF list. If it is not, the mail looks forged. The common failure is too many "include" entries, because SPF allows only ten DNS lookups before it fails. If you have stacked several tools (a CRM, a newsletter platform, an estimate sender) onto one domain, you can blow past that limit and break SPF for all of them at once.
DKIM (DomainKeys Identified Mail) adds a cryptographic signature to each message so the receiver can confirm the mail truly came from your domain and was not tampered with in transit. Your email platform gives you a DKIM record to paste into DNS. The common failure is that the record was never published, or it was published for the wrong selector, so messages go out unsigned.
DMARC (Domain-based Message Authentication, Reporting and Conformance) ties the first two together. It tells receiving inboxes what to do when a message fails SPF and DKIM alignment, and it can send you reports showing who is sending mail using your domain. The minimum policy is p=none, which monitors without blocking. Gmail and Yahoo require at least that for bulk senders. The common failure is no DMARC record at all, which now gets bulk mail filtered.
A 20-minute self-check
EMAIL AUTHENTICATION SELF-CHECK
1. Find your sending domain (the part after @ in your from-address).
2. Look up its SPF record (a free MX/SPF lookup tool will show it).
[ ] One SPF record exists (not two)
[ ] Your email platform's include is in it
[ ] Total DNS lookups are 10 or fewer
3. Check DKIM with your email platform's setup/verify screen.
[ ] DKIM status shows 'signing' or 'verified'
[ ] The signing domain matches your brand domain
4. Look up your DMARC record (TXT record at _dmarc.yourdomain).
[ ] A DMARC record exists
[ ] Policy is at least p=none
[ ] A reporting address (rua=) is set so you get reports
5. Send a test email to a Gmail account. Open it,
click the three dots, choose 'Show original'.
[ ] SPF: PASS
[ ] DKIM: PASS
[ ] DMARC: PASS
If any line fails, that is an audit finding. Assign it to
your email platform's support or your DNS host.
That "Show original" trick in Gmail is the single fastest way for a non-technical roofer to confirm whether the foundation is solid. Three PASS lines and you can stop worrying about the plumbing and start worrying about the message. Three FAIL lines and no subject line on earth will save the campaign.
Mining an old CRM the right way: re-engagement without the complaint spike
The most valuable list a roofing company owns is usually the one it forgets: years of past estimates, completed jobs, and service calls sitting in an old CRM. Those are people who already let you onto their property and into their inbox. Re-engaging them is the highest-return email a roofer can send, and also the one most likely to trigger a complaint spike if done carelessly, because the contacts are cold and the addresses are stale.
The audit question is not "can we email these people" but "in what order and at what volume." Treat reactivation as a staged campaign, not a single blast.
| Stage | Who | Volume | Watch |
|---|---|---|---|
| 1. Validate | Recent customers (0-2 yrs) | Small batch first | Bounce rate; if high, the list is rotted |
| 2. Warm | Past customers (2-5 yrs) | Grow gradually | Complaint rate, replies, opt-outs |
| 3. Reconnect | Old estimates and leads | Slow, segmented | Spam complaints especially |
| 4. Review | Cold imports, unknown source | Hold | Legal review before any send |
Start with your most recent, warmest contacts even though you are tempted to start with the biggest pile. The recent group has the freshest addresses and the lowest complaint risk, which warms your sending reputation before you reach the riskier older contacts. If stage 1 throws a wall of hard bounces, you have learned the list is stale before you torched your domain reputation on it.
The message matters as much as the order. A reconnection email to a five-year-old estimate should not open with "Buy a roof." It should acknowledge the gap honestly and give an easy, low-pressure reason to respond. Something like this, adapted to your shop:
Subject: Quick check-in on your roof
Hi [First name],
We gave you an estimate back in [year] and wanted to check in.
Roofs in [area] from that era are getting into the range where
it's worth a look, especially after the storms we've had.
No pressure and no obligation. If you'd like, we can do a
no-cost visual check and tell you honestly how much life you
have left. Reply to this email or call [number].
If you'd rather not hear from us, the unsubscribe link below
works in one click.
[Company], [Physical address], [Phone]
Notice what that template does: it identifies the company, references a real prior relationship, makes a supportable claim (roof age range, not "you need a new roof"), offers a clear opt-out, and includes the physical address. It passes the Sign 1 compliance check and the Sign 5 follow-up check at the same time, because it routes replies to a real inbox.
This is also where knowing the roof behind the address changes the economics. If your records, or a targeting tool, can tell you that a past-estimate home is now 21 years into a 20-to-30-year shingle life and sat under a recent hail swath, that contact moves to the top of the reconnect list. A home you re-roofed three years ago drops off it entirely. Sequencing reactivation by actual roof situation, rather than alphabetically or by date entered, is the difference between a campaign that books inspections and one that just annoys past customers.
Where email fits in a roofer's outbound, and where it doesn't
Email is one channel in a roofer's outbound, and the audit improves when you are honest about what it can and cannot carry. Email is cheap, fast, and great for reactivating people who already know you. It is weak as a cold-acquisition channel, because cold email to homeowners draws complaints and the inbox providers punish it. The mistake is asking email to do the job that targeted mail, door-knocking, and referrals do better, then grading email harshly when it underperforms at a task it was never suited for.
A healthier picture looks like this. Use direct mail and canvassing to reach homes you have no relationship with, chosen by roof age and storm exposure so you skip the brand-new roofs and the houses no storm touched. Use email to nurture the people who already raised a hand: past customers, old estimates, and inbound leads. Use the phone to close. Each channel carries the part of the job it is good at, and your email metrics stop looking bad for the wrong reason.
That division of labor is exactly where house-by-house targeting helps the whole outbound program, not only the mailers. When a canvasser knocks a door, a per-home talking point grounded in the roof's estimated age range and a recent storm date lands far better than a generic "we're doing roofs in the neighborhood." When a homeowner gets a branded report about their specific roof, the follow-up email has something real to reference. Tools like RoofPredict are built for that outbound sharpening: deciding which houses are worth the stamp, the knock, or the email, before anyone climbs a ladder. The honest boundary holds across every channel: it points you at the right homes and arms the conversation, but it does not inspect the roof, diagnose damage, or decide an insurance claim. Those still require a qualified person on a ladder and the carrier's own process.
Turn the audit into a work list, not a slideshow
The failure mode of most audits is that they produce a deck and no decisions. The output should be a short list of assigned, dated tasks with the evidence needed to close each one. For a roofing shop, that list usually looks like:
- Publish the current physical address in every template — owner, due date.
- Verify and document DMARC alignment — owner, due date.
- Archive unknown-source contacts pending review — owner, due date.
- Sync suppression across all sending tools — owner, due date.
- Connect the reply inbox to the CRM and property records — owner, due date.
- Set and staff a same-day callback target — owner, due date.
- Review all storm and insurance claims with counsel — owner, due date.
Recheck the closed items after your next live send. An audit you run once is a snapshot. An audit you run on triggers, before storm season, before a migration, before a reactivation, after a complaint spike, is a system that keeps email working as a real channel for booking roofs. Email is not magic and it is not dead for roofers. It is a business communication that has to be legal, has to land, has to go to the right homes, and has to be answered by a human. Check those five layers and the open rate takes care of itself.
Sources checked: June 18, 2026.
FAQ
What is a roofing company email marketing audit?
It is a structured review of your email program across five layers: compliance with email law and advertising rules, sender authentication and deliverability, list source and quality, attribution from email to booked roofing work, and ownership of replies and opt-outs. A real audit checks all five and produces a list of assigned fixes rather than a chart of open rates. The point is to confirm your email is legal, reaches inboxes, targets the right homes, and gets answered.
Why is my roofing email audit broken if my open rates look fine?
Open rate sits on top of everything else and hides the layers underneath it. A campaign can show healthy opens while sending from a domain with broken DKIM, mailing a cold imported list, ignoring opt-outs in one of three tools, or generating zero booked inspections because nobody answers replies. Open rate also degrades as inbox providers tab and filter mail, so it is an unreliable single metric. Check compliance, deliverability, list, attribution, and follow-up before you trust the opens.
What email rules do roofing companies have to follow in 2026?
In the US, the FTC's CAN-SPAM Act governs commercial email: truthful headers and subjects, a valid physical address, a clear and honored opt-out, and oversight of anyone mailing on your behalf. Separately, Gmail, Yahoo, and Microsoft now require SPF, DKIM, and DMARC, one-click unsubscribe, and low spam-complaint rates (under 0.30%) for bulk or high-volume senders, with non-compliant mail filtered or rejected. Automated texts and calls fall under stricter, separate consent rules.
How often should a roofing company audit its email marketing?
Run the audit on triggers rather than a fixed calendar. Audit before storm season while you can still fix authentication, before reactivating an old list of leads or past estimates, before changing CRM or email platforms, before any large maintenance or reactivation campaign, and any time bounces, complaints, or unsubscribes spike. Also re-check whenever Gmail, Yahoo, or Microsoft announce a sender-rule change, since all three have tightened requirements recently and enforce them.
Why are my roofing emails going to spam?
Usually it is deliverability, not copy. The common causes are missing or misaligned SPF, DKIM, or DMARC, a brand-new sending domain with no warm-up, a spam-complaint rate above the 0.30% ceiling, a cold or purchased list, or a broken unsubscribe that pushes recipients to hit report-spam. A sudden slump after a DNS edit or platform switch almost always means authentication broke. Rewriting the subject line will not help if the mail is being filtered before anyone reads it.
Can I email an old list of past roofing estimates and customers?
Sometimes, but reactivate carefully and segment by source first. Past customers and recent estimate requests are warmer and lower risk than five-year-old leads or purchased data. Separate those groups, archive the coldest, send a low-pressure reconnection message to the warm ones, and get legal review for anything cold or imported. Test on a small slice and watch unsubscribes and complaints before scaling. A high opt-out rate on the first send means stop and fix the list.
How does RoofPredict help with a roofing email audit?
RoofPredict helps you target and document the right homes by pairing an estimated roof-age range with storm-physics scoring per individual property, so you can build email segments around real roof situations, skip brand-new roofs, and re-engage old estimates that are now due. It supports the list-quality and follow-up layers by organizing property history, storm dates, and tasks. It does not inspect roofs, diagnose damage, certify roof life, manage consent, or replace your email platform's authentication settings or legal review.
What email claims should roofing companies avoid?
Avoid anything you cannot support per house. Skip 'free roof,' 'insurance approved,' or 'guaranteed claim,' because you do not control the carrier's decision. Never offer to waive or cover a deductible, which is illegal in many states. Do not claim every roof in a storm path is damaged, since that is unsupportable house by house, and avoid fake deadlines like a 'this week only' special with no real terms. The FTC requires marketing claims to be truthful and backed up.
Do small roofing companies need SPF, DKIM, and DMARC if they send under 5,000 emails a day?
Yes. The 5,000-per-day bulk threshold triggers the strictest requirements, but spam-complaint limits and one-click unsubscribe effectively apply to everyone, and providers can filter any poorly authenticated sender. Roofing sends are also bursty: a storm-response blast can push you over the threshold on the exact day delivery matters most. Setting up SPF, DKIM, and DMARC before storm season protects every send and prevents the silent filtering that gets blamed on a weak offer.
The Roofline by RoofPredict
Stay Ahead of Roofing Market Changes
Join The Roofline by RoofPredict for weekly roofing intelligence: material price signals, storm demand, insurance and regulatory updates, sales tactics, and local contractor opportunities.
Sources
- FTC CAN-SPAM Act Compliance Guide for Business — ftc.gov
- FTC Advertising and Marketing Guidance — ftc.gov
- DOJ: $2.95M Penalty Resolves Lawsuit Against Verkada for Unlawful Commercial Emails — justice.gov
- Google Email Sender Guidelines FAQ — support.google.com
- Yahoo Sender Hub Best Practices — senders.yahooinc.com
- Microsoft: Outlook's New Requirements for High-Volume Senders — techcommunity.microsoft.com
- FCC: Stop Unwanted Robocalls and Texts — fcc.gov
- NOAA Storm Prediction Center — spc.noaa.gov
- Owens Corning: When to Replace Your Roof — owenscorning.com