Conecta Rivalwin con n8n | Integraciones
Integración

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.

~15 minutos de configuración
Sin nodo oficial — vía HTTP Request
Autenticación vía API Key

Requisitos previos
🔑

API Key de Rivalwin

Generada desde Integraciones & API Keys en tu panel
⚙️

n8n instalado y activo

Cloud, self-hosted o desktop — cualquier versión funciona
🏷️

rival_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 Rivalwin
El flujo asíncrono en 2 pasos

La API de Rivalwin es asíncrona. Primero creas el informe y recibes un hash; luego consultas el estado hasta obtener los datos completos.

Paso 1
POST /new_report
Envías los parámetros del informe. Recibes un hash identificador de forma inmediata.
Paso 2
POST /report_status (cada 20–30 s)
Consultas el estado con el hash. Cuando es DONE, el campo report tiene todos los datos.
Resultado
Datos del informe disponibles
Anuncios, KPIs, demografía, análisis de IA y PDF. Listo para enrutar a Slack, Sheets, email, etc.
ℹ️
Tiempo de procesamiento: Los informes tardan entre 1 y 5 minutos en generarse dependiendo del volumen de anuncios y la plataforma.
Armando el flujo en n8n

Vamos a crear un flujo completo que genera un informe de Meta Ads, espera el resultado y lo procesa. Puedes adaptarlo a cualquier plataforma.

01
Trigger

Configura el disparador del flujo

Abre n8n y crea un nuevo workflow. Elige el nodo de trigger según tu caso de uso.

Schedule Trigger
o
Webhook
o
Manual Trigger

Para testear usa Manual Trigger. Para producción, Schedule Trigger te permite ejecutarlo automáticamente, por ejemplo todos los lunes a las 9:00.

Editor de n8n con el nodo trigger configurado ampliar
02
HTTP Request

Crea el informe con el nodo HTTP Request

Añade un nodo HTTP Request y configúralo para llamar al endpoint /new_report.

CampoValor
MethodPOST
URLhttps://rivalwin.com/api/v1/meta/companies/new_report
Header: X-API-KeyTu API Key de Rivalwin
Header: Content-Typeapplication/json
Body typeJSON

Body JSON del request:

JSON — Body 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"
}
⚠️
date_to debe ser como mínimo anteayer. No se permiten fechas futuras ni el día actual. La expresión $now.minus(2, 'days') lo calcula automáticamente.
Panel de configuración del nodo HTTP Request con headers y body ampliar

Respuesta exitosa — guarda el campo hash para el siguiente paso:

JSON — Respuesta 202
{
  "hash": "abc123def456...",
  "status": "PENDING",
  "created_at": "2026-04-20 09:00:00"
}
03
Espera + Polling

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.

HTTP Request
/new_report
Wait
30 s
HTTP Request
/report_status

Body del segundo HTTP Request, referenciando el hash del nodo anterior:

JSON — Body para /report_status
{
  "hash": "{{ $('HTTP Request').item.json.hash }}"
}
Nodo Wait configurado en 30 segundos y segundo HTTP Request ampliar
04
Lógica condicional

Verifica el estado con un nodo IF

Añade un nodo IF que evalúe el campo status de la respuesta.

PENDINGEn cola — vuelve a esperar y a consultar
PROCESSINGGenerándose — vuelve a esperar y a consultar
DONEListo — procesa el campo report con todos los datos
ERRORHa fallado — gestiona el error y notifica si es necesario

Configuración del nodo IF:

  • Condición: {{ $json.status }} equals DONE
  • True → procesa el informe
  • False → si es ERROR termina con Stop and Error; si es PENDING o PROCESSING vuelve al Wait
💡
Para evitar bucles infinitos, usa un nodo Code que cuente los intentos y corte tras 10 reintentos (unos 5 minutos de espera en total).
Flujo completo con el nodo IF y el bucle de polling visible ampliar
05
Procesamiento

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.

JavaScript — Nodo Code en n8n
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 }
}];
Nodo Code con el output de datos procesados ampliar
06
Destino final

Envía los datos donde los necesitas

Con los datos procesados, conecta cualquier nodo destino. Algunos ejemplos:

Slack
Google Sheets
Gmail
Notion
Airtable

Ejemplo de mensaje de Slack con el resumen del informe:

Mensaje Slack
🔍 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 }}
Usar webhook en lugar de polling

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.

Ventaja: El webhook es más eficiente. En lugar de consultar cada 30 segundos, Rivalwin llama a tu URL de n8n automáticamente cuando el informe termina.
  1. En n8n, crea un workflow con un nodo Webhook como trigger.
  2. Copia la URL pública del webhook (ej: https://tu-n8n.com/webhook/rivalwin).
  3. En Rivalwin, ve a Integraciones & API Keys y pega esa URL en el campo Webhook.
  4. Cuando generes un informe, Rivalwin enviará el payload completo a tu URL en cuanto termine.
Panel de Integraciones de Rivalwin con el campo webhook configurado ampliar
Errores comunes y cómo resolverlos
CódigoErrorSolución en n8n
401invalid_api_keyComprueba que el header X-API-Key esté correctamente configurado en el nodo HTTP Request
402insufficient_creditsRevisa los créditos en tu panel. Añade una rama de error en el IF para que te notifique
403api_not_in_planTu plan no incluye acceso a la API. Actualiza el plan en Rivalwin
404rival_not_foundEl rival_ref no existe. Verifica el ID en tu panel
429cooldown_activeEspera al menos 10 segundos entre informes. Aumenta el tiempo del nodo Wait
400invalid_date_rangedate_to no puede ser hoy ni una fecha futura. Usa $now.minus(2, 'days')