GTM PlaybookOutbound

Landing Page Per Ad Outbound

Free brand-matched landing page sample for one live Google ad. Not a demo, not a call.

A seed-stage MarTech startup that auto-generates brand-matched landing pages per paid ad and runs continuous A/B tests on ads + pages.

B2B founders and GTM leads selling to companies that already run Google Ads. Works best when your product ties to ad creative, landing pages, or conversion rate. You need a contact data source, a way to scrape Ads Transparency, and a cold email sequencer.

Hans Dekker
Hans Dekker

AI-Powered GTM Strategist

Creator of Clay MBA · Former Founder (Lyne.ai, acquired) · Helped 200+ B2B teams

Last updated: August 18, 2026

Cold EmailGoogle AdsPersonalizationMarTech18 min read

TL;DR

Find companies spending on Google Ads, scrape a live ad headline for each domain, and cold email the marketing decision-maker offering a free brand-matched landing page tied to that ad. Not a demo. Leads without scrapeable copy go to a generic sequence. Live-verify every email before send. Route positive replies to Slack with ad intel attached.

Before you start

What you need

  • Contact database with firmographics + verified emails (e.g. RevenueBase, Apollo, Lens.ly)
  • Google Ads Transparency scraper (ScrapeCreators, Scrapingdog, or similar)
  • Cold email sequencer with custom variables per lead
  • Live email verification API
  • Sending infrastructure (2+ warmed inboxes per domain, SPF/DKIM/DMARC)
  • Slack webhook or CRM for positive-reply alerts

Run this playbook

Build it yourself with company intel and GTM APIs on Lens.ly, or hire us to run the full playbook for you.

End to end

How to run this playbook

Seven steps in order. Do not skip verification or you will burn domains. Each step below includes what to do and why it matters.

1

Define your playbook

Product, ICP, personas, proof points, offer

Write a one-pager your messaging must obey. Every email pulls from this doc. No invented metrics.

2

Build your list

Filter by geo, ad spend, verified email, 1/domain

Export from your contact API with hard filters. Dedup to one contact per company, preferring C-team > VP > Director.

3

Scrape live ads

Pull creative from Google Ads Transparency per domain

Domain in, ad_headline + ad_keyword + destination_url out. Drop image-only ads with no text.

4

Enrich lead variables

Map scraped fields onto each contact before import

Merge ad data back into your CSV. Split leads with creative vs. without for different sequences.

5

Verify and clean

Live email verify + security gateway purge

Re-verify every address. Drop Mimecast/Proofpoint/Barracuda domains. Blocklist bounced/invalid emails.

6

Launch sequences

Route leads to the right variant, send plain text

Personalized variant if ad_keyword exists. Generic fallback if not. Plain text, no open tracking, stop on reply.

7

Handle replies

Positive reply to Slack with full ad context

Alert includes company, title, ad spend, headline, Transparency URL. Move lead into follow-up subsequence.

Context

Offer & product

Offer

Free brand-matched landing page sample for one live Google ad. Not a demo, not a call.

Product

Two AI agents: an Ads Agent and a Landing Page Agent. Page-per-ad, brand extraction, continuous A/B testing.

Before you start

What you need

  • A written playbook doc (product, verticals, personas, proof points, offer)
  • Contact export with Google Ads spend signal and verified emails
  • Ads Transparency scraper wired to your domain list
  • Custom variables in your sequencer: firstName, adHeadline, adKeyword, companyName
  • Live verification step (static "valid" flags in your database are not enough)
  • Two campaigns: personalized (has ad vars) and generic fallback (no ad vars)

Step 1

Write your GTM playbook first

Everything downstream reads from one doc. Before you export a single contact, write down what you sell, who you sell to, and the one sentence offer. Messaging gets generated from this source. If it is not in the playbook, it does not go in the email.

For this campaign the offer is specific: a free brand-matched landing page sample for one live Google ad. Not a product demo. Not "15 minutes on my calendar." The ask is low friction because you are giving something concrete tied to creative they are already running.

Include real proof points only. If you do not have a ROAS number from a customer, do not invent one. The playbook is the guardrail that keeps AI-generated copy from drifting into generic SaaS fluff.

Playbook template

Layers to define upfront

LayerWhat to write
ProductOne sentence on what the product does
VerticalsPrimary industries (pick 2-3 to start, not ten)
PersonasTitles that own paid media or growth decisions
Proof pointsReal outcomes with numbers, or skip this row
OfferThe free sample or hook that makes replying easy
Tone rulesWhat you will and will not say in cold email

Step 2

Build your target list

You are not spraying every B2B company. You want domains that already spend on Google Ads, because the entire hook depends on referencing a live ad. No ad spend signal, no personalized email.

Export contacts from your data provider with hard filters. Production targeting for this playbook: US, GB, CA, AU; Google Ads spend at or above $5k/month; email status valid and verified within the last 6 months; contact still at current job.

Dedup to one contact per domain. When you have multiple matches, prefer C-team first, then VP, then Director. You want the person who can say yes to a landing page test, not a random manager three levels down.

Split into vertical lists if your messaging differs. This playbook ran three: SaaS (Software, IT Services, Technology), E-commerce (Retail, Online & Mail Order), and DTC (Consumer, Apparel, Beauty, Cosmetics). Same personas across ecom and DTC: Growth, Paid Media, Founder/CEO. SaaS skews VP/Head/Director Marketing, CMO, Demand Gen.

ICP filters

List criteria (production)

FilterValueWhy
GeoUS, GB, CA, AUEnglish-first copy, ad Transparency coverage
Google Ads spend≥ $5k/moConfirms they run paid search at meaningful volume
EmailValid, verified < 6 months, current jobCuts bounce risk before you burn domain reputation
Dedup1 contact per domainAvoids looking spammy to the same company

Step 3

Scrape live Google ad creative

For each company domain, pull what they are running right now from Google Ads Transparency. You need at minimum a text headline and a destination URL. Optional but useful: ad body text and the landing page URL the ad sends to.

Pipe domain through your scraper (ScrapeCreators as primary, Scrapingdog Ads Transparency as fallback works well). Extract four variables per lead: ad_headline (exact headline text), ad_keyword (short theme derived from headline tokens, e.g. "electric road bikes"), ad_description (body copy if available), destination_url (where the ad clicks through).

Quality gate: if the only creatives are image ads with no extractable text, do not force a personalized email. Route that lead to your generic fallback sequence or hold them for manual review. Bad personalization is worse than no personalization.

Checkpoint enrichment to disk as you go (JSON or CSV). If the scrape job fails halfway, you can resume without re-hitting the API for domains you already processed. Merge the checkpoint back into your lead file before import.

Enrichment fields

Variables to map per lead

VariableSourceUsed in copy as
ad_headlineTransparency Center text ad{{adHeadline}}
ad_keywordToken theme from headline{{adKeyword}}
ad_descriptionAd body text (optional)Internal context only
destination_urlClick-through URLLP match scoring, sales intel

Optional research

Score ad-to-landing-page match

This step is not required to send, but it tells you which copy angle to use. Scrape the ad destination URL. Tokenize the ad text and the landing page text. Score overlap as a percentage.

Low match (under 25%): the ad promise does not carry through to the page. Pitch gifting a free sample page that closes the gap. Example: ad says "electric road bikes" but the LP is a generic e-bike category page.

Medium match (25-45%): partial alignment. Emphasize finishing the message match with a dedicated page.

High match (45%+): ad and LP already say the same thing. Pitch page-per-ad generation and A/B testing at scale instead of fixing a broken page.

In a 20-company pilot: 12 had usable ads, 9 low match, 2 medium, 1 high. Most prospects are low match, which is why the "gift a sample page" angle is the default.

Copy routing

Which angle for which match score

Low match (<25%)

Gift a free page that carries the ad hook through. Lead with what you saw in the ad, offer a sample page that matches that promise.

Medium match (25-45%)

Acknowledge partial alignment. Offer a tighter page built specifically for that ad variant.

High match (≥45%)

Page already aligned. Pitch page-per-ad volume and continuous A/B testing instead of fixing a mismatch.

Step 4

Email tone rules (non-negotiable)

Do

  • "Saw your ad for {{adKeyword}}" (observation only)
  • Always offer a free page sample, never a demo CTA
  • Ground copy in playbook proof points (no invented metrics)
  • Keep emails plain text, under 100 words, one clear ask

Don't

  • "I clicked your ad" (sounds like wasted spend)
  • "Your landing page doesn't match" (audit energy)
  • Demo CTAs or "hop on a call" as the primary ask
  • Referencing metrics you cannot back up from the playbook

Step 4 continued

Sequence routing

Run five personalized sequence variants plus a generic fallback. Route by vertical and match score where you have the data. Variables available in every personalized email: {{firstName}}, {{adHeadline}}, {{adKeyword}}, {{companyName}}.

SaaS headline gift: lead with the exact headline in quotes. Ecom keyword: lead with {{adKeyword}} as the theme. DTC: same structure as ecom, slightly more brand-forward tone. High-match scale: acknowledge alignment, pitch testing at scale. Generic fallback: no ad variables, speak to the ICP pain directly.

Leads without scrapeable creative get one of three blanket templates (no ad vars). Keep the offer identical: free sample page, not a demo.

Step 4 continued

Email templates (E1)

Production E1 templates. Swap variables at import. Low-match and high-match are verbatim from the live campaign.

Low-match gift (canonical E1)

Ad/LP overlap under 25%. Default angle for most leads.

{{firstName}} -

Saw your Google ad for electric road bikes built for speed and endurance.

Put together a free sample landing page that carries that road-bike angle through, brand-matched, focused on the promise in the ad.

Want me to send it over?
High-match scale (canonical E1)

Ad/LP overlap 45%+. Page already aligned with the ad.

{{firstName}} -

Your free-shipping used books ad and landing page are already aligned: same offer, same message.

Curious whether you're testing headline or CTA variants at scale? We auto-generate a page per ad and A/B test continuously.

Want a sample page with test variants?
SaaS headline gift

SaaS vertical list. Uses exact headline from Transparency.

{{firstName}} -

Saw your Google ad: "{{adHeadline}}".

Put together a free sample landing page that carries that angle through, brand-matched to {{companyName}}.

Want me to send it over?
Ecom keyword

E-commerce vertical. Theme derived from headline tokens.

{{firstName}} -

Saw your ad for {{adKeyword}}.

Put together a free sample landing page focused on that exact promise, brand-matched to your store.

Want me to send it over?
DTC

DTC vertical. Same structure as ecom, brand-forward.

{{firstName}} -

Saw your Google ad for {{adKeyword}}.

Put together a free sample page built around that specific hook, on-brand for {{companyName}}.

Want me to send it over?
Generic fallback (no ad vars)

Lead has no scrapeable ad creative. No {{adHeadline}} or {{adKeyword}}.

{{firstName}} -

We build brand-matched landing pages per Google ad and run continuous A/B tests on the pages and the ads together.

Happy to put together a free sample page for one of your live campaigns if useful.

Want me to send it over?

No-creative fallbacks

Blanket templates (no ad variables)

Three alternate generic opens for leads where the scrape returned nothing usable. Same offer, different hook.

Fallback A: paid spend angle
{{firstName}} -

Most teams running Google Ads at scale still send every ad to the same landing page.

We auto-generate a brand-matched page per ad. Happy to build a free sample for {{companyName}} if you want to see it.

Interested?
Fallback B: testing angle
{{firstName}} -

Curious how {{companyName}} tests landing page variants against different ad hooks.

We generate a page per ad and A/B test continuously. Can put together a free sample if helpful.

Worth a look?
Fallback C: direct offer
{{firstName}} -

Put together free sample landing pages for teams running Google Ads. Brand-matched, one page per ad.

Want me to build one for {{companyName}}?

Step 5

Pre-import pipeline (do not skip)

This is where most outbound campaigns die. You have a great list and great copy, then you import 400 invalid emails and Google throttles your domain. Run every lead through this pipeline before they hit your sequencer.

Static "valid" flags from your contact database are not sufficient. Re-verify every email through a live verification API right before import. People change jobs. Domains get deactivated. The cost of verification is nothing compared to a 3% bounce rate killing your inboxes.

Purge email security gateway (ESG) domains: Mimecast, Proofpoint, Barracuda, Cisco/IronPort, Tessian, and similar. These inboxes rarely convert on cold outbound and they inflate bounce/ block rates.

Add every dropped email to your sequencer blocklist so they never re-enter on a future import. Split held leads (no ad creative) into a separate file for the generic campaign.

Pre-send checklist

Pipeline before launch

1

Export contacts

Pull from your contact API to CSV. One row per domain. Include company name, title, email, domain, ad spend field.

2

Enrich with ad creative

Run domain list through Transparency scraper. Merge ad_headline, ad_keyword, destination_url back into CSV.

3

Split by creative quality

File A: has headline + keyword. File B: no usable creative. Route to different sequences.

4

Live verify emails

Hit every address through verification API. Drop invalid, catch-all risky, and unknown.

5

ESG purge

Remove domains behind Mimecast, Proofpoint, Barracuda, Cisco/IronPort, Tessian, etc.

6

Blocklist + import

Add dropped emails to blocklist. Import clean files into sequencer with custom variables mapped.

Step 6

Campaign setup and send settings

Two campaigns minimum: personalized (leads with ad_headline and ad_keyword) and generic fallback (everything else). Keep the generic campaign paused until you have exhausted personalized volume or want to test a broader pool.

Campaign defaults that worked in production: plain text only, segmentation off, risky leads off, fallback sending on, stop on reply, stop same domain on reply, auto-pause at 3% bounce rate, open tracking off, unsubscribe link off. Open tracking hurts deliverability on cold email and the data is unreliable anyway.

Cap at 3 leads per domain per day in the sequencer UI if your tool supports it. Attach only inboxes with health scores at or above 85% and active warmup.

Sending infra: Google Workspace inboxes on dedicated domains, warmed for 2+ weeks before launch. Multiple inboxes per domain, low daily volume per inbox (30-50/day to start).

Step 7

Positive reply handling

When a lead replies positively, speed matters. Your sales team needs context without opening five tabs. Automate an alert to Slack (or your CRM) with everything attached.

Include in the alert: company name, contact title, LinkedIn URL, estimated monthly Google ad spend, the live ad headline and keyword you referenced, and a direct link to their Ads Transparency page. Add a deep link back to the conversation in your sequencer.

Move the lead into a positive-reply subsequence for follow-up (deliver the sample page, ask a clarifying question, propose next step). Optionally invite your client stakeholder to the sequencer workspace as a viewer so they can watch replies come in.

Reply alert

What to include in the Slack intel block

FieldWhy sales needs it
Company + titleQualify fast without looking them up
LinkedIn URLOne click to research before calling back
Monthly ad spendConfirms ICP fit and deal size
ad_headline + ad_keywordRep knows exactly which ad you referenced
Ads Transparency URLProof you did the homework
Sequencer deep linkJump straight to the thread to reply

Run it yourself

Lens.ly gives you company intelligence, contact data, and GTM APIs to build playbooks like this one. Self-serve, pay as you go.

Explore Lens.ly

Run it for me

We build the list, write the sequences, set up infrastructure, and launch. Full outbound engine, typically $3-5k/mo depending on volume and complexity.

Book a quick chat

Playbooks are anonymized case studies. Browse all playbooks