Search Console + SalesCrew

Queries, pages, clicks and average position collected into your own Postgres project, beside the leads those pages produced.

An admin approves every new account by hand. Nothing is created until then. We reply by email; no newsletter, no sequence.

  • Read-only collector
  • Query and page level
  • Freshness shown, not assumed
app.salescrew.io/settings
Settings: MCP tokens, integrations and the audit log

The short answer

  • The mechanism is a read-only collector against the Search Console API on a schedule. Rows land in the marketing tables inside your own instance, and nothing is written back to Google.
  • Search Console data arrives with a lag of roughly two days. SalesCrew shows a freshness value per source rather than letting a chart imply that yesterday is complete.
  • The value is the join. A page's clicks and its resulting leads sit in the same database, so the question of which organic pages produce pipeline is a query rather than a manual match between two exports.

Mechanism

Read-only, scheduled, and landing in tables you own.

WhatMechanismDirectionObjectsStatus
Query and page performanceRead-only collector against the Search Console APIInboundMarketing tables in your instanceAvailable
Clicks, impressions, positionSame collector, stored per dayInboundMarketing tablesAvailable
The explorer and drill-downsQuery and filter inside the marketing moduleInternalMarketing tablesAvailable
Query movement over timemarketing_query_moves over the stored historyInternalMarketing tablesAvailable
Freshnessmarketing_freshness reports the lag per sourceInternalMarketing tablesAvailable
URL inspection or indexing requestsNot builtNoneNoneNot available
Writing anything to Search ConsoleNot possible and not attemptedNoneNoneNot available

Mechanisms read from the SalesCrew integration table, September 2026. Google's own documentation is the authority on Search Console API limits and reporting lag.

Setup

Fifteen minutes, then leave it to collect for a fortnight before drawing conclusions.

  1. 1

    Grant read access to the property

    The collector needs read access to the Search Console property. It asks for nothing more because it does nothing more.

  2. 2

    Store the credentials

    They go into your instance's Supabase Vault and are never displayed after entry.

  3. 3

    Backfill, then schedule

    The first pull takes history; the scheduled pulls keep it current. marketing_pull triggers one by hand.

  4. 4

    Match pages to lead sources

    The join between a landing page and the leads it produced is what makes this worth collecting. Agree the naming once rather than reconciling it monthly.

  5. 5

    Check freshness before quoting

    Roughly a two-day lag is normal here. marketing_freshness tells you where each source stands.

  6. 6

    Wait for a real sample

    Position changes on a handful of impressions are noise. Give a change enough data before you act on it.

Questions

Why is yesterday missing?
Search Console data lags by around two days. That is Google's behaviour rather than a collector problem, and the freshness value exists so nobody mistakes an incomplete day for a bad one.
Does this replace Search Console?
No. It copies the data next to your pipeline. For index coverage and URL inspection you still go to Google.
Can I see which queries produced leads?
You can join page performance to the leads those pages produced, which is the practical version of the question. Query-level attribution to an individual lead is not something Search Console makes available.
Can an agent read this?
Yes, through the marketing tools with a scoped token, and every call lands in the audit log with its actor.
Which tier includes it?
The marketing module sits on Agency at $1,200 a month, with unlimited seats like every tier.

Put organic performance beside the pipeline it feeds

Collected daily into your own database, with the lag written on the tin.

An admin approves every new account by hand. Nothing is created until then. We reply by email; no newsletter, no sequence.