JSON-LD Generator

🏗️ Nested Schema & @id Linking: The Ultimate SEO Architecture Guide (2026) UPDATED JUNE 2026

When you markup a product page, you're not just telling Google "this is a phone." You must explain that these reviews relate to this product, and this FAQ answers questions specifically about it. Without using @id, search engines see disconnected entities, not a unified structure.

[WebPage] --mainEntity--> [Product] --review--> [Review]
                                      --subjectOf--> [FAQPage]
                                      --position--> [BreadcrumbList]

🚀 New in 2026: Visual @graph Builder with A/B Testing

Our JSON-LD Generator now includes cutting-edge features for building complex semantic graphs:

🔗 @graph Mode Automatically link entities with @id references for perfect semantic relationships
🔬 A/B SERP Preview See exactly how your interconnected schema will appear in Google search results
📊 Confidence Score (0-100) Real-time validation ensures your @graph structure meets 2026 requirements
⚡ One-Click Export Export optimized @graph code for WordPress, Shopify, Webflow, and more

1. The Problem of "Disconnected Blocks"

Common mistake: insert one script for Breadcrumbs, another for Product, a third for FAQ. For Google, these are three separate contexts.

❌ BEFORE: Disconnected Schema

Google sees:

  • 1 isolated Product
  • 1 isolated FAQPage
  • 1 isolated BreadcrumbList
  • No relationships between them

Result: Google must guess connections, potentially misinterpreting your page structure.

✅ AFTER: Unified Data Graph

Google sees:

  • 1 cohesive Product entity
  • FAQPage linked via subjectOf
  • BreadcrumbList providing hierarchy
  • All entities interconnected

Result: Google understands complete page semantics and relationships.

2. @id Magic: Creating Unique Anchors

The @id field is a unique identifier for an entity. Typically, it's the page URL with a hashtag anchor. For example:

🎯 Best Practice: Always Use Canonical URLs

Always use the canonical URL of the page as the base for your @id values. This prevents issues if the page is accessible through different URLs (with parameters or without). For example:

  • Good: https://site.com/product/iphone-15#product
  • Avoid: https://site.com/product/iphone-15?ref=promo#product
  • Also avoid: https://site.com/product/iphone-15/#product (trailing slash inconsistencies)

3. Perfect Architectural Example (Complete Graph)

Here's how to combine Product, Reviews, Rating, FAQ, and Breadcrumbs into one seamless chain within a single <script> tag:


{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebPage",
      "@id": "https://example.com/iphone-15",
      "name": "iPhone 15 Pro Product Page",
      "description": "Official page for iPhone 15 Pro with reviews and FAQ",
      "breadcrumb": { "@id": "https://example.com/iphone-15#breadcrumb" },
      "mainEntity": { "@id": "https://example.com/iphone-15#product" }
    },
    {
      "@type": "Product",
      "@id": "https://example.com/iphone-15#product",
      "name": "iPhone 15 Pro",
      "image": [
        "https://example.com/images/iphone-15-front.jpg",
        "https://example.com/images/iphone-15-back.jpg"
      ],
      "description": "Latest Apple smartphone with A17 Pro chip",
      "brand": { 
        "@type": "Brand", 
        "name": "Apple",
        "@id": "https://example.com/brands/apple#brand"
      },
      "sku": "IP15P-256-BLK",
      "gtin13": "0194254338932",
      "offers": {
        "@type": "Offer",
        "price": "999",
        "priceCurrency": "USD",
        "priceValidUntil": "2026-12-31",
        "availability": "https://schema.org/InStock",
        "url": "https://example.com/iphone-15",
        "shippingDetails": {
          "@type": "OfferShippingDetails",
          "shippingRate": {
            "@type": "MonetaryAmount",
            "value": "0",
            "currency": "USD"
          },
          "shippingDestination": {
            "@type": "DefinedRegion",
            "addressCountry": "US"
          }
        }
      },
      "aggregateRating": {
        "@type": "AggregateRating",
        "ratingValue": "4.9",
        "reviewCount": "850",
        "bestRating": "5",
        "worstRating": "1"
      },
      "review": [
        {
          "@type": "Review",
          "@id": "https://example.com/iphone-15#review-1",
          "author": { 
            "@type": "Person", 
            "name": "John Doe",
            "url": "https://example.com/users/johndoe"
          },
          "reviewRating": { 
            "@type": "Rating", 
            "ratingValue": "5",
            "bestRating": "5"
          },
          "reviewBody": "Excellent battery life and camera quality.",
          "datePublished": "2026-01-10"
        },
        {
          "@type": "Review",
          "@id": "https://example.com/iphone-15#review-2",
          "author": { 
            "@type": "Person", 
            "name": "Jane Smith" 
          },
          "reviewRating": { 
            "@type": "Rating", 
            "ratingValue": "4",
            "bestRating": "5"
          },
          "reviewBody": "Great phone but a bit expensive.",
          "datePublished": "2026-01-15"
        }
      ],
      "subjectOf": { "@id": "https://example.com/iphone-15#faq" }
    },
    {
      "@type": "FAQPage",
      "@id": "https://example.com/iphone-15#faq",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Is it water resistant?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Yes, iPhone 15 Pro has an IP68 rating, meaning it can withstand submersion in up to 6 meters of water for 30 minutes."
          }
        },
        {
          "@type": "Question",
          "name": "Does it support 5G?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Yes, iPhone 15 Pro supports all major 5G bands worldwide."
          }
        }
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://example.com/iphone-15#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://example.com/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Smartphones",
          "item": "https://example.com/category/smartphones"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Apple",
          "item": "https://example.com/category/smartphones/apple"
        },
        {
          "@type": "ListItem",
          "position": 4,
          "name": "iPhone 15 Pro",
          "item": "https://example.com/iphone-15"
        }
      ]
    }
  ]
}

🧠 Why This Works Perfectly

We used the @graph array. This tells Google: "Here's the map of my content." We connected FAQ to Product via the subjectOf field using only @id. We also included the WebPage entity and linked everything together with Breadcrumbs. This saves space and creates clean semantic relationships that Google loves.

Key relationships established:

  • WebPage → Product (mainEntity)
  • Product → Reviews (review)
  • Product → FAQ (subjectOf)
  • WebPage → Breadcrumbs (breadcrumb)

Your Target: 90-100 Confidence Score - Our generator validates @graph structure automatically!

Common "Nesting" Mistakes

  • Circular References: Don't reference an object that references you back (Product -> FAQ -> Product). This can confuse parsers.
  • Protect Your @id: If you change the ID format (was #prod, became #item), Google may perceive this as new, unrelated data.
  • Missing Canonical Consistency: Mixing www and non-www versions in @id values creates duplicate entities.
  • Over-Nesting: Don't nest more than 3-4 levels deep. Keep your graph reasonably flat for better parser performance.
  • Missing shippingDetails (2026): Google now requires explicit shipping information in Offer schema for e-commerce.

🎯 PRO Tip: Testing Your Graph

After implementing your @graph structure, test it with Google's Rich Results Test and Schema Validator. Look for "All good" messages and ensure all relationships are properly recognized. Use our generator to build complex graphs with automatic validation and confidence scoring.

🚀 Want to Build a Complex Graph?

Our tool generates clean JSON-LD with @graph mode, visual A/B testing, confidence scoring, and one-click export. Perfect for e-commerce, SaaS, and content-heavy sites.

Go to Generator →

Free • No registration • 98/100 Confidence Score • A/B Preview

Need help? Check our implementation guide for frameworks.

Related Articles