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.
/new_report
30 s
/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 con todos los datosConfiguración del nodo IF:
- Condición:
{{ $json.status }}equalsDONE - True → procesa el informe
- False → si es ERROR termina con Stop and Error; si es PENDING o 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. Usa un nodo Code para extraer lo que necesitas.
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. Algunos ejemplos:
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, sin necesidad de consultar periódicamente.
- 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 en el nodo HTTP Request |
402 | insufficient_credits | Revisa los créditos en tu panel. Añade una rama de error en el IF para que te notifique |
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 una fecha futura. Usa $now.minus(2, 'days') |