Access Unlocked
?

Full setup guide unlocked for you. Everything you need is below — including the mega prompt at the bottom.

Jump to section
Setup steps
How It Works 1. Enrich Your Leads 2. Build the Template 3. Personalise in Bulk 4. Plug Into Your CRM 5. Send & Track
Reference
CRM Guide Bulk Link Guide Fallback Rules Mega Prompt
More
Want this built for you?
The System

What You're Building

A fully automated pipeline that takes a cold prospect, enriches their data, generates a personalised landing page with their name, company, tools and competitors — then sends them a unique URL. Every contact gets their own page. You build it once.

3xHigher Conv.
60sPer Page
100%Automated
£0Extra Cost
💡
The core ideaMost cold outreach fails because the landing page is generic. The email does the personalisation work, then the page throws it all away. This system makes the page do the heavy lifting — your prospect lands somewhere that feels built for them specifically.

Data Layer

Clay or Apollo pulls name, company, industry, headcount, tools and competitors from LinkedIn or a domain. Your input is just a list of URLs.

AI Layer

One prompt turns each data row into fully written personalised copy — headline, body, competitor block, and CTA button text. No manual writing.

Page Layer

Webflow or Framer CMS hosts one template. Each prospect gets their own slug URL with their data injected automatically via CMS fields.

Outreach Layer

Instantly or Lemlist sends each contact their unique URL. Tracked clicks show you who engaged and exactly when to follow up.


Step 1

Enrich Your Lead Data

You need six fields per contact before anything else — name, company, industry, headcount, tech stack, and top competitors. Here's exactly how to get them without doing any manual research.

1

Build your prospect list

Use Apollo.io to search by job title, company size, industry and location. Filter to decision-makers only. Export as CSV with LinkedIn URLs included. Start with 50–200 contacts per batch — enough to test and iterate without burning your domain.

Apollo.ioLinkedIn Sales Nav
2

Run enrichment in Clay

Import your CSV into Clay. Add a "Company Enrichment" waterfall column — Clay pulls simultaneously from Clearbit, BuiltWith, Similarweb and LinkedIn. One click gets you industry, headcount, tech stack and competitors for every row.

Clay columns to configure
Company Name      → Auto from LinkedIn URL
Industry          → Clearbit enrichment
Headcount         → Clearbit enrichment
Tech Stack        → BuiltWith enrichment
Top 3 Competitors → Similarweb enrichment
First Name        → LinkedIn profile scrape
Clay
3

Validate before processing

Add a formula column in Clay that flags rows with missing critical fields. Only rows that pass the check get sent to the AI prompt. Rows that fail go to a "Needs Review" table for manual input.

Clay quality gate formula column
# Returns TRUE if row is safe to process
AND(
  NOT(ISBLANK(first_name)),
  NOT(ISBLANK(company_name)),
  LEN(first_name) > 1,
  LEN(company_name) > 1
)
⚠️
Don't skip validationA page that says "Built for undefined" or emails addressed to "[first_name]" destroy credibility instantly. Set up fallbacks before your first send — the full ruleset is in the Fallback Rules section below.

Step 2

Build the Page Template

You build one page. That page has variable slots. Every prospect gets their own URL pointing to the same template — but the variables swap out for their specific data. Zero duplication of design work.

1

Set up a Webflow CMS Collection

Create a new CMS Collection called "Prospects". Add these fields — the AI will generate content for the text fields automatically:

Webflow CMS fields
first_name       Plain Text  — from enrichment
company_name     Plain Text  — from enrichment
industry         Plain Text  — from enrichment
tools            Plain Text  — comma list from enrichment
competitor_1     Plain Text  — from enrichment
competitor_2     Plain Text  — from enrichment
headline         Plain Text  — AI-generated
subheading       Rich Text   — AI-generated
body_copy        Rich Text   — AI-generated
cta_text         Plain Text  — e.g. "Book Marcus's audit"
slug             Plain Text  — e.g. "marcus-meridian"
2

Design the template and bind fields

Create one CMS Collection page. Build your layout in the Webflow designer, then bind each text element to the relevant CMS field. Critical binding points:

Hero headline

Bind to headline — AI-generated, mentions company name

CTA button

Bind button label to cta_text — "Book Marcus's free audit"

Competitor block

Bind 3 text elements to competitor_1, competitor_2, competitor_3

Tools section

Bind to tools — shows their exact stack (HubSpot, Xero, etc.)

3

Each prospect gets a unique slug URL

Webflow generates a URL per CMS item based on the slug field. Set slug to firstname-companyname — lowercase, hyphenated. Each person's page looks like:

yoursite.com/p/marcus-meridian
yoursite.com/p/sarah-fasttrack
yoursite.com/p/james-nexus-distribution

This is the URL you put in your cold email. Each person gets their own link, their own page, their own experience.


Step 3

Personalise in Bulk

Once you have 100 enriched rows, you generate 100 personalised pages without touching a single one individually. This is where the automation compounds.

1

Run the AI prompt as a Clay column

In Clay, add an "AI Prompt" column. Paste the mega prompt from the section below. Clay calls the AI API (OpenAI or Claude) for each row and populates the output — headline, body copy, CTA text — into separate output columns. Runs for all rows simultaneously.

Splitting AI output into columnsAsk the AI to output each section on a new line with a clear label (e.g. [HEADLINE], [BODY], [CTA]). Then use a Clay "Split Text" formula column to separate them into individual fields ready for Webflow import.
2

Push all rows to Webflow via Make

Build a Make scenario that reads your Clay export and creates one Webflow CMS item per row. Make maps each Clay column to its Webflow field. 100 rows = 100 pages created in under 3 minutes.

Make scenario sequence
Trigger:  Google Sheets / Clay export (or HTTP webhook)
Step 1:   Iterator — loop each prospect row
Step 2:   Webflow → Create CMS Item
          Map: first_name    → first_name
          Map: company_name  → company_name
          Map: headline      → headline
          Map: cta_text      → cta_text
          Map: slug          → slug (auto-lowercase)
Step 3:   Append full page URL to output sheet
          Format: https://yoursite.com/p/{{slug}}
MakeZapier
3

Generate the personalised URL list

After Make runs, your output sheet has a URL column — one unique page per prospect. This column feeds directly into your cold email tool as a merge variable.

Google Sheets slug formula
=LOWER(SUBSTITUTE(A2," ","-")&"-"&SUBSTITUTE(B2," ","-"))
// A2 = first_name, B2 = company_name
// Output: "marcus-meridian", "sarah-fasttrack"

// Full URL formula:
="https://yoursite.com/p/"&LOWER(SUBSTITUTE(A2," ","-"))&"-"&LOWER(SUBSTITUTE(B2," ","-"))

Step 4

Plug Into Your CRM

Every CRM handles personalised URL fields differently. Find yours below.

CRM Integration Reference

CRMWhere to store the URLEmail merge tagHow to trigger
HubSpotMost popular Custom contact property: personalised_url {{contact.personalised_url}} Workflow: contact enrolled → send sequence with merge tag in step 1
Salesforce Custom field on Contact/Lead: Personalised_URL__c {{{Personalised_URL__c}}} Salesforce Flow → trigger email on field populated
Pipedrive Custom person field: "Page URL" [[person.personalised_url]] via Lemlist Pipedrive → Make → add to Lemlist campaign on deal stage change
GoHighLevelAgencies Custom field on Contact: personalised_url {{contact.personalised_url}} GHL Workflow → Send Email action → custom value in body
Notion CRM URL property column: "Page URL" Export CSV → import to Instantly Notion → Make → email tool when status changes to "Ready"
Airtable URL field: "Personalised URL" Via Zapier custom variable Airtable Automation → Zapier → Instantly on status change
No CRMStarting out Google Sheet column: "Page URL" CSV import → {{personalised_url}} Upload CSV directly into Instantly or Lemlist — map URL column as custom variable

Bulk Sending

How to Send Personalised Links at Scale

Once your URL column is ready, here's exactly how to get each unique link into the right person's email — tool by tool.

A

Instantly.ai — recommended for cold email

Upload your prospect CSV. In the "Variables" step, map the "Page URL" column as a custom variable named personalised_url. In your email template, insert the link like this:

Instantly email template example
Hi {{first_name}},

I noticed {{company_name}} is running outbound — thought you'd
want to see what this looks like built specifically for you:

→ {{personalised_url}}

Takes 2 minutes to look at. Built for {{company_name}} specifically.

James

Instantly replaces every variable per contact automatically on send. Each recipient gets their unique URL, no manual work needed.

B

Lemlist — best for multi-channel sequences

Lemlist has native dynamic landing page support via Lempage, OR you can use your Webflow URLs as custom variables. Upload CSV → map custom attribute → reference in email body. Lemlist also lets you embed a screenshot of the personalised page directly in the email as a visual hook.

💡
Lemlist screenshot featureEnable "Dynamic Images" in Lemlist. It takes a screenshot of each prospect's personalised URL and embeds it in the email. The prospect sees a preview of their own page inside the email — before they even click. Conversion rates jump significantly.
C

HubSpot Sequences

Import contacts with the personalised_url property populated. Enroll in a sequence. Use {{contact.personalised_url}} as a personalisation token in the email template. HubSpot replaces it per contact on send. Works natively — no third-party tool needed.

D

Manual send (Gmail + Hunter or Mailmeteor)

If you're doing low-volume outreach from Gmail, use Mailmeteor. Upload a Google Sheet with your contacts and a "Page URL" column. Mailmeteor sends personalised Gmail drafts — one per row — with the URL inserted automatically. Free plan handles up to 50 emails/day.


Step 5

Track Visits & Follow Up

1

Monitor page visits per prospect

Add Plausible Analytics or Google Analytics to your Webflow template page. Every page visit logs the slug — so you can see exactly who visited "marcus-meridian" and when. Cross-reference with your CRM contact record to log the engagement.

2

Set up a visit-triggered follow-up

Connect Webflow analytics events to your CRM via Make. When someone visits their personalised page, update their contact status and trigger a follow-up email 30 minutes later while they're still warm.

Make scenario — page visit triggers follow-up
Trigger:  Plausible webhook → new page visit event
Step 1:   Extract slug from page path
Step 2:   Match slug to contact in CRM
Step 3:   Update contact status to "Page Viewed"
Step 4:   Make delay module → wait 30 minutes
Step 5:   Send follow-up email via HubSpot / Instantly

Edge Cases

Fallback Rules — When Data Is Incomplete

Enrichment data is never 100% complete. These rules ensure you never send a page that looks broken, awkward, or like a template gone wrong.

⚠️
Implement these in Clay before running your AI promptUse Clay IF formula columns to detect missing fields and substitute fallback values automatically. The AI prompt then receives clean data every time, with no blank variables.
Missing FieldFallback ValueWhat to doRisk
first_name "there" → "Hi there" Use generic greeting. Do NOT leave the variable blank — "Hi [first_name]" instantly kills credibility. "Hi there" is neutral and acceptable. Try to recover from email domain: firstname@company.com often gives you the name. Critical
company_name "your business" Replace all company name instances with "your business". Re-run AI prompt with this substitution. The page still functions — just loses its sharpest hook. Try recovering from email domain first (strip TLD and format: orcascale.co → "OrcaScale"). Critical
industry "your industry" Generic but acceptable. Before using the fallback, prompt the AI to infer industry from the company name and domain. Often works well (e.g. "MedSupply Ltd" → healthcare). Use the fallback only if inference fails. Medium
tools Omit tools section entirely Do NOT fabricate tool names. Remove the tools paragraph from AI output. Flag the row with a "no_tools" boolean column in Clay. The page still converts without it — just loses one personalisation layer. Consider mentioning their industry's typical stack instead. Medium
competitor_1 (none found) Industry benchmark stat Replace the competitor block with a relevant stat: "Companies in [industry] using automation save an average of 8 hours/week on operations." Still creates urgency without naming anyone. Source your stats — fabricated numbers destroy trust if spotted. Medium
competitor_2 (only one found) Show one competitor row only Single-row competitor blocks work fine. Do not fabricate a second competitor name. Adjust your AI prompt to output "one or two" competitors depending on what's available. Low
headcount Omit size references Remove any copy referencing team size. Not essential — only include when data is confirmed. Guessing headcount and getting it badly wrong is worse than omitting it. Low

Clay fallback formula pattern

Apply this pattern for each field in Clay
# For first_name column — output safe value
IF(ISBLANK(raw_first_name), "there", raw_first_name)

# For company_name column
IF(ISBLANK(raw_company_name), "your business", raw_company_name)

# For tools — output empty string so AI prompt skips it
IF(ISBLANK(raw_tools), "", raw_tools)

# Quality score column — count populated fields
(NOT(ISBLANK(first_name))*1) +
(NOT(ISBLANK(company_name))*1) +
(NOT(ISBLANK(industry))*1) +
(NOT(ISBLANK(tools))*1) +
(NOT(ISBLANK(competitor_1))*1)
# Score 3+ = process normally | Score 1-2 = manual review | Score 0 = skip

Copy + Paste

The Mega Prompt

This is the complete prompt. Replace every {{variable}} with real enriched data and paste it into Claude or ChatGPT. It generates the full page — headline, body, competitor block, tools section, and CTA button text — ready to publish. You can also run this directly as a Clay AI column with variables mapped from your spreadsheet.

💡
Two ways to use this prompt
1. Manual: replace variables yourself and paste into Claude or ChatGPT — takes 30 seconds per prospect.
2. Automated: paste into a Clay "AI Prompt" column. Clay fills in the variables from your columns automatically and runs it for all 100+ rows at once.
THE MEGA PROMPT — COPY EVERYTHING BELOW
You are an expert B2B conversion copywriter who specialises in hyper-personalised landing pages for outbound sales.

I will give you data about a specific prospect. Your job is to write a complete, personalised landing page for them. Everything must feel like it was written specifically for this person and their business — not generated from a template.

---

PROSPECT DATA:
First name:       {{first_name}}
Company name:     {{company_name}}
Industry:         {{industry}}
Company size:     {{headcount}} employees
Tools they use:   {{tools}}
Competitors:      {{competitor_1}}, {{competitor_2}}, {{competitor_3}}
Their pain:       {{pain_point}}

MY OFFER:
What I do:        {{your_offer}}
Key result:       {{key_result}}
Proof stat:       {{proof_stat}}

---

OUTPUT FORMAT — produce each section with the label in square brackets. Do not add any other sections.

[HEADLINE]
One punchy sentence. Mention their company name. Focus on the result, not the service. Maximum 12 words.
Example: "{{company_name}}, your competitors are already automating this."

[SUBHEADING]
Two sentences maximum. Reference their industry. Acknowledge a specific manual pain relevant to their size and sector. Maximum 30 words total.

[TOOLS PARAGRAPH]
One paragraph (2-3 sentences). Mention their specific tools ({{tools}}) by name. Show you understand their current stack and explain how your offer works with or alongside it.
If {{tools}} is empty: write a credible generic paragraph about their industry's typical operational challenges without naming specific tools.

[COMPETITOR BLOCK]
Show the competitors provided: {{competitor_1}}, {{competitor_2}}, {{competitor_3}}.
Format each one as:
• [Competitor name] — [what type of process they automated] — [plausible result e.g. "-9h/week", "£1,800/mo saved", "NPS +22pts"]
Results must be plausible and specific. Do NOT fabricate company names — only use the competitors provided.
If fewer than 3 competitors are provided, only show the ones given. If none provided, replace this section with one relevant industry benchmark statistic instead.

[BODY PARAGRAPH]
2-3 sentences. Explain what happens when they take action. Keep it low-friction: fast to set up, they see results before committing, no risk. Do not use the words "leverage", "synergy", "robust" or "empower". No em dashes.

[PROOF STAT]
One sentence using: {{proof_stat}}. Frame it as a result already achieved, not a promise.

[CTA BUTTON TEXT]
Exact format only: Book {{first_name}}'s free audit →
No other text. Just this line.

[PAGE TITLE TAG]
For browser tab: Built for {{company_name}} — [your brand name here]

---

TONE AND STYLE RULES:
- Read like a human wrote it specifically for this person — not like AI output
- Direct and confident. No corporate jargon. No fluff.
- Short sentences. One idea per sentence.
- Use {{first_name}} and {{company_name}} naturally — not forced or repetitive
- Plain text output only — no markdown, no asterisks, no headers beyond the section labels

FALLBACK RULES — apply automatically if data is missing:
- {{first_name}} missing → use "you" naturally in its place
- {{company_name}} missing → use "your business" throughout
- {{tools}} missing → skip the Tools Paragraph entirely
- {{competitor_1}} missing → replace Competitor Block with one industry benchmark stat
- {{pain_point}} missing → infer the most likely pain from industry and company size
- {{headcount}} missing → omit any reference to team size

---

Now write the complete personalised landing page for {{first_name}} at {{company_name}}.

Want us to set this up for you?

OrcaScale builds the entire system — enrichment, AI copy, page template, CRM integration and outreach automation — fully configured for your business. You see it working before anything is agreed.

Or email contact@orcascale.co — we reply within 24 hours.