Web threats

Affiliate fraud turns website visits into someone else's commissions.

Affiliate fraud uses injected scripts and deceptive pages to manufacture tracked visits, clicks or conversions. The code redirects visitors, opens hidden affiliate routes or turns ordinary controls into paid clicks. Since 1 August we have matched affiliate-fraud code on 2,122 sites.

Affiliate fraud in numbers

Since 1 August, when our rule-match records begin, counted on 12 November 2026. How we count.

Sites with affiliate-fraud code2,122
Sites with a match in the last 30 days1,298
New sites in October946
Still serving affiliate fraud when recaptured at least 25 days later487 of 622 sites (78%)
Sites running WordPress (captured since 25 September)62%
Named kits5

Kits compared

Kits with the most sites in the last 30 days first. One site can carry more than one kit. The last column counts sites recaptured at least 25 days after their first match, where there are at least 50.

KitLast 30 daysAll sitesFirst matchStill serving 25 days on
Lnkr29840066% of 68
TrackMyPoss26974250% of 167
PixelMenu140170
HotejMain6999
Sign155

What the infected sites run

860 of the 1,383 sites we captured since 25 September 2026 run WordPress (62%), and 269 sites run Joomla. Shares below are of the WordPress sites, by the version and plugins on each site's latest capture.

WordPress versionSitesShare
WordPress 7.142249%
WordPress 7.0718%
WordPress 6.9587%
WordPress 6.8698%
Other releases from 6.010813%
Older than 6.0698%
Rare or unreadable version637%
PluginSitesShare
elementor34240%
contact-form-729034%
elementor-pro15318%
woocommerce15017%
revslider13716%
google-site-kit10212%
js_composer769%
elementskit-lite556%
header-footer-elementor556%
essential-addons-for-elementor-lite486%
wordfence263%

Affiliate fraud on a website sends traffic through tracked offers without an honest referral. Attackers inject a loader, frame or redirect into the site, then let a traffic controller choose what each browser does.

compromised page or deceptive landing
  -> injected loader profiles the visit
  -> hidden request, forced click or redirect
  -> affiliate tracker records the visit
  -> browser reaches an offer or another redirect

Redirects that wait for the right visitor

Some injections load a small remote script and leave the routing decision to its server. HotejMain retrieves routing text through synchronous XHR, reconstructs the destination and injects a keyed click-stage script. PixelMenu loads remote scripts through a one-pixel GIF's onload handler in a Joomla menu. Its scripts check the referrer and browser state before hijacking clicks and Back navigation or showing a lottery offer. Sign1, planted in WordPress widgets, sends on only visitors whose referrer is Google or Bing. Other injections check screen width and browser details first, so a desktop site owner sees the expected page while a mobile visitor is sent elsewhere. We match WordPress maintenance pages that redirect mobile browsers and loaders that request per-visitor configuration.

Reward pages do the same job with a form. A fake TikTok rewards page collects the visitor's email and carries the affiliate tracking values into the address it sends them to.

An off-screen frame can open a tracked affiliate route without taking over the visible page. The destination can then set an attribution cookie, giving the affiliate credit if that browser later buys something. We have matched injected scripts that create large frames outside the viewport and feed them into redirect trackers carrying referral campaign values.

Look beyond the final address. A chain can replay the current path and query on a mirror, send a token through several controllers or keep a once-per-day marker in browser storage. Those gates make repeat checks look clean.

TrackMyPoss and Lnkr

TrackMyPoss sends the site and referrer to a controller, stores returned state in the browser and runs JavaScript from the reply. The reply redirected the visitor to a push and Back-button advertising page.

Lnkr posts visitor context to a routing server and follows its returned destination. Its newer redirector requests high-entropy browser details and checks automation before replacing the current page.

What we see across infected sites

MonthNew sites
September628
October946
November so far149

62% of the affiliate-fraud sites captured since 25 September run WordPress. 19% made requests for Joomla core paths. Of the 622 sites recaptured at least 25 days after their first match, 487 still served affiliate-fraud code (78%).

Checking a site

Test the logged-out site on mobile and desktop, with the browser network log open. Check for:

  • unfamiliar script tags added to the page head or footer
  • frames positioned off-screen or reduced to an invisible size
  • redirects that run only on mobile, after a delay or after a click
  • close buttons, backdrops and Back-button handlers that open another address
  • browser-storage keys that suppress the redirect for a day or longer
  • requests carrying referral, campaign, click or visitor identifiers

Remove the injected loader and every cached copy. Compare themes, plugins and site templates with trusted releases, review administrator and hosting access, rotate those credentials and test the page again from a clean browser profile.

Kits

Lnkr

298 sites in the last 30 days

Lnkr is an affiliate redirector loaded as a third-party website script.

TrackMyPoss

269 sites in the last 30 days

TrackMyPoss is an affiliate-traffic controller injected into WordPress sites and other pages.

PixelMenu

140 sites in the last 30 days

PixelMenu is a Joomla menu injection that loads remote scripts through an image's onload handler.

HotejMain

69 sites in the last 30 days

HotejMain is an injected traffic-routing kit that reconstructs a keyed click-stage address from a controller's reply.

Sign1

5 sites in the last 30 days

Sign1 is a script planted in WordPress custom HTML widgets and custom code plugins.

Try the feed for 14 days.

Request a trial and we'll send you a live API key, with the same feed, removals and reasons a customer gets.