Install Dupes in a minute
Dupes is a single lightweight script that tracks your visitors β plus a server-side detector for AI crawlers. No cookies, no consent banner, works with any stack.
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
src="https://dupes-gilt.vercel.app//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.