Clickport
Start free trial

Troubleshooting Installation

If you have installed the Clickport tracker but data is not appearing in your dashboard, this guide will help you diagnose and fix the issue. Work through the sections below in order.

Verify your installation

The fastest way to check if the tracker is working is to use your browser's developer tools. Open your website, then press F12 (or Cmd+Option+I on Mac) to open DevTools. Click the Network tab, then reload the page.

Look for two requests: the tracker.js script loading from clickport.io, and a POST request to /api/event that sends the pageview. Here is what a successful installation looks like:

Browser DevTools: Network tab
A successful Clickport installation shows these two requests
Name Status Type Size Time
tracker.js 200 script 4.2 KB 42ms
event 200 fetch 68 B 85ms

Filter by "clickport" or "tracker" to find these requests quickly. The event response should contain {"success":true,"session_id":...}

If you see both requests with a 200 status, your installation is working. Data will appear in your dashboard within a few seconds.

If the event request returns 200 but the response body contains a message like {"status":"blocked"}, the server accepted the request but filtered it. See the "Traffic being filtered" section below for details.

Installation checklist

If the tracker is not loading or events are not being sent, walk through this checklist to identify the issue.

Installation checklist
Verify each item to confirm your setup is correct
Script tag is in the <head> section
The tracker script must be inside <head>, not <body> or after the closing </html> tag.
data-domain matches your registered domain
Use "yoursite.com" without https://, www., or trailing slash. Must match what you entered in Clickport.
Script src points to https://clickport.io/tracker.js
Verify the URL is correct and uses https. A typo in the URL will silently fail.
Script is only included once per page
Multiple copies can cause duplicate pageviews. Search your page source for "tracker.js" to verify.
Not testing from localhost
The tracker auto-disables on localhost, 127.0.0.1, and file:// URLs. Deploy to a real domain to test.
No ad blocker or browser extension interfering
Try loading your site in a private/incognito window with all extensions disabled.
Self-exclusion is not enabled
Check that localStorage does not have "clickport_ignore" set to "true" in your browser.

The tracker script is not loading

If you do not see the tracker.js request in the Network tab at all, the script is being blocked before it can load.

Ad blockers and browser extensions

Some ad blockers maintain filter lists that block analytics scripts. To test whether an extension is causing the problem:

  1. Open your site in a private/incognito window (most extensions are disabled by default in incognito mode)
  2. If the tracker loads in incognito but not in your regular browser, an extension is blocking it
  3. Disable extensions one at a time to identify which one is responsible

If you need to work around ad blockers for your visitors, you can proxy the tracker through your own domain. See Script Configuration for setup instructions.

Content Security Policy (CSP)

If your site uses a Content Security Policy, you need to allow connections to clickport.io. Add the following to your CSP header:

script-src https://clickport.io;
connect-src https://clickport.io;

The script-src directive allows the tracker script to load. The connect-src directive allows the tracker to send data to the /api/event endpoint.

To check whether CSP is causing the issue, open the browser Console tab (next to the Network tab) and look for errors mentioning "Content Security Policy" or "CSP".

Caching issues

If you recently added the tracker snippet to your site, your old HTML may still be served from a cache. Purge your site's cache (CDN, hosting provider, or caching plugin) and reload the page. Most caching plugins in WordPress, Squarespace, and similar platforms have a "Purge Cache" or "Clear Cache" button in their settings.

Performance plugins

Some performance optimization tools (like WP Rocket, SiteGround Optimizer, Autoptimize, or W3 Total Cache) may defer, combine, or modify scripts in ways that break the tracker. If you use one of these plugins, try adding an exclusion for tracker.js or clickport.io in the plugin's settings.

The script loads but no data appears

If tracker.js loads with a 200 status but you don't see the /api/event request, or the request fails, one of these is the cause.

Testing from localhost

The tracker automatically disables itself when running on localhost, 127.0.0.1, or file:// URLs. This is intentional: it prevents development traffic from polluting your analytics data.

To test tracking, deploy your site to a real domain. There is no way to override this behavior in production. If you need to test the script locally during development, see Script Configuration for the __CP_TEST__ flag.

Domain mismatch

The data-domain attribute in your script tag must match the domain you registered in Clickport. The server compares the domain you registered with the Origin or Referer header of incoming requests.

Common mistakes:

The correct format is simply:

<script defer data-domain="yoursite.com"
  src="https://clickport.io/tracker.js"></script>
Subdomains work automatically. If you register yoursite.com in Clickport, traffic from blog.yoursite.com and shop.yoursite.com will be tracked under the same site. Use data-domain="yoursite.com" on all subdomains.

Self-exclusion (clickport_ignore)

Clickport supports a browser-level self-exclusion mechanism. If the clickport_ignore key in localStorage is set to "true", the tracker silently exits without sending any data.

This is useful for excluding yourself, but you may have enabled it and forgotten. To check:

  1. Open DevTools (F12)
  2. Go to the Console tab
  3. Type: localStorage.getItem('clickport_ignore')
  4. If it returns "true", remove it by typing: localStorage.removeItem('clickport_ignore')

Automated browser detection

The tracker checks for automated browser environments before sending data. If navigator.webdriver is true (which is set by Puppeteer, Playwright, Selenium, and similar automation tools), the tracker will not fire. This also applies to PhantomJS and Cypress test runners.

Traffic being filtered

If the tracker is loading and sending events but your dashboard still shows no data (or fewer visits than expected), the server may be filtering the traffic. Clickport applies several layers of protection to keep your analytics clean.

Server-side filtering layers
Events can be silently dropped for any of these reasons
401
Invalid API key
The data-domain does not match any registered site, or an API key is invalid. Double-check your snippet.
BOT
Bot detection triggered
Blocked by User-Agent pattern matching (crawlers, SEO tools, HTTP libraries), datacenter IP ranges (AWS, GCP, Azure), spam referrer lists, or zero-width viewport.
IP
IP excluded
Your IP address is in the exclusion list. Check Settings in your dashboard to see if "Exclude my IP" is enabled.
RATE
Rate limit exceeded
More than 60 events per minute from a single IP address. Normal browsing will never hit this limit.
CAP
Daily event cap reached
The site has exceeded its daily event limit. Events are silently dropped until the next UTC day.
DNT
Do Not Track respected
If "Respect DNT" is enabled in your site settings and the visitor has Do Not Track enabled in their browser, the event is discarded.
Silent responses by design. Most filtering returns a 200 OK with {"success":true} rather than an error code. This prevents attackers from probing to find out why their traffic was rejected.

IP exclusion

If you enabled "Exclude my IP" in your Clickport settings, all traffic from your IP address is filtered out at the server level. This applies to every browser and device on that IP. If you are testing from the same network, your visits will not appear.

To check: open your dashboard Settings, scroll to the Dashboard tab, and see if "Exclude my IP" is toggled on.

Bot detection

Clickport uses multiple layers of bot detection to keep analytics clean:

If your own traffic is being caught by bot detection, the most common cause is testing from a cloud server or VPS. Use a regular browser on a residential internet connection instead.

For more details, see Bot Management.

Hostname mismatch

The server validates that the Origin or Referer header of incoming requests matches the domain registered for your site. If the domain in the header does not match (and is not a subdomain of) your registered domain, the event is silently dropped.

This can happen if:

Data not appearing in the dashboard

If the Network tab shows a successful /api/event response with a session_id, the data has been recorded. If it is not visible in your dashboard, check these settings.

Date range

Make sure your dashboard date range includes today. If you are viewing "Last 7 Days" or a custom range that ends yesterday, today's data will not appear. Switch to "Today" to see the most recent events.

Realtime view

The Realtime section (the green "online" indicator in the top-right) updates every 30 seconds and shows visitors from the last 30 minutes. This is the quickest way to confirm that new events are being recorded. If you see your visit there but not in the main panels, it is likely a date range filter issue.

Site selector

If you have multiple sites in Clickport, make sure the correct site is selected in the dashboard. The site name appears in the top-left corner next to the Clickport logo.

SPA navigation not tracked

Clickport automatically handles single-page application (SPA) navigation. It patches history.pushState, history.replaceState, and listens for popstate events. Each client-side navigation triggers a new pageview event.

If SPA navigation is not being tracked:

For more details, see SPA Tracking.

Using the Verify Installation button

The easiest way to check your setup is from the dashboard itself. Open Settings (the gear icon in the top-right), scroll to the Site section, and click "Verify installation". Clickport will visit your site and check for the tracker script.

Verification results
The "Verify installation" button reports one of these states
Tracker is installed and sending data
Everything is working. Data should appear within seconds.
Tracker script found but not sending data
The script tag is present, but no events are being received. Check your data-domain value.
Tracker not found
No Clickport script tag was detected on your site. Follow the installation guide to add it.
Proxy setups and consent banners: The verification tool visits your site from the server side. If you proxy the tracker through your own domain, or load the tracker only after cookie consent, the tool may not detect it. In these cases, use the browser DevTools method described above instead.

Common issues reference

Quick answers to frequently encountered problems.

Data is delayed

Events typically appear in the dashboard within 1-3 seconds. If you are experiencing a longer delay, check the Realtime section first. If Realtime shows your visit but the main panels do not, try refreshing the dashboard or switching the date range to "Today".

Duplicate pageviews

If you see inflated pageview counts, check that the tracker script is only included once per page. View your page source (Ctrl+U or Cmd+U) and search for "tracker.js". If it appears more than once, remove the duplicate.

Some WordPress themes and plugins can inject the snippet multiple times if you add it manually and also through a plugin. Pick one method and remove the other.

Engagement data missing

Scroll depth and session duration are sent as a pageleave event when the visitor navigates away or closes the tab. This event uses fetch with keepalive: true, which works reliably in most modern browsers. If engagement data is consistently missing for a specific browser, the keepalive request may be failing. There is no action needed on your part; the tracker falls back to sendBeacon as a backup.

Google Tag Manager

If you load the Clickport tracker through Google Tag Manager instead of placing the script tag directly in your HTML, make sure the tag fires on "All Pages" and that the data-domain attribute is set correctly. GTM may also cache scripts in ways that delay the initial load.

Consent banner integration

Clickport does not use cookies and does not require consent under most GDPR implementations. If you have chosen to gate the tracker behind a consent banner, note that the "Verify installation" button will not detect the tracker until consent is given. See Privacy Overview and GDPR Compliance for details on why consent is not legally required.

Still need help?

If you have worked through this guide and your installation is still not working, reach out through the contact page. Include the following details so we can help quickly: