Google Business Profile
Brain Provisioning (New Client)
Brain Provisioning Walkthrough
Section titled “Brain Provisioning Walkthrough”Last updated: 2026-05-06 Owner: SEO Specialist (data) / GBP Specialist (Business Profile invite) / CSM (client-side coordination) Status: Active — used for every new client after onboarding form is submitted
Every new client’s data flows from three Google products into the Brain:
- Google Search Console — organic search traffic
- Google Analytics 4 — site behavior + conversions
- Google Business Profile — categories, services, reviews, posts
For each one, the Brain service account (seo-brain@core-depth-472801-t2.iam.gserviceaccount.com) needs access. Some grants are automatable; some require a UI click. This SOP runs the full check and tickets whatever can’t be automated.
Trigger: new client added to clients.json (or seeded into Brain via populate_pilot.py).
Output: all three integrations populating data in Brain on the next nightly sync. Any blockers are TT tasks in the client’s project.
Who owns it
Section titled “Who owns it”| Step | Owner |
|---|---|
Run brain provision <slug> | SEO Specialist or Claude session |
| GSC: add SA as Restricted user in Search Console | SEO Specialist |
| GA4: confirm property OR auto-create + grant SA | SEO Specialist (Brain auto-grants if SA has account-level admin) |
| GBP: have client invite Tekton as Manager | CSM coordinates with client; GBP Specialist confirms |
| Mark TT tasks complete | Whoever did the manual step |
1. Run the provisioning check
Section titled “1. Run the provisioning check”cd ~/Projects/tekton-brainbrain provision <slug>Output:
- ✓ green = wired and working
- · cyan = waiting on a property ID
- ! yellow = needs a human action (TT task created in the client’s TT project)
- ✗ red = error worth investigating
The TT tasks have full step-by-step instructions in the body. Each task is dedup’d on (slug, kind) — re-running provision won’t create duplicates.
2. GSC: add the service account
Section titled “2. GSC: add the service account”For each Search Console property the client owns:
- Open Search Console → switch to the client’s property.
- Settings (gear) → Users and Permissions → Add User.
- Email:
seo-brain@core-depth-472801-t2.iam.gserviceaccount.com - Permission: Restricted (read-only is enough).
- Add.
Then record the exact property URL in Brain:
# Edit clients/<slug>/identity/identity_map.json — set "gscProperty" to the# exact string GSC shows (e.g., "sc-domain:client.com" OR "https://client.com/").Or paste the URL in chat and ask Claude to write it + close the TT task.
3. GA4: confirm property exists or auto-create
Section titled “3. GA4: confirm property exists or auto-create”The Brain SA has admin on Tekton’s parent GA4 account 326886214. If a property already exists for this client under that account, the Brain auto-finds it and auto-grants the SA Reader access — no manual step needed.
If no property exists yet, create one programmatically:
# Run via Claude — the Admin API supports this end-to-endanalyticsadmin.properties().create(body={ "parent": "accounts/326886214", "displayName": "<Client Name>", "industryCategory": "HOME_AND_GARDEN", # or appropriate "timeZone": "<America/X>", "currencyCode": "USD",})# Then create a web data stream pointing to the client's domain.Then install the measurement ID on the client’s site:
- If the site is on
astro-site-generator: editoutput/<slug>-site/site-config.json→ settracking.ga4Id→ commit + push (auto-deploys via Cloudflare Pages). - If the site is on GHL or another platform: paste the gtag.js snippet via the platform’s tracking-code field.
Record the propertyId in Brain (identity_map.json#ga4PropertyId) and close the TT task.
4. GA4 ↔ GSC product link
Section titled “4. GA4 ↔ GSC product link”This step is UI-only (the Search Console links endpoint isn’t in any current Admin API version). It makes GSC data show up inside GA4 reports.
From GA4 (recommended):
- Switch property to the client’s GA4 property.
- Admin → Property Links → Search Console links.
- Link → Choose accounts → pick the GSC property.
- Pick the web stream → Submit.
Or from GSC:
- Switch to the client’s GSC property.
- Settings → Associations → Google Analytics → Associate.
- Pick the matching GA4 property → confirm.
5. GBP: have client invite Tekton as Manager
Section titled “5. GBP: have client invite Tekton as Manager”The Business Profile API doesn’t expose a self-invite endpoint, so the client has to invite Tekton from their side.
CSM email script (paste into TT comment to relay):
Hey [client], one quick admin task — can you add Tekton as a Manager on your Google Business Profile so we can update photos / posts / categories on your behalf?
- Open Google Maps app (or business.google.com).
- Find your business listing → menu → People and access.
- Add
info@tektongrowth.comas a Manager (Owner is fine but not required).- Save and let us know — we’ll confirm the invite landed.
When accepted, run brain provision <slug> again — gbp flips to ✓ and the TT task auto-dedups.
6. Verify and close
Section titled “6. Verify and close”brain provision <slug> # all three should be ✓ (or · for not-yet-launched GA4)brain sync gsc <slug> # pulls last month's databrain sync ga4 <slug> # pulls last month's databrain sync gbp <slug> # pulls categories + servicesbrain doctor <slug> # validate + freshnessMark each TT task complete (either from TT directly OR via brain provision-complete <slug> <action_id>).
Definition of done
Section titled “Definition of done”brain doctor <slug>returns green for identity / identity_map / services / gbp/state / website/pages / heatmap-latest / gsc-monthly / ga4-monthly.clients/<slug>/human-actions/has zero records with statuspendingorin_progress.- The matching TT tasks in the client’s TT project are closed.
- A monthly sync run (next 1st-of-month cron) writes fresh data without errors.
Cross-references
Section titled “Cross-references”- Brain repo:
~/Projects/tekton-brain/ - Provisioning code:
src/brain/provision/{gsc,ga4,gbp}.py - Human-action lane:
src/brain/human_actions.py - Companion SOP for analytics setup details: Analytics Setup
- Companion SOP for the GBP manager-invite ask: see review in your team chat for the latest CSM script