Use cases

Personalized Landing Page Images

When a contact clicks your CRM email or ad, they arrive on a landing page that already knows who they are. The Wafrow JavaScript snippet reads the URL parameters your campaign appended and instantly swaps every tagged image to show their name, company, or offer — maintaining the visual thread from click to conversion.

09:41
Tuesday, May 26
🔔 Wafrow now
Special offer for Aditi

Claim your customized discount code inside!

Personalized Rich Push Banner
Personalized WhatsApp Banner

Hey Aditi! We wanted to share this personalized gift card with you! 🎁

12:42 PM

How it works

Three steps from CRM campaign to personalized landing page

1. Add the Wafrow snippet to your landing page

Copy the one-line JavaScript snippet from your Wafrow account settings and add it to your landing page — directly in the HTML or via Google Tag Manager. No build step required.

2. Tag your images

Add class="wafrow-personalized-images" to any image you want to personalize. That's the only change needed in your page markup — the snippet handles the rest automatically.

3. Let your CRM pass the data

When a contact clicks your email or ad link, your CRM appends their data as URL parameters (e.g. ?firstname=Sarah&company=Acme). The Wafrow snippet reads these on page load and renders a personalized image for that visitor in milliseconds.


Two ways to personalize landing page images

Choose based on your speed and security requirements

URL parameters — recommended for most campaigns

Dynamic personalization driven by CRM data at click time

Your CRM appends contact data to the landing page URL when a contact clicks. The Wafrow snippet reads those parameters and renders a matching personalized image on the fly. No pre-generation, no setup per contact.

Best forEmail campaigns, ads, any CRM with merge-tag links
SetupAdd snippet + one class attribute to your images
BonusWorks instantly — no per-contact pre-rendering
Trade-offURL parameters are visible and can be manually edited
<!-- 1. Add snippet (once, via GTM or <head>) -->
<script>
function wafrow_init(t,e){
  const n=document.createElement("script");
  n.type="text/javascript"; n.async=!0; n.src=t;
  n.setAttribute("orgID",e);
  n.onload=()=>{window.orgID=n.getAttribute("orgID")};
  document.head.appendChild(n);
}
wafrow_init(
  "https://wafrow.com/js/experiment.min.js",
  "YOUR_ORG_ID"
);
</script>

<!-- 2. Tag your image -->
<img src="https://wafrow.com/i/TEMPLATE_ID"
     class="wafrow-personalized-images"
     alt="Personalized banner" />

<!-- 3. CRM sends link with parameters -->
<!-- https://yourpage.com/lp?firstname=Sarah&company=Acme -->

Named variants — for speed-critical or secure pages

Pre-generated images cached at the edge before the visitor arrives

Create a named variant (campaign ID) for each contact or segment via the Wafrow API or dashboard. Embed the variant URL directly. The image is pre-rendered and cached on Cloudflare before anyone visits — no render latency on first load, and no way to manipulate the content via URL.

Best forHigh-traffic SEM pages, security-sensitive campaigns
SpeedUp to 3× faster first load — served from Cloudflare edge cache
BonusContent is locked — visitors cannot alter the image via URL
Trade-offRequires pre-generating a variant per contact or segment
<!-- Variant URL: template_id/campaign_id -->
<img src="https://wafrow.com/i/TEMPLATE_ID/CAMPAIGN_ID"
     class="wafrow-personalized-images"
     alt="Personalized banner" />

<!-- Generate variant via API before send -->
POST /api/campaigns
{
  "image_template_id": "TEMPLATE_ID",
  "name": "Sarah @ Acme — Q3 offer",
  "personalize": {
    "firstname": { "text": "Sarah" },
    "company":   { "text": "Acme Corp" },
    "offer":     { "text": "30% off" }
  }
}

CRM campaign use cases

Campaign type CRM data passed via URL Landing page image shows
B2B outbound email firstname, company, jobtitle Prospect name + company logo + personalised headline
Paid search (SEM) keyword, location, offer Ad headline + offer matched to the search term
Re-engagement email firstname, last_purchase, discount Name + personalised discount banner
Event invite firstname, event_name, seat Personalised event badge with attendee name
Partner / referral referrer_name, partner_logo Co-branded banner with referrer details

Zapier HubSpot Customer_io Apollo_io Contentful Firebase Clay Shopify Kit Braze Salesforce Mailchimp Klaviyo ActiveCampaign Omnisend

Ridiculously good value

Simple, transparent pricing. Risk-free, cancel anytime.

Free Plan Lifetime License Pay-As-You-Go
Price

Free

forever

$99

one-time payment

$0.01

per image generated
14-day free trial
Images Generated 1,000 / month 10,000 / month Unlimited
Bandwidth 1 GB / month 25 GB / month Unlimited
Integrations All 14 integrations All 14 integrations All 14 + Custom Webhooks
MCP Server Included Included
Support Self-serve Self-serve Self-serve + dedicated
Get Started Get Started Get Started

Features on All Plans

Use on email, whatsapp, mobile push & landing pages

MCP server for AI agents

6000+ fonts available

Generate Images using URL Parameters

Unlimited image and PDF downloads

Multi-lingual support for characters in arabic, hindi, chinese, japanese

Rest API and webhooks

Digital creative asset manager

Live slack and email support


Risk-free, cancel anytime, no lock-in

Wafrow cancellation is self-serve. No need to email us or callbacks from retention specialists. Straightforward and fair, the way life should be.


Cheapest possible plans for startups and non-profits

As we bootstrap our way through this journey, we realize the value of your hard earned cash. Our endeavour is to make the starting plan as high value as possible. If you're a non-profit, we're happy to offer discounts. Just email us your credentials.


World-class support
Ravdeep
If you get stuck, drop a quick line at [email protected] or slack for enterprise customers. It'll likely be this guy, helping you out with a grin 24x7.

Frequently asked questions

How does Wafrow keep landing page images in sync with my CRM campaign?

When your CRM sends an email or ad with personalization data in the click-through URL (e.g. ?firstname=Sarah&company=Acme), the Wafrow JavaScript snippet reads those URL parameters and automatically updates any image tagged with the wafrow-personalized-images class to show a matching personalized version. The visitor sees the same name, offer, or logo on the landing page that they saw in the email.


Which landing page builders are supported?

Any CMS or page builder that lets you embed a JavaScript snippet and set image src attributes — including Webflow, Instapage, WordPress, Unbounce, Leadpages, and hand-coded HTML pages. Add the snippet via Google Tag Manager if your CMS does not allow direct script injection.


Do I need a developer to set this up?

No. Copy the one-line snippet from your Wafrow account settings, add it to your landing page, and add the class wafrow-personalized-images to any image you want to personalize. Your CRM handles the URL parameters automatically when a contact clicks a link.


When should I use URL parameters versus named variants?

Use URL parameters when you want open-ended personalization driven by CRM data at click time — no pre-generation needed. Use named variants (campaign IDs) when speed and security matter most: variants are pre-cached on Cloudflare (up to 3× faster first load) and cannot be tampered with in the URL bar.


Can I test this without a live CRM campaign?

Yes. Manually append URL parameters to your landing page URL in the browser — for example ?firstname=Sarah&company=Acme — and images tagged with wafrow-personalized-images will update live. This is the easiest way to preview how the page will look for a specific contact before launching.