PureStats documentation
Search performance
Connect Google Search Console and Bing Webmaster to PureStats. Compare search queries, impressions, clicks, CTR and positions alongside your website analytics.
The search performance integration brings organic query data from Google Search Console and Bing Webmaster into PureStats. You can connect either provider or both at the same time, compare their results and view combined totals.
What the integration adds
After connection, PureStats can show:
- Search queries, including terms with impressions but no clicks.
- Pages receiving organic search clicks.
- Impressions and clicks.
- Click-through rate.
- Average position.
- Search data next to pageviews and conversions.
Requirements
You need:
- A verified Google Search Console or Bing Webmaster property.
- Permission to read that property's search performance data.
- A PureStats site whose domain matches the provider property.
- For Google: the PureStats Google OAuth integration configured by the server administrator.
- For Bing: Bing OAuth configured by the server administrator, or a Bing Webmaster API key from your account.
Connect a property
Open Site Settings, go to Integrations, and use the Search Console section. Connect Google through OAuth. Connect Bing through OAuth or enter a Bing Webmaster API key as a fallback. Credentials are encrypted at rest. After the provider redirects back to PureStats, select the matching property.
Google and Bing connections are independent. Disconnecting one provider removes only that provider's imported rows and leaves the other connection unchanged.
Compare providers
The Search performance card in Analytics includes a provider selector. Choose All providers for combined clicks and impressions, or select Google or Bing to inspect a provider separately. Each imported row retains its provider so overlapping Google and Bing values remain traceable.
Data freshness
Search performance data is not realtime. Providers publish it with a delay, and Bing query statistics may update less frequently than Google. PureStats imports available rows during provider-specific scheduled sync jobs.
SEO opportunities
Open Analytics → More → SEO Opportunities after connecting a matching property and completing a sync. Choose a date range and provider. The last three UTC days are excluded, and a range of at least seven completed days with successful sync coverage is required.
The view reviews up to 500 page URLs per provider, ordered by impressions, and lists up to 30 opportunities. It flags:
- At least 200 impressions, average position 1–10 and click-through rate below 2%: review the title, description and search intent.
- At least two positions lost against the preceding period, with at least 200 impressions in both periods: investigate indexing, content changes and competing results.
Positions are weighted by impressions. Priority combines the click gap to the 2% review threshold, position deterioration and the conversion performance of tracked human organic visits to the landing page. The click gap is an estimate, not a forecast. Conversion rates require at least 20 visits and no known tracking gaps. Each visit is counted once even if it converts several times; conversions are not attributed to individual search queries.
Page, country and device filters apply to the opportunities. Bing does not supply country or device dimensions; clear those filters to include it. Unsupported analytics filters remain in navigation and are explicitly identified as excluded from search calculations. Untracked property hostnames are excluded from the list.
Missing or incomplete preceding sync coverage is shown as unavailable and cannot produce a position-decline flag. A successful range refresh replaces stale rows; transient errors are retried by the scheduled sync, while expired authorization requires reconnection. Changing properties clears the old property's rows and comparison coverage.
Troubleshooting
If no properties appear, verify that the connected account has access to a verified property. If a property appears but no data imports, confirm the site domain, provider status and selected property. A reconnect warning applies only to the affected provider.
Query detail and brand filters
Each opportunity shows current and previous clicks, impressions, CTR and weighted position, plus up to five queries ranked by current impressions. Choose All, Branded or Non-branded queries. Enter up to five comma-separated brand terms; matching is case-insensitive and treats wildcard characters literally. Device and two-letter country filters remain available. Brand filters affect search rows, not onsite conversion rates.
Save an opportunity as an action to assign it and record a change date.
Google 403: access_denied during testing
If Google says the app is testing and only approved testers can sign in, the Google Cloud project owner must open Google Auth Platform → Audience → Test users → Add users, add the exact Google-account email and save. Then retry connecting from PureStats. Ensure the project owns the OAuth client configured for PureStats. See Google's audience instructions.
For access by all users, the project owner must publish the app and complete Google's required sensitive-scope verification. In external Testing mode, authorization using Search Console scopes expires after seven days and must be renewed. See OAuth token expiry and sensitive-scope verification. Changing a redirect URL or reconnecting alone does not authorize an unlisted tester.
Bing page details
Bing query totals and page-query details are separate imports. The total-click and impression metrics use the query summary. Page performance uses real URLs discovered with Bing's GetPageStats and GetPageQueryStats REST methods; the property address is never treated as an inferred landing page. A page filter switches the search summary to reported page-query rows for that selection.
Page details run in the maintenance queue, reviewing at most 500 reported pages ordered by impressions. The connection and data-quality views show progress, the page limit, published rows, last data date and failures. A refresh becomes visible only after every selected page is fetched successfully. Transient errors retry, repeated failures retain the last complete data set, and Run sync resumes saved progress. Property changes, disconnects and website deletion remove the old details and queued work. Bing updates these statistics with a delay and can report only a subset of pages; an empty result does not establish that no search activity occurred.
Query review opportunities
SEO opportunities use at least seven fully synchronized provider days (28 days by default). Filter by provider, query brand group and review type: snippet review, position decline, just outside the top 10, or multiple pages for one query. Recent incomplete provider days are excluded. A missing comparison period is shown separately from incomplete current coverage and from a complete period with no matching hints.
Just outside the top 10 requires a query and reported page URL with at least 200 impressions and an impression-weighted position greater than 10 and at most 20. Review search intent, useful content and internal linking. Previous metrics appear when the previous period is synchronized; previous positions require at least 200 impressions.
Multiple pages for one query requires at least 200 reported page impressions in total and at least two owned URLs with at least 50 impressions and 20% of that total each. Google evidence requires shared reported days within the same country and device. Bing evidence uses shared dates and explicitly lacks country and device dimensions. Full reported URLs remain distinct, including case and query strings. Foreign hosts are excluded. This is a review hint: these observations do not prove harmful keyword cannibalization. Review target pages, search intent and canonical URLs before making changes.
New hints review up to 500 queries per provider by reported impressions, are sorted by impressions and show up to 30 per type in steps of ten. A page filter selects candidate queries while other owned pages for those queries remain available as overlap evidence. Google and Bing are evaluated independently. Page shares use reported page impressions, not unique searches: several pages can be shown for a single search. Providers can omit queries even after a successful synchronization; see the Google Search Analytics API limits.
Human organic visits and distinct converting visits are landing-page context. They are never attributed to a query. Conversion rates require at least 20 visits without known website or global tracking gaps. When a path is shared across website hosts, visits are labeled as a common path aggregate and repeated counts must not be added. Save a hint through the action confirmation dialog to retain its stable identifier, query, provider, URLs, period and recommendations. Saving the same hint repeatedly returns the existing action.
The authenticated analytics.seo operation exposes the same evaluation through REST and MCP. Existing rows fields remain available; queryOpportunities is additive. Optional opportunity_type, search_brand and brand_terms filters share the central operation catalog and current website membership checks.
Bing page data follows the website’s rollup retention policy. Expiring rows reduces the available synchronization coverage without rewriting the original requested import range. A period or previous comparison that exceeds retained coverage is shown as incomplete. Published row counts reflect the rows still available.
Connection recovery
Expired or revoked authorization is marked Reconnect required. Existing data is preserved. Reconnect the provider with the account that can access the selected property. The next import recovers missing days, up to 180 days; a first import covers at least 28 days. Empty provider responses are valid and do not establish that no searches occurred.
Failed imports use increasing retry delays and respect provider Retry-After headers. The scheduled worker checks every 15 minutes; healthy connections refresh approximately daily. The connection screen shows the next retry time. Google testing-mode refresh tokens can expire after seven days; publishing and any required verification must be completed in the Google project by its owner.
Rotated refresh tokens replace the encrypted stored credential. Refreshes serialize per connection so concurrent imports do not reuse an obsolete token. invalid_grant stops automatic synchronization until an explicit reconnect; the existing dataset stays available. Repeated successful imports replace the same date range instead of adding duplicate totals.
A reconnect must return offline access or, for the same still-connected Google account, reuse its existing refresh token. Credentials from a different account are never combined. If the selected property is no longer accessible, reconnect is refused without replacing the connection or erasing its search data. Google authorization remains read-only (webmasters.readonly plus account identification); PureStats does not silently add permissions or simulate Google verification.