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.

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
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
Seven steps in order. Do not skip verification or you will burn domains. Each step below includes what to do and why it matters.
Product, ICP, personas, proof points, offer
Write a one-pager your messaging must obey. Every email pulls from this doc. No invented metrics.
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.
Pull creative from Google Ads Transparency per domain
Domain in, ad_headline + ad_keyword + destination_url out. Drop image-only ads with no text.
Map scraped fields onto each contact before import
Merge ad data back into your CSV. Split leads with creative vs. without for different sequences.
Live email verify + security gateway purge
Re-verify every address. Drop Mimecast/Proofpoint/Barracuda domains. Blocklist bounced/invalid emails.
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.
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
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
Step 1
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
| Layer | What to write |
|---|---|
| Product | One sentence on what the product does |
| Verticals | Primary industries (pick 2-3 to start, not ten) |
| Personas | Titles that own paid media or growth decisions |
| Proof points | Real outcomes with numbers, or skip this row |
| Offer | The free sample or hook that makes replying easy |
| Tone rules | What you will and will not say in cold email |
Step 2
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
| Filter | Value | Why |
|---|---|---|
| Geo | US, GB, CA, AU | English-first copy, ad Transparency coverage |
| Google Ads spend | ≥ $5k/mo | Confirms they run paid search at meaningful volume |
| Valid, verified < 6 months, current job | Cuts bounce risk before you burn domain reputation | |
| Dedup | 1 contact per domain | Avoids looking spammy to the same company |
Step 3
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
| Variable | Source | Used in copy as |
|---|---|---|
| ad_headline | Transparency Center text ad | {{adHeadline}} |
| ad_keyword | Token theme from headline | {{adKeyword}} |
| ad_description | Ad body text (optional) | Internal context only |
| destination_url | Click-through URL | LP match scoring, sales intel |
Optional research
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
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.
Acknowledge partial alignment. Offer a tighter page built specifically for that ad variant.
Page already aligned. Pitch page-per-ad volume and continuous A/B testing instead of fixing a mismatch.
Step 4
Do
Don't
Step 4 continued
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
Production E1 templates. Swap variables at import. Low-match and high-match are verbatim from the live campaign.
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?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 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?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 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?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
Three alternate generic opens for leads where the scrape returned nothing usable. Same offer, different hook.
{{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?{{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?{{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
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
Pull from your contact API to CSV. One row per domain. Include company name, title, email, domain, ad spend field.
Run domain list through Transparency scraper. Merge ad_headline, ad_keyword, destination_url back into CSV.
File A: has headline + keyword. File B: no usable creative. Route to different sequences.
Hit every address through verification API. Drop invalid, catch-all risky, and unknown.
Remove domains behind Mimecast, Proofpoint, Barracuda, Cisco/IronPort, Tessian, etc.
Add dropped emails to blocklist. Import clean files into sequencer with custom variables mapped.
Step 6
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
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
| Field | Why sales needs it |
|---|---|
| Company + title | Qualify fast without looking them up |
| LinkedIn URL | One click to research before calling back |
| Monthly ad spend | Confirms ICP fit and deal size |
| ad_headline + ad_keyword | Rep knows exactly which ad you referenced |
| Ads Transparency URL | Proof you did the homework |
| Sequencer deep link | Jump straight to the thread to reply |
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.lyWe 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 chatPlaybooks are anonymized case studies. Browse all playbooks