Method 1: paste the code (free)
Generate the markup
Build your schema in LocalSchema and copy the script tag.
Open page settings
In the Designer, open Pages, pick the page → Settings → Custom code → Inside <head> tag. (For the whole site: Site settings → Custom code → Head code.)
Paste and publish
Paste the script, save and publish. Custom code runs on the published site only.
Test
Check the published URL with the LocalSchema checker or Rich Results Test.
<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 Webflow for every update.
One embed per location
Copy each location's script tag from LocalSchema's Embed tab.
Use a CMS field
On a Locations collection, add a plain-text field for the embed key and build the script URL in the collection page's head code — every location page gets its own always-current markup.
<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 Webflow pitfalls
- Custom code requires a paid site plan to publish.
- Don't wrap CMS-inserted text in JSON without escaping quotes; a hosted embed avoids that problem entirely.