The Amazon Affiliate Tracking ID Mistake That Broke Every Link on My Site

My Amazon affiliate links were broken for months and every single one of them looked perfectly fine. Twenty-eight products, all linking to Amazon, all with a tracking tag attached. Clicks were going out. Nothing was coming back, and nothing on the page gave any indication why.
The tag was close enough to look right and different enough to earn nothing. Not missing — wrong. And the way I nearly “confirmed” the wrong one is the part worth writing down, because it would have looked like a fix and quietly changed nothing.
Why this failure is invisible
An Amazon affiliate link with no tag still works. It opens the product page, the customer buys, everyone is happy except you. There is no error, no warning, no broken image, no red text. The link is not malformed — it is simply not yours.
A link with the wrong tag is worse, because it passes every check you are likely to run. You look at the URL, you see tag=something-20, and your brain files it as correct. Amazon does not reject it. It attributes the sale to a tracking ID that either belongs to nobody or belongs to another account entirely.
The only place this shows up is your Associates earnings, which for a new site is a small number sitting next to other small numbers. If you are not yet expecting revenue, you will not notice the absence of it. That is exactly what happened here.
The uncomfortable part: I only found this because I went looking for something else. If I had not been auditing the links for a completely different reason, this would still be broken, and I would still have no reason to suspect it.
The near miss
Once I knew the tag was missing, the obvious move was to find the correct one. I searched the site’s own database for anything that looked like an Associates tracking ID, and found one: hnsolutions-20.
It appeared five times. It matched the brand exactly. It had the correct -20 suffix that US Associates tags use. Everything about it said this is your tag, and I was one step away from writing it into all twenty-eight links and calling the job done.
Instead I checked it against the only source that actually knows: a real affiliate short link generated from the Associates account itself. Resolving that link gave the truth.
The real tag was thehnsolution-20. Singular, and with the the on the front. Solution, not solutions.
Two tags a glance apart, and the wrong one was sitting in my own database looking authoritative. Had I trusted it, every product page would have carried a tag that looked right in the URL bar, passed every visual check I could do, and earned exactly nothing — for as long as it took me to notice, which given the first failure had run for months could have been a very long time.
How to actually verify your tag
Do not trust your database. Do not trust an old post. Do not trust what you remember typing.
Get a link from Amazon itself. Log into Associates, use SiteStripe on any product, generate a short link, then open it and read the URL you land on. The tag= parameter in the resolved URL is your real tracking ID. That is the only check that cannot lie to you, because it came from the account that will be paying you.
Then compare it character by character against what your site is actually outputting — not against what you think it should be. Singular and plural, hyphens, and the numeric suffix are all easy to get subtly wrong and impossible to spot by glancing.
The second problem: a button that ignored my code
Fixing the tag was not the end of it. I had written a filter that added rel="sponsored" to outgoing Amazon links — required by both the FTC and Amazon’s own terms, and also just correct.
It hooked the_content, which covers links inside post and page content. It worked, and I checked it, and it was still incomplete.
My theme draws its own “buy” button on product listing cards, building the anchor itself rather than passing it through post content. Those buttons never went near my filter. Every product card on the shop page was linking out with no rel attribute at all, and I only found it by viewing the rendered HTML of the archive rather than a single product page.
The fix needed two more hooks — one on WooCommerce’s loop button, and a scoped output filter on the archive itself. The lesson generalises: a filter on the_content only sees content. Anything your theme or plugins render directly is invisible to it, and product archives are exactly where that bites.
The third problem: two products, one link
While auditing, I found a laptop product page whose “buy” button went to a pair of headphones.
Two entries had been created with the same ASIN — the product identifier in an Amazon URL. One was correct, one was a copy-paste that never got updated. Anyone clicking through to buy the laptop landed on Audio-Technica studio monitors.
That is worse than losing commission. Sending a buyer to the wrong product is the kind of thing that makes people distrust a site permanently, and it is completely invisible from the admin screen — both entries had different titles, different images and different descriptions. Only the destination was wrong.
I now treat the ASIN as the thing to check, not the title. If two products share one, at least one of them is broken.
What about prices?
Worth stating because it catches people who are trying to do the right thing. You cannot publish Amazon prices on your own site unless you are pulling them from Amazon’s API and refreshing them within 24 hours. Static prices, screenshots of prices, or “was £X” claims are all outside the Operating Agreement.
This has a consequence most people do not anticipate: it makes valid Product structured data impossible for affiliate products, because Google requires an offer and an offer requires a price. My site audit flagged 33 invalid structured data items for exactly this reason. The correct fix is to remove the product schema rather than invent a price, and trade an audit error for a policy violation.
Worth doing today
- Resolve a real SiteStripe short link and read the tag from it
- Compare it character by character with what your site outputs
- View a product archive, not just a product page
- Check for duplicate ASINs across your catalogue
- Confirm rel=”sponsored” is on every outbound link, including theme buttons
What not to rely on
- A tag stored in your own database
- A tag you remember setting up
- “The link looks right” as evidence
- A filter on the_content covering everything
- Product titles matching their destinations
The audit I now run
Four checks, none of which take long once you know to do them.
One. Resolve a fresh short link from Associates and treat that tag as the only truth.
Two. Pull every outbound Amazon URL your site renders — from archives as well as single pages — and confirm each carries that exact tag.
Three. Extract the ASIN from each link and look for duplicates. Any repeat is a mistake until proven otherwise.
Four. Confirm rel includes sponsored on all of them, including anything your theme renders itself.
And then the part I cannot do from a script: click a link, buy something small, and confirm it appears in your Associates reporting. Every check above verifies that the link is shaped correctly. Only a real click confirms attribution actually reaches your account.
Related reading
If you are setting up affiliate links for the first time, start with how affiliate marketing actually works. For programmes beyond Amazon, see affiliate programmes that pay daily.
Frequently asked questions
How do I find my real Associates tracking ID?
tag= parameter on the page you land on. Do not take it from your own site, your notes or your memory — those are the things that can be wrong.Will Amazon tell me if my tag is wrong?
Why did my rel=”sponsored” filter miss some links?
the_content, which only sees post and page content. Buttons rendered by your theme or by WooCommerce loops never pass through it. Check a product archive rather than a single product page and you will see the gap.Is rel=”sponsored” or rel=”nofollow” required?
Can I show Amazon prices if I update them manually?
How often should I run this audit?
The short version
A broken affiliate link looks exactly like a working one, so nothing on your site will ever tell you. Get your tracking ID from a resolved SiteStripe link rather than from your own records, check archives as well as single pages, look for duplicate ASINs, and then confirm a real click lands in your Associates reporting. I found mine wrong by a single letter, and the plausible-looking wrong tag sitting in my own database was very nearly the fix I shipped.
How this article was made
Everything here happened on this site during August 2026 while auditing 28 WooCommerce external products. The tracking ID discrepancy, the theme button bypassing the content filter, the two products sharing one ASIN and the 33 invalid structured data items are all from that audit. I have not verified how quickly Amazon reports a click, and I would encourage you to confirm attribution with a real purchase rather than taking any link audit — including this one — as proof that money is reaching your account.