Budvid

Інтеграції

Budvid поверх вашої CRM

Шахматку вже ведете в Google Таблиці чи CRM — другу вести не треба. Budvid бере звідти статуси й ціни, а заявки покупців надсилає у вашу CRM.

Сценарій 1 · без програміста

Google Таблиця → шахматка щогодини

Менеджери й далі працюють у своїй таблиці. Budvid раз на годину читає опублікований аркуш і оновлює статуси й ціни квартир у презентації.

  1. Опублікуйте аркуш. У Google Таблиці: Файл → Поділитися → Опублікувати в інтернеті. Оберіть аркуш із шахматкою, формат «CSV» — і натисніть «Опублікувати».
  2. Вставте посилання в кабінеті. Вкладка «Шахматка» → «Синхронізація з Google Таблицею» → «Підключити».
  3. Працюйте як звикли. Щогодини шахматка оновлюється сама. Потрібно швидше — кнопка «Оновити зараз», не частіше разу на 5 хвилин.
Прайс ЖК на 25.10
№СтатусЦіна, €Площа, м²
12вільна81 00057,6
13бронь79 50055,2
14продано84 00061,0
Рядок із назвою прайсу над шапкою не заважає.

Колонки

Як для імпорту з Excel: «№» або «Квартира», «Статус», «Ціна», «Площа» — українською чи англійською. Порядок колонок і зайві колонки не важливі.

Як пишуть люди

Квартира — «12», «кв. 12» чи «Квартира 12». Статуси — «вільна», «бронь», «продано» або available, reserved, sold. Ціни — «€ 81 000», «81 000,00», «81000».

Якщо щось не так

Кабінет покаже, що саме: посилання не з публікації, таблицю знято з публікації, не знайшлися колонки чи номери квартир.

Що бачать інші

Опубліковану таблицю може відкрити кожен, хто має посилання. Публікуйте аркуш лише зі статусами й цінами — без імен і телефонів покупців.

Сценарій 2 · для вашого програміста

Ваша CRM оновлює статуси й ціни через API

Квартиру продали чи забронювали в CRM — CRM одним запитом передає шахматку в Budvid, і покупці бачать зміни в презентації за ~15 секунд.

curl -X PUT "<API_URL>/v1/projects/<slug>/sales" \
  -H "Authorization: Bearer <API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"sales": [
        {"id": "flat-12", "status": "sold",      "price": 81000},
        {"id": "flat-13", "status": "reserved",  "price": 79500, "area": 57.6},
        {"id": "flat-14", "status": "available", "price": 84000}
      ]}'

Відповідь: {"saved": 3}. Поточну шахматку віддає та сама адреса методом GET.

ЩоЗначенняЗвідки взяти
<API_KEY>Ключ APIКабінет → «Тариф» → «Ключі API» → «Створити ключ». Ключ показується один раз. Ключі є в тарифах «ЖК», «Девелопер», «Агенція 100» і «Агенція 300».
<API_URL>Адреса сервісуКабінет → форма входу → «Або ключем API» → поле «Адреса сервісу».
<slug>Назва презентації в адресіbudvid.com/p/<slug> — посилання на опубліковану презентацію.
idКвартира чи будинокКолонка id у CSV із кабінету: вкладка «Шахматка» → «Завантажити CSV». Наприклад, flat-12.
statusavailable · reserved · soldВільна, бронь, продано.
priceЦіна цілим числом або nullУ валюті проєкту — вона обирається в профілі. null — без вашої ціни.
areaПлоща, м² — не обов’язковоВід 5 до 5000, з точністю до десятої. Без неї — площа з плану.

Список замінює шахматку цілком: передавайте всі квартири разом, до 3000 в одному запиті. Квартира, якої в списку немає, показується вільною.

Сценарій 3 · заявки

Заявки з презентації → ваша CRM

Покупець залишив заявку в 3D-презентації — Budvid одразу надсилає її на вашу адресу. Приклад: вхідний вебхук у вашій CRM — Bitrix24, KeyCRM, Binotel чи власна система.

  1. Створіть вебхук. Кабінет → «Вебхуки» → «Новий вебхук» → «HTTP (CRM)», адреса — https.
  2. Збережіть секрет. Його показуємо один раз; ним ваша сторона перевіряє підпис.
  3. Перевірте. Кнопка «Тест» надсилає подію webhook.test, а вкладка «Доставки» показує код відповіді вашого сервера.

Запит, який отримає ваша CRM

POST https://crm.example.com/hooks/budvid
Content-Type: application/json
X-Archviz-Event: lead.created
X-Archviz-Delivery: dlv_…
X-Archviz-Signature: t=1761400000,v1=5f2c…

{
  "id": "evt_…",
  "event": "lead.created",
  "created": 1761400000,
  "data": {
    "id": "lead_…",
    "project": "<slug>",
    "unit": "flat-12",
    "name": "Олена",
    "phone": "+380 67 123 45 67",
    "note": null,
    "lang": "uk",
    "created": 1761400000
  }
}

Перевірка підпису

v1 — HMAC-SHA256 у hex від рядка <t>.<тіло запиту> з вашим секретом. Відкидайте запити зі старим t — понад 5 хвилин.

// Node.js
import { createHmac, timingSafeEqual } from 'node:crypto';

function verify(rawBody, header, secret) {
  const p = Object.fromEntries(
    header.split(',').map((s) => s.split('=')));
  const age = Math.abs(Date.now() / 1000 - Number(p.t));
  if (!p.t || !p.v1 || age > 300) return false;
  const expected = createHmac('sha256', secret)
    .update(`${p.t}.${rawBody}`).digest('hex');
  return expected.length === p.v1.length &&
    timingSafeEqual(Buffer.from(expected), Buffer.from(p.v1));
}
// PHP
$body = file_get_contents('php://input');
$header = $_SERVER['HTTP_X_ARCHVIZ_SIGNATURE'] ?? '';
parse_str(str_replace(',', '&', $header), $p);
$ok = isset($p['t'], $p['v1'])
  && abs(time() - (int) $p['t']) <= 300
  && hash_equals(
       hash_hmac('sha256', $p['t'] . '.' . $body, $secret),
       $p['v1']);

Поля заявки

unit — id квартири, яку дивився покупець, або null; created — час у секундах Unix; lang — мова презентації.

Повтори

Доставлено — коли ваш сервер відповів 2xx за 10 секунд. Інакше повторюємо через 1 хв, 5 хв, 30 хв, 2 год і 12 год.

Без переадресацій

Запит іде тільки на ту адресу, яку ви вказали: переадресацію (3xx) не виконуємо — така відповідь вважається невдалою спробою.

Інші назви полів

Якщо CRM чекає свої поля, між Budvid і CRM ставлять невеликий обробник: він перевіряє підпис і перекладає поля у формат CRM.

Питання

Чи є готова інтеграція з Bitrix24, KeyCRM чи Binotel?

Готового модуля немає. Заявки приходять у CRM через вхідний вебхук або ваш обробник, а статуси й ціни CRM передає через API — як описано вище.

Можна підключити і таблицю, і API?

Шахматка одна: кожне оновлення — з таблиці, через API чи вручну в кабінеті — записується поверх попереднього. Оберіть одне джерело, щоб вони не перезаписували одне одного.

Як швидко покупці бачать зміни?

Через ~15 секунд після запису. З Google Таблиці записуємо щогодини або за кнопкою «Оновити зараз», через API — одразу після вашого запиту.

Чи бачать покупці мою таблицю?

Ні: у презентації — тільки статуси, ціни й площі квартир. Але опубліковану в Google таблицю може відкрити кожен, хто має посилання, тож не тримайте на тому аркуші даних покупців.

Допомогти з підключенням?

Напишіть, у чому ведете шахматку й заявки, — підкажемо, як з’єднати це з Budvid.