1. Site connection
You add the domain and publish a verification signal Google can retrieve. This is the technical ownership step covered here.
Connect the correct WordPress domain to AdSense with Site Kit, an account snippet, a verification meta tag, or ads.txt, then prove the signal is publicly visible before requesting review.
For most self-hosted WordPress sites, use Site Kit by Google. Install the official plugin, connect it with the Google Account that owns your AdSense account, open Site Kit > Settings > Connect More Services > AdSense, complete setup, and allow Site Kit to place the AdSense snippet. Confirm the snippet in WordPress Site Health, then return to AdSense to verify and request review.
If Site Kit is not appropriate: choose one method shown in your AdSense account. Publish the exact AdSense script or verification meta tag inside the live document <head>, or publish Google's seller line at https://yourdomain.com/ads.txt. Purge every cache, check the logged-out public response, then click Verify.
Google's current connection flow supports three verification methods: an AdSense code snippet, an ads.txt snippet, and a google-adsense-account meta tag. They all rely on the same principle: Google must retrieve an account-specific signal from the exact site you submitted.
Never use a publisher ID copied from a tutorial. Your signal contains your own ca-pub-... or pub-... identifier. Do not paste machine-readable code into a visible paragraph, page-builder text block, or ordinary post editor.
“Verify site ownership” is often used loosely, which makes WordPress tutorials confusing. During connection, Google checks whether the account-specific signal exists on the submitted site. That demonstrates practical control of the domain or its output. It does not prove that every page meets policy, and it does not mean ads should appear immediately.
You add the domain and publish a verification signal Google can retrieve. This is the technical ownership step covered here.
Google reviews the whole site for eligibility and policy compliance. Google says this usually takes a few days but can take two to four weeks.
Ads.txt identifies authorized sellers of inventory. It can be a connection method, but its continuing role is advertising transparency.
Ads serve only after the account and site are ready, implementation is valid, consent is handled, and no policy or technical block prevents requests.
Search Console verification is separate. Connecting Search Console through Site Kit does not automatically complete the AdSense connection. Payment-address, identity, and phone verification prove facts about the publisher account, not control of a specific WordPress domain.
If AdSense says it cannot find code, solve connection. If the site says “Getting ready,” connection may be complete while review continues. If the site is “Ready” but ads remain blank, investigate ad implementation, consent, demand, browser blockers, or policy status instead of repeatedly changing ownership code.
| Method | Best for | Location | Main risk |
|---|---|---|---|
| Site Kit by Google | Most self-hosted WordPress publishers wanting official plugin-based setup. | The plugin places the account snippet in site output. | Wrong Google Account or code already injected elsewhere. |
| AdSense snippet | Publishers wanting connection plus the script used by AdSense features and Auto ads. | Between the document head tags, normally sitewide. | A cache, optimizer, consent tool, or second plugin changes or duplicates it. |
| Verification meta tag | A lightweight ownership signal without loading the full script on the homepage. | Between the document head tags. | A theme or field escapes it or prints it on the wrong template. |
| Ads.txt snippet | Sites with reliable control of a root-level text response. | At /ads.txt on the canonical host. | A plugin, CDN, host, or redirect serves the wrong file or status. |
Use one intentional method first. Site Kit, a header plugin, an ad manager, theme integration, and custom PHP together do not make verification stronger. They create duplicates and obscure future maintenance.
Site Kit is the default recommendation because it is an official Google plugin and handles account connection and snippet placement together. The meta tag is a clean fallback when you need only verification. Ads.txt is excellent when root-file control is stable. Manual script insertion suits developers who understand hooks, caching, and deployment.
Site Kit reduces a common WordPress failure: putting correct code in the wrong place. It connects the site with the AdSense account associated with the selected Google Account and can place the required snippet. Site Kit does not approve the site; AdSense still reviews it.
Create a current backup. Confirm you administer the live installation, not staging, localhost, or a temporary host. Open the public homepage privately.
Go to Plugins > Add New, search for “Site Kit by Google,” verify the publisher, install, and activate it.
Use the account associated with the AdSense account you intend to use. Do not create duplicate AdSense accounts to solve a login mismatch.
Open Site Kit > Settings > Connect More Services > AdSense > Set up AdSense. A Monetization prompt may also appear on the dashboard.
If asked, let Site Kit place the snippet. If it detects existing code, identify which plugin, theme, or service owns that code before enabling another copy.
Follow the AdSense flow and add the final public domain, not a WordPress admin URL, a post URL, a tracking URL, or staging hostname.
Open Tools > Site Health > Info > Site Kit by Google. “AdSense snippet placed: Yes” confirms Site Kit placement, not approval.
Return to AdSense, confirm completion, click Verify, and then Request review. Select an appropriate consent-management option.
Site Kit uses one Google Account per WordPress account on a site. If Site Kit services use one account but AdSense belongs to another, follow Site Kit's permissions guidance. Random switching can cause insufficient-permission errors. Decide which authorized account should own the integration and grant legitimate access where necessary.
Before enabling placement, search source for pagead2.googlesyndication.com/pagead/js/adsbygoogle.js and your publisher ID. Check ad plugins, header tools, theme settings, Tag Manager, consent tools, and host integrations. Site Kit warns that enabling its placement over existing code can produce duplicates.
Choose the AdSense code snippet method and copy the exact code displayed for your account. Its structure resembles this, but your identifier is unique:
The account snippet belongs between <head> and </head>. It should appear in rendered homepage source and normally across pages where AdSense features will work. Do not paste it as visible Custom HTML inside a post body.
A maintained header-code or ad-management plugin can insert the exact snippet into the document head. Paste only Google's code, enable it publicly, save, and clear caches. Choose a plugin compatible with your current WordPress version.
Developers can attach output to WordPress's wp_head action from a child theme or site-specific plugin. Avoid directly editing a parent theme's header.php; an update can erase the change. Modern block themes may not expose the traditional file competitors describe.
For developer implementation and manual ad-unit placement, use our manual AdSense code for WordPress guide. This page focuses on proving ownership.
An individual display unit often includes an <ins class="adsbygoogle"> element and initialization code. It belongs in the page body where the ad renders. Copy the verification method from the connection card, not an arbitrary ad unit from the Ads area.
Google offers a meta tag if you do not want the full AdSense script on the homepage during connection. Copy the exact tag from AdSense:
Add it to the document head using one reliable method: a maintained header-code plugin, a theme's documented custom-head field, a child-theme hook, or a site-specific plugin. Do not put it in a post SEO description, footer widget, body block, or robots.txt.
Some verification fields accept only a token; others accept a complete meta element. If a field expects a value and you paste the whole tag, WordPress may escape it or generate malformed markup. Use a field documented for custom head markup and inspect actual public source.
The meta tag can prove control, but it does not load AdSense JavaScript or create placements. After approval, choose an ad implementation. If you later enable Site Kit or the account snippet, document ownership and avoid accumulating obsolete code.
Choose ads.txt and copy Google's exact seller line. A direct Google line normally follows this pattern:
Publish it as plain text at https://example.com/ads.txt. If a file exists, append the line without deleting valid partner entries. Do not upload it to /wp-content/, the Media Library, or a WordPress page named “ads.txt.”
A maintained plugin can generate the root response when hosting permits WordPress to handle it. Some ad plugins include this feature. Hosts and CDNs may offer ads.txt tools. Developers can deploy a physical root file. Choose one owner because competing physical and virtual files create unpredictable output.
Open the URL privately. It should return HTTP 200, readable plain text, and your exact pub- ID. Check the canonical host. A security challenge, cookie wall, maintenance page, HTML theme, or custom 404 is not a valid ads.txt response.
Google crawls files on its schedule, so dashboard status may lag behind a successful browser test. Do not repeatedly remove a correct file. Prove the public URL, status, content, redirects, and identifier, then allow time for detection.
An editor confirmation is insufficient. WordPress, a page cache, CDN, and browser can show different versions. Test the public response as a logged-out visitor.
/ads.txt directly when selectedView Source shows HTML delivered by the server or cache. Developer Tools can show a document after JavaScript changes it. Verification is most robust when the selected signal is predictably present in delivered source or the direct text response. Do not depend on a click or logged-in state to create it.
Script and meta methods commonly use ca-pub-...; ads.txt uses pub-.... Copy what AdSense supplies rather than converting it manually. Smart quotes, missing digits, or a placeholder can make the signal invalid.
A page plugin, host cache, proxy, or CDN still serves old HTML. Purge every layer and retest privately.
The tag is in the body, footer, editor, or admin page instead of the public document head.
You edited staging, a temporary host, subdomain, or noncanonical copy while AdSense checks another site.
Site Kit, a theme, header plugin, ad plugin, and custom code all add snippets. Leave one owner.
Delay JavaScript, minification, combining, or consent software changes or withholds required code.
Robots rules, firewall, bot mode, country block, challenge, or rate limit prevents access.
Maintenance mode, a coming-soon plugin, basic authentication, or login wall hides content.
Code was added to an inactive theme or a parent-theme update erased the change.
A broken custom theme omits wp_head(), preventing plugins from printing head markup.
A physical file shadows a plugin route, or a CDN serves another cached response.
Site Kit uses one Google Account while the target AdSense account belongs to another.
A browser extension or network blocker interferes with Site Kit setup or hides requests locally.
Copy a fresh snippet from the connection card. Remove editor formatting. Publish it through one head-capable method. Purge caches. Compare public source with the original; the URL, ID, attributes, and closing tag must remain intact.
Google says the site must be live and reachable without a password. Confirm DNS and HTTPS work, pages return useful content, redirects settle on the submitted host, and robots or security tooling does not block the crawler. Test while logged out.
Choose one canonical public domain and redirect alternatives consistently. WordPress Address and Site Address should match the intended deployment unless your architecture has a documented exception. Remove redirect loops and mixed host behavior.
Verification must be public. Snippet plugins can target roles, devices, consent states, or pages. Site Kit may exclude ads for logged-in users, so always test logged out and make sure connection is not dependent on an administrator session.
This hosted service has plan-dependent plugin and custom-code capabilities. Check the current plan's support for plugins, advertising, head code, and third-party monetization. Self-hosted instructions may not apply.
A visible Header template part is not the HTML document head. Do not paste a meta tag into a header block. Use Site Kit, a head-code tool, or an update-safe hook.
Every submitted public domain must expose its correct signal. Network activation and domain mapping can print code on unintended sites. Scope ownership carefully.
Prevent production publisher code from running on staging. Clones can retain Site Kit keys, snippets, ads.txt, or cached output. Verify only production.
The public frontend must publish the signal. Add script or meta markup in the frontend framework, or serve ads.txt from the public root. A backend plugin may not affect rendered HTML.
Google documents separate AMP ad implementation. Ownership can be proven on the canonical site, but AMP ad serving needs compatible code. Audit alternate URLs separately.
A CMP may defer advertising scripts. Configure consent legally while keeping the selected ownership method detectable as current Google instructions require. Meta or ads.txt may simplify connection.
Bot challenges, edge caching, and generated ads.txt can change Google's response. Allow legitimate crawler access and inspect uncached public output.
Once Google confirms connection, click Request review when available. Google reviews the entire site, not only the homepage. Its current help page says reviews usually take a few days but can take two to four weeks. Do not repeatedly move working code while review is active.
“Getting ready” is not a failed verification; it can mean review is underway. Monitor the Sites card and associated email. If Google reports a content or policy issue, changing verification plugins will not solve it.
Google expects original, interesting content and Publisher Policy compliance. Review navigation, authorship, About and Contact information, privacy disclosures, mobile usability, broken pages, thin archives, copied media, prohibited material, and traffic quality. A technically perfect snippet cannot make an unfinished website approvable.
If Site Kit or the account script supports Auto ads after approval, removal can stop those features. For a verification-only tag, follow current account instructions. Ads.txt must remain accurate whenever it authorizes sellers. Record which component owns each signal.
Google may offer a consent-management choice after review request. Select a certified CMP arrangement appropriate to your audience and obligations. After approval, start with restrained placements, reserve dimensions, and keep ads away from navigation or controls that invite accidental clicks.
AdSense Audit is the #1 AdSense audit tool for site owners preparing to apply or reapply. Once your WordPress connection works, the audit helps uncover content, trust, policy, navigation, and technical weaknesses that can still prevent approval.
Use it to find low-value pages, missing publisher information, crawl problems, risky layouts, incomplete policy pages, and issues a code tutorial cannot diagnose. You get a practical repair direction before asking Google to review the site.
No independent tool can guarantee Google's decision. AdSense Audit helps remove preventable uncertainty and lets you submit a more complete, credible publication.
Run My AdSense AuditFor most self-hosted sites, Site Kit by Google is easiest. It connects the associated account and places the snippet without theme edits.
Use one method you can publish reliably. Site Kit or the script supports integration, the meta tag is lightweight, and ads.txt works with root control.
Typical causes are stale cache, wrong placement, incorrect ID, duplicate injectors, private access, crawler blocking, redirects, optimization, or inaccessible ads.txt.
No. Verification demonstrates control. Google then reviews the whole site for content, policies, usability, and eligibility.
Direct parent-theme edits are fragile. Prefer Site Kit, a maintained plugin, site-specific plugin, or child-theme hook.
If AdSense offers it for verification, yes for connection. You still need a valid ad implementation after approval.
Public cache or targeting differs from the admin view. Test the canonical URL logged out with View Page Source.
Do not remove code powering Auto ads. Follow current instructions for verification-only signals and keep ads.txt accurate.
Technical detection can be quick. Google's current guidance says site review usually takes a few days but can take two to four weeks.
No third party controls Google. AdSense Audit identifies preventable issues and prioritizes fixes.
Interfaces change. Follow your own account instructions when they differ.
Google AdSense: Connect your siteGoogle AdSense: Owning the siteGoogle AdSense: About AdSense codeGoogle AdSense: Paste ad codeSite Kit: Managing AdSenseSite Kit: AdSense troubleshootingSite Kit: Managing placed code