Plenty of businesses decide to "check analytics every week". Few keep it up, because every time they open the dashboards, they work out again what to look at. Thirty minutes becomes an hour, and soon it becomes once a month. Yet noticing a drop in search traffic a month late makes the cause far harder to find: a site change, a server issue, a cookie-banner update, a Google update and a seasonal dip can all land in the same month.
This article explains how to build website analytics monitoring that pulls Google Search Console and Google Analytics 4 (GA4) numbers in the same shape every week and alerts people only when a threshold is crossed. We covered what to automate in "Automating website operations starts with an inventory" and pre-publish checks in "Automated blog publishing needs a quality gate". This time we focus on the step after publishing: watching the numbers.
Main sources for this article: Search Console Help and API documentation, GA4 Help and Data API documentation, Google's consent mode documentation and the cookie guidance of the Dutch Data Protection Authority (Autoriteit Persoonsgegevens, AP), all checked on 23 October 2026.
| What this article answers | Key points |
|---|---|
| Why rethink how you read the numbers now | An impressions logging error, a branded filter and more changed the basics (section 1) |
| Which numbers to watch weekly | Four Search Console metrics and two GA4 metrics (section 3) |
| How to extract and keep the data | Choose by site size; store beyond 16 months (sections 4–5) |
| How to detect and report anomalies | Two baselines, minimum volumes, two alert levels (sections 6–8) |
| How cookie consent affects it | GA4 loses data, Search Console does not (section 9) |
| Costs and steps | Three levels, 2 to 48 hours of setup, a four-week plan (sections 13 and 16) |
1. What has changed: a year that moved the basics
Over the past year, several changes altered what Search Console numbers mean while the screens looked the same. Know them before building any monitoring.
Impressions were misreported for almost a year
On its "Data anomalies" page, Google states that a logging error prevented Search Console from accurately reporting impressions from 13 May 2025 until 27 April 2026. Impressions and the related CTR and average position were affected; clicks were not. Google adds that you may notice a decrease in impressions as a result of the fix.
So a sharp year-over-year fall in impressions in autumn 2026 may not mean rankings fell; last year may have been over-recorded. This affects comparisons until around April 2027. The same page notes that 28 February and 1 March 2026 are missing from bulk data exports for some properties and will not be recovered. Automated data can have holes too.
Branded queries can now be separated
On 20 November 2025 Google announced a filter that separates branded queries from non-branded ones in the Performance report, and added on 11 March 2026 that it was available to all eligible sites. Classification is done by an internal AI-assisted system and may occasionally be wrong. It applies to top-level properties with enough query volume.
Branded searches move with advertising and trade fairs; non-branded searches show whether your pages are being found. Recording them separately speeds up finding the cause of a change.
Annotations and a generative AI report were added
In November 2025 Search Console added custom annotations, notes on a chart date (up to 120 characters each, 200 per property), useful for recording releases and cookie-banner changes. As of 31 August 2026, a Generative AI performance report showing impressions in AI Overviews and AI Mode has been rolled out to all sites. Its only metric is impressions. FAQ rich results stopped appearing in Google Search from 7 May 2026.
Numbers move for reasons on Google's side several times a year, so a weekly report needs a field for what happened on Google's side that week.
2. What monitoring means: how it differs from a dashboard
Monitoring is not the same as building a dashboard. A dashboard means "you can find out if you go and look". Monitoring means "you find out when something changes, without going to look".
The difference is three decisions made in advance: metrics and units, baselines, and thresholds. Without them, the weekly check becomes "glance and feel reassured".
| Item | Dashboard | Monitoring |
|---|---|---|
| Purpose | See the situation any time | Not miss a change |
| Who moves | People go and look | The system comes to tell you |
| What you decide | Which charts to show | Metrics, baselines, thresholds |
| How it fails | Nobody looks any more | Too many alerts, all ignored |
The two have different jobs: monitoring catches an anomaly, a dashboard helps dig into its cause. Uptime and page-speed monitoring are out of scope here.
3. Narrow the weekly check to six numbers
First, keep the weekly list short. The more numbers you watch, the more often one of them "moves", burying real anomalies. For search acquisition, six are enough.
Four Search Console metrics
Clicks are visits from search results; closest to reality and unaffected by the logging error, they are the core metric. Impressions count how often your link was shown. If both fall, you are found less; if impressions hold, you are found but chosen less.
CTR is clicks divided by impressions and moves with titles and results-page layout. Average position needs care: the chart value averages your site's topmost result, so appearing low for new queries drags it down even when nothing got worse. Treat it as supporting evidence only.
Two GA4 metrics
Organic search sessions are visits classified as "Organic Search". Unlike clicks, they depend on consent and the tag loading, so changes in the gap reveal measurement problems (section 9). Key events are business actions such as enquiries or purchases, formerly "conversions"; the Data API replaced them with keyEvents on 6 May 2024. If traffic holds but key events fall, suspect a broken form.
| Metric | Source | What it shows | Pitfall |
|---|---|---|---|
| Clicks | Search Console | Actual search traffic | Final after 2–3 days |
| Impressions | Search Console | Demand and reach | Logging error 2025.05–2026.04 |
| CTR | Search Console | Whether you are chosen | Moves with SERP layout |
| Average position | Search Console | Ranking trend | Drops with new queries |
| Organic sessions | GA4 | Visits on the site | Consent and tagging |
| Key events | GA4 | Business outcomes | Breaks when redefined |
So narrow down causes from how two or more metrics move together, not from one number.
Two units: the whole site and key pages
Site-wide totals dilute anomalies: if clicks to your top ten revenue pages halve while the blog grows, the total barely moves. So define a group of key pages close to revenue or enquiries by URL pattern (for example, URLs starting with /products/) and record the same six metrics for it. If the branded filter is available, add non-branded numbers as well.
4. Getting the data out: interface, Looker Studio, API, bulk export
Next, where and how to extract the data. Four options differ in effort, volume and retention.
| Method | Setup effort | Volume | Retention | Suits |
|---|---|---|---|---|
| Interface and CSV | Almost none | What the screen shows | 16 months | Small sites |
| Looker Studio | A few hours | Up to connector limits | 16 months | Sharing |
| Search Console API | 1–3 days | 50k rows/day/type | You store it | Medium sites |
| Bulk export | Half to one day | Almost everything | You decide | Large sites |
Small sites can start with CSV. Automation pays off with the API or bulk export, when nobody copies numbers by hand each week.
Search Console API
The Search Analytics API returns data split by date, query, page, country, device and so on. One request returns 1 to 25,000 rows via rowLimit (1,000 by default), and you page through with startRow. It exposes a maximum of 50,000 rows per day per search type, sorted by clicks. Data is typically available after 2–3 days; setting dataState to all includes fresh, not yet final data. Dates are in Pacific Time (PT).
Quotas are 1,200 queries per minute per site and per user, and 40,000 per minute and 30,000,000 per day per project, far above a weekly pull. What bites first is the 50,000-row cap cutting off the long tail. Take totals from rows grouped only by date, and accept that query analysis covers top queries only.
Bulk data export (BigQuery)
Bulk data export writes Search Console data to Google Cloud BigQuery daily and is not subject to the 50,000-row cap. The first export happens up to 48 hours after setup, and data from before setup is not exported. Anonymized queries are excluded, and data accumulates indefinitely unless you set a partition expiration (if you do, make it 14 days or longer). Schema changes, such as adding a column, make the export fail.
The export creates a site-level table (searchdata_site_impression), a URL-level table (searchdata_url_impression) and an export log (ExportLog). Checking each morning that ExportLog has yesterday's entry means you notice a stalled export immediately. Costs are BigQuery storage and query charges, with a free tier. The sandbox (no credit card) includes 10 GiB of storage and 1 TiB of queries a month, but tables expire after 60 days, so it does not suit long-term storage.
GA4 Data API and Looker Studio
GA4 numbers can be pulled with the Google Analytics Data API. For a standard property the quotas are 200,000 tokens per day, 40,000 per hour and 14,000 per project per hour, with up to 10 concurrent requests; weekly reports barely touch them. GA4's daily BigQuery export is capped at 1 million events per day for standard properties; streaming export has no volume limit but costs $0.05 per GB. For weekly monitoring, pulling aggregates through the Data API is enough.
Looker Studio connects both through free connectors and makes shareable reports, but it shows rather than judges and is poor at notifying only when a threshold is crossed. Use it for presentation, and custom insights or your own script for checks and alerts.
Decide who (or what) owns each stage, and you can swap tools without breaking the system.
5. Retention: the 16-month wall and the 2- or 14-month wall
Half the reason to automate is protection against data disappearing, which happens differently in each tool.
Search Console drops data after 16 months
Performance data covers the last 16 months, in the interface and the API alike. That covers year-over-year, but not two-year comparisons or following a redesign. Google's "Debugging drops in Google Search traffic" page also advises using the API or bulk export to store data in your own systems if you need more than 16 months. Bulk export does not backfill, so start storing on the day you build the system.
In GA4, only explorations expire after 2 or 14 months
GA4 data retention can be set to 2 or 14 months for standard properties (up to 50 months in GA4 360). It applies only to explorations and funnel reports; standard reports are unaffected. Aggregates like the six metrics remain, but with the 2-month setting you cannot look back three months in an exploration when investigating an anomaly. Switch to 14 months on day one.
Even the longest is 16 months. What you store yourself is your only comparison material from year two.
| Data | Retention limit | What to do before it goes |
|---|---|---|
| Search Console performance | 16 months | Store weekly via API, or bulk export |
| GA4 explorations and funnels | 2 or 14 months | Set retention to 14 months |
| GA4 standard reports | Not affected | Store weekly aggregates |
| GA4 insight history | 1 year | Copy important alerts to your own log |
Only the first two rows need action.
6. Baselines: last week, same week last year, eight-week average
"Dropped" needs a baseline. The wrong one mistakes seasonal swings for anomalies, or hides real ones.
Do not use week-over-week on its own
Week-over-week produces the most false alarms. Golden Week and Obon in Japan, or King's Day (Koningsdag, 27 April), summer holidays and Sinterklaas in the Netherlands, easily move a week by 10–20%.
Align weekdays for year-over-year
To remove seasonality, align weekdays, not dates: use the Monday to Sunday 52 weeks earlier. As section 1 explained, impressions, CTR and average position between 13 May 2025 and 27 April 2026 make a poor baseline, so until around April 2027 judge by clicks and the GA4 metrics.
Use the eight-week average to catch changes last year cannot explain
Year-over-year is distorted by last year's projects and outages, so add the average of the last eight weeks: two months of trend, not pulled about by one unusual week.
| Baseline | Strength | Weakness | Use |
|---|---|---|---|
| Week-over-week | Instant to calculate | False alarms from holidays | Supporting only |
| Same week last year (52 weeks) | Removes seasonality | Distorted by last year's events | Main baseline |
| Last eight-week average | Reflects recent trend | Moves at season changes | Second baseline |
| Month-over-month vs last year | Good for monthly reports | Slow to detect | Management reports |
At DevNJ a change is an anomaly when both baselines cross the threshold in the same direction; one alone stays at "watch". When numbers fall, check the Google Search Status Dashboard for ranking updates and incidents, and Google Trends for shifts in demand. Google's debugging page lists both steps too.
7. Setting anomaly thresholds
Next, decide where an anomaly starts, the most important design choice. Too strict and alerts fire weekly; too loose and nothing fires.
Three kinds of threshold
There are three kinds: fixed values ("zero sessions in a day"), rates of change ("−20% or worse year over year") and statistical detection ("outside the range predicted from past behaviour").
| Type | Example | Catches | Watch out |
|---|---|---|---|
| Fixed value | Zero sessions in a day | Missing tag, server down | Small values cause false alarms |
| Rate of change | −20% or worse YoY | Ranking or demand changes | Noisy at low volume |
| Statistical | GA4 "Has anomaly" | Unusual movement | Does not explain why |
Use fixed values for breakages, rates of change for trends and statistical detection for the rest.
Minimum volume and the two-week rule
Rates of change need a minimum volume: 20 clicks falling to 10 is "−50%" but chance. At DevNJ, units with fewer than 100 clicks a week are not judged by rate of change; they are watched only with fixed values, such as "zero for two weeks in a row". And since one-week dips often come from holidays or brief outages, "watch" requires two consecutive weeks, while "alert" fires after one.
These are starting points. For the first eight weeks, record verdicts without notifying, then adjust thresholds after counting false alarms and misses.
Example starting thresholds
These are the starting values DevNJ uses for a new setup. They are experience, not statistics.
| Metric | Watch (2 weeks in a row) | Alert (after 1 week) |
|---|---|---|
| Clicks (site and key pages) | YoY and 8-week average both −20% or worse | YoY −40% or worse |
| Impressions | YoY and 8-week average both −20% or worse | Not used |
| CTR | 8-week average −15% or worse | Not used |
| Organic sessions | YoY and 8-week average both −20% or worse | Zero in a day |
| Key events | 8-week average −30% or worse | Zero in a week (if normally 5+) |
| GA4 ÷ Search Console ratio | ±15 points from 8-week average | ±30 points |
Alerts lean on fixed values because they are reserved for breakages that need action now; gradual declines can wait for the weekly review.
8. Sending alerts: custom insights and your own notifications
Then decide who is told, how and how fast, or the system breaks as "so many alerts that nobody reads them".
GA4 custom insights
GA4 custom insights notify you on the Insights dashboard and by email when a condition is met. You can create up to 50 per property; frequency is hourly, daily, weekly or monthly (hourly for web data only); conditions are set as metric, comparison and value, and "Has anomaly" needs no value. Triggered insights are kept for one year, and creating them requires the Editor role or above.
"Has anomaly" uses a Bayesian state-space time series model and flags values outside the credible interval. Training periods are 2 weeks for hourly, 90 days for daily and 32 weeks for weekly detection, so new properties and post-redesign periods are unstable.
Search Console, by contrast, emails you about indexing problems and similar issues but has no feature that alerts you when clicks drop. Checking search numbers means comparing values fetched through the API in your own script.
Route notifications by severity
| Level | Example | Channel | Who sees it |
|---|---|---|---|
| Alert | Zero sessions, zero key events in a week | Chat and email, immediately | Site operator and developer |
| Watch | Clicks −20% for two weeks | In the weekly report | Site operator |
| Log | Updates, annotations | Weekly report log field | Everyone |
| Monthly | Year-over-year monthly trend | Monthly report | Management |
Only alerts go out immediately. If they fire several times a month, revisit the thresholds; in our experience, a few times a year keeps people reading. State which metric, which unit, compared with what and by how much, plus that week's log, so the recipient understands before opening any dashboard.
9. Cookie consent and missing data: the reality for European sites
For sites serving Japan and Europe, assume GA4 numbers are structurally incomplete because of consent, and aim to notice when the gap changes.
EU and Dutch rules
Article 5(3) of the EU ePrivacy Directive requires, in principle, consent to store or access information on a user's device; EDPB Guidelines 2/2023 (adopted 7 October 2024) extend this to "similar technologies" such as pixels.
In the Netherlands, the AP states that limited analytics cookies with little privacy impact do not require consent, given a legal basis, a mention in the privacy statement and an easy way to object. Combined with advertising data they become tracking cookies needing consent, so if GA4 is linked to ads, assume consent is required.
Basic versus advanced consent mode
In Google's basic consent mode implementation, tags do not load until the user consents, and nothing is sent without consent. In advanced mode, tags load from the start and send only cookieless pings while consent is denied. Since March 2024, sending the consent states ad_user_data and ad_personalization for users in the European Economic Area (EEA) has been a condition for Google's advertising features (often called consent mode v2).
When a property qualifies, GA4 fills the gap with behavioral modeling. The prerequisites are the advanced implementation, at least 1,000 events per day with analytics_storage denied for at least 7 days, and at least 1,000 daily users with consent granted on at least 7 of the previous 28 days. Many small and medium sites do not reach them.
| Data source | Consent effect | Use in monitoring |
|---|---|---|
| Search Console | None | Baseline for traffic |
| GA4 (consented) | Measured | Sessions and key events |
| GA4 (no consent, basic) | Nothing sent | Treat as missing |
| GA4 (no consent, advanced) | Cookieless pings only | Modeled if eligible |
| Your own order and enquiry records | None | Cross-check key events |
Search Console clicks and your own order records are unaffected by consent: use them as fixed rulers.
Record the GA4 ÷ Search Console ratio every week
Each week, record "GA4 organic search sessions ÷ Search Console clicks". The definitions differ, so the level of the ratio means nothing; what matters is its change. If it suddenly drops below the eight-week average, suspect a consent-banner change, a missing tag or a new page without the tag. If it suddenly rises, suspect a change in consent rates or double counting. Annotate every banner or tag change in Search Console. (GA4 may also withhold rows with demographics or low user counts; keeping demographics out of the six metrics avoids this.)
10. A weekly report template
Output a short report in the same shape every week, so readers only look for what turned red.
| Field | Content | Written by |
|---|---|---|
| 1. Verdict | No anomaly, watch or alert | System |
| 2. Six metrics | This week, YoY, 8-week average | System |
| 3. Key pages | Same six metrics, biggest movers | System |
| 4. Measurement health | GA4÷SC ratio, export log | System |
| 5. This week's log | Releases, updates, data anomalies | System and people |
| 6. Reading and next steps | Likely cause, next week's actions | People |
Fields 1–4 fill automatically, field 5 partly. Field 6 is always written by a person; left empty, the report becomes an email nobody reads. A plain-text template (fictional figures):
Weekly monitoring (week of 12–18 Oct 2026)
Verdict: 1 watch
[Whole site] This wk YoY 8-wk avg
Clicks 3,240 −6% −3%
Impressions 182,000 −31%* −4%
CTR 1.8% +0.5pt ±0
Average position 14.2 −0.8 +0.3
Organic sessions 2,610 −9% −5%
Key events 41 −2% +4%
*Last year falls in the impressions logging error. Not used.
[Key pages: /products/]
Clicks 1,120 −24% −22% <- watch (week 2)
[Measurement health] GA4÷SC 0.81 (8-wk avg 0.83) / export: 7 days present
[This week's log] 14 Oct product page template change
[Reading and next steps] (filled in by the site operator)
Keep numbers you do not use for decisions, with the reason attached, like the impressions figure above, so nobody jumps to conclusions.
11. What people must decide
Why something moved, whether to act and what to do is decided by people. Hand that to a machine and a plausible explanation arrives weekly that nobody verifies. Generative AI can draft a summary, but only someone who knows events outside the numbers (a release, a sales push, a competitor's price cut) can write the reading. Causes often overlap in one week, and for seasonal swings, waiting is the right call.
As a starting point, here are metric combinations and what to suspect first. It is an order of investigation, not a verdict, but it halves the digging.
| Combination | Suspect first |
|---|---|
| Impressions ↓, clicks ↓ | Ranking drop, indexing, lower demand |
| Impressions →, CTR ↓ | Title changes, SERP layout |
| Clicks →, sessions ↓ | Consent banner, missing tag |
| Sessions →, key events ↓ | Broken form, price or stock display |
| Everything ↓ at once | Server outage, robots.txt, update |
12. Japan and Europe compared
Across the two markets, the same metrics rest on different assumptions.
| Item | Japanese audience | European (Dutch) audience |
|---|---|---|
| Cookie consent | Measuring before consent is common | Consent required, GA4 has gaps |
| Seasonality | New Year, Golden Week, Obon | King's Day, summer, year end |
| Offset from Pacific Time | 16–17 hours ahead | 9 hours ahead |
| Public holidays | Nationwide | Differ by country |
Time zones are easy to overlook. Search Console dates follow Pacific Time while GA4 follows the property's time zone, so even the "same" Monday to Sunday has boundaries 16–17 hours apart for Japan and 9 hours apart for the Netherlands. That explains most daily mismatches; weekly comparisons shrink it. If one property serves both, record numbers by country or language, or one market's fall hides behind the other's growth.
13. Cost and effort ranges
Cost depends on how much you automate. These are DevNJ estimates, not statistics. Outsourcing is calculated at €80 an hour; at €1 = ¥175 for readers in Japan.
| Level | What it involves | Setup | Weekly check | Monthly |
|---|---|---|---|---|
| 1. Manual | Copy six metrics into a spreadsheet | 2–4 hours | 30–45 min | €0 |
| 2. Tools | Looker Studio, insights, annotations | 8–16 hours | 15–20 min | €0 |
| 3. System | API, BigQuery, checks, alerts | 24–48 hours | 10–15 min | €0–30 |
Outsourced setup costs about €160–320 (¥28,000–56,000) for level 1, €640–1,280 (¥110,000–220,000) for level 2 and €1,920–3,840 (¥340,000–670,000) for level 3, whose monthly cost is mainly BigQuery and hosting, often within the free tier for small sites. Weekly time never reaches zero, because a person still writes the "reading and next steps".
Rule of thumb: a few hundred clicks a week and one operator, level 1 for two months then level 2; several markets to share, level 2; thousands of pages or comparisons beyond two years, level 3. Confirming at level 1 which numbers actually help decisions means less rebuilding later.
14. Case studies (three fictional companies)
Here we use three fictional companies to show how the same approach changes with circumstances. None of them is a real business.
Company A: a Japanese ryokan with an English site for Europe
The English site gets about 200 clicks a week. At level 2, Japanese and English are separate units; English clears the 100-click minimum, so rates of change apply. Its GA4 ratio is low because of consent, so only its change is watched.
Company B: a Japanese food webshop in the Netherlands
With thousands of pages, it uses level 3 and bulk export, checking product-page clicks and purchases each morning, with only year-over-year in peak December. When sessions fell but clicks held, the ratio alert revealed a new theme loading the consent script twice.
Company C: a Japanese manufacturer with a European site
With about ten enquiries a month, it uses level 1 and a fixed value for key events, "zero for four consecutive weeks". Branded searches spike around trade fairs, so non-branded clicks are the main number.
| Company | Level | Main focus | Adaptation |
|---|---|---|---|
| A (ryokan) | 2 | Clicks by language | Languages as separate units |
| B (webshop) | 3 | Product pages and purchases | YoY only in December |
| C (manufacturer) | 1 | Non-branded clicks | Fixed value for key events |
All three keep the six-metric skeleton and adapt units, baselines and threshold types.
15. Mistakes and things not to do
These are the failures DevNJ sees most. They come from missing agreements, not from tools.
| Don't | Why |
|---|---|
| Judge by average position alone | It drops when new queries appear |
| Report impressions YoY as is | The logging error period is mixed in |
| Change measurement without logging it | You won't notice the comparison broke |
| Send every notification to everyone at once | Even alerts stop being read |
| Leave the cause to an automated summary | Events outside the numbers are missed |
| Link advertising without consent | In the Netherlands that is tracking requiring consent |
| Track 20 metrics | Something is red every week; people stop looking |
| Skip storing data | Pre-redesign numbers vanish after 16 months |
Monitoring saves effort; it does not replace judgement.
16. Getting started in four weeks
- Week 1: decide the numbers and units. Fix the six metrics and the URL pattern for key pages, and check whether the branded filter is available
- Week 1: check GA4 settings. Set data retention to 14 months and write down how each key event is defined
- Week 1: decide baselines and thresholds. Same week 52 weeks earlier, eight-week average, the 100-click minimum, and the watch and alert conditions, in a table
- Week 2: build extraction and storage. Depending on your level, set up a spreadsheet, Looker Studio, the API or bulk export
- Week 2: assign the log. Decide who annotates releases and consent-banner changes
- Week 3: build the weekly report template. Use the six fields from section 10 and fill 1–4 automatically
- Weeks 3–4: record verdicts without notifying. Count false alarms and misses and adjust thresholds (this can run to eight weeks)
- From week 4: turn on alert notifications. Set up custom insights and your own notifications, and decide who receives them
Steps 2 and 4 cost nothing to do today, and every day of delay loses history, so do them first.
17. Checklist
- At most six weekly metrics, recorded for the whole site and for key pages
- A decision on the branded filter and on splitting by country or language
- A routine that stores Search Console data beyond 16 months
- GA4 data retention set to 14 months
- Two baselines: same week last year (52 weeks) and the eight-week average
- Units under 100 clicks a week are not judged by rate of change
- Watch (two weeks) and alert (immediate) conditions are in a table, and the first eight weeks were record-only
- Alert recipients and their next steps are agreed
- The consent mode implementation (basic or advanced) is known, and the GA4÷SC ratio is recorded
- Someone is named to write "reading and next steps" in the weekly report
18. Summary
- Monitoring creates a state where a change comes to you. Decide metrics, baselines and thresholds first
- Watch four Search Console metrics and two GA4 metrics, for the whole site and for key pages
- Search Console data disappears after 16 months, and bulk export does not backfill. Start storing on day one
- Judge against same-week-last-year and the eight-week average, set a minimum volume, and notify at two levels
- Impressions from May 2025 to April 2026 contain a logging error; judge comparisons across it by clicks
- For Europe, GA4 has consent gaps. Use Search Console and your own records as rulers and watch the ratio's change
- Automate fetching to notifying. People decide the cause and the response
Sources
Search Console (Google Search Central, Search Console Help)
- Performance report (Search results) — Search Console Help: how CTR and average position are calculated, aggregation differences
- Data anomalies in Search Console — Search Console Help: impressions logging error, missing bulk export days, end of FAQ rich results
- About bulk data export — Search Console Help: overview of bulk export
- Start a new bulk data export — Search Console Help: up to 48 hours, no backfill, expiration
- Generative AI performance report (Search) — Search Console Help: impressions in AI Overviews and AI Mode
- Search Console annotations — Search Console Help: annotation specifications
- Adding context to your Search Console data with custom annotations — Google Search Central Blog: custom annotations announcement
- Introducing the branded queries filter in Search Console — Google Search Central Blog: branded filter
- Debugging drops in Google Search traffic — Google Search Central: causes of drops, year-over-year, storing beyond 16 months
- A deep dive into Search Console performance data filtering and limits — Google Search Central Blog: row limits
- Introducing the new Search Console — Google Search Central Blog: 16 months of data
- Google Search Status Dashboard — Google: ranking updates and incidents
Search Console API
- Usage limits — Search Console API: quotas (updated 28 August 2025)
- Getting all your data — Search Console API: 50,000 rows a day, 2–3 day delay
- Search Analytics: query — Search Console API: rowLimit, dataState, Pacific Time
GA4 (Analytics Help, Google for Developers)
- Data retention — Analytics Help: what the 2- and 14-month settings cover
- Custom insights — Analytics Help: 50 insights, frequency, one-year history
- Anomaly detection — Analytics Help: model and training periods
- Limits and quotas on API requests — Google Analytics Data API: token quotas (updated 22 October 2026)
- Changelog — Google Analytics Data API: replacement by keyEvents
- Conversions vs. key events — Analytics Help: definition of key events
- BigQuery Export — Analytics Help: 1 million events a day, streaming pricing
- Behavioral modeling for consent mode — Analytics Help: modeling prerequisites
- Data thresholds — Analytics Help: when thresholds apply
Storage and visualisation (Google Cloud)
- BigQuery sandbox — Google Cloud: free limits and 60-day expiration
- BigQuery pricing — Google Cloud: storage and query pricing
- Connect to Google Search Console — Looker Studio: connector
Consent and European rules
- Consent mode overview — Google for Developers: basic and advanced implementation
- Updates to consent mode for traffic in the EEA — Google Ads Help: consent for EEA users
- Cookies — Autoriteit Persoonsgegevens: analytics versus tracking cookies
- Clear cookie banners — Autoriteit Persoonsgegevens: cookie banner requirements
- Guidelines 2/2023 on Technical Scope of Art. 5(3) of ePrivacy Directive — EDPB: scope beyond cookies
- Directive 2002/58/EC (ePrivacy Directive) — EUR-Lex: Article 5(3)
All sources were checked on 23 October 2026. Specifications, limits and prices change, so check the latest official documentation before configuring anything. Effort, costs and starting thresholds are DevNJ estimates and vary with site size and team.
FAQ
- Which Search Console and GA4 numbers should I check every week?
- Six is enough: clicks, impressions, CTR and average position from Search Console, plus organic search sessions and key events from GA4. Track them for the whole site and for one group of key pages close to revenue. Leave every other number for investigating an anomaly once one appears, and the weekly check takes around 15 minutes.
- How far back does Search Console data go?
- Performance data is available for the last 16 months, in the interface and through the Search Analytics API alike. Older data disappears, so to keep long-term comparisons, pull the data regularly through the API and store it, or set up bulk data export to BigQuery. Bulk export only covers days from the moment you configure it; it does not backfill earlier data.
- Can GA4 alert me automatically when something looks wrong?
- Yes. With GA4 custom insights you choose a metric, a condition and a frequency (hourly, daily, weekly or monthly), and add email addresses to notify. If you pick the 'Has anomaly' condition, GA4 alerts you when a value falls outside the range it predicted from past data. You can create up to 50 custom insights per property, and daily detection is trained on the previous 90 days.
- Impressions are down sharply year over year. Did my rankings drop?
- Check the Search Console 'Data anomalies' page first. Google states that impressions were not reported accurately from 13 May 2025 until 27 April 2026. Impressions and the related CTR and average position were affected; clicks were not. For year-over-year comparisons that span that period, judge by clicks rather than impressions.
- How does cookie consent change my GA4 numbers?
- Visitors who do not consent drop out of cookie-based measurement. In basic consent mode nothing is sent for them; in advanced mode only cookieless pings are sent. If your property qualifies, GA4 models the missing share, but Search Console clicks are not affected by consent at all. Recording the ratio between the two every week reveals consent-banner and tagging problems.
- How much does it cost to automate weekly analytics monitoring?
- As a DevNJ estimate: a manual routine with the interface and a spreadsheet takes 2 to 4 hours to set up and costs €0 a month; a setup with Looker Studio and custom insights takes 8 to 16 hours and €0 a month; full automation of fetching, checking and alerting with the API and BigQuery takes 24 to 48 hours and €0 to €30 a month. Outsourced at €80 an hour, that is roughly €160 to €3,840.
Planning a site that has to work in both markets?
Get in touch