Skip to content

Schema for Shopify

How to add LocalBusiness schema to Shopify

Shopify themes usually output Product and Organization markup, but not LocalBusiness details for a physical store. Add it to your theme layout once, or to just the store-locator page.

Method 1: paste the code (free)

  1. Generate the markup

    Build your schema in LocalSchema (Store or a more specific type) and copy the script tag.

  2. Open the theme code

    In Shopify admin: Online Store → Themes → … → Edit code, then open layout/theme.liquid.

  3. Paste before </head>

    Paste the script just before the closing </head> tag and save. Or add a Custom Liquid section on only the store page via the theme editor.

  4. Test

    Check the storefront page with the LocalSchema checker.

JSON-LD script tag
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Plumber",
  "@id": "https://lonestarplumbing.example/#localbusiness",
  "name": "Lone Star Plumbing Co.",
  "legalName": "Lone Star Plumbing Company LLC",
  "description": "Licensed Austin plumbers for leaks, water heaters, drain cleaning and repiping. Upfront flat-rate pricing and 24/7 emergency service.",
  "slogan": "Fixed right, the first time.",
  "url": "https://lonestarplumbing.example",
  "logo": "https://lonestarplumbing.example/logo.png",
  "image": [
    "https://lonestarplumbing.example/img/van-16x9.jpg",
    "https://lonestarplumbing.example/img/team-1x1.jpg"
  ],
  "foundingDate": "2004-06-15",
  "telephone": "+1 512-555-0144",
  "email": "service@lonestarplumbing.example",
  "priceRange": "$$",
  "currenciesAccepted": "USD",
  "paymentAccepted": "Cash, Credit Card, Check, Financing",
  "knowsLanguage": [
    "English",
    "Spanish"
  ],
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "4810 Burnet Rd, Suite 200",
    "addressLocality": "Austin",
    "addressRegion": "TX",
    "postalCode": "78756",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 30.320371,
    "longitude": -97.739614
  },
  "areaServed": [
    {
      "@type": "Place",
      "name": "Austin"
    },
    {
      "@type": "Place",
      "name": "Round Rock"
    },
    {
      "@type": "Place",
      "name": "Cedar Park"
    },
    {
      "@type": "Place",
      "name": "Pflugerville"
    },
    {
      "@type": "Place",
      "name": "Georgetown"
    },
    {
      "@type": "GeoCircle",
      "geoMidpoint": {
        "@type": "GeoCoordinates",
        "latitude": 30.320371,
        "longitude": -97.739614
      },
      "geoRadius": 40000
    }
  ],
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday"
      ],
      "opens": "07:00",
      "closes": "19:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "08:00",
      "closes": "16:00"
    }
  ],
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "Plumbing services",
    "itemListElement": [
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Drain cleaning",
          "description": "Kitchen, bath and main line clearing with camera inspection."
        },
        "priceSpecification": {
          "@type": "PriceSpecification",
          "minPrice": "149.00",
          "priceCurrency": "USD"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Water heater installation",
          "description": "Tank and tankless installs, haul-away included."
        },
        "priceSpecification": {
          "@type": "PriceSpecification",
          "minPrice": "1400.00",
          "priceCurrency": "USD",
          "maxPrice": "4200.00"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Leak detection",
          "description": "Non-invasive slab and wall leak location."
        },
        "price": "295.00",
        "priceCurrency": "USD"
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Emergency plumbing",
          "description": "24/7 burst pipe and overflow response."
        },
        "priceSpecification": {
          "@type": "PriceSpecification",
          "minPrice": "189.00",
          "priceCurrency": "USD"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Whole-home repiping",
          "description": "PEX repipe with drywall patching."
        },
        "priceSpecification": {
          "@type": "PriceSpecification",
          "minPrice": "6500.00",
          "priceCurrency": "USD"
        }
      }
    ]
  },
  "sameAs": [
    "https://maps.app.goo.gl/lonestarplumbing-example",
    "https://www.yelp.com/biz/lone-star-plumbing-co-austin",
    "https://www.facebook.com/lonestarplumbingatx",
    "https://www.bbb.org/us/tx/austin/profile/plumber/lone-star-plumbing-co",
    "https://nextdoor.com/pages/lone-star-plumbing-co-austin-tx"
  ]
}
</script>

Sample for a plumber — generate your own in the builder or on your business type's page.

Method 2: hosted embed (Pro)

Paste one script once. Hours, holiday closures and services you change in LocalSchema reach the site automatically — no more editing Shopify for every update.

  1. Copy the embed script

    In LocalSchema, open the location's Embed tab and copy the script tag.

  2. Paste once in theme.liquid

    Same place, before </head>. Holiday hours and new branches are then managed in LocalSchema, not in theme code.

Hosted embed script
<script src="https://local-schema-beacon.lovable.app/s/loc_yourkey.js" async></script>

Your real key is on the location's Embed tab after you publish it.

Common Shopify pitfalls

  • Duplicate the theme before editing code so you can roll back.
  • Theme updates can replace theme.liquid edits — re-check the markup after switching or updating themes.
  • Keep LocalBusiness for the shop location; product markup belongs on product pages.

FAQ