Ad Inserter – Ad Manager & AdSense Ads


Ad management plugin with many advanced advertising features to insert ad codes at optimal positions.

Supports all kinds of ads including Google AdSense, Google Ad Manager (DFP – DoubleClick for publishers), contextual Amazon Native Shopping Ads, and rotating banners.

This plugin is more than AdSense plugin or plugin for ads. It provides many advanced options to insert opt-in forms, header scripts, Javascript, CSS, HTML, PHP, analytics, tracking or advert code anywhere on the page.

Insert ads where other plugins fail.
It’s all about the settings.

Plugin reviews:

I’ve been using another ad placement manager for a couple years and just recently started using Ad Inserter.

I’m blown AWAY with the power and flexibility of it.

I can HIGHLY recommend this plugin to anyone looking for an easy way to manage ads within WordPress.

Difficult to choose, but certainly top 3 plugins I’ve ever used in WordPress, ever.

Features – check documentation for the complete list

  • AdSense integration
  • Support for Google Ad Manager (DoubleClick for publishers)
  • Syntax highlighting editor
  • Code preview with visual CSS editor
  • Automatically inserts ads on posts and pages
  • Insert before or after post
  • Insert before or after content
  • Insert before or after paragraph
  • Insert before or after random paragraph
  • Insert before or after multiple paragraphs
  • Insert before or after image
  • Insert before or after comments
  • Insert before or after excerpt
  • Insert near any element on the page (using CSS selectors)
  • Insert above the header (after <body> tag)
  • Insert in the footer (before </body> tag)
  • Insert at relative positions in posts
  • Insert between posts on blog pages (in-feed AdSense)
  • Insert between excerpts on blog pages
  • Insert between comments
  • Insert at custom hook positions (do_action () WP function)
  • Insert before or after any HTML element using CSS selectors
  • Visual HTML element selector (DOM explorer)
  • Avoid inserting ads near images or headers (AdSense TOS)
  • Disable ads on individual posts or pages
  • Insert header (<head> section) and footer code
  • Insert raw HTTP response header lines
  • Insert Google Analytics, Matomo (Piwik) or any other tracking code
  • Insert images, HTML, CSS, Javascript or PHP code
  • Code generator for banners and placeholders
  • AdSense code generator
  • Visual advert editor – create adverts from scratch
  • Manual insertion: widgets, shortcodes, PHP function call
  • Sticky (fixed) widgets (sticky sidebar – the sidebar does not move when the page is scrolled)
  • Custom alignments and styles
  • Insert different ad codes on AMP pages
  • Custom CSS class name for wrapping divs to avoid ad blockers
  • Use shortcodes from other plugins
  • Use custom fields as defined in posts
  • Use post title, tags or category names to create contextual adverts
  • PHP code processing
  • Ad labels – show customized label above adverts
  • ads.txt editor
  • Ad rotation (server-side and client-side – works with caching)
  • Timed ad rotation – define times to rotate adverts in a single ad block
  • Create rich media ads with standard WordPress TinyMCE editor
  • Ad blocking detection – popup message, page redirection
  • Desktop/mobile device detection (server-side and client-side – works with caching)
  • Blacklist/Whitelist categories, tags, taxonomies, post IDs, urls, url query parameters, cookies, referrers, browsers, operating systems
  • Easy copying and pasting ads or settings using internal clipboard
  • Can wait for jQuery when it is deferred
  • Simple troubleshooting with many debugging functions
  • Function to visualize inserted blocks
  • Function to visualize AdSense ads with ad names and IDs
  • Function to visualize available insertion positions
  • Function to visualize HTML tags
  • You name it 🙂

Review on WP Mayor

The Best WordPress Ad Management Plugin?

Review on ShoutMeLoud

Both Google and Amazon recommend this plugin for inserting ads, which is a testament to its quality

Endorsed by GoogleHow to insert ad code in your WordPress site

If you’re new to AdSense, one of your first tasks is to connect your site to AdSense. This requires you to copy the code on your AdSense homepage and paste it into the HTML of your page, between the <head> and </head> tags.

Endorsed by AmazonWordPress Integration Guide for Native Shopping Ads.

Native Shopping Ads provide highly relevant and dynamic product recommendations in a stylishly designed and responsive ad unit that can be placed at the end or within your content to create a more compelling visitor experience and shopping opportunity.

Pro version supports additional advanced features:

  • Geolocation using Webnet77 or MaxMind databases (works also with caching)
  • Country, state, region and city level geotargeting
  • Blacklist/Whitelist IP addresses or countries/cities (works also with caching)
  • Ad impression and click statistics (works also with <iframe> Javascript ads like Google AdSense)
  • Statistics reports for clients in PDF format or public web pages
  • External tracking via Google Analytics or Matomo (Piwik)
  • A/B testing – discover adverts and settings that perform best
  • Frequency capping – limit impressions or clicks
  • Click fraud protection
  • Lazy loading
  • Sticky ads with optional close button
  • Sticky sidebar ads (stick to the screen or to the content)
  • Floating slide-in banner adverts
  • Sticky (floating) ads with animations (fade, slide, turn, flip, zoom)
  • Animation trigger for sticky ads (page scroll in % or px, HTML element becomes visible)
  • Support for sticky ad bar
  • Support for scheduling with fallback option
  • Support for ads in iframes
  • Ad blocking detection – replace ads, protect content
  • Ad blocking statistics
  • Multisite options to limit settings on the sites
  • Individual post/page exception management
  • Export and import of settings
  • Support via email

Run a WordPress related blog? Have experience with AdSense? Interested in reviewing the plugin or would like to become an affiliate? Introduce yourself.

Have experience with WordPress theme or plugin translation? We are looking for translators! Contact us.

Check documentation pages for detailed description of all the features and some common settings for quick start.

You can also use shortcodes from other plugins (for example, to insert content from other plugins).

Looking for AdSense plugin with simple setup for ads at best positions?

Ad Inserter can insert ads where other plugins fail.
It’s all about the settings.

Average Rating: 5 out of 5 stars – check Ad Inserter reviews

One of the best adsense plugins
Most comprehensive Ad plugin available
Better than the old Google adsense plugin
The best WP Ad management plugin
Very flexible and excellent documentation
Excellent Ad Plugin
Easy to use and also does more than I need
Exactly what I needed to sell advertising spots
Awesome Plugin and Super Support!
Lots of options and easy to use
Crazy flexible
Great plugin that makes it simple
Superb Plugin and Support team also so good
Best in same kind of plugins
Must Have Plugin for Each WP Site
Best Ad Placement Plugin
Best Solution for Advertisement Management
Comprehensive, flexible and well supported
God bless these guys!
PRO for Free

Please support plugin development

Support the advancement of this plugin:

  • Rate it – positive ratings and reviews are a great way to show your appreciation for my work. Besides being an incredible boost to my morale, they are also a great incentive to fix any bug found in the software and to add new features for better monetization of your website.
  • Donate if Ad Inserter helps you to make money with advertising
  • Register for Ad Inserter Pro Affiliate, promote the plugin on your website and earn commission for each purchase you refer
  • Buy license for Ad Inserter Pro


  • Settings for one code block (Before content).
  • Code preview with visual CSS editor
  • Code preview with visual CSS editor - highlighted code
  • Post / Page Ad Inserter Individual Exceptions
  • Some Ad Inserter Pro features: IP address and country lists, Scheduling between dates with fallback
  • Ad Inserter plugin settings
  • Visualization of HTML tags in post
  • Visualization of positions for automatic insertion in post
  • Visualization of inserted block in post
  • Automatic insertion, Alignment and Style settings
  • Rotation code editor and banner code generator
  • Settings for automatic insertion before/after paragraphs
  • Settings for custom hooks
  • Settings automatic insertion at custom hook positions
  • Settings ad blocking detection
  • AdSense code generator
  • Complete settings for one code block (Before Paragraph)


Settings for …

Check common settings

Does Ad Inserter insert any internal ads?

No revenue sharing and no such thing as “internal ads” or “our ads” on your website. Period. What you configure is what will be inserted (+ some internal scripts for plugin features).
Ad Inserter is free, open source plugin and inserts only the code you configure (blocks, Header, Footer). The code you see is the code that will be inserted. Please check page source code before you make any conclusion.
Of course, if you configure block with some JavaScript ad code, then this code may insert some additional code or show ads. But please, don’t blame the plugin for this.
You can also use this plugin to insert code for AdSense Auto ads on each page (usually in the header). However, the exact placement of ads will be done by the ad code, not Ad Inserter!

The easiest way to check inserted blocks is to use Label blocks debugging function:

Please note that when you disable the plugin you also disable insertion of all codes and blocks you have configured.
Therefore, if your issues go away when you disable the plugin THIS DOES NOT INDICATE any issue with the plugin! You need to try to disable individual codes to see which one is causing trouble.

I have installed code for AdSense and I see ads placed at random positions.

You are probably using code for AdSense Auto ads.

Auto ads (known also as Page Level Ads) is a code that you insert on every page once and it will automatically display ads on positions chosen by the code.
The code uses Google’s machine learning to pick the best placements on your pages to show adverts.

Auto ads may not be suitable for some WordPress themes or layouts. In such cases it is easier to place ads at wanted locations by using normal AdSense code and specifying exact locations where the code should be inserted.

I have installed code for AdSense but the ad blocks are blank.

Blank ad block means that the code is inserted properly only the ad code doesn’t display ads.
Please check Ads Not Displayed for more information. You can also try other ad networks.

What is GDPR?

The GDPR (General Data Protection Regulation) is a regulation in European Union (EU) on data protection and privacy for all individuals within the EU and the European Economic Area (EEA) that was designed to harmonize data privacy laws across Europe. If you collect personal information from any EU citizen (within or outside the EU), you must first obtain explicit and unambiguous consent.

GDPR compliance: What cookies does the plugin use

Ad Inserter itself does not use cookies except for ad blocking detection when you use delayed action.

In this case 3 cookies may be used (to store pageviews and action settings): aiADB, aiADB_PV and aiADB_PR. However, no personal data is stored in the cookies.

Of course, the ads you may insert with the plugin may use own cookies – please check with ad networks for details.

How to display a GDPR compliant cookie message?

You can use any plugin for GDPR compliance / cookie consent. For example:

PLEASE NOTE: Installing GDPR plugin alone does not make your site GDPR compliant. Since ads you insert may use various cookies, you may need to make sure you have necessary configurations in place. Please check next question regarding showing ads based on visitor’s consent.

How to show ads based on visitor’s consent?

Ad Inserter supports inserting (showing) ads based on cookies or cookie values. You can define cookie conditions by black/whitelisting Url parameters (where also cookies are checked).

PLEASE NOTE: If you are using caching (very likely) you also need to set Dynamic blocks to Client-side insert (tab ⚙ / tab General) in order to check cookies in visitor’s browser and not when the page is generated.

For example, If you are using one of the following plugins for cookie consent you need to whitelist the following cookie and value in Url parameter list:

Will Ad Inserter work when jQuery is deferred?


Make sure Wait for jQuery is set to Enabled in general plugin settings (tab ⚙ / tab General).

How to minimize redirects?

Ad Inserter does not do any redirects, it only inserts ad codes as configured.

If you see any report (for example from GTmetrix) suggesting to minimize redirects you need to first check where the redirects are located (on which page or domain) – if they are on other (ad network) domains you don’t control, then there is nothing you can do (nobody except ad network can change this).

For details please check this page: How to optimize plugin settings

What is plugin usage tracking?

When enabled, the information regarding WordPress environment and Ad Inserter usage will be collected and sent to plugin developers (once per month and on events like plugin activation/deactivation). See detailed explanation below.

Privacy Policy – Plugin Usage Tracking

When enabled, the information regarding WordPress environment and Ad Inserter usage will be collected and sent to plugin developers (once per month and on events like plugin activation/deactivation).

This is completely optional and can be disabled at any time. So if you have opted in (by clicking Allow when asked for permission) and now you would like to disable tracking, you should go to tab ⚙ / tab General, select Disable for Plugin usage tracking and save settings.

If this setting is not available then you have not selected any option yet – tracking is disabled unless explicitly enabled by clicking Allow when asked for permission (or when this setting is set to Enable).

What data is collected: Ad Inserter version, activation status, number of active blocks, date of installation, date of last saved settings, status of review notice and remote debugging, block class name, location, website url and name, WordPress version, language, text direction, charset, number of posts, active theme and version, list of installed plugins, PHP version, server name, IP address (used to determine country), site count for multisite installations, deactivation reasons and details (if provided).

Ad Inserter is only a plugin for WordPress content management software. It works together with WordPress, other installed plugins and selected theme.

This data provides information to make the plugin to be compatible with as many environments as possible, to test the plugin with commonly used plugins and themes, to understand why users deativate (and uninstall) the plugin and to get ideas to make improvements to the plugin.

If you are not happy to reveal this information and you have opted in, simply disable usage tracking as described above.

Your decision will be respected.


This plugin is really useful and every website owner who wants to earn should install it.


Ad Inserter – Ad Manager & AdSense Ads はオープンソースソフトウェアです。以下の人々がこのプラグインに貢献しています。


“Ad Inserter – Ad Manager & AdSense Ads” は3ロケールに翻訳されています。 翻訳者のみなさん、翻訳へのご協力ありがとうございます。

“Ad Inserter – Ad Manager & AdSense Ads” をあなたの言語に翻訳しましょう。

開発に興味がありますか ?

コードを閲覧するか、SVN リポジトリをチェックするか、開発ログRSS で購読してみてください。



  • Fix for errors on the settings page
  • Fix for non English characters in ads
  • Fix for sticky widgets
  • Few minor bug fixes


  • Added support for VIEWPORT separator
  • Added support for viewport check in CHECK separators (Pro only)
  • Added support to show processing log on front-end
  • Added support to show link to the Ad Inserter Pro settings page on multisite Sites page (Pro only)
  • Added support to detect and prevent document.write after DOM is ready
  • Added support for scheduling hours (Pro only)
  • Added support for scheduling days in week (Pro only)
  • Added support for W3TC insertion debugging info
  • Improved Javascript code for client-side functions
  • Improved ad blocking detection
  • Default value for Wait for jQuery set to Enabled
  • Few minor bug fixes, cosmetic changes and code improvements


  • Optimized Javascript code to allow advanced optimizations
  • Added support to wait for jQuery so it can be deferred
  • Added support for children categories in lists
  • Added support to load settings page in safe mode
  • Added warning notice if PHP version is below 5.6
  • Improved user interface for lists
  • Modified Javascript code that was wrongly replaced by CDN url
  • Fix for updates server access warning message (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements


  • Added support for block name class
  • Added support for code generator for AdSense sticky AMP ads
  • Fix for paragraph clearance issues
  • Few minor bug fixes, cosmetic changes and code improvements


  • Added support to call function adinserter () with block name
  • Added support to insert header code with HEAD separator only once
  • Additional info for errors when saving settings
  • Improved support for insertion between posts on AMP pages
  • Implemented compatibility with other plugins using phpQuery library
  • Added support for shortcode to disable tracking on specific pages (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements


  • Fix for error when saving settings


  • Added support for PenCi Soledad AMP plugin
  • Fix for php processing on multisite installations
  • Fix for client-side referrer check
  • Fix for header and footer code on AMP pages using AMP plugin
  • Few minor bug fixes, cosmetic changes and code improvements


  • Added support for client list (black/whitelist operating systems, browsers, device names)
  • Fix for replaced tags with default value {name:default-value}
  • Few minor bug fixes, cosmetic changes and code improvements


  • Minor bug fix regarding update checks (Pro only)


  • Added support for warning when Ad Inserter is disabled by AMPforWP Plugin Manager
  • Added support for block shortcode attributes
  • Added support for post ID list to include all posts or static pages
  • Added option for maximum number of paragraphs
  • Added support to check for update server accessibility (Pro only)
  • Added ids to ad blocking popup message and overlay elements
  • Few minor bug fixes, cosmetic changes and code improvements


  • Added options to define paragraph counting inside container elements
  • Added support to pin block list (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements


  • Few minor bug fixes (Pro only)


  • Improved user interface
  • Simplified user interface for individual post/page exceptions
  • Added support for virtual ads.txt file
  • Added support for frequency capping (Pro only)
  • Added support for click fraud detection (Pro only)
  • Changed url prefix for public reports to avoid possible url collisions (Pro only)
  • Fix for shortcode processing when blocks were used before init hook
  • Many minor bug fixes, cosmetic changes and code improvements


  • Added support to define custom fields with shortocdes
  • Added support to delay showing ads for specified number of pageviews (Pro only)
  • Added support to remember closed ad for specified time period (Pro only)
  • Added support to automatically close ad after specified time period (Pro only)
  • Fix for false positive ad blocking detection (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements


  • Fix for remote code execution vulnerability – credit to Wordfence


  • Fix for possible error Class not found (Pro only)


  • Fix for path traversal vulnerability – credit to Wilfried Becard of Synacktiv (
  • Fix for block rearrangement issues
  • Few minor bug fixes, cosmetic changes and code improvements


  • Added support for taxonomy for Yoast primary category
  • Layout changes to accomodate longer translated texts
  • Fix for escape character not saved in header, footer and ad blocking message code
  • Few minor bug fixes, cosmetic changes and code improvements


  • Added support for full width responsive AdSense code option
  • Few minor bug fixes, cosmetic changes and code improvements


  • Few minor bug fixes, cosmetic changes and code improvements


  • Fix for compatibility with AMP for WP – Accelerated Mobile Pages for WordPress
  • Few minor bug fixes


  • Fix for improved compatibility with other plugins
  • Few minor bug fixes and cosmetic changes


  • Fix for ROTATE shortcodes with option name identical to block name
  • Fix for possible conflict with output buffering in other plugins
  • Few minor bug fixes, cosmetic changes and code improvements


  • Added shortcode to disable ad blocking detection code
  • Added options to disable ad blocking actions for administrators or logged in users
  • Added option to change PDF report footer (Pro only)
  • Added support for public ad impression and click reports (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements


  • Added ads.txt editor
  • Added option to prevent disabling caching for logged in administrators
  • Improved compatibility with PHP 7.2
  • Few minor bug fixes, cosmetic changes and code improvements


  • Fix for saving code with slashes
  • Fix for rotation editor code import
  • Few minor bug fixes, cosmetic changes and code improvements


  • Added support for counter shortcodes
  • Added support for code separator selection for code preview
  • Added support for group rotations
  • Added support for CHECK separator (Pro only)
  • Added links to test pages for check for available positions
  • Few minor bug fixes, cosmetic changes and code improvements


  • Added support for HEAD separator
  • Added support for DoubleClick for Publishers (DFP) ads
  • Added support to generate statistics reports in PDF format (Pro only)
  • Fix for ad label when using AMP separator
  • Fix for AdSense code fixed by viewport
  • Fix for error when checking for available positions
  • Few minor bug fixes, cosmetic changes and code improvements


  • Added support for automatic insertion before/after image
  • Added support for theme checker for available positions for automatic insertion


  • Fix for lazy loading in Ajax calls (Pro only)
  • Fix for country list editor (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements


  • Improved ad blocking detection (detects Firefox content blocking)
  • Added support for wildcards for referrers (domains)
  • Added debugging notice when JavaScript errors are detected
  • Added support to load blocks in iframes (Pro only)
  • Added geolocation support for country subdivisions and cities (Pro only)
  • Added option to hide license key on client websites (Pro only)
  • Few minor bug fixes, cosmetic changes and code improvements


  • Added support for AMP WP – Google AMP For WordPress
  • Added support to individually disable insertions for debugging purposes
  • Improved HTML element selection tool
  • Fix for Call to undefined function wp_get_current_user()
  • Few minor bug fixes, cosmetic changes and code improvements


  • Fix for Fatal error: Call to undefined function mb_strtoupper()


  • Added support for insertion before/after every N paragraphs (%N)
  • Added support for i18n
  • Fix for insertion on admin pages
  • Fix for client-side cookie check
  • Fix for loaded styles from other plugins/themes on the settings page
  • Fix for client-side insertion near HTML elements using :eq selector
  • Fix for deactivation feedback form not closing
  • Few minor bug fixes, cosmetic changes and code improvements


  • Added support for visual HTML element selection
  • Fix for client-side insertion inside HTML elements
  • Few minor bug fixes, cosmetic changes and code improvements


  • Added option to insert into HTML element (prepend, append, replace content)
  • Added option to remove HTML element
  • Added option to not show deactivation feedback form
  • Added support for negative relative positions for paragraph counting
  • Few minor bug fixes, cosmetic changes and code improvements


  • Improved code for client-side insertion
  • Added support for usage tracking
  • Fix for compatibility with older PHP versions (below 5.4)
  • Few minor bug fixes, cosmetic changes and code improvements

Earlier versions

For the changelog of earlier versions, please refer to the separate changelog.txt file.