Skip to content

Migraciones

Recetas para mover una configuración existente desde otra herramienta WhatsApp a qrsgen — preservando todo lo que es portable y dejando claro qué requiere intervención manual.

⚠️ Lo que NO se puede migrar

Las sesiones WhatsApp jamás son portables. WhatsApp Web/Multi-Device vincula las claves criptográficas al device físico que escaneó el QR. Si cambias de cliente (Evolution → qrsgen, Baileys → qrsgen, etc.) el usuario debe re-escanear el QR.

Lo único portable son los datos asociados:

  • Nombres de instancia / inbox.
  • Mapeo número → identificador en tu downstream.
  • Workflows del orquestador.
  • Histórico de mensajes (si tu fuente lo exponía).

Esto es una limitación del protocolo de WhatsApp, no de qrsgen. Cualquier migración entre clientes Multi-Device tiene esta restricción.

Estrategia general

[Plataforma origen]
        │ 1. Inventory: extraer config (nombres, números, inboxes)
   plan.json
        │ 2. Bulk provision: aplicar plan en qrsgen
        │    POST /api/instances por cada uno
   qrsgen con instancias creadas pero state = qr_pending
        │ 3. Re-pairing: usuarios re-escanean QRs uno por uno
        │    (no automatizable — limitación de WhatsApp)
   qrsgen con sessions activas
        │ 4. Webhook switch: el downstream apunta a qrsgen
        │    en lugar de la plataforma origen
   qrsgen operativo, plataforma origen apagada
        │ 5. Validate: smoke test por instancia
       FIN

Por origen

  • Evolution API — el más común en comunidad open-source. TypeScript / Express / Prisma sobre Postgres o MySQL; backend WhatsApp basado en Baileys. Origen y tracción fuerte en LATAM (especialmente Brasil).
  • whatsapp-web.js — librería Node.js que controla un Chromium headless via Puppeteer. Estado en filesystem (.wwebjs_auth/) o store remoto (MongoDB).
  • Baileys / WPPConnect — librería TypeScript que habla el protocolo WhatsApp Web directamente (sin browser). Estado en filesystem multi-archivo.
  • SaaS — overview — qué obtienes y qué pierdes al pasar de un SaaS de pago a self-host. Sin acceso a DB del provider; solo a su API.
  • Whapi.cloud — popular en EU/US.
  • MaytAPI — popular en LATAM.

Migración inversa (cómo salir de qrsgen)

Si decides usar otra plataforma, sigue Salir de qrsgen — la misma lógica, pero al revés. Documentamos esto explícitamente para que sepas que no hay lock-in.

Herramientas

Las recetas usan los scripts de tools/migrate/ del repo:

  • bulk-provision.py — recibe un plan JSON y crea instancias en qrsgen.
  • validate.py — comprueba que cada instancia provisionada responde.
  • export-config.py — exporta toda la config actual de qrsgen a JSON (útil para migrar entre VPS o como backup adicional).

Todos los scripts están en Python con httpx — funcionan en cualquier host con Python 3.10+ y pip install httpx.

Glosario

Migración: trasladar una configuración / datos de una plataforma a otra. En el contexto WhatsApp implica re-pareado obligatorio porque las claves del protocolo no son portables.

Re-pairing: proceso donde el usuario vuelve a escanear el QR en su WhatsApp móvil. Imposible de automatizar — Meta lo exige por diseño.

Bulk provisioning: crear muchas instancias de golpe vía POST /api/instances programáticamente, normalmente a partir de un plan extraído de la plataforma origen.

Plan JSON: estructura intermedia entre extracción e import. Permite revisar y editar antes de aplicar.

Webhook switch: cambiar la URL del downstream del orquestador para que apunte a qrsgen en lugar de la plataforma origen. Suele hacerse después del re-pairing exitoso.

Lock-in: situación donde cambiar de plataforma es prohibitivamente caro o destructivo. qrsgen lo evita exponiendo export-config.py y una API REST estándar.

Honest dealing: documentar cómo salir del producto con la misma claridad que cómo entrar. Genera confianza B2B.