> For the complete documentation index, see [llms.txt](https://docs.olchat.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.olchat.io/capabilities/peredacha-parametrov-analitiki/olchat-link-modifier-avtomaticheskaya-podstanovka-id-posetitelya-v-ssylki-messendzherov.md).

# Олчат Link Modifier — автоматическая подстановка ID посетителя в ссылки мессенджеров

{% hint style="warning" %}
Данная статья предназначена для специалистов, обладающих практическим опытом настройки виджетов и передачи параметров аналитики. Материал содержит технические детали и требует понимания принципов интеграции с аналитическими системами.

При отсутствии соответствующего опыта рекомендуем обратиться к квалифицированному подрядчику или интегратору. Это обеспечит стабильную работу виджета и корректную передачу данных аналитики.
{% endhint %}

Скрипт Олчат Link Modifier добавляет идентификатор посетителя в ссылки WhatsApp и Telegram на вашем сайте. Это помогает автоматически отслеживать источник обращений.

## Для чего это нужно?

Когда посетитель нажимает на кнопку связи через WhatsApp или Telegram на вашем сайте, скрипт добавляет уникальный идентификатор в начальное сообщение. Это позволяет:

* Понять, откуда пришел клиент.
* Связать обращение с конкретным посетителем сайта.
* Отследить эффективность разных каналов привлечения.

## Быстрая установка

1. Скопируйте следующий код.
2. Вставьте его на ваш сайт перед закрывающим тегом `</body>.`
3. Настройте.
4. Готово!

```html
<script>
window.olchatLinkModifier = {
  config: {
    messageTemplate: "Здравствуйте! Мой код запроса: {visit_id}",
    idSource: "ym",
    modifyWhatsApp: true,
    modifyTelegram: true,
    modifyB24Widget: true
  },
  visitorId: null,
  updateConfig: function(newConfig) {
    Object.assign(this.config, newConfig);
  }
};
!function(){const c=window.olchatLinkModifier.config;function w(i,m){if(!c.modifyWhatsApp)return;try{const s=encodeURIComponent(m.replace(/{visit_id}/g,i)),l=document.querySelectorAll('[href*="//wa.me"],[href*="//api.whatsapp.com/send"],[href*="//web.whatsapp.com/send"],[href^="whatsapp://send"]');for(let j=0;j<l.length;j++)try{const a=l[j],u=new URL(a.href);a.href=u.origin==="https://wa.me"?`${u.protocol}//${u.host}${u.pathname}?text=${s}`:u.protocol==="whatsapp:"?`${u.protocol}${u.host}${u.pathname}?phone=${u.searchParams.get('phone')||''}&text=${s}`:`${u.protocol}//${u.host}${u.pathname}?phone=${u.searchParams.get('phone')||''}&text=${s}`}catch(e){}}catch(e){console.error('[OLChat] WhatsApp error:',e)}}function t(i){if(!c.modifyTelegram)return;try{const l=document.querySelectorAll('[href*="//t.me"],[href^="tg://resolve"]');for(let j=0;j<l.length;j++)try{const a=l[j],u=new URL(a.href);a.href=u.origin==="https://t.me"?`${u.protocol}//${u.host}${u.pathname}?start=${i}`:u.protocol==="tg:"?`${u.protocol}${u.host}${u.pathname}?domain=${u.searchParams.get('domain')||''}&start=${i}`:a.href}catch(e){}}catch(e){console.error('[OLChat] Telegram error:',e)}}function b(i){if(!c.modifyB24Widget)return;let a=0;const b24w=setInterval(()=>{a++;try{const l=document.querySelector('[data-b24-crm-button-widget=openline_olchat_wa_connector_2]');l?(clearInterval(b24w),l.href=l.href.replace(/\{visit_id\}/g,i)):a>=20&&clearInterval(b24w)}catch(e){console.error('[OLChat] B24 error:',e),clearInterval(b24w)}},250)}function g(){try{let id=null;switch(c.idSource){case"ym":const y=document.cookie.match(/_ym_uid=([^;]+)/);if(y){id=y[1];break}const d=document.cookie.match(/_ym_d=([^;]+)/);if(d){id=d[1];break}break;case"ga":const ga=document.cookie.match(/_ga=GA\d\.\d\.(\d+\.\d+)/);if(ga)id=ga[1];break;case"roistat":const r=document.cookie.match(/roistat_visit=([^;]+)/);if(r)id=r[1];break;case"calltouch_site_id":if(typeof window.ct==="function")try{const p=window.ct("calltracking_params");if(p&&p[0]&&p[0].siteId)id=p[0].siteId}catch(e){}break;case"calltouch_session_id":if(typeof window.ct==="function")try{const p=window.ct("calltracking_params","mod_id");if(p&&p[0]&&p[0].sessionId)id=p[0].sessionId}catch(e){}break}return id}catch(e){console.error('[OLChat] ID error:',e);return null}}let attempts=0;const init=setInterval(()=>{attempts++;if(document.readyState==="complete"||attempts>=40){clearInterval(init);setTimeout(()=>{const visitorId=g();if(visitorId){window.olchatLinkModifier.visitorId=visitorId;w(visitorId,c.messageTemplate);t(visitorId);b(visitorId);console.log('[OLChat] Initialized with visitor ID:',visitorId)}else console.error('[OLChat] No visitor ID found - check analytics setup')},500)}},250);console.log('[OLChat] Loaded, waiting for page ready...')}();
</script>
```

## Настройка

### Основные настройки

* **Шаблон сообщения**: Измените текст, который автоматически подставляется в WhatsApp.
* **Источник ID**: Выберите, откуда брать идентификатор (Calltouch, Roistat, Яндекс.Метрика или Google Analytics).
* **Выбор мессенджеров**: Включите или отключите подстановку ID для разных типов ссылок и для виджета Битрикс24.

### Измените текст сообщения

Измените параметр `messageTemplate` в конфигурации:

```
messageTemplate: "Добрый день! Интересует ваш товар. Мой код: {visit_id}"
```

{% hint style="info" %}
Текст сообщения должен совпадать с текстом указанным в настройках приложения Олчат.
{% endhint %}

### Укажите источник кода аналитики

```
idSource: "источник кода аналитики",
```

| Система аналитики    | idSource               |
| -------------------- | ---------------------- |
| Яндекс.Метрика       | `ym`                   |
| Roistat              | `roistat`              |
| Calltouch Session ID | `calltouch_session_id` |
| Calltouch Site ID    | `calltouch_site_id`    |
| Google Analytics     | `ga`                   |

## Параметры подстановки текста в ссылки

### Параметр modifyWhatsApp

Отвечает за модификацию всех видов ссылок WhatsApp на сайте:

* Ссылки вида `https://wa.me/+79001234567`
* Ссылки вида `https://api.whatsapp.com/send?phone=79001234567`
* Ссылки вида `whatsapp://send?phone=79001234567`

При установке `modifyWhatsApp: true` скрипт добавляет идентификатор посетителя в параметр `text` этих ссылок.

### Параметр modifyTelegram

Отвечает за модификацию всех ссылок Telegram на сайте:

* Ссылки вида `https://t.me/username`
* Ссылки вида `tg://resolve?domain=username`

При установке `modifyTelegram: true` скрипт добавляет идентификатор посетителя в параметр `start` этих ссылок.

### Параметр modifyB24Widget

Отвечает за модификацию ссылок WhatsApp в виджете Битрикс24. Если на сайте используется стандартный виджет Битрикс24, то при установке `modifyB24Widget: true` скрипт найдёт кнопку WhatsApp и добавит в неё идентификатор посетителя.

## Проверка работы

### Визуальная проверка

После установки скрипта:

1. Откройте ваш сайт.
2. Нажмите на кнопку WhatsApp или Telegram.
3. В открывшемся диалоге проверьте текст сообщения — в нем должен быть ваш уникальный идентификатор.

### Проверка через консоль браузера

Вы можете проверить работу скрипта через консоль браузера:

1. Откройте ваш сайт.
2. Нажмите F12 (или Cmd+Option+I на Mac) для открытия инструментов разработчика.
3. Перейдите во вкладку «Console» (Консоль).
4. Выполните следующие команды для проверки:

```javascript
javascriptCopy// Проверка получения ID посетителя
console.log("ID посетителя:", window.olchatLinkModifier.visitorId);

// Проверка всех настроек скрипта
console.log("Конфигурация:", window.olchatLinkModifier.config);

// Проверка ссылок WhatsApp (если есть на странице)
document.querySelectorAll('[href*="wa.me"], [href*="whatsapp.com"]').forEach(link => {
  console.log("WhatsApp ссылка:", link.href);
});

// Проверка ссылок Telegram (если есть на странице)
document.querySelectorAll('[href*="t.me"]').forEach(link => {
  console.log("Telegram ссылка:", link.href);
});
```

Если скрипт работает корректно, вы увидите ID посетителя и ссылки мессенджеров с добавленными параметрами.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.olchat.io/capabilities/peredacha-parametrov-analitiki/olchat-link-modifier-avtomaticheskaya-podstanovka-id-posetitelya-v-ssylki-messendzherov.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
