Introducción
La integración de Close CRM crea registros en Close a partir de eventos de Dodo Payments. Un pago exitoso puede crear un contacto y una nueva suscripción puede crear una oportunidad, para que tu equipo de ventas vea la actividad de ingresos junto a sus leads.Esta integración requiere una API key de Close con permiso para crear contactos y oportunidades. Para crear una en Close, ve a Settings → Developer → API Keys y haz clic en New API Key.
Comenzando
1
Open the Webhook Section
En el dashboard de Dodo Payments, ve a Developer → Webhooks y haz clic en Add endpoint.

2
Select Close CRM
En Integration, selecciona CloseCRM.
3
Enter API Key
En API key, pega tu API key de Close. Dodo Payments la envía en el header
Authorization de cada entrega.4
Select Events
En Subscribed events, selecciona los eventos que gestiona tu transformación. Los ejemplos de esta página usan
payment.succeeded y subscription.active.5
Configure Transformation
En Transformation code, edita el handler para asignar los datos de pago a objetos de Close. Empieza con los ejemplos.
6
Test & Create
En Test this code, haz clic en Simulate para ejecutar el handler con un payload de ejemplo. Después, haz clic en Create endpoint.
7
Done
Cada evento suscrito ahora crea un registro en Close.
Ejemplos de código de transformación
Cada handler establecewebhook.url en un endpoint de la API de Close y reemplaza webhook.payload con el cuerpo de la solicitud. Close establece campos personalizados mediante claves custom.cf_<field_id>, así que reemplaza las claves cf_ de los ejemplos por los IDs de tus propios campos personalizados. Los importes de Dodo Payments están en la unidad monetaria más pequeña, por ejemplo, centavos para USD.
Crear un contacto a partir de un pago
Cuando un pago se completa correctamente, crea un contacto. Close recibeemails y phones como listas de objetos. Si la solicitud no incluye lead_id, Close crea un nuevo lead con el nombre del contacto.
create_contact.js
Crear una oportunidad a partir de una suscripción
Cuando una suscripción se activa, crea una oportunidad. Close recibevalue como un entero en centavos e value_period como one_time, monthly o annual, por lo que el ejemplo asigna payment_frequency_interval de la suscripción a un periodo. lead_id debe ser un ID de lead de Close, no un ID de cliente de Dodo Payments. El ejemplo lo obtiene de metadata de la suscripción, así que guarda allí el ID del lead cuando crees la suscripción. Sin lead_id, Close crea un lead nuevo sin título.
create_opportunity.js
Consejos
- Comprueba los nombres y tipos de los campos en la documentación de la API de Close antes de asignar los campos.
- Guarda los datos específicos del pago, como el importe y el método de pago, en campos personalizados. Crea primero los campos en Close y después usa sus IDs.
- Asigna
recurring_pre_tax_amountde la suscripción avaluede la oportunidad y su intervalo de facturación avalue_period. - Usa IDs para vincular registros: guarda
customer_idde Dodo Payments en el contacto de Close y el ID del lead de Close enmetadatade Dodo Payments. - El ejemplo de contacto se ejecuta en cada
payment.succeeded, incluidas las renovaciones y las compras repetidas, por lo que un cliente recurrente crea otro contacto.
Solución de problemas
Records Not Created in Close CRM
Records Not Created in Close CRM
- Verifica que la API key tenga permisos de escritura.
- Comprueba que se incluyan los campos obligatorios.
- Comprueba que cada dirección de correo electrónico sea válida.
- Revisa los límites de velocidad de la API de Close.
- Si las entregas fallan con un
401, es posible que Close espere autenticación Basic. Ajusta el headerAuthorizationen la pestaña Advanced del endpoint. - Abre los intentos de entrega del endpoint en la pestaña Logs de Developer → Webhooks para ver la respuesta de Close.
Transformation Errors
Transformation Errors
- Comprueba que el payload coincida con el formato de la API de Close.
- Comprueba que estén presentes todos los campos obligatorios.
- Comprueba que los nombres de los campos coincidan exactamente con el esquema de Close y que los campos personalizados utilicen IDs
custom.cf_.