What this demonstrates

Three publisher-owned placeholder divs at different positions in one article — 148 near the top, 149 mid-article, 150 at the bottom — activated by a single batched ezstandalone.showAds(148, 149, 150) call after the last div. The docs recommend passing every placement id on a page into one showAds() call so the auction runs in one server request instead of several. Calling showAds() with no arguments activates every placeholder div present on the page instead of a named subset.
Integration used on this page
<!-- Head: consent + Ezoic standalone loader -->
<script data-cfasync="false" src="https://cmp.gatekeeperconsent.com/min.js"></script>
<script data-cfasync="false" src="https://the.gatekeeperconsent.com/cmp.min.js"></script>
<script async src="//www.ezojs.com/ezoic/sa.min.js"></script>
<script>
  window.ezstandalone = window.ezstandalone || {};
  ezstandalone.cmd = ezstandalone.cmd || [];
</script>

<!-- Body: three publisher-owned placeholder divs at their positions -->
<div id="ezoic-pub-ad-placeholder-148"></div>
<div id="ezoic-pub-ad-placeholder-149"></div>
<div id="ezoic-pub-ad-placeholder-150"></div>

<!-- One batched activation after the last div -->
<script>
  ezstandalone.cmd.push(function () {
    ezstandalone.showAds(148, 149, 150);
  });
</script>

View source on GitHub →

Docs: Ad Placements — Using Placement IDs

Several placements, one call

This article carries three placement ids created in the Ezoic dashboard, each with its own placeholder div owned by the page. The first sits near the top, directly below this paragraph.

The remaining divs live further down the article. Their positions in the markup are exactly where their ads render — nothing about the layout is inferred, because every placement is explicit.

A longer article gives the three placements realistic spacing. This paragraph and the next push the mid-article placement into the body of the content rather than crowding it against the first one.

Second body paragraph. Placement ids let each spot report independently in the dashboard and be targeted programmatically later with refreshAds or destroyPlaceholders.

Content continues after the mid-article placement. Because a single batched call activates all three ids together, the page issues one auction request instead of three separate ones.

A few more paragraphs carry the reader toward the end of the article, where the last placement sits.

The final paragraph closes out the body. The bottom placement's div follows immediately below, and the one activation call runs after it.