WordPress AdSense verification

How to Verify Site Ownership for AdSense on WordPress

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.

Three Google methodsAdSense can offer a script, meta tag, or ads.txt snippet.
One method is enoughUse one reliable owner and avoid duplicate code injection.
Verification is not approvalGoogle still reviews the content and entire site afterward.
Quick answer

The easiest way to verify AdSense ownership on WordPress

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.

Know the stage

Ownership verification, site review, ads.txt, and ad display are different

“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.

1. Site connection

You add the domain and publish a verification signal Google can retrieve. This is the technical ownership step covered here.

2. Site review

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.

3. Seller authorization

Ads.txt identifies authorized sellers of inventory. It can be a connection method, but its continuing role is advertising transparency.

4. Ad serving

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 selector

Which WordPress verification method should you choose?

MethodBest forLocationMain risk
Site Kit by GoogleMost 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 snippetPublishers 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 tagA 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 snippetSites 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.

Recommended method

Method 1: Verify WordPress with Site Kit by Google

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.

Back up and confirm production

Create a current backup. Confirm you administer the live installation, not staging, localhost, or a temporary host. Open the public homepage privately.

Install the official plugin

Go to Plugins > Add New, search for “Site Kit by Google,” verify the publisher, install, and activate it.

Connect the correct Google Account

Use the account associated with the AdSense account you intend to use. Do not create duplicate AdSense accounts to solve a login mismatch.

Start AdSense setup

Open Site Kit > Settings > Connect More Services > AdSense > Set up AdSense. A Monetization prompt may also appear on the dashboard.

Allow Site Kit to place code

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.

Add the canonical domain

Follow the AdSense flow and add the final public domain, not a WordPress admin URL, a post URL, a tracking URL, or staging hostname.

Verify placement in Site Health

Open Tools > Site Health > Info > Site Kit by Google. “AdSense snippet placed: Yes” confirms Site Kit placement, not approval.

Verify and request review

Return to AdSense, confirm completion, click Verify, and then Request review. Select an appropriate consent-management option.

Fix a Site Kit account mismatch

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.

Avoid duplicate Site Kit code

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.

Alternative method

Method 2: Add the AdSense code snippet to the WordPress head

Choose the AdSense code snippet method and copy the exact code displayed for your account. Its structure resembles this, but your identifier is unique:

<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-YOUR_ID" crossorigin="anonymous"></script>

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.

Use an update-safe insertion point

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.

Do not confuse account code with an ad unit

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.

Lightweight verification

Method 3: Add the AdSense verification meta tag

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:

<meta name="google-adsense-account" content="ca-pub-YOUR_ID">

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.

Check how fields handle HTML

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.

Meta verification is not Auto ads installation

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.

Root-file verification

Method 4: Verify with the ads.txt snippet

Choose ads.txt and copy Google's exact seller line. A direct Google line normally follows this pattern:

google.com, pub-YOUR_ID, DIRECT, f08c47fec0942fa0

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.”

Manage ads.txt with one owner

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.

Test the exact URL

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.

Allow crawl time

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.

Verify before Verify

Confirm that AdSense can see the WordPress signal

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.

Open the canonical HTTPS homepage privately
Use View Page Source, not only Inspect Element
Search for your exact publisher identifier
Confirm script or meta markup is in the head
Confirm the signal appears only as intended
Check another page for sitewide account code
Open /ads.txt directly when selected
Confirm no tutorial placeholder remains
Test mobile and desktop public responses
Return to AdSense after purging caches

View Source versus Inspect Element

View 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.

Check the ID character by character

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.

Troubleshooting

Why AdSense cannot verify your WordPress site

Stale cache

A page plugin, host cache, proxy, or CDN still serves old HTML. Purge every layer and retest privately.

Wrong placement

The tag is in the body, footer, editor, or admin page instead of the public document head.

Wrong domain

You edited staging, a temporary host, subdomain, or noncanonical copy while AdSense checks another site.

Duplicate injectors

Site Kit, a theme, header plugin, ad plugin, and custom code all add snippets. Leave one owner.

Optimization rewrite

Delay JavaScript, minification, combining, or consent software changes or withholds required code.

Crawler blocked

Robots rules, firewall, bot mode, country block, challenge, or rate limit prevents access.

Site is private

Maintenance mode, a coming-soon plugin, basic authentication, or login wall hides content.

Inactive theme edit

Code was added to an inactive theme or a parent-theme update erased the change.

Missing wp_head

A broken custom theme omits wp_head(), preventing plugins from printing head markup.

Ads.txt conflict

A physical file shadows a plugin route, or a CDN serves another cached response.

Account mismatch

Site Kit uses one Google Account while the target AdSense account belongs to another.

Ad blocker

A browser extension or network blocker interferes with Site Kit setup or hides requests locally.

Fix “code missing or incomplete”

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.

Fix “site unreachable”

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.

Fix www or HTTPS mismatch

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.

Fix code visible only to administrators

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.

Special setups

WordPress configurations needing extra care

WordPress.com

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.

Block themes

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.

Multisite

Every submitted public domain must expose its correct signal. Network activation and domain mapping can print code on unintended sites. Scope ownership carefully.

Staging and clones

Prevent production publisher code from running on staging. Clones can retain Site Kit keys, snippets, ads.txt, or cached output. Verify only production.

Headless WordPress

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.

AMP pages

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.

Consent platforms

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.

Cloudflare and firewalls

Bot challenges, edge caching, and generated ads.txt can change Google's response. Allow legitimate crawler access and inspect uncached public output.

After connection

What happens after AdSense verifies ownership?

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.

Verification does not guarantee approval

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.

Do not remove functional code blindly

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.

Configure consent and ads deliberately

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.

Final checklist

WordPress ownership verification checklist

Correct production domain added in AdSense
Google Account has legitimate AdSense access
One verification method has a clear owner
Account-specific publisher ID is exact
Script or meta markup is in public head
Ads.txt returns plain text from root
WordPress, host, and CDN caches purged
Public source checked while logged out
No password or maintenance screen
Robots and firewall permit crawler access
HTTPS and canonical redirects are consistent
No duplicate AdSense loader
Staging does not output production code
Site contains complete original content
Privacy and consent setup is prepared
Verification followed by Request review
#1 AdSense audit tool

Ownership verification solves only the first technical gate

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 Audit
FAQs

WordPress AdSense verification questions

What is the easiest method?

For most self-hosted sites, Site Kit by Google is easiest. It connects the associated account and places the snippet without theme edits.

Which verification method should I use?

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.

Why can AdSense not verify my site?

Typical causes are stale cache, wrong placement, incorrect ID, duplicate injectors, private access, crawler blocking, redirects, optimization, or inaccessible ads.txt.

Does verification mean approval?

No. Verification demonstrates control. Google then reviews the whole site for content, policies, usability, and eligibility.

Should I edit header.php?

Direct parent-theme edits are fragile. Prefer Site Kit, a maintained plugin, site-specific plugin, or child-theme hook.

Can ads.txt replace the script?

If AdSense offers it for verification, yes for connection. You still need a valid ad implementation after approval.

Why is code visible only when logged in?

Public cache or targeting differs from the admin view. Test the canonical URL logged out with View Page Source.

Can I remove code after approval?

Do not remove code powering Auto ads. Follow current instructions for verification-only signals and keep ads.txt accurate.

How long does review take?

Technical detection can be quick. Google's current guidance says site review usually takes a few days but can take two to four weeks.

Does AdSense Audit guarantee approval?

No third party controls Google. AdSense Audit identifies preventable issues and prioritizes fixes.