Dynamic text replacement without a landing page

Dynamic text replacement on a page you did not build. One link, and the query string writes a different line per client. Nothing to install on the destination.

Updated 2026-09-03 · 6 min read

Dynamic text replacement is the query string rewriting the copy so each visitor reads their own line. On Unbounce or Instapage it fills a landing page you built there. Here it fills your overlay, and the page underneath is the article you already share, the way Sniply, Linko and Replug demo it. One link to every client. You are not going to build forty overlays. Ana has to feel the list is hers. Sam too. Saying hello is not a reason to click.

The same article in two browser windows. In the left one the overlay card in the bottom-left corner says Ana. In the right one the same card, same photo, says Sam.

Same idea as landing page DTR, without the landing page

Unbounce, Instapage, Leadpages and Zoho all ship dynamic text replacement, and all four need the page to be theirs: you build it in their builder, then the query string fills it. That is a page you have to write before anyone reads a word of it. Here the page stays whoever's it was. You are not editing it and you are not installing anything on it. What you own is the overlay, and that is what the query string fills.

Do this

  1. Create a CTA. Card, banner, email box or video. Same trick on all of them.
  2. Write {{title}} where the changing part goes. Headline, message, button text and click URL all take it.
    Headline: {{title}}: 12 tools from this piece
    Message: Ranked, with a link to each one.
    Button: Get {{title}}'s list
  3. The moment you type it, a row for title appears under the link Custom CTA for each link. You can also press + Add dynamic field first and type the token after. Up to 5 fields per CTA.
  4. In that row, give the field its default: what it shows when the link arrives without ?title=. Default here: Team. A bare link then reads Team: 12 tools from this piece, button Get Team's list.The CTA form. Headline reads {{title}}: 12 tools from this piece, message Ranked, with a link to each one., button text Get {{title}}'s list. Below them a box with the link Custom CTA for each link and one row: Field title, Default Team, then + Add dynamic field.
  5. Watch the preview fill with the default. That is what a bare link shows.The preview card for a bare link. Headline Team: 12 tools from this piece, message Ranked, with a link to each one., button Get Team's list. A blank avatar circle on the left, no image uploaded yet.
  6. Upload the graphic of that list (or a video of the walkthrough). Leave it. That file does not change per person.
  7. Save. Put the CTA on your Visib link to that article.
  8. Send Ana: https://links.yoursite.com/tools?title=Ana
    They read: Ana: 12 tools from this piece
    Button: Get Ana's list
  9. Send Sam: https://links.yoursite.com/tools?title=Sam
    They read: Sam: 12 tools from this piece
    Button: Get Sam's list
  10. Send the bare link: https://links.yoursite.com/tools
    They read the default: Team: 12 tools from this piece
Same article overlay. Query title=Ana fills Ana: 12 tools from this piece and Get Ana's list. Query title=Sam fills Sam: 12 tools from this piece and Get Sam's list.

Same article. Same graphic. They click because the list has their name, not because you said hello.

What changes. What does not.

Changes: headline, message, button text, the click URL, the thank-you line on email capture.

Does not change: the photo, the video file, the logo. Upload those once.

Works on card, banner, email capture, video, and the older types (button, bar, text, image-link). Hidden has no overlay, so there is nothing to fill. If the destination blocks iframes, use a snapshot. The words still fill.

From Claude, ChatGPT or Cursor

Same overlay. Headline {{title}}: 12 tools from this piece. Send ?title=Ana. Graphic stays the upload. MCP setup: MCP server.

Business

Starter removes the blanks so nobody sees curly braces. Business fills them. The CTA works on visib.link with no domain of your own.

Headline: {{title}}: 12 tools from this piece
Message:   Ranked, with a link to each one.
Button:    Get {{title}}'s list
Default for title: Team

https://links.yoursite.com/tools?title=Ana
https://links.yoursite.com/tools?title=Sam
https://links.yoursite.com/tools

Frequently asked

Is this the same as dynamic text replacement?

Same mechanism, different page. Unbounce, Instapage, Leadpages and Zoho fill a landing page you built in their builder. Visib fills an overlay that sits on a page you did not build, so there is nothing to install on that page.

Do I put a script on their website?

No. They open your Visib link. That is enough. Their site stays untouched.

What do I type in the overlay?

The offer, with {{title}} where their name goes. A row for title appears under the link Custom CTA for each link; give it a default for links that arrive without ?title=. Ana gets ?title=Ana and reads Ana: 12 tools from this piece.

Does the picture change per client?

No. Upload it once. The photo and the video file stay yours. Only the words (and the click URL, if you want) change.

Is this on Starter?

No. Business. On Starter the blank is removed so nobody sees curly braces.

Keep reading

Your CTA on somebody else's page

Starter is 9 €/mo: 10 links, 1 CTA overlay, 1 custom domain. Business is 19 €/mo: unlimited links and CTAs, 5 custom domains, snapshots, and no Visib badge if you hide it. Cancel any time.

Start for 9 €/mo