La marca de "Compra verificada" en Provedly significa una sola cosa: el registro llegó por un webhook cuya firma Provedly comprobó con el secreto que pegaste. En Stripe, eso son cuatro pasos y unos cinco minutos, y está disponible en todos los planes, incluido Free. Esta guía cubre la configuración, qué lee Provedly del evento, cómo conseguir la atribución y qué revisar cuando llegan eventos pero nada aparece verificado.
Los cuatro pasos
Paso 1: añade una fuente de Stripe en Provedly
Abre el widget, ve a la pestaña Data y añade una fuente de Stripe. Provedly te muestra la URL del endpoint para este widget:
https://provedly.app/api/hooks/stripe/pp_your_token
Deja esta pestaña abierta; volverás a ella para el secreto.
Paso 2: registra el endpoint en Stripe
En el panel de Stripe, ve a Developers, luego a Webhooks y después a Add endpoint. Pega la URL y selecciona un solo evento: checkout.session.completed. No necesitas ningún otro. Añadir más no hace daño, pero Provedly los ignora y te llenan los registros de webhooks.
Si usas la CLI de Stripe para pruebas en local, el equivalente es:
stripe listen --events checkout.session.completed \
--forward-to https://provedly.app/api/hooks/stripe/pp_your_token
En producción, registra el endpoint en el panel en lugar de depender de la CLI.
Paso 3: pega el secreto de firma
Stripe muestra un secreto de firma para el nuevo endpoint, que empieza por whsec_. Cópialo en el campo del secreto de la fuente de Stripe en Provedly y guarda. Toda la verificación se basa en esto: Stripe firma cada evento con ese secreto, Provedly recalcula la firma y un evento que no coincide se rechaza. Sin el secreto, no se verifica nada.
Paso 4: envía un evento de prueba
Usa "Send test event" desde la página del endpoint en Stripe. En pocos segundos, la fuente en Provedly muestra la marca de tiempo del "último evento". Los eventos de prueba de Stripe llevan datos de relleno, así que el registro puede verse raro; bórralo después o deja que la ventana de antigüedad lo deje atrás. El primer checkout real produce un registro como es debido.
Qué lee Provedly del evento
| Campo en la notificación | De dónde sale |
|---|---|
| Nombre | el nombre de customer details en la sesión |
| Ciudad y país | la dirección de envío si existe; si no, la de facturación |
| Producto | el primer artículo del pedido |
| Precio | el total formateado en la moneda de la sesión |
| Hora | la hora del evento |
Después, el nombre pasa por tu ajuste de formato de nombre (por defecto muestra "Sarah M.") y la ubicación por tu formato de ubicación (por defecto "Austin, US"). Lo que Stripe te envía completo no es lo que ven los visitantes. Consulta Formatos de nombre y ubicación: privacidad por defecto.
Si una sesión no tiene nombre porque no lo pediste, la notificación usa un sujeto genérico. Pide el nombre en el checkout si quieres notificaciones con nombre; no te los inventes después.
Atribución: pasa el ID de visitante
El panel cuenta los pedidos asistidos por la prueba social, definidos como un comprador que vio una notificación antes de comprar, emparejado por ID de visitante dentro de 30 días. Stripe no conoce el ID de visitante a menos que se lo digas. Cuando crees la Checkout Session en tu servidor, inclúyelo como metadata:
// client: read the id before redirecting to checkout
const visitor = window.Provedly?.visitorId();
// server: create the session
const session = await stripe.checkout.sessions.create({
mode: 'payment',
line_items: [{ price: 'price_123', quantity: 1 }],
success_url: 'https://example.com/thanks',
cancel_url: 'https://example.com/cart',
metadata: { provedly_visitor: visitor ?? '' },
});
Provedly lee metadata.provedly_visitor de la sesión completada y vincula la compra con el visitante que vio la notificación. Sin metadata, no hay atribución; el panel nunca estima. En Shopify es automático, porque el widget escribe el ID de visitante en el carrito como el atributo provedly_visitor.
Lo que el visitante puede comprobar
Cada notificación verificada enlaza a la página de verificación pública del widget. Muestra las fuentes conectadas (en este caso, Stripe), los conteos, la última compra verificada y la política de honestidad del widget. Una raíz SHA-256 cada noche sella el historial para que un conteo no se pueda reescribir en silencio más adelante. Esto es lo que la competencia en general no tiene; a octubre de 2026, según sus propios listados, la mayoría de las herramientas permiten a un comerciante escribir los números que quiera sin ninguna página que explique de dónde salen. Más sobre esto en Por qué la prueba social necesita una página de verificación.
Solución de problemas
Llegan eventos pero los registros no están verificados. Casi siempre es el secreto. Vuelve a copiar el whsec_ del endpoint exacto que registraste; cada endpoint tiene su propio secreto, y un secreto de otro endpoint o de la CLI fallará en la comprobación de la firma. Guarda y envía otro evento de prueba.
No llega ningún evento. Revisa que la URL del endpoint no tenga un espacio de más y confirma que checkout.session.completed está seleccionado. Confirma que el endpoint está en modo live si tu tienda está en producción; los endpoints en modo test solo reciben eventos de prueba.
Los registros llegan sin ubicación. La sesión no tenía dirección de envío ni de facturación. Activa la recogida de direcciones en Checkout si la ubicación te importa, o pon el formato de ubicación en "none".
Duplicados. Stripe puede reintentar la entrega. Provedly elimina duplicados por evento, así que los reintentos no crean registros repetidos.
Pagos solo con Payment Intents. Si cobras con Elements y Payment Intents en lugar de una Checkout Session alojada, checkout.session.completed nunca se dispara. Envía esos pedidos desde tu backend a la Records API; llevarán la etiqueta Imported, y tu página de verificación los mostrará bajo "Site owner's backend (API)". Consulta Cómo usar la Records API con compras de tu propio backend.
Preguntas frecuentes
¿Provedly necesita mi clave de API de Stripe?
No. Los webhooks son entrantes: Stripe envía los eventos a Provedly. Solo compartes el secreto de firma del webhook, que sirve para verificar firmas y nada más.
¿Puedo conectar varias cuentas de Stripe a un mismo widget?
Cada fuente de Stripe tiene su propio secreto de endpoint, así que puedes añadir una fuente por cuenta en el mismo widget si los límites de tu plan lo permiten.
¿Las renovaciones de suscripción aparecerán como compras?
No. Solo se lee checkout.session.completed, así que aparece el checkout inicial y no los pagos de facturas posteriores. Es deliberado: una renovación no es un comprador nuevo tomando una decisión.
Las compras verificadas están incluidas en todos los planes, incluido Free: empieza con Stripe conectado.