Let's say your online store has 10,000 products. Manually filling title and description for each would take weeks, and empty meta tags kill indexing. We solve this by configuring auto-generation of SEO tags in 1C-Bitrix. The result: unique titles and descriptions for every page without content manager involvement. Moreover, proper meta tags increase CTR by 20–30% in search results, directly affecting traffic. Our experience shows that automation pays off within two weeks for catalogs from 5,000 items.
What problems does auto-generation of SEO tags solve?
Duplication of title and h1 is a common mistake: <title> and <h1> match, reducing clickability. The right practice is they should differ, and we implement that.
Lack of dynamics – standard templates do not substitute price, article number, or stock. As a result, all product titles look like "Buy #NAME#" without uniqueness.
Complex logic – products from different categories need different templates: for example, clothing with size, electronics with power. The standard module cannot handle that.
How to set up auto-generation of SEO tags?
The basic tool is meta tag rules in Marketing → Search Optimization → Meta tags. For an infoblock, you create a template with placeholders like #NAME#, #SECTION_NAME#, #PROPERTY_{CODE}#. This covers most cases without programming. Here are typical templates for an online store:
| Object | Title | Description |
|---|---|---|
| Catalog item | #NAME# — price, features |
Buy #NAME#. #PROPERTY_SHORT_DESC# Delivery from 1 day. |
| Catalog section | #NAME# — product catalog |
Wide selection in #NAME#. #PROPERTY_SECTION_DESC# |
| Article detail | `#NAME# | Blog` |
Read more about the SEO module in the official documentation. But if you need to substitute a brand from a linked HL-block or generate a title based on discount availability – built-in macros won't be enough. That's where custom generation comes in, giving up to 50% more unique titles compared to standard templates.
When are standard templates insufficient?
Custom generation is 3 times more flexible than standard templates: it allows using any data, including discounted prices, stock, brands from external sources. For example, for electronics, you can output power in the title, and for clothing, size grid. This is especially relevant for catalogs of 20,000+ items, where each percentage point of CTR brings a tangible increase in sales.
How to set up custom generation via events?
We use the OnBeforeProlog handler in init.php. This event executes before components are rendered, so all changes make it into <head>. Example code:
AddEventHandler('main', 'OnBeforeProlog', function() { global $APPLICATION; if (!preg_match('#^/catalog/([^/]+)/([^/]+)/#', $_SERVER['REQUEST_URI'])) { return; } $elementId = (int)$_REQUEST['ELEMENT_ID']; if (!$elementId) return; $el = \CIBlockElement::GetByID($elementId)->GetNext(); if (!$el) return; $brand = $el['PROPERTIES']['BRAND']['VALUE'] ?? ''; $model = $el['NAME']; $price = \CCatalogProduct::GetByID($elementId)['PRICE'] ?? ''; $APPLICATION->SetPageProperty('title', "{$brand} {$model} — buy for {$price} ₽ | Online Store" ); $APPLICATION->SetPageProperty('description', "Buy {$brand} {$model} for {$price} ₽ with delivery across Russia. " . ($el['PROPERTIES']['SHORT_DESC']['VALUE'] ?? '') ); }); Calling SetPageProperty in OnBeforeProlog executes earlier than the components on the page, so the value makes it into <head>. Generating H1 independently from title is good practice: <title> and <h1> should differ. H1 is set via the page property h1:
$APPLICATION->SetPageProperty('h1', $el['NAME']); In the page template:
<h1><?= $APPLICATION->GetPageProperty('h1') ?: $APPLICATION->GetTitle() ?></h1> Bulk update of SEO fields for existing elements
If you need to fill SEO fields for thousands of existing products from a template – do it via a script:
$res = \CIBlockElement::GetList( [], ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'], false, false, ['ID', 'NAME', 'IBLOCK_ID'] ); while ($el = $res->GetNextElement()) { $fields = $el->GetFields(); $props = $el->GetProperties(); $seoTitle = $fields['NAME'] . ' — buy in online store'; $seoDesc = 'Buy ' . $fields['NAME'] . ' with delivery. ' . ($props['SHORT_DESC']['VALUE'] ?? ''); \CIBlockElement::SetPropertyValuesEx($fields['ID'], $fields['IBLOCK_ID'], [ 'SEO_TITLE' => $seoTitle, 'SEO_DESCRIPTION' => $seoDesc, ]); } The script is run once. After execution, the elements have filled SEO fields that override the module template.
Templates vs custom: which to choose?
| Criteria | Built-in templates | Custom generation |
|---|---|---|
| Setup complexity | 1–2 hours, no code | 4–8 hours, requires PHP |
| Flexibility | Only macros #NAME#, #SECTION# | Any logic: conditions, API, external data |
| Updating existing | Only via bulk script | Can be combined with event immediately |
| Module dependency | Only SEO module | Any modules and third-party services |
For 90% of projects, built-in templates are enough. But if you work with a large catalog (20,000+ items) or complex property structure – custom generation pays off with up to 20% CTR growth and 100% reduction in manual work.
Our work process
- Analysis – study current infoblock structure, properties, and URLs. Identify pages with empty meta tags.
- Design – develop templates for title, description, h1 for each page type (item, section, brand).
- Implementation – configure SEO module rules or write custom event handlers.
- Testing – check on a sample of 50–100 pages: uniqueness, length, no duplicates.
- Deploy – upload code to production server, run bulk update if needed.
- Monitoring – after 2 weeks, evaluate indexing dynamics and CTR.
Timelines and cost
- Only SEO module templates – from 2 hours. Cost calculated individually.
- Custom generation + bulk update – from 4 to 16 hours. Cost depends on complexity and volume.
Each project is unique – contact us for an accurate estimate. Request a consultation and receive a preliminary assessment for your project.
What is included in the work
- Documentation on generation rules for each page type.
- Source code of event handlers with comments.
- Instructions for content managers: how to add a new template or modify an existing one.
- Code warranty – 3 months of free support.
- Consultation on further SEO optimization.
Why choose us?
Official 1C-Bitrix partner with 10+ years of development experience. Over 200 implemented projects, including large catalogs (up to 500,000 items). Certified specialists. Individual approach: we do not copy solutions, we design for your structure.
Get a consultation – contact us and we will prepare the optimal solution.







