A grid at the end of an article can feel like a natural pause: the reader has finished the page, the layout has room, and an ad does not cut a command or paragraph in half. That is the sweet spot Multiplex is designed to monetize. The implementation is simple HTML; the thoughtful work is choosing eligible pages, preserving layout, respecting consent, and knowing what “working” actually looks like.
Deployment map
Manual Multiplex unit → you choose the exact template location and unit code.
Multiplex Auto ads → Google chooses eligible in-page locations after you enable the format.
Related articles → your CMS/theme/recommendation service selects first-party content; this is not an AdSense unit.
Page exclusions → suppress Auto ads on exact URLs or path sections; they do not remove manual units.
Server-side conditions → decide which templates print the loader and manual slot.
Prerequisites before creating a unit
An active AdSense account and a site with Ready status.
Original publisher content that complies with Google Publisher and AdSense Program policies.
Access to the site’s templates, CMS ad manager, or deployment system.
A working consent/CMP configuration for applicable regions.
Correct ads.txt authorization and crawler-accessible public pages.
A staging or low-risk placement for initial responsive and performance testing.
Create the manual Multiplex unit
Sign in to AdSense and open Ads.
Open By ad unit and choose Multiplex ads.
Give the unit a name that identifies site, template, position, and purpose.
Choose responsive sizing unless a tested fixed container is required.
Preview the style and grid at representative dimensions.
Save the unit and copy the exact code AdSense generates.
Name the unit for operations, not decoration
A useful name resembles
site-article-end-multiplex-responsive.The name should let reporting and incident responders find the template without opening source code.
Do not encode temporary campaign claims into a long-lived placement name.
Keep production, staging, AMP, and experimental units distinct.
Record the unit ID, owner, creation date, template, rollout, and rollback condition.
Load the AdSense library once
<script async
src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-REPLACE_WITH_YOUR_ID"
crossorigin="anonymous"></script>The loader is shared infrastructure
Replace the placeholder with the publisher client ID supplied by the account.
asyncavoids blocking HTML parsing while the external script downloads.crossorigin="anonymous"matches Google’s current generated loader form.Install one loader through the template, approved plugin, or tag deployment—not one copy for every unit.
Audit Site Kit, themes, plugins, tag managers, and hard-coded snippets for duplicates.
Place the Multiplex slot
<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="autorelaxed"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>Copy identifiers; do not invent them
adsbygoogleidentifies the element processed by the loader.data-ad-clientis the publisher ID and must match the account.data-ad-slotidentifies this unit and comes from AdSense.autorelaxedrequests the Multiplex/native grid format.The push call queues this slot for processing; repeated pushes on the same element cause errors.
A safe WordPress placement pattern
<?php
/** Plugin Name: Article-end Multiplex placement */
function site_can_show_article_multiplex(): bool {
return is_singular( 'post' )
&& ! is_preview()
&& '1' !== get_post_meta(
get_queried_object_id(),
'_disable_ads',
true
);
}
function site_render_article_multiplex(): void {
if ( ! site_can_show_article_multiplex() ) {
return;
}
// Render the exact Multiplex <ins> and push code from AdSense here.
}Centralize eligibility before markup
is_singular('post')restricts the unit to individual posts.is_preview()keeps editorial previews ad-free.The post-meta switch allows reviewed exceptions without scattering slug arrays.
get_queried_object_id()identifies the current post after WordPress has parsed the query.Call the render function from a controlled theme hook/template location; a parent-theme update should not erase the rule.
Choose the placement around reader intent
After the article and before comments is a common end-of-journey position.
A sidebar can work on wide screens but may disappear or move far down on mobile.
Keep ads away from navigation, download buttons, form controls, image galleries, and anything that can cause accidental taps.
Never break a code block, terminal workflow, table, mathematical proof, or paragraph with a unit.
Separate editorial related posts and Multiplex visually and label each accurately.
Do not place ads on empty, login, error, checkout, private-message, or navigation-only screens.
Responsive grid customization
data-matched-content-rows-num="4,2"
data-matched-content-columns-num="1,2"
data-matched-content-ui-type="image_stacked,image_stacked"
data-ad-format="autorelaxed"The old-looking attribute names are still documented
Google retains
data-matched-content-*names for Multiplex layout controls.The example requests a 4×1 mobile grid and a 2×2 desktop grid.
Rows, columns, and UI type must be configured together.
Google can adjust the grid when the container cannot fit the requested arrangement.
The documented grid must contain between 1 and 30 ads; invalid combinations can render blank.
Start with generated responsive code and customize only when measurement proves a need.
Protect Core Web Vitals
Reserve a responsive minimum height close to the expected grid so content does not jump when ads arrive.
Avoid an oversized fixed placeholder that becomes a permanent blank gap during no-fill or blocked states.
Load the global script asynchronously and do not wrap it in unsupported delay/rewrite logic.
Keep the initial above-the-fold article content and LCP element dominant.
Test INP around consent UI and ad insertion, CLS during load/resize, and mobile horizontal overflow.
Prevent ad containers from expanding across unrelated sticky/navigation regions.
Consent must run before eligible requests
Use the consent platform and Google guidance appropriate to the visitor’s region.
Do not print/request the unit before consent when the deployed policy requires it to wait.
Test new visitors, returning choices, consent changes, and unavailable CMP states.
Avoid caching one visitor’s consent-dependent HTML and serving it to another.
Document how Consent Mode, personalized/non-personalized ads, and denied storage signals are configured.
An empty ad caused by denied consent can be correct behavior.
Verify ads.txt and crawlers
curl -sSIL https://example.com/ads.txt
curl -sS https://example.com/ads.txt | grep 'pub-REPLACE_WITH_YOUR_ID'
curl -sS https://example.com/robots.txtHTTP/2 200
content-type: text/plain
google.com, pub-..., DIRECT, f08c47fec0942fa0
... robots rules ...Serving prerequisites live outside the slot
The root ads.txt should be reachable and authorize the exact publisher ID.
A soft-404 HTML page with status 200 is not a valid ads.txt response.
Mediapartners-Google and Google-Display-Ads-Bot need access to eligible pages/content.
CDN/WAF bot challenges can break crawlers even when your browser succeeds.
AdSense may take days to reflect ads.txt changes and longer on low-request sites.
Enable Multiplex Auto ads instead
Open Ads and choose Edit beside the Ready site.
Turn on Auto ads.
Under In-page formats, enable Multiplex ads.
Review ad load, excluded areas, page exclusions, and the site preview.
Apply the settings or use an available experiment where allowed.
Keep the loader on every page eligible for Auto ads and allow up to an hour for changes to propagate.
Manual and automatic placement differ
Auto ads chooses locations from page structure and configured formats.
Manual units remain where your template renders them.
Turning off Multiplex Auto ads does not remove a manual Multiplex slot.
Page exclusions override Auto ads but not custom/manual code.
Review total ad density when both manual units and Auto ads are enabled.
Migrate an old Matched Content unit
Expect it to be ads-only; the own-site recommendation service ended in March 2022.
Inventory every old unit, code path, hostname, template, and responsive override.
Compare its live attributes with current AdSense documentation and account-generated code.
Remove headings such as “Related articles” if the grid contains ads rather than editorial links.
Build a separate first-party related-post module if retaining readers is still a goal.
Replace or remove the old unit through a staged deployment; do not blindly duplicate a new unit beside it.
Browser verification without clicking ads
View source: confirm one loader and the intended slot/client/slot IDs.
Elements: verify the slot is placed after the correct article and not nested in an invalid container.
Network: inspect AdSense requests after consent settles and distinguish blocked/cancelled/no-fill behavior.
Console: look for duplicate-push, parameter, CSP, and script errors.
Responsive mode plus physical devices: verify columns, text/image layout, overflow, spacing, and CLS.
Ad blocker/no-fill/consent denied: the page must remain coherent with no giant gap.
Never click your own live ad or ask a tester to click it.
A source-level smoke check
curl -sSL https://example.com/article/ | grep -Eo 'pagead2.googlesyndication.com|data-ad-slot="[^"]+"|data-ad-format="[^"]+"'pagead2.googlesyndication.com
data-ad-slot="1234567890"
data-ad-format="autorelaxed"Static HTML evidence is limited
The command confirms known strings in server-delivered HTML.
It does not execute JavaScript, consent logic, tag managers, or client-side rendering.
A matching slot does not prove an auction, fill, policy eligibility, or correct visual layout.
Redact account identifiers before attaching raw source to a public ticket.
Use browser and AdSense reporting evidence for the remaining layers.
Why Multiplex appears blank
The site/unit/settings are new and still propagating.
The publisher ID, slot ID, loader, push call, or responsive parameters are wrong.
Consent prevents the request.
Ad blocker, DNS filtering, CSP, browser privacy, CDN, or firewall blocks ad hosts.
The container is hidden, detached, too narrow, zero-sized, or inside invalid markup.
The unit is pushed twice or the loader is duplicated.
No eligible demand is available or ad serving is limited by account/page/policy status.
Requested row/column totals are outside documented limits.
Measure the right outcomes
Use AdSense ad-format and placement-method reporting to isolate Multiplex.
Track impressions, revenue, RPM, viewability, coverage, and click behavior with consistent ranges.
Watch article completion, internal related-post CTR, next-page sessions, exit rate, CLS, LCP, and consent rate.
Segment device class, placement, content type, geography, and traffic source.
Use a controlled experiment rather than attributing a seasonal revenue change to one unit.
Remove or redesign a profitable unit if it harms trust, accessibility, policy compliance, or the core task.
Account for the June 2026 metric change
Annotate the reporting change in dashboards and incident thresholds.
Avoid direct pre/post comparison of ad requests, matched requests, request CTR, and coverage without adjusting definitions.
Use impressions, revenue, pageviews, and placement context alongside request metrics.
Update forecasts and alerts that assumed one request per unit.
Policy and UX release gate
Publisher content remains the focal point and outnumbers ads/paid promotion.
The placement cannot be mistaken for navigation, a download, a message, or first-party related content.
Consent and disclosures match the deployed regions and vendors.
Excluded/private/low-value/transactional screens cannot print the unit.
Mobile layout, accessibility, no-fill, and ad-block behavior remain usable.
No one interacted with live ads during QA.
An owner will review policy/product changes and placement performance periodically.
Primary references
Google’s Multiplex overview describes the ads-only grid and common article-end/sidebar placement.
The official responsive Multiplex customization documents layout attributes and row/column constraints.
Google’s Multiplex Auto ads guide covers the current In-page formats workflow.
The June 2026 reporting change explains per-ad request counting.
For product history and editorial alternatives, read Lynxbee’s Matched Content is now Multiplex explanation.
Comments and corrections