Automatización con IA

Sincronización de CRM con Email

Mantén tu CRM actualizado automáticamente con cada interacción de email

Sincronización de CRM con Email

El problema

Cada email que entra a tu bandeja de entrada contiene datos de contacto valiosos: nombre, empresa, cargo, número de teléfono, presupuesto mencionado. Nadie los captura. El CRM queda desactualizado, los contactos nuevos nunca se crean, y cuando el equipo comercial necesita seguir a un lead, tiene que rebuscar en el historial de correos buscando un teléfono que alguien escribió hace tres semanas.

Este flujo intercepta cada email entrante, extrae los datos estructurados del contacto con Claude, y los sincroniza automáticamente a HubSpot y Pipedrive sin intervención humana.

Herramientas necesarias

  • n8n (self-hosted o cloud)
  • Gmail Trigger — detecta emails nuevos en tiempo real
  • HTTP Request (Claude API) — extrae datos estructurados del email
  • HubSpot (node nativo n8n) — crea o actualiza contacto
  • Pipedrive (node nativo n8n) — registra actividad asociada
  • Credenciales: Gmail OAuth2, Anthropic API key, HubSpot API key, Pipedrive API token

Configuración paso a paso

Nodo 1 — Gmail Trigger

  • Event: Message Received
  • Filters → Label: INBOX (solo entrada, no enviados)
  • Include Spam: false
  • Poll every: 1 minute
  • Output fields necesarios: from, subject, snippet, body.plain

Nodo 2 — HTTP Request (Claude API)

  • Method: POST
  • URL: https://api.anthropic.com/v1/messages
  • Headers:
    • x-api-key: Anthropic API key (desde Credentials)
    • anthropic-version: 2023-06-01
    • Content-Type: application/json
  • Body → JSON raw:
{
  "model": "claude-haiku-4-5",
  "max_tokens": 400,
  "messages": [
    {
      "role": "user",
      "content": "{{ $node['Gmail Trigger'].json.prompt_text }}"
    }
  ]
}
  • Antes de este nodo, usa un Set node para construir prompt_text con el cuerpo del email

Nodo 3 — Code node (parsear JSON de Claude)

  • Extrae el texto de $json.content[0].text
  • Parsea el JSON devuelto por Claude: JSON.parse(items[0].json.content[0].text)
  • Output: objeto con campos nombre, email, empresa, cargo, telefono, asunto_interes

Nodo 4 — HubSpot (Create/Update Contact)

  • Resource: Contact
  • Operation: Upsert (crea si no existe, actualiza si ya está)
  • Matching field: email
  • Properties a mapear:
    • firstname: {{ $json.nombre.split(' ')[0] }}
    • lastname: {{ $json.nombre.split(' ').slice(1).join(' ') }}
    • company: {{ $json.empresa }}
    • jobtitle: {{ $json.cargo }}
    • phone: {{ $json.telefono }}
    • hs_lead_status: NEW

Nodo 5 — Pipedrive (Create Activity)

  • Resource: Activity
  • Operation: Create
  • Type: email
  • Subject: Email recibido: {{ $node['Gmail Trigger'].json.subject }}
  • Note: {{ $json.asunto_interes }}
  • Done: true
  • Person: buscar por email (usar HTTP Request a Pipedrive API si el nodo nativo no soporta búsqueda)

Ejemplo de prompt IA

Extrae los datos de contacto del siguiente email y devuelve ÚNICAMENTE un objeto JSON válido, sin texto adicional.

REMITENTE: {{ $node['Gmail Trigger'].json.from }}
ASUNTO: {{ $node['Gmail Trigger'].json.subject }}
CUERPO:
{{ $node['Gmail Trigger'].json.body.plain.substring(0, 1500) }}

Devuelve este JSON exacto (usa null si no encuentras el dato):
{
  "nombre": "nombre completo del remitente",
  "email": "dirección de email",
  "empresa": "nombre de la empresa",
  "cargo": "puesto o rol",
  "telefono": "número con prefijo si aparece",
  "asunto_interes": "en una frase qué quiere o consulta este contacto"
}

Ahorro estimado

  • Actualización manual de CRM: 2 minutos por email eliminados
  • Con 40 emails comerciales/semana: 1h 20min ahorradas semanalmente
  • Tasa de contactos correctamente registrados: de ~30% a ~95%
  • Seguimientos perdidos por datos faltantes: prácticamente eliminados