> Усі статті WIKI Helomi: /wiki/llms.txt

# Сайти (WooCommerce та інші): акаунти, поля, вебхук

Інтеграція «Сайти» приймає замовлення з ваших інтернет-магазинів на WooCommerce прямо в «Угоди». Кожен сайт — окрема картка зі своїм перемикачем, адресою вебхука, джерелом, відповідальним, мапою статусів, мапінгом полів і журналом. Найпростіше підключення — замінити на сайті адресу вебхука на «Вебхук url» з картки: поля вже зв'язані, перше замовлення саме ввімкне картку.

## Можливості
- Окрема картка на кожен сайт (акаунт каналу «Сайти»); стільки сайтів, скільки потрібно.
- «Вебхук url» з токеном в адресі — підпис і секрет не потрібні; тіло — JSON або форма.
- Вебхук WooCommerce з підписом (теми «Замовлення створено» і «Замовлення оновлено») і секретом.
- Вкладка «Поля»: «зовнішня назва поля → поле CRM» для контрагента, угоди й товарів, «Як у KeepinCRM».
- «Історія запитів акаунту»: що прийшло, що створено, які поля пропущено; «Перевірити мапінг», «Обробити ще раз».
- Повтор того самого замовлення не створює дубля; наявний клієнт за телефоном чи email дозаповнюється.
- Мапа статусів WooCommerce → етап, автоматична ТТН, фід товарів, оновлення товарів на сайтах.
- Спільна картка «Усі сайти (WooCommerce)»: чат із сайтів, фід, «усі сайти разом».

## 1. Налаштування
Підключає адміністратор. Дорога: «Налаштування» → «Інтеграції» → вкладка «Сайти» → картка сайту (підписана доменом, напр. «shop.com.ua»).

У картці сайту три вкладки:
- **«Підключення»** — перемикач «Інтеграція» (приймати замовлення цього сайту в угоди; зберігається в базі), «Секрет підпису вебхука» (потрібен лише для адреси з підписом), «Логотип» («Завантажити», «Взяти з сайту», «Стандартний»), блок «Вебхук» з «Вебхук url» і «Адреса з підписом» (кнопки «Скопіювати»), «Стан роботи», «Журнал подій», «Останні запити від сайту», «Прибрати акаунт».
- **«Поля»** — мапінг полів і «Історія запитів акаунту» (розділи 4–5).
- **«Налаштування продажів»** — «Основне» (перемикач, «Назва», «Компанія», «Джерело угод», «Відповідальний»), «Нові замовлення», «Вебхук url», «Пов'язані статуси», «Автоматична відправка ТТН», «Фід для маркетплейсу».

Спільна картка **«Усі сайти (WooCommerce)»** у тій самій вкладці: блок «Сайти» (список усіх сайтів зі станом і «+ Додати сайт»), ключ «Сайти чату (slug:Назва:ключ, через кому)» для чату з сайту, «Стан роботи» з оновленням товарів. Її перемикач — «приймати замовлення з усіх сайтів разом»; коли він увімкнений, перемикачі окремих сайтів сайт не вимикають.

Джерело угод за замовчуванням — назва компанії сайту; бренд угоди визначається за цією назвою (профіль у «Налаштування → Компанії та реквізити»). Юрособа — правилом «Налаштування → Бренди та юрособи → Правила» з умовою «Канал (картка «Інтеграцій»)».

## 2. Підключити сайт через «Вебхук url»
1. Картка сайту → вкладка «Поля» → блок «Вебхук url» → «Адреса для сайту» → «Скопіювати».
2. На сайті замініть адресу вебхука KeepinCRM (`https://api.keepincrm.com/callbacks/webhook/…`) на цю. Тіло запиту лишається тим самим — поля вже зв'язані.
3. Зробіть тестове замовлення на сайті.
4. Перший справжній запит сам вмикає картку сайту (один раз; якщо вимкнули вручну — далі діє перемикач). «Стан» покаже, коли адресу активовано.
5. Перевірте «Історію запитів акаунту» і нову угоду в «Угодах».

«Нова адреса» генерує новий токен: стара адреса перестане приймати замовлення, її треба замінити на сайті.

## 3. Підключити через вебхук WooCommerce з підписом
1. «Підключення» → «Секрет підпису вебхука» → «Ввести» → придумайте секрет → «Зберегти ключ».
2. На сайті: WooCommerce → Налаштування → Додатково → Вебхуки → два вебхуки на «Адресу з підписом» з картки: теми «Замовлення створено» і «Замовлення оновлено», секрет — той самий.
3. Увімкніть перемикач «Інтеграція» картки сайту.

Поки сайт підключений до KeepinCRM, перемикач лишайте вимкненим, інакше замовлення прийде двічі. Пінг WooCommerce при створенні вебхука записується в історію як «пінг WooCommerce».

## 4. Поля контрагента, угоди і товарів
Вкладка «Поля»:
- **«Поля контрагента»**: «Тип контрагента» (Клієнт / Лід), «Головний відповідальний», «Джерело», «Статус» (номер статусу контрагента з KeepinCRM), «Теги» (через кому) і таблиця «Зовнішня назва поля» → «Helomi: поля контрагента».
- **«Поля угоди»**: «Етап» (якщо статус замовлення не знайшовся в мапі статусів) і таблиця «змінна → поле угоди»: назва, коментар, ID замовлення, статус, тип оплати, сума, знижка, теги, доставка (служба, місто, відділення, адреса, отримувач, телефон, ТТН, післяплата), додаткові поля.
- **«Поля товарів»**: «Масив товарів *» (напр. `line_items`), «Артикул», «Назва», «Кількість», «Знижка (необов'язково)»; «Ціна товару передається в копійках» (сайт шле 12500 замість 125.00), «Тип знижки».

«+ Додати» — новий рядок, «Прибрати рядок» — прибрати. Змінні пишуться так само, як у вхідних вебхуках: `a.b`, `a[].b`, `{{a}} {{b}}`, `/текст/`. «Як у KeepinCRM» повертає початкове заповнення. «Зберегти» / «Скасувати зміни» — у панелі внизу. Змінювати поля може лише адміністратор.

Чого нема в запиті, береться зі стандартного розбору WooCommerce (billing, line_items). Значення, яке не підходить під тип додаткового поля, замовлення не зупиняє: поле пропускається, причина — в історії й журналі.

## 5. Історія запитів: перевірити й обробити ще раз
«Поля» → «Історія запитів акаунту» (до 200 останніх запитів): «Дата», «Клієнт», угода, «Помилки», «Відповідь», тіло («показати»).
- «Змінні» — назви полів запиту з прикладами; клік вставляє змінну в рядок полів, де стоїть курсор.
- «Перевірити мапінг» — показує, що вийде, нічого не створюючи.
- «Обробити ще раз» — обробляє запит за поточними полями: угода створиться або оновиться, дубля не буде.
- «Оновити» — перечитати історію.

## 6. Налаштування продажів сайту
- «Пов'язані статуси»: статус WooCommerce (Очікує оплати, В обробці, Утримується, Виконано, Скасовано, Повернено кошти, Не вдалося) → етап угоди. Передавати статус назад на сайт поки не можна.
- «Автоматична відправка ТТН»: етапи й служба доставки.
- «Зв'язувати товари по»: артикул, ID маркетплейсу або назва.
- «Фід для маркетплейсу»: «Фід каналу з прайс-листа» (`/feed/channel/sites-<slug>.xml` — товари саме цього сайту з його id, ціною з прайс-листа і залишком зі складу) і фід усього складу `/feed/all.xml`. З 14.10 у налаштуваннях імпорту товарів на сайті адресу фіду KeepinCRM замінюють на фід каналу (робить власник).

## 7. Додати чи прибрати сайт
1. Картка «Усі сайти (WooCommerce)» → блок «Сайти» → «+ Додати сайт».
2. «Компанія» (джерело угод сайту) і «Домен сайту» (з нього складеться адреса вебхука) → «Додати сайт».
3. Відкриється картка нового сайту, вимкнена. Далі — розділ 2 або 3.

Прибрати: картка сайту → «Підключення» → «Прибрати». Угоди лишаються; зникають секрет, налаштування, журнал і історія запитів.

## 8. Побачити, що клієнт оплатив на сайті
Коли клієнт платить карткою на сайті, скасовує несплачене замовлення чи отримує гроші назад, сайт сам оновлює угоду: поле «Статус оплати:», нотатку «Сайт <домен>: статус оплати — …» з деталями оплати і рядок «Оплата: …» у коментарі угоди.

1. Відкрийте угоду сайту — її назва починається з префікса сайту, напр. «PP-453».
2. У «Даних угоди» подивіться рядок «Коментар»: «Оплата: Оплачено (Monobank · Apple Pay · … · 719,00 ₴ · статус success · RRN … · рахунок …)».
3. Ті самі деталі — у нотатці «Сайт <домен>: статус оплати — Оплачено» у стрічці праворуч.

Статуси оплати: «Оплачено», «Очікує оплати», «Не оплачено», «При отриманні», «Повернено». Решта коментаря (коментар покупця, юрособа, набори) не змінюється, а зміну видно в журналі угоди від імені «Сайт». Коментар угод з Telegram, який пише ШІ Едуард, статус оплати не переписує.

> [!NOTE]
> ШІ Олесь бере оплату угоди сайту з цього рядка: «Оплата: Оплачено» — угода оплачена, Олесь створює ТТН і передає її на збірку. У «Фінанси» оплата сама не проводиться, тож «Сплачено» в угоді лишається 0, доки платіж не внесуть.

## Можливі помилки
| Що ви бачите | Чому | Що зробити |
| --- | --- | --- |
| «пропущено: …» в «Останніх запитах від сайту» | Перемикач сайту вимкнено | Увімкніть «Інтеграція» в картці сайту |
| «Невірний підпис вебхука» (відповідь сайту 403) | Секрет на сайті й у картці різний | Введіть однаковий секрет або перейдіть на «Вебхук url» |
| «Невідома адреса вебхука» (404) | Адресу замінили кнопкою «Нова адреса» або сайт прибрано | Скопіюйте актуальну адресу з картки |
| «Очікую замовлення (JSON-об'єкт або форму)» | Сайт надіслав порожнє чи інше тіло | Перевірте налаштування вебхука на сайті |
| В історії поле пропущено з причиною | Значення не підходить під тип додаткового поля | Виправте рядок у «Полях», «Зберегти», «Обробити ще раз» |
| Замовлення прийшло двічі | Сайт ще шле і в KeepinCRM, і з підписом, і на «Вебхук url» | Залиште одну адресу |
| Клієнт оплатив, а «Сплачено» в угоді 0 | Оплата з сайту лише позначає угоду оплаченою, у «Фінанси» вона сама не проводиться | Дивіться «Оплата: …» у коментарі угоди; платіж у «Фінанси» вносить людина |

## Для ШІ-співробітників
5`). ШІ бачить результат у «Угодах» (`deals_list`, `deals_get`): джерело (назва компанії сайту), поле `sites_order_id` (`<slug>:<номер>`) і акаунт сайту (`crm_integration`, напр. `sites-pocoprint`). Оплату на сайті ШІ бачить у полі «Статус оплати:» (`status_oplati_946`) і в рядку «Оплата: …» коментаря угоди. Статтю ШІ читає інструментом `help("int-sites")`.

## Додаткова інформація
- Пов'язані статті: [Угоди](deals.md), [Вебхуки](int-webhook.md), [Склад і товари](products.md).
