Guides
Practical guides on device fingerprinting, free trial abuse, coupon abuse and referral fraud, and how to stop them with server-side checks.
What is browser fingerprinting? How it works and what it reveals
Browser fingerprinting recognises a browser from the signals it shows every website, such as canvas, WebGL, fonts and audio. How it works and what it is for.
How to prevent free trial abuse: one device, one free trial
Free trial abuse is one person signing up again and again for a new trial. The checks that stop it on the server, and how real users stay unaffected.
FingerprintJS alternative: server-side device ID and abuse checks
Looking for a FingerprintJS alternative? A client-side fingerprint library compared with a server-verified device ID that also decides trials and coupons.
Device fingerprinting: how it works in browsers and mobile apps
Device fingerprinting identifies a browser or app install from its signals instead of cookies. How it works, how accurate it is, and how it stops abuse.
Multi-accounting detection: find duplicate accounts by device
Multi-accounting is one person running many accounts to repeat free offers or dodge limits. How to detect duplicate accounts by device, email and network.
Coupon abuse: how to stop promo code and sign-up bonus abuse
Coupon abuse is one person redeeming a one-per-customer code or sign-up bonus many times. How to limit promo codes per device and keep honest customers happy.
Referral fraud: how to detect and prevent referral abuse
Referral fraud is one person inviting themselves, or a ring of fake accounts, to collect referral rewards. The signs to look for and how to stop it in time.
Bot detection for sign-ups and free offers
How to detect bots and automated browsers at sign-up: headless and webdriver flags, tampered browser functions, datacenter IPs, timing and a human check.
Fingerprint test sites compared: amiunique, BrowserLeaks and more
amiunique, Cover Your Tracks, BrowserLeaks and the FingerPrint Checker test each answer a different question about your browser fingerprint. Which one to use.
Protect a Next.js sign-up from repeat free trials
Stop repeat sign-ups in a Next.js App Router app: mint an intent, identify the device in a client component, and decide on the server with the Node.js SDK.
Check free-trial eligibility from a Python backend
Decide on your Python backend whether a device may claim a free trial or coupon: create an intent, check eligibility, fail closed, and release a refunded claim.
Receive and verify FingerPrint Checker webhooks in Go
Receive identify events in a Go service: read the raw body, verify FPC-Signature with the Go SDK, ignore duplicates, and answer fast so retries stop.
Tor network detection: spot visits from Tor exit nodes
What Tor is, why some sign-ups and checkouts come through it, and how to read the Tor signal on each event so your backend can ask for a human check or review.
Canvas fingerprinting explained: what it is and why it is not enough
Canvas fingerprinting reads how a browser draws an image. Learn what it is, what it means for privacy and why it is only one input among many in a device ID.
VPN and proxy detection: read the signals on each event
Not every VPN user is a fraudster. Read the VPN, proxy and datacenter signals on each event and decide when to ask for a human check instead of a block.
Impossible travel detection: use velocity counts to catch it
Impossible travel means one account or device shows up in places no person could reach. See the velocity counts we give you and how to write the rule yourself.
Headless browser detection: what it catches and how to use it
Headless browsers drive sign-ups, scraping and card testing at scale. See what the bot signal reports for them and how to act on it from your backend.
Detect account takeover at login with Node.js
Tutorial: identify the browser at login, fetch the event on your Node.js server, compare the visitor with the account’s known devices and ask for a second step.
Verify the visitor on your server with Python
Tutorial: never trust a visitorId the browser posts. Verify the eventId on your Python backend with the events API, or open a sealed result, before you act.