15% off your first purchase with code WELCOME15, up to 25 GB.

See pricing

Ad verification · Affiliate link monitoring

Affiliate link monitoring, per country and per hop

Affiliate link monitoring follows each tracking link the way a visitor in the target country would: every redirect hop, the parameters that survive it, and the page it finally lands on. Run it from exits in each market, on one IP per chain, and you find the broken offers and stripped click IDs before the commission report does.

Pay per GB · No subscription · Prices in EUR, excl. VAT

Illustration. The URLs and values are fictional; the connection string is the real grammar.
€2.00
per GB on ARC Fast, excl. VAT
−44%
at 1 TB (€1.12 / GB)
185+
countries, city targeting
Never
expires — no subscription

Written for

  • Affiliate managers
  • Affiliate network compliance teams
  • Performance marketing agencies
  • Publisher partnership leads

The short answer

  • Follow the chain hop by hop rather than only checking the final status. A 200 at the end can hide a dropped click ID, a geo-fallback or a redirect to the wrong offer.
  • Run each chain from one IP in the target country. Tracking links route by visitor country, so a check from your office tests the office's routing, not the market's.
  • Clients should detect redirect loops; HTTP's specification says so, and notes that some clients cap redirects at five. Long chains can break in real browsers before they break in your checker.
  • Brand bidding is usually a contractual question: Google does not restrict trademarks used as keywords. Monitoring paid results is how a programme enforces its own terms, by observing, never clicking.

The problem

What goes wrong without the right IPs

The offer is geo-locked and the link quietly falls back

Many offers are available only in some countries. A visitor from elsewhere is redirected to a fallback offer or a generic page, with a 200 status. Without an exit in each market, every check passes and half of them are wrong.

A hop strips the click ID

A redirect that rebuilds the URL without passing through a sub-ID or click ID still lands on the right page, but the conversion is not attributed. The only way to see it is to inspect every Location header in the chain.

The chain changes mid-flight

Tracking hops set cookies and sometimes check that the next request comes from the same visitor. If the exit rotates between hops, the chain can break or route differently than it does for a real user.

JavaScript and meta refresh redirects

Not every hop is an HTTP 3xx. Some are a meta refresh or a script that sets the location. An HTTP client sees a 200 and stops; a headless browser follows them.

Landing pages drift from the approved creative

Prices, claims and disclosures on the advertiser's landing page change without the affiliate knowing. A link that resolves correctly can still land on a page that no longer matches what was promoted.

What to collect

What you can collect

Every hop: URL, status code, Location
The chain itself. Lets you see where a parameter was dropped, where a geo-fallback kicked in and how many hops a visitor goes through.
Final URL and status
Whether the visitor reached a live offer, a 404, an expired-offer page or a generic fallback.
Tracking parameters at each hop
Sub-ID, click ID and UTM values in and out of each hop. A value present at hop 1 and gone at hop 3 is a lost commission.
Exit country
Which market the chain was resolved for. The same link can be correct in one country and a fallback in the next.
Landing page snapshot
Rendered HTML or a screenshot of the final page, for claims, prices and disclosures. Keep it as evidence when you raise a dispute.
Hop count and total time
Long chains are slow, and every extra hop is another place to fail. Track it per network and per advertiser.
Paid search observations for brand terms
Advertiser display URL and ad text seen for brand queries per country, for programmes whose terms restrict brand bidding.

How it runs

How a collection run works

  1. 01

    Build the link inventory per market

    List every active tracking link with the countries it is meant to serve, the expected final domain and the parameters that must survive. That expectation is what each check is compared against.

  2. 02

    Resolve each chain hop by hop on one sticky exit

    Disable automatic redirects, request each hop yourself, and record status and Location. Hold one exit for the whole chain with a session handle, and stop at a hop limit to catch loops.

    Hop-by-hop resolution on one exit
    from urllib.parse import urljoin, urlsplit, parse_qsimport httpxproxy = "http://USERNAME_pool-arcfast_country-de_session-k3f9a1x2_sesstime-10:PASSWORD@proxy.arcproxies.io:8000"  # one session handle per chainMAX_HOPS = 10def resolve(url: str, must_keep: str = "subid"):    hops, seen = [], set()    with httpx.Client(proxy=proxy, follow_redirects=False, timeout=20) as client:        for _ in range(MAX_HOPS):            if url in seen:                hops.append(("LOOP", url)); break            seen.add(url)            r = client.get(url)            kept = must_keep in parse_qs(urlsplit(url).query)            hops.append((r.status_code, url, kept))            if r.status_code not in (301, 302, 303, 307, 308):                break            url = urljoin(url, r.headers["location"])    return hops
  3. 03

    Render the final page in a browser

    Open the final URL in a headless browser on the same session to catch script and meta-refresh redirects, then store a screenshot and the rendered HTML. Block heavy media unless the creative is what you are checking.

  4. 04

    Compare against expectations and alert

    Flag chains that end on the wrong domain, lose a required parameter, exceed the hop limit, loop or end in an error. Group alerts by advertiser and network so the right person gets them.

  5. 05

    Observe brand-term search results, without clicking

    For programmes that restrict brand bidding, record the paid results shown for brand queries per country: display URL and ad text. Never click an ad to identify the advertiser; a click costs the advertiser money and is invalid traffic.

Setup

Recommended setup

A redirect chain is a short, stateful visit. Hold one exit for it, in the country the offer is for.

PlanRoleSessionTargetingPrice
ARC Fast
Rotating residential
Default for chain resolution and landing pages
Residential exits in the target market, held for the whole chain so cookies and routing match a real visitor's.
Sticky, 5 minutes per chainCountry, city where offers are regional
€2.00 / GB
€1.12 at 1 TB (−44%)
ARC Basic
Rotating ISP
For high-frequency status checks
Our lowest price per GB, for frequent hop-only checks on links you have already validated on ARC Fast. Compare the two on a sample before you move a network across.
Sticky, 5 minutes per chainCountry
€0.75 / GB
€0.59 at 1 TB (−21%)
ARC Mobile
Mobile 4G/5G
For mobile-only offers
Carrier IPs for offers that route mobile carrier traffic differently. Pair with a mobile user agent. No city targeting on this pool.
Sticky up to 60 minutesCountry only: DE, GB, US, JP
€3.50 / GB
€3.15 at 1 TB (−10%)

Prices are list prices in EUR, excl. VAT. Volume discounts apply automatically at checkout — full ladder on the pricing page.

Connect

One connection string per market

The country, city and sticky session are tokens in the username. Change the token, change the market; keep the session handle, keep the IP.

sticky · Germany · 10 min
http://USERNAME_pool-arcfast_country-de_session-k3f9a1x2_sesstime-10:PASSWORD@proxy.arcproxies.io:8000

Swap _country-de for any market you quote. The full grammar is on the residential proxies page.

Illustration

What monitoring 1,500 links in eight markets costs

An illustration with round numbers — your pages, payloads and retry rate will differ. The arithmetic is the real price ladder.

Assumptions

Tracking links
1,500
Markets
8
Hop-only checks
2 a day at 30 KB per chain
Rendered landing page checks
4 a month at 1.5 MB
Bandwidth per month
≈ 94 GB

On ARC Fast

€139.12per month, excl. VAT

94 GB bought in one purchase at €1.48 / GB (−26% volume rung, applied automatically).

The same 94 GB on ARC Basic: €65.80 at €0.70 / GB. Move down as soon as the cheaper pool holds up.

Hop-only checks are cheap; rendered landing pages are where the bandwidth goes. Render weekly and on every chain change rather than on every check. See reducing proxy bandwidth.

Bandwidth never expires, so a bigger single purchase is only ever cheaper per GB. See the ladder.

In depth

Affiliate link monitoring, in depth

Redirect chains: what HTTP says and what browsers do

HTTP defines the redirect status codes 301, 302, 303, 307 and 308, each with a Location header naming the next URL. RFC 9110 says a client SHOULD detect and intervene in cyclical redirections, and notes that an earlier version of the specification recommended a maximum of five redirections, so some clients may still enforce a fixed limit.

For affiliate chains that means two things. First, a chain that works with a permissive checker can fail in a stricter client, so track hop count and alert on long chains. Second, 303 and, in practice, 301 and 302 can change the method of the next request, which is irrelevant for GET-based tracking links but matters if any hop is a form post.

Ad platforms have their own rules about where a click may end up. Google's destination requirements, for instance, treat redirects from the final URL to a different domain as a destination mismatch, and disapprove destinations that do not work or return HTTP errors. A broken affiliate chain behind a paid ad can therefore cost the ad as well as the commission.

Brand bidding compliance, observed not clicked

Most affiliate programmes restrict affiliates from bidding on the advertiser's brand terms in paid search. That restriction lives in the programme's terms, not in the search engine's policy: Google's trademark policy lists using trademarks as keywords as something it does not restrict, while it can restrict trademarks in ad text, for example in ads from a direct competitor.

Enforcement therefore depends on the programme seeing the ads. Search results and their paid placements vary by country and often by city, so the observation has to come from an exit in the market. Record the query, the country, the display URL and the ad text. See local rank tracking for the mechanics of geo-specific search observations.

Do not click the ads you observe. A click is billed to the advertiser, and generating clicks you do not intend as a genuine user is invalid traffic and against our acceptable use policy.

Works with anything that takes a proxy URL

  • Python requests / httpx
  • Playwright
  • Node.js
  • n8n
  • changedetection.io

FAQ

Questions

Something not covered? Write to contact@arcproxies.io.

How do I check where an affiliate link redirects?

Request the link with automatic redirects turned off, record the status code and Location header of each hop, and request the next URL yourself until you reach a non-redirect response. Do it from an exit in the target country, on one IP for the whole chain, and render the final page in a browser to catch script redirects.

Why does an affiliate link work for me but not for visitors abroad?

Tracking links route by the visitor's country. If an offer is not available in a market, visitors there are sent to a fallback page or a different offer. Checking from exits in each target country shows what visitors in each market actually get.

How many redirects is too many?

There is no fixed maximum in HTTP today, but RFC 9110 notes that an earlier version recommended at most five and that some clients may still enforce a fixed limit. Every hop adds latency and another point of failure, so alert on chains that are getting longer.

Is bidding on a competitor's brand name against Google's policy?

Google's trademark policy lists using trademarks as keywords as something it does not restrict, though it can restrict trademarks in ad text, for example in ads from a direct competitor. Brand bidding restrictions in affiliate programmes come from the programme's own terms.

Should I click ads to see which affiliate is brand bidding?

No. A click is billed to the advertiser, and generating clicks you do not intend as a genuine user is invalid traffic and against our acceptable use policy. Record the display URL and ad text shown for the query in each market instead.

How much bandwidth does affiliate link monitoring use?

Hop-only checks are tens of kilobytes per chain; a rendered landing page is often one to two megabytes. Monitoring 1,500 links in eight markets twice a day, with weekly rendered checks, comes to roughly 94 GB a month.

Sources & review

Last reviewed by the ARC Proxies team. Prices are read from the live catalog at build time.

  1. [1]IETF: RFC 9110: HTTP Semantics, Section 15.4 Redirection 3xx
  2. [2]Google Ads Help: Trademarks policy
  3. [3]Google Ads Help: Destination requirements

Get started

Buy a gigabyte and try it on your own targets.

No subscription, no sales call. Code WELCOME15 takes 15% off your first purchase, and whatever you do not use is still there next quarter.