Отслеживание конверсий. Attribute every dollar to the click that earned it.
Вебхуки Stripe и Shopify проверяют подписи и связывают доход с исходной короткой ссылкой. Атрибуция кампании определяется автоматически.
- Server-side Stripe & Shopify attribution
- click_id passthrough — no client JS needed
- Revenue by link, campaign, day, platform
- Automatic HMAC signature verification
How it works
The click_id travels the entire funnel
A UUID is stamped at click time and passed through every step — URL parameter, session cookie, Stripe session, Shopify order — until the webhook fires and closes the attribution loop server-side. No client JavaScript is required for the attribution itself.
- Step 01
Click short link
elido.me/saleEdge stamps UUID v4
cid: a3f9c1… - Step 02
click_id attached
?elido_cid=a3f9c1…URL param + first-party cookie
cid: a3f9c1… - Step 03
User converts
client_reference_id=a3f9c1…Stripe session carries click_id
cid: a3f9c1… - Step 04
Webhook fires
checkout.session.completedRevenue attributed to originating link
cid: a3f9c1…
Integrations
Drop-in webhook receivers for Stripe and Shopify
Register the endpoint in your dashboard, paste the signing secret, and attribution starts flowing. HMAC signature verification happens before any payload is processed — spoofed webhooks are rejected before they touch your data.
Revenue dashboard
Revenue per link, per campaign, per day
Every short link gets a live revenue total — sum of all attributable conversion values through that link. Filter by campaign tag, date range, or platform. Export as CSV or stream to BigQuery via scheduled exports.
- Revenue per linkSummed conversion values, any currency, in the original denomination
- CVR over timeConversion rate time-series alongside click volume
- Forwarding to GA4 / Meta CAPIFanned out asynchronously after conversion is recorded
- DeduplicationIdempotent on click_id + event_name — double webhooks don't double-count
| Link | Clicks | Conv. | Revenue | CVR |
|---|---|---|---|---|
| elido.me/bfcm | 18,420 | 847 | €76,280 | 4.6% |
| elido.me/sale | 11,034 | 512 | €41,430 | 4.6% |
| elido.me/nl/shop | 8,901 | 398 | €29,104 | 4.5% |
| elido.me/email-q2 | 6,201 | 201 | €14,872 | 3.2% |
| elido.me/ig-bio | 5,032 | 88 | €6,104 | 1.7% |
What you can do
- Stripe checkout.session.completed
- Stripe payment_intent.succeeded
- Shopify orders/paid
- Атрибуция кампании, полученная из ссылки
- Сводка доходов в дашборде
Как работает сквозная серверная атрибуция конверсий
Клиентские пиксели теряют 20–40% конверсий из-за блокировщиков рекламы, ограничений конфиденциальности iOS и цепочек перенаправлений. Серверная атрибуция устраняет этот разрыв.
Каждый клик получает UUID, передаваемый в пункт назначения — якорь атрибуции для сопоставления конверсий
Когда пользователь нажимает на короткую ссылку Elido, пограничный сервер генерирует click_id (UUID v4) и добавляет его в качестве параметра запроса (elido_cid) к URL назначения. Ваш процесс оформления заказа должен сохранять этот параметр на каждой странице воронки — большинство роутеров SPA и стеков с серверным рендерингом пересылают неизвестные параметры запроса по умолчанию, но многоэтапные процессы оформления с цепочками редиректов могут их удалять. click_id также сохраняется в сессионных cookie на домене назначения, если вы вставите фрагмент кода атрибуции Elido (2 КБ, необязательно). Протестируйте процесс оформления заказа перед запуском: перейдите по короткой ссылке, совершите тестовую покупку, убедитесь, что elido_cid появляется в POST-запросе конверсии. Если нет, добавьте пересылку параметров запроса в ваше промежуточное ПО (middleware). Это самая частая причина сбоя настройки — не вебхук, а потеря параметра запроса.
Приемник вебхуков Stripe проверяет подписи и привязывает события checkout.session.completed и payment_intent.succeeded
Зарегистрируйте эндпоинт вебхука Elido в панели Stripe (Settings → Webhooks → Add endpoint). Elido прослушивает события checkout.session.completed и payment_intent.succeeded. При каждом событии Elido проверяет заголовок Stripe-Signature с помощью вашего секретного ключа подписи, извлекает сумму платежа и валюту, находит click_id, сохраненный в client_reference_id сессии оформления заказа (который вы должны заполнить — см. руководство), и записывает конверсию для этого клика. Доход и click_id затем доступны в аналитике ссылки и в сводке доходов кампании. Поле client_reference_id является рекомендуемым каналом передачи; в качестве альтернативы используйте поле метаданных Stripe с ключом elido_cid, если вы используете PaymentIntents напрямую. Полная настройка занимает около 30 минут, если ваша интеграция со Stripe уже обрабатывает вебхуки.
Вебхук заказов/оплаты Shopify привязывает доход от заказа к клику по исходной короткой ссылке
Зарегистрируйте эндпоинт вебхука Elido в админ-панели Shopify (Settings → Notifications → Webhooks → Create webhook → Topic: orders/paid). Elido проверяет заголовок X-Shopify-Hmac-Sha256, извлекает общую сумму заказа и валюту, и находит elido_cid в note_attributes заказа (вы заполняете это из корзины с помощью API note_attributes Shopify, передавая click_id из cookie сессии или параметра URL). Для магазинов Shopify, использующих темы Online Store 2.0, фрагмент атрибуции Elido автоматически вставляет click_id в корзину при клике. Атрибутированные заказы дедуплицируются по ID заказа, поэтому возвращенные и замененные заказы не учитываются дважды. Магазины Shopify Plus с кастомными расширениями оформления заказа могут передавать click_id через более надежный канал — руководство по настройке охватывает процесс для Plus.
POST-запрос к эндпоинту конверсий Elido из любого бэкенда — не только для Stripe и Shopify
Отправьте POST /v1/conversions с JSON-телом: { click_id: "...", event_name: "purchase", value: 99.00, currency: "EUR", metadata: {} }. click_id — это elido_cid из клика. Elido аутентифицирует запрос с помощью API-ключа вашего рабочего пространства (рекомендуется HMAC-SHA256 над телом запроса для дополнительной безопасности). Этот эндпоинт охватывает любую конверсию, не обрабатываемую нативными интеграциями Stripe или Shopify: WooCommerce, активации пробных версий в кастомных SaaS, отправки лид-форм, звонки, отслеживаемые вашей телефонией. Поле event_name является текстовым; используйте любое соглашение об именах — оно отображается как есть в аналитике. Идемпотентность: при отправке одной и той же комбинации click_id + event_name дважды, записывается только первая. Значение события и метаданные изменяемы только при первой записи.
Одновременная рассылка конверсий в GA4 Measurement Protocol, Meta CAPI и серверный трекинг Mixpanel
После того как Elido записывает конверсию для клика, он отправляет событие во все включенные вами серверные направления пересылки: GA4 Measurement Protocol (событие появляется в GA4 как серверное событие покупки с оригинальными UTM-параметрами клика), Meta Conversions API (событие дедуплицируется с клиентским пикселем, если задействованы оба, с использованием event_id из click_id) и серверный трекинг Mixpanel (событие отправляется с distinct_id из вызова $identify Mixpanel, если настроена кросс-идентификация). Пересылка происходит асинхронно после записи конверсии — это не блокирует ответ вебхука для Stripe или Shopify. Неудачные события пересылки повторяются с экспоненциальной задержкой в течение 24 часов, затем удаляются с записью в лог. Статус пересылки для каждой конверсии виден в панели управления.
Команды по доходам, использующие отслеживание конверсий Elido
Имена являются заполнителями — реальные кейсы клиентов появятся здесь по мере их публикации.
“iOS 14.5 убил нашу атрибуцию через Meta Pixel для 30% мобильных покупок. Серверный вебхук Stripe через Elido восстановил большую часть данных — ключевым моментом стала передача click_id в client_reference_id Stripe. Настройка заняла один вечер.”
“Мы отправляем активации пробных версий на кастомный эндпоинт конверсий Elido. Цепочка клик → триал → оплата теперь полностью прослеживается без использования сложной CDP. Пересылка через GA4 Measurement Protocol означает, что дашборды платных каналов снова точны.”
“Вебхук заказов/оплаты Shopify плюс фрагмент кода атрибуции в теме — это была интеграция на один день. Доход на кампанию теперь живое число на нашей утренней планерке, а не формула в таблице, которую кто-то должен обновлять.”
Отслеживание конверсий Elido против Bitly и Short.io
У Bitly нет серверного отслеживания конверсий. У Short.io есть базовые пиксели конверсий. Отслеживание конверсий Elido работает на стороне сервера и пересылает данные на несколько рекламных платформ.
| Feature | Elido | Bitly | Short.io |
|---|---|---|---|
| Серверная атрибуция конверсий | Да — на базе вебхуков, с проверкой подписи | Недоступно | Недоступно |
| Интеграция с вебхуками Stripe | checkout.session.completed + payment_intent.succeeded | Недоступно | Недоступно |
| Интеграция с вебхуками Shopify | orders/paid — с проверкой подписи и дедупликацией | Недоступно | Недоступно |
| API-эндпоинт для конверсий | POST /v1/conversions — любой бэкенд, любое событие | Недоступно | Недоступно |
| Пересылка в GA4 / Meta CAPI | Да — рассылка после записи конверсии | Недоступно | Частично — только клиентский пиксель |
| Доход в аналитике | Сводка доходов по ссылкам и кампаниям с учетом валюты | Недоступно | Только количество конверсий, без дохода |
| Дедупликация конверсий | Да — идемпотентность по click_id + event_name | Неприменимо | Недоступно |
Вопросы об отслеживании конверсий
Что если click_id будет потерян до конверсии?
Если параметр запроса elido_cid будет потерян до срабатывания события конверсии — из-за цепочки редиректов, роутера SPA или стороннего сервиса оплаты — конверсия не сможет быть атрибутирована. Протестируйте всю воронку: кликните по короткой ссылке, проследите elido_cid через каждую страницу до подтверждения оплаты, убедитесь, что он появляется в POST-запросе конверсии. Фрагмент кода атрибуции Elido также сохраняет click_id в основной cookie (first-party) в качестве резервного варианта — если параметр URL потерян, но пользователь все еще в той же сессии браузера, атрибуция может быть восстановлена из cookie.
Как обрабатываются возвраты при атрибуции конверсий?
Elido не обрабатывает события возврата автоматически. Если срабатывает событие Stripe charge.refunded или Shopify refunds/create, Elido не списывает атрибутированный доход. Вы можете отправить событие конверсии с отрицательным значением на кастомный эндпоинт, чтобы отменить атрибуцию вручную. Обработчик вебхуков возвратов находится в разработке. До тех пор, если вам нужен точный чистый доход в Elido, вычитайте суммы возвратов, используя экспорт данных и вашу систему управления заказами.
Работает ли отслеживание, если пользователь завершает покупку на другом устройстве?
Нет — если пользователь нажал на короткую ссылку на мобильном устройстве, но завершил оформление заказа на компьютере, click_id не переносится между устройствами. Конверсия останется неатрибутированной, если только сессия пользователя не сохранила elido_cid при переходе между устройствами (например, через вошедший в систему аккаунт). Кросс-девайс атрибуция требует серверного графа идентификации, который Elido не предоставляет. Для точности кросс-девайс атрибуции используйте ваш MMP или CDP вместе с серверными конверсиями Elido.
Какие валюты поддерживаются для атрибуции дохода?
В поле value события конверсии принимаются все коды валют ISO 4217. Доход хранится в исходной валюте; панель аналитики показывает доход в валюте каждого события конверсии. Если вам нужен сводный вид в одной валюте, экспортируйте события конверсий и конвертируйте их в своем хранилище данных — Elido не применяет курсы обмена валют.
Как настроить передачу client_reference_id в Stripe?
При создании сессии оформления заказа Stripe установите client_reference_id в значение параметра URL elido_cid из реферера. На JavaScript: const session = await stripe.checkout.sessions.create({ ..., client_reference_id: searchParams.get('elido_cid') }). Обработчик вебхуков Elido считывает это поле из checkout.session.completed. Если вы используете PaymentIntents напрямую, используйте поле метаданных с ключом elido_cid. Руководство по настройке на /docs/guides/conversion-tracking содержит готовый код для Node, Python и Go.
Включаются ли данные о конверсиях в экспорт ClickHouse?
Да. События конверсий хранятся в отдельной таблице ClickHouse (conversions) наряду с таблицей событий кликов (clicks). Запланированный экспорт в S3, BigQuery или Snowflake включает обе таблицы. Ключ для JOIN — click_id. Пример SQL-запроса, который объединяет клики с конверсиями и вычисляет доход по UTM-источникам кампаний, находится в руководстве по экспорту.
Можно ли отслеживать конверсии без дохода, такие как заполнение форм или активации триалов?
Да — кастомный эндпоинт конверсий принимает любое event_name и необязательное value (установите 0 для событий без дохода). Используйте названия событий вроде 'trial_started', 'demo_booked', 'form_submitted'. Они появятся в аналитике ссылки в разделе 'Conversions' с названием события в качестве метки. Если вы также настроили пересылку в GA4, они сопоставляются с пользовательскими событиями GA4. Количество конверсий (не только доход) отображается для каждой ссылки и кампании независимо от ценности события.
Какова задержка от получения события конверсии до появления в аналитике?
От получения вебхука до ClickHouse: обычно менее 5 секунд через тот же конвейер Redpanda, что и события кликов. Атрибуция (сопоставление конверсии с исходным кликом) происходит синхронно при получении вебхука — если click_id распознан, атрибуция происходит мгновенно. Пересылка в GA4 / Meta CAPI / Mixpanel происходит асинхронно и добавляет 2–10 секунд. Данные о доходе в аналитике обновляются в течение 30 секунд после получения события конверсии.
Keep reading
Аналитика кликов в ClickHouse — здесь доход от конверсий отображается рядом с количеством кликов.
Запускайте пиксели Meta CAPI и Google Ads при редиректе — сторона привлечения в цикле конверсии.
Атрибуция дохода на уровне кампании — смотрите, какой вариант кампании принес больше всего дохода.
Исходящие вебхуки с подписью HMAC от Elido — получайте события кликов с атрибуцией конверсий в ваших собственных системах.
Готовы попробовать?
Начните с бесплатного тарифа, перейдите на платный, когда вам понадобится пользовательский домен.