Setting up Yandex.Metrica goals on 1C-Bitrix

If goals in Metrica are not configured or count the wrong things, advertising and reports show a distorted picture. We set up turnkey goals on Bitrix and Bitrix24 sites: from auditing current tracking to verifying every conversion. You get reliable data for decisions without code changes by your team.

Our competencies:

Frequently Asked Questions

Setting up Yandex Metrica goals on Bitrix: where tracking breaks

Setting up Yandex Metrica goals on Bitrix almost always comes down not to the counter interface, but to how the site sends events.

A typical failure: a form is submitted via AJAX, the page does not reload, and the goal is set to a visit to the "thank you page." The event never fires — and in reports, conversion for that channel is zero, even though leads are actually coming in.

The second common case is a goal on a button click without protection against re-firing: a user clicks twice or goes back, and one lead turns into three conversions.

The third is a template change or component update, where the goal call remains in the old code and quietly stops working.

The cost of such failures is not an "inaccurate number," but decisions made on wrong data. A channel that brings in leads looks unprofitable and gets turned off; another one, where the goal is duplicated, gets the budget.

Analytics data loss accumulates unnoticed: the discrepancy between leads in the CRM and conversions in Metrica grows for months until someone reconciles the exports manually.

Let's break down how this gets fixed: exactly where in Bitrix to place the goal call so that it fires both on AJAX and on a regular submission, how to separate goals by event type, and how to verify Bitrix conversion tracking before the data goes into reporting.

What proper goal setup delivers: the effect in numbers

Proper goal setup starts with the fact that each goal is tied to a real user action, not to the fact that a page has loaded.

On Bitrix, this most often means passing an event from a form, cart, or personal account to Metrica via a JS event or a server-side call — then the goal fires exactly once, at the moment of a successful backend response, rather than when a button is clicked.

The accuracy of the metrics data directly depends on this: the discrepancy between the number of leads in the CRM and the number of goal completions shrinks from tens of percent to single digits.

Double-counting of conversions is a separate class of errors that quietly eats up budgets.

It appears when a goal is placed on an intermediate "thank you" page and the user refreshes it or navigates back through history, or when the event is sent both on the client and on the server.

We eliminate this with idempotent sending and event-source verification, so the reports keep one conversion per one action.

For us, the speed of implementing goals is measured not in days for approval, but in hours for deployment: typical scenarios — form submission, call, add to cart, order placement, registration — are handled by template handlers, while non-typical ones are assembled for a specific funnel.

Funnel transparency appears when goals are arranged by stages: visit, engagement, lead, deal. Then it becomes clear at which step the traffic drops off, and decisions about channels are made based on data rather than gut feeling.

Ways to set up goals: comparison of approaches

There are three working approaches, and the choice between them is determined not by convenience, but by where exactly the event occurs. If the action happens in the browser, manual setup via the interface or JavaScript is suitable.

If the event is recorded on the server side (payment confirmed by the payment system, order moved to a status, export to 1C completed), the browser may not know about it at all, and then server-side goals via the API are needed.

Manual setup via the interface is the fastest start: the counter is already installed on the site, a goal is created by page URL or by button click, and no additional code is required.

There is one limitation, but it is significant: such a counter breaks when the address template changes, and it will not see events without a transition to a new page (submitting a form without reloading, a step in the cart).

Goals via JavaScript events cover the dynamic side: the handler triggers the sending of an event at the moment of the action, so both steps in the cart, and opening a form, and a click on a phone number are recorded.

Accuracy is higher, but a dependency appears on blockers and on the user waiting for the scripts to load — some events are lost on slow connections.

Server-side goals via the API remove this dependency: the event is sent from the server, where there is already a confirmed fact — order status, payment gateway response, exchange with 1C.

Blockers and failures on the browser side do not affect this, and the data matches the accounting system. The price is that a visit identifier is needed, which is passed from the browser to the server and stored until the moment of the event.

Approach When it is suitable Limitations
Manual setup in the interface Simple goals: page view, link click, static form Does not see events without a transition; breaks when addresses change
Goals via JavaScript events Dynamic interfaces, cart, checkout steps, clicks Depends on script loading and blockers
Server-side goals via the API Payment, order statuses, exchange with 1C, reconciliation with the accounting system Requires passing and storing a visit identifier

In practice, the approaches are combined: basic goals are set manually, behavioral ones — via events, and money and order statuses — only from the server.

Then the discrepancy between analytics data and the accounting system remains within the margin of error, rather than being off by multiples.

How we implement goals: stages of work

We start with an audit of the current tracking markup: we look at which events are already being collected, where they are duplicated, and where forms and the cart remain "blind." It often turns out that some goals are set to a link click rather than the actual submission — such data produces a distorted funnel.

Next, we design a goal scheme for the specific business logic: what counts as a lead, where the checkout step ends, and which events are needed to assess traffic quality. We agree on the list with the client before starting work so we don't have to redo it later.

  1. Markup audit: we check existing counters, events, duplicates, and "dead" goals, and record discrepancies.
  2. Goal scheme design: we determine which actions we consider conversions, on which pages and in which scenarios they fire.
  3. Collection setup: we implement events in templates and components, and connect the transmission of data about orders and forms.
  4. Firing verification: we run test scenarios — form submission, checkout, call, — and verify that each goal is recorded exactly once.
  5. Reporting alignment: we configure the link between goals and reports so that the data matches real leads.
  6. Documentation handover: we provide the goal scheme, the list of events, and a verification guide — the team can maintain the tracking markup on its own.

Each stage ends with a clear result: an agreed list of goals, working events, a verified funnel. If problems with the template or CRM integration come up at some step, we resolve them before moving on rather than putting them off until later.

Access policies and roles for working with goals

Rights to a counter and rights to goals are different entities, and they must not be confused. In the Metrica interface, access is granted to a specific counter with a role: viewing statistics, editing, access management.

In the 1C-Bitrix admin panel, rights live separately — for the statistics module, for infoblocks, for the administrative section. If you grant "administrator" to someone who simply needs to see the funnel, they will also get the ability to break the form markup.

That is why we separate roles according to the principle of least privilege and record this in a matrix.

The access matrix is a "role × object × action" table: a marketer sees reports and does not touch the code, a developer edits event handlers and does not have access to commercial data, a context contractor gets read-only access to the necessary goals.

The goals regulation describes the lifecycle: who initiates a new goal, who approves the wording, who checks it in debug mode before publication, and where the change history is stored.

The client receives a set of deliverables:

  • configured goals linked to events and funnels, verified in debug mode;
  • an event map: which action on the site or in 1C generates which goal;
  • a regulation for adding new goals — from request to post-publication verification;
  • an access matrix for counters and for the administrative section;
  • a goal acceptance checklist: triggering, absence of duplicates, correct source attribution;
  • a rollback instruction: how to remove a goal if it distorts statistics;
  • a change log — who, when, and why edited the markup.

Goal documentation is maintained in the repository alongside the code, not in chat threads: that way, when a contractor changes or an employee leaves, the context is not lost.

The regulation is reviewed with every major site change — a new form, a new section, or a change in order logic requires a revision of goals, otherwise the funnel quietly diverges from reality.

Case Study: How We Eliminated Double Conversion Counting on Bitrix

The client — an online store on 1C-Bitrix — complained that the number of orders in Metrica reports was consistently 30% higher than actual.

The marketing department was making decisions based on inflated data: scaling campaigns that weren't actually profitable, while real growth opportunities remained in the shadows.

What We Found

We analyzed the event chain and found three independent sources of duplicates. The form submission goal fired both on click and on the server response — with a slow response, a visitor could manage to click twice.

On the order confirmation page, the goal was placed in a template that was included both in the main site and in the mobile version — a single order was counted twice. The third cause was the "Thank You" page reloading on refresh: the event was sent to Metrica again.

What We Did

We consolidated all conversion points into a single server-side event: the order is confirmed in the database, and only after that is a signal sent to Metrica — without being tied to the interface or page reopens.

For forms, we added protection against resubmission on the server side, not just in the browser. We moved the goals into a separate module with a unified registry: a new goal is described in one place and connected to the necessary pages without editing templates.

Result

Metric Before After
Share of duplicate conversions 30% less than 1%
Tracking accuracy ~70% 99%
Time to add a new goal 2 days 1 hour

Tracking accuracy increased to 99% — reports began reflecting real orders, and channel decisions started relying on facts rather than inflated numbers.

The goal registry eliminated manual template editing: a marketer formulates the event, and an engineer connects it in an hour instead of two days.

How does a "button click" goal differ from a "form submission" goal?

These are two fundamentally different types of goals, and confusing them is the most common reason Yandex.Metrica reports show a conversion that never happened.

A "button click" goal is an event-based goal: the counter fires the moment a visitor clicks an element, and it doesn't matter what happens next.

A "form submission" goal is a reach-based goal: it is recorded when the browser navigates to a confirmation page after the data has been successfully processed on the server.

The difference between the goals lies precisely in this: an event happens in the interface, while a reach is based on a completed action.

This is where the different behavior comes from. A button click captures intent but not the result: a visitor clicked "Submit," the form failed validation, the email never arrived — yet the goal has already been counted.

A form submission captures the result, but it requires a separate confirmation URL after processing, otherwise there is nothing to record the reach against.

On 1C-Bitrix sites, this is solved either by rendering a "thank you" page with a unique URL, or by sending an event through a programmatic counter call from the success response handler — the second option is more reliable because it doesn't depend on where the developer decided to redirect the user.

False triggers are a headache of their own. A button click easily double-counts on repeated presses, fires on scroll animations and on elements that look like a submit button but aren't one. A reach-based goal is protected from this: the confirmation page opens only once.

That's why for lead forms, orders, and service bookings it's better to use a reach, and reserve clicks only for actions that have no server-side confirmation: opening a chat, a phone call, going to a messenger.

In practice, it's convenient to combine them: a reach-based goal counts real leads, while a click-based goal shows how many people started filling out the form and at which step they dropped off.

The difference between these numbers is exactly the form losses, visible without any additional tools. If the gap is large, the problem lies in validation, server response speed, or the field copy itself — not in the traffic.

When setting up goals on 1C-Bitrix, we always test each goal in counter debug mode: whether the event fires once, whether it's caught at intermediate steps, whether the order parameters are passed correctly.

A goal that fires where it shouldn't is worse than a missing one — it creates a false picture and steers advertising decisions in the wrong direction.

Common technical concerns when setting up goals

In practice, concerns almost always come down to four scenarios: a conflict with an already installed counter, verification without access to the control panel, multiple domains on a single project, and the correctness of data transmission after modifications. Let's go through each one — as it looks in a real project.

The site already has another Metrica counter — what should be done with it?

Two counters on one page do not conflict: each is initialized with its own identifier and writes to its own statistics.

The problem is different — goals configured in the old counter are not transferred automatically, and some events may be duplicated if both counters listen to the same actions.

We transfer the necessary goals to the working counter, disable duplicate calls, and leave the old one in observation mode until we are sure the data matches.

How can you verify that goals are firing if you don't have access to the admin panel?

The debug mode in the Metrica interface and the real-time events tab are enough: it shows a goal firing at the moment of the action, without going into the site's control panel.

We go through the scenario as an ordinary visitor — submitting a form, making a call, placing an order — and confirm that each event has arrived. If something didn't fire, the cause is visible in the call chain, not through indirect signs.

Can goals be set up on multiple domains?

Yes, and this is a standard scenario for projects with subdomains or mirrors. There are two options: a single counter with cross-domain linking, or separate counters for each domain with a consolidated report.

The choice depends on whether you need an end-to-end funnel across all properties or separate statistics. We set up both options and verify that the transition between domains does not break the session.

What happens to goals after a site update or template change?

Goals tied to interface elements break when the markup changes — the handler simply stops finding the required element. It is more reliable to tie events to a business action rather than to a button: data submission, order status change, payment confirmation. Then a design update does not require reconfiguration, and the statistics remain continuous.

If your case is not on the list — describe the task, and we will get back to you with an estimate and a work plan.

Let's discuss your goal setup task

Setting up goals is not "checking a box in the panel," but linking each target action on the site to a specific event in the interface and making sure it reaches the report without losses.

To come back with an estimate and an implementation plan, rather than general words, we need a minimum of input: access to the analytics panel and the site's admin area, a list of actions that you consider a result (a form submission, a call, a completed order, a price list download, a registration), and a description of the current funnel — where traffic comes from and at which step it most often drops off.

Next, we compare this list with what actually happens on the site: which forms are submitted, how orders are processed in 1C, where the call and messenger buttons are placed, whether there is a cart with intermediate steps.

Some goals are set up on interface events, some on transitions through the checkout steps, and some on confirmation from the server-side logic when an order has reached 1C.

Such an analysis immediately shows where data is currently being lost and which actions are not being tracked at all.

What the turnkey goal setup work includes:

  • marking up target actions on the site and verifying they fire in real scenarios;
  • setting up goals in the analytics panel, including composite goals and funnels by checkout steps;
  • linking site events with data from 1C so that a form submission and an order do not diverge in statuses;
  • verifying end-to-end transmission: from click to the record in the report, with test walkthroughs;
  • setting up reports and breakdowns that you will use to make decisions, rather than just looking at numbers;
  • documentation for each goal: what it means, where it is set up, how to check it in case of a failure.

The estimate of the work depends on the number of goals, the complexity of the forms, and the depth of integration with 1C — after a short analysis we state the timelines and the composition of the stages.

Handing over the result includes not only the configured goals, but also instructions for your team: how to add new goals on your own, how to distinguish a real failure from a traffic spike, and where to look if the metrics change sharply.

Describe the task — which actions you consider target and what is already set up — and we will come back with an estimate and an implementation plan.