Back to Blog
Marketing 2026-04-25 · 8 min read

Track Amazon Affiliate Clicks Without Google Analytics

GA4 misses 30-50% of affiliate clicks because browsers cancel pending requests on navigation. Here's a privacy-first sendBeacon alternative.

Most affiliate site owners I've talked to have a vague sense that their click numbers don't quite match their commission numbers. They check Google Analytics, see "outbound link clicks" tracked, and trust the numbers as the rough truth. The numbers are wrong by a wider margin than most people realize — somewhere between 30% and 50% of outbound clicks never get recorded by GA4 in a typical configuration.

The reason is mechanical, not a configuration error. It's how browsers handle pending HTTP requests when the user navigates away. And once you understand it, you stop trusting GA4 for any kind of outbound-click optimization decision and you switch to something that actually fires reliably.

This post is about why GA4 misses so many clicks, what attribution actually matters for an affiliate site, and how I track affiliate clicks on my own sites with a privacy-first approach that doesn't require GA4 at all.

Why GA4 Misses Half Your Affiliate Clicks

When a reader clicks an affiliate link in your post, several things happen in rapid succession:

  • The browser starts navigating to the affiliate URL.
  • Your `gtag('event', 'click', ...)` JavaScript fires.
  • The gtag call enqueues an HTTP request to Google's analytics endpoint.
  • The browser cancels all pending in-flight HTTP requests because it's leaving the page.
  • The reader arrives at Amazon. The analytics request was canceled before it sent.

That last bit is the killer. GA4's standard click tracking uses regular `fetch` or `XMLHttpRequest` calls, both of which get canceled when the page unloads. Click events on links to the same site usually survive (the request completes before navigation starts), but cross-origin clicks — every affiliate link, by definition — are racing the navigation. Most of them lose.

GA4's "enhanced measurement" of outbound clicks uses the same mechanism, just with auto-instrumentation. It doesn't fix the underlying problem. Google's own documentation acknowledges that outbound click tracking is "best effort" and "may not always succeed," which is corporate speak for "we lose a lot of these and we know it."

On top of that, you have:

  • Cookie blockers and ad blockers that block GA4 entirely. Conservative estimates put this at 25-40% of users on technical-audience sites, lower on broader audiences but still meaningful.
  • Safari ITP, which restricts cross-domain tracking and limits the persistence of GA4 cookies. The visitor is counted, but linking the click to the original session attribution is unreliable.
  • iOS in-app browsers (Instagram, Facebook, TikTok in-app webviews) that handle navigation differently from full Safari. Tracking behavior in these contexts is inconsistent.

Stack all of this and you get the 30-50% loss rate. On Acuario Pets, when I compared GA4 outbound clicks against my own sendBeacon-based tracking on the same date range, GA4 captured roughly 55% of the clicks. The other 45% were ghosts.

The Fix: sendBeacon

The browser API that solves this is `navigator.sendBeacon`. It exists specifically for the use case of "fire a small HTTP request that needs to land even if the page is unloading." The browser queues the request at the OS level, lets the navigation happen, and sends the request in the background. It always sends. The browser can't cancel a beacon by navigating away.

Combined with firing on `mousedown` instead of `click` (which gives an extra few hundred milliseconds of headroom before the browser actually starts navigating), `sendBeacon` is the reliable way to track outbound clicks. Modern browsers all support it. There's no significant performance cost — beacon payloads are small and the browser handles the queuing efficiently.

The trade-off is that `sendBeacon` is fire-and-forget. You don't get a response, you don't know if the request succeeded server-side, you can't transform the data based on the response. For analytics, that's exactly what you want.

What Attribution Actually Matters for Affiliate Sites

GA4's outbound click event records the URL clicked and that's basically it. For affiliate optimization, you need more dimensions. The ones that have been useful on my sites:

  • Post ID — which article the click came from. Useful for identifying your top-converting posts and prioritizing them for content updates.
  • ASIN — which specific Amazon product. Useful for identifying winners and losers across multiple posts that link to the same product.
  • Source module — was this click from a Product Block, an inline Keyword Linker auto-injection, a comparison table, or a hand-placed CTA button? Different placements convert at very different rates.
  • CTA text — the actual link text. "Check Price on Amazon" might convert at 3% while "Shop on Amazon" converts at 5% on the same audience. You can't optimize what you can't measure.
  • Country — where the visitor was located. Critical if you use per-marketplace tags (a US visitor clicking your UK-tagged link doesn't earn you a commission).
  • Timestamp — for cohort analysis and seasonal trend tracking.

GA4 can be configured to capture some of these via custom dimensions, but the configuration is brittle and the data still rides on the same lossy outbound-click pipeline. You'd be over-engineering a bad data source.

The Privacy Side

If you're tracking outbound clicks well, you also want to be tracking them in a way that doesn't create new GDPR/privacy compliance overhead. The good news: outbound click attribution doesn't require any personally identifying data.

The Click Analytics module in Affiliate Buffet stores nothing personally identifying — no IP addresses, no cookies, no fingerprints. The country attribution comes from Cloudflare's `CF-IPCountry` header (an anonymous geo lookup that doesn't store the IP), and everything else is anonymous metadata about the click itself. There's no consent banner required for this, in any jurisdiction I'm aware of, because there's no personal data to consent to.

That contrasts with GA4, which sets cookies, fingerprints visitors with a Client ID, and stores enough data that GDPR consent banners are mandatory in EU jurisdictions and increasingly elsewhere.

What Affiliate Buffet's Click Analytics Looks Like in Practice

The dashboard groups clicks four ways:

  • Top posts by clicks — which articles drive the most outbound traffic. Lets you identify your high-traffic affiliate posts at a glance.
  • Top ASINs by clicks — which specific products are most clicked. Surface the products worth maintaining manually (live price snapshots, image refresh) and the ones to consider swapping out.
  • Top CTAs by clicks — which link text and CTA configurations perform best. The data quickly reveals that "Check Latest Price" outperforms "Buy Now" on most niches, for example.
  • Top countries by clicks — where your audience is geographically. Essential if you're using per-marketplace tags or considering OneLink alternatives.

A real example from Acuario Pets: I had a post about UVB bulbs that GA4 said was getting around 40 outbound clicks/week. The Click Analytics module showed it was actually getting 87 — more than double. More importantly, it broke down which of the three Product Blocks in that post was getting the clicks (one of them got 70% of them), which CTA text performed best, and which country the clicks came from. With that data, I rebuilt the post around the winning Product Block placement and the click-through rate on the page went up another 30%.

You couldn't do that analysis in GA4. The data isn't there.

CSV Export for Spreadsheet-Driven Optimization

The Pro tier of Affiliate Buffet adds CSV export of the click data. The dashboard is good for a quick read, but for serious optimization work you want the raw data in a spreadsheet.

The export gives you one row per click with all the dimensions — post ID, ASIN, source module, CTA text, country, timestamp. From there you can build your own pivot tables: clicks per post per month, clicks per ASIN per source, click rate per CTA variant. This is what the analytics-savvy affiliate marketers I know actually use day-to-day. The dashboard is the entry point; the CSV is where the real work happens.

What About Conversion Tracking?

Click tracking only tells you half the story. The other half is whether the click converted into a sale. Amazon Associates doesn't expose per-click conversion data publicly — you can see your aggregate sales by ASIN in the Associates dashboard, but you can't directly tie a specific click to a specific sale.

The pragmatic approach: combine click data (from Affiliate Buffet's dashboard) with sales data (from your Associates Reports), both filtered to the same date range, and look at the click-to-sale ratio per ASIN. Products with high clicks and low sales are either too expensive, the wrong fit, or stocked out. Products with low clicks and high sales are converting well and deserve more visibility.

This is the kind of analysis the FTC-compliant disclosure work in my disclosure post and the five-module toolkit overview are pointing toward. Each piece on its own is mundane plumbing. Together they let you actually optimize.

Setting Up Click Tracking

On Affiliate Buffet, click tracking is on by default in the free plugin. There's nothing to configure — install the plugin, and clicks on Amazon links start being tracked immediately. The dashboard lives under the plugin's admin menu.

If you're not using Affiliate Buffet but you want similar tracking, the pattern is straightforward to implement: a small JavaScript snippet that listens for `mousedown` on outbound affiliate links, builds a metadata payload, and fires `navigator.sendBeacon` to a custom endpoint. The data shape and storage choices are up to you. The mechanical reliability of `sendBeacon` is the part that matters.

The Bigger Picture

GA4 wasn't designed for the kind of granular outbound-click attribution that affiliate sites need. It's a competent first-party analytics tool, less competent at outbound tracking, and not really built for affiliate optimization at all. Stop using it for that and switch to a tool built for the job.

The Click Analytics dashboard in Affiliate Buffet is the one I built for my own use, and it's free in the plugin. For the broader context on the Amazon-affiliate toolkit, see the overview post. And if PA-API is on your radar, the migration post is the highest-priority piece this quarter.