Saltar al contenido principal

Guía de integración con Make.com

Respuesta rápida: Usa el editor visual de flujos de Make.com con un trigger “Custom webhook”. Apunta webhook_url de Surmado a ese webhook, filtra por event = report.completed y report.product, y envía los datos a Google Sheets / Slack / Airtable / Notion. Para obtener datos más profundos, agrega un módulo HTTP que llame a GET https://api.surmado.com/v1/reports/{{1.report.id}} con autenticación Bearer.

Tiempo de lectura: 14 minutos


Requisitos previos

  1. Cuenta de Make.com (el plan gratuito sirve para poco volumen; Core, $9/mes, para uso regular)
  2. Clave de API de Surmado (sur_live_...): créala en app.surmado.com → Settings → API Keys
  3. Una app de destino (Google Sheets, Slack, Airtable, Notion, etc.)

Requisitos de plan de Make

Plan gratuito:

  • 1,000 operaciones/mes
  • Límite de 2 escenarios
  • Suficiente para 1-5 clientes con poco volumen

Plan Core ($9/mes):

  • 10,000 operaciones/mes
  • Escenarios ilimitados
  • Recomendado para uso regular

Plan Pro ($16/mes):

  • 10,000 operaciones y límites de datos más altos
  • Variables personalizadas, ejecución prioritaria
  • Para agencias con más de 10 clientes

El patrón de integración

  1. Trigger: “Webhooks → Custom webhook”. Make te da una URL única.
  2. Configura Surmado para enviar por POST los informes completados a esa URL con webhook_url al crear un informe.
  3. Filtra por event y report.product.
  4. Lee el payload anidado con la notación de puntos de Make (1.report.summary.presence_score).
  5. (Opcional) Un módulo HTTP para obtener datos más profundos por la API REST.
  6. Actúa: escribe en la app de destino.

Ejemplo de payload

{
  "event": "report.completed",
  "timestamp": "2026-04-15T12:00:00+00:00",
  "report": {
    "id": "rpt_abc123xyz",
    "token": "SIG-2026-04-A1B2C",
    "product": "signal",
    "status": "completed",
    "tier": "basic",
    "data_url": "https://api.surmado.com/v1/reports/rpt_abc123xyz",
    "pdf_url": "https://api.surmado.com/v1/reports/view/VIEW_TOKEN",
    "summary": {
      "business_name": "Acme Coffee Roasters",
      "presence_score": 34.2,
      "authority_score": 42.7,
      "competitive_rank": 4,
      "top_competitor": "Blue Bottle"
    }
  }
}

Los informes de Strategy ("product": "solutions") no tienen objeto summary: solo report.token y report.pdf_url.


Flujo 1: AI Visibility a Google Sheets

Módulos del escenario

Módulo 1: Webhooks, Custom webhook

  • Agrega un webhook nuevo. Make genera una URL como https://hook.eu2.make.com/abc123def456.
  • Haz clic en Determine data structure y genera un informe de muestra de Surmado (mira el ejemplo con curl más abajo) para que Make capture la forma del payload.

Crea la muestra con:

curl -X POST https://api.surmado.com/v1/reports/signal \
  -H "Authorization: Bearer sur_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "brand_slug": "acme_corp",
    "url": "https://acme.com",
    "email": "founder@acme.com",
    "industry": "B2B SaaS",
    "location": "United States",
    "persona": "Small business owners",
    "pain_points": "Losing track of customer conversations",
    "brand_details": "Simple CRM with email integration",
    "direct_competitors": "HubSpot, Pipedrive",
    "webhook_url": "https://hook.eu2.make.com/abc123def456"
  }'

Módulo 2: Tools, Filter

Condición: 1.event Equal to report.completed AND 1.report.product Equal to signal.

Módulo 3: Google Sheets, Add a Row

Asigna las columnas:

  • Date: {{1.timestamp}}
  • Token: {{1.report.token}}
  • Business: {{1.report.summary.business_name}}
  • Presence Score: {{1.report.summary.presence_score}}
  • Authority Score: {{1.report.summary.authority_score}}
  • Competitive Rank: {{1.report.summary.competitive_rank}}
  • Top Competitor: {{1.report.summary.top_competitor}}

Operaciones usadas por ejecución: 3.


Flujo 2: Site Audit con alertas condicionales

Un solo escenario que escribe cada Site Audit en Google Sheets y avisa por Slack solo cuando performance_score < 70.

Módulo 1: Custom webhook (reutiliza el del Flujo 1 o crea uno nuevo).

Módulo 2: Filter: 1.event = report.completed AND 1.report.product = scan.

Módulo 3: Google Sheets: Add a Row con los campos del resumen de Site Audit (seo_score, performance_score, accessibility_score, total_pages, critical_issues_count).

Módulo 4: Router: se divide en dos rutas.

  • Ruta A (siempre): continúa hasta terminar.
  • Ruta B: Filter 1.report.summary.performance_score < 70 → Slack: Create a message.

Plantilla del mensaje de Slack:

:warning: Performance regression on *{{1.report.summary.business_name}}*

Performance: {{1.report.summary.performance_score}} (below 70 threshold)
SEO: {{1.report.summary.seo_score}}
Accessibility: {{1.report.summary.accessibility_score}}
Critical issues: {{1.report.summary.critical_issues_count}}

View report: {{1.report.pdf_url}}

Operaciones usadas por ejecución: 4-5 según la ruta que se tome.


Flujo 3: correo con el resumen de Strategy

Los informes de Strategy no incluyen resumen. El patrón es este:

  1. Trigger Custom webhook.
  2. Filter: 1.event = report.completed AND 1.report.product = solutions.
  3. Gmail / Email: envía un correo con el enlace al PDF.

Cuerpo del correo:

<p>Strategy report <code>{{1.report.token}}</code> has been delivered.</p>
<p><a href="{{1.report.pdf_url}}">View the full report (PDF)</a></p>

Operaciones: 2.


Cómo obtener datos más profundos

El resumen del webhook cubre la mayoría de las necesidades. Para desgloses por plataforma (por ejemplo, presencia en ChatGPT frente a Claude) o problemas por página de Site Audit, agrega un módulo HTTP después del filtro:

Módulo: HTTP, Make a request

  • URL: https://api.surmado.com/v1/reports/{{1.report.id}}
  • Method: GET
  • Headers:
    • Name: Authorization
    • Value: Bearer sur_live_YOUR_API_KEY
  • Parse response: Yes

Luego, los módulos siguientes pueden usar {{2.public_intelligence.data.platform_variance.chatgpt.presence_score}} o {{2.public_intelligence.data.audit_data.enrichment.content_gaps.executive_summary}}.

Seguridad: guarda tu clave de API en una Connection o una Custom Variable de Make en lugar de pegarla directamente en el módulo.


Patrones avanzados

Router por producto

Usa un Router después del webhook para dirigir según 1.report.product:

  • Rama 1: signal → flujo de AI Visibility
  • Rama 2: scan → flujo de Site Audit
  • Rama 3: solutions → resumen de Strategy

Una sola URL de webhook atiende todos los tipos de informe.

Configuración multicliente para agencias

Usa 1.report.summary.business_name como identificador del cliente en una consulta a un Data store para dirigir a cada cliente a su propia pestaña de la hoja o página de Notion. Crea cada cliente una sola vez como marca de Surmado con POST /v1/brands/ensure y luego reutiliza el brand_slug en cada informe.


Formatos de token

Prefijos de los Intelligence Tokens:

  • AI Visibility: SIG-YYYY-MM-XXXXX (regex: SIG-\d{4}-\d{2}-[A-Z0-9]{5})
  • Site Audit: SCN-YYYY-MM-XXXXX (regex: SCN-\d{4}-\d{2}-[A-Z0-9]{5})
  • Strategy: SOL-YYYY-MM-XXXXX (regex: SOL-\d{4}-\d{2}-[A-Z0-9]{5})

Los tokens no expiran. Las URL de descarga firmadas de la API REST son válidas por unos 15 minutos. El enlace mágico pdf_url de los webhooks es válido por unos 30 días.


Solución de problemas

El trigger del webhook no se dispara: Confirma que webhook_url se definió en la llamada que crea el informe, y prueba webhook.site como URL de prueba para verificar que Surmado envía los payloads.

Los campos aparecen como undefined en los módulos siguientes: Es posible que el informe no tenga ese campo (por ejemplo, top_competitor es null en marcas sin competidores identificados), o que estés viendo un informe de Strategy, que no incluye resumen. Verifica el producto con 1.report.product.

El módulo HTTP devuelve 401: La clave de API falta o tiene un formato incorrecto. El encabezado debe ser Authorization: Bearer sur_live_... (con Bearer ).

Se usan más operaciones de las esperadas: Cada Router y cada filtro cuenta como una operación por ejecución. Consolida donde puedas: un solo módulo de Google Sheets con valores asignados es más barato que varios módulos.


Relacionado: Guía de integración de la API | Datos estructurados e Intelligence Tokens | Integración con Zapier | Integración con n8n | Integración con Notion