Ghost websites may encounter performance issues, tracking failures, and integration problems. This guide provides systematic approaches to diagnose and resolve common Ghost-specific issues.
Common Issue Categories
Performance Issues
- Slow Page Load Times - Theme optimization, image handling, CDN configuration
- Large Contentful Paint (LCP) - Hero images, theme CSS, Ghost Admin assets
- Cumulative Layout Shift (CLS) - Dynamic content loading, Portal widget, ads
- First Input Delay (FID) - Heavy JavaScript, tracking scripts, theme interactions
- Time to First Byte (TTFB) - Server configuration, database queries, caching
Tracking and Analytics Issues
- Events Not Firing - GA4, Meta Pixel, GTM integration problems
- Duplicate Tracking - Multiple pixel fires, code injection conflicts
- Missing Data - Member context issues, cache problems, ad blockers
- Incorrect Attribution - Cross-domain tracking, referrer issues
- Data Layer Errors - GTM variable problems, Handlebars issues
Integration Problems
- Code Injection Failures - Syntax errors, Ghost cache, Handlebars limitations
- Theme Modification Issues - Upload errors, activation failures, Ghost version conflicts
- Ghost Portal Conflicts - Member widget issues, payment failures, styling conflicts
- API Rate Limits - Content API throttling, Admin API restrictions
- Webhook Failures - Stripe integration issues, server connectivity problems
Content and Member Issues
- Member Access Problems - Login failures, content visibility, tier restrictions
- Email Delivery Issues - Newsletter failures, SMTP configuration, bounce handling
- Search Not Working - Ghost search configuration, index problems
- Image Optimization - Large images, format issues, responsive images
- SEO Problems - Meta tags, structured data, sitemap generation
Systematic Troubleshooting Approach
Step 1: Identify the Problem
Collect Information:
- What is the expected behavior?
- What is the actual behavior?
- When did the problem start?
- Does it affect all users or specific segments?
- Is it reproducible consistently?
Check Error Messages:
# Self-hosted Ghost: Check logs
ghost log
# Or direct log access
tail -f /var/www/ghost/content/logs/*.log
# Browser console errors
# Open DevTools → Console
# Look for red error messages
Step 2: Isolate the Cause
Test in Different Contexts:
- Incognito/private browsing (eliminates extensions)
- Different browsers (Chrome, Firefox, Safari)
- Different devices (desktop, mobile, tablet)
- Logged in vs. logged out (member context)
- Different networks (home, office, mobile data)
Disable Potential Conflicts:
- Temporarily remove code injection
- Test with default Ghost theme
- Disable browser extensions
- Pause CDN/caching temporarily
Step 3: Review Recent Changes
Check Ghost Admin:
- Recent theme uploads
- Code injection modifications
- Integration additions
- Ghost version updates
- Member tier changes
Review Analytics Platforms:
- GTM container changes
- GA4 configuration updates
- Meta Pixel modifications
- Tag changes or deletions
Step 4: Verify Configuration
Ghost Settings:
- Settings → General - Site URL, timezone, language
- Settings → Code Injection - Syntax errors, script conflicts
- Settings → Labs - Feature flags, API access
- Settings → Integrations - Active integrations, webhooks
Theme Configuration:
- Verify theme version compatibility
- Check
package.jsonfor Ghost version requirement - Review
default.hbs,post.hbs,page.hbsfor errors
Step 5: Test and Validate
Performance Testing:
- Google PageSpeed Insights
- WebPageTest
- GTmetrix
- Chrome DevTools → Lighthouse
Tracking Validation:
- Google Tag Assistant
- Meta Pixel Helper
- GA4 DebugView
- GTM Preview Mode
Quick Diagnostic Checklist
Ghost Site Not Loading
- Check Ghost service status (
ghost statusfor self-hosted) - Verify DNS settings and domain configuration
- Check SSL certificate validity
- Review server resources (CPU, memory, disk space)
- Check database connection
- Review Ghost logs for errors
Tracking Not Working
- Verify tracking code present in page source (View Source)
- Check browser console for JavaScript errors
- Test with ad blockers disabled
- Verify measurement IDs/pixel IDs correct
- Check GTM container published (if using GTM)
- Test in incognito mode
- Verify data layer populates (for GTM)
Performance Issues
- Run Lighthouse audit
- Check image sizes and formats
- Review number of HTTP requests
- Test with caching disabled
- Verify CDN configuration
- Check for render-blocking resources
- Review JavaScript bundle size
Member/Portal Issues
- Verify Ghost Members enabled (Settings → Membership)
- Check Stripe integration configured
- Test Portal in different browsers
- Review browser console for errors
- Verify email configuration
- Check member tier settings
- Test with different member states
Common Ghost-Specific Issues
Issue: Ghost Cache Not Clearing
Symptoms:
- Old content still showing after updates
- Code injection changes not appearing
- Theme modifications not visible
Solutions:
For Ghost(Pro):
# Ghost(Pro) automatically handles caching
# Wait 5-10 minutes for CDN refresh
# Or contact Ghost support to force cache clear
For Self-Hosted:
# Restart Ghost
ghost restart
# Clear Redis cache (if using Redis)
redis-cli FLUSHALL
# Clear Varnish cache (if using Varnish)
varnishadm ban req.url "~" "."
# Clear Nginx cache
rm -rf /var/cache/nginx/*
nginx -s reload
Issue: Handlebars Helpers Not Working
Symptoms:
\{\{@member\}\}not populating\{\{#post\}\}context missing- Custom helpers undefined
Solutions:
- Verify helpers used in correct context (post.hbs vs. default.hbs)
- Check Ghost version supports the helper
- Review Ghost Handlebars documentation
- Test in theme partials vs. code injection (limited support in code injection)
Issue: Ghost Portal Not Appearing
Symptoms:
- Member signup widget missing
- Portal button doesn't open
- Portal styling broken
Solutions:
Verify Members Enabled:
- Navigate to Settings → Membership
- Ensure "Members" toggle is ON
Check Portal Configuration:
// In browser console, check Portal settings
console.log(window.ghost);
// Should show Portal configuration
- Verify Portal Script Loads:
// Check for Portal script
console.log(document.querySelector('script[src*="portal"]'));
// Should return script element
- Fix Portal Styling Conflicts:
/* In theme CSS, ensure no conflicts */
.ghost-portal-frame {
z-index: 9999 !important;
}
Issue: Ghost Admin API Rate Limiting
Symptoms:
- 429 Too Many Requests errors
- API calls failing intermittently
- Webhook failures
Solutions:
Rate Limits:
- Content API: 10,000 requests per hour
- Admin API: 1,000 requests per hour
Implement Rate Limiting:
const rateLimit = require('express-rate-limit');
const apiLimiter = rateLimit({
windowMs: 60 * 60 * 1000, // 1 hour
max: 900, // Stay under 1000/hour limit
message: 'Too many requests, please try again later.'
});
app.use('/api/', apiLimiter);
Cache API Responses:
const NodeCache = require('node-cache');
const cache = new NodeCache({ stdTTL: 600 }); // 10 minute cache
async function getCachedPosts() {
const cached = cache.get('posts');
if (cached) return cached;
const posts = await api.posts.browse();
cache.set('posts', posts);
return posts;
}
Ghost Version-Specific Issues
Ghost 5.x Issues
Theme Compatibility:
- Ensure theme supports Ghost 5.x in
package.json - Update Handlebars syntax for new helpers
- Review breaking changes in Ghost 5.0 migration guide
Member Tiers:
- Ghost 5.x introduced multiple tiers
- Update tracking code for
@member.subscriptions(array, not single object) - Review tier-based content access
Ghost 4.x to 5.x Migration
Common Problems:
{{!-- Ghost 4.x (deprecated) --}}
{{@member.subscription}}
{{!-- Ghost 5.x (correct) --}}
{{@member.subscriptions.[0]}}
Debugging Tools and Resources
Browser DevTools
Console:
// Check for errors
// Open DevTools → Console → Look for red errors
// Verify tracking functions exist
console.log(typeof gtag); // "function"
console.log(typeof fbq); // "function"
console.log(typeof dataLayer); // "object"
Network Tab:
// Monitor tracking requests
// DevTools → Network → Filter by "google-analytics" or "facebook"
// Verify requests send successfully (200 status)
Application Tab:
// Check cookies and localStorage
// DevTools → Application → Cookies
// Verify _ga, _fbp, ghost-members-ssr cookies
Ghost CLI Diagnostics
# Check Ghost status
ghost status
# View Ghost logs
ghost log
# Run Ghost doctor (checks configuration)
ghost doctor
# Check Ghost version
ghost version
# Test database connection
ghost setup
# Update Ghost
ghost update
Performance Monitoring
- LCP (Largest Contentful Paint): < 2.5s
- FID (First Input Delay): < 100ms
- CLS (Cumulative Layout Shift): < 0.1
Monitoring Tools:
- Google Search Console → Core Web Vitals report
- Chrome User Experience Report (CrUX)
- Real User Monitoring (RUM) tools
Getting Additional Help
Ghost Support Resources
Official Documentation:
Community Support:
Ghost(Pro) Support:
- Email: support@ghost.org
- Available 24/7 for Ghost(Pro) customers
- Response time: Usually within 24 hours
Analytics Platform Support
Meta:
Specific Troubleshooting Guides
For detailed solutions to specific problems:
- Performance - LCP Issues - Ghost-specific LCP optimization
- Performance - CLS Issues - Fix layout shifts in Ghost
- Tracking - Events Not Firing - Debug tracking issues
Preventive Maintenance
Regular Health Checks
Weekly:
- Review Ghost logs for errors
- Check uptime monitoring reports
- Verify backup completion
- Test critical user flows (signup, login, purchase)
Monthly:
- Run Lighthouse performance audit
- Review tracking accuracy in analytics platforms
- Test all integrations (Stripe, email, webhooks)
- Update Ghost and themes to latest versions
- Review and optimize database
Quarterly:
- Comprehensive security audit
- Review and update SSL certificates
- Performance optimization review
- User experience testing
- Disaster recovery testing
Monitoring Setup
Uptime Monitoring:
Error Tracking:
Performance Monitoring:
Related Resources
- Global Troubleshooting Guide - Universal troubleshooting concepts
- Ghost Documentation - Official Ghost documentation
- Ghost Forum - Community support