Connecting Google Business Profile
Connect your Business Profile through Google OAuth to unlock the checks public listing data cannot answer, and what happens without it.
Updated
EchoPilot reads your Google Business Profile in two ways. Without a connection, it uses public listing data from DataForSEO for the listing you picked in the setup wizard (Google Places only finds that listing's identifier and shows listings live in the wizard; EchoPilot does not store Google Maps content). With a connection, it also reads the owner side of the profile through the Business Profile APIs. The connection is made at /app/integrations.
What the connection unlocks
Seven checks read fields the public listing data does not include. Until you connect, they are marked not assessable with the reason "Google Business Profile not connected":
- G2 — the profile exists and is claimed (a gating check).
- L1 — the profile is claimed and verified.
- L5 — a post was published in the last 30 days.
- L7 — the services or products list is populated.
- L11 — the Q&A section has at least three owner-seeded questions.
- R4 — owner response rate to reviews is at least 70%.
- R5 — negative reviews (two stars or fewer) were answered within 7 days.
G2 and L1 list two sources, gbp_owner|gbp: the owner-side data is tried first, and the public listing data second. R4 and R5 read the owner-side reviews or reviews you imported (gbp_owner|reviews_import), so they can be assessed before Google approves API access: see Import your review history. R3 (review velocity) and R9 (complaint themes) read the same reviews.
What public listing data can and cannot answer
From DataForSEO's business data EchoPilot reads the categories, website, rating, review count, whether opening hours are set, the photo count, the open or closed status and the profile logo, labelled "DataForSEO data" in the report and the memo. That is enough for L2, L3, L6, R1 and R2, and for the profile-exists part of G2 and L1.
It does not include posts, Q&A, the services list, photo dates, owner replies or the review texts. L4 (at least ten photos, one under 90 days old) can only reach partial because photo dates are unknown. L10 (no duplicate listings) is not assessed: duplicates can only be read from Google Maps search results, which EchoPilot does not store. The remaining owner-side fields are reported as not assessable until you connect or import reviews.
Connecting
- On /app/integrations, press "Connect Google Business Profile".
- Google shows its consent screen and asks for the
business.managepermission. It is the only scope Google offers for reading a profile, so the wording says "manage"; EchoPilot only reads. Tick the Business Profile box or the connection is refused with a message. - Google returns a long-lived refresh token. It is sealed with AES-256-GCM and stored; it is never logged or shown. The Google account email is kept for display.
- If the account has one location, it is selected. If it has several, pick the one to audit from the list on the page.
The page then shows the connected account, the chosen location, when it was connected, the last sync, and the last snapshot: verified status, post count, Q&A count, review count and services count, plus any field Google refused.
During an audit
Each run refreshes an access token from the stored refresh token and takes a snapshot of the location: business information, verification status, Q&A, posts and reviews. If Google refuses a single field, only that field's rule is affected. If Google refuses everything, the rules fall back to the public listing data or imported reviews where they can and otherwise report "Business Profile API unavailable (quota or access not granted)".
Token health, reconnect, disconnect
The page shows a health chip: "token ok", "reconnect needed" or "API unavailable". If Google reports the access as expired or revoked, EchoPilot marks the connection, sends one email to the account members asking you to reconnect, and the seven checks return to not assessable. "Refresh status" re-checks the token and the location list. "Reconnect" runs the consent flow again. "Disconnect" revokes the stored token immediately; nothing is guessed afterwards.
If Google does not return a refresh token, the message asks you to remove EchoPilot at Google's third-party access page and connect again. If the server has no Google credentials configured, the button is hidden.
Nothing is written
The connection is used only to read the data the checks need. Replies and updates are drafted in EchoPilot for you to approve, and the browser extension fills the approved text into Google's own box; you click Post there yourself. Posting through the connection is rolling out and will also require a person on your account to approve each item first. Social accounts (Facebook, Instagram, LinkedIn, X, TikTok) cannot be connected yet; the audit reads public profile metadata only.