ГлавнаяДокументация

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

Всё для работы с CourierFlow — от первой доставки до глубоких интеграций.

Быстрый старт

Запустите управление доставками за 5 минут:

1

Зарегистрируйтесь

Перейдите на courierflow.ru/auth/register и создайте аккаунт. Первый пользователь автоматически получает роль owner и организацию.
2

Настройте зоны доставки

Перейдите в Зоны → нарисуйте полигон на карте → задайте название и тарифы.
3

Добавьте курьеров

Раздел Курьеры → Новый курьер — укажите ФИО, телефон, транспорт, марку.
4

Создайте первую доставку

Доставки → Новая — введите адрес получателя, дату и время. Система автоматически подберёт ближайшего свободного курьера.
5

Отслеживайте на карте

Откройте Карту — курьеры отображаются в реальном времени. Клиенты получат трекинг-ссылку по SMS.

Создание первой доставки

Каждая доставка содержит:

  • Адрес получателя — с автокомплитом (DaData / Photon)
  • Контактные данные — имя, телефон получателя
  • Адрес забора (опционально) — если курьер забирает со склада
  • Временное окно — дата и интервал доставки
  • Вес, описание, теги — для фильтрации и аналитики

При создании доставка получает статус created и уникальный трекинг-токен для клиента.

Пример через API
curl -X POST https://courierflow.ru/api/v1/deliveries \
  -H "Authorization: Bearer cf_live_XXXXXXXX..." \
  -H "Content-Type: application/json" \
  -d '{
    "deliveryAddress": "ул. Ленина, 42, кв. 7",
    "deliveryContact": "Иван Петров",
    "deliveryPhone": "+79001234567",
    "scheduledDate": "2026-02-10",
    "weight": 2.5,
    "tags": ["fragile", "food"]
  }'

Подключение курьеров

Профиль курьера включает:

  • ФИО, телефон, email
  • Тип транспорта — пешком, велосипед, мотоцикл, автомобиль, грузовой
  • Марка и номер ТС — с быстрым выбором популярных марок
  • Паспортные данные — серия/номер, дата выдачи, кем выдан
  • Статус — онлайн, оффлайн, на маршруте, на перерыве

Курьерам доступно мобильное приложение по адресу /courier/* с маршрутом, списком доставок, подтверждением доставки (фото, подпись).


Статусы доставок (State Machine)

Каждая доставка проходит через конечный автомат статусов:

createdСозданаЗаказ зарегистрирован в системе
plannedЗапланированаВключена в план на дату
assignedНазначенаПривязана к курьеру
en_routeВ путиКурьер выехал
arrivedПрибылКурьер на месте
deliveredДоставленаКлиент подтвердил получение
failedОшибкаНе удалось доставить
canceledОтмененаОтменена оператором или клиентом

Допустимые переходы контролируются сервером — нельзя перевести из delivered обратно.

Допустимые переходы
created   → planned, assigned, canceled
planned   → assigned, canceled
assigned  → en_route, canceled
en_route  → arrived, failed
arrived   → delivered, failed
failed    → created, assigned    (повторная попытка)
canceled  → created              (переоткрытие)

Импорт из CSV

Массовое создание доставок через CSV-файл:

1

Подготовьте файл

Столбцы: address, contact, phone, date, time_from, time_to, weight, description.
2

Загрузите в систему

Доставки → Импорт — перетащите файл или выберите вручную.
3

Проверьте и подтвердите

Система покажет превью строк, подсветит ошибки (невалидные адреса, пустые поля). Подтвердите импорт.
Пример CSV
address,contact,phone,date,weight,description
"ул. Ленина, 42",Иван Петров,+79001234567,2026-02-10,2.5,Хрупкий груз
"пр. Мира, 15/2",Анна Сидорова,+79007654321,2026-02-10,0.3,Документы

Карта и зоны доставки

CourierFlow использует OpenStreetMap + Leaflet для отображения карты. Не требует API-ключей Google Maps.

Живая карта

  • Отображение всех курьеров в реальном времени
  • Маркеры доставок с цветовой индикацией статуса
  • Кластеризация при большом количестве точек

Зоны доставки

  • Рисование полигонов на карте для зон
  • Привязка тарифов и курьеров к зонам
  • Автоматическое определение зоны по адресу

Оптимизация маршрутов

Модуль оптимизации использует OSRM (self-hosted) для построения оптимальных маршрутов:

  • VRP-solver — распределяет доставки между курьерами с учётом загрузки и зон
  • Временные окна — учитывает requested time windows
  • Drag-and-drop — ручная корректировка порядка
  • Пересчёт в реальном времени — при добавлении новых заказов

Доступен на тарифе Pro и выше.


Роли и права доступа

В системе 5 ролей с разным уровнем доступа:

РольДоставкиКурьерыНастройкиБиллинг
owner✅ всё✅ всё✅ всё
admin✅ всё✅ всё✅ всё
dispatcher✅ CRUD✅ назначение
courier📦 свои📍 своя позиция
viewer👁 чтение👁 чтение

Первый зарегистрированный пользователь автоматически получает роль owner.


Генерация API-ключей

API-ключи нужны для интеграции через REST API v1.

1

Откройте настройки

Настройки → секция «API-ключи» → «Создать».
2

Скопируйте ключ

Ключ формата cf_live_XXXXXXXX... показывается только один раз. Сохраните его в безопасном месте.
3

Используйте в заголовке

Передавайте ключ в каждом API-запросе.
Использование ключа
curl -H "Authorization: Bearer cf_live_UIBujy5g..." \
  https://courierflow.ru/api/v1/deliveries

Безопасность ключей

  • Хранятся как SHA-256 хеш — даже при утечке БД ключ не восстановить
  • Управлять ключами могут только owner и admin
  • Каждый ключ имеет настраиваемый rate limit (по умолчанию 60 req/min)
  • Можно отозвать ключ мгновенно без удаления

REST API v1 — Обзор

Полный REST API для управления доставками и курьерами программно.

GET/api/v1/deliveries
POST/api/v1/deliveries
GET/api/v1/deliveries/:id
PATCH/api/v1/deliveries/:id
GET/api/v1/couriers
POST/api/v1/couriers
GET/api/v1/couriers/:id
PATCH/api/v1/couriers/:id

Подробная документация с примерами request/response: API Reference →


Настройка Webhook-ов

Webhook-и позволяют получать уведомления о событиях в реальном времени.

1

Создайте endpoint

Webhooks → «Добавить» → укажите URL вашего сервера.
2

Выберите события

delivery.created, delivery.completed, delivery.failed, courier.location, delivery.* (все).
3

Проверьте подпись

Каждый webhook подписан HMAC-SHA256. Ваш secret показан при создании endpoint.
Проверка подписи (Node.js)
const crypto = require('crypto');

function verifyWebhook(body, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(JSON.stringify(body))
    .digest('hex');
  return signature === expected;
}

// В Express:
app.post('/webhook', (req, res) => {
  const sig = req.headers['x-webhook-signature'];
  if (!verifyWebhook(req.body.payload, sig, SECRET)) {
    return res.status(401).send('Invalid signature');
  }
  console.log('Event:', req.body.event);
  res.sendStatus(200);
});

Retry-политика

  • 3 попытки с экспоненциальной задержкой: 1с → 5с → 15с
  • Таймаут ответа — 10 секунд
  • Логи всех доставок доступны в панели Webhooks

Аналитика

Раздел Аналитика содержит:

  • Доставки по месяцам — визуальный bar chart с трендом
  • SLA (% вовремя) — метрика качества доставок
  • Среднее время доставки — с разбивкой по курьерам
  • Топ курьеров — рейтинг по количеству и качеству
  • Причины отказов — для анализа проблем

Зарплата курьеров

Модуль автоматического расчёта выплат (доступен на тарифе Pro+):

  • Ставка за доставку — фиксированная + бонус за скорость
  • Почасовая оплата — по данным смен
  • Бонусы/штрафы — ручные корректировки
  • Период расчёта — неделя, 2 недели, месяц
  • Экспорт ведомости — PDF и CSV для бухгалтерии

Настройте правила в Зарплата → «Правила расчёта».


Уведомления

Типы уведомлений в системе:

  • Email — сводки, алерты о проблемах, приглашения
  • SMS — трекинг-ссылки клиентам (через SMS.ru или SMSAero)
  • Push (браузер) — мгновенные уведомления диспетчерам
  • Webhook — для автоматизации через внешние системы

Настройка уведомлений доступна в Настройки → «Уведомления».


Двухфакторная аутентификация (2FA)

CourierFlow поддерживает 2FA через приложения-аутентификаторы (Google Authenticator, Authy):

1

Включите 2FA

Настройки → Безопасность → «Включить 2FA».
2

Сканируйте QR-код

Приложение сгенерирует 6-значный код.
3

Подтвердите

Введите код для активации. При каждом входе система запросит код.

Дополнительная безопасность

  • HSTS — принудительный HTTPS
  • HMAC-SHA256 — подпись webhook-ов
  • SHA-256 — хеширование API-ключей
  • Rate limiting — защита от DDoS (200 req/min per IP)
  • RBAC — ролевая модель доступа

SDK и интеграции

Для быстрой интеграции используйте готовые инструменты:

JavaScript / TypeScript

npm install courierflow
import { CourierFlow } from 'courierflow';

const cf = new CourierFlow({ apiKey: 'cf_live_...' });

// Создать доставку
const delivery = await cf.deliveries.create({
  deliveryAddress: 'ул. Ленина, 42',
  deliveryContact: 'Иван Петров',
});

// Получить список
const list = await cf.deliveries.list({ page: 1, limit: 20 });

Python

pip install courierflow
from courierflow import CourierFlow

cf = CourierFlow(api_key="cf_live_...")

# Создать доставку
delivery = cf.deliveries.create(
    delivery_address="ул. Ленина, 42",
    delivery_contact="Иван Петров",
)

# Получить список
deliveries = cf.deliveries.list(page=1, limit=20)

Интеграция с 1С / Bitrix24

Готовые модули обмена данными для 1С:Управление торговлей и Bitrix24 CRM доступны по запросу. Напишите нам.

Не нашли ответ?

Напишите в поддержку — ответим в течение часа