Troubleshooting Overview
This guide covers common issues with Countly analytics and provides solutions for installation, data collection, and server problems.
SDK Installation Issues
SDK Not Initializing
Symptoms:
Web SDK Debugging:
// Enable debug mode
Countly.debug = true;
Countly.init({
app_key: 'YOUR_APP_KEY',
url: 'https://your-server.com',
debug: true
});
// Check console for detailed logs
Mobile SDK Debugging:
// iOS
config.enableDebug = true
config.logLevel = .debug
// Android
config.setLoggingEnabled(true)
Countly.sharedInstance().setLoggingEnabled(true)
Wrong Server URL
Common Mistakes:
- Missing protocol (https://)
- Trailing slash issues
- Wrong port number
Correct Format:
// Correct
url: 'https://your-countly-server.com'
// Incorrect
url: 'your-countly-server.com' // Missing protocol
url: 'https://your-countly-server.com/' // Trailing slash may cause issues
App Key Mismatch
- Go to Countly dashboard → Management → Applications
- Copy the correct App Key
- Update SDK configuration
- Verify the key matches exactly (case-sensitive)
Data Collection Problems
Events Not Recording
Diagnostic Steps:
- Enable SDK debug mode
- Check console/logs for event sending
- Verify event structure is valid
Common Issues:
// Missing required 'key' property
Countly.add_event({
count: 1 // ❌ Missing 'key'
});
// Correct
Countly.add_event({
key: 'event_name', // ✓ Required
count: 1
});
Sessions Not Tracking
Web SDK:
// Ensure session tracking is enabled
Countly.track_sessions();
// For SPAs, track page changes
Countly.track_pageview();
Mobile SDK:
// iOS - Sessions are automatic with proper lifecycle
config.features = [.sessions]
Missing User Data
Check User Identification:
// Verify device_id is set
console.log(Countly.get_device_id());
// For logged-in users
Countly.change_id('new_user_id');
Server Issues (Self-Hosted)
Server Not Responding
Check Server Status:
# Check if Countly is running
sudo countly status
# Check logs
tail -f /var/log/countly/countly.log
# Check API server
curl -I https://your-server.com/o/ping
MongoDB Connection Issues
# Check MongoDB status
sudo systemctl status mongod
# Check MongoDB connection
mongo --eval "db.adminCommand('ismaster')"
# Review MongoDB logs
tail -f /var/log/mongodb/mongod.log
Nginx/Proxy Issues
# Test Nginx configuration
sudo nginx -t
# Check Nginx logs
tail -f /var/log/nginx/error.log
# Restart Nginx
sudo systemctl restart nginx
High CPU/Memory Usage
# Check resource usage
htop
# Identify heavy processes
ps aux | grep countly
# Check MongoDB memory
mongo --eval "db.serverStatus().mem"
Common Causes:
- Too many concurrent requests
- Large aggregation queries
- Insufficient RAM for dataset size
- Unoptimized MongoDB indexes
Push Notification Issues
Push Not Delivered
FCM (Android) Debugging:
- Verify FCM credentials in Countly settings
- Check device token is registered:
Countly.sharedInstance().push().getToken(object : TokenCallback {
override fun onToken(token: String?) {
Log.d("Countly", "Token: $token")
}
})
- Test with FCM console directly
APNs (iOS) Debugging:
- Verify certificate type (development vs production)
- Check provisioning profile includes push
- Verify device token registration:
print("Push token: \(deviceToken.map { String(format: "%02.2hhx", $0) }.joined())")
Push Token Not Registering
// Web Push - Check permission status
Notification.requestPermission().then(permission => {
console.log('Push permission:', permission);
});
// Verify service worker
navigator.serviceWorker.ready.then(registration => {
console.log('Service worker ready:', registration);
});
Crash Reporting Issues
Crashes Not Appearing
Check SDK Configuration:
// Web
Countly.init({
app_key: 'YOUR_APP_KEY',
url: 'https://your-server.com',
features: ['crashes']
});
Countly.track_errors();
// iOS
config.features = [.crashReporting]
// Android
config.enableCrashReporting()
Test Crash Reporting:
// Force a test crash
Countly.add_log("Testing crash");
throw new Error("Test crash for Countly");
Symbolication Not Working
iOS:
- Upload dSYM files to Countly
- Verify build UUID matches
- Check symbolication plugin is installed
Android:
- Upload mapping files (ProGuard/R8)
- Configure automatic upload in build.gradle
- Verify version codes match
Dashboard Issues
Data Not Displaying
Check Date Range:
- Ensure selected date range includes data
- Check timezone settings match data collection
Verify Permissions:
- Confirm user has access to the app
- Check feature permissions are enabled
Slow Dashboard Performance
For Self-Hosted:
# Rebuild indexes
mongo countly --eval "db.events.reIndex()"
# Check disk usage
df -h
# Clear old data if needed
countly api cleanup
Common Fixes:
- Increase server RAM
- Enable data aggregation
- Archive old data
- Optimize MongoDB configuration
Network and Connectivity
CORS Errors
For Self-Hosted Servers:
# nginx configuration
location / {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type';
}
SSL/TLS Issues
# Test SSL certificate
openssl s_client -connect your-server.com:443
# Check certificate expiration
echo | openssl s_client -servername your-server.com -connect your-server.com:443 2>/dev/null | openssl x509 -noout -dates
Request Queuing (Offline Mode)
// Check queue status
console.log(Countly.get_queue_size());
// Force queue processing
Countly.process_queue();
Getting Help
Community Support
- GitHub Issues: github.com/Countly/countly-server
- Community Forum: community.countly.com
- Documentation: support.countly.com
Enterprise Support
Enterprise customers have access to:
- Priority support tickets
- Direct engineering support
- Custom troubleshooting assistance
Information to Provide
When seeking help, include:
- Countly version (server and SDK)
- Platform and device information
- Steps to reproduce
- Relevant log output
- Configuration snippets (redact sensitive data)