Seguimiento de conversiones. Attribute every dollar to the click that earned it.
Los receptores de webhooks de Stripe y Shopify verifican las firmas y vinculan los ingresos al enlace corto de origen. La atribución de la campaña se deriva automáticamente.
- 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
- Atribución de campaña derivada del enlace
- Resumen de ingresos en el panel de control
Cómo funciona la atribución de conversiones del lado del servidor de extremo a extremo
Los píxeles del lado del cliente pierden entre un 20 y un 40% de las conversiones debido a bloqueadores de anuncios, restricciones de privacidad de iOS y cadenas de redireccionamiento de pago. La atribución del lado del servidor cierra la brecha.
Cada clic recibe un UUID que se pasa al destino: el ancla de atribución para la coincidencia de conversiones
Cuando un usuario hace clic en un enlace corto de Elido, el edge genera un click_id (UUID v4) y lo añade como un parámetro de consulta (elido_cid) a la URL de destino. Su flujo de pago debe preservar este parámetro a través de cada página del embudo; la mayoría de los enrutadores SPA y los stacks de pago renderizados en el servidor reenvían los parámetros de consulta desconocidos por defecto, pero las cadenas de pago de varios pasos con redireccionamientos pueden eliminarlos. El click_id también se almacena en una cookie de sesión en el dominio de destino si inserta el fragmento de atribución de 2KB de Elido (opcional). Pruebe el flujo de pago completo antes de lanzarlo: haga clic en un enlace corto, complete una compra de prueba y verifique que el elido_cid aparezca en el POST de conversión. Si no aparece, añada el reenvío de parámetros de consulta en su middleware de pago. Este es el fallo de configuración de atribución más común, no el webhook, sino la pérdida de parámetros de consulta en el pago.
El receptor de webhooks de Stripe verifica las firmas y atribuye los eventos checkout.session.completed y payment_intent.succeeded
Registre el endpoint del webhook de Stripe de Elido en su panel de Stripe (Ajustes → Webhooks → Añadir endpoint). Elido escucha los eventos checkout.session.completed y payment_intent.succeeded. En cada evento, Elido verifica la cabecera Stripe-Signature utilizando su secreto de firma de webhook, extrae el importe del pago y la moneda, busca el click_id almacenado en el client_reference_id de la Checkout Session (que su pago debe completar, consulte la guía) y registra la conversión contra ese clic. Los ingresos y el click_id están entonces disponibles en la vista de analíticas del enlace y en el resumen de ingresos de la campaña. El campo client_reference_id de la Checkout Session es el paso recomendado; alternativamente, use el campo metadata de Stripe con la clave elido_cid si utiliza PaymentIntents directamente. La configuración completa toma unos 30 minutos si su integración con Stripe ya gestiona webhooks.
El webhook orders/paid de Shopify vincula los ingresos del pedido al clic del enlace corto de origen
Registre el endpoint del webhook de Shopify de Elido en su administrador de Shopify (Ajustes → Notificaciones → Webhooks → Crear webhook → Tema: orders/paid). Elido verifica la cabecera X-Shopify-Hmac-Sha256, extrae el total del pedido y la moneda, y busca el elido_cid en los note_attributes del pedido (usted completa esto desde el carrito usando la API de note_attributes de Shopify, pasando el click_id de la cookie de sesión o del parámetro de la URL). Para las tiendas Shopify que usan temas Online Store 2.0, el fragmento de atribución de Elido inyecta el click_id en el carrito automáticamente al hacer clic. Los pedidos atribuidos se deduplican por ID de pedido para que los pedidos reembolsados y reemplazados no cuenten doble. Las tiendas Shopify Plus con extensiones de pago personalizadas pueden pasar el click_id a través de un canal más fiable; la guía de configuración cubre el flujo específico de Plus.
Realice un POST al endpoint de conversión de Elido desde cualquier backend, no solo desde Stripe y Shopify
Realice un POST a /v1/conversions con un cuerpo JSON: { click_id: "...", event_name: "compra", value: 99.00, currency: "EUR", metadata: {} }. El click_id es el elido_cid del clic. Elido autentica la solicitud con la clave API de su espacio de trabajo (se recomienda HMAC-SHA256 sobre el cuerpo del payload para mayor seguridad). Este endpoint cubre cualquier conversión no gestionada por las integraciones nativas de Stripe o Shopify: WooCommerce, activaciones de prueba de SaaS personalizadas, envíos de formularios de clientes potenciales, conversiones de llamadas telefónicas rastreadas por su plataforma de telefonía. El campo event_name es texto libre; use cualquier convención de nomenclatura que su equipo prefiera: se muestra tal cual en la vista de analíticas. Idempotencia: envíe la misma combinación de click_id + event_name dos veces y solo se registrará la primera. El valor del evento y los metadatos son mutables solo en la primera escritura.
Distribuya las conversiones al Protocolo de medición de GA4, Meta CAPI y el seguimiento de servidor de Mixpanel simultáneamente
Después de que Elido registre una conversión contra un clic, distribuye el evento a cualquier destino de reenvío del lado del servidor que haya habilitado: Protocolo de medición de GA4 (el evento aparece en GA4 como un evento de compra del lado del servidor con los parámetros UTM originales del clic), Meta Conversions API (el evento se deduplica contra el píxel del lado del cliente si ambos se activan, usando el event_id del click_id) y seguimiento de servidor de Mixpanel (el evento se envía con el distinct_id de la llamada $identify de Mixpanel si ha configurado la identidad cruzada). El reenvío ocurre de forma asíncrona después de que se registra la conversión: no bloquea la respuesta del webhook a Stripe o Shopify. Los eventos de reenvío fallidos se reintentan con un retroceso exponencial durante 24 horas y luego se descartan con una entrada en el log. Puede ver el estado del reenvío por conversión en el panel.
Equipos de ingresos que utilizan el seguimiento de conversiones de Elido
Los nombres son marcadores de posición: los casos de estudio de clientes reales aparecerán aquí a medida que se publiquen.
“iOS 14.5 acabó con nuestra atribución de Meta Pixel en el 30% de las compras móviles. El webhook de Stripe del lado del servidor a través de Elido recuperó la mayor parte; la transferencia de click_id al client_reference_id de Stripe fue la clave. La configuración llevó una tarde.”
“Realizamos POST de activaciones de prueba al endpoint de conversión personalizado de Elido. La cadena clic → prueba → pago es ahora rastreable de extremo a extremo sin un CDP completo. El reenvío del Protocolo de medición de GA4 significa que nuestros paneles de canales de pago vuelven a ser precisos.”
“El webhook orders/paid de Shopify más el fragmento de atribución en el tema fue una integración de un día. Los ingresos por campaña son ahora un número en vivo en nuestro standup matutino, no una fórmula de hoja de cálculo que alguien tiene que actualizar.”
Seguimiento de conversiones de Elido vs Bitly vs Short.io
Bitly no tiene seguimiento de conversiones del lado del servidor. Short.io tiene píxeles de conversión básicos. El seguimiento de conversiones de Elido es del lado del servidor y se reenvía a múltiples plataformas publicitarias.
| Feature | Elido | Bitly | Short.io |
|---|---|---|---|
| Atribución de conversiones del lado del servidor | Sí: basado en webhooks, con firma verificada | No disponible | No disponible |
| Integración con webhooks de Stripe | checkout.session.completed + payment_intent.succeeded | No disponible | No disponible |
| Integración con webhooks de Shopify | orders/paid: firma verificada, deduplicación de pedidos | No disponible | No disponible |
| Endpoint de conversión personalizado | POST /v1/conversions: cualquier backend, cualquier evento | No disponible | No disponible |
| Reenvío a GA4 / Meta CAPI | Sí: distribuido tras registrar la conversión | No disponible | Parcial: solo píxel del lado del cliente |
| Ingresos en analíticas | Resumen de ingresos por enlace y por campaña con moneda | No disponible | Solo recuento de conversiones, sin ingresos |
| Deduplicación de conversiones | Sí: idempotencia en click_id + event_name | No aplicable | No disponible |
Preguntas sobre el seguimiento de conversiones
¿Qué pasa si el click_id se elimina antes de la conversión?
Si el parámetro de consulta elido_cid se pierde antes de que se active el evento de conversión —debido a una cadena de redireccionamiento, a que el enrutador SPA no reenvía los parámetros de consulta o a que un pago de terceros elimina los parámetros desconocidos—, la conversión no podrá atribuirse. Pruebe el embudo completo: haga clic en un enlace corto, rastree el elido_cid a través de cada página hasta la confirmación de pago, verifique que aparezca en el POST de conversión. El fragmento de atribución de Elido (un pequeño bloque de JavaScript) también establece el click_id en una cookie de origen como respaldo: si el parámetro de la URL se pierde pero el usuario sigue en la misma sesión del navegador, la atribución puede recuperarse de la cookie.
¿Cómo se gestionan los reembolsos en la atribución de conversiones?
Elido no procesa automáticamente los eventos de reembolso. Si se activa un evento charge.refunded de Stripe o refunds/create de Shopify, Elido no debita los ingresos atribuidos. Puede realizar un POST de un evento de conversión de valor negativo al endpoint personalizado para revertir la atribución manualmente. Un receptor de webhooks de reembolsos está en la hoja de ruta. Hasta entonces, si necesita ingresos netos precisos en Elido, reste los totales de reembolso utilizando la exportación de datos y su sistema de gestión de pedidos.
¿Funciona el seguimiento de conversiones si el usuario completa el pago en un dispositivo diferente?
No. Si el usuario hace clic en el enlace corto en el móvil pero completa el pago en el escritorio, el click_id no se transfiere entre dispositivos. La conversión no se atribuirá a menos que la sesión del usuario haya preservado el elido_cid a través del cambio de dispositivo (por ejemplo, a través de una cuenta iniciada que lo almacenó). La atribución multidispositivo requiere un gráfico de identidad del lado del servidor, que Elido no proporciona. Para mayor precisión en la atribución multidispositivo, use su MMP o CDP junto con las conversiones del lado del servidor de Elido.
¿Qué monedas se admiten para la atribución de ingresos?
Se aceptan todos los códigos de moneda ISO 4217 en el campo de valor de un evento de conversión. Los ingresos se almacenan en la moneda original; el panel de analíticas muestra los ingresos en la moneda de cada evento de conversión. Si necesita una vista consolidada en una sola moneda, exporte los eventos de conversión y conviértalos en su almacén: Elido no aplica tasas de cambio FX.
¿Cómo configuro la transferencia del client_reference_id de Stripe?
Al crear una Checkout Session de Stripe, establezca el client_reference_id con el valor del parámetro de URL elido_cid del clic de referencia. En JavaScript: const session = await stripe.checkout.sessions.create({ ..., client_reference_id: searchParams.get('elido_cid') }). El controlador de webhooks de Elido lee este campo de checkout.session.completed. Si utiliza PaymentIntents directamente, use el campo de metadatos con la clave elido_cid en su lugar. La guía de configuración en /docs/guides/conversion-tracking tiene código para copiar y pegar en Node, Python y Go.
¿Se incluyen los datos de conversión en las exportaciones de ClickHouse?
Sí. Los eventos de conversión se almacenan en una tabla de ClickHouse separada (conversions) junto a la tabla de eventos de clics (clicks). Las exportaciones programadas a S3, BigQuery o Snowflake incluyen ambas tablas. La clave de JOIN es click_id. Una consulta SQL de referencia que une clics con conversiones y calcula los ingresos por fuente UTM de campaña se encuentra en la guía de exportación.
¿Puedo rastrear conversiones que no sean de ingresos, como registros de formularios o activaciones de prueba?
Sí. El endpoint de conversión personalizado acepta cualquier event_name y un valor opcional (establecido en 0 para eventos que no son de ingresos). Use nombres de eventos como 'trial_started', 'demo_booked', 'form_submitted'. Estos aparecen en la vista de analíticas del enlace bajo 'Conversiones' con el nombre del evento como etiqueta. Si también reenvía a GA4, estos se mapean a eventos personalizados de GA4. Los recuentos de conversiones (no solo los ingresos) son visibles por enlace y por campaña, independientemente del valor del evento.
¿Cuál es la latencia desde la recepción del evento de conversión hasta la visibilidad en analíticas?
Recepción del webhook a ClickHouse: normalmente menos de 5 segundos a través del mismo pipeline de Redpanda que los eventos de clic. La atribución (hacer coincidir la conversión con el clic de origen) ocurre de forma síncrona al recibir el webhook: si el click_id se resuelve, la atribución es inmediata. El reenvío descendente a GA4 / Meta CAPI / Mixpanel es asíncrono y añade entre 2 y 10 segundos. El número de ingresos en la vista de analíticas del panel se actualiza en un plazo de 30 segundos tras la recepción del evento de conversión.
Keep reading
Analíticas de clics en ClickHouse: donde los ingresos por conversión aparecen junto a los recuentos de clics.
Active píxeles de Meta CAPI y Google Ads en el redireccionamiento: el lado de adquisición del bucle de conversión.
Atribución de ingresos a nivel de campaña: vea qué variante de campaña generó más ingresos.
Webhooks de salida firmados con HMAC desde Elido: reciba eventos de clic atribuidos a conversiones en sus propios sistemas.
¿Listo para probarlo?
Empieza con el plan gratuito, actualiza cuando necesites un dominio personalizado.