Saltar al contenido principal

Guía de integraciones

Mandato se conecta con un puñado de servicios de terceros para desplegar todas sus funciones: redacción con IA, autocompletado de direcciones, sincronización de agenda, cobros, cribado de cumplimiento y algunas más. Ninguno es obligatorio: cada función tiene una simulación de reserva, así que la aplicación funciona nada más instalarla. Conectar un servicio sustituye esa simulación por el servicio real.

Esta guía recorre cada integración: qué hace, por qué querrás conectarla y dónde encontrar exactamente las credenciales.

La vía guiada (recomendada)​

Normalmente no necesitas este documento. Dentro de la aplicación, entra en Ajustes → Integraciones. Cada servicio tiene una tarjeta con su estado y un botón Configurar que abre un asistente paso a paso: qué hace el servicio, un enlace para darse de alta, dónde encontrar la clave, un campo para introducirla y un botón Probar conexión. La lista de primeros pasos te anima a conectar al menos tres.

Este documento es la referencia para administradores que prefieren un manual escrito, o que gestionan las variables de entorno del despliegue (Maps, WhatsApp) que no se guardan desde la interfaz.

Dónde se guardan las credenciales​

Hay dos modelos de almacenamiento, según la integración:

  • Claves por despacho: se introducen en el asistente y se guardan cifradas asociadas a tu despacho (Claude, Resend, Recall, Stripe, Holded y OpenSanctions). Cada despacho puede usar su propia cuenta y la clave nunca sale del servidor.
  • Variables de entorno del despliegue: se configuran una sola vez para toda la instalación en el panel de Railway — proyecto mandato → servicio de la aplicación → Variables — (o en .env.local en desarrollo local), porque son de nivel de compilación o de infraestructura (Google Maps, el número y el token de WhatsApp, los secretos de cliente OAuth). Guardar una lanza un nuevo despliegue, que es cuando surte efecto.

Cuando no hay clave del despacho, Mandato recurre a una clave de sistema compartida (ANTHROPIC_API_KEY, …) si está configurada, y en su defecto a los datos de demostración.


Claude AI (Anthropic)​

Qué hace. Claude es el motor de todas las funciones de IA de Mandato: redactar respuestas a clientes, analizar documentos y notas simples, preparar briefings antes de una llamada, resumir reuniones, generar propuestas de honorarios y detectar oportunidades de venta cruzada.

Por qué la necesitas. Sin clave, estas funciones responden con textos de demostración. Con clave, se ejecutan sobre el modelo real y tus datos reales. Anthropic te factura por el uso.

Configuración

  1. Inicia sesión en console.anthropic.com y abre Settings → API Keys.
  2. Pulsa Create Key, ponle un nombre como Mandato y cópiala. Empieza por sk-ant-.
  3. Asegúrate de que tu espacio de trabajo tiene saldo o facturación configurada; de lo contrario las llamadas reales fallarán.
  4. En Mandato: Ajustes → Integraciones → Claude AI → Configurar, pega la clave, pulsa Probar y luego Guardar clave.

Variable de reserva: ANTHROPIC_API_KEY (valor por defecto de todo el sistema).


Google Maps (Places)​

Qué hace. Autocompleta y normaliza direcciones en los formularios de cliente, de caso y de captación. A medida que escribes, Google sugiere direcciones reales y rellena los campos de forma coherente.

Por qué la necesitas. Sin clave, los campos de dirección son texto libre. Con clave se activan las sugerencias en vivo, de modo que las direcciones son precisas y no se duplican.

Configuración

  1. Abre la consola de Google Cloud y crea (o selecciona) un proyecto.

  2. En APIs & Services → Library, activa tanto Maps JavaScript API como Places API.

  3. Ve a Credentials → Create credentials → API key y copia la clave.

  4. Restringe la clave (referentes HTTP → tu dominio) para que no pueda usarse de forma indebida.

  5. Añádela como variable de entorno y vuelve a desplegar:

    NEXT_PUBLIC_GOOGLE_MAPS_API_KEY=AIza...

Es una variable pública y de compilación (el navegador carga el script de Maps), así que se configura en Railway y no en el asistente del despacho. El botón Probar del asistente confirma que la clave carga la biblioteca de Places una vez desplegada.


Google Calendar​

Qué hace. Envía a Google Calendar los plazos de los casos, los vencimientos de las tareas y las reuniones, con un color por área de práctica. Los eventos que etiquetas en Google Calendar vuelven a Mandato.

Por qué la necesitas. Tu equipo ve los plazos procesales donde ya trabaja, y nada se pierde entre dos sistemas.

Configuración

Es una conexión OAuth: no hay ninguna clave que pegar.

  1. En Mandato: Ajustes → Integraciones → Google Calendar → Configurar.
  2. En el paso de conexión, pulsa Conectar Google Calendar.
  3. Inicia sesión con la cuenta de Google del despacho y concede acceso a los eventos de agenda. Mandato pide permiso para gestionar los eventos que él mismo crea; no lee tus eventos personales.

Requisitos del despliegue: un cliente OAuth de Google Cloud (GOOGLE_OAUTH_CLIENT_ID / GOOGLE_OAUTH_CLIENT_SECRET) con el ámbito de Calendar y la URI de redirección de Mandato registrada.


Correo (Gmail, Outlook)​

Qué hace. Conecta un buzón para que los abogados envíen y reciban el correo de sus clientes dentro de Mandato, asociado automáticamente al cliente y al caso correctos. También existe una alternativa por CCO al buzón del sistema: se pone en copia oculta o se reenvía automáticamente el correo de cliente a una dirección del despacho, sin iniciar sesión personal.

Por qué la necesitas. Mantiene toda la conversación con el cliente en el expediente. El buzón del sistema es la opción recomendada por defecto para la conservación documental de la Ley 10/2010 y sobrevive a los cambios de plantilla; OAuth es para despachos que quieran envío y recepción nativos por abogado.

Configuración (OAuth)

  1. Ajustes → Integraciones → Correo → Configurar.
  2. Pulsa Conectar Gmail o Conectar Outlook y autoriza el buzón.

Configuración (buzón del sistema / CCO)

  1. En el mismo asistente, activa Usar un buzón del sistema (CCO).
  2. Indica la dirección del despacho y apunta la regla de reenvío automático de tu buzón al punto de reenvío que se muestra.

Requisitos del despliegue: credenciales de cliente OAuth de Google o de Microsoft para el flujo de buzón nativo.


Resend​

Qué hace. Entrega los correos automáticos de Mandato — bienvenidas a clientes, avisos de factura, recordatorios de cita, encuestas de satisfacción y campañas de marketing — desde tu propio dominio verificado.

Por qué la necesitas. Sin clave, los envíos se simulan para que puedas ver el flujo. Con clave sale correo real, con buena entregabilidad y desde tu dirección con tu marca.

Configuración

  1. Crea una cuenta en resend.com y verifica tu dominio de envío (registros DNS).
  2. Abre API Keys → Create API Key. La clave empieza por re_.
  3. Cópiala en ese momento: no podrás volver a verla.
  4. En Mandato: Ajustes → Integraciones → Resend → Configurar, pega la clave, pulsa Probar y fija el nombre del remitente y el dominio verificado.

Variable de reserva: RESEND_API_KEY.


Recall AI​

Qué hace. Un bot de Recall.ai se une a las videollamadas, captura el audio y produce una transcripción. Después, Claude redacta un resumen y extrae las acciones pendientes, que aparecen en la cronología del caso.

Por qué la necesitas. Convierte las llamadas con clientes en notas y tareas localizables de forma automática, sin que nadie tenga que levantar acta.

Configuración

  1. Date de alta en recall.ai y abre el panel.
  2. Ve a la sección API Keys y crea una clave nueva.
  3. Copia la clave.
  4. En Mandato: Ajustes → Integraciones → Recall.ai → Configurar, pega la clave y pulsa Probar conexión.

Variable de reserva: RECALL_API_KEY. Un despacho puede fijar aquí su propia clave aunque exista una del sistema.


Stripe​

Qué hace. Permite a los clientes pagar las facturas por internet con tarjeta o por transferencia SEPA. Los cobros se liquidan directamente en tu propia cuenta de Stripe.

Por qué la necesitas. Cobras antes y la conciliación es automática. Sin claves, los pagos funcionan en un modo de prueba simulado (se marcan como pagados sin cargar ninguna tarjeta).

Configuración (OAuth, recomendada)

  1. Ajustes → Integraciones → Stripe → Configurar.
  2. Pulsa Conectar con Stripe y autoriza a Mandato. Los fondos se liquidan en tu cuenta.

Configuración (claves manuales)

  1. Abre el panel de Stripe → Developers → API keys.
  2. Copia la clave publicable y la clave secreta.
  3. Pega ambas en la sección manual del asistente y pulsa Probar.

Variable de reserva: STRIPE_SECRET_KEY (y la configuración de Connect para OAuth).


Holded​

Qué hace. Mantiene la facturación sincronizada con Holded. Trae facturas a Mandato y emite nuevas en Holded directamente desde un caso. Holded sigue siendo la fuente de verdad contable.

Por qué la necesitas. Una sola conexión mantiene alineadas la facturación y la contabilidad, sin doble introducción de datos. Mandato no gestiona deliberadamente FacturaE, el SII ni el IVA: eso vive en Holded.

Configuración

  1. Inicia sesión en Holded y abre Configuración → Desarrolladores.
  2. En API key, genera o copia tu clave.
  3. En Mandato: Ajustes → Integraciones → Holded → Configurar, pega la clave, pulsa Probar conexión, luego Conectar y por último Sincronizar ahora.

Sin clave compartida: cada despacho conecta su propia clave de Holded. Mientras no lo haga, las acciones de Holded indican que no está conectado; nunca se simula nada en tus facturas reales.


OpenSanctions​

Qué hace. Criba a los clientes contra OpenSanctions: listas de sanciones, registros de personas con responsabilidad pública (PRP) y listas de vigilancia criminal, a efectos de prevención del blanqueo y conocimiento del cliente.

Por qué la necesitas. Los despachos españoles tienen obligaciones derivadas de la Ley 10/2010. El cribado en vivo señala automáticamente a los clientes de riesgo y puede repetirse de forma periódica. Sin clave funciona con datos de demostración.

Configuración

  1. Crea una cuenta en opensanctions.org.
  2. Abre la página de tu cuenta y localiza (o solicita) tu clave de API. Empieza por os_.
  3. En Mandato: Ajustes → Integraciones → OpenSanctions → Configurar, pega la clave y pulsa Probar clave.
  4. Opcionalmente, activa Cribar automáticamente los clientes nuevos y fija un intervalo de recribado.

Variable de reserva: OPENSANCTIONS_API_KEY.


360dialog (WhatsApp)​

Qué hace. Envía y recibe mensajes de WhatsApp desde el número de WhatsApp Business del despacho a través de 360dialog. Los mensajes entrantes llegan a la bandeja de Comunicaciones, asociados al cliente y al caso.

Por qué la necesitas. Los clientes escriben al despacho, no a un teléfono personal, y cada mensaje queda en el expediente.

Configuración

  1. Crea una cuenta de partner en hub.360dialog.com y da de alta tu número de WhatsApp Business.

  2. Genera una clave de API para el número en el hub de 360dialog.

  3. Configura las credenciales en tu entorno y vuelve a desplegar:

    WHATSAPP_API_KEY=...
    WHATSAPP_PHONE_NUMBER=+34...
    WHATSAPP_WEBHOOK_VERIFY_TOKEN=...
  4. En Mandato: Ajustes → Integraciones → WhatsApp → Configurar. En el paso de conexión, copia la URL del webhook y pégala en el panel de 360dialog para que los mensajes entrantes lleguen a Mandato.

  5. Usa Enviar un mensaje de prueba para confirmar la conexión.

El número y el token son de nivel de infraestructura, así que son variables de entorno y no claves por despacho. La URL del webhook sí es propia de cada despacho y se muestra en el asistente.


España y juzgados​

La página de Integraciones también recoge conexiones específicas de España:

  • Seguimiento del BOE y el BORME: vigila los boletines oficiales por si aparecen menciones relevantes para tus casos. Se activa desde la página de Integraciones.
  • LexNET: véase la sección específica más abajo.
  • AEAT SII (declaración de IVA): próximamente. Requiere un certificado digital FNMT del despacho; por ahora, lleva el registro de IVA manualmente. La caja fuerte de certificados está en Ajustes → Certificados digitales.

LexNET (notificaciones y presentaciones judiciales)​

LexNET funciona sin configuración en modo simulación: la bandeja de entrada, el archivado automático y los escritos de salida se ejecutan contra datos de ejemplo deterministas, sin necesidad de credenciales. La tarjeta de conexión de Ajustes → Integraciones → LexNET indica siempre en qué modo estás: Simulación (ámbar) o Conexión real (verde).

Pasar a real habla SOAP sobre TLS mutuo con la pasarela del Ministerio de Justicia y exige las cuatro cosas siguientes:

  1. Alta en el Ministerio de Justicia. El acceso al servicio web de LexNET lo concede el Ministerio por organización (a través del Colegio de Abogados o de Procuradores, o de la Administración de Justicia autonómica). El alta te proporciona la URL del endpoint de la pasarela y el WSDL de tu versión.
  2. Un certificado digital del despacho (.p12 o .pfx — de la FNMT o de otro prestador admitido, con su contraseña). Súbelo en Ajustes → Integraciones → LexNET (modo certificado). La contraseña se verifica contra el propio certificado antes de guardar nada; tanto el certificado como la contraseña se almacenan cifrados con AES-256-GCM (requiere MANDATO_ENCRYPTION_KEY). Ese certificado es la identidad de cliente para el TLS mutuo y firma cada petición SOAP (WS-Security).
  3. Variables de entorno de la plataforma (lado servidor):
    LEXNET_API_BASE=https://<endpoint-de-tu-pasarela> # solo https
    LEXNET_LIVE_ENABLED=true # interruptor general
  4. La aceptación expresa del despacho: activa «Usar la pasarela real de LexNET» en la tarjeta de conexión. Hasta que un director lo haga, el despacho sigue en simulación aunque la plataforma esté en modo real.

Si falta cualquiera de las cuatro —o si el certificado no puede abrirse, está caducado o falla el handshake TLS— Mandato vuelve a la simulación en lugar de romperse, y la tarjeta explica qué falta.

Notas operativas:

  • Las lecturas (ConsultarMensajes, DescargarMensaje) se reintentan una vez ante errores de transporte. PresentarEscrito no se reintenta nunca de forma automática: que expire el tiempo de espera no demuestra que no se haya entregado, así que volver a presentar es siempre una acción deliberada del usuario tras comprobarlo en el portal de LexNET.
  • Las respuestas están limitadas a 10 MB y cada petición expira a los 30 segundos.
  • Las sincronizaciones reales y cada intento de presentación quedan anotados en la pista de auditoría (Actividad); el detalle por petición va a los registros del servidor. Nunca se registran credenciales ni el cuerpo de los mensajes.
  • ⚠️ Antes del primer uso en producción: el vocabulario de elementos SOAP (mensaje/organo/asunto/anexo/acuse) apunta a la forma de LexNET ws v1. Contrasta los nombres de operación y los campos con el WSDL que te entreguen con el alta del Ministerio —las versiones de pasarela difieren— y ajusta src/lib/integrations/lexnet-soap.ts si la tuya se desvía. Prueba primero contra el entorno de preproducción del Ministerio.

Resolución de problemas​

  • «Probar» falla con un 401 o un 403. La clave es incorrecta, está revocada o la cuenta no tiene facturación. Vuelve a copiarla del proveedor y comprueba que la cuenta tiene saldo.
  • El autocompletado de Google Maps no aparece. Confirma que están activadas tanto Maps JavaScript API como Places API, que la restricción de la clave no excluye tu dominio y que el despliegue ha recogido NEXT_PUBLIC_GOOGLE_MAPS_API_KEY (hace falta recompilar).
  • Los mensajes de WhatsApp no llegan. La URL del webhook debe pegarse en 360dialog exactamente como se muestra, y WHATSAPP_WEBHOOK_VERIFY_TOKEN tiene que coincidir.
  • Una conexión aparece como «No conectada» después de guardar. Guardar una clave y conectar pueden ser dos pasos distintos (por ejemplo, en Holded o Recall). Completa la acción Conectar dentro del asistente.
  • Todo funciona con datos de demostración. Es lo esperado si no hay claves ni variables de entorno del sistema. Es seguro: conecta un servicio para pasar a real.