Schema / Structured Data
Valid JSON-LD exists sitewide, but with wrong data and huge gaps — verified September 25, 2026
Checked the homepage, a city landing page, a service page, and the reviews page: every one emits a single, well-formed Rank Math @graph JSON-LD block — correct @context, valid non-deprecated types, absolute URLs, ISO 8601 dates, no deprecated schema. The score is not a flat fail because the raw ingredients are unusually complete: a real street address, a consistent phone number, and a real ISA credential number. But the schema that exists provides almost no real local-SEO or rich-result value — it actively states the wrong hours and an incomplete address, and there is zero Service, areaServed, or Review markup despite ~60 pages built specifically for local SEO.
Critical Findings
| Field | Schema said (Sept 25) | Live now (Oct 4) |
|---|---|---|
| openingHours | Mon–Sun, 06:00–21:00 | |
| address.streetAddress | 16135 Barklea Rd |
Both fixed 2026-09-29 via Rank Math's Local SEO settings, re-verified live Oct 4, 2026. Bonus find during this re-check: the schema's priceRange field had a separate, unrelated bug — it was literally set to "jaclyn" (a WP admin username leaked into the field). Cleared live rather than inventing a price tier with no real pricing data on file.
Checked /tree-trimming-services/ as a representative sample: it carries only the generic Organization block plus a mislabeled Article node (see SCHEMA-05). No serviceType, provider, or areaServed anywhere. Service schema (with serviceType, provider, areaServed) added to all 11 service pages, verified live.
The site's entire programmatic local-SEO strategy — ~50 pages built specifically to target Katy, Sugar Land, The Woodlands, Tomball, and dozens more — has no structured-data backing connecting the business to any of these cities. Service schema with real, per-city areaServed values added to all 45 real city pages, verified live.
/tree-service-reviews/ visually displays a live Google reviews carousel via the "WP Google Places Review Slider" plugin, but that plugin injects no Review/AggregateRating JSON-LD or microdata at all. The confirmed, real GBP rating (5.0 / 37 reviews) is expressed nowhere in schema on the entire site. AggregateRating (real 5.0/37 GBP data) added to the reviews page — the plugin's own schema generation turned out to be a Pro-only feature, so this was added directly via Rank Math instead.
Medium Findings
The city landing page, service page, and reviews page each emit an Article node with headline/author, even though none are editorial content. This is Rank Math's global schema-type default applied site-wide. Root cause: one global Rank Math setting applied Article schema to every "page" post type. Changing that setting directly turned out to break the entire schema graph (a real plugin bug, confirmed by testing) — fixed safely instead via a per-post override on all 56 affected pages, replacing the Article node with the correct Service schema. The homepage's own, separate Article schema was deliberately left untouched.
With ~50 city pages plus ~11 service pages, breadcrumb schema would meaningfully help both crawl-path clarity and SERP display. sameAs lists Facebook, Twitter/X, and Pinterest but omits YouTube, even though the homepage embeds a YouTube video with its own VideoObject schema from that same channel.
Status (Oct 4, 2026): BreadcrumbList enabled sitewide (Rank Math's own breadcrumbs feature was fully off; turning it on is schema-only here, no visual change). GeoCoordinates added using the real, GBP-verified coordinates (discovered Rank Math already supports this via a titles.geo setting with no UI field exposed). priceRange was found to actually be set — to "jaclyn", a stray WP username, a real bug the original audit's "missing" framing didn't catch; cleared live rather than fabricated. Still open: sameAs still omits YouTube — no real channel URL exists to add, only a single video link, which isn't the right thing to put in sameAs.
Ready-to-Paste JSON-LD
Generated using the confirmed NAP data (16135 Barklea Rd, Cypress, TX 77429 · 713-966-9955 · Mon–Sun 6:00 AM–9:00 PM · 5.0/37 GBP reviews, verified live). Recommend implementing as a manual JSON-LD snippet rather than relying solely on Rank Math's auto-generated fields, since those fields are currently producing the wrong hours and no street address — fix the underlying Rank Math settings too so future auto-output stays correct.
Corrected LocalBusiness (site-wide)
Service (example: Tree Trimming) — repeat per service page
Service + areaServed (example: Katy, TX city page)
AggregateRating (reviews page)
Where This Goes
- Site-wide LocalBusiness block: theme header code or a custom Rank Math schema snippet, once for the whole site
- Service blocks: per-page schema field in Rank Math's SEO panel on each of the 11 service pages
- Service + areaServed blocks: same, on each surviving (post-consolidation) city page
- Validate every template type (home, one service page, one city page, reviews page) with Google's Rich Results Test after publishing