Troubleshooting
Solutions for common issues with SealMetrics tracking and reporting.
Guides
| Guide | Use it when… |
|---|---|
| Tracker or pixel not working | No data appearing at all — start here to triage which specific problem you have |
| GTM Consent Mode blocking the tag | Data dropped after a CMP/consent banner went live, or only consenting visitors are tracked |
| CSP errors: domains to allow | The console shows "Refused to load the script" / "Refused to connect" policy errors |
| Duplicate pageviews | Pageviews doubled: script included twice, stub without ?auto=0, or SPA without ?spa=0 |
| Dates & timezone mismatch | Daily totals don't line up with another tool or your backend |
| Unauthorized domain | The snippet is installed but hits from a domain are silently rejected |
| Data delay | Data seems to take longer than seconds to appear |
| Conversions not appearing | Pageviews work but a conversion never reaches the Conversions report |
| Numbers lower than another tool | SealMetrics reports fewer visits than GA4 or another tool |
| Test traffic blocked as bot | Your own automated test visits (Selenium, Playwright, curl…) never show up |
| Reconciling with your ERP, CRM, or database | Substantial conversion gaps against your source of truth |
Fixing ReferenceError: sealmetrics is not defined | Ad blockers break pages that call sealmetrics.* directly |
Quick Diagnostics
Check Tracker Installation
- Open your website in a browser
- Open Developer Tools (F12)
- Go to the Network tab
- Filter by
sealmetricsorpixel - Reload the page
You should see:
t.jsscript loading (200 OK)- Beacon/fetch request to
t.sealmetrics.com(204 No Content)
Verify Data Collection
- Log in to my.sealmetrics.com
- Open the Overview report
- Visit your website in another tab
- The Last hit timestamp at the top right should update within seconds
Common Issues
Tracking Not Working
Symptoms: No data appearing in dashboard
Solutions:
-
Check script installation
// In browser console
console.log(typeof sealmetrics);
// Should output: "function" -
Verify Site ID
- Confirm your Site ID matches the one in your tracker script
- Find your Site ID in Settings → Sites → [your site] → General tab
-
Check domain authorization
- Go to Settings → Sites → [your site] → Domains
- Ensure your website domain is listed — see Unauthorized domain
-
Check for JavaScript errors
- Open browser console (F12 → Console)
- Look for any errors related to sealmetrics
Conversions Not Appearing
Symptoms: Pageviews work but conversions don't show up
Solutions:
-
Verify conversion code
// Check if tracker is loaded before calling
if (typeof sealmetrics !== 'undefined') {
sealmetrics.conv('purchase', 99.99);
} -
Check Network tab
- Look for the beacon request after conversion fires
- Verify the payload contains
"e":"purchase"and"v":99.99
-
Timing issues
- Ensure
sealmetrics.conv()is called AFTER the script loads - Use
window.addEventListener('load', ...)for page load events
- Ensure
-
Full checklist — Conversions not appearing covers snippet signature, numeric amounts, flow variants, and report verification step by step
For substantial discrepancies between SealMetrics and your ERP / CRM / internal database (missing conversions when reconciling totals), see Conversions Don't Match Your ERP, CRM, or Database — it walks through the firing-order requirement of the base pixel vs. the conversion pixel and the long tail of secondary causes.
Duplicate Conversions
Symptoms: Same order appearing multiple times
Solutions:
-
Server-side deduplication (recommended)
if (!$order->isTracked()) {
echo '<script>sealmetrics.conv("purchase", ' . $order->total . ');</script>';
$order->markAsTracked();
} -
Client-side check
var orderId = 'ORD-123';
if (!localStorage.getItem('tracked_' + orderId)) {
sealmetrics.conv('purchase', 99.99, { order_id: orderId });
localStorage.setItem('tracked_' + orderId, 'true');
}
SPA Navigation Not Tracked
Symptoms: Only first page view appears, navigation ignored
Solutions:
The tracker automatically detects History API navigation. If it's not working:
-
Hash-based routing
- Hash changes (
#/page) require manual tracking
window.addEventListener('hashchange', function() {
sealmetrics();
}); - Hash changes (
-
Custom routing
- If using a custom router, call
sealmetrics()on route changes - If you fire pageviews manually on History API navigation, load the tracker with
?spa=0to avoid double counting — see Duplicate pageviews
- If using a custom router, call
Data Discrepancy with Other Tools
Symptoms: Different numbers than Google Analytics
This is expected. SealMetrics differs because:
- No cookies — SealMetrics uses cookieless session identification, GA uses cookies
- Bot filtering — SealMetrics has different bot detection
- Session definition — Different session timeout rules
- Ad blocker immunity — SealMetrics tracks users blocked by ad blockers
See Numbers lower than another tool for the diagnosis guide and GA4 vs SealMetrics for the detailed comparison.
Network Issues
Blocked by Ad Blockers
SealMetrics is designed to work with ad blockers. If blocked:
- First-party tracking — Set up first-party tracking
- Custom domain — Use your own subdomain for the pixel
- Avoid
ReferenceError: sealmetrics is not defined— When the script is blocked, direct calls tosealmetrics.*throw aReferenceErrorthat can break the page. See FixingReferenceError: sealmetrics is not definedfor the recommended stub buffer (and the fallback per-call guard).
CORS Errors
You shouldn't see CORS errors. If you do:
- Check Content-Type — Tracker sends form-encoded beacons to avoid preflight
- Verify script URL — Use the exact URL from your dashboard
CSP Errors
If the console shows "Refused to load the script" or "Refused to connect" errors naming a Content-Security-Policy directive, your site's CSP is blocking the tracker. See CSP errors: domains to allow.
429 Too Many Requests
API rate limiting. Solutions:
- Reduce request frequency
- Implement caching
- Upgrade plan for higher limits
Data Freshness Issues
Data Appears Delayed
Hits normally reach reports within seconds. If data seems delayed:
- Check the Last hit timestamp — Top right of the Overview report; it updates within seconds of a tracked hit
- Check the date range and timezone — "Today" is defined by the site's timezone
- Processing queue — During traffic spikes, brief delays are normal
See Data delay for the full decision tree.
Content Grouping Issues
Group Not Appearing
-
Verify parameter
<script src="https://t.sealmetrics.com/t.js?id=YOUR_ID&group=blog" defer></script> -
Or use JavaScript
sealmetrics({ group: 'blog' }); -
Check Reports — Content groups appear in Pages report filters
GTM-Specific Issues
Tags Not Firing
- Consent gating — The number one cause: the tag waits for consent it doesn't need. See GTM Consent Mode blocking
- Verify trigger — Check GTM Preview mode
- Check tag type — Use Custom HTML tag
- Timing — Ensure tag fires before page unload
See Google Tag Manager integration for detailed setup.
Duplicate Pageviews with GTM
If the tracker is both hardcoded and loaded via GTM, or a stub-queued pageview runs without ?auto=0, every load counts twice. See Duplicate pageviews.
Still Having Issues?
- Check the FAQ — Common questions
- Contact support — support@sealmetrics.com
- Community — GitHub discussions