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
- Cuenta de Make.com (el plan gratuito sirve para poco volumen; Core, $9/mes, para uso regular)
- Clave de API de Surmado (
sur_live_...): créala en app.surmado.com → Settings → API Keys - 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
- Trigger: “Webhooks → Custom webhook”. Make te da una URL única.
- Configura Surmado para enviar por POST los informes completados a esa URL con
webhook_urlal crear un informe. - Filtra por
eventyreport.product. - Lee el payload anidado con la notación de puntos de Make (
1.report.summary.presence_score). - (Opcional) Un módulo HTTP para obtener datos más profundos por la API REST.
- 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 objetosummary: soloreport.tokenyreport.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:
- Trigger Custom webhook.
- Filter:
1.event = report.completedAND1.report.product = solutions. - 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
- Name:
- 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