Technical — Structured Data

Teaching Google Who You Are

Your homepage looksobvious to a human. To Google it's just text until you spell it out in a language machines read: JSON-LD. This is the markup that moves you from “some website” to a defined entity in the Knowledge Graph — and makes you eligible for Knowledge Panels and AI citations.

Without JSON-LD

Google guesses from raw text. It may not connect your name, address, services and reviews into one entity. No Knowledge Panel, weak AI citations, easily mistaken for a reseller page.

With JSON-LD

You hand Google a labelled fact sheet: name, type, location, services, ratings. It builds a confident entity, shows a Knowledge Panel, and cites you in AI answers as an independent Insurance Agency.

InsuranceAgency

The entity (LocalBusiness)

The cornerstone. This is the block that tells Google “this is a real, independent business at this address” — the seed of a Knowledge Panel. The @id makes it reusable across the site.

InsuranceAgency.jsonld
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "InsuranceAgency",
  "@id": "https://x-consultant.com/#org",
  "name": "x-consultant",
  "description": "Independent Insurance Agency in Cebu City — HMO, life and health coverage for families, nurses and BPO workers.",
  "url": "https://x-consultant.com",
  "logo": "https://x-consultant.com/logo.png",
  "image": "https://x-consultant.com/office.jpg",
  "telephone": "+63-32-000-0000",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Cebu Business Park",
    "addressLocality": "Cebu City",
    "addressRegion": "Cebu",
    "postalCode": "6000",
    "addressCountry": "PH"
  },
  "geo": { "@type": "GeoCoordinates", "latitude": 10.3157, "longitude": 123.8854 },
  "areaServed": { "@type": "City", "name": "Cebu City" },
  "openingHours": "Mo-Fr 08:00-18:00",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.9",
    "reviewCount": "87"
  },
  "sameAs": [
    "https://www.facebook.com/xconsultant",
    "https://www.linkedin.com/company/xconsultant"
  ]
}
</script>
FAQPage

FAQ (citable passages)

Question/answer pairs are the format AI Overviews and ChatGPT love to lift and cite. Each answer is a self-contained, quotable passage.

FAQPage.jsonld
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Do you offer HMO plans for nurses in Cebu?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. We arrange HMO coverage for nurses and healthcare workers in Cebu, with no-deposit options and full claims support."
      }
    },
    {
      "@type": "Question",
      "name": "Is the first consultation free?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes — your first consultation with an x-consultant advisor is free and carries no obligation."
      }
    }
  ]
}
</script>
BreadcrumbList

Breadcrumbs (structure)

Shows Google the page's place in your topical hierarchy and earns breadcrumb rich results — reinforcing topical authority.

BreadcrumbList.jsonld
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://x-consultant.com" },
    { "@type": "ListItem", "position": 2, "name": "HMO", "item": "https://x-consultant.com/hmo" },
    { "@type": "ListItem", "position": 3, "name": "HMO for Nurses in Cebu", "item": "https://x-consultant.com/hmo-nurses-cebu" }
  ]
}
</script>
Service

Service (what you offer)

Links a specific offering back to your entity via @id, with audience and area served. Connects “what” to “who” and “where”.

Service.jsonld
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Service",
  "serviceType": "HMO & Health Insurance Advisory",
  "provider": { "@id": "https://x-consultant.com/#org" },
  "areaServed": { "@type": "City", "name": "Cebu City" },
  "audience": { "@type": "Audience", "audienceType": "Nurses, BPO workers, families" },
  "offers": {
    "@type": "Offer",
    "price": "0",
    "priceCurrency": "PHP",
    "description": "Free first consultation"
  }
}
</script>

Four rules that make it work

  • 1Match the markup to the visible page. Schema must describe what users actually see — fake ratings or hidden content get penalized.
  • 2Use a single @id for your entity and reference it everywhere. One canonical entity, many connected pages.
  • 3Keep NAP identical to your Google Business Profile and every directory. Any mismatch dilutes the entity.
  • 4Validate before shipping with Google’s Rich Results Test and Schema.org validator.