GBPNexus
Post Creator →Midstate Restoration
1818 NW 3rd St, Oklahoma City, Oklahoma 73106
Captured fixture (2026-08-04), not a live pull. Competitors are the measured top 10 for “roofing contractor” from Local Falcon grid scan 5dccc81dbc08555 — 7×7 grid, 7mi radius. Midstate scored SoLV 0.00 and appeared in 0 of 49 grid points, so it is absent from that list by measurement.
Optimization score
9 / 100
Findings
16 open
API-writable
13 of 16
Score breakdown
Findings — most severe first
- criticalPrimary category
Primary category should be "Roofing contractor", not "General contractor"
- Current
- General contractor
- Recommended
- Roofing contractor
Six of eight services are roofing. Highest-volume exterior trade category and the one carrying storm/hail intent, which "General contractor" does not. The single strongest lever in the local algorithm. Determines which queries the profile is eligible to rank for at all, and gates which attributes and service types Google will even offer. Must be set to a category ID from GET /v1/categories.
Patch — updateMask=categories.primaryCategory
{ "categories": { "primaryCategory": { "name": "categories/gcid:roofing_contractor" } } } - criticalAdditional categories
1 of 10 category slots used — 4 eligible categories unclaimed
- Current
- (none)
- Recommended
- General contractor, Building restoration service, Gutter service, Construction company
Each additional category independently expands the set of queries the profile is eligible to appear for. Unused slots are the cheapest ranking surface on the entire profile — there is no downside to claiming a category the business genuinely serves.
Patch — updateMask=categories.additionalCategories
{ "categories": { "additionalCategories": [ { "name": "categories/gcid:general_contractor" }, { "name": "categories/gcid:building_restoration_service" }, { "name": "categories/gcid:gutter_service" }, { "name": "categories/gcid:construction_company" } ] } } - criticalPrimary phone
Phone number on the profile does not match the number of record
- Current
- +1405-441-8960
- Recommended
- Reconcile with (405) 754-6189
NAP consistency across the profile, the website and every citation is a foundational local ranking factor. A mismatch splits the entity: Google cannot confidently associate citations carrying one number with a profile carrying another. If the profile number is intentional call tracking, the true line must be parked in additionalPhones and the website + citations must be updated to match the primary — not left disagreeing.
- criticalReviewsmanual — no write API
1 review vs a competitor median of 160
- Current
- 1 review, 5 rating
- Recommended
- Reach 160+ reviews, then sustain a steady velocity.
Review count and velocity are among the strongest non-proximity ranking factors in the local pack, and review TEXT is separately mined: reviews that name a service and a city produce the "customers mention X" justifications and help the profile rank for those terms. Prioritize reviews that describe the specific job and location over generic five-star ratings.
Competitor review counts: 17, 54, 67, 84, 114, 160, 161, 285, 490, 522.
- highServices (Google-defined)
8 services the business performs are not listed on the profile
- Current
- Commercial projects, General building construction, General construction, Roof installation, Roof repair
- Recommended
- Roof Replacement, Emergency Tarp & Storm Response, Seamless Gutters, Insurance Claim Assistance, Commercial Roof Replacement, SPF Roofing, Commercial Roof Coating, Free Property Inspection
Services drive the "Provides <service>" justification that appears under a listing in the map pack, and they are matched against long-tail service queries. A profile listing 5 generic services competes for far fewer queries than one listing 20 specific ones.
- highPhotos & video
Only 2 photos on the profile
- Current
- 2 photos
- Recommended
- Build to 30+ photos covering: exterior, interior/office, team, crews at work, before/after by service, equipment/vehicles, logo and cover. Then add on a recurring cadence — recency matters, not just volume.
Photo volume and recency both correlate with map-pack performance, and photos drive the engagement signals (views, direction requests, clicks) that Google measures. A 2-photo profile also converts far worse than a 30-photo one at the same rank, so this compounds.
Top competitors average 0 photos.
- highService area
Service area should enumerate all 11 cities served
- Current
- (not readable without API access)
- Recommended
- Oklahoma City, Edmond, Norman, Moore, Yukon, Mustang, Midwest City, Del City, Bethany, Piedmont, Choctaw
For a service-area business the serviceArea field defines the geography Google will consider the profile for. It does not defeat proximity — you still rank strongest near the pin — but omitting a city removes eligibility entirely. Keep it to genuinely-served areas; an over-broad area dilutes relevance.
- mediumBusiness description
Business description uses only 103 of 750 characters
- Current
- Midstate Restoration is a complete service storm damage restoration company from roofline to fence line
- Recommended
- A 750-character description covering services, service area, credentials and differentiators.
The description is a weak direct ranking signal but a strong entity signal — it is one of the few pieces of long-form text that LLM answer engines (ChatGPT, Gemini, Perplexity) ingest verbatim when summarizing a business. Leaving 647 characters unused forfeits that surface for free.
- mediumServices (Google-defined)
5 of 5 listed services have no description
- Current
- (no descriptions)
- Recommended
- A description for every service (300 char hard max for Google-defined types).
Service descriptions are indexed text tied directly to a service entity. They are among the highest-signal-per-character fields on the profile and are almost always left blank by competitors.
- mediumRegular hours
Profile shows closed on saturday, sunday
- Current
- Closed 2 day(s)/week
- Recommended
- Extend hours to any day the business genuinely answers the phone, including weekends.
Google filters map results by "Open now" on a large share of mobile searches. Every closed day is a day of zero eligibility for those queries. Storm and emergency-driven trades take a disproportionate share of calls on weekends.
- mediumMore hours (e.g. 24/7 emergency)
Business offers 24/7 emergency response but no "More hours" entry exists
- Current
- (none)
- Recommended
- Add a 24-hour emergency-service More Hours entry.
More Hours lets the profile advertise round-the-clock emergency availability without misrepresenting office hours. Availability is category-gated — verify against the location after the primary category is corrected.
- mediumAttributes
Only 10 attributes set
- Current
- 10 attributes
- Recommended
- Enumerate every attribute Google offers for the corrected primary category and set each one that is truthfully applicable.
Attributes power filter chips and refinement queries in Maps, and several ("online estimates", "onsite services", veteran/family-owned identity attributes) surface directly in the listing. The eligible attribute set is gated by primary category — so re-run this after the category change lands, because a different set will become available.
- mediumBooking / appointment links
No appointment / booking link
- Current
- (none)
- Recommended
- Add an APPOINTMENT place action pointing at the inspection-request page.
A booking place action adds a distinct CTA button to the listing and is a measurable conversion action. Availability is category-gated — check placeActionTypeMetadata after the category change.
- mediumQuestions & Answersmanual — no write API
Only 0 questions on the profile
- Current
- 0 Q&A
- Recommended
- Seed 8-12 owner-asked, owner-answered question pairs.
Owner-seeded Q&A is indexed text that answers real buying objections at the moment of decision, and upvoted answers pin to the top of the listing. MUST BE DONE BY HAND — the Q&A API was discontinued 2025-11-03, so this ships as a copy/paste pack forever.
- mediumProductsmanual — no write API
No products configured
- Current
- (none)
- Recommended
- Create a product card per core service (9 candidates), each deep-linking to its own service page.
Product cards render as a visual carousel on the profile, giving each service its own image, description and click-through to a matching service page — the single best way to push GBP traffic to deep pages rather than the homepage. NO WRITE API EXISTS — dashboard only, permanently a paste-pack item.
- lowWebsite URL
Website URL carries no UTM tracking
- Current
- https://midstategc.com/
- Recommended
- https://midstategc.com/?utm_source=google&utm_medium=organic&utm_campaign=gbp
GBP has no separate tracking field — params go inline in websiteUri. Without them, GBP-driven sessions land in GA4 as generic organic and the profile gets no attribution, which makes the retainer impossible to defend with data.
Patch — updateMask=websiteUri
{ "websiteUri": "https://midstategc.com/?utm_source=google&utm_medium=organic&utm_campaign=gbp" }