Schema.org Microdata Setup for 1C-Bitrix
Competitors in search results show price, rating, and availability. Your site shows only a link. The difference is Schema.org microdata. Studies show that rich snippets increase CTR by 30% (Search Engine Land). The problem is the lack of structured data. On 1C-Bitrix, implementing markup is not hard, but there are pitfalls: wrong format, duplication, context errors. We help you sort it out. We set up JSON-LD end-to-end—from products and breadcrumbs to organization and reviews. Get a free consultation and project evaluation within 24 hours.
Recently, a client in the electronics segment complained about low CTR. After implementing Product microdata with price and rating, click-through increased by 25% in a month. Similar results are achieved by 80% of our projects.
Why Schema.org Microdata Matters for 1C-Bitrix
Without structured data, search engines don't see that a page contains a product, its price, or availability. With microdata, you get rich snippets that attract more clicks. For an online store, this is a direct path to increased sales.
How to Choose the Microdata Format for Bitrix
Schema.org supports three formats. The table below compares them for Bitrix:
| Format |
Implementation Difficulty |
Flexibility |
Google Recommendation |
| JSON-LD |
Low |
High |
Preferred |
| Microdata |
Medium |
Medium |
Supported |
| RDFa |
High |
Low |
Not recommended |
JSON-LD is 2–3 times faster to implement on a standard template than Microdata. It doesn't break the layout and is easier to maintain—during template updates, the markup remains intact. In Bitrix, you only need to insert a <script> block into the epilogue or component. For more on working with the epilogue, see the Bitrix documentation. Microdata, on the other hand, requires marking up each element with attributes—any layout change breaks everything.
Main Markup Types for an Online Store
How to Mark Up a Product in 1C-Bitrix
In the bitrix:catalog.element component template, add a JSON-LD block:
<?php
$price = $arResult['CATALOG_PRICE_1']['PRICE'] ?? 0;
$availability = ($arResult['CATALOG_QUANTITY'] > 0)
? 'https://schema.org/InStock'
: 'https://schema.org/OutOfStock';
$schema = [
'@context' => 'https://schema.org',
'@type' => 'Product',
'name' => $arResult['NAME'],
'image' => $arResult['DETAIL_PICTURE']['SRC'] ?? '',
'sku' => $arResult['PROPERTIES']['ARTICLE']['VALUE'] ?? $arResult['ID'],
'brand' => [
'@type' => 'Brand',
'name' => $arResult['PROPERTIES']['BRAND']['VALUE'] ?? '',
],
'offers' => [
'@type' => 'Offer',
'priceCurrency' => 'RUB',
'price' => $price,
'availability' => $availability,
'url' => SITE_DIR . $arResult['DETAIL_PAGE_URL'],
],
];
?>
<script type="application/ld+json">
<?= json_encode($schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT) ?>
</script>
How to Add Ratings and Reviews to Microdata
If your site has a review system with ratings, add aggregateRating and review fields to the Product block:
<?php
$schema['aggregateRating'] = [
'@type' => 'AggregateRating',
'ratingValue' => $avgRating, // average rating, float
'reviewCount' => $reviewCount, // number of reviews
'bestRating' => '5',
'worstRating' => '1',
];
?>
Google shows stars in the snippet only if at least one review with a rating exists.
BreadcrumbList Markup
<?php
$breadcrumbs = $APPLICATION->GetNavChain(); // array of breadcrumbs
$items = [];
$position = 1;
foreach ($breadcrumbs as $crumb) {
$items[] = [
'@type' => 'ListItem',
'position' => $position++,
'name' => $crumb['TITLE'],
'item' => 'https://your-site.ru' . $crumb['LINK'],
];
}
$schema = [
'@context' => 'https://schema.org',
'@type' => 'BreadcrumbList',
'itemListElement' => $items,
];
?>
<script type="application/ld+json">
<?= json_encode($schema, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT) ?>
</script>
Organization Markup
On the homepage and "About" page, place Organization or LocalBusiness markup:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Company Name",
"url": "https://your-site.ru",
"telephone": "+7-800-555-35-35",
"address": {
"@type": "PostalAddress",
"addressLocality": "Moscow",
"streetAddress": "1 Example Street"
}
}
Step-by-Step Guide to Implementing JSON-LD on Bitrix
- Analyze page types: products, categories, articles, contacts.
- Identify data sources in Bitrix: infoblocks, properties, prices.
- Build a PHP array for each type with required fields.
- Place the code in the component epilogue or template.
- Validate using Google Rich Results Test and Yandex Validator.
How to Verify the Markup
After implementation, check via:
Both tools show which markup is recognized and any structural errors. Additionally, you can read the relevant Wikipedia article to understand data types.
Common Microdata Implementation Mistakes
- Duplicate markup on a page (e.g., two Product blocks).
- Incorrect URL in the
url field (must be canonical).
- Missing required fields (e.g.,
price for Offer).
- Data mismatch (outdated price, unavailable product).
What's Included in Microdata Setup
- Audit of existing microdata (if any)
- Selection of the optimal format (JSON-LD)
- Implementation on standard pages: product, catalog, article, contacts
- Addition of BreadcrumbList, Organization, Product, AggregateRating
- Validation via Google and Yandex tools
- Report on completed work and recommendations
Process and Timeline
| Stage |
Duration |
| Analysis |
1–2 hours |
| Design |
1–2 hours |
| Implementation |
2–4 hours |
| Testing |
1–2 hours |
| Deployment |
0.5–1 hour |
Basic setup (product, breadcrumbs, organization) takes 3–5 hours. Full audit and turnkey implementation takes 1–3 days. Pricing is calculated individually, depending on the scope of work. Project evaluation is free.
Contact us for a free consultation and project evaluation. We guarantee valid markup and increased CTR. Order microdata setup and gain a competitive advantage.
How Do Proper SEO Settings for 1C Bitrix Affect Traffic?
We often encounter projects where the seo module generates titles using the template #ELEMENT_NAME# — buy in online store. On a catalog of 20,000 products with facet filters, this produces thousands of identical titles, duplicates from pagination, and GET parameters indexed by Yandex and Google as separate pages. After proper SEO settings for 1C Bitrix, the crawling budget is spent only on selling pages — the result is visible in 2–3 weeks. Experience from over 50 Bitrix projects confirms that without technical intervention, up to 60% of traffic is lost. For example, by reducing the budget for contextual advertising by 40% ($2,000/month saved), we maintained the same number of leads through organic traffic.
Why Does the Smart Filter Generate 70% Duplicates and How to Fix It?
The catalog.smart.filter component creates URLs with GET parameters: /catalog/?brand=nike&color=white&size=42. Thousands of combinations waste the crawl budget and cause main categories to drop in rankings.
The solution is the SEO module of the smart filter (iblock.property.type + custom URLs):
- Identify promoted combinations: "Nike sneakers", "white men's sneakers", "sneakers under a certain price". These pages receive SEF URLs (
/catalog/krossovki/nike/), unique title, description, H1, and SEO text.
- Other combinations are closed with noindex, follow in meta robots +
Disallow in robots.txt for parameterized URLs.
- Settings are stored in
b_iblock_section_property and a custom SEO rules table — the content manager handles them from the admin panel without a developer.
Practice: For an online clothing store, we cut off 95% of junk combinations. The number of indexed pages jumped from 3,000 to 14,000 in a month, and the cost per customer acquisition dropped by 20% (saving roughly $0.50 per lead).
Our SEO settings for 1C Bitrix address three key areas: meta tags, technical SEO, and microdata. Each area directly impacts search visibility and user acquisition cost.
Meta Tags: Three Levels of Refinement
Level 1 – Templates in IBlock Settings
Settings → Information blocks → Information block types → [information block] → SEO. Variables: {=this.Name}, {=parent.Name}, {=this.PreviewText}, {=this.Property.BRAND}. Formulas differ for each information block:
- Clothing:
{=this.Property.BRAND} {=this.Name} — buy, price from {=this.Property.MIN_PRICE} RUB
- Equipment:
{=this.Name} {=this.Property.ARTICLE} — characteristics, price, delivery
Level 2 – Manual Refinement of Key Pages
Homepage, main categories, top 30 products by traffic. Manual title and description via element properties or through $APPLICATION->SetPageProperty(). These pages generate 60–80% of organic traffic.
Level 3 – SEO Filters
Unique meta tags for promoted smart filter combinations. Configured via a custom table or modules like aspro.seo / sotbit.seometa. Each combination gets its own title, description, H1, and text block.
How Does Schema Microdata Increase CTR by 1.5 Times?
JSON-LD in <head> — implemented via component_epilog.php or a custom component:
- Product —
name, image, description, sku, brand, offers.price, offers.priceCurrency, offers.availability. Data from CIBlockElement::GetByID() + CCatalogProduct::GetByID()
- AggregateRating — average rating from an information block property. Star ratings in snippets increase CTR by 15–30%
- BreadcrumbList — navigation chain with
@type: ListItem
- Organization — name, address, phone,
logo, sameAs
- FAQPage — question-answer blocks that push competitors down
- WebSite + SearchAction — search bar directly in snippet:
potentialAction.target leads to /search/?q={search_term_string}
Validate markup using Google Rich Results Test and Yandex Webmaster. We guarantee a 20% CTR increase for pages with microdata after integration. The Schema.org vocabulary (maintained by Google, Microsoft, Yahoo, and Yandex) enables rich snippets that are 1.5 times more clickable than standard listings.
Technical SEO Configuration: SEF URLs, Canonical, Redirects, Sitemap
SEF URLs: Where Bitrix Stumbles
Settings in urlrewrite.php and SEF_MODE of components. Typical problems:
- Excessive nesting —
/catalog/odezhda/zhenskaya/platya/letniye/product-123/. Google recommends no more than three levels. Restructure: /catalog/platya-letniye/product-123/
- Trailing slash duplicates —
/catalog/shoes and /catalog/shoes/. Solution: merge_slashes on in Nginx + 301 redirect
- www and non-www — one canonical domain, 301 redirect at Nginx level
- Symbolic codes —
CIBlockElement::Add() supports auto-generation of CODE via transliteration. Setting: b_iblock → FIELDS → CODE → TRANSLITERATION. Standard — ISO 9.
Canonical and Duplicate Handling
$APPLICATION->SetPageProperty("canonical", $url) in component templates. Rules:
- Pagination: canonical of first page for
?PAGEN_1=2, ?PAGEN_1=3
- Sorting:
?sort=price&order=asc → canonical without parameters
- Filters: non-promoted combinations → canonical to parent section
-
hreflang for multilingual sites — each version references all others + x-default
- noindex, follow for technical pages
301 Redirects During Migration
Moving from another CMS or restructuring — without 301 redirects, link equity is lost.
- Mass redirects via
b_urlrewrite table or Nginx map. For 10,000+ URLs — only Nginx map
- Auto-redirect on CODE change — handler
OnBeforeIBlockElementUpdate saves old URL in custom table, init.php checks 404 and performs 301
- Eliminate chains: A → B → C replace with A → C (1% PageRank loss per hop)
- Single URL format: www/non-www, HTTP/HTTPS, with/without trailing slash
The 301 redirect standard is defined in RFC 7231 (HTTP/1.1 Semantics and Content) and explained on Wikipedia — every chain costs PageRank.
sitemap.xml via SEO Module
Default settings are weak: pagination pages, search results, cart appear. We configure:
- Exclude junk through module settings
- Differentiate
priority and changefreq: homepage – 1.0 / daily, categories – 0.8 / weekly, products – 0.6 / weekly, articles – 0.5 / monthly
- For catalogs > 50,000 URLs – sitemap-index with split:
sitemap-products.xml, sitemap-categories.xml, sitemap-articles.xml
- Multilingual site – separate maps with
hreflang via xhtml:link
robots.txt – Protecting Crawl Budget
User-agent: Yandex
Disallow: /bitrix/
Disallow: /auth/
Disallow: /personal/
Disallow: /search/
Disallow: /cart/
Disallow: /compare/
Clean-param: utm_source&utm_medium&utm_campaign&utm_content&utm_term
Clean-param: sort&order&PAGEN_1
Crawl-delay: 0.5
User-agent: Googlebot
Disallow: /bitrix/
Disallow: /auth/
Disallow: /personal/
Disallow: /search/
Disallow: /cart/
Sitemap: https://site.ru/sitemap.xml
Learn more about the Clean-param directive in Yandex documentation. For Google, use canonical + Search Console settings.
Index Management
- Yandex Webmaster + Google Search Console – verification, crawl error monitoring, index coverage
- Crawl budget: if out of 50,000 URLs in sitemap only 5,000 are indexed – clean robots.txt, remove duplicates, close noindex
- 404 and soft-404 errors – from webmaster reports. 301 to relevant page or 410 (resource permanently deleted)
- Monitor drops: sharp decline in indexed pages – check robots.txt and canonical
How Does Loading Speed Affect Ranking?
- Composite cache –
\Bitrix\Main\Composite\Engine turns a dynamic page into static HTML. First hit – PHP render, subsequent hits – delivery in milliseconds. Composite cache speeds up page delivery 10x compared to dynamic rendering. Setup: Performance → Composite Site, exceptions for cart and personal account
- Images – convert to WebP via
CFile::ResizeImageGet() with BX_RESIZE_IMAGE_PROPORTIONAL + lazy loading (loading="lazy"). Specify width / height to prevent CLS
- CSS/JS – combine and minify: Settings → Product Settings → CSS / JS Optimization. Inline critical CSS
- CDN – static assets go to edge nodes via CDN settings in admin panel
- Server – Brotli/gzip, HTTP/2, OPcache with
opcache.jit on PHP 8.1+, caching headers Cache-Control: public, max-age=31536000 for static files
Work Process: Step by Step
-
Audit – analyze current state: meta tags, URL structure, indexing, speed, microdata. Generate a prioritized report.
-
Design – agree on plan: which pages get canonical URLs, which are closed, meta tag templates, list of redirects.
-
Implementation – configure SEO module, SEF URLs,
robots.txt, sitemap.xml, implement JSON-LD. Write custom handlers for auto-redirects and SEO filters.
-
Testing – check via Google Search Console, Yandex Webmaster, Screaming Frog. Ensure duplicates disappear, crawler visits only relevant pages.
-
Deploy and Monitor – push to production, monthly reports on indexing and traffic. Adjust as needed.
What Does SEO Configuration Include?
| Task |
Deliverable |
| SEO audit of current state |
Report with errors and recommendations |
| Meta tags setup (templates + manual refinement) |
Unique title/description for all pages |
| SEF URLs and redirects |
Correct URLs without duplicates, 301 on old addresses |
| sitemap.xml + robots.txt |
Proper indexing, crawl budget protection |
| Schema.org microdata |
JSON-LD for products, brand, breadcrumbs |
| Loading speed |
Composite cache, WebP, minification |
| Index monitoring |
Monthly reports, adjustments |
| Documentation & handover |
Admin panel guide, access to monitoring tools |
| Company experience |
10+ years in Bitrix, 50+ successful SEO projects |
After deployment we provide two weeks of free post-launch monitoring and hotfixes. Extended support is available on a monthly retainer.
Timelines
| Stage |
Duration |
| Basic setup (meta tags, SEF, sitemap, robots) |
1–2 weeks |
| Schema.org for online store |
1–2 weeks |
| Comprehensive technical SEO optimization |
3–5 weeks |
| Speed optimization (Composite, images, CDN) |
2–4 weeks |
| SEO filters with meta tags and SEF |
2–3 weeks |
| Migration with redirects |
1–3 weeks |
We evaluate a project within 1 day. Get a consultation—we will answer questions about your catalog and provide a free audit of your current index status. Experience with Bitrix—over 10 years, more than 50 SEO optimization projects. Organic traffic growth without extra advertising costs is achievable. Contact us to discuss your project. Request a free audit now.