Skip to main content
SEO Ops

Documentation

Measures and data sources

Connect a source once, choose the right property for each website, then add the measures your reports are built from. Anything without data says so.

The idea

A measure is a number you report on, such as organic clicks. It either comes from a connected data source or is entered by hand. Reports are built from measures, so getting these right once makes every monthly report faster.

SEO Ops follows one rule: a figure is either a real value from the provider or it says Unavailable, with the reason. It is never a zero and never a guess. A good value is never replaced by a failed refresh, and the current month is labelled “month to date” wherever it appears.

What each source provides

SourceFigures it can fetch
Google Search ConsoleClicks, impressions, click-through rate, average position
Google Analytics 4Sessions, organic sessions, users, new users, key events, engagement rate
Google Business ProfileProfile views, calls, website clicks, direction requests (Google must approve Business Profile API access)
SemrushOrganic keywords, traffic, traffic value
AhrefsDomain Rating, referring domains, backlinks, organic keywords, traffic

These sources are Premium features. On the Free plan you can still add measures and enter their values by hand. See Free vs Premium.

Set it up

  1. Connect the source once under Settings › Integrations. For Google sources, create OAuth credentials in your Google Cloud project and enter them. For Semrush and Ahrefs, paste an API key. Each connection has a test button. Step-by-step guides: Search Console, GA4, Business Profile, Semrush and Ahrefs.
  2. Choose the property for each website. On the client page, open the website’s Data sources and pick the Search Console property, GA4 property, Business Profile location, Semrush database or Ahrefs target. A picker lists what the connected Google account can see.
  3. Add measures. Choose a metric from the source’s own list, or use Add standard measures to add the usual set for every connected source in one go.
  4. Refresh. Use Refresh data for the client, or Refresh on a single measure. A daily job also refreshes every client automatically.

When a measure says Unavailable

That is deliberate. The text tells you why: the source is not connected, the website has no property chosen, the provider returned an error, or Google has not approved access yet. Temporary failures store nothing and are retried. Fix the cause, refresh, and the real figure appears.

Measures you enter by hand

Some numbers have no source, such as open crawl issues or map-pack rankings you check yourself. Add them as measures and update them when you report. Playbooks suggest a sensible set; see Using playbooks.

How measures reach reports

When you create a report, SEO Ops pulls in the measures for the period alongside the work completed from your tasks and campaigns. See Generating reports.

Common questions

Can I check what was fetched?

Yes. On a site you can run wp seoops sync <client_id> with WP-CLI to see, for each measure, what was fetched and why anything was not.

Are my API keys safe?

Keys are stored encrypted and are never returned to the screen or written to logs. The encryption key is created automatically the first time it is needed.

Does anything leave my site without my asking?

Data is fetched only from the sources you connect. Nothing is sent to an AI provider unless someone presses an AI button.