Ir al contenido
Todos los artículos

Guías del producto

Cómo configurar un webhook de Stripe para Checkout (paso a paso)

Configura paso a paso el webhook de Stripe de Provedly para que cada Checkout Session completada sea una notificación verificada, con atribución y soluciones.

Equipo de Provedly··6 min de lectura

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.

stripewebhookscompras verificadas

Recibe los nuevos artículos por email

Prueba social honesta, compras verificadas y lo que de verdad mueve la conversión. Como mucho unos pocos emails al mes; date de baja con un clic.

Te enviamos un email para confirmar. Tu dirección solo se usa para este boletín; consulta la política de privacidad (en inglés).

Muestra pruebas que puedas respaldar.

Plan gratis, un sitio, 2,000 impresiones al mes y compras verificadas incluidas. En el plan gratis, la insignia enlaza a tu página de verificación, y de eso se trata.