All Collections
Layout Conflicts
Why Post and Page Builders Can Be Bad for Ad Performance
Why Post and Page Builders Can Be Bad for Ad Performance

So why exactly don’t ads and builders get along? Find all of the answers here.

Heather Tullos avatar
Written by Heather Tullos
Updated over a week ago

With over 8,000 publishers and counting, it’s safe to say we’ve seen our fair share of things that just don’t play well with ads. Post builders can be one of them.

We recently wrote a blog post that answers many of the broader questions about post builders and how they interact with ads. You can check it out here!

We thought it could be helpful to also break down what’s happening technically in your post’s HTML with the many different kinds of post builders. So why exactly don’t ads and post builders get along?

We’re here to answer that!

Let’s start off by noting that post and page builders can be excellent tools to design advanced page layouts. They are great tools for things like landing pages, about pages, sales pages and the like. Utilizing builders in those places should not impact your ad performance.

The trouble with ads comes when publishers implement builders on a significant amount of their post content. This is due to the way builders alter your posts' HTML which affects our script's ability to place ads effectively.

Our script works by targeting a unique CSS selector that identifies the main content element of your post and intelligently loads in-content ads between elements (your post’s content) that are direct descendants of that main content container.

When you’re using a page builder, content doesn't appear directly within that main content container, making it difficult for our script to find placements for your in-content ads.

Every post builder is different, so we’re rounding up the most common builders we see publishers using on a day-to-day basis. This should give you a visual idea of WHY post builders affect ad performance and why we don’t typically recommend them on posts if you can help it.

Normal WordPress:

First let’s take a look at what the HTML looks like in a normal Wordpress post. You’ll notice that the main content container wraps those content paragraphs without interruption. Ads are seamlessly placed between those paragraphs with our in-content ad logic. 


Now let’s take a look at a popular page builder, Thrive Editor. The content paragraphs aren’t set up as direct descendents of the Main Content Container like a normal Wordpress post. Instead, the content paragraphs are nested within a <div> that hides where those paragraphs are located from our script wrapper.


On this Elementor post, there are only 4 sections available for our script to target. The third section in particular (see screenshot below) contains over 9000px high worth of content. Elementor is wrapping a majority of that post’s content within that one section. Because of the sheer size, all of that content can’t be seen by our script.

It’s typical for builders to nest your content really far within your post’s HTML. In this screenshot of the Elementor post builder below, the majority of the content is nested away from that initial content container. 

While we could attempt to target that 3rd section for in-content ads, there’s no guarantee that selector would work across all current and future posts. It’s likely that your content will appear within different sections throughout the different posts on your site, depending on how your posts are set up. 

If those paragraphs were split up into equal length sections then our script could more evenly and consistently place in-content ads.  

Here’s a post using Elementor that has evenly spaced sections and therefore would allow for more ads as a result:


With Divi, each section is divided into rows which causes the majority of the content to be separated into those different numbered rows. This also means there is no guarantee targeting in-content ads for a particular row will work across all current and future posts. 

You can see how Divi is also nesting your content within multiple <div>’s making it hard for our script wrapper to access.

WP Bakery(Visual Composer):

Another page builder that comes across our Support Engineer’s inbox frequently, WP Bakery. 

With WP Bakery, the sections in your post’s HTML don’t include classes with numbers which makes it even more difficult to target areas that hold the majority of your post’s content. 

They also all share very common class names which makes specifying the location even more difficult.

In the screenshot below, the Mediavine script is looking for that main content container, but the content is nested within those <div>’s. 

Beaver Builder:

With Beaver Builder, each section is given specific class names that are individual to each post.  This means that the best location on one post will not be the same on another post.  This is another reason why it’s difficult to pick a good selector that gives adequate ad coverage.

This should help give you a visual idea of exactly what our script wrapper is viewing when attempting to target in-content ads within posts using builders.

You can see how each builder wraps your post’s content differently and why it makes it a bit difficult for our script wrapper to place in-content ads on posts with paragraphs that aren’t direct descendants of the main content container. 

Builders can be a great tool for the pages, but when it comes to posts, there could be a significant impact to ad performance.

Did this answer your question?