SearchAtlas Brand Vault and Local Listing — Setup, Maintenance, and Validation
Overview
- What: End-to-end procedure for populating, publishing, validating, and maintaining a client's two SearchAtlas data surfaces — the Brand Vault in the SearchAtlas dashboard (drives OTTO automation) and the Local Business / Schema Markup screen in the WordPress MetaSync plugin (injects JSON-LD into the client's site).
- When:
- Setup — once per client, during onboarding, after the per-client Brand Vault map is populated.
- Refresh — whenever client identity / location / brand / authorship data changes (canon update, design-kit update, GBP verification, site cutover, etc.).
- Drift check — quarterly, per
review_schedule.
- Who: SEO Operator. First-time setup may benefit from a CEO walkthrough.
- Time Required: Initial setup ~2-3 hours per client. Refresh ~30 min. Drift check ~30 min.
Prerequisites
Before starting, confirm all of these are true:
- Per-client Brand Vault map exists at
Client_Delivery/<slug>/brand-assets-master/<slug>-searchatlas-brand-vault.md. If absent, create it per thesearchatlas-brand-vault-populationworking rule first. - SearchAtlas dashboard access — log in at the SearchAtlas portal with an account that has Brand Vault edit permissions.
- WordPress admin access — admin role on both the client's WP staging and live sites. Confirm by visiting
wp-adminand locating theSearch Atlasmenu in the left sidebar. - MetaSync plugin installed and active on the client's WP site. The plugin name on WordPress.org is "MetaSync"; the WP admin menu label is "Search Atlas".
- OTTO One-Click Activation completed — SearchAtlas account connected to the WP site. Verify in WP admin under
Search Atlas → Settings. - GBP listing verified (recommended, not required) — Google Business Profile is verified and has a Place ID. Without GBP, Heat Map and Local SEO automation work is blocked, but BV + Schema Markup can still be populated.
If any prerequisite is missing, resolve it first or escalate to CEO before proceeding.
Scope
In scope:
- Brand Vault tabs: Business Information (BV-BI), Locations (BV-LOC), Content (BV-CON), Knowledge Graph (BV-KG), Style Guide (BV-SG).
- WordPress MetaSync plugin → Schema Markup screen: Organization schema and WebSite schema fields.
- Refresh / re-validation cadence and drift detection.
Out of scope (separate SOPs):
- OTTO content publishing (briefs, keyword targets, A/B tests).
- Local SEO Heat Maps configuration.
- Citation building across aggregators.
- WordPress page-level schema (LocalBusiness, BreadcrumbList, Person, Product, Event, etc.) — those are configured in other plugin screens.
- GBP optimization (categories, attributes, posts, Q&A) — covered by the Local SEO training material until a dedicated SOP exists.
Procedure
The procedure has six phases. For first-time setup, run Phases 1–5 in order. For refresh, run Phases 2–4 only for the changed fields. For quarterly drift check, run Phase 5 only.
Phase 1 — Initial connection and access verification (one-time per client)
1.1. Confirm WP admin access. Log into the client's WP admin. Confirm the Search Atlas menu appears in the left sidebar. If absent, install/activate MetaSync from WordPress.org and re-check.
1.2. Confirm SearchAtlas-WP connection. In WP admin go to Search Atlas → Settings. Confirm the connection shows the correct SearchAtlas account and project. If the connection is broken, reconnect via OTTO One-Click Activation.
1.3. Verify Brand Vault edit access. In the SearchAtlas dashboard, navigate to the client's project → Brand Vault. Confirm you can open each tab (Business Information, Locations, Content, Knowledge Graph, Style Guide) without permission errors.
1.4. Open the per-client Brand Vault map. Pull up Client_Delivery/<slug>/brand-assets-master/<slug>-searchatlas-brand-vault.md in a side window — this is the source of truth that drives both surfaces. Treat the map as authoritative; never paste values directly from the client profile, design kit, or website into the dashboards. If a value is missing from the map, fix the map first, then proceed.
1.5. Note blocked fields. Read §7 of the map. Any field marked <BLOCKED — …> should be left blank in both surfaces. Do not attempt to fill blocks via SearchAtlas "Autofill with AI" — block + owner is the correct state until the named owner resolves it.
Phase 2 — Populate Brand Vault (SearchAtlas dashboard)
Walk each tab in order. The map's §1–§5 mirror the tabs.
2.1. BV-BI (Business Information) — paste-ready values are in map §1.
- Business name, Trading/DBA name, Canonical website URL, Primary phone (E.164), Primary email, Business language, Number of employees, Contact type for primary phone.
- SERPs / Competitors Location, What makes the business unique (paste §1.2), How should the brand be perceived (paste §1.3), How does the business make money (paste §1.4).
- TAX ID, VAT ID (blank for US-only clients with no VAT registration), ISO 6523 Code.
- Brand description — paste §1.1 verbatim into the Description field (multi-paragraph, up to 20,000 chars).
- Click Save before moving to next tab.
2.2. BV-LOC (Locations) — values in map §2.
- Add the main address as a structured address (street, suite, city, state, postal, country); flag as "Main address".
- Add additional locations only if listed in the map.
- Set per-location operating hours and Google Place ID if available; leave blank if blocked.
- Critical: Per the Local SEO ranking research, never change the business name once a GBP listing is verified — it triggers Google re-verification. The same logic applies to address and phone changes. Coordinate any change with the client and document the change rationale.
2.3. BV-CON (Content) — values in map §3.
- Website purpose, Act as persona, Search intent mix (multi-select), Tone of voice (comma-separated adjectives), Point of view, Content intent (paste §3.1), Default content length (Short/Medium/Long), Writing toggles (4 booleans).
- This tab is the most subjective; tone-of-voice and content-intent values directly steer OTTO-generated content. Verify each value matches the map character-for-character (autofill drift is a known risk here).
2.4. BV-KG (Knowledge Graph / Authorship) — values in map §4.
- Author first name + last name (per byline; if multi-author, pick the default author).
- Top brand-representative pages (3–10 entity URLs from §4.1). Do not list blog posts, contact pages, /thank-you, /robots.txt, /sitemap.xml.
- Social profile URLs (§4.2): Facebook, X/Twitter, LinkedIn, Instagram, YouTube, etc. One per line in the textarea — commas break the field.
2.5. BV-SG (Style Guide / Visual Identity) — values in map §5.
- Upload logo (transparent PNG or SVG, high-resolution).
- Upload favicon (generate from primary logo at 32×32 + 192×192 if not in the brand-assets-master folder).
- Set brand primary / secondary / accent colors (hex from map §5).
- Set brand typography (headlines, body, accent fonts).
- Add brand photo library if the brand-assets-master folder has curated photos.
2.6. Save each tab and verify completion. Each tab should show 100% completion (or any remaining blanks should be intentionally blocked per map §7).
Phase 3 — Populate WP plugin Schema Markup (Local Listing surface)
The MetaSync plugin's Schema Markup screen is a separate configuration from Brand Vault. Both surfaces must be populated independently — Brand Vault drives OTTO; Schema Markup writes JSON-LD into the site HTML for crawlers that don't wait on OTTO's render buffer. See SearchAtlas WP Plugin: Schema Markup Reference.
Location in WP admin: Search Atlas → Schema Markup.
3.1. Organization schema (injected on every page). Map §6 has paste-ready values.
- Organization Name → must match BV-BI Business name.
- Organization URL → must match BV-BI Canonical website URL.
- Organization Logo URL → upload the logo to the WP Media Library first; paste the resulting HTTPS URL here. Logo URL must resolve with HTTP 200.
- Contact Telephone → must match BV-BI Primary phone (E.164 recommended).
- Contact Type → schema.org enum (
customer support,sales,billing support,technical support,bill payment,reservations). Defaultcustomer support. - Social Profile URLs → one URL per line; lift from BV-KG §4.2. Commas break the textarea.
3.2. WebSite schema (injected on the homepage only). Map §6 has values.
- WebSite Name → typically matches Organization Name unless intentionally distinct.
- WebSite URL → match Organization URL.
- Enable Sitelinks Searchbox → only check if the site has a real
?s=search endpoint. Verify withcurl https://<client-domain>/?s=test— should return HTTP 200 and<body class="search search-results …">. If the site doesn't have search, leave unchecked.
3.3. MetaSync interaction settings.
- Override WooCommerce Product Schema → leave unchecked unless WooCommerce's native schema is broken or incomplete. For non-WooCommerce sites this setting is moot.
3.4. Save and verify. Click Save on each section. The screen should show all required fields populated.
Phase 4 — Cross-surface consistency check
After both Phase 2 and Phase 3, run these checks:
| Check | What it confirms |
|---|---|
view-source:https://<client-domain>/ shows both Organization and WebSite JSON-LD blocks | Schema Markup is actually being injected |
| Google Rich Results Test on the homepage passes for both Organization and WebSite (no warnings) | Schema is valid and Google can parse it |
| Rich Results Test on a deep page still shows Organization | Organization injection is site-wide |
Logo URL resolves with HTTPS + HTTP 200 (curl -I <logo-url>) | Logo asset is reachable |
Each sameAs URL in rendered JSON-LD resolves with HTTP 200 | Social profile links aren't broken |
| Business name: BV-BI == WP-ORG Organization Name == WP-SITE WebSite Name | Identity parity across surfaces |
| URL: BV-BI == WP-ORG Organization URL == WP-SITE WebSite URL | URL parity |
| Phone: BV-BI == WP-ORG Contact Telephone | Phone parity |
Social URLs: BV-KG list == WP-ORG sameAs array (line-for-line) | Social parity |
If any check fails, fix at the source (the BV map first, then both surfaces). Never fix in a single surface without back-propagating to the map.
Phase 5 — Validate against the per-client BV map
This phase formalizes the validation pass — it's how a per-client map moves from status: draft to status: validated.
5.1. Walk Brand Vault tab-by-tab against map §1–§5. For each populated field in the map:
- If dashboard value matches map → mentally mark "OK"
- If dashboard value differs → either (a) update dashboard to match map (if dashboard is wrong), or (b) update map to match dashboard (if dashboard reflects a deliberate change made elsewhere). Note the rationale.
5.2. Walk Schema Markup screen against map §6. Same logic.
5.3. Run the Phase 4 cross-surface checks if not already done.
5.4. Append a row to §12 Validation log of the per-client map. Format:
| date | operator | surfaces | outcome | notes |
|------------|----------|----------------|-------------------------------|----------------------------------------------|
| 2026-05-28 | Tanu | BV + WP | OK | All fields match; no discrepancies |
| 2026-05-28 | Tanu | BV-CON | discrepancies fixed in BV | Tone-of-voice had drift to autofill default |
| 2026-05-28 | Tanu | BV-KG | discrepancies flagged | Top pages list shows /blog URLs (need fix) |
5.5. Promote map status: draft → status: validated only if outcome is OK or discrepancies-fixed. If discrepancies were flagged for someone else to resolve, leave status as draft and capture the open items in §7 (Blocked fields).
5.6. Bump map version. Patch bump for validation-only (e.g., 0.1 → 0.2); minor bump if validation surfaced new content or restructuring.
Phase 6 — Ongoing refresh
Triggers that warrant re-running Phases 2–4 for affected fields:
| Trigger | Re-run for |
|---|---|
| Client profile change (new phone, address, social URL) | BV-BI, BV-LOC, BV-KG, Schema Markup as applicable |
| Design kit change (colors, fonts, logo) | BV-SG, Schema Markup Organization Logo |
| New social profile activated or retired | BV-KG §4.2, Schema Markup sameAs |
| GBP verification completes (Place ID becomes available) | BV-LOC Place ID + coords |
| Brand canon document update (positioning, voice, audience) | BV-BI §§1.1–1.4, BV-CON |
| Site cutover / domain change | All URL fields, especially BV-KG top pages |
| Quarterly drift check (no specific trigger) | Phase 5 only |
After any refresh, append a §12 Validation log row capturing what was refreshed.
Verification
The SOP is complete for a given client when:
- The per-client BV map has
status: validated(orstatus: draftwith explicitly tracked blocks) - Both Brand Vault tabs and the WP Schema Markup screen show all required fields populated
- Phase 4 cross-surface checks all pass
- Map §12 Validation log has at least one row with
outcome: OK(ordiscrepancies fixed) from the current operator - ClickUp ticket (if one was opened for the work) has a comment per BV tab + per WP surface
For ongoing operation, a SearchAtlas project is healthy when:
- The map's
last_updatedand last §12 Validation log entry are within the past 90 days (or the most recent client/canon change, whichever is more recent) - No Google Rich Results Test warnings on the homepage or a representative deep page
- Logo URL responds with HTTP 200
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| Brand Vault tab shows < 100% completion despite all map fields populated | Hidden "Show more" fields in BV-BI (SERPs location, TAX ID, etc.) not populated | Click "Show more" on BV-BI; populate per map §1; tabs other than BI may have analogous hidden sections (audit ticket open) |
| Autofill with AI overwrites operator-entered values | SearchAtlas autofill ran after manual save | Re-populate manually from the map; never click Autofill on a tab you've already populated |
| Schema Markup screen shows fields blank despite OTTO One-Click Activation completed | One-Click only imports plugin/branding settings, not Schema Markup fields | Populate Schema Markup manually per Phase 3 — this is expected behavior |
| Rich Results Test shows duplicate Organization schema | Another SEO plugin (Yoast, Rank Math, AIOSEO) is also emitting Organization | Configure conflict handler at Search Atlas → Settings → Compatibility to decide which plugin wins; or disable the other plugin's Organization schema |
| Logo URL returns 404 | Logo file deleted or media library URL changed | Re-upload logo to WP Media Library; update WP-ORG and BV-SG with new URL |
sameAs URL returns 404 | Social profile was deactivated / username changed | Update map §4.2 first, then re-paste into both surfaces; remove dead URLs entirely rather than leaving a broken sameAs |
| Sitelinks Searchbox not appearing in Google despite checkbox enabled | ?s= endpoint doesn't actually resolve | Verify curl https://<domain>/?s=test returns HTTP 200 with search-results body; if not, fix the site search before re-enabling |
Map shows status: validated but Phase 4 checks fail | Map was promoted prematurely or surface drifted post-validation | Demote to status: draft, fix the drift, re-validate, log a new §12 row |
Related Documents
Inputs / sources
- SearchAtlas Client Data Intake — canonical field-by-field spec (the contract this SOP populates against)
- SearchAtlas Brand Vault — field-level reference per BV tab
- SearchAtlas WP Plugin: Schema Markup — WP plugin field reference (the Local Listing surface)
- SC SearchAtlas Brand Vault (Populated) — SC's own populated map (pattern reference)
Rules / standards
- Working rule
searchatlas-brand-vault-population— where per-client maps live + populated-not-fabricated discipline - SC SOP Standard — frontmatter and structure conformance for this doc
Adjacent SOPs (out of scope here)
- Local SEO Training material at
06-team-training/platform-training/searchatlas/local-seo.md— Heat Maps, GBP optimization, citations (training, not yet SOP-ified)
Appendix: Per-tab Brand Vault field map
Quick reference — which map section feeds which Brand Vault tab.
| Brand Vault tab | Map section | Pasted-text sub-sections |
|---|---|---|
| Business Information (BV-BI) | §1 | §1.1 Brand description · §1.2 What makes unique · §1.3 How perceived · §1.4 How makes money |
| Locations (BV-LOC) | §2 | (no paste-text sub-sections) |
| Content (BV-CON) | §3 | §3.1 Content intent |
| Knowledge Graph (BV-KG) | §4 | §4.1 Top brand pages · §4.2 Social profile URLs |
| Style Guide (BV-SG) | §5 | (no paste-text sub-sections) |
| WP Schema Markup (Local Listing) | §6 | (mirrors §1 + §5 + §4.2; not a separate paste) |
Revision History
| Date | Version | Change | Author |
|---|---|---|---|
| 2026-06-09 | 0.2 | De-named roles per the SOP Standard "Reference roles, not individuals" rule (issue #60): the operator is now "SEO Operator" (dropped the inline current-holder name). Validation-log rows left as historical record. | Symphony Core Systems Team |
| 2026-05-26 | 0.1 | Initial draft. Six-phase procedure covering Brand Vault + WP Local Business / Schema Markup setup, refresh, and validation. Promotes per-client map from draft to validated via §12 Validation log convention. Out-of-scope: OTTO content publishing, Heat Maps, citation building, GBP optimization. | Symphony Core Systems Team |