Blog
Wild & Free Tools

Adding Schema Markup to Ghost Blogs (JSON-LD via Code Injection)

Last updated: April 2026 7 min read

Table of Contents

  1. What ghost provides by default
  2. Site wide code injection
  3. Per post code injection
  4. Common ghost schema patterns
  5. Validating ghost schema
  6. Frequently Asked Questions

Ghost generates basic Article schema for posts automatically, but it's minimal — and there's no built-in way to add FAQ, HowTo, or other schema types. The fix is Ghost's Code Injection feature, which lets you paste any HTML or script into the head or footer of every page (or individual posts). Five minutes and your Ghost blog has whatever schema you need. No integration, no plugin, no developer required.

What Ghost Provides Automatically

Ghost generates these schema types out of the box:

For most blogs, this covers the basics. The Article schema in particular is well-formed and includes all the important fields. You don't need to replicate it.

What Ghost doesn't generate:

For these, you'll add custom JSON-LD via Code Injection.

Site-Wide Code Injection (Organization Schema)

For schema that should appear on every page — typically Organization schema with your real social profiles — use site-wide Code Injection:

  1. From your Ghost admin, go to Settings (gear icon)
  2. Click "Code injection"
  3. You'll see two boxes: Site Header and Site Footer
  4. Use our free generator to build Organization JSON-LD with your sameAs (social profiles), logo, and contactPoint
  5. Paste the script tag into the Site Header field
  6. Click Save

This adds your Organization schema to every page on your Ghost site. It augments Ghost's default minimal Organization schema with the fields you actually care about.

Sell Custom Apparel — We Handle Printing & Free Shipping

Per-Post Code Injection (FAQ, HowTo, Specific Posts)

For schema specific to one post — typically FAQ schema on a post with FAQs, or HowTo schema on a tutorial post — use per-post Code Injection:

  1. Open the post in the Ghost editor
  2. Click the gear icon (Post Settings) on the right
  3. Scroll down to "Code injection"
  4. You'll see Header and Footer boxes
  5. Paste your custom JSON-LD into the Header box
  6. Update the post

The schema is now in that post's head only. View source on the published post to confirm — search for "application/ld+json" and you should see both Ghost's default Article schema AND your custom addition.

Important: don't replicate the Article schema. Ghost's default Article is fine. Add complementary schema types (FAQ, HowTo) instead of overriding what's already there.

Common Ghost Schema Patterns

Three patterns cover most Ghost blogs:

Pattern 1: Personal blog. Ghost's default Article + WebSite is enough. Optionally add Person schema in Site Header injection (your name, jobTitle, sameAs to your social profiles) to strengthen author entity recognition.

Pattern 2: Niche content site. Add custom Organization schema in Site Header (with full sameAs list, contactPoint, foundingDate). On posts with FAQs, add per-post FAQ schema. On tutorial posts, add HowTo schema. Ghost's default Article handles the rest.

Pattern 3: Blog representing a business. Add LocalBusiness or full Organization schema in Site Header. On blog posts, Ghost's default Article works. On the homepage, augment with WebSite + LocalBusiness for entity strength.

Build the JSON-LD for each pattern with the generator, drop into the appropriate Code Injection field, save.

Validating Ghost Schema After Adding It

Run any new schema additions through:

  1. Schema Markup Validator (validator.schema.org) — checks general syntax
  2. Google Rich Results Test (search.google.com/test/rich-results) — checks Google compatibility

One Ghost-specific issue to watch for: if you have Code Injection AND Ghost's default schema both adding similar types (e.g., both adding Organization), you may have duplicate or conflicting schema on the page. Use the Rich Results Test on a live URL to catch this — it'll show all detected schema entities and flag any conflicts.

The fix: don't replicate. Ghost's defaults handle Article, WebSite, and basic Organization. Use Code Injection to ADD types Ghost doesn't cover, not to override what's already there.

For more on validation, see our full validation workflow guide.

Try It Free — No Signup Required

Runs 100% in your browser. No data is collected, stored, or sent anywhere.

Open Free Schema Markup Generator

Frequently Asked Questions

Does Ghost add schema markup automatically?

Yes — Ghost generates Article schema on every post and WebSite schema on the homepage automatically. It also adds basic Organization schema. For FAQ, HowTo, LocalBusiness, or extended Organization with sameAs, you need to add custom schema via Code Injection.

Where do I add custom schema in Ghost?

For site-wide schema: Settings → Code injection → Site Header. For per-post schema: open the post, click the gear icon for Post Settings, scroll to Code injection. Both accept full script tags with JSON-LD.

Will adding custom schema break Ghost's default schema?

No, as long as you don't duplicate types. Ghost outputs Article, WebSite, and basic Organization. Adding FAQ, HowTo, or extended Organization in addition is safe. Adding a second Article schema on the same post creates a conflict.

Can I override Ghost's default Article schema?

You can add another Article schema, but it's usually unnecessary — Ghost's default is well-formed. If you genuinely need different fields, edit the post.hbs template in your theme instead of layering schema via Code Injection.

Does Code Injection work on Ghost(Pro) and self-hosted Ghost?

Both. Code Injection is a core Ghost feature available on all plans, including Ghost(Pro) Starter, and on self-hosted installations. It works the same way regardless of where Ghost is hosted.

How do I add FAQ schema to a Ghost post?

Generate FAQ JSON-LD with our schema generator, then in the Ghost post editor, open Post Settings → Code injection → Header, paste the script tag, save. The visible FAQ content also needs to be on the page (Google requires schema content to match visible content).

Launch Your Own Clothing Brand — No Inventory, No Risk