К интеграциям
Документация интеграции

Лиды из 1С + события follow-up обратно

1С-коннектор CloseFlow принимает новые заявки, клиентов и заказы из любой конфигурации 1С (УНФ / УТ / CRM / custom) через HTTP-запрос, запускает follow-up автопилот в CloseFlow и возвращает события (ответ клиента, смена статуса, нарушение SLA, передача в CRM, остановка автоматизаций) обратно в 1С подписанными webhook'ами. Это не полная ERP-синхронизация - никакой бухгалтерии, склада, счётов и документов.

Webhook endpoint

POSThttps://closeflow.ru/api/v1/webhooks/leads

Аутентификация: заголовок X-Api-Key или query-параметр ?api_key=. Получить ключ - в Настройках.

Шаги настройки

01

1. Получите API-ключ CloseFlow

В CloseFlow откройте Настройки → API-ключи → «Создать ключ». Скопируйте полное значение (cf_live_…) - оно показывается один раз.

02

2. Отправляйте лиды из 1С на endpoint

Из обработки документа (например, «Заказ покупателя» или «Заявка клиента») в 1С сделайте HTTPS POST на well-known endpoint CloseFlow. Передавайте externalId (GUID документа) - повторные отправки того же documents не создадут дубль.

POST https://closeflow.ru/api/v1/webhooks/1c/leads
X-Api-Key: cf_live_xxxxxxxxxxxxxxxx
X-Idempotency-Key: <GUID документа из 1С>
Content-Type: application/json

{
  "externalId": "1c-doc-guid-123",
  "source": "1C:УНФ",
  "name": "Иван Петров",
  "phone": "+7 999 000 00 00",
  "email": "ivan@example.com",
  "company": "ООО Ромашка",
  "comment": "Заявка из 1С",
  "status": "NEW",
  "managerEmail": "manager@company.ru",
  "amount": 150000,
  "metadata": {
    "configuration": "1C:UNF",
    "documentType": "ЗаказПокупателя",
    "documentNumber": "00000123"
  }
}
03

3. Пример кода на встроенном языке 1С

Минимальный скрипт: создаёт HTTPS-соединение, формирует JSON-тело и шлёт POST. Подставьте свой API-ключ.

// 1С (встроенный язык) - отправка лида в CloseFlow

HTTPСоединение = Новый HTTPСоединение(
    "closeflow.ru", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());

Запрос = Новый HTTPЗапрос("/api/v1/webhooks/1c/leads");
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Запрос.Заголовки.Вставить("X-Api-Key", "cf_live_ВАШ_КЛЮЧ");
Запрос.Заголовки.Вставить("X-Idempotency-Key",
    Строка(Ссылка.УникальныйИдентификатор()));

Тело = Новый Структура;
Тело.Вставить("externalId", Строка(Ссылка.УникальныйИдентификатор()));
Тело.Вставить("source", "1C:УНФ");
Тело.Вставить("name", Клиент.Наименование);
Тело.Вставить("phone", Телефон);
Тело.Вставить("email", Email);
Тело.Вставить("company", Компания);
Тело.Вставить("comment", Комментарий);
Тело.Вставить("amount", СуммаДокумента);

ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку();
ЗаписатьJSON(ЗаписьJSON, Тело);
JSONСтрока = ЗаписьJSON.Закрыть();

Запрос.УстановитьТелоИзСтроки(JSONСтрока, КодировкаТекста.UTF8);
Ответ = HTTPСоединение.ВызватьHTTPМетод("POST", Запрос);

Если Ответ.КодСостояния = 201 Или Ответ.КодСостояния = 200 Тогда
    Сообщить("Лид отправлен в CloseFlow");
Иначе
    Сообщить("Ошибка: " + Ответ.КодСостояния + " - " + Ответ.ПолучитьТелоКакСтроку());
КонецЕсли;
04

4. Включите outbound и укажите callback URL

В CloseFlow откройте «Интеграции → 1С» и заполните Callback URL вашего 1С HTTP-сервиса. Нажмите «Сгенерировать секрет» - это HMAC-ключ, которым CloseFlow подписывает каждое исходящее событие. Сохраните секрет в 1С: показывается только один раз.

05

5. Принимайте события на стороне 1С

CloseFlow шлёт POST с заголовками X-CloseFlow-Event, X-CloseFlow-Timestamp, X-CloseFlow-Delivery-Id и X-CloseFlow-Signature: sha256=<hex>. База подписи: timestamp + '.' + raw_body. Проверка на стороне 1С - псевдокод:

// HTTP-сервис /hs/closeflow/events
// 1) прочитать заголовки X-CloseFlow-*
// 2) убедиться, что |now - timestamp| <= 300 (защита от replay)
// 3) вычислить HMAC-SHA256(secret, timestamp + "." + body)
// 4) сравнить в константном времени с подписью из заголовка

// 5) разбор события:
Если Event = "REPLY_RECEIVED" Тогда
    // Клиент ответил - пометить документ в 1С: «лид ответил»
ИначеЕсли Event = "SLA_BREACHED" Тогда
    // Нарушение SLA - задача менеджеру в 1С
ИначеЕсли Event = "HANDED_OFF" Тогда
    // Лид передан в CRM - обновить статус документа
КонецЕсли;

// Ответьте HTTP 200 с пустым телом, чтобы CloseFlow зафиксировал доставку
06

6. Партнёрская программа для интеграторов

Если вы 1С-интегратор и подключаете CloseFlow клиентам - у нас есть отдельная партнёрская программа с revenue-share. Подробности на странице для 1С-интеграторов.

Если что-то не так

Что делать, если 1С отдаёт поля под другими именами?

В CloseFlow → Интеграции → 1С → «Соответствие полей» опишите JSON-маппинг (ключ - каноническое поле, значение - путь в исходном JSON через точку). Пример: { "name": "Контрагент.Наименование" }.

Дублируются ли лиды при повторной отправке документа?

Нет. Передавайте X-Idempotency-Key (GUID документа) - повторные отправки вернут 200 с тем же leadId. Дополнительный dedupe по email тоже включён.

Что значит «Лид зарегистрирован, но менеджер не назначен»?

Поле managerEmail должно соответствовать email пользователя в этом workspace CloseFlow. Если такого пользователя нет, лид остаётся не назначенным.

Callback не приходит - что проверить?

Откройте Интеграции → 1С → «История доставок». Проверьте статус, ошибку и кнопку «Повторить». Самые частые причины - недоступный URL, неверный секрет, 4xx-ответ от 1С (он считается non-retryable).

На production callback URL должен быть https?

Да. И не должен указывать на localhost или private IP - CloseFlow заблокирует доставку как защита от SSRF. Для тестов из локальной 1С используйте ngrok / cloudflared / proxy с публичным доменом.

Документация провайдера

Другие интеграции

CloseFlow - Follow-up Autopilot