NEW The GemBoss community is live. Join founders building brand-true stores →
Open letter · For Klaviyo agencies

You win the click. Then it lands on a page written for nobody.

A letter to the teams who run email and SMS for other people's brands, about the one part of the funnel none of us owns yet: what the shopper sees in the second after they click.

By Chris Koh, founder of GemPages and GemBoss Saigon 18 minute read

The short version

For anyone who wants the argument before the letter.

The problem
Klaviyo's own 2026 benchmark, across more than 183,000 accounts, puts campaign click rate at 1.69% and campaign order rate at 0.16%. Divide one by the other and roughly 9.5% of the clicks an agency earns become an order. Flows, on the same arithmetic, run at 37.8%. The variable is relevance, and relevance stops at the link.
The cause
The email knows exactly who is reading it. The landing page does not, because nothing carries that identity across the click. Four segments, four promises, one URL.
The mechanism
A signed link carries an opaque token. GemBoss resolves the profile server side, then composes the page per recipient from the brand's own approved sections: headline, hero product, offer, proof. Klaviyo keeps the list and the send. Checkout stays on Shopify.
The evidence
2.9% to 4.6% conversion on live traffic in our own A/B tests, about 1.6 times, with no extra emails sent. Those are our numbers, not an audited benchmark, which is exactly why the offer below is a free pilot measured on your metric.
The ask
Thirty minutes, then a thirty-day pilot on three of your clients at no cost, scored on revenue per recipient credited to email. Your metric, your accounts, your call.
The letter

Nobody owns the page. That is the whole problem.

To the agency running someone else's email programme,

I am writing this as a page rather than a deck, because a deck would let me skip the part where I have to be precise.

You have already solved the hard problems. Segmentation is real. The flows are built. Deliverability is watched. The copy is written by someone who knows the brand. Every month you go into a client review and defend a number that you earned, and every month a share of that number is decided by something you were never given control of: the page the click lands on.

That page is usually the homepage, a collection, or a landing page built once, months ago, for an audience of everyone. It is the only object in your funnel that does not know who is looking at it. Your VIP with three orders and your first-time opener with no history arrive at the same headline, the same offer and the same reviews, having been promised two completely different things thirty seconds earlier.

We build the software those pages are made of. GemPages has around 20,000 merchants paying every month, more than 100,000 active Shopify stores, and roughly 300 real A/B tests running across other people's storefronts in an average month. From that seat, the pattern is not subtle: the message is personalised to the individual and the destination is personalised to nobody.

So the proposal in this letter is narrow on purpose. Klaviyo keeps the send. We take the page. No migration, no new tool for your team to learn, no competitor for your ESP, no change to the number you already report. The campaigns you are running today simply stop losing as many people at the door.

Everything after this point is the argument in detail: what the numbers say, exactly how the mechanism works, what it is worth to an agency rather than to a merchant, and what we would like to do with you. If you disagree with the diagnosis, the fastest way to prove me wrong is the pilot at the end, on your accounts, scored with your metric, at no cost.

Chris Koh Founder, GemPages and GemBoss. Ten years building conversion tools out of Saigon.
1 · The problem

About nine in ten clicks you earn never become an order.

This is not our statistic. It is arithmetic on Klaviyo's published 2026 benchmark averages, drawn from more than 183,000 ecommerce accounts. Take the order rate, divide it by the click rate, and you get the share of clicks that finish.

Klaviyo 2026 benchmark averages, and the ratio they imply. The final column is our division, not a published Klaviyo figure.
Message typeClick rateOrder rateRevenue per recipientClicks that become orders
Campaigns (94.7% of sends)1.69%0.16%$0.119.5%
Flows (5.3% of sends, 41% of revenue)5.58%2.11%$1.9437.8%

Source: Klaviyo 2026 email marketing benchmarks, 183,000+ customers. The last column is order rate divided by click rate, computed by us from those published averages.

Read the two rows against each other, because the gap is the argument. Flows convert clicks roughly four times better than campaigns. Nothing about the sending infrastructure differs between them. What differs is how closely the message matches one person's situation. Flows are triggered by a real event, so they are relevant by construction.

Which is the encouraging part: relevance is demonstrably worth about 4x on this exact dataset. And it is still only being applied to the message. The page that both rows land on is the same undifferentiated page.

We looked for the same pattern where the data is public, on the paid side. Across a set of DTC brands we pulled 4,531 live ads pointing at only 198 distinct landing pages. One brand was running 121 live ads for a single lash serum, every one of them landing on the same product page. Email has the same shape, with one difference that should bother a retention team more than a media buyer: with email you already know exactly who is arriving. That knowledge is sitting in the ESP. It just never reaches the page.

2 · The cause

The identity dies at the link.

It is worth being exact about where the loss happens, because the fix follows directly from it.

Inside Klaviyo, a recipient is a rich object: lifecycle stage, order history, average order value, category affinity, predicted value, the product they viewed on Tuesday and did not buy. The template can address all of it. The moment that recipient clicks, the browser makes a fresh request to a web server that has never heard of them. What survives the jump is a URL and, if someone remembered, a UTM tag that says which campaign it was. A campaign name is not an identity.

So the page does the only thing it can. It renders the version that is least wrong for the largest number of people: a broad headline, the hero product for the average visitor, a discount code that everyone gets, and whichever reviews were pinned six months ago.

This is not an agency failure or a merchant failure. It is a boundary problem. The ESP's job ends at the click and the storefront's job begins there, and nobody was ever responsible for the handover. Four teams have opinions about that page and none of them owns it: the retention agency wrote the promise, the brand owns the theme, the media buyer sends other traffic to it, and a developer touched it last quarter.

Everything below is one idea: make the identity survive the click, then let the page act on it.

3 · The mechanism

How post-click personalization actually works.

Six steps. The only one that touches your Klaviyo account is a link change in a template, and it is reversible in a minute.

Connect once, migrate nothing

The brand's Shopify store connects to GemBoss, and a read-only Klaviyo private API key is added, scoped to profiles and events. That is the entire setup. The list, the segments, the flows, the templates, the sending domain and the deliverability reputation do not move and are not touched.

One time, about 30 minutes

Swap the destination of the button

In the Klaviyo template, the campaign button points at a GemBoss landing page URL carrying a signed token, rendered from a template variable at send time. The token is opaque, signed and short lived: no email address, no name, no raw profile id in the query string.

One line in the template

Resolve the visitor server side

On the request, GemBoss verifies the signature, then reads that one profile from Klaviyo server side. The read happens on our servers, never in the browser, so nothing about the shopper is exposed to the page source or to anyone who gets the link forwarded to them.

Read-only, server side

Compose the page from approved parts

Four slots are decided by rules you approve: headline, hero product, offer type and which proof to show. Each is filled from the brand's own approved section library, so the output is composed rather than generated free form. A page cannot invent a claim, a price or a product that the brand did not already publish.

Deterministic, brand safe

Render fast, check out on Shopify

The page renders server side at the edge, and add to cart, discounts and checkout continue on the brand's own Shopify. If the token is missing, expired or unreadable, the static control page is served instead. Degrading to the page the brand would have shipped anyway is the designed failure mode.

Fails to the normal page, never to a broken one

Split test it, then write the result back

Every recipient is assigned once, stickily, either to the composed page or to the brand's current static page, split evenly on live traffic. So the campaign measures itself. Outcomes are written back as events, which means your segments learn from what happened after the click, not just from the open and the click.

A/B by default, not as an upsell

What the link looks like

Concretely, this is the only change inside the ESP. The template variable is rendered by Klaviyo at send time and the value is meaningless to anyone who intercepts it.

In the Klaviyo email templateone line
<a href="https://go.yourbrand.example/spring-restock?gb={{ person|lookup:'gb_token' }}">
  Shop the restock
</a>

# gb= is an opaque, HMAC-signed, time-limited token.
# No email, no name, no raw profile id travels in the URL.
# Strip the parameter and the visitor simply gets the static page.

What GemBoss reads, and nothing more

Server-side profile readread-only
GET /api/profiles/{id}?additional-fields[profile]=predictive_analytics
GET /api/events?filter=equals(profile_id)&include=metric
Lifecycle stageOrders to dateAverage order valueDays since last orderPredicted lifetime valueAbandoned-cart signal

No send scope, no list write scope, no template write scope. If the key is revoked, every page falls back to the static control on the next request.

The same campaign, four people

One skincare brand, one Tuesday campaign, one list. Four of the people who click, and what changes for each of them.

An illustrative composition, using the four slots described above.
Who clickedWhat they get todayWhat the composed page gives them
Bought the serum 40 days agoThe homepage. She searches for the product she already owns and picks the shade again.Her exact shade already in the cart, one tap to reorder, subscribe and save alongside it.
Viewed a $180 jacket twice, never addedA new arrivals grid of forty products. The jacket is somewhere on row three.That jacket full width, reviews from buyers of his size, sizing chart above the fold.
Lapsed nine months, last order paid $12 shipping"We miss you, here is 20% off." The discount does not answer the objection.Free shipping in the headline, a bundle that clears the threshold, what changed since she left.
First email ever opened, no historyThe same 20% code everyone gets. Day one, he learns to wait for a discount.Why the product works, who it is for, a money-back guarantee. Margin intact.

What it did in our tests

Static control page2.9%
Composed page, same campaign, same list4.6%

Roughly 1.6 times, measured per recipient on live traffic, with no additional emails sent. Read the caveats before you use these numbers anywhere. The full product page is at Klaviyo personalized landing pages.

4 · The boundary

We are not building an email platform.

The most common first question from an agency is whether this is a wedge that eventually competes with the ESP the agency has standardised on. It is not, and the boundary is worth stating flatly.

Before the click

Klaviyo, and your team

  • The list, the profiles, the consent record
  • Segments and predictive analytics
  • Email and SMS flows, campaigns, templates
  • Sending domain, authentication, deliverability
  • The strategy, and the client relationship
After the click

GemBoss

  • The landing page, composed per recipient
  • Offer, cart and post-purchase upsell
  • The A/B test against the static control
  • Outcome events written back to your segments
  • Checkout handed straight to the brand's Shopify

Things we deliberately do not do: we do not send anything, we do not hold the list, we do not write to segments except as outcome events you can turn off, and we never touch the sending domain. Nothing in this proposal requires the brand to open a second billing relationship with an ESP or your team to learn a second interface.

5 · The economics

A conversion rate is a merchant metric. Here is the agency one.

I will not pretend landing page conversion is what an agency is graded on. It is not. But it is the first link in a short chain that ends at the numbers a retention agency actually lives on: retained revenue, renewal, and the annual argument about the fee.

Illustrative, not a case study: one client selling $200,000 a month with a quarter credited to email, moved by the 2.9% to 4.6% figures above. Run it on your own three accounts and the numbers become real.
One client, one contractTodayAfter the fix
Emails sent per monthSameSame
Agency headcount on the accountSameSame
Revenue credited to email$50kabout $80k
How the client sees the fee"Fine, I suppose"Cheapest channel we have
The renewal conversationArguing over priceAdding budget
6 · The partnership

How we would work together.

Two halves. One is who does what on a live account. The other is the commercial arrangement, which only becomes relevant if the first half works.

Who does what on an account

You keep

The agency

  • The client, the retainer, the reporting
  • Segment and offer strategy
  • Which campaigns and flows are worth the work
  • Sign-off on every composition rule
We bring

GemBoss

  • The page layer, built and maintained
  • The A/B harness and the read-out
  • Page production hours you no longer bill against
  • A named person on a shared channel with your team

What we are asking for, smallest first

Thirty minutesstart here

Before anything else. We want to hear whether the diagnosis in section one matches what you see across your book, whether you have already solved this another way, and which part of this is genuinely useful. If the honest answer is none of it, say so on the call and we will stop.

A free pilot on three of your clients

You choose the accounts. One campaign or flow each, thirty days, split evenly on live traffic against their current page. Scored on revenue per recipient credited to email, which is your metric and not ours. We build all three pages at no cost, so it costs your team briefing time and nothing else.

Partner terms, once a pilot has landed

A partner rate on every store you run, a revenue share on subscriptions you bring, and lead flow back to you from merchants on the platform who need an email team. You keep the retainer and the relationship. Full terms are on the partners page.

One report, published together

"We looked at the landing pages behind 100 email campaigns. Here is where they lose people." We have the data tooling and the conversion team to produce it. You have the client accounts and the audience to send it to. It is the cheapest credible thing either of us can publish this year.

What we would ask of you in return

Honesty about whether the lift is real, on your accounts, in front of your clients. If three pilots come back flat, tell us and tell your network. A negative result published early is worth more to us than a slow year of polite meetings.

7 · The caveats

The parts you would find out anyway.

Two of the numbers on this page are ours

The 9.5% and 37.8% are simple arithmetic on Klaviyo's published averages, so you can check them in a minute. The 2.9% and 4.6% are ours, from our own tests. They are not a Klaviyo benchmark and no independent party has audited them. You were going to discount them anyway, which is precisely why the first real ask is a free pilot on your accounts, scored with your metric. Get your own number and ignore ours.

Post-click is in early access

It is rolling out with a first group of brands rather than generally available, so pilots are scheduled rather than self-serve, and we are still adding composition rules as accounts surface cases we had not planned for. If you need something that has been stable for three years, this is not it yet. If you want influence over what gets built next, now is the useful moment.

Three practical things that catch teams out

Link branding. If the brand uses a branded click-tracking domain, keep it, and put the landing page on a subdomain of the brand's own domain so the destination host matches the sender. A mismatched host is worth avoiding for reasons that have nothing to do with conversion.

Forwarded links. Tokens are time limited on purpose, so a link pasted into a group chat next month resolves to the static page rather than to somebody else's profile. That is correct behaviour, and it means a small share of traffic always sees the control.

Consent. Personalization runs on data the brand already holds and the shopper already consented to when they joined the list. Nothing new is collected at the page, and tracking follows Shopify's customer privacy settings. See data and ownership for how that is handled.

8 · Definitions

Terms used in this letter.

Post-click personalization
Changing the landing page itself for the individual who clicked, using data the sending platform already holds. It is distinct from personalising the email, which is where most programmes stop.
Signed link
A destination URL carrying an opaque, cryptographically signed, time-limited token instead of identifying data. It proves the click came from a specific send to a specific profile without putting anything readable in the URL.
Composition
Assembling a page from a brand's own approved sections according to rules, as opposed to generating copy and layout freely. Composition is why the output cannot invent a claim, a price or a product.
Static control
The page the brand would have shipped anyway. It is both the A/B baseline and the fallback whenever a token is absent or unreadable.
Revenue per recipient
Revenue attributed to a send divided by the people it reached. The pilot metric, because it moves when the page improves and it is already in the agency's monthly report.
9 · Questions

Questions we get asked.

Does the brand have to leave Klaviyo or move its list?

No. Klaviyo stays the sending platform. The list, the segments, the flows, the templates, the sending domain and the deliverability reputation all stay where they are. GemBoss only takes over the destination of the click, which is a URL change in a template and reversible in a minute.

Does this affect deliverability?

Nothing about the send changes: same platform, same sending domain, same authentication, same content. The one thing worth planning is link branding. Keep the existing branded click-tracking domain and put the landing page on a subdomain of the brand's own domain, so the destination host matches the sender.

What data does GemBoss read, and is it read-only?

A read-only private API key scoped to profiles and events. The fields used are lifecycle stage, orders to date, average order value, days since last order, predicted lifetime value and the most recent abandoned-cart signal. No send scope, no list write scope, no template write scope.

Is any personal data exposed in the URL?

No. The URL carries an opaque signed token, never an email address, a name or a raw profile id. It is resolved server side, and it expires, so a forwarded or scraped link cannot be replayed later to read someone's profile.

What happens if the token is missing or expired?

The static control page is served. Degrading to the page the brand would have shipped anyway is the designed failure mode, so a stripped query string, a forwarded link or a slow upstream never produces a broken page.

Who builds the pages, us or you?

You own strategy, segments, offer logic and the client. GemBoss builds and runs the page layer underneath. During a pilot we build the first pages, so your team spends briefing time rather than production hours proving whether the idea works at all.

How is the win measured?

Per recipient, split evenly on live traffic between the composed page and the current static page, with sticky assignment so one person always sees the same version. The headline metric is revenue per recipient credited to email, because it is already the number in your monthly report.

Does it work for SMS as well as email?

Yes. The mechanism is a signed link, so anything that can render a link in a template can carry it, including SMS and push. SMS often gains more, because the message itself is too short to do any qualifying work before the click.

What does the pilot cost?

Nothing. Three of your clients, one campaign or flow each, thirty days, pages built by us, measured on your metric. If the lift is not there, you have a clean negative result on three real accounts and owe nothing.

What do agency commercials look like afterwards?

A partner rate on every store you run, a revenue share on the subscriptions you bring, and lead flow back to you from merchants on the platform who need an email team. Details are on the partners page.

The ask, one more time

Thirty minutes, then your own number.

Your team earns the click. Nine out of ten of those clicks die on a page nobody was ever made responsible for. We would like to be responsible for that page, on three of your accounts, at no cost, measured with the metric you already report.