If you are looking for the old ADD SUBDOMAIN button, you are not missing it. Google removed that workflow in 2023. The reassuring part is that subdomain monetization did not disappear: an ordinary child such as blog.example.com is handled as part of example.com, while platform-style names on the public suffix list follow a different site boundary.

What changed in March 2023

  • AdSense stopped listing ordinary child subdomains as separate entries under an existing site.

  • Existing child subdomain entries were removed without affecting serving or earnings.

  • Subdomain-level blocking controls were promoted/combined at the domain level during the transition.

  • The Sites page continues to accept domains, eligible public-suffix platform subdomains, and sites managed by AdSense partners.

  • A subdomain’s content still must comply with every applicable program and publisher policy.

Ordinary subdomain or separate AdSense site?

  • blog.example.com under example.com → ordinary child; manage the registrable domain.

  • docs.example.co.uk under example.co.uk → ordinary child; the public suffix is co.uk.

  • project.appspot.com → platform subdomain on a public-suffix boundary and can be treated as an addable site.

  • name.blogspot.com → AdSense partner-hosted site; use the partner workflow.

  • A completely different registrable domain → add it as a new site and wait for Ready status before serving.

Confirm the parent site is Ready

  1. Sign in to AdSense and open Sites.

  2. Find the registrable domain, not the child hostname.

  3. Confirm its status is Ready rather than Requires review, Getting ready, or Needs attention.

  4. Open any reported issue and resolve ownership, crawl, content, navigation, or policy problems.

  5. Do not place code on an unrelated domain that is absent from the Sites list.

Verify DNS, HTTPS, and canonical behavior

local diagnostic shellbash
dig +short blog.example.com
curl -sSIL https://blog.example.com/
curl -sS https://blog.example.com/robots.txt
203.0.113.10
HTTP/2 200
content-type: text/html; charset=UTF-8
... robots.txt content ...

A reachable hostname is the foundation

  • DNS must resolve the intended hostname to the correct hosting/CDN target.

  • HTTPS should present a certificate valid for the exact subdomain and complete without redirect loops.

  • The final canonical URL and hostname should be consistent.

  • A 200 response must contain real publisher content, not a soft 404, parking page, login wall, or placeholder.

  • Review robots rules because AdSense crawlers honor explicit restrictions.

Install the AdSense loader you were given

subdomain page head (example shape)html
<script async
  src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-REPLACE_WITH_YOUR_ID"
  crossorigin="anonymous"></script>

Use account-generated values

  • Replace the placeholder with the publisher client ID from your own AdSense account.

  • Place the loader between <head> and </head> on pages eligible to show ads.

  • Auto ads use the same account-level loader pattern across the domain and ordinary subdomains.

  • Load it once; duplicate theme, plugin, tag-manager, and hard-coded integrations can create confusing behavior.

  • Do not alter supplied code outside Google’s documented configuration options.

Add manual units only where they belong

subdomain article template (manual slot)html
<ins class="adsbygoogle"
     style="display:block"
     data-ad-client="ca-pub-REPLACE_WITH_YOUR_ID"
     data-ad-slot="REPLACE_WITH_YOUR_SLOT_ID"
     data-ad-format="auto"
     data-full-width-responsive="true"></ins>
<script>
  (adsbygoogle = window.adsbygoogle || []).push({});
</script>

The slot remains a page-level decision

  • data-ad-client identifies the publisher; data-ad-slot identifies the unit.

  • Responsive format does not absolve the template from reserving sensible space and avoiding layout shift.

  • Do not place manual slots on login, checkout, private-message, empty, error, navigation-only, or low-value screens.

  • A manual unit is not removed by an Auto ads page exclusion.

  • Use a server-side allowlist/condition when the subdomain mixes public content with application workflows.

Understand Auto ads boundaries

  • Auto ads are configured from the approved site’s Ads settings and require the loader on eligible pages.

  • Google analyzes each page’s layout and content before choosing placements.

  • Review every subdomain template; dashboard approval does not guarantee a good placement.

  • Auto ads page exclusions can target exact pages or path sections, but a section rule for example.com/path does not automatically cover subdomain.example.com/path.

  • Use separate explicit exclusions for sensitive subdomain URLs and allow propagation time before testing.

Set up ads.txt at the correct boundary

https://example.com/ads.txttext
google.com, pub-REPLACE_WITH_YOUR_ID, DIRECT, f08c47fec0942fa0

The root domain normally authorizes the seller

  • Use the exact publisher line supplied by AdSense; do not copy another site’s ID.

  • Serve the file as plain text at the root domain’s /ads.txt path or a supported redirect.

  • Google starts ads.txt crawling at the root domain and may take days to reflect changes.

  • A missing or incorrect publisher ID can prevent an auction when an ads.txt file exists.

  • Do not return a branded HTML soft-404 with status 200 for /ads.txt.

When a subdomain needs its own ads.txt

https://example.com/ads.txttext
google.com, pub-ROOT_ID, DIRECT, f08c47fec0942fa0
subdomain=blog.example.com

Use the subdomain declaration only for a real difference

  • Google says a subdomain ads.txt file is crawled/enforced when it exists and is referenced from the root file.

  • The subdomain= declaration points crawlers from the root authorization file to the child.

  • Google notes this is needed when the authorized seller or publisher ID differs between root and subdomain.

  • The child must then expose its own correct /ads.txt.

  • Keep ownership and seller relationships documented; unnecessary split files create more failure modes.

Check ads.txt over HTTP

local diagnostic shellbash
curl -sSIL https://example.com/ads.txt
curl -sS https://example.com/ads.txt
curl -sSIL https://blog.example.com/ads.txt
HTTP/2 200
content-type: text/plain
... authorized seller lines ...

Status and content both matter

  • Follow redirects and verify the final response is reachable without authentication.

  • The root URL should return text content, not HTML, a challenge page, or a login.

  • Check CDN/WAF rules do not block Google crawlers or serve different files by geography.

  • A 404 means the previous ads.txt entries can be purged; transient 5xx behavior differs.

  • Compare the live line with the publisher ID shown in AdSense.

Let the AdSense crawlers reach public ad pages

  • Mediapartners-Google analyzes ad pages, while Google-Display-Ads-Bot participates in site verification.

  • Both honor robots.txt directives targeted at them.

  • Do not block required JavaScript, CSS, images, or article routes through robots, WAF, bot protection, or authentication.

  • A CDN challenge that a normal browser passes can still prevent an automated crawler from seeing content.

  • Private/authenticated pages are poor candidates for AdSense and may be uncrawlable by design.

Subdomain content quality is independent

  • Give the subdomain clear navigation, ownership, contact/privacy information, and a useful purpose.

  • Publish original content with enough substance to be the page’s focal point.

  • Remove default demo pages, generated tag/search combinations, empty profiles, and under-construction routes from monetization.

  • Do not assume the strong reputation of the root domain compensates for copied or low-value subdomain content.

  • Review user-generated content and moderation workflows before ads can appear beside submissions.

  • Deploy the required CMP/consent workflow on the subdomain, not only the root site.

  • Cookie scope and consent storage may differ across example.com and blog.example.com; test both fresh and returning visits.

  • Honor regional choices before requesting personalized or non-personalized ads as required by the applicable setup.

  • Keep privacy disclosures accurate about every monetized property and vendor.

  • Avoid leaking login/account state from an application subdomain into advertising decisions.

Measure a subdomain separately without separate registration

  • Name manual ad units by hostname, template, position, and breakpoint.

  • Use URL channels/custom channels or reporting dimensions currently available in the account.

  • Segment analytics by hostname and page type.

  • Compare revenue with content quality, viewability, Core Web Vitals, navigation, and consent rate.

  • Do not infer subdomain approval or policy health from revenue alone.

Why ads may not appear

  • The registrable domain is not Ready in Sites.

  • The loader or slot uses the wrong publisher/slot ID or is duplicated.

  • Consent prevents the request.

  • The page is excluded from Auto ads or server-side template logic.

  • Robots, WAF, authentication, CSP, ad blocker, DNS filter, or network policy blocks crawling/requests.

  • The page has insufficient content, a policy restriction, account serving limit, or no eligible demand.

  • DNS/certificate/canonical redirects expose a different hostname than expected.

  • ads.txt exists but omits or misstates the publisher ID.

Safe verification sequence

  1. Confirm parent site Ready status and absence of unresolved policy notices.

  2. Resolve DNS, HTTPS, canonical, content, robots, and ads.txt checks.

  3. Deploy consent and one AdSense loader to a small set of eligible pages.

  4. Use source, Elements, Network, and console to confirm code and requests without clicking ads.

  5. Test mobile/desktop, accepted/rejected consent, ad-block/no-fill, and neighboring excluded routes.

  6. Allow crawler, ads.txt, site, and Auto ads changes their documented processing time.

  7. Review normal-traffic reports and expand only after page experience remains healthy.

What you no longer need to do

Do not hunt for the retired “Show details” and “Add subdomain” controls, request a separate review for every ordinary child hostname, or create a second publisher account. Manage the approved site boundary, then govern eligible pages and placements in your own templates.

Primary references

  • Google’s 2023 site-management change documents removal of ordinary subdomain entries and the public-suffix/partner exceptions.

  • Current AdSense site management explains ownership verification, policy review, and Ready status.

  • The official ads.txt FAQ documents root-domain enforcement and subdomain= referrals.

  • Google’s AdSense crawler reference explains Mediapartners-Google, Google-Display-Ads-Bot, URL-level crawling, and robots behavior.

  • Use current Google Publisher Policies, AdSense Program policies, consent guidance, and Auto ads page-exclusion documentation for every deployment.