Встраиваемые компоненты позволяют добавить реферальные и партнёрские функции в продукт, не строя их с нуля. Пользователи логинятся в ваше приложение как обычно; на сервере вы выпускаете short-lived embed-токен; React-компонент рендерит соответствующий UI RevRoute прямо на вашей странице — оформленный под ваш бренд.
Что можно встроить
| Компонент | Что показывает |
|---|---|
| Реферальный дашборд | Заработок партнёра, его ссылка, статистика кликов/лидов/продаж, история выплат. Используется внутри SaaS-кабинетов для вкладки “Приведи друга”. |
Больше компонентов (аналитика, каталог партнёров, инбокс баунти) — в roadmap. Эта страница — entry-point; единственный сегодня доступный embed описан в Реферальном дашборде.
Архитектура
Пользователь логинится в ваше приложение
Ваша существующая авторизация — RevRoute здесь невидим.
Бэкенд выпускает embed-токен
Вызывает POST https://api.revroute.ru/tokens/embed/referrals с workspace-API-ключом и идентификатором партнёра. В ответ — short-lived JWT (dub_embed_...), привязанный к одному этому партнёру.
Фронтенд монтирует компонент
Передайте токен в <DubEmbed /> из @dub/embed-react. Компонент рендерит <iframe>, хостящийся у RevRoute, и автоматически логинит пользователя.
Компонент обновляется в реальном времени
Счётчики кликов, лидов и продаж обновляются по мере новых событий — ваш фронтенд не должен поллить.
Когда использовать embed, а когда API
| Хочу… | Использовать |
|---|---|
| Показать партнёру его собственный дашборд внутри моего приложения | Embed-компоненты |
| Построить полностью кастомный UI поверх своей модели данных | REST API |
| Отправить пользователя в хостящийся RevRoute партнёрский портал | Обычная ссылка на partners.revroute.ru |
Embed — самый быстрый путь: ноль работы над UI, темизация через props, автоматические обновления.
Модель безопасности
- Embed-токены per-partner и short-lived (~1 час). Они не могут читать данные других партнёров.
- Токены подписаны RevRoute и проверяются внутри iframe — ваш фронтенд никогда не получает долгоживущий секрет.
- iframe общается с родителем только через узкий
postMessage-протокол (resize-события, click-телеметрия). Никакого cross-origin доступа к данным. - Эндпоинт выдачи токена требует ваш server-side API-ключ — никогда не выставляйте его в браузер. Браузер видит только embed-токен.