Method 1: paste the code (free)
Generate the markup
Build your schema in LocalSchema and copy the script tag — or let the agent call the API (next step).
Ask Lovable to add it
In chat: “Add this LocalBusiness JSON-LD to the head of the homepage” and paste the script. Lovable adds it to the page's head so it's in the server-rendered HTML.
Or let the agent use the API
Paste the agent prompt from the LocalSchema developer docs. The agent calls the free API, inserts the script tag and re-checks the live page.
Publish and test
Publish, then run the live URL through the LocalSchema checker.
<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.
Prompt for the Lovable agent
Add LocalBusiness structured data to this site.
Use the free LocalSchema API: POST https://local-schema-beacon.lovable.app/api/public/v1/generate with the business details (see https://local-schema-beacon.lovable.app/developers).
Insert the returned script_tag into the <head> of the homepage, then call https://local-schema-beacon.lovable.app/api/public/v1/check-url?url=<published URL> and fix any errors it reports.More endpoints and examples in the developer docs.
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 Lovable for every update.
Copy the embed script
In LocalSchema, open the location's Embed tab and copy the script tag.
Ask Lovable to include it
“Add this script tag to the head of every page.” Then change hours and details in LocalSchema — no new prompts needed.
<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 Lovable pitfalls
- Ask for the markup in the page head rather than a component that renders later, so it's in the initial HTML.
- If you change business details in the app's own content, update the schema too — or use a hosted embed so there's one source of truth.