Ghost CMS blog link preview (link card) error


If your Ghost CMS blog link preview (link card) is no longer generating properly (e.g., on Slack, LINE, Discord, Facebook, etc.), it usually means something is broken with the Open Graph / meta tags that Ghost uses to create rich previews. Here’s a quick checklist to diagnose and fix the issue:
✅ 1. Check Open Graph Tags
Ghost automatically adds OG tags like:
<meta property="og:title" content="Your Post Title">
<meta property="og:description" content="Your excerpt or custom meta description">
<meta property="og:image" content="https://yourdomain.com/path-to-image.jpg">
<meta property="og:url" content="https://yourdomain.com/post-url">
👉 Test your blog URL in an Open Graph debugger:
If these tools return errors like Missing og:image
or Can't fetch URL
, then Ghost isn't outputting the correct metadata.
✅ 2. Check Post Settings in Ghost
When editing your post in Ghost Admin:
Make sure meta title, meta description, and feature image are all filled.
Feature image =
og:image
✅ 3. Check Your Blog URL Setup
If you recently changed your domain or custom domain setup (e.g. from blog.neteon.ai
to neteon.ai/blog
), then:
OG
og:url
could be mismatchedCanonical URLs might be broken
Preview generators can't find the correct metadata
👉 Make sure the site.url
in Ghost config (config.production.json
) is updated to match your live domain.
✅ 4. Verify Image Accessibility
Link previews won’t render if the image URL:
Is behind authentication
Is on a non-https domain
Uses a broken CDN URL
Use a direct link to the image and test if it loads in incognito mode or curl.
✅ 5. Check Your CDN / Caching Layer
If you're using Cloudflare, Netlify, or other reverse proxies:
Clear the cache
Disable bot blocking (which can block link preview crawlers)
✅ 6. Force Metadata Refresh
After fixing metadata, force preview refresh via:
Facebook Debugger → Click “Scrape Again”
LinkedIn Inspector → Reanalyze
Example Fix for config.production.json:
{
"url": "https://neteon.ai/blog",
...
}
Then restart Ghost with
ghost restart
Method 2
Most Likely Causes & Solutions
1. Cloudflare SSL/TLS Mode
This is often the primary culprit when link previews suddenly stop working:
Check your SSL/TLS mode: Go to your Cloudflare dashboard → SSL/TLS → Overview
Recommended setting: Change to "Full (strict)" mode if you have a valid SSL certificate on your origin server
Alternative: If you don't have an SSL certificate on your server, use "Full" mode
Avoid: "Flexible" mode can cause issues with link previews as it creates a mixed content situation
2. Cloudflare Firewall Rules
Cloudflare's firewall might be blocking the requests that platforms use to generate link previews:
Go to Cloudflare Dashboard → Security → WAF
Check if any firewall rules are blocking user agents commonly used by social media platforms
Look for blocks on requests without referers or from specific IP ranges
Temporarily disable security features to test if this resolves the issue
3. Open Graph Tags Verification
First, let's verify that your Ghost blog still has the necessary meta tags:
curl -I https://yourblog.com/post-slug
Or use online tools like:
4. Cloudflare Caching Issues
Cloudflare's cache might be serving old versions without proper meta tags:
Clear Cloudflare cache: Go to Caching → Configuration → Purge Cache → Purge Everything
Check cache rules: Ensure your HTML pages aren't being cached for too long
Bypass cache: Add
?cf_clear=1
to your URL when testing
Additional Troubleshooting Steps
5. Ghost CMS Theme Issues
Your theme might have been updated or modified:
Switch to a default Ghost theme temporarily to test
Check your current theme's
default.hbs
file for Open Graph tagsEnsure your theme includes the Ghost
{{ghost_head}}
helper
6. DNS and Proxy Settings
Verify your DNS and proxy configuration:
Ensure your DNS records are properly configured (A/AAAA or CNAME)
Check that the proxy status (orange cloud) is enabled for your domain
Verify there are no recent DNS changes
7. Server-Side Checks
Investigate potential server issues:
Check your server error logs for any issues
Verify your SSL certificate is valid and not expired
Ensure your server isn't blocking requests from social media platforms
8. Test with Different Platforms
Test your links across different platforms to see if it's platform-specific:
Facebook
Twitter/X
LinkedIn
Discord
Slack
Quick Diagnostic Commands
Run these commands to diagnose potential issues:
# Check HTTP headers and response
curl -I https://yourblog.com/post-slug
# Check if Open Graph tags are present
curl -s https://yourblog.com/post-slug | grep -i og:
# Test with different user agents
curl -A "facebookexternalhit/1.1" -I https://yourblog.com/post-slug
curl -A "Twitterbot" -I https://yourblog.com/post-slug
If All Else Fails
If none of these solutions work, consider:
Temporarily pause Cloudflare: Point your DNS directly to your server to isolate if Cloudflare is the issue
Check Ghost CMS version: Ensure you're running a recent, stable version
Contact Ghost support: They may have insights into recent changes
Review recent changes: Think about any updates or changes made around the time the issue started
The most common solution is usually adjusting the Cloudflare SSL/TLS mode or clearing the cache. Start with those steps and work your way through the list. Would you like me to elaborate on any specific part of this troubleshooting process?
Let me know if you want me to test a link for you, or if you changed domains recently — I can help pinpoint what’s broken.
Subscribe to my newsletter
Read articles from Erik Chen directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
