When tracking events don't fire on your Strikingly site, it's usually due to installation issues, custom code errors, or platform limitations. This guide helps you diagnose and fix common tracking problems.
For general tracking troubleshooting, see the global tracking issues guide.
Quick Diagnostic Checklist
Before diving into specific platforms, check these common issues:
- Custom code saved in Strikingly settings
- Site published after adding code
- No JavaScript errors in browser console
- Tracking ID is correct (G-, GTM-, or Pixel ID)
- Testing without ad blockers
- Code is in Header Code (not Footer)
- Page has fully loaded before testing
Google Analytics 4 (GA4) Events Not Firing
No Data in GA4 Realtime
Symptom: GA4 Realtime reports show zero active users.
Diagnosis
Step 1: Verify Installation
- Visit your Strikingly site
- Right-click → View Page Source
- Search (Ctrl+F) for your GA4 Measurement ID:
G-XXXXXXXXXX
Expected: Should find your Measurement ID in the page source.
If not found:
- Code not saved in Strikingly settings
- Site not published after adding code
- Wrong site being tested
Step 2: Check Browser Console
- Open site in Chrome
- Press F12 to open DevTools
- Go to Console tab
- Look for errors
Common errors:
Uncaught ReferenceError: gtag is not defined
Fix: GA4 code not loaded or syntax error in code.
Step 3: Check Network Requests
- In DevTools, go to Network tab
- Reload page
- Filter by "collect" or search for "google-analytics"
Expected: Should see requests to www.google-analytics.com/g/collect
If no requests:
- GA4 code not executing
- Ad blocker blocking requests
- JavaScript error preventing execution
Common Fixes
Fix 1: Code Not Saved/Published
- Log into Strikingly dashboard
- Go to Settings → Advanced → Custom Code
- Verify GA4 code is in Header Code
- Click Save
- Return to editor and click Publish
- Wait 60 seconds, then test
Fix 2: Incorrect Measurement ID
Verify your Measurement ID:
- Go to Google Analytics
- Admin → Data Streams
- Copy Measurement ID (G-XXXXXXXXXX)
- Update in Strikingly Header Code
- Save and publish
Fix 3: JavaScript Syntax Error
Check your Header Code for errors:
Bad (Missing semicolon, wrong quotes):
gtag('config', G-XXXXXXXXXX) // Missing quotes
Good:
gtag('config', 'G-XXXXXXXXXX');
Fix 4: Code in Wrong Location
Ensure code is in Header Code, not Footer:
- Strikingly Settings → Advanced → Custom Code
- Header Code field (not Footer Code)
- Save and publish
Custom Events Not Firing
Symptom: PageView works, but custom events (form_submit, button_click) don't appear.
Diagnosis
Test Event Directly:
Open browser console and run:
gtag('event', 'test_event', {
'event_category': 'test',
'event_label': 'manual_test'
});
Expected: Event appears in GA4 DebugView within 30 seconds.
If test event works: Issue is with event implementation, not GA4 setup.
If test event doesn't work: GA4 not properly initialized.
Common Fixes
Fix 1: Event Code Before GA4 Initialization
Bad (Event fires before gtag exists):
<script>
// This runs immediately, before gtag is loaded
gtag('event', 'page_load');
</script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXX"></script>
Good (Event fires after initialization):
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XXX"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXXXXX');
// Now safe to use gtag for events
document.addEventListener('DOMContentLoaded', function() {
gtag('event', 'page_load');
});
</script>
Fix 2: CSS Selectors Don't Match
If tracking button clicks:
// Check if selector matches any elements
console.log(document.querySelectorAll('.s-cta-button').length);
Expected: Should return number of matching elements (not 0).
Fix: Update selectors to match actual Strikingly classes/IDs.
Fix 3: Events Firing Before Element Exists
Bad (Element doesn't exist yet):
document.querySelector('form').addEventListener('submit', function() {
gtag('event', 'form_submit');
});
Good (Wait for DOM):
document.addEventListener('DOMContentLoaded', function() {
var form = document.querySelector('form');
if (form) {
form.addEventListener('submit', function() {
gtag('event', 'form_submit');
});
}
});
Enhanced Measurement Not Working
Symptom: Manual PageView works, but scroll/click events missing.
Check GA4 Settings
- Go to GA4 → Admin → Data Streams
- Click your web stream
- Check Enhanced measurement is enabled
- Verify which events are enabled:
- Scrolls
- Outbound clicks
- Site search
- Video engagement
- File downloads
Fix: Enable Enhanced Measurement in GA4 settings (no code changes needed).
Meta Pixel Events Not Firing
Pixel Not Loading
Symptom: Meta Pixel Helper shows no pixel detected.
Diagnosis
Step 1: Verify Installation
- Install Meta Pixel Helper extension
- Visit your Strikingly site
- Click extension icon
Expected: Green checkmark with your Pixel ID.
If no pixel detected:
- Code not installed
- Code not saved/published
- Syntax error in pixel code
Step 2: Check Console
// In browser console
typeof fbq
Expected: "function"
If: "undefined" → Pixel not loaded
Step 3: Check Network Requests
- DevTools → Network tab
- Filter by "facebook" or "fbevents"
Expected: Request to connect.facebook.net/en_US/fbevents.js
Common Fixes
Fix 1: Pixel Code Not in Header
Ensure Meta Pixel code is in Strikingly Header Code:
<!-- Meta Pixel Code -->
<script>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window, document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', 'YOUR_PIXEL_ID');
fbq('track', 'PageView');
</script>
Fix 2: Incorrect Pixel ID
- Go to Meta Events Manager
- Select your pixel → Settings
- Copy Pixel ID (15-16 digits)
- Replace in code:
fbq('init', 'YOUR_PIXEL_ID'); - Save and publish
Fix 3: Ad Blocker
Ad blockers commonly block Meta Pixel:
Test without ad blocker:
- Disable browser extensions
- Test in incognito/private mode
- Whitelist your domain
Note: Real users may have ad blockers. Consider implementing Conversions API for server-side tracking.
Custom Events Not Firing
Symptom: PageView tracked, but Lead or Purchase events missing.
Diagnosis
Test Event Manually:
// In browser console
fbq('track', 'Lead', {
content_name: 'Test Event'
});
Expected: Event appears in Meta Events Manager Test Events.
If test event works: Issue is with implementation, not pixel setup.
Common Fixes
Fix 1: Event Code Syntax Error
Bad:
fbq('track', Lead); // Missing quotes
Good:
fbq('track', 'Lead');
Fix 2: Event Fires Before fbq Loaded
Bad:
// Fires immediately, fbq might not exist yet
document.querySelector('form').addEventListener('submit', function() {
fbq('track', 'Lead');
});
Good:
document.addEventListener('DOMContentLoaded', function() {
if (typeof fbq !== 'undefined') {
document.querySelector('form').addEventListener('submit', function() {
fbq('track', 'Lead');
});
}
});
Fix 3: Form Submits Before Event Tracked
For form submissions, prevent default temporarily:
document.querySelector('form').addEventListener('submit', function(e) {
e.preventDefault();
// Track event
fbq('track', 'Lead');
// Submit form after short delay
setTimeout(function() {
e.target.submit();
}, 300);
});
Google Tag Manager (GTM) Issues
GTM Container Not Loading
Symptom: GTM Preview won't connect or tags don't fire.
Diagnosis
Step 1: Verify GTM Installation
// In browser console
typeof dataLayer
Expected: "object"
If: "undefined" → GTM not loaded
Step 2: Check dataLayer Contents
console.log(dataLayer);
Expected: Array with at least one object containing gtm.js event.
If empty: GTM code issue.
Step 3: View Page Source
Search for: GTM-XXXXXX (your container ID)
Expected: Find container ID in page source.
Common Fixes
Fix 1: Container ID Incorrect
Verify container ID:
- Go to Google Tag Manager
- Note container ID (GTM-XXXXXX)
- Search in Strikingly Header Code
- Ensure IDs match
- Save and publish
Fix 2: Only Body Code Added
GTM requires both head and noscript code. In Strikingly Header Code:
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXX');</script>
<!-- End Google Tag Manager -->
<!-- Also add noscript in header (Strikingly limitation) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-XXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
Fix 3: Container Not Published
- In GTM workspace, click Submit
- Add version name and description
- Click Publish
- Wait 30-60 seconds
- Test again
GTM Tags Not Firing
Symptom: Container loads, but specific tags don't fire.
Diagnosis with Preview Mode
- In GTM, click Preview
- Enter your Strikingly site URL
- Click Connect
- Trigger the event (click button, submit form, etc.)
- Check if tag appears in "Tags Fired" or "Tags Not Fired"
If "Tags Not Fired": Check trigger conditions.
If tag not listed at all: Tag not configured for this event.
Common Fixes
Fix 1: Trigger Conditions Not Met
In GTM Preview, check Variables tab:
- Verify variables have expected values
- Check trigger conditions match actual values
Example Issue:
- Trigger: Fire when Click Text equals "Submit"
- Actual button text: "SUBMIT" (uppercase)
- Fix: Change trigger to case-insensitive or regex
Fix 2: Built-in Variables Not Enabled
- In GTM, go to Variables
- Built-In Variables → Configure
- Enable needed variables:
- Click Text
- Click Element
- Form ID
- Page URL
- etc.
Fix 3: Tag Sequencing Issues
If tags depend on each other:
- Select tag in GTM
- Advanced Settings → Tag Sequencing
- Set appropriate firing order
- Save and publish
Strikingly-Specific Issues
Custom Code Not Executing
Problem: Code added to Strikingly but doesn't run.
Diagnosis
Check if code is present:
- View page source (Ctrl+U)
- Search for a unique string from your code
- If not found → not saved/published
Check browser console for errors:
- Press F12
- Console tab
- Look for red error messages
Common Causes
Cause 1: Code Not Saved
Fix:
- Go to Strikingly Settings → Advanced → Custom Code
- Click Save button
- Return to editor
- Click Publish
Cause 2: JavaScript Syntax Error
Common errors:
// Missing closing brace
function() {
console.log('test');
// Mismatched quotes
gtag('config', "G-XXXXXXXXXX');
// Forgot semicolon (usually okay but can cause issues)
gtag('event', 'click')
gtag('event', 'submit')
Fix: Validate JavaScript syntax with JSHint.
Cause 3: Code in Wrong Section
Header Code (loads first):
- Tracking pixels
- GTM container
- Critical JavaScript
Footer Code (loads last):
- Non-critical scripts
- Heavy libraries
- Analytics that can wait
Fix: Move tracking code to Header Code.
One-Page Site Event Tracking
Problem: Only homepage shows in analytics, no section events.
Expected Behavior: Strikingly one-page sites only have one URL.
Solution: Implement Virtual Page Views
// Track section views as page views
document.addEventListener('DOMContentLoaded', function() {
var sections = document.querySelectorAll('section');
var tracked = new Set();
var observer = new IntersectionObserver(function(entries) {
entries.forEach(function(entry) {
if (entry.isIntersecting && !tracked.has(entry.target.id)) {
tracked.add(entry.target.id);
// GA4
gtag('event', 'page_view', {
page_title: entry.target.id || 'Section',
page_location: window.location.href + '#' + entry.target.id
});
// Meta Pixel
fbq('track', 'ViewContent', {
content_name: entry.target.id || 'Section'
});
}
});
}, { threshold: 0.5 });
sections.forEach(function(section) {
observer.observe(section);
});
});
Form Submissions Not Tracked
Problem: Contact form submits but no event tracked.
Strikingly Form Behavior
Strikingly forms may submit via AJAX without page reload, making tracking tricky.
Solution: Track Submit Event
document.addEventListener('DOMContentLoaded', function() {
var forms = document.querySelectorAll('form, .s-contact-form');
forms.forEach(function(form) {
form.addEventListener('submit', function(e) {
// Track with GA4
if (typeof gtag !== 'undefined') {
gtag('event', 'form_submit', {
form_name: 'contact'
});
}
// Track with Meta Pixel
if (typeof fbq !== 'undefined') {
fbq('track', 'Lead');
}
// Track with GTM
if (typeof dataLayer !== 'undefined') {
dataLayer.push({
'event': 'formSubmit',
'formName': 'contact'
});
}
});
});
// Also watch for success message
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
mutation.addedNodes.forEach(function(node) {
if (node.classList && node.classList.contains('s-form-success')) {
if (typeof gtag !== 'undefined') {
gtag('event', 'form_success');
}
if (typeof fbq !== 'undefined') {
fbq('track', 'CompleteRegistration');
}
}
});
});
});
observer.observe(document.body, {
childList: true,
subtree: true
});
});
Debugging Tools
Browser Console Commands
Check if platforms loaded:
// GA4
typeof gtag !== 'undefined'
// Meta Pixel
typeof fbq !== 'undefined'
// GTM
typeof dataLayer !== 'undefined'
View dataLayer:
console.table(dataLayer)
Test event immediately:
// GA4
gtag('event', 'test', {test: true});
// Meta Pixel
fbq('track', 'Lead');
// GTM
dataLayer.push({'event': 'test'});
Browser Extensions
Install these extensions for debugging:
Platform Debug Tools
GA4 DebugView:
- Add to code:
gtag('config', 'G-XXX', {'debug_mode': true}); - In GA4, go to Admin → DebugView
- View real-time events with full details
Meta Test Events:
- In Meta Events Manager, go to Test Events tab
- Enter test browser code if needed
- Visit your site and trigger events
- See events appear in real-time
GTM Preview Mode:
- Click Preview in GTM
- Connect to your site
- See all tags, triggers, and variables
- Debug in real-time
Comprehensive Testing Checklist
Before considering tracking fixed:
- Tracking code visible in page source
- No JavaScript errors in console
- Browser console confirms platform loaded (gtag/fbq/dataLayer)
- Network tab shows tracking requests
- Browser extension confirms pixel/tag active
- Real-time data in platform (GA4/Meta/GTM)
- Custom events fire correctly
- Form submissions tracked
- Button clicks tracked
- Tested without ad blockers
- Tested in incognito mode
- Tested on mobile device
- All tracking IDs correct
- Container/workspace published (GTM)
When to Get Help
Consider professional help if:
- Tracking works intermittently
- Complex multi-platform setup
- Server-side tracking needed
- Custom e-commerce implementation
- Multiple conflicting implementations
Resources:
- Strikingly Support: support.strikingly.com
- GA4 Help: support.google.com/analytics
- Meta Help: facebook.com/business/help
- GTM Help: support.google.com/tagmanager
Next Steps
For general tracking troubleshooting, see Global Tracking Issues Guide.