A customer Googles your clinic name plus “hours.” The Knowledge Panel shows yesterday’s schedule, or no hours at all. Your Contact page has the right times in a nice table. Google never saw them as structured data. Multi-location brands have it worse: one NAP block in the footer, three real addresses, and schema that pretends there is only a headquarters.
Local SEO is not another title tag. It is machine-readable identity: who you are, where you are, when you are open, and how those entities connect to the rest of the site graph.
Rankify is the DaftPlug SEO plugin. This post is about Local SEO on Pro: LocalBusiness, opening hours, and multiple locations, sitting inside Rankify’s single connected @graph (Organization, WebSite, WebPage, and friends cross-referenced). Product schema is a different surface; you can note it, not build this article around it. Not title templates, not OG/X cards, not AI crawler control, not the 404 monitor, not content analysis grades, not llms.txt, not slug auto-redirects, not answer blocks. For how the wider graph and titles fit together, keep WordPress SEO titles, pixel truncation, and schema graph nearby.
What Rankify actually ships here
Stay inside the real feature set:
- Local SEO (Pro): LocalBusiness, opening hours, and multiple locations
- Schema as a single connected
@graph, with Organization, WebSite, WebPage, Article, Author, and more cross-referenced the way Google’s docs ask for - Brief adjacent note OK: Product schema is another Rankify surface (live store data), not the hero of this post
This post is not about pixel title templates, social cards, AI crawler allow/block lists, 404 logs, in-editor content grades, llms.txt, auto-redirects on slug change, or FAQ answer blocks. Those are other Rankify tools. Here the job is local entity markup that search engines can trust.
Why LocalBusiness schema beats a pretty hours table
Humans read your Contact page. Crawlers prefer explicit types.
LocalBusiness (and subtypes) tell Google you are a real-world business with an address and a category, not only a blog that happens to mention a city. Opening hours belong in that entity, not only in a paragraph that changes every holiday without a markup update.
Multiple locations need multiple entities (or a clear parent/child structure), not one mashed NAP string. If you run three studios, schema should not invent a fourth fictional HQ or hide two of them.
A connected @graph matters. Most plugins dump disconnected JSON-LD blocks on the page. Rankify builds one graph where the page points at its author, the author points at the organization, and local entities can sit in that same connected world. Google’s documentation prefers references over orphan blobs. Local markup that cannot point at your Organization is easier to ignore or mis-merge.
Hours drift is a trust killer. Nothing erodes local pack confidence like “Open now” when the door is locked. Structured hours you update in one Rankify screen beat three page-builder modules edited by whoever remembered.
Local schema will not rank you for “plumber near me” by itself. It makes the identity layer accurate so reviews, GBP, and on-page content have something solid to attach to.
Agencies feel this on client handoffs. The designer updated the hours module. Nobody touched schema. Six months later the client blames “SEO” because Google still shows Saturday mornings they no longer staff. Rankify’s Local SEO screen is the place that update should have happened once, next to the same graph that already describes the organization.
How to set Local SEO up in wp-admin
Assume Rankify is installed. Local SEO is a Pro feature. Run one SEO plugin at a time so you do not emit duplicate LocalBusiness graphs.
1. Confirm the sitewide Organization graph is sane
Open Rankify’s schema / organization settings first. Set legal name, logo, sameAs profiles, and primary URL the way they appear on Google Business Profile. LocalBusiness should extend a coherent organization story, not fight a blank or wrong Organization node.
If you migrated from Yoast or Rank Math, Rankify can read existing SEO fields in place. Still verify Organization visually in the graph output.
2. Open Rankify Local SEO (Pro)
Find Local SEO controls for LocalBusiness, opening hours, and multiple locations. You should be filling business fields, not pasting raw JSON into a theme file.
3. Define each location as real data
For every location enter:
- Name as customers know it (not only the corporate entity string)
- Street address, locality, region, postal code, country
- Phone in a consistent format
- Correct LocalBusiness subtype when it matters (Store, Restaurant, MedicalBusiness, and so on, as Rankify exposes)
- Map/URL fields if the UI offers them and they match GBP
For a single-location business, one complete entity beats three half-filled ones. For multi-location, add each site you want eligible for local visibility. Do not invent locations you cannot staff.
4. Set opening hours you will actually maintain
Enter weekly opening hours in Rankify. Match Google Business Profile. When you close for a holiday, update Rankify the same day you update GBP. Markup that lies is worse than no markup.
If hours differ by location, set them per location. A shared “Mon–Fri 9–5” on a brand that runs late on Fridays in one city will create support anger and search distrust.
5. Verify the connected @graph on a key page
View source or use a schema tester on the homepage and a location/contact URL. Confirm:
- LocalBusiness (or subtype) nodes exist with hours and address.
- Nodes sit inside Rankify’s single
@graph, cross-referenced with Organization / WebSite / WebPage rather than floating as a second plugin’s orphan script. - You are not also outputting LocalBusiness from the old SEO plugin or a page-builder widget.
Duplicate local entities are how you get the wrong phone in the panel.
6. Keep Product schema in its lane
If you also sell online, Rankify’s Product schema (live price and stock) is a different surface. Use it on product templates. Do not try to express a SKU as a LocalBusiness, and do not expect LocalBusiness to replace Product rich results. Local identity and product offers cooperate; they are not the same node.
7. Align on-page NAP and GBP
Schema is not a license to leave the Contact page wrong. Visible NAP, Rankify Local SEO, and Google Business Profile should match. When they disagree, Google trusts the mess less than you do.
What good looks like
- Pro Local SEO filled for every real location you want visible.
- Opening hours match the door and GBP.
- Multi-location brands show multiple entities, not one blended address.
- JSON-LD is one Rankify
@graph, not three plugins’ competing scripts. - Organization and LocalBusiness agree on name, logo, and primary identity.
- Contact page NAP matches the markup.
- Product schema (if used) stays on product URLs and does not collide with local entities.
When someone searches your brand plus city, the hours and address that appear should be the ones you edited last in Rankify, not a leftover from 2022. If GBP and Rankify disagree, fix both the same afternoon. Split brains create split results.
Pitfalls (the ones that bite)
Two SEO plugins both emitting LocalBusiness. Deactivate the old one once Rankify owns the graph.
Hours updated on the page builder only. Crawlers still see stale schema.
Fake locations for “SEO coverage.” Against guidelines and brittle.
Organization name ≠ storefront name with no explanation. Pick a consistent public identity.
Testing only homepage. Location landing pages need the right entity too.
Ignoring multi-location hour differences. One matrix does not fit all doors.
Expecting schema alone to create rankings. Pair with real GBP, reviews, and local content.
Practical checklist before you call it done
- Run Rankify alone for SEO output (no duplicate local plugins).
- Complete Organization basics (name, logo, URL, sameAs).
- Enable Local SEO on Pro and add every real location.
- Enter opening hours per location; match GBP.
- Validate
@graphon homepage and contact/location URLs. - Remove leftover LocalBusiness JSON from theme or builder widgets.
- Confirm visible NAP matches markup.
- Keep Product schema on product templates only.
- Schedule a quarterly hours audit (holidays included).
- After changes, re-test rich results / schema validators you already trust.
Takeaway
Local WordPress sites leak trust when hours and addresses live only in human-readable HTML. Search engines need LocalBusiness entities, accurate opening hours, and honest multi-location data inside a graph they can follow.
Rankify adds Local SEO on Pro (LocalBusiness, opening hours, multiple locations) inside one connected @graph with Organization, WebSite, WebPage, and the rest cross-referenced. Fill the entities. Match GBP. Kill duplicate markup. Leave Product schema for the shop templates where it belongs.
One Pro membership unlocks Rankify plus Progressify, Lightify, Generatify, and Snapshotify. New Pro plugins join existing memberships. Plans differ by site count only (Pro $37.99 for 1 site, Pro Plus $74.99 for 5, Pro Max $138.99 for 100), with a 14-day money-back guarantee. See pricing when local identity should stop being a Contact page table Google cannot parse.
Add the locations. Set the hours. Validate the graph. When the panel shows the same schedule your front door uses, local SEO finally has a machine-readable backbone.
