Un ERP solo es una pieza. La automatización empieza cuando ese ERP conversa con WhatsApp (donde está tu cliente), con un agente IA (que cualifica, vende y atiende) y con tu CRM (donde trackeas el ciclo de venta). Esta guía te muestra exactamente cómo se conectan estas piezas en producción, con código de muestra y los patrones que hemos probado en proyectos reales mexicanos.

Si manejas Aspel, Contpaqi, Bind, Odoo o cualquier otro ERP — y quieres que tu equipo y tus clientes operen en WhatsApp en lugar de aprender otro software — esta es la arquitectura que funciona.

La arquitectura de referencia

Antes de meternos en código, esta es la pila técnica que usamos en 9 de cada 10 proyectos:

Paso 1: autenticación con cada API

Cada API tiene su forma. Estas son las cuatro que más vas a tocar:

OAuth 2.0 (Microsoft Dynamics, HubSpot, Pipedrive)

Tienes que registrar una app en el panel del proveedor, conseguir client_id + client_secret y manejar refresh_tokens. En n8n hay módulos pre-construidos. En código propio (Python/Node) el flujo es estándar OAuth.

Bearer token (Bind ERP, Holded, Defontana)

Generas un API key desde el admin del ERP y lo pegas en el header Authorization: Bearer XXX. Lo más simple. Cuidado con rotación: cuando rotes el token, recuerda actualizar todos los workflows que lo usan.

SDK COM o conexión directa SQL (Aspel, Contpaqi)

El proceso aquí es: levanta un servidor Windows con el SDK del ERP, expones una API REST tuya encima (FastAPI o ASP.NET Core), y desde n8n llamas a esa API tuya. Es trabajo extra de una semana pero te ahorra repetir SDK calls en cada integración.

WhatsApp Business Cloud API

Necesitas: un número Business verificado, token permanente desde Meta for Developers, y un webhook expuesto a internet (puede ser Cloudflare Tunnel, ngrok en dev, o tu servidor con dominio HTTPS). El webhook recibe POST cada vez que llega un mensaje.

Paso 2: el flujo "nuevo pedido" (ERP ← WhatsApp ← agente IA)

Este es el caso de uso más rentable. Un cliente escribe a tu número de WhatsApp y termina con un pedido cargado en el ERP, sin que un humano toque nada. La secuencia:

  1. Llega mensaje a WhatsApp Cloud API. Meta envía POST al webhook que tienes en n8n/Make.
  2. n8n recibe, busca el número en tu Postgres. Si es cliente conocido, recupera contexto (últimos pedidos, condiciones). Si es nuevo, lo registra.
  3. n8n manda el mensaje + contexto al modelo IA (GPT-4o o Claude). Le pasas un system prompt con tu catálogo, tu política de descuentos y las reglas de cierre.
  4. El modelo responde con un objeto JSON estructurado: {intent: "pedido", productos: [...], cantidad, descuento_solicitado, debe_escalar: false}.
  5. n8n valida JSON contra schema. Si debe_escalar es true, ruta al humano.
  6. Si no, n8n consulta stock al ERP vía API. Si hay stock, crea pedido en el ERP, genera CFDI si aplica, marca el pedido en HubSpot.
  7. n8n responde al cliente por WhatsApp con confirmación y link de pago / aviso de envío.

Código de muestra: paso 4 con OpenAI structured outputs

import openai

system_prompt = """Eres el agente de ventas de [NEGOCIO].
Catálogo: [lista de productos].
Política de descuento: máximo 5% sin escalar.
Si el cliente pide algo fuera del catálogo, escalar a humano.
Responde siempre en JSON con schema {intent, productos, cantidad, descuento_solicitado, debe_escalar, mensaje_respuesta}.
"""

response = openai.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": mensaje_cliente}
    ],
    response_format={"type": "json_schema", "json_schema": ...}
)

Paso 3: el flujo "estado de pedido" (cliente pregunta → ERP responde)

Otro caso muy rentable. El cliente pregunta "¿dónde está mi pedido?" y la IA contesta sin mover a un humano.

  1. Mensaje llega a WhatsApp.
  2. n8n identifica intent = "consultar pedido".
  3. n8n llama al ERP: GET /api/pedidos?cliente_id=X&estatus=activo.
  4. El agente IA recibe la lista, decide qué decir según contexto (si hay retraso, ofrecer disculpa; si está en ruta, dar tracking).
  5. Responde por WhatsApp.

Ratio de resolución sin humano en proyectos reales México: 70-85% según el catálogo de respuestas.

Paso 4: sincronizar el CRM con el ERP

Si el cliente cierra una venta por WhatsApp, no quieres tener datos a medias entre ERP y CRM. Usa este patrón:

Implementación práctica: usa webhooks en ambos lados (HubSpot tiene "deal stage changed", Bind tiene "factura emitida") y un middleware (n8n) que orquesta. La regla de oro: nunca dejes que un sistema haga commit sin que el middleware lo sepa.

Paso 5: manejo de errores que evita ruptura en producción

Tres patrones que aprendimos a las malas:

Idempotencia

Cada llamada al ERP debe poder repetirse sin crear duplicados. La forma más simple: incluye un external_id con el ID del mensaje de WhatsApp + timestamp. Antes de crear cualquier registro en ERP, verifica que ese external_id no existe ya.

Retry con backoff exponencial

Si la API del ERP devuelve 500 o timeout, no la machaques. Reintenta a 1s, 2s, 4s, 8s, 16s. Si después de 5 intentos sigue fallando, log + alerta + mensaje al cliente "estamos validando, te confirmo en breve".

Dead letter queue

Cualquier mensaje que no se haya podido procesar después de retry va a una cola separada para que un humano lo revise. No debe haber jamás un mensaje "perdido".

Costos reales del stack en México 2026

Comparar contra el costo de un agente humano de atención al cliente full-time (15-25 mil pesos al mes en México). El ROI es evidente desde el primer mes para volúmenes desde 500 conversaciones mensuales.

Qué hacer si tu ERP no tiene API decente

Si tu cliente está en Aspel o Contpaqi y la API es limitada, el patrón que funciona es:

  1. Levantar un servidor Windows con el SDK del ERP instalado.
  2. Construir una API REST propia (FastAPI o ASP.NET Core) con los endpoints que necesitas: POST /pedidos, GET /clientes/{id}, etc.
  3. Conectar esa API tuya con n8n exactamente como conectarías un ERP con API moderna.
  4. Ya tienes un wrapper reutilizable para futuras integraciones.

Costo del wrapper: 4-6 semanas de un desarrollador senior. Lo recuperas en la primera integración que evita repetir SDK calls.

Próximo paso

Si quieres que veamos juntos cómo conectar tu ERP con WhatsApp + IA, en Uniamos hacemos diagnóstico gratis de 30 minutos: nos dices qué ERP usas, qué casos quieres resolver y te enviamos la arquitectura recomendada con estimación de costo y plazo. Sin compromiso.