Sincronizar tu CRM con webhooks
Mantener contactos y empresas al día en los dos sentidos, sin polling.
Antes de empezar
- Una API key de Tinkay con `contacts:read` y `contacts:write`
- Credenciales de tu CRM
De Tinkay a tu CRM
Suscribite a los eventos de contacto y mapeá el payload a tu modelo.
Eventos a suscribir
| Campo | Tipo | Descripción |
|---|---|---|
contact.created | alta | Crear el registro en el CRM. |
contact.updated | cambio | Actualizar solo los campos de changes. |
contact.identified | enriquecimiento | Vincular con tu external_id. |
contact.merged | unificación | Fusionar los dos registros del CRM. |
contact.deleted | baja | Borrar o anonimizar por pedido de privacidad. |
JavaScript
async function onContactEvent(event) { const { id, email, name } = event.data; // Buscar por el id de Tinkay guardado como campo externo evita duplicados. const existing = await crm.contacts.findByExternalId(id); if (existing) return crm.contacts.update(existing.id, { email, name }); return crm.contacts.create({ email, name, externalId: id, source: "Tinkay" });}De tu CRM a Tinkay
Cuando algo cambia en el CRM, escribí el contacto en Tinkay. Es un POST idempotente por email.
Terminal
curl -X POST https://api.tinkay.app/v1/contacts \ -H "Authorization: Bearer dk_live_xxx" \ -H "Idempotency-Key: crm-sync-84213" \ -H "Content-Type: application/json" \ -d '{ "email": "[email protected]", "name": "Juan Pérez", "company": "Loomi", "custom_fields": { "Plan": "Pro", "MRR": "149" } }'Marcá los cambios que vienen del CRM para no reenviarlos de vuelta cuando Tinkay emita contact.updated. Sin eso entrás en un lazo infinito.
Carga inicial
Para el primer volcado usá la paginación por cursor en vez de esperar eventos. Después dejá los webhooks al día.
Terminal
curl "https://api.tinkay.app/v1/contacts?limit=100" \ -H "Authorization: Bearer dk_live_xxx"Cómo saber que quedó bien
- Crear un contacto en Tinkay lo crea en el CRM en menos de cinco segundos.
- Actualizar un atributo en el CRM lo refleja en el panel del contacto en Tinkay.
- Un mismo contacto no se duplica al reintentar.
