Conecta RastroAff con Zapier mediante webhooks: conversiones a Sheets, Slack o tu CRM
Envía conversiones, registros de afiliados y pagos de RastroAff a Zapier, Make o n8n con webhooks firmados: configuración, el JSON que recibes y cómo verificarlo.
Actualizado el 2 nov 2026
Los webhooks permiten que RastroAff avise a otros sistemas de los eventos en cuanto ocurren: una conversión nueva, un cambio de estado, un afiliado nuevo o aprobado, un pago. Con Zapier (o Make, o n8n) puedes añadir una fila a Google Sheets, publicar en Slack o crear un contacto en tu CRM, sin escribir código.
Eventos que puedes enviar
| Evento | Cuándo |
|---|---|
conversion.created |
Se registra una conversión nueva |
conversion.status_changed |
Una conversión se aprueba, se rechaza o se revierte |
affiliate.signed_up |
Un afiliado se registra |
affiliate.approved |
Apruebas a un afiliado |
payout.requested |
Un afiliado pide un pago |
payout.status_changed |
Un pago se aprueba, se paga o se rechaza |
1. Crea el disparador en Zapier
- En Zapier, crea un Zap y elige Webhooks by Zapier como disparador (disponible en los planes de pago de Zapier).
- Elige Catch Hook y continúa.
- Copia la URL que muestra Zapier (empieza por
https://hooks.zapier.com/hooks/catch/).
2. Añade el webhook en RastroAff
- En el panel de tu red, abre API y busca Webhooks (administradores, desde el plan Starter).
- Pega la URL de Zapier, elige los eventos y pulsa Crear webhook.
- Copia el secreto de firma que aparece una sola vez. Solo lo necesitas si verificas tú las firmas.
- Pulsa Enviar prueba. RastroAff envía un evento
webhook.testy muestra la respuesta de Zapier.
3. Termina el Zap
De vuelta en Zapier, pulsa Test trigger: verás los campos del evento de prueba. Después de la primera conversión real, aparecen también los campos de la conversión. Añade una acción, por ejemplo Google Sheets → Create Spreadsheet Row o Slack → Send Channel Message, y asigna los campos.
Qué envía RastroAff
Cada petición es un POST con JSON:
{
"id": "cmw1…",
"event": "conversion.created",
"createdAt": "2026-10-30T15:46:34.684Z",
"data": {
"id": "cmw2…",
"status": "approved",
"offer": "CMP-7K2M9XA1",
"affiliate": "AFF-78HHEKM6",
"clickId": "01JCW7R2KQ8M4T…",
"transactionId": "order-1042",
"goal": null,
"payout": 25,
"revenue": 30,
"saleAmount": 99,
"currency": "EUR",
"country": "ES",
"sub1": "facebook",
"sub2": null,
"sub3": null
}
}
Los cambios de estado incluyen también previousStatus. Cabeceras: X-RastroAff-Event, X-RastroAff-Delivery (el ID de la entrega) y X-RastroAff-Signature.
Reintentos
Si tu endpoint no responde con un estado 2xx, RastroAff lo reintenta al cabo de 1 minuto, 5 minutos, 30 minutos, 2 horas, 6 horas y 12 horas. La página de la API muestra las entregas recientes y sus respuestas. Usa el id de la entrega para ignorar duplicados.
Verificar la firma (en tu propio servidor)
X-RastroAff-Signature tiene este aspecto: t=1730303194,v1=5f2b…. Calcula el HMAC-SHA256 de t + "." + cuerpo en bruto con tu secreto de firma y compáralo con v1; rechaza las peticiones de hace más de 5 minutos.
import crypto from "node:crypto";
function verify(secret, rawBody, header) {
const parts = Object.fromEntries(header.split(",").map((p) => p.split("=")));
if (Math.abs(Date.now() / 1000 - Number(parts.t)) > 300) return false;
const expected = crypto.createHmac("sha256", secret).update(`${parts.t}.${rawBody}`).digest("hex");
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}
Zapier y Make no comprueban las firmas; la propia URL es el secreto, así que no la compartas.