Arenza is now part of the OpenAI Partner Network 🎉
Chapters

Connect Google Search Console

Use the search phrases and landing pages where your website appeared on Google as supplementary evidence for buyer intents and questions. Connect once for the same Arenza brand: Shopify and Portal share the connection and data. Connecting or syncing does not rewrite existing intents or start an AI scan.

Before you start

  • Your website already has the relevant verified property in Google Search Console. If it does not, complete Google's property verification first.
  • A GSC property owner must add the reader. A colleague with view access may not have the Add user option.
  • A domain DNS administrator must add a TXT record. This may be your technical team, website provider or domain administrator, rather than your Shopify administrator.
  • Check the website domain on your Arenza brand. Your Shopify store must be linked to the same Arenza brand. Two separate brand records do not share data just because their domains match.

You do not need to share your Google password, download a service-account JSON key or create a Google OAuth application. Use the reader email and brand-specific TXT value shown on the current brand page.

Open the connection page

Portal: sign in to Arenza, select the brand, open Buyer intents → Search data, then click Connect Google Search Console. Site settings also link to Search data.

Shopify App: open Buyer intents or AI Assets, find the Google Search Console card and choose Connect or Manage connection. It opens the same brand's Portal connection page in a new tab. If sign-in is required, use an Arenza account with access to that brand.

Step 1: Add the read-only user

  1. Select the intended property in Search Console. Its domain must match your Arenza brand.
  2. The property owner opens Settings → Users and permissions → Add user.
  3. Copy the reader email from Arenza and paste it into Google. The current standard reader is:
arenza-search-console@brandcert.iam.gserviceaccount.com
  1. Choose Restricted and save. Owner or Full access is not required.

See Google's official permissions guide for the rights associated with each role.

Step 2: Add the brand-specific DNS TXT record

On the same Arenza page, copy the TXT name and TXT value. Ask your domain administrator to add a new TXT record.

DNS fieldWhat to enter
TypeTXT
Name / HostCopy the complete name shown, for example _arenza-gsc.your-site.example. If the DNS provider automatically adds your zone's domain, the Host field will normally be _arenza-gsc only. The final full name must match Arenza.
Value / ContentCopy the complete arenza-gsc-verification=... value for this brand. Do not use an example, another brand's value or literal dots.
TTLThe DNS provider's default is fine.

Do not replace an existing Google verification record or change A, CNAME, MX or other TXT records. This separate value proves control of the domain for the current Arenza brand and cannot be reused across brands. Wait for DNS propagation before verifying.

Step 3: Choose the property and sync

  1. Back in Arenza, check Search Console property. The default is for the matching Domain property; use the full property name instead if you actually have a URL-prefix property in Google.
  2. These are two alternative format examples. Enter the one that exists in your account, not both:
sc-domain:your-site.example
https://your-site.example/
  1. A URL-prefix must exactly match the Google property, including scheme, hostname, path and trailing /. The current integration requires the same hostname as the brand website, ignoring a www prefix. A subdomain brand cannot use a parent-domain property: for a brand website at shop.your-site.example, sc-domain:your-site.example is not accepted.
  2. Click Verify and sync. Check the success state, last-sync timestamp, search date range and imported phrases.

If initial verification fails, the connection record may already exist. Fix the permission or DNS issue and use Sync / Retry on the page rather than repeatedly creating a connection. To correct the property, disconnect first and reconnect with the right one.

Confirm both surfaces share it

  • Return to Shopify and refocus the tab or click Refresh status. The property and last-sync time should match Portal.
  • With fresh query data, Shopify shows Ready for generation. Your next explicit intent or question generation can use it; existing content stays unchanged.
  • A successful sync with no query rows is a valid empty result. Other demand sources remain available.
  • Cached data older than seven days is excluded from generation. Manually sync when needed. Reading a page, refreshing status or generating intents never silently refreshes Google data.

Troubleshooting

SituationWhat to do
Users and permissions / Add user is missingAsk the GSC property owner. Shopify admin rights do not establish GSC ownership.
Domain verification requiredCheck the full TXT name and value against the current brand, look for a duplicated domain suffix, then wait for DNS propagation and retry.
Google denies accessCheck the exact reader email, Restricted permission and selected property.
Property domain mismatchCheck the Arenza website domain, Domain / URL-prefix format and subdomain. Disconnect before changing properties.
Syncing / already connectedWait and refresh status. Use Sync for an existing connection instead of creating it again.
No phrases, or figures differ from GoogleThe window may contain no rows. Anonymized searches, Google's top-row limits and query/page dimensions affect the visible records.
Shopify shows a different stateVerify the store is linked to the same brand and refresh. Matching domains alone do not merge brand records.
Platform unavailable / quota limitRetry later. For persistent issues, give support the brand, property name, error and time; do not send Google passwords or keys.

Data scope and disconnecting

Each explicit sync imports the most recent 28 Pacific Time calendar days ending three days ago, for Google Web across all countries and devices, capped at 10,000 query/page rows. Google can omit anonymized searches and other rows, so this is not a complete search log.

Clicks, impressions, CTR and average position describe website search performance. They are not total market search volume, original AI prompts, AVS, ACS or sales. Connecting never publishes or changes your store.

Open the shared management page from either surface and Disconnect to remove this brand's connection and cached data from both. Historical evidence already saved with intents remains. To revoke Google's permission too, the property owner must remove the reader under GSC Users and permissions. Check the impact first if the same reader still serves other authorized brands on that property.

API reference

These are the authenticated Portal application's contracts, provided for integration understanding and troubleshooting. Normal setup uses the UI above. They require a Clerk session JWT plus brand access. An arn_pat_... Personal Access Token, Website install ID or Google access token is not a substitute. Never put session tokens in public pages, documentation or URLs.

Base URL: https://api.arenza.ai. {brand_id} is the UUID of a brand you can access.

MethodPathRequest and result
GET/api/v1/brands/{brand_id}/search-consoleReads configuration, brand TXT challenge, connection state and cache; does not sync Google.
POST/api/v1/brands/{brand_id}/search-console/connectJSON {"property":"sc-domain:your-site.example"}; saves the connection, checks DNS and Google access, and performs the initial sync.
POST/api/v1/brands/{brand_id}/search-console/syncNo business request body; explicitly syncs an existing connection and returns current state on success.
DELETE/api/v1/brands/{brand_id}/search-consoleRemoves the connection/cache and returns {"disconnected":true}; does not revoke Google access.
GET /api/v1/brands/{brand_id}/search-console HTTP/1.1
Host: api.arenza.ai
Authorization: Bearer <CLERK_SESSION_JWT>

GET, successful connect and successful sync return the same state shape: configured, reader_email, default_property, verification and connection. verification contains the current brand's TXT name and value. connection is null if disconnected; otherwise it includes property, status, last_error, last_synced_at, syncing and snapshot. The snapshot contains startDate, endDate, capturedAt, limited and rows; each row has query, page, clicks, impressions, ctr and position. ctr is a ratio from 0 to 1. Successful requests return 200. configured:true means the platform is configured, not that the brand is connected.

Business errors normally use {"error":{"code":"..."}}:

HTTP / codeMeaning and next action
401Missing, invalid or expired session; sign in again.
400 invalid_property / property_domain_mismatchCheck property format and the brand website.
403 domain_verification_requiredAdd or correct this brand's DNS TXT record.
403 access_deniedCorrect the GSC reader grant and property name.
404 / not_connectedBrand unavailable, or there is no connection to sync.
409 already_connectedGET the existing state, then sync; disconnect first to change properties.
409 sync_in_progress / connection_changedWait or GET again and act on the latest state.
429 quota_exceededBack off before retrying; do not loop submissions.
503 not_configured / google_unavailablePlatform configuration or Google request failure; read state first and contact support if needed.

A status read can also return 200 with connection.last_error: sync_interrupted after an expired sync lease. Read the latest state, then retry Sync.

A failed sync retains the previous complete snapshot, but an error-state source is excluded from generation. A successful empty sync replaces old data. After a timeout or uncertain outcome, GET state before retrying Connect.

Shopify reads the same brand state through a server-side internal adapter. Customers do not need its HMAC secret, installation epoch or separate GSC credentials; that adapter is not a public browser API.

Official references