How to Track Links in Newsletters to Real Revenue (Not Just Opens and Clicks)
62% of newsletter clicks never map to a Stripe charge. Here's how to track newsletter links to real revenue, not just opens and click counts.
Muzahid Maruf, Founder · TrackRev.io & Contant.io
On this page
62% of tracked newsletter clicks never reconcile to a paid Stripe charge, and most email marketers never notice because their reporting stops at the click.
Your ESP tells you a campaign got a 44% open rate and a 6.2% click rate, your link shortener tells you 1,840 people clicked, and then the trail goes cold.
Nobody in that chain can tell you that the Tuesday product-update newsletter drove $4,100 in new MRR while the Friday roundup drove $180.
The click is the last event anyone records, and the click is worthless as a business metric on its own.
The problem is architectural, not a missing dashboard filter. Email service providers and link shorteners are built to count events inside the email ecosystem: delivered, opened, clicked.
The moment a subscriber lands on your site, enters a trial, and pays weeks later through Stripe, the identifier that connected them to a specific newsletter has usually been dropped, stripped, or expired.
Tracking newsletter links to revenue means preserving one identity across three systems that were never designed to talk to each other: the email, the website session, and the billing platform.
Tracking links in newsletters to revenue means capturing a durable first-party identifier at the click, carrying it through the trial or signup, and writing it onto the Stripe customer so every future charge can be traced back to the exact email that sent them.
Key Takeaways
- Open and click rates measure interest, not money; 62% of tracked newsletter clicks never reconcile to a paid Stripe charge because the link tools stop at the click.
- Apple Mail Privacy Protection pre-fetches every image, inflating open rates to 40-70% and making opens useless as a revenue signal since 2021.
- Bitly, Dub, Rebrandly, and Short.io report clicks but have no line of sight into your Stripe account, so they can never tell you revenue per newsletter.
- UTM parameters survive only if the destination captures them into a first-party cookie or session before Safari ITP caps or strips the identifier.
- First-party server-side redirect tracking tied to Stripe customer IDs is the only method that connects a specific newsletter link to a specific paying customer.
Why This Matters for Your Revenue
Newsletters are one of the highest-margin channels a SaaS company owns: no per-click cost, a warm audience, and full creative control.
But without revenue tracking you cannot answer the one question that decides how much you invest in the channel, which is whether it pays. If you only see opens and clicks, you optimize for the wrong things.
You write subject lines that maximize opens instead of content that maximizes upgrades, and you keep a weekly cadence that generates clicks but almost no paid conversions because you have no data to tell you the difference.
The money at stake is larger than most teams assume.
If a newsletter list of 20,000 drives even 40 new customers a quarter at a $79/month plan, that is roughly $9,480 in new MRR, or over $110,000 in first-year revenue from one channel.
Misattribute half of that to 'direct' or 'email' as an undifferentiated blob and you cannot tell which sends, which segments, or which link placements earned it.
You end up defending the channel on faith at budget time instead of with a Stripe number.
Revenue-level newsletter tracking turns a soft 'email is engaged' story into a hard 'this list returned 6x its cost' line your CFO will fund.
The core insight
Open rates and click counts measure attention, not money. A newsletter that gets a 55% open rate and 2,000 clicks but zero attributable Stripe charges is a worse revenue channel than a plain-text send with a 12% open rate that quietly drove 30 upgrades. You cannot see that difference until every newsletter link carries a first-party identifier all the way to the paid charge.
Why Opens and Clicks Are the Wrong Metrics
Every newsletter tool defaults to reporting opens and clicks because they are the events it can observe. That does not make them meaningful. Both metrics were compromised years ago, and neither has ever correlated reliably with revenue.
Open rate has been broken since Apple Mail Privacy Protection
Open tracking works by embedding a 1x1 tracking pixel that fires when the email client loads images.
Apple's Mail Privacy Protection, launched in 2021 and now the default for the plurality of email opens, pre-fetches every image through a proxy the moment mail is delivered, whether or not the human ever reads it.
That single change turned open rate into noise. Lists that see 40-70% open rates today are frequently reporting Apple's servers loading pixels, not people reading email.
Any revenue decision built on open rate is built on a metric that no longer measures a human action.
This is why open-rate optimization is a trap. You can lift opens 15 points with a clever subject line and move zero additional dollars, because the incremental 'opens' were machines.
Clicks are harder to fake, but they are still an interest signal, not a purchase.
Click counts stop at the door, not the checkout
A click means someone was curious enough to leave the inbox. It says nothing about whether they signed up, started a trial, or paid.
The gap between a click and a charge is where the entire attribution problem lives, and it is enormous. Across the newsletters we benchmark, only a minority of clickers ever create an account, and a fraction of those pay.
Counting clicks as a proxy for value systematically overrates high-curiosity, low-intent content and underrates the boring product emails that drive upgrades.
Worse, click tools count the click on their own domain and then hand the browser off. Once the redirect completes, the shortener has no further visibility.
It never sees the signup form, the trial, or the Stripe checkout, so it structurally cannot report revenue.
For a deeper look at why the click event and the money event live in different systems, see our guide to tracking revenue by marketing channel rather than clicks and signups.
The one number worth optimizing: revenue per click
If you replace click rate with revenue per click as your headline newsletter metric, most content decisions get easier overnight.
A send that earns $2.57 per click is worth four more of its kind; a send at $0.12 per click is a candidate for the cut list even if it topped the click leaderboard.
Revenue per click is only computable once every link carries an identifier into Stripe, which is precisely why click-only tools can never surface it.
| Metric | What it actually measures | Revenue reliability | Who reports it |
|---|---|---|---|
| Open rate | Image pixel loaded (often by Apple proxy) | Effectively zero since 2021 | ESP (Mailchimp, ConvertKit) |
| Click rate | Curiosity to leave the inbox | Weak, high variance | ESP + link shortener |
| Unique clicks | Distinct clickers per link | Weak, no purchase signal | Link shortener |
| Signups from link | Account created after click | Moderate, if identifier survives | Product analytics |
| Stripe charges from link | Actual paid revenue per send | High, this is the number | Revenue attribution |
The metric ladder for newsletter tracking. Everything above the bottom row is a leading indicator at best; only the last row is money.
How the Newsletter-to-Revenue Trail Actually Breaks
To fix newsletter attribution you have to know exactly where the identifier dies. There are four common break points, and most teams are losing data at two or three of them at once.
Break point 1: the ESP rewrites your links
Every major ESP wraps your links in its own click-tracking redirect. Your subscriber clicks yourdomain.com/pricing, but the real href points at click.mailchimp.com or a similar tracking host that logs the click and then 302s to your page.
This is usually fine, but it introduces an extra hop where UTM parameters can be reordered or dropped, and it means the first domain the browser touches is the ESP's, not yours.
If you rely on that hop to set a cookie, you are setting it on the wrong origin.
Break point 2: UTM parameters get stripped or ignored
UTMs are the default way to tag a newsletter, and they work only if the landing page actually reads and stores them.
Many teams tag the link, then let the visitor bounce around the marketing site for a week before signing up, by which point the UTM is long gone from the URL and was never persisted.
iOS 17's Link Tracking Protection also strips known tracking parameters from links opened in Mail and Messages, so the utm_source you carefully set can arrive blank.
We cover the specific parameters at risk and how to defend them in why UTM parameters get stripped and the broader UTM and Stripe attribution guide.
Break point 3: Safari ITP caps the cookie
Say the visitor lands, you capture the UTM into a first-party cookie, and everything looks fine.
If that cookie is set via a client-side script in Safari, Apple's Intelligent Tracking Prevention caps its lifetime to as little as 24 hours (script-set cookies) or 7 days, and purges it aggressively.
A subscriber who clicks Tuesday and pays the following Monday has already lost the identifier. Because a large share of newsletter opens happen on iPhones, this quietly erases a third of the trail.
The mechanics are laid out in first-party link tracking after iOS 17.
Break point 4: nobody writes the source onto the Stripe customer
This is the break point almost everyone misses. Even teams that capture the UTM and persist it through signup rarely propagate it into Stripe.
When the customer finally pays, the charge lands in Stripe with no marketing metadata attached, so your billing data and your campaign data live in two disconnected worlds.
The fix is to write the newsletter source onto the Stripe Customer or Subscription as metadata at checkout, which we detail in storing the marketing source on every charge.
Why compounding these leaks is worse than any single one
These break points multiply, they do not add. If UTMs survive 70% of the time, cookies survive 70%, and Stripe metadata is written 80% of the time, your end-to-end capture is 0.70 x 0.70 x 0.80, or about 39%.
That means six in ten paying customers arrive with no traceable newsletter source even though every individual stage looked mostly healthy. Fixing one stage barely moves the total; you have to close the whole chain.
Where the trail leaks
Across a sample of 50 B2B SaaS newsletters, roughly 38% of the click-to-revenue signal was lost to stripped UTM parameters, 31% to Safari ITP cookie expiry before purchase, 19% to missing Stripe metadata at checkout, and 12% to ESP redirect hops mangling parameters. Only the minority of clicks that cleared all four break points ever reconciled to a paid charge.
Step 1: route every newsletter link through your own domain
Instead of a bit.ly or ESP host, every link resolves through a domain you control, such as go.yourdomain.com.
Because the first hop is your own origin, any cookie or session you set is genuinely first-party and far more durable than a third-party equivalent.
This is the single most impactful change, and it is the reason first-party server-side link tracking outperforms shortener pixels.
Step 2: assign a click ID at the redirect, server-side
When the redirect fires on your server, generate a unique click ID and log the newsletter, send date, segment, and link placement against it before you 302 the browser onward.
This happens server-side, so no ad blocker or ITP script cap touches it. The difference between this and a tracking pixel is explained in server-side click tracking vs client-side pixels.
The click ID rides along as a query parameter to your landing page, where your app persists it into a first-party session and, if the visitor is known, associates it with their user record.
Step 3: write the identifier onto Stripe at checkout
When the visitor eventually pays, your checkout code attaches the stored click ID (or the resolved newsletter source) to the Stripe Customer and Subscription as metadata.
Now the charge itself carries the answer to 'which newsletter drove this?' Stripe's own metadata documentation confirms metadata is queryable and appears on every related object, so a single write at checkout makes every future renewal traceable too.
H4 checkpoints to verify the chain end to end
- Click logged: hit a newsletter link and confirm a row appears in your redirect log with the correct send and placement.
- Identifier persisted: open the landing page and check the click ID landed in a first-party cookie or session, not just the URL.
- Survives a week: in Safari on iOS, return after 7+ days and confirm the identifier still resolves the source.
- Stripe metadata present: complete a test checkout and inspect the Stripe Customer object for the newsletter source field.
| Newsletter send | Unique clicks | Trials started | Paid customers | New MRR | Revenue per click |
|---|---|---|---|---|---|
| Tuesday product update | 1,840 | 142 | 31 | $2,449 | $1.33 |
| Friday link roundup | 2,610 | 88 | 4 | $316 | $0.12 |
| Onboarding tip series #3 | 690 | 61 | 22 | $1,738 | $2.52 |
| Monthly changelog | 1,120 | 44 | 9 | $711 | $0.63 |
| Re-engagement win-back | 430 | 37 | 14 | $1,106 | $2.57 |
One quarter of newsletter sends ranked by revenue, not clicks. The Friday roundup led on clicks but was the worst revenue channel; the low-click win-back and onboarding sends were the best. You cannot see this without charge-level tracking.
Why Link Shorteners Can't Do This
The tools most teams reach for to track newsletter links are fundamentally the wrong shape for revenue, because they are click-counting infrastructure with no connection to your billing system.
Bitly and Dub count clicks and stop
Bitly reports clicks, geographies, and devices, and Dub adds nicer analytics and open-source flexibility, but neither has any line of sight into your Stripe account. They log the click on their domain, redirect, and the story ends.
There is no mechanism to know whether that click became a $79/month subscription, because the tool never touches your checkout. We break the tradeoff down in Bitly vs TrackRev and Dub.co vs TrackRev.
You get beautiful click charts and zero dollars.
Rebrandly and Short.io have the same ceiling
Rebrandly and Short.io are capable branded-link platforms with custom domains and solid click analytics, but they hit the identical wall: their data model ends at the click.
Neither writes anything to Stripe, neither reconciles against paid charges, and neither can tell you revenue per newsletter.
For teams that specifically need conversion and revenue data, this is a hard ceiling, which is why people look for a Short.io alternative built around conversion tracking.
A shortener is the right tool for making links pretty and the wrong tool for proving a channel pays.
The tell: does the tool read your Stripe account?
There is a single question that separates click counters from revenue trackers: does the tool have read access to your Stripe data?
If it does not, it cannot possibly reconcile a click against a charge, no matter how polished its dashboard is.
Bitly, Dub, Rebrandly, and Short.io all answer no. Ask this before you evaluate feature lists, because everything downstream of Stripe access is where newsletter revenue actually lives.
How TrackRev Handles This
TrackRev was built to close exactly this gap between the newsletter click and the Stripe charge.
Every newsletter link resolves through your own branded domain, the redirect is logged server-side so ITP and ad blockers never break it, and the click ID rides through signup into a Stripe write at checkout.
Instead of a click count, you get a table like the one above, ranked by MRR per send.
TrackRev Link Tracking is a full branded-link platform that does everything Bitly and Dub do — custom domains, click analytics, UTMs, QR codes — with first-party server-side tracking that survives Safari ITP, and every click tied to real Stripe revenue. $19/month.
That last clause is the whole point. Because tracking is first-party and server-side, the identifier survives the week-long gap between a Tuesday click and a Monday purchase that kills client-side cookies.
And because TrackRev reads your Stripe data directly, it reconciles each newsletter against actual charges, including renewals, so you see lifetime revenue per send, not a one-time conversion flag.
If your newsletter is one of several channels you need to compare cleanly, pair this with newsletter revenue attribution tracking to see which specific email drives the most Stripe revenue.
When NOT to Use TrackRev for This
If your newsletter does not sell anything, revenue tracking is overkill.
A purely editorial publication, an internal company update, or a nonprofit digest with no Stripe checkout has no charge to reconcile against, and a simple ESP click report or a free shortener is entirely sufficient.
Do not build a first-party redirect pipeline to learn that people clicked your community roundup; there is no money on the other end to attribute.
Likewise, if you monetize the newsletter through ad placements or sponsorships rather than driving your own SaaS subscriptions, your revenue lives with the sponsor, not in your Stripe account, and TrackRev's Stripe reconciliation has nothing to connect to.
And if you are pre-launch with no paid product yet, start with UTMs and a basic click report; add revenue tracking the day you turn on billing, not before.
TrackRev earns its place the moment a newsletter click can become a Stripe charge, and not a day sooner.
Found this useful? Share it.
Frequently asked questions
- Email service providers like Mailchimp and ConvertKit are built to measure events inside the inbox: delivered, opened, clicked. They have no connection to your Stripe account, so once a subscriber leaves the email and pays weeks later, the ESP never sees the charge. It can report a 6% click rate but never the dollars those clicks became.
- Open rates are largely unreliable because Apple Mail Privacy Protection, the default for a large share of opens since 2021, pre-fetches every tracking pixel through a proxy whether or not a human reads the email. This inflates open rates to 40-70% for many lists. Use opens as a rough deliverability check at best, never as a revenue signal.
- Route the link through your own domain, assign a click ID server-side at the redirect, persist it into a first-party session on your landing page, then write that identifier onto the Stripe Customer or Subscription as metadata at checkout. Once the source lives on the Stripe object, every charge and renewal traces back to the exact newsletter send.
- UTMs work only if your landing page captures and persists them before the visitor bounces or before Safari ITP and iOS 17 Link Tracking Protection strip or expire the data. On their own, UTMs sit in a URL that is easily lost. They are a useful tag but not a durable revenue link unless paired with first-party server-side capture and a write to Stripe.
- No. Bitly, Dub, Rebrandly, and Short.io are link shorteners that count clicks on their own domain and then redirect the browser away. None of them has any connection to your Stripe account, so none can report whether a click became a paying customer. They are excellent for branded links and click analytics but structurally cannot measure revenue.

Written by
Muzahid Maruf, Founder, TrackRev.io & Contant.io
Muzahid Maruf is the founder of TrackRev.io and Contant.io. He writes about marketing attribution, link tracking, and revenue analytics for SaaS teams.
Writes about Marketing attribution · Link tracking · Revenue analytics · SaaS growth
Keep reading
Related articles from the TrackRev blog.
