Documentation menu

Google Search Console

Revenue → Acquisition → Organic search combines Google query/page performance with estimated keyword revenue. Enable Revenue and Analytics. Viewing requires revenue.read and analytics.read; query terms also require people.pii.read because searches can contain personal information.

Connect a property

  1. In your Google Cloud project, enable the Search Console API. Configure an OAuth consent screen and a dedicated web application OAuth client. Keep it separate from the console’s sign-in client.
  2. Add the exact authorized redirect URI shown in the search workspace: https://YOUR-CONSOLE/integrations/google-search/callback. Local development can use its loopback HTTP equivalent.
  3. Save the connection name, exact Search Console property (sc-domain:example.com or a URL-prefix property), client ID and client secret.
  4. Choose Authorize with Google, select an account with read access to that property, and approve Search Console read access. A recently verified console passkey is required.
  5. Run the worker. The connection queues its first import and refreshes every six hours. Sync search data requests a refresh; diagnostics explain failures while retaining the previous snapshot.

The connection requests Search Console read-only access, with offline access and consent:

https://www.googleapis.com/auth/webmasters.readonly

External consent apps may need Google verification. Testing-mode grants can expire after seven days; use the appropriate published consent configuration for durable access. A hosted, preconfigured Google OAuth application is not supplied.

Client secrets, refresh tokens and temporary PKCE verifiers use the encrypted server vault. The callback GET only renders a completion page. A same-origin, CSRF-protected POST verifies the passkey session, tenant permission, state, revision and expiration before saving authorization. State is bound to the initiating user/session, expires after ten minutes and is single-use. Google tokens never enter browser responses.

Use Edit connection to rename or pause it, Reconnect with Google to renew access, and Remove connection to delete imported search data and revoke stored credentials locally. Change the property or OAuth client by removing and recreating the connection. You can additionally revoke the OAuth application in your Google account. Up to eight properties can be configured per application.

Understand the report

Choose one property, a 7/30/90-day period, a 7/30-day visit lookback and one revenue currency. Billing is application-wide, so this report always uses production visits.

  • Search performance: clicks, impressions, click-through rate and impression-weighted average position. Property-level totals are independent of page/query reports and need not add up to them.
  • Observed page revenue: verified payments associated with the latest retained production visit before payment, within the lookback. The visit’s first retained page view supplies the Google-organic source and landing URL. Paid click IDs/media, later direct visits, missing identity links and Payment API reports are excluded. Refunds reduce the original payment date.
  • Estimated query share: each page’s observed net revenue multiplied by a query’s share of total page clicks in the same period. The denominator includes hidden queries. Amounts round down to whole cents; undistributed fractions remain unallocated.
  • Unallocated revenue: hidden queries, missing page performance, inconsistent totals and rounding. If known query clicks exceed a page’s clicks, that page’s estimates are suppressed. Incomplete date coverage suppresses estimates for the entire report.

Google does not provide each buyer’s search query. Keyword amounts are estimates, not observed keyword conversions, causal impact or cohort lifetime value. Consent, identity linkage, retention and payment-import history affect the evidence. Estimates from overlapping properties must not be added together.

Page URLs are grouped by origin and pathname. Query strings and fragments are removed; different hosts remain distinct. URL-prefix properties only include their configured origin/path prefix. Search query terms retain their case and are gated by sensitive-people permission.

Import boundaries

Each atomic snapshot covers 90 days ending three calendar days ago in America/Los_Angeles. Requests use final Google web-search data, with independent date, date/page and date/page/query reports. Google returns top available rows and may withhold queries; a complete import does not mean an exhaustive search export.

Each report allows 20 pages of 1,000 rows. Requests have a ten-second, 2 MB bound; the import has a two-minute budget. Repeated, malformed or oversized pages fail without replacing earlier data. Reports display the top 200 pages/queries, with aggregate totals across available rows. Revenue grouping is limited to 50,000 groups and queries have an eight-second database budget; shorten the reporting period if a limit is reached.

Management API

Personal Management tokens with the required organization role can read GET /api/v1/apps/{app}/revenue/search, list/configure /revenue/search/sources, update a source with PUT /revenue/search/sources/{id}, or request /sync and /remove actions. Mutations require revenue.write and expected revisions. Creation requires label, property, clientId and clientSecret. OAuth authorization remains an interactive console action with Google and a fresh passkey.

Report query parameters: env=production, source, days=7|30|90, window=7|30, currency=USD. Organization tokens inherit the developer role, which has no revenue permission. Query terms are omitted without people.pii.read. Public ingest keys cannot read these reports or manage connections. See the generated Management API reference for exact schemas.

Provider references