Install Dupes in a minute
Dupes is a single lightweight script that tracks your visitors — plus a server-side detector for AI crawlers. Works with any stack, and every site can run cookieless if you'd rather not ask for consent.
Add your site
In the dashboard, click Add site, enter a name and your domain. You'll get a website ID that looks like dps_….
Drop in the script
Paste this before the closing </head> on every page, using your own website ID and domain:
Watch data flow in
Deploy and open your dashboard. Pageviews, channels, campaigns, pages, devices and geography appear within seconds — plus any AI crawler visits.
<script>window.dupes=window.dupes||function(){(window.dupes.q=window.dupes.q||[]).push(arguments)}</script>
<script
src="https://usedupes.com/js/script.js"
data-dupes-id="dps_your_site_id"
data-dupes-domain="yourdomain.com"
defer
></script>Script options
Only data-dupes-id is required.
| Attribute | What it does |
|---|---|
| data-dupes-id | Your website ID. Required. |
| data-dupes-domain | Domain shown in the dashboard. |
| data-dupes-hostnames | Comma-separated allowlist, e.g. example.com,*.example.com. Blocks staging clones and mirrored copies from polluting your numbers. Omit to allow every hostname. |
| data-dupes-localhost | Set "true" to track localhost while developing. |
| data-dupes-iframe | Set "true" to track when embedded in an iframe. Off by default — embedded copies usually aren’t your traffic. |
| data-dupes-api | Custom collect endpoint, if you proxy it. |
The script skips automated browsers (headless Chrome, Selenium, Puppeteer, Playwright) so scrapers don't inflate your visitor count, and captures the browser's timezone and language — which stay accurate behind VPNs and proxies, unlike IP geolocation. Paid clicks are attributed from gclid, fbclidand friends, so ad traffic doesn't land in Direct.
Pick your platform
Step-by-step guides for popular stacks.