Conecta Rivalwin
con n8n
Automatiza la generación de informes de inteligencia competitiva directamente desde tus flujos de n8n. Lanza análisis, espera los resultados y envíalos donde los necesitas — sin intervención manual.
API Key de Rivalwin
Generada desde Integraciones & API Keys en tu paneln8n instalado y activo
Cloud, self-hosted o desktop — cualquier versión funcionarival_ref del competidor
El ID interno del rival que quieres analizar (ej: rvl_4a7e9f12)Plan con acceso a API
Comprueba que tu plan incluya acceso a la API de RivalwinLa API de Rivalwin es asíncrona. Primero creas el informe y recibes un hash; luego consultas el estado hasta obtener los datos completos.
hash identificador de forma inmediata.hash. Cuando es DONE, el campo report tiene todos los datos.Vamos a crear un flujo completo que genera un informe de Meta Ads, espera el resultado y lo procesa. Puedes adaptarlo a cualquier plataforma.
Configura el disparador del flujo
Abre n8n y crea un nuevo workflow. Elige el nodo de trigger según tu caso de uso.
Para testear usa Manual Trigger. Para producción, Schedule Trigger te permite ejecutarlo automáticamente, por ejemplo todos los lunes a las 9:00.
ampliar
Crea el informe con el nodo HTTP Request
Añade un nodo HTTP Request y configúralo para llamar al endpoint /new_report.
| Campo | Valor |
|---|---|
| Method | POST |
| URL | https://rivalwin.com/api/v1/meta/companies/new_report |
| Header: X-API-Key | Tu API Key de Rivalwin |
| Header: Content-Type | application/json |
| Body type | JSON |
Body JSON del request:
{
"rival_ref": "rvl_4a7e9f12",
"date_from": "{{ $now.minus(30, 'days').toFormat('yyyy-MM-dd') }}",
"date_to": "{{ $now.minus(2, 'days').toFormat('yyyy-MM-dd') }}",
"country": "ES"
}
$now.minus(2, 'days') lo calcula automáticamente.
ampliar
Respuesta exitosa — guarda el campo hash para el siguiente paso:
{
"hash": "abc123def456...",
"status": "PENDING",
"created_at": "2026-04-20 09:00:00"
}
Espera con un nodo Wait y consulta el estado
Añade un nodo Wait de 30 segundos antes de consultar el estado. Luego un segundo HTTP Request llama a /report_status.
Body del segundo HTTP Request, referenciando el hash del nodo anterior:
{
"hash": "{{ $('HTTP Request').item.json.hash }}"
}
ampliar
Verifica el estado con un nodo IF
Añade un nodo IF que evalúe el campo status de la respuesta.
report- Condición:
{{ $json.status }}equalsDONE - True → procesa el informe
- False → si ERROR usa Stop and Error; si PENDING/PROCESSING vuelve al Wait
ampliar
Extrae los datos del informe con un nodo Code
Cuando el estado es DONE, el campo report contiene toda la información.
const report = $input.item.json.report; // Datos generales const rival = report.rival.name; const totalAds = report.kpis.ads_total; const impressionsMax = report.kpis.impressions_upper; const pdfUrl = report.pdf_url; const aiAnalysis = report.insights.gpt_analysis; // Top 3 anuncios con más alcance const topAds = report.ads .filter(ad => ad.reach != null) .sort((a, b) => b.reach - a.reach) .slice(0, 3) .map(ad => ({ id: ad.ad_id, copy: ad.content ? ad.content.slice(0, 120) + '...' : '(sin texto)', reach: ad.reach, format: ad.display_format, image: ad.image_url || null })); return [{ json: { rival, totalAds, impressionsMax, pdfUrl, aiAnalysis, topAds } }];
ampliar
Envía los datos donde los necesitas
Con los datos procesados, conecta cualquier nodo destino:
Ejemplo de mensaje de Slack con el resumen del informe:
🔍 Nuevo informe de competencia listo
*Competidor:* {{ $json.rival }}
*Anuncios activos:* {{ $json.totalAds }}
*Impresiones estimadas:* {{ $json.impressionsMax }}
*Top anuncio:* {{ $json.topAds[0].copy }}
📄 Ver PDF completo: {{ $json.pdfUrl }}
Si tienes un servidor público, puedes configurar un webhook en Rivalwin para que te notifique automáticamente cuando el informe esté listo.
- En n8n, crea un workflow con un nodo Webhook como trigger.
- Copia la URL pública del webhook (ej:
https://tu-n8n.com/webhook/rivalwin). - En Rivalwin, ve a Integraciones & API Keys y pega esa URL en el campo Webhook.
- Cuando generes un informe, Rivalwin enviará el payload completo a tu URL en cuanto termine.
ampliar
| Código | Error | Solución en n8n |
|---|---|---|
401 | invalid_api_key | Comprueba que el header X-API-Key esté correctamente configurado |
402 | insufficient_credits | Revisa los créditos en tu panel |
403 | api_not_in_plan | Tu plan no incluye acceso a la API. Actualiza el plan en Rivalwin |
404 | rival_not_found | El rival_ref no existe. Verifica el ID en tu panel |
429 | cooldown_active | Espera al menos 10 segundos entre informes. Aumenta el tiempo del nodo Wait |
400 | invalid_date_range | date_to no puede ser hoy ni futuro. Usa $now.minus(2, 'days') |