This schema markup generator turns a short form into JSON-LD that describes your business: its type, name, address, phone, hours, service area and profiles. This guide covers which type to choose, how to fill in each field so the output is valid, what the finished code looks like, how to extend it by hand, where to paste it on WordPress and other sites, and how to test it.
Choosing the type
The generator offers a general LocalBusiness, eleven more specific business types, and Organization. Pick the most specific one that is true.
| You are | Choose | Notes |
|---|---|---|
| A plumber, electrician, HVAC company or roofer | Plumber, Electrician, HVACBusiness, RoofingContractor | Specific types tell search engines and AI assistants your trade without guessing |
| A dental practice | Dentist | |
| A clinic, med spa or physical therapist | MedicalBusiness | |
| A law firm | LegalService | |
| A restaurant or café | Restaurant | |
| A shop with a physical location | Store | |
| A garage | AutoRepair | |
| A real estate agent | RealEstateAgent | |
| Another business with a location customers visit or a service area | LocalBusiness | The safe general choice |
| An online-only business, software company or brand | Organization | No address, hours or service area are added |
When you choose Organization, the generator leaves out the address, opening hours and areas served, since those describe a local business.
Filling in each field
| Field | Becomes | How to fill it in |
|---|---|---|
| Business name | name | Exactly as on your Google Business Profile and storefront |
| Website | url | Your homepage, with https |
| Phone | telephone | Include the country code: +1 512 555 0142 |
email | Optional. A public address you’re happy to have read by bots | |
| Street, city, state, ZIP, country | address (a PostalAddress) | Country as a two-letter code: US, CA, GB |
| Logo URL | logo | A full https address to a square or wide logo image |
| Opening hours | openingHours | Two-letter days and 24-hour times, groups separated by commas: Mo-Fr 07:00-19:00, Sa 08:00-14:00 |
| Areas served | areaServed (each one a City) | Comma-separated: Austin, Round Rock, Cedar Park |
| Profiles | sameAs | Comma-separated full addresses of your Google Business Profile, Facebook, Yelp, LinkedIn and similar |
Day codes are Mo Tu We Th Fr Sa Su. For a business open around the clock, Mo-Su 00:00-23:59 is the usual way to say it.
Empty fields are simply left out of the code, so fill in what you have and skip the rest.
What the finished code looks like
Here is the output for Coastline Plumbing with the Plumber type selected:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Plumber",
"name": "Coastline Plumbing",
"url": "https://coastlineplumbing.com",
"telephone": "+1 512 555 0142",
"address": {
"@type": "PostalAddress",
"streetAddress": "1200 Barton Springs Rd",
"addressLocality": "Austin",
"addressRegion": "TX",
"postalCode": "78704",
"addressCountry": "US"
},
"openingHours": [
"Mo-Fr 07:00-19:00",
"Sa 08:00-14:00"
],
"areaServed": [
{
"@type": "City",
"name": "Austin"
},
{
"@type": "City",
"name": "Round Rock"
},
{
"@type": "City",
"name": "Cedar Park"
}
]
}
</script>
The form opens with Coastline Plumbing’s details filled in as an example. Replace every field before you copy the code. Publishing someone else’s address in your schema is a surprisingly common slip.
Adding what the form doesn’t cover
The generator writes the core facts. You can add more properties by hand before pasting, as long as each one is true and visible on your site. Useful additions for a local business:
"image": "https://coastlineplumbing.com/images/van-and-team.jpg",
"priceRange": "$$",
"geo": {
"@type": "GeoCoordinates",
"latitude": 30.2620,
"longitude": -97.7590
},
Add these lines inside the main braces, with commas between properties. A missing or extra comma is the most common reason JSON-LD fails to validate.
For a page of common questions, you can add a separate FAQPage block:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "Do you charge a call-out fee?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No. We quote a fixed price before any work starts."
}
}]
}
</script>
Since 2023, Google has shown FAQ rich results only for a small set of well-known government and health sites, so don’t expect the dropdowns in search. The markup still states your answers in a form machines read easily, which helps AI assistants that summarize your page.
For the full list of properties each type supports, schema.org’s LocalBusiness page is the official reference.
Where to paste it
| Your site | Where the code goes |
|---|---|
| WordPress with Yoast, Rank Math or SEOPress | Check what your plugin already outputs first. If it already has Organization or LocalBusiness schema, edit the details there instead of adding a second block |
| WordPress without schema | A header code snippet plugin, or your theme’s “header scripts” box, on the homepage or site-wide |
| Static HTML | Inside <head> on the homepage, or on every page if your template shares one head |
| Other site builders | Their custom code or “head” settings |
Business-level schema belongs on the homepage at minimum. One block for the business is enough; don’t paste copies with different details on different pages. A business with three locations should give each location page its own block with that location’s address and phone.
Testing it
Run the page through Google’s Rich Results Test and the Schema Markup Validator at validator.schema.org. Then run our meta tag checker on the live page: the structured data row should list the type you chose. If it’s empty, the code didn’t make it into the published page, often because a caching plugin is serving an old copy.
Mistakes that do real harm
- Details that don’t match your Google Business Profile. A different phone number or an old address weakens trust in both. Keep your name, address and phone (NAP) identical everywhere, including your Google Business Profile.
- Ratings and reviews you wrote yourself. Adding
aggregateRatingwith numbers that aren’t from real, visible reviews breaks Google’s rules and can lead to a manual action. - The wrong type. Marking a law firm as
Organizationloses the location details; marking a blog post asLocalBusinessconfuses everyone. - Relative addresses.
/logo.pngshould behttps://yoursite.com/logo.png. - Two plugins outputting schema. Conflicting blocks with different names or hours are worse than one plain block.
Beyond one block of code
The Site Audit flags sites with no Organization or LocalBusiness schema, pages with no structured data, and JSON-LD with errors. On WordPress, RankThat can add Organization or LocalBusiness schema and page-level schema through the free Bridge plugin, and you review each change and can undo it in one click. For trades, the SEO for plumbers page shows how schema fits with the rest of local SEO, and the glossary covers JSON-LD in more depth.