Google Business Profile and schema checklist
Your Google Business Profile is often the first public card people see. Schema on your website should support that card, not argue with it.
Google Business Profile (GBP) and schema.org markup live in different systems, but they describe the same business. GBP is a claimed profile in Google’s own directory. Schema is code you publish on pages you control. Neither one automatically rewrites the other. When they agree, you make it easier for Google to connect the profile, the website, and the place. When they disagree, you force a crawler to choose, and the choice may not be the one you wanted.
Before you touch the markup
Confirm that the Business Profile is claimed, in the correct country, and set to the right business status: open, temporarily closed, or permanently closed. Choose categories that describe the business accurately. The primary category should match how customers look for you, not a broader category chosen only because it seems competitive. Fill in the profile address, service area if you truly serve customers off-site, phone number, website URL, hours, and attributes that are still current.
Hours deserve extra care. If the restaurant closes at 21:00 on weekdays and 22:00 on Friday, those times should appear in GBP, on the website, and in openingHoursSpecification. Holiday hours and temporary closures should be updated in the profile first, then reflected on the site. A “Open 24 hours” claim in markup for a shop that closes at 18:00 is a policy problem, not a growth tactic.
Checklist: align the website and the snippet
Use this list when you add or refresh LocalBusiness JSON-LD:
- The page that carries the snippet is a page about that location, and a person can read the name, address, and phone number without opening the script tag.
- The
namematches the GBP name closely, without a trailing slogan or keyword list. - The postal address uses the same street, city, region, postal code, and country as the profile.
- The telephone number is the official customer number, written in an international format in the JSON-LD.
- The
urlpoints at the official site, and preferably at this location’s page if you have more than one branch. - The schema.org type is a honest
LocalBusinesssubtype, not a type chosen only because it sounds richer. - Opening hours in the snippet match the hours shown on the page and in GBP, including closed days, which should be omitted or marked closed rather than left as leftover times.
- Coordinates, if you include them, refer to the actual entrance or storefront, not a city centroid.
- The JSON is valid: it parses, uses double quotes, and contains no comments or trailing commas.
Checklist: validate and monitor
Paste the finished snippet into Google’s Rich Results Test and, if you like a second opinion, the Schema Markup Validator. Resolve errors before launch. Warnings about recommended properties are worth reading; you do not have to fill every optional field, but a missing telephone or address is a real gap for a local business.
After publishing, use URL inspection in Search Console when the site is verified, and request indexing for the location page if it is new or newly corrected. Watch the Business Profile for customer questions about hours or location — those are often a sign that a public surface is still stale. Re-run the same tests after a theme change, because some content management systems strip or duplicate JSON-LD when templates are edited.
What this checklist will not do
Agreeing markup and a complete profile will not, by themselves, place you in the local pack. Reviews, distance, relevance, prominence, and the quality of the page still matter. Schema will not hide a suspended profile, a policy violation, or an address that Google cannot confirm. It also will not let you mark up a service area you do not serve, or a set of five-star reviews that do not exist on the page.
Keep the two systems boringly aligned. When the facts change, change them everywhere, then generate a fresh snippet and test it. The Local Business Schema Markup Generator is built for that last step; the checklist above is for everything that should already be true before you copy the code.