Task Library
Verify Search Console ownership of the domain and link it to GA4 so search queries, impressions, and clicks flow into one measurement view.
Category: Digital Plumbing
Use this when nobody can see what the site ranks for, GSC is unverified or stuck in an old webmaster's account, or GA4 shows no Search Console data.
> This task is a gate, not a nice-to-have. No content ships to a property that hasn't cleared it. > On 2026-06-14 we published 16 articles to a client site that had no GSC property. Six of them were > never indexed and nobody knew for six weeks. See Access-Checklist/RCA-2026-07-27-anthonyhilb-gsc.md. > Before running this task, check Access-Checklist/ACCESS-REGISTER.json and run > python3 Access-Checklist/access_audit.py --domain <domain> – we often already hold access nobody remembered.
Inputs
- Business owner's Google account (property ownership stays with the client)
- DNS access at the registrar/DNS host (for domain verification – see verify-domain-ownership-and-registrar-access)
- GA4 property with Editor access (run set-up-ga4-with-internal-traffic-filtering first)
Steps
- In Search Console under the owner's Google account, add a Domain property for the root domain (covers http/https, www/non-www, and subdomains in one property).
- Verify via the DNS TXT record GSC provides: add it at the DNS host, wait for propagation, click Verify.
- Audit users: owner's account holds Owner; operators added as Full users; ex-webmasters and unknown accounts removed.
- Submit the XML sitemap (from the sitemap skill) and confirm Success status.
- Link to GA4: in GA4 Admin → Product links → Search Console links, connect the GSC property to the GA4 property and select the web data stream.
- In GA4, confirm the Search Console reports appear (publish the Search Console collection from the Library if hidden) and queries begin flowing – allow up to 48 hours for first data.
- Record the verification method and property details in the client record so access never gets lost again.
Definition of done (QA checklist)
- Domain property verified in GSC via DNS TXT, owned by the client's account
- User list audited – no stale or unknown accounts with access
- Sitemap submitted with Success status
- GSC↔GA4 link live; Search Console reports visible in GA4 with query data (within 48h)
- Linked back to the definitive article and relevant siblings
- Complies with Blog Posting Guidelines (if it publishes content)
Example(s)
anthonyhilb.com – the cost of skipping this task (July 2026). We published 16 how-to guides on June 14 to a client site we publish to but do not host. Because our GSC coverage audit took its denominator from the hosting fleet, the site could not appear as a gap; because the client-facing "needs your login" list was written from memory rather than from a checklist, Search Console was never requested. Five weekly reports read "flat, content needs more time." On July 27 a direct index check found 6 of the 16 guides had never been indexed – including the three most commercial topics. The same probe found no GA4 and no GTM either: 16 articles shipped into a property with zero measurement. The fleet-wide sweep that followed found 127 more properties in the same condition, 50 of them on our own hosting.
What the fix looked like: build the audit denominator from work (build_access_register.py merges credentials + hosting fleet + client rosters + client project folders → 265 properties, 160 of them previously invisible), probe each one from public HTML (access_audit.py), and run it weekly (access-coverage-audit). Full write-up: Access-Checklist/RCA-2026-07-27-anthonyhilb-gsc.md.
The transferable lesson: an audit is only as honest as its denominator. Ours reported "92 sites not in GSC" with total confidence while being structurally incapable of seeing the site that broke.
File in the zip: skills/digital-plumbing/verify-google-search-console-and-connect-to-ga4.md. Download the Task Library zip.
Index: Task Library. Article guidelines.
