Search Console + SalesCrew
Queries, pages, clicks and average position collected into your own Postgres project, beside the leads those pages produced.
- Read-only collector
- Query and page level
- Freshness shown, not assumed

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.
| What | Mechanism | Direction | Objects | Status |
|---|---|---|---|---|
| Query and page performance | Read-only collector against the Search Console API | Inbound | Marketing tables in your instance | Available |
| Clicks, impressions, position | Same collector, stored per day | Inbound | Marketing tables | Available |
| The explorer and drill-downs | Query and filter inside the marketing module | Internal | Marketing tables | Available |
| Query movement over time | marketing_query_moves over the stored history | Internal | Marketing tables | Available |
| Freshness | marketing_freshness reports the lag per source | Internal | Marketing tables | Available |
| URL inspection or indexing requests | Not built | None | None | Not available |
| Writing anything to Search Console | Not possible and not attempted | None | None | Not 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
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
Store the credentials
They go into your instance's Supabase Vault and are never displayed after entry.
- 3
Backfill, then schedule
The first pull takes history; the scheduled pulls keep it current. marketing_pull triggers one by hand.
- 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
Check freshness before quoting
Roughly a two-day lag is normal here. marketing_freshness tells you where each source stands.
- 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.