Make
Lleva lo que pasa en Cord a cualquier app de Make, y crea datos en Cord desde tus escenarios.
Cómo se conecta
Make se conecta con Cord usando dos módulos que Make ya trae, sin instalar nada:
| Dirección | Módulo de Make | Qué necesitas en Cord |
|---|---|---|
| Cord → Make: un evento de Cord arranca tu escenario | Webhooks › Custom webhook | Un endpoint de webhook con la URL de Make |
| Make → Cord: tu escenario crea o actualiza datos en Cord | HTTP › Make a request | Una llave de API secreta con permiso de escritura |
En Ajustes › Integraciones › Make tienes los dos pasos resumidos con accesos directos a Webhooks y a API. Las dos pestañas viven en el panel de Desarrolladores: si no lo ves, activa el Modo desarrollador con el interruptor al fondo del índice de Ajustes.
Recibir eventos de Cord
- Crea el webhook en Make. En tu escenario agrega Webhooks › Custom webhook, pulsa Add, ponle nombre y copia la URL que te da Make.
- Registra el endpoint en Cord. Abre Webhooks en el panel de Desarrolladores, pega la URL de Make y guarda. Cord te muestra un secreto de firma una sola vez; Make no lo usa, pero guárdalo si piensas verificar firmas más adelante.
- Elige los eventos. Marca solo los que tu escenario necesita, por ejemplo
quote.approvedoinvoice.paid. - Enséñale a Make la forma del evento. En Make pulsa Redetermine data structure y, en Cord, pulsa Probar en el endpoint. Make recibe un evento de ejemplo y aprende sus campos.
- Mapea y activa. Usa los campos en los siguientes módulos (por ejemplo
data.folio,data.total,data.cliente) y enciende el escenario.
Qué llega en cada evento
Cada evento es un JSON con cuatro campos:
| Campo | Qué es |
|---|---|
id |
Identificador único del evento. Es el mismo si Cord reintenta la entrega. |
event |
El tipo de evento, por ejemplo quote.paid. |
created_at |
Cuándo ocurrió. |
data |
Los datos del objeto: en una cotización, id, folio, status, moneda, total, cliente, cliente_id y el link público. |
La lista completa de eventos y los campos de cada uno está en Webhooks para desarrolladores.
Un endpoint o varios
Puedes registrar un endpoint por escenario con solo sus eventos, o uno con varios eventos y un Router en Make que filtre por event. Lo primero es más fácil de mantener; lo segundo usa menos endpoints.
Los endpoints que registras a mano cuentan dentro del límite de webhooks de tu plan: 16 en Gratis, Starter y Pro; 32 en Scale; 100 en Developer.
Entregas y reintentos
Cada endpoint guarda un registro de entregas con el estado, el tiempo de respuesta y la respuesta de Make. Si Make no responde, Cord reintenta la entrega. Como el id no cambia entre reintentos, agrega en Make un filtro o un almacén de datos para no procesar dos veces el mismo id.
Trata la URL del webhook de Make como un secreto. Make no verifica la firma de Cord, así que cualquiera que conozca la URL podría mandarle datos falsos a tu escenario. No la compartas y, si crees que se filtró, borra el endpoint en Cord, crea un webhook nuevo en Make y registra la URL nueva.
Crear o actualizar datos en Cord
- Crea una llave. En API, en el panel de Desarrolladores, crea una llave secreta con alcance de escritura. Se muestra una sola vez; guárdala en la conexión de Make, no en un texto del escenario.
- Agrega HTTP › Make a request en tu escenario.
- Configúralo:
- URL: el endpoint, por ejemplo
https://cordhq.app/api/v1/clientes. - Method:
POSTpara crear,PATCHpara actualizar,GETpara buscar. - Headers:
AuthorizationconBearerseguido de tu llave, yContent-Typeconapplication/json. - Body type:
Raw, con Content type JSON y los campos del recurso. - Parse response: activado, para usar la respuesta en los siguientes módulos.
- URL: el endpoint, por ejemplo
- Evita duplicados con el header
Idempotency-Key(ver abajo).
Qué puedes hacer
| Quieres | Petición |
|---|---|
| Buscar un cliente por correo antes de crearlo | GET /api/v1/clientes?email=correo@cliente.com |
| Crear un cliente | POST /api/v1/clientes con al menos empresa |
| Actualizar el contacto de un cliente | PATCH /api/v1/clientes/{id} con contacto, email, telefono, etc. |
| Buscar una cotización por folio | GET /api/v1/cotizaciones?folio=COT-00104 |
| Crear una cotización | POST /api/v1/cotizaciones |
| Enviar, aprobar, rechazar o marcar pagada una cotización | POST /api/v1/cotizaciones/{id} con action: send, resend, approve, reject o mark_paid |
| Crear una tarea | POST /api/v1/tareas con titulo y, opcional, due_date y cotizacion_id |
Los campos de cada endpoint: Clientes, Cotizaciones y Tareas.
Evitar duplicados
Make puede reintentar un módulo. Para que un reintento no cree el mismo cliente dos veces, agrega el header Idempotency-Key con un valor fijo para esa operación, por ejemplo el id del evento que la originó o el id de la fila de tu hoja de cálculo. Si Cord ya recibió esa llave con la misma petición, devuelve el resultado original en lugar de crear otro registro.
Llaves de prueba
Con una llave sk_test_… tu escenario trabaja sobre el entorno de prueba de tu cuenta, aislado de tus datos reales. Úsala mientras armas el escenario y cámbiala por la sk_live_… al terminar.
Ejemplos de escenarios
- Cotización aprobada → hoja de cálculo: Custom webhook con
quote.approved→ Google Sheets › Add a row con folio, cliente y total. - Formulario → cliente en Cord: Typeform › Watch responses → HTTP
GET /api/v1/clientes?email=→ si no existe, HTTPPOST /api/v1/clientes. - Factura pagada → contabilidad: Custom webhook con
invoice.paid→ tu sistema contable. - Pago en otra plataforma → marcar pagada en Cord: el disparador de tu plataforma → HTTP
GET /api/v1/cotizaciones?folio=→ HTTPPOST /api/v1/cotizaciones/{id}con{"action":"mark_paid"}.
Errores comunes
| Respuesta de Cord | Causa | Qué hacer |
|---|---|---|
| 401 | Falta la llave, está mal copiada o fue revocada. | Revisa el header Authorization: Bearer sk_live_…. |
| 403 | La llave es de solo lectura. | Crea una llave con alcance de escritura. |
| 404 | El id no existe en tu organización. | Revisa que mapeaste el id correcto, no el folio. |
409 invalid_state |
La acción no aplica al estado actual, por ejemplo aprobar un borrador. | Revisa el estado de la cotización antes de la acción. |
422 idempotency_key_reused |
Usaste la misma Idempotency-Key con otra petición. |
Usa una clave distinta por operación. |
| 429 | Superaste el límite por minuto o la cuota mensual. | Agrega una pausa entre módulos o reduce la frecuencia. |
Más en Errores de la API.