One Landing Page,
Every Prospect
The prospect's identifier travels in the link you send, and the page assembles itself around them when it opens. No page per account, no merge-tag spreadsheet, and no second copy to keep in step.
Write the page once
Set a page's template to Dynamic Landing Page and write your copy with {business} and {city} where the prospect's details belong. That is the whole build. A campaign to two hundred accounts is still one page row, one publish, and one deploy.
Use the id you already hold
Your list came from somewhere. Whatever identifier came with it is the one you send — there is no mapping table to build and no new key to mint. Ten identifier keys resolve, selected per link with ?resolve_key=.
Scraped Lists
MapsA Google place ID or a website domain — the two identifiers a maps or crawl list already carries.
Registry Lists
LegalVAT, LEI, tax id or company registration number, for a list that came out of a filings database rather than a crawl.
Personalised on the way out
Nothing is pre-built and nothing is stored per visitor. When the request lands, the renderer lifts the identifier out of the path, resolves it to a business record, and renders your page with that record in scope. Update the underlying record and the next open reflects it.
<!-- /lp/wifi-proposal/{identifier} -->
<h1> deserves faster wifi</h1>
<p>
Rated across
reviews
in .
</p>
<!-- or the flat merge tags -->
<p>Hi at .</p>
The link outlives the campaign
Personalised links get forwarded, pasted into group chats, and opened months later with a character missing. When the identifier does not resolve, the page still renders — your blocks, your hero, your call to action — with a stand-in name you choose. Only the sections that genuinely need real data are held back.
No Dead Ends
GracefulAn unresolved identifier is a designed state, not an error. The visitor gets a working page rather than a broken one.
Your Wording
FallbackSet your own stand-in business and city, so an anonymous visit still reads like a finished page.
Every rep sends their own link
Add a second segment to the URL and the page picks up that salesperson's name, title, photo and booking link. The same page carries the prospect and the person running the account, so a ten-person team shares one page and sends ten differently-branded links.
# prospect only
/lp/wifi-proposal/0x47e66fdad6f1cc73:0x341211b3fccd79e1
# prospect + the rep who owns the account
/lp/wifi-proposal/ajay/0x47e66fdad6f1cc73:0x341211b3fccd79e1
# resolve by something other than a place id
/lp/wifi-proposal/acme-plumbing.de?resolve_key=domain
The data is already yours
A dynamic landing page reads the business records already sitting in your account — the ones your scraping and enrichment jobs produced. Name, address, city, rating, review count, verified email, phone, and the related contacts underneath each one. There is no separate import, and no second copy of your list to keep current.
An agent can build the whole thing
The page, its template, its copy and its fallbacks are all ordinary content API calls, so the campaign page is something you can hand to an agent in your editor rather than build by hand. It creates the page, sets the template, writes the placeholders, publishes and deploys.