Saltar al contenido

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

  1. En Zapier, crea un Zap y elige Webhooks by Zapier como disparador (disponible en los planes de pago de Zapier).
  2. Elige Catch Hook y continúa.
  3. Copia la URL que muestra Zapier (empieza por https://hooks.zapier.com/hooks/catch/).

2. Añade el webhook en RastroAff

  1. En el panel de tu red, abre API y busca Webhooks (administradores, desde el plan Starter).
  2. Pega la URL de Zapier, elige los eventos y pulsa Crear webhook.
  3. Copia el secreto de firma que aparece una sola vez. Solo lo necesitas si verificas tú las firmas.
  4. Pulsa Enviar prueba. RastroAff envía un evento webhook.test y 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.