A marketing director opens her inbox on a Monday. Nine cold emails from SEO agencies are stacked at the top, all with subject lines that begin "quick question" or "noticed some issues." She archives eight in about four seconds each. The one she opens says "your /pricing page has no H1 and takes 4.9 seconds to paint on mobile." She reads it twice, forwards it to her cofounder, and books a call by lunch. This piece is about the difference between those two subject lines.

Look at the difference in specificity. "Quick question about your SEO" is a template a browser plugin could write. "Your /pricing page has no H1 and paints at 4.9 seconds on mobile" is a number pulled from Chrome DevTools thirty seconds before the send. If the first sentence of your email could plausibly have come from any of the 400 agencies that sent something last week, it will not be read. Every template in this piece is built to force the second kind of first sentence.

How does the signal-to-template pipeline work?

Workflow

Signal-to-template pipeline

  1. Step 01

    1. Spot signal

    CWV, schema, thin content, sitemap, backlinks

  2. Step 02

    2. Pick template

    One per signal type

  3. Step 03

    3. Personalize

    Insert the exact number/URL

  4. Step 04

    4. Send

    From warmed domain, with SPF/DKIM/DMARC

  5. Step 05

    5. Route replies

    Stop-on-reply cadence

Every good SEO cold email starts with a signal. Everything downstream is mechanical.

Which Core Web Vitals thresholds should you quote?

Field data is the ranking signal

Half of the templates below reference specific Core Web Vitals numbers. Get them right. Google publishes exact thresholds on web.dev and treats these as ranking-relevant page-experience signals.

  • Metric
    LCP (Largest Contentful Paint)
    Good
    ≤ 2.5s
    Needs improvement
    2.5s - 4.0s
    Poor
    > 4.0s
  • Metric
    INP (Interaction to Next Paint)
    Good
    ≤ 200ms
    Needs improvement
    200ms - 500ms
    Poor
    > 500ms
  • Metric
    CLS (Cumulative Layout Shift)
    Good
    ≤ 0.1
    Needs improvement
    0.1 - 0.25
    Poor
    > 0.25
Core Web Vitals thresholds per web.dev. Field data (75th percentile) is what Google's Chrome UX Report actually uses.

web.dev Core Web Vitals web.dev: Web Vitals.

web.dev LCP thresholds web.dev: LCP.

web.dev INP thresholds web.dev: INP.

web.dev CLS thresholds web.dev: CLS.

Template 1: how do you pitch poor Core Web Vitals?

Signal: their LCP or INP is in the "poor" band per CrUX. Pull it from PageSpeed Insights, screenshot for evidence.

Worked example

Template 1, worked (Loomstack, Austin SaaS on WordPress)

Subject: your LCP is 4.9s on mobile, Google's threshold is 2.5s Hi Sarah, ran the Loomstack homepage through PageSpeed Insights this morning. Your mobile LCP is 4.9 seconds. Google's "good" threshold is 2.5 seconds per web.dev, and pages that stay in the "poor" band (over 4s) are demonstrably down-weighted in mobile rankings. The typical culprit on WordPress sites is a hero image that is not preloaded, and yours is loading a 1.4 MB PNG below the fold-blocking scripts. 20 minute call this week to walk you through the fix list?

Blank template

Template 1 (signal: poor CWV)

Subject: your LCP is {X.Xs} on mobile, Google's threshold is 2.5s Hi {name}, ran your homepage through PageSpeed Insights this morning. Your mobile LCP is {X.X seconds}. Google's "good" threshold is 2.5 seconds per web.dev, and pages that stay in the "poor" band (over 4s) are demonstrably down-weighted in mobile rankings. The typical culprit on {CMS} sites is {hero image not preloaded / third-party script}. 20 minute call this week to walk you through the fix list?

Template 2: how do you flag missing schema?

Signal: their product, article, or local business pages are missing the appropriate schema.org markup. Verify with the Rich Results Test.

Worked example

Template 2, worked (Northshore Cycles, Manchester e-commerce)

Subject: your product pages are missing schema Google actually uses Hi James, I looked at northshorecycles.co.uk/products/trailhawk-29 through the Rich Results Test and it is not returning any structured data. For e-commerce, Product markup is what unlocks rich results (stars, price, availability) in the SERP. Your top three competitors (Rutland Cycling, Leisure Lakes, Tredz) all have it. Rough estimate: adding Product schema to your top 20 pages is 4-6 hours of work and typically moves CTR 10-15%. Worth a look?

Blank template

Template 2 (signal: missing schema)

Subject: your {product/article} pages are missing schema Google actually uses Hi {name}, I looked at {specific URL} through the Rich Results Test and it is not returning any structured data. For {vertical}, {schema type} markup is what unlocks rich results ({stars, price, FAQ}) in the SERP. Your top three competitors ({names}) all have it. Rough estimate: adding {schema type} to your top 20 pages is 4-6 hours of work and typically moves CTR 10-15%. Worth a look?

Google Rich Results Test Rich Results Test.

Template 3: how do you call out thin content?

Signal: category or service pages under 300 words with no unique substance. This maps directly to Google's "helpful content" guidance.

Worked example

Template 3, worked (Verdant Home Cleaning, Melbourne)

Subject: your end-of-lease cleaning page is 180 words, top competitor is 1,800 Hi Amelia, your verdanthomecleaning.com.au/services/end-of-lease page clocks in at ~180 words with mostly navigation. sparklecleanmelbourne.com.au/end-of-lease-cleaning is at ~1,800 words with FAQ, pricing signals, and internal links. Google's helpful content system explicitly rewards depth on commercial-intent queries. We could rewrite that page against the top three ranking pages for "end of lease cleaning Melbourne" and hand it back in a week. No lock-in on the trial page.

Blank template

Template 3 (signal: thin content)

Subject: your {category} page is 180 words, top competitor is 1,800 Hi {name}, your {URL} clocks in at {~180 words} with mostly navigation. {Competitor URL} is at {~1,800 words} with FAQ, pricing signals, and internal links. Google's helpful content system explicitly rewards depth on commercial-intent queries. We could rewrite that page against the top three ranking pages for the target query and hand it back in a week. No lock-in on the trial page.

Google helpful content guidance Google Search Central: helpful content.

Template 4: Broken sitemap

Signal: their sitemap.xml is missing, returns non-200, includes noindex pages, or is not referenced in robots.txt.

Worked example

Template 4, worked (Brightlane Legal, Chicago)

Subject: your sitemap is returning 404 Hi Marcus, hit brightlanelegal.com/sitemap.xml this morning. It 404s. That is one of the most common reasons Google Search Console shows "crawled - currently not indexed" for otherwise fine pages. Free fix, and I can send you the exact steps if you want, or we can pick it up as part of a broader technical audit. Either way, worth pulling into Search Console before your next Googlebot crawl.

Blank template

Template 4 (signal: broken or missing sitemap)

Subject: your sitemap is {returning 404 / referencing noindex pages} Hi {name}, hit {domain}/sitemap.xml this morning. {It 404s / It references pages that noindex}. That is one of the most common reasons Google Search Console shows "crawled - currently not indexed" for otherwise fine pages. Free fix, and I can send you the exact steps if you want, or we can pick it up as part of a broader technical audit. Either way, worth pulling into Search Console before your next Googlebot crawl.

Google sitemaps documentation Google Search Central: sitemaps.

Signal: their referring domain count is materially lower than the top three ranking competitors for their target keyword. Pull from Ahrefs, Semrush, or Moz.

Worked example

Template 5, worked (Kettlebrook Coffee Roasters, Portland)

Subject: your competitors rank on 340 referring domains, you have 62 Hi Priya, checked the top three results for "specialty coffee subscription" this week. They average 340 referring domains (Trade Coffee, Atlas Coffee Club, Angels' Cup). Kettlebrook is at 62, which is why you are stuck on page 2 despite better content. We run a digital PR loop that lands 3-5 real editorial mentions per month, no PBNs. Worth showing you the last three campaigns we ran for Ridgeline Roasters?

Blank template

Template 5 (signal: weak backlinks vs. SERP top 3)

Subject: your competitors rank on {X} referring domains, you have {Y} Hi {name}, checked the top three results for "{target keyword}" this week. They average {X} referring domains ({competitor sites}). Your site is at {Y}, which is why you are stuck on page 2 despite better content. We run a digital PR loop that lands 3-5 real editorial mentions per month, no PBNs. Worth showing you the last three campaigns we ran for {peer}?

Rules of the road

Pair every template with the follow-up cadence

  • Every template above must include a real number or URL specific to the recipient. Placeholders in the actual send are a tell.
  • Send from a domain with SPF, DKIM, and DMARC configured, and with recent warm-up traffic. Cold-inbox sends from a fresh domain get filtered before they reach human eyes.
  • Pair every template with the stop-on-reply cadence. See the linked framework post.
  • If a prospect writes back with "how did you get my email," answer honestly. Public data, and you can point at the specific site page that produced the signal.

FAQ

Do I need Ahrefs or Semrush to send template 5?

For serious referring-domain analysis, yes. For a first-pass filter, Google's own "link:" operator is largely dead but a free tool like Moz Link Explorer gives usable directional data.

How do I verify CWV for template 1?

PageSpeed Insights, which reads from the Chrome User Experience Report (CrUX) for real-world field data. That is the data Google itself uses for ranking signals; lab tools are directional only.

Is it fine to send screenshots in a cold email?

Text-only in the first message; screenshots make attachments and inline images which some filters penalize. Offer the screenshot in the reply.

How many of these templates should one prospect see?

One. Pick the strongest signal and lead with it. Additional signals go into follow-ups only if there is no reply.