Ad banners stagnating? Users see the same banner for weeks? That is a classic symptom of misconfigured ad block rotation. Without rotation, you lose control over reach: a static banner quickly becomes stale, and A/B tests become impossible. We have been solving this on 1C-Bitrix for over 10 years — more than 50 rotation projects. We configure both the built-in Advertising module and custom solutions for complex scenarios. Proper weight tuning can save up to 30% of your budget — a real result from our clients. Get a free engineer consultation — we will assess your project at no cost.
How to Configure Banner Rotation in 1C-Bitrix?
Rotation configuration depends on flexibility and load requirements. We cover two approaches: using the Advertising module and a custom solution on information blocks.
Why Rotation Fails: Typical Mistakes
Most issues stem from caching. If the advertising.banner component is cached, the first visitor locks a banner, and all subsequent viewers see the same one. Another mistake is incorrect weights: the sum of weights does not equal 100, skewing distribution. High server load is another pain point — statistics are written on every impression. We solve this by disabling statistics or aggregating them via cron. According to our practice, these three mistakes occur in 80% of projects.
Option 1: Advertising Module
Architecture: Contract → Banner → Place. A place is created in the admin panel with a type (TEXT, HTML, BANNER) and linked to a site area. Key tables: b_adv_banner, b_adv_contract, b_adv_type, b_adv_stat_day.
Example component call:
$APPLICATION->IncludeComponent('bitrix:advertising.banner', '.default', [ 'TYPE' => 'main_slider', 'SHOW_COUNT' => 1, 'CACHE_TYPE' => 'N', ]); According to the documentation 1C-Bitrix: Advertising Module, caching must be disabled for rotation.
Weighted rotation is based on the WEIGHT field in b_adv_banner. If two banners have weights 60 and 40, the first shows in 60% of cases. The module uses a weighted random selection on each request — this creates database load. For high-traffic projects (10,000+ impressions per minute), we recommend disabling statistics or aggregating them through a queue.
Option 2: Custom Solution on Information Blocks
If the Advertising module is missing or lacks flexibility, we implement rotation via information blocks plus JavaScript. PHP outputs all active banners for a position as JSON, and the client picks a random banner. The advantage: PHP component caching works, rotation happens client-side, reducing server load. A custom solution can be up to 3 times faster in server response than the Advertising module due to caching.
class BannerRotator { constructor(banners) { this.banners = banners; this.current = Math.floor(Math.random() * banners.length); } getNext() { const banner = this.banners[this.current]; this.current = (this.current + 1) % this.banners.length; return banner; } } const rotator = new BannerRotator(window.bannerData['main_slider']); setInterval(() => displayBanner(rotator.getNext()), 5000); When to choose a custom solution
If you need regional rotation, device segmentation, or integration with Google Optimize — custom gives full freedom. Implementation time: from 5 business days.How to Set Up A/B Testing of Banners in Bitrix?
The Advertising module supports A/B testing by splitting traffic across contracts. Create two banners with 50/50 weights, after 7–14 days analyze statistics at /bitrix/admin/adv_stat.php, and keep the winner. For deep segmentation by device or region, we integrate A/B testing with external tools.
When Should You Use a Custom Rotation Solution?
A custom solution is justified when the built-in module cannot handle non-standard requirements: complex segmentation logic, performance constraints, or integration with external platforms. In our estimation, custom is more effective in 30% of projects.
What Our Work Includes: Step-by-Step Plan
- Diagnose current scheme and server loads
- Design architecture (Advertising module or custom)
- Configure contracts, banners, weights, and segmentation
- Integrate with external services (Google Optimize, CDEK, YooMoney)
- Test on different devices and browsers
- Deliver documentation and train managers
Comparison of Rotation Methods
| Parameter | Advertising Module | Custom Solution |
|---|---|---|
| Setup complexity | Medium (admin panel) | High (requires PHP development) |
| Flexibility | Limited | Full |
| Performance | Medium (SQL queries) | High (cache + client side) |
| A/B testing | Built-in | Requires integration |
| Regional targeting | Basic (via conditions) | Any (via API) |
Typical Mistakes in Rotation Setup
| Mistake | Cause | Solution |
|---|---|---|
| Banner does not show | Component caching enabled | CACHE_TYPE = N |
| Banners appear equally often despite different weights | Sum of weights not normalized | Normalize weights to sum to 100 |
| High server load | Statistics written on each impression | Disable ADV_STAT or aggregate via cron |
| Empty ad slot | No contract assigned or wrong place type | Check links in admin panel |
Timeline and Cost
A typical project takes 3 to 10 business days. Cost is calculated individually after analyzing your configuration. Order rotation setup — get stable banner performance and budget savings.
Guarantees
We offer a guarantee on all rotation work. If issues arise within a month after delivery, we fix them free of charge. Our experience: 10+ years on the market, 50+ projects implemented. Contact us for a consultation.

