
DevDome Analytics shows you how many real people visit your site. Bots and crawlers are counted separately, so your numbers are not inflated.
Install the plugin, connect your free DevDome account, done. The plugin stays light: no analytics tables in your WordPress database. Key numbers show in wp-admin; the full dashboard lives in your DevDome account.
What you get
First-Party Delivery (Pro plans and above)
An optional switch. The tracking script is served from your own domain and events go through your own server, with randomized names unique to your site, so ad blockers that block third-party analytics domains cannot drop them. Bypasses most, not all, blockers. Works with caching and speed plugins without configuration.
Private by default
A free DevDome account is required: collection and reports run on the hosted DevDome service. Nothing is tracked or sent before you connect the site.
DevDome Analytics is a connector for the DevDome Analytics service. It talks to two hosts, both operated by DevDome.
Terms of service: https://devdome.com/terms-of-service
Privacy policy: https://devdome.com/privacy-policy
The tracking script, https://analytics.devdome.com/track.js
Loaded in your visitors’ browsers on public pages, once the site is connected and Enable Tracking is on. It is not added to your pages before you connect. With First-Party Delivery on, a copy of this script that ships inside the plugin is placed in your uploads folder and served from your own domain instead; nothing is downloaded from DevDome for it.
The event ingest, https://analytics.devdome.com/api/event
This is where analytics events are recorded, and there are four ways it is reached.
/dd-e path on your own domain and your server relays it. Your server adds two fields to that relayed event: the visitor’s country code and the visitor’s IP address, so location and per-visitor counts stay correct when the event arrives from your server instead of from the browser.The plan check, https://analytics.devdome.com/api/plugin/entitlements
Asks whether this site’s DevDome plan includes First-Party Delivery. Sent only while that switch is on (once a day) or when you turn it on, carrying your Site ID and this site’s secret token. No visitor data.
The connection handshake, https://analytics.devdome.com/api/plugin/status
Sent when you connect the site and when the connection is re-verified. Contains your Site ID, this site’s secret token, your Account ID, the site URL, the site name, the site administrator’s email address, the WordPress version, the PHP version, the plugin version, the active theme name, the timezone, the site language and whether this is a multisite install. No visitor data.
A shorter form (Site ID and secret token only) also runs when you open the plugin’s screen, at most once per 15 minutes: a site already connected on devdome.com shows as connected here without a second connect step. No visitor data, nothing on public pages.
The one-click connect handshake, https://analytics.devdome.com/api/plugin/connect/start and /api/plugin/connect/claim
connect/start runs only when you press the “Connect Via DevDome Account” button, never on its own (opening the plugin’s screen makes only the connection-status check described above). It sends this site’s domain, its secret token and the wp-admin address to return to, and receives a short-lived connect link. connect/claim runs when your browser returns from devdome.com and exchanges that link for your Account ID.
The stats read, https://analytics.devdome.com/api/plugin/stats
Sends your Site ID, this site’s secret token (so only your own site can read its numbers) and the selected day range. Used to fill the Overview tiles in wp-admin, and the bot-visit figure shared with DevDome Bot Protection when that plugin is installed.
Deleting your data, https://analytics.devdome.com/api/plugin/purge
Sends your Site ID and this site’s secret token, and only when you press Reset Analytics, or tick “Also delete my data on DevDome” while disconnecting.
These two are made by the shared DevDome library bundled with every plugin in the suite.
The account check, https://api.devdome.com/plugin/account
A GET carrying this site’s domain and its secret token, answered with the Account ID and account email address that the token belongs to, so the DevDome screen can show which account this site is linked to. It runs when the DevDome screen is displayed, at most once every twelve hours, and never before you have acted: until you press a Connect button, save an Account ID or complete a connection, this check is not made at all.
Disconnecting, https://api.devdome.com/plugin/disconnect
A POST carrying this site’s domain and its secret token, sent only when you press Disconnect, to unlink the site from the account.
The bundled shared library also references endpoints this build never calls: the https://api.devdome.com/bot-protection/ signature feeds (used by other DevDome plugins; never fetched here, no cron scheduled) and https://api.devdome.com/plugin-updates/ (self-hosted updates, disabled here; updates come from WordPress.org).
https://devdome.com/connect/ is a link you click, not a request the plugin makes. Your browser goes there to sign in and approve the connection, and comes back. The plugin makes no server-side call to devdome.com.
What is stored on your site. Roughly thirty option rows: the tracking switches, the service addresses, this site’s ID and secret token, your Account ID and account email, the timestamp of the connection, and, for First-Party Delivery, the switch itself and the randomized path and file names generated for this site. When that switch is on, one JavaScript file (the tracking script copied out of the plugin’s own package) is placed under your uploads folder; it is removed at uninstall. Nothing else. No custom tables, no post meta, no user meta, and not one analytics event. The short-lived transients: a connect handle (10 minutes), the cached bot-visit figure (1 hour), the cached plan answer for First-Party Delivery (a day), and flood counters for the /dd-e and First-Party relay endpoints that live for 2 minutes and are keyed by an MD5 hash of the visitor’s IP address.
Public paths the plugin adds. Up to four. /dd-e (only while connected) accepts the outbound-click beacon described in External services; it answers empty to everything else, requires the browser’s own same-site Origin header, ignores requests from excluded roles, is rate limited per IP address and stores nothing. The First-Party Delivery relay (only while that switch is on) is a randomized path unique to your site that accepts the tracking events described in External services under the same rules and stores nothing. /.well-known/devdome-analytics.txt (only while connected) returns one short line of fixed text, so DevDome can confirm the plugin really is installed on the domain you connected. /.well-known/devdome-connect-proof.txt returns a one-way SHA-256 fingerprint of this site’s secret token (never the token itself), so DevDome can confirm during connection that the request really came from this site.
What is stored on a visitor’s device. Two settings decide this, and they are independent of each other.
td_vid in localStorage and td_sid in sessionStorage. It does this even when Track Returning Visitors is off, because a click has to be tied to the visit it came from to be worth anything. Visitors who never click an outbound link are unaffected. If you do not want it, switch Track Outbound Links off; a visitor whose browser sends the Do Not Track header never gets it either.Sites upgrading from an earlier version keep returning-visitor tracking on, exactly as they behaved before, so nothing changes on a live site until you decide otherwise.
IP addresses. The plugin never stores a visitor’s IP address on your site in readable form. It reaches DevDome two ways: the tracking script connects to the service from the visitor’s browser, like any web request; and relayed events (outbound clicks, First-Party Delivery) deliberately carry the visitor’s real address, else they would all be attributed to your server. DevDome uses it for geolocation and per-visitor counts.
How to turn things off. Enable Tracking is the master switch, and turning it off stops all collection. Track Clicks, Track Outbound Links, Track AI Referrals and Track Bot Visits each switch off on their own. Do Not Track Admins is on by default. Excluded roles lets you name any role that must never be tracked; new installs start with Administrator and Editor. Respect Do Not Track is on by default and honours the browser signal.
How to remove your data. Disconnect stops everything immediately: the tracking script is no longer added to your pages, the /dd-e endpoint stops relaying, and the domain-verification file is no longer served. To delete what DevDome has already collected, either press Reset Analytics, or tick “Also delete my data on DevDome” while disconnecting. If you do neither, DevDome deletes it automatically after 90 days of inactivity. On your own site there is nothing to clean up beyond the option rows listed above: the plugin creates no tables and stores no analytics data locally.
All of this plugin’s PHP and JavaScript ships unminified and human-readable.
One file is generated: assets/devdome-tools-tw.css, the admin screen’s stylesheet. It is a Tailwind CSS v3 utility bundle built from src/tw.css and tailwind.config.cjs with:
npx tailwindcss -c tailwind.config.cjs -i src/tw.css -o assets/devdome-tools-tw.css --minify
Those two build inputs are not included in the distributed package. Ask for them at https://devdome.com/contact and we will send them.