Troubleshooting Overview
This guide covers common issues with Clicky analytics and provides solutions to get your tracking working correctly. From installation problems to data discrepancies, find answers to the most frequent challenges.
Installation Issues
Tracking Code Not Loading
Symptoms:
Diagnostic Steps:
- View your page source and search for "clicky"
- Check browser console for JavaScript errors
- Verify the Site ID matches your Clicky account
Solutions:
<!-- Verify your tracking code format -->
<script>
var clicky_site_ids = clicky_site_ids || [];
clicky_site_ids.push(YOUR_SITE_ID); <!-- Must be a number, not string -->
</script>
<script async src="//static.getclicky.com/js"></script>
Common Mistakes:
- Site ID wrapped in quotes (should be a number)
- Missing closing script tag
- Tracking code placed inside comments
- Script blocked by content security policy
Script Blocked by Browser Extensions
Symptoms:
- Tracking works for some visitors but not others
- Ad blockers preventing script load
Solutions:
- Test in incognito mode without extensions
- Check if your site is on any blocking lists
- Consider self-hosting the tracking script:
<!-- Self-hosted option (download from Clicky first) -->
<script async src="/js/clicky.js"></script>
WordPress Plugin Issues
Symptoms:
- Plugin installed but no tracking occurring
- Conflict with caching or optimization plugins
Solutions:
- Clear all caches after plugin installation
- Exclude Clicky script from JavaScript minification
- Verify settings are saved correctly:
- Check Site ID field isn't empty
- Confirm tracking isn't disabled for admins
// Add to wp-config.php if needed to debug
define('CLICKY_DEBUG', true);
Data Collection Problems
Missing Page Views
Symptoms:
- Some pages tracked, others not
- Traffic counts lower than expected
Diagnostic Steps:
- Compare tracked pages vs. untracked pages
- Check for conditional loading of tracking code
- Verify single-page app navigation triggers tracking
Solutions:
For SPA frameworks, manually track page views on route change:
// React Router example
useEffect(() => {
if (typeof clicky !== 'undefined') {
clicky.log(window.location.pathname, document.title);
}
}, [location]);
// Vue Router example
router.afterEach((to) => {
if (typeof clicky !== 'undefined') {
clicky.log(to.path, document.title);
}
});
Events Not Recording
Symptoms:
clicky.goal()calls not appearing in reports- Event tracking works sometimes but not consistently
Diagnostic Steps:
- Verify Clicky is loaded before goal calls
- Check goal name matches configuration
- Test in real-time dashboard
Solutions:
// Ensure Clicky is loaded before tracking
function safeTrackGoal(name, revenue, title) {
if (typeof clicky === 'undefined' || typeof clicky.goal !== 'function') {
console.warn('Clicky not ready, retrying...');
setTimeout(function() { safeTrackGoal(name, revenue, title); }, 500);
return;
}
clicky.goal(name, revenue, title);
}
// Usage
safeTrackGoal('signup', 0, 'Newsletter Signup');
Bot Traffic Inflation
Symptoms:
- Unusually high traffic numbers
- Suspicious patterns in visitor logs
Solutions:
- Enable Clicky's bot filtering (usually on by default)
- Review and exclude known bot user agents
- Check for referrer spam:
In Clicky dashboard:
- Go to Preferences → Filtering
- Add spam domains to the block list
- Enable IP blocking for persistent offenders
Missing Referrer Data
Symptoms:
- High percentage of "direct" traffic
- Expected referrals not appearing
Causes:
Solutions:
- Ensure your site uses HTTPS consistently
- Check your server's Referrer-Policy header:
<!-- Allow referrer for same-origin and downgrades -->
<meta name="referrer" content="no-referrer-when-downgrade">
- Use UTM parameters for campaign tracking to avoid reliance on referrer headers
Data Discrepancies
Clicky vs. Server Logs
Common Causes:
- Bot traffic (filtered by Clicky, present in logs)
- JavaScript-disabled visitors (in logs, not Clicky)
- Cached pages served without Clicky loading
Reconciliation:
- Expect Clicky to show 10-30% less than raw server logs
- Focus on trends rather than absolute numbers
- Use Clicky as the source of truth for human visitor behavior
Clicky vs. Google Analytics
Common Differences:
- Session timeout definitions
- Bot filtering approaches
- Sampling (GA samples high-traffic sites, Clicky doesn't)
Investigation Steps:
- Compare the same date range
- Check for tracking code presence on all pages
- Verify both tools use the same page filtering
Expected Variance:
- 10-20% difference is normal
- Larger differences indicate implementation issues
Real-Time vs. Historical Data
Symptoms:
- Real-time shows activity, historical reports are empty
- Numbers don't match between views
Causes:
- Timezone configuration issues
- Data processing delays
- Filtering applied to historical but not real-time
Solutions:
- Verify timezone settings in Preferences → General
- Wait for data processing (usually immediate, but can delay)
- Check if filters are affecting historical views
Heatmap Issues
Heatmaps Not Generating
Symptoms:
- Empty heatmap display
- "Not enough data" message
Solutions:
- Verify heatmaps are enabled in preferences
- Check minimum traffic threshold is met
- Ensure the page URL matches exactly:
// Heatmaps track specific URLs
// www.example.com/page ≠ example.com/page
// Canonicalize URLs where possible
Heatmap Data Inaccurate
Symptoms:
- Click locations offset from actual elements
- Scroll tracking not matching page length
Causes:
- Dynamic content loading after heatmap initialization
- Responsive layouts rendering differently
- Lazy-loaded images changing page height
Solutions:
- Ensure page content is stable before tracking
- Test on the same viewport size you're analyzing
- For dynamic content, delay heatmap capture:
// Wait for dynamic content
window.addEventListener('load', function() {
setTimeout(function() {
// Heatmap data will be more accurate
}, 2000);
});
Uptime Monitoring Issues
False Downtime Alerts
Symptoms:
- Receiving alerts when site is actually up
- Intermittent false positives
Causes:
- Network latency from Clicky's monitors
- Firewall blocking monitoring requests
- CDN issues affecting certain regions
Solutions:
- Whitelist Clicky monitoring IPs
- Increase timeout threshold in settings
- Verify your server responds to HEAD requests:
# Test what Clicky sees
curl -I https://yoursite.com
Alerts Not Sending
Symptoms:
- Site goes down but no notification received
Diagnostic Steps:
- Verify email address in alert settings
- Check spam folder for Clicky emails
- Test with a manual alert trigger
Solutions:
- Add clicky.com to email whitelist
- Configure backup alert method (SMS, Slack)
- Verify alert conditions match your needs
Performance Issues
Tracking Script Slowing Page Load
Symptoms:
- Lighthouse reports script as render-blocking
- Slow page load times attributed to Clicky
Solutions:
The default async loading should prevent blocking:
<!-- Correct: async loading -->
<script async src="//static.getclicky.com/js"></script>
<!-- Also correct: defer loading -->
<script defer src="//static.getclicky.com/js"></script>
Additional optimizations:
- Move tracking code to footer
- Use resource hints:
<link rel="preconnect" href="https://static.getclicky.com">
<link rel="dns-prefetch" href="https://static.getclicky.com">
Dashboard Loading Slowly
Symptoms:
- Reports take long time to load
- Timeouts when accessing data
Solutions:
- Reduce date range for queries
- Use specific report types instead of overview
- Check your internet connection
- Try accessing during off-peak hours
API Troubleshooting
Authentication Errors
Symptoms:
- API returns 401 or authentication failed
- "Invalid credentials" message
Solutions:
# Verify credentials
curl "https://api.clicky.com/api/stats/4?site_id=YOUR_SITE_ID&sitekey=YOUR_KEY&type=visitors&output=json"
- Confirm Site Key (not Site ID) is used for API auth
- Regenerate API key if compromised
- Check for URL encoding issues with special characters
Rate Limiting
Symptoms:
- API returns 429 errors
- Requests failing intermittently
Solutions:
- Implement exponential backoff:
async function fetchWithRetry(url, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
const response = await fetch(url);
if (response.status === 429) {
await new Promise(r => setTimeout(r, Math.pow(2, i) * 1000));
continue;
}
return response;
} catch (error) {
if (i === maxRetries - 1) throw error;
}
}
}
- Cache API responses locally
- Batch requests where possible
- Contact Clicky for higher rate limits if needed
Empty API Responses
Symptoms:
- API returns empty arrays
- Missing expected data
Diagnostic Steps:
- Verify date range has data
- Check type parameter is valid
- Confirm site has tracking enabled
Common Issues:
- Wrong date format (use: YYYY-MM-DD)
- Requesting data before tracking was installed
- Using test site ID without data
Getting Support
Before Contacting Support
- Check Clicky's status page for known issues
- Search the Clicky forums for similar problems
- Gather relevant information:
- Site ID
- Browser and version
- Steps to reproduce
- Screenshots of errors
Contact Options
- Forums: community.clicky.com
- Email: support@clicky.com
- Twitter: @clikiestats
Include:
- Clear description of the issue
- What you've already tried
- Any error messages received