WordPress Plugins
Free Tools
Claude Skills
Pricing Blog Switch to Royal Plugin Graveyard Support My Account Cart
Support/SEObolt/Custom JSON-LD in the Schema Generator

Custom JSON-LD in the Schema GeneratorPRO

SEObolt Pro's Schema Generator ships with 67 templates covering the most common schema.org types. When you need something the templates don't cover, or when you want to hand-craft a schema block to match an exact rich-result shape, the Custom JSON-LD field lets you paste a full JSON-LD block that SEObolt outputs verbatim on the page. This guide walks through where the field lives, how to paste your first block, how HTML tags inside your schema field values are preserved through save, and how to validate your JSON-LD before you paste it.

What Custom JSON-LD Is For

The Schema Generator's built-in templates cover the schema.org types most sites need: Article, Product, Service, LocalBusiness, Organization, FAQPage, HowTo, Event, and about fifty others. When you use a template, SEObolt asks you to fill named fields and it renders a schema block for you.

The Custom JSON-LD field is the escape hatch for the cases the templates don't cover. Common reasons to use it:

Whatever you paste into the Custom JSON-LD field is emitted verbatim in a <script type="application/ld+json"> tag in your page's <head>. SEObolt does not rewrite, minify, or reshape it beyond preserving your HTML tags and escaping quotes for JSON safety.

Prerequisites

SEObolt Pro 2.4.169 or later, on any tier that includes the Schema Generator. A valid JSON-LD block (see the Validate before you paste section below for how to check yours). Basic familiarity with schema.org's docs at schema.org/docs/gs.html if you're hand-writing your first block.

Where the Custom JSON-LD Field Lives

The Custom JSON-LD field is inside the Schema Generator modal, per-post (or per-page, per-CPT). It's not a site-wide setting; each post gets its own field, and each post's block emits only on that post's URL.

Open the post you want to add schema to

Edit the post or page in the WordPress editor (Gutenberg or Classic). The SEObolt SEO metabox appears below the post editor with tabs for General, Social, and Schema.

Click the Schema tab

The Schema tab shows the schema types currently attached to this post, the Schema Score badge, and an Edit Schema or Add Schema button (depending on whether anything's configured yet).

Open the Schema Generator modal

Click Edit Schema (or Add Schema) to open the Schema Generator modal. The left pane lists your currently-attached schemas. The right pane shows the fields for the selected schema.

Add a Custom JSON-LD schema

In the left pane, click + Add Schema and pick Custom JSON-LD from the type list (it's near the top, marked as free-form). A new empty entry appears in the left pane, and the right pane shows a single large textarea labeled Custom JSON-LD.

Paste your block and Save

Paste your JSON-LD (the whole block including the outer braces, @context, and @type) into the textarea. Click Save at the bottom of the modal. The Schema Score badge on the Schema tab refreshes to reflect the new block.

Validate Before You Paste

Nine out of ten "my custom JSON-LD isn't working" support tickets come down to a JSON syntax error in the block itself. A single trailing comma, a curly quote instead of a straight quote, or a missing brace, and the whole block is invalid. Browsers and Google's Rich Results test will silently ignore it.

Before you paste into SEObolt, run your block through our free Schema Validator tool. It checks JSON syntax, warns on missing required properties per schema.org, and flags common Google rich-result eligibility gaps.

Free tool, no signup

Royal Plugins Schema Validator → Paste your JSON-LD (or the URL of a page you want to validate). Instant syntax check, missing-property warnings, and Google rich result eligibility. Save it as a bookmark, it's the fastest way to catch a bad block before it ships.

If the validator surfaces errors, fix them there first, then paste the corrected block into SEObolt. That way SEObolt is receiving a known-good block, and if the schema still doesn't behave as expected on your live page you know the issue is on the plugin or theme side, not in your JSON.

HTML Tags in Field Values

Schema.org allows plain HTML inside certain field values (Article body content, product descriptions, service listings, FAQ answers, review bodies). SEObolt preserves those tags through save so you can wrap emphasis, links, and lists the way schema.org intends.

For example, this Article articleBody field with inline HTML tags is stored, escaped for JSON safety, and emitted verbatim:

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How to Use Custom JSON-LD",
  "articleBody": "Paste any <strong>JSON-LD block</strong> into the Custom field. Wrap key phrases with <em>emphasis</em>, list <ul><li>items</li><li>here</li></ul>, and include <a href='https://example.com'>links</a>."
}
Escape angle brackets when hand-writing

Inside a JSON string, HTML tags need their angle brackets escaped as &lt; and &gt; (or you can wrap the whole thing in a string and let SEObolt do the escaping on save). If you paste from a text editor that auto-converts, double-check the result in the Schema Validator before saving.

Common places where HTML in a JSON-LD field is legitimate per schema.org:

Common Templates You Can Copy

Three starter blocks below, each valid schema.org and ready to paste. Replace the placeholder values with your own before saving.

Service page

{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "Your Service Name",
  "description": "Short one-line pitch that reads well in a rich result.",
  "provider": {
    "@type": "Organization",
    "name": "Your Business Name",
    "url": "https://example.com"
  },
  "areaServed": {
    "@type": "AdministrativeArea",
    "name": "City or Region"
  },
  "serviceType": "Category label (Consulting, Repair, Cleaning, etc.)"
}

Product with in-stock offer

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Product Name",
  "description": "Product description with <strong>HTML preserved</strong> through save.",
  "brand": {
    "@type": "Brand",
    "name": "Your Brand"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/product-page",
    "priceCurrency": "USD",
    "price": "49.00",
    "availability": "https://schema.org/InStock"
  }
}

Article with author

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Your Article Title",
  "author": {
    "@type": "Person",
    "name": "Author Name",
    "url": "https://example.com/author-bio"
  },
  "datePublished": "2026-09-17",
  "dateModified": "2026-09-17",
  "articleBody": "Full body text. HTML like <em>emphasis</em> and <a href='https://example.com'>links</a> is preserved."
}

Validate each one in the Schema Validator after you fill your values in.

Troubleshooting

My block saves but doesn't render on the page

Two common causes. First, check the block validates as JSON in the Schema Validator. A silent JSON error is the top-of-list cause. Second, view your page source (right-click, View Page Source, then search for application/ld+json). If SEObolt is emitting other schema blocks but not yours, the block was rejected on save; refresh the editor, re-open the Schema Generator, and re-paste. If SEObolt isn't emitting any schema on the page at all, check Settings → Schema in the SEObolt admin for a post-type filter that excludes this page.

HTML tags in my field values got stripped

Make sure you're on SEObolt Pro 2.4.169 or later; earlier versions stripped some HTML through save on the Custom JSON-LD field. Update the plugin from the Plugins page, refresh the editor, and re-paste the block.

Schema Score badge stays at zero after save

The Schema Score badge refreshes on save (this landed in SEObolt Pro 2.4.169). If yours doesn't refresh, hard-reload the editor tab (Ctrl+Shift+R or Cmd+Shift+R) to clear any cached script. If the score is genuinely zero, run the block through the Schema Validator to check for missing required properties per schema.org for that @type.

Google's Rich Results Test flags the schema as ineligible

Rich Results eligibility is stricter than raw schema.org validity. Even a syntactically-correct block can be ineligible if it's missing properties Google specifically requires for a rich result (a Product needs an offers with priceCurrency and price, an Article needs author, etc.). The Schema Validator flags the common eligibility gaps; Google's own Rich Results Test is the final source of truth for what will render as a rich result.

Duplicate @id conflicts with a template schema I also have

If you have both a template schema (like Article from the SEObolt template) and a Custom JSON-LD block with the same @type on the same page, give your custom block a unique @id so search engines can tell them apart. Example: "@id": "https://example.com/your-page/#custom-service".