Sync, refresh, and troubleshoot GSC

How LinkLoom pulls Search Console data, what the Sync now button really does, and how to fix the common warnings.

How data flows in

There are two ways GSC data enters LinkLoom:

  1. Automatic scheduler — a background job refreshes every connected property on a rolling cadence. You don't need to do anything; data appears in Insights and Triage on its own.
  2. On-demand "Sync now" — the button on Search Console setup and Insights forces an immediate pull for the primary property (up to the last 28 days).

Both paths write to the same tables, so Insights, Triage, and the in-editor SEO panel all update together.

What Sync now does

When you click Sync now, LinkLoom asks Google for:

  • Page-level metrics (URL, clicks, impressions, CTR, position) for the last 28 days.
  • Query-level phrases for the same window.
  • Daily rollups so the trend chart and the page-detail sheet have per-day granularity.

The toast at the end tells you exactly what happened:

  • "Synced X pages and Y queries" — full success.
  • "Pages synced, but query phrases could not be saved: …" — the pages call succeeded, but the query call errored. Retry in a minute; if it repeats the error message is copied through from Google.
  • "Synced X pages, but Google returned 0 query phrases for this property/window" — Google's query API returned an empty set. This is common for very small properties, brand-new properties, or properties with strict privacy filtering.

Why numbers can differ from Search Console

  • Property scope — Insights shows only the primary property. If your GSC dashboard aggregates multiple properties, LinkLoom will show less.
  • Windowing — Insights uses trailing 7/28/90-day windows ending yesterday. GSC's UI often defaults to the last 3 months.
  • Google's own delay — GSC data typically lags 2–3 days. A "0 clicks yesterday" reading usually just means Google hasn't finished processing.
  • Anonymised queries — for privacy, Google withholds rare queries. Your query totals will always be lower than page-level impressions.

Fixing common warnings

"Never synced" on the property card
Nothing has been pulled yet. Click Sync now. If it still says "Never synced" after the toast, check the sync status message just below the timestamp — it will show the error.

Sync fails with an authorisation error
The stored OAuth token was revoked or expired. Go to Search Console setupDisconnectConnect Search Console and re-authorise.

Insights and Triage are empty even after a successful sync
The primary property probably doesn't cover the URLs you expected. Open Search Console setup, click Change property, and pick one that matches your site's actual domain/subdomain.

"No query data yet" on the page detail sheet
Per-page queries are pulled during sync but sometimes need a second pass. Click Sync now once more. If Google still returns zero, this property genuinely has no attributable queries in the window.

Movers tab is empty
The Movers rule requires at least a ±3-click swing between the last 7 days and the 7 days before. Small or new properties often don't hit that threshold — it's not a bug.

Disconnecting vs deleting

  • Disconnect (Search Console setup) — removes the OAuth token and property list for the site, and clears the primary property. Historical metrics stay in the database but nothing new will sync.
  • Reconnect later — restores access. Depending on how much time has passed, the first sync may take longer as it backfills the 28-day window.

Data retention

  • Daily metrics are kept for a rolling window sufficient to power the 90-day Insights view and the trend chart.
  • 28-day page rollups are recomputed on every sync — you always see the latest 28-day picture, never a stale one.
  • Triage dismissals are permanent per site until you remove them from the database (contact support).

Getting help

If a sync consistently fails and the toast copy doesn't tell you enough, note the exact error text shown on the property card in Search Console setup and share it with support. That message is Google's own response and pinpoints the API-level cause.

Was this article helpful?