Sponsy
← Back to blog

How to track which newsletter links drive the most revenue

Clicks alone don't show which links earn. Here's how to track revenue from sponsor, affiliate and product links in your newsletter, step by step.

Nov 10, 2026
Explore with AI

To track which newsletter links drive revenue, give each placement its own tracked URL. Tag the URL so you can find it in your checkout, affiliate dashboard, or sponsor’s report. Then divide the revenue credited to that placement by its unique clicks, using bot-filtered counts when you have them.

Start with one row per placement. The tracker below gives you a place to put the clicks, the money, and where each number came from.

What to take away

  • Give the top button and the footer link different IDs, even if they lead to the same page.
  • Count your sponsor fee, affiliate commission, and product sales as separate sources of publisher revenue. Keep the sponsor’s sales in a separate column.
  • Compare revenue per unique click after the reporting window closes.
  • In Sponsy’s sample of 388 placements with clicks, the median sponsor link click rate was 0.124%, with the middle half between 0.047% and 0.304%.

Last updated November 10, 2026.

An affiliate link to a free tool might draw 400 clickers and earn $40. A link to your paid research might draw 40 clickers and earn $240. The clicks report puts the free tool first. The earnings tell you where to look if you want to sell more research.

Your email platform records clicks. Your checkout, affiliate dashboard, or deal records the money. A campaign tag, code, or link ID lets you match the totals.

A tracking sheet you can copy

Here’s a sample row for a fictional affiliate placement. Add columns for the click source, revenue source, and any advertiser outcomes.

IssuePlacementLink IDUnique clicksPublisher revenueEarnings per clickCutoff
Nov 10Mid-issue affiliate offer20261110Mid420$84$0.20Nov 24

Copy the headers into your own sheet. Divide publisher revenue by unique clicks to fill the Earnings per click column.

The first thing to write beside each link is who pays you and what triggers the payment. That tells you where to look for revenue and what to compare.

Link typeHow it pays youWhere the money is recordedWhat to track
Sponsor linkFlat placement fee, payment per result, or bothYour deal or invoice for the fee; the advertiser for its sales and leadsSlot ID, sponsor-approved UTMs, and any agreed code or conversion report
Affiliate linkCommission on eligible orders or actionsAffiliate network or merchant dashboardNetwork tracking link with a sub ID for the issue and placement
Your product or paid tierPurchases or paid upgradesYour checkout, storefront, or subscription platformUTMs carried through to purchase, a checkout campaign ID, or a dedicated code

A flat-fee sponsorship earns its fee when the ad runs. If a $1,200 package covers three equivalent issues, record $1,200 once at the package level or allocate $400 to each issue. For a deal that pays per qualified lead, add the fee once the sponsor confirms the count.

Use a different URL for each placement you want to measure separately. If both the sponsor button and the text link below it go to the same landing page, give them distinct utm_content values or link IDs. Otherwise, a platform that groups clicks by URL can combine them into one line.

Start with the link report you already have. In beehiiv, open the sent issue’s post analytics and use the email view to find its links. In Kit, open a sent Broadcast and go to Clicks to see the links and how many subscribers clicked each one. Use the same report for each issue so you don’t accidentally compare web archive clicks with email-only clicks.

Total clicks include repeats. Unique clicks count distinct clickers for that link. One reader who clicks three times gives you one unique click and three total clicks. When you need a count for the whole ad, use a report that deduplicates across its links.

Use labels you’ll recognize next month, like “Nov 10 / main sponsor / top button.” Give a resend or a second edition its own ID.

Say your top button and footer link both point to the same guide. In your next issue, give the button utm_content=2026-11-10-top-button and the footer utm_content=2026-11-10-footer. After sending, look for two rows in the email link report. You’ll be able to see whether the footer draws clicks of its own.

Step 2: Add UTM parameters with a naming system

Use UTMs to tell the destination where a visit came from, which campaign it belonged to, and which placement sent it. You can build the URL by hand or use Google’s campaign URL guidance. Here’s a scheme you can copy:

ParameterWhat it tells youExample
utm_sourceThe newsletter or editionweekday-brief
utm_mediumThe channelemail
utm_campaignThe campaign or issue you want to groupfall-guide-2026
utm_contentThe placement or creative within that campaign2026-11-10-top-button

Use the same source for the same edition and keep names lowercase. Add the issue date to utm_content if one campaign runs across several issues. Keep subscriber names and emails out of UTMs.

Ask the sponsor for their naming convention before changing a URL they supplied. Keep your own slot ID on your side. In Sponsy, save recurring naming rules in the publication URL builder.

Click the link from a mobile email preview. Check that redirects preserve the tags and that you can still complete the signup or purchase.

For your own product, place a test order and check that the placement appears in the order record or analytics report. For a sponsor, send the test URL to the person who’ll pull the results. Have them look for the campaign value in the report they plan to use. A working landing page tells you only that the link opened.

Step 3: Connect clicks to revenue

Match each link to the record where the money actually lands. UTMs can identify a visit. You still need an order, a commission, or a fee to know what you earned.

Your own products and paid subscriptions

Use the campaign and placement to connect the visit to checkout. In GA4, record a purchase event with a transaction ID, value, and currency. Check the attributed sales against your checkout records after refunds. If the checkout is on another domain, test that the campaign survives the handoff.

For a paid tier, start with first payments credited to the issue. If you’re working from a checkout export, a dedicated promo code can identify orders placed with that code.

For example, if five readers use your issue’s code to buy a $40 guide and one gets a refund, put $160 in the revenue column. Label the source “checkout orders using the issue code.” That wording tells your team exactly which sales the figure covers.

Give each placement a sub ID in the affiliate network’s tracking link. A value like 20261110Mid tells you where the commission came from when you promote the same offer next week. Here’s how Impact handles Sub IDs.

Export approved commissions by sub ID. A $200 order at 10% commission earns you $20. Keep pending commissions separate until the network approves them.

Record the sponsorship fee from your deal or invoice. Ask the advertiser for outcomes tied to the agreed link, promo code, or landing page. If you use both a tagged link and a code, ask them to count each order once. If they can share qualified trials but keep sales figures private, put trials in the advertiser results column.

Step 4: Filter out bot clicks

Use bot-filtered unique clicks when your email platform or link tracker supports them. Mail security scanners can open links to check where they lead before a reader ever sees the issue. A burst of clicks right after delivery, or a single recipient apparently clicking every link in seconds, can be a sign of a scan. A fast click on its own can still be real.

In its 2026 analysis of more than 105 million newsletter link clicks, GlueLetter classified 56% of the click events as artificial. That was its dataset from January through May, using its own and some email platforms’ filters. Your mix of readers and email providers can produce a very different result. Don’t subtract 56% from your own numbers.

In beehiiv, use Verified Clicks where the report offers them. In Kit, you can enable bot click filtering in Settings → Advanced → Bot filtering. The Kit change applies to future activity.

If your report only has raw unique clicks, label them as unfiltered and note when you switch methods. Otherwise, the first cleaner report can look like a drop in readership.

Revenue per click, also called earnings per click (EPC) = publisher revenue credited to the placement ÷ unique clicks on the placement. Use one currency and a consistent click definition.

Here’s a hypothetical issue with three links:

PlacementUnique clicks, bot-filteredPublisher revenueEarnings per click
Flat-fee sponsor180$300 placement fee$1.67 in fee per click
Affiliate offer420$84 approved commission$0.20
Your paid guide60$480 in sales after refunds$8.00

The paid guide earned the most with the fewest clicks. Give it a second run and see if the result holds. Try the same position in a similar issue so you can learn whether the offer keeps earning at that level.

The sponsor’s $1.67 spreads a fixed placement fee across the clicks the ad received. For a renewal conversation, use the click count and the advertiser’s results. For your own planning, use the fee to see what that placement contributed to the issue.

To compare issues, divide issue revenue by emails sent. Multiply by 1,000 to get revenue per 1,000 sends (RPM). This issue earned $864 from 10,000 sends: $0.0864 per send, or $86.40 RPM.

In Sponsy’s metrics dashboard, revenue per unique click and revenue per send are called Unique Click Revenue and Send Revenue. Both use total slot revenue.

Across 388 newsletter ad placements in Sponsy, the median sponsor link click rate was 0.124%. That’s about 1.2 unique clicks per 1,000 email recipients. The middle half of placements fell between 0.047% and 0.304% (the 25th and 75th percentiles).

We looked at placements from 18 workspaces between August and October 2026. Each was tied to a sponsorship deal, had automatically synced metrics and one recorded link, and had at least one click. We divided reported unique clicks by reported email recipients for each placement. Leaving out placements with zero clicks pushes the median up. Click filtering can also vary by email platform.

Before the issue goes out, confirm the final link or code, the action you’ll count, the reporting window, and what the advertiser can share. Ask in the same thread as creative approval: “We’ll send unique clicks after three days. Can you share qualified trials tied to this campaign after 14 days?”

In a hypothetical example from Sponsy’s After the Signup study, 120 people clicked an ad, 100 had usable profiles, and 72 were founders or sales leaders. That’s 72% of profiled clickers, with 83% profile coverage.

In Sponsy ad reports, Campaign Insights shows tracked clicks and the roles or industries of people whose profiles match. Advertisers can send counts of actions such as trial signups or sales through conversion tracking in private beta. The advertiser holds the sales amounts and final revenue figures.

If you send the click report on Friday and the trial count arrives the following week, keep the same issue and placement label in both. That way, when sales asks how the campaign did at renewal, they can see which numbers came from you and which came from the advertiser.

What to put in a sponsor report

A sponsor report should let someone check what ran, who responded, and which results came from their own systems. Keep the first report short enough to read in an email:

  • What ran: publication, issue date, placement, and the creative or destination link.
  • Engagement: placement-specific unique clicks, what you filtered, and the measurement cutoff. If you include a click rate, label its denominator.
  • Audience: aggregate role or industry breakdown where you have it, plus the number of clickers with usable profiles.
  • Advertiser results: the agreed leads, trials, or sales the sponsor shared, with the reporting window. Say when results are pending or unavailable.

If the sponsor bought multiple placements, give them a line for each issue. Keep counts of sponsor-reported purchases separate from clicks and leads, and explain any change in counting between reports. Sponsy’s free Newsletter Ad Report Generator can pull the email metrics from a supported platform into a report you can share.

Start with the tools that already record your clicks and payments. An extra link tracker is useful if it solves a specific problem, such as keeping click reports consistent across two email platforms.

JobWhere to lookWhat to pull out
Email clicks by linkbeehiiv, Kit, or your email platform’s sent-issue reportUnique clicks, issue and URL, filter setting
Visits and product salesGA4 or Plausible, plus your checkoutCampaign and placement tags, completed orders, refunds
Clicks across different channelsDub or BitlyA separate ID per placement; email clicks isolated from other channels
Affiliate earningsImpact or your affiliate networkApproved commissions by sub ID and date
Sponsor reportingSponsy, or a sheet plus the advertiser’s reportPlacement clicks, matched audience breakdown where available, and the outcomes the sponsor shares

If you use a shortener, test that the redirect preserves the tags and check that your affiliate program allows wrapped links.

Tracking mistakes to avoid

Most discrepancies come down to scope, definitions, or timing. Check these before spending an afternoon trying to make two dashboards agree:

  • Using issue-wide clicks in a sponsor report. Pull the numbers for that sponsor’s link or placement. Someone clicking your editorial story didn’t click the ad.
  • Mixing total and unique counts. Both can be useful. Use one definition per comparison and label it on the report.
  • Changing UTM names halfway through a campaign. Save a short naming guide and use it before every send. Don’t overwrite tags the advertiser needs.
  • Reporting too soon. Mark the first report as preliminary if clicks are still coming in or commissions are pending. Confirm final results at the agreed cutoff.
  • Treating unattributed sales as zero. Leave an unknown blank. A missing match can mean the buyer switched devices, the redirect dropped a tag, or the sponsor didn’t share the figure.

Start with your next issue

Pick one link that earns money and track it through to the record where the revenue lands:

  1. Give the placement a distinct ID and test the link.
  2. Write down where the money is recorded and when you can confirm it.
  3. Pull unique clicks using the same filter and window as your other links.
  4. Record the revenue and divide it by the clicks. Leave it blank if you can’t verify the amount.

If you’re doing this for sponsors every week, try Sponsy to track placements and report ad performance. To learn more about the people behind those clicks, see what publishers ask in a newsletter welcome survey.

Streamline your AdOps today.

Optimize your ad inventory, automate reporting, analyze performance, and delight your advertisers with a single easy-to-use platform.