Automatización de Documentos con n8n: Genera PDFs, Contratos y Facturas [2026]
🎓 ¿Quieres automatizar tu oficina con IA? En La Escuela de IA te enseño a crear automatizaciones como esta que ahorran horas de trabajo. Únete gratis y sígueme en YouTube.
TL;DR - Resumen Rápido
- Automatiza documentos con n8n sin escribir código: contratos, facturas, informes, presupuestos
- Conecta con Google Docs, Word, plantillas HTML y genera PDFs automáticamente
- Casos de uso: facturación automática, contratos dinámicos, informes periódicos
- Ahorra 5-10 horas semanales en tareas repetitivas de documentación
- Workflows listos para copiar y adaptar a tu negocio
¿Por qué Automatizar la Generación de Documentos?
La generación manual de documentos es una de las tareas más repetitivas en cualquier negocio:
| Problema | Impacto |
|---|---|
| Copiar/pegar datos | 30+ min por documento |
| Errores humanos | Datos incorrectos, typos |
| Inconsistencia | Cada documento es diferente |
| Seguimiento manual | ¿Se envió? ¿Se firmó? |
Con automatización de documentos en n8n puedes:
- Generar documentos en segundos, no minutos
- Eliminar errores humanos
- Mantener consistencia de marca
- Enviar y hacer seguimiento automático
Tipos de Documentos que Puedes Automatizar
1. Facturas
1┌─────────────┐ ┌─────────────┐ ┌─────────────┐2│ Nuevo pedido│────►│ Generar │────►│ Enviar por │3│ en CRM/Shop │ │ factura PDF │ │ email │4└─────────────┘ └─────────────┘ └─────────────┘
Trigger: Nuevo pedido en Shopify, WooCommerce, CRM Output: Factura PDF personalizada enviada al cliente
2. Contratos
1┌─────────────┐ ┌─────────────┐ ┌─────────────┐2│ Formulario │────►│ Rellenar │────►│ Enviar para │3│ de cliente │ │ contrato │ │ firma │4└─────────────┘ └─────────────┘ └─────────────┘
Trigger: Formulario web, nuevo cliente en CRM Output: Contrato personalizado listo para firma digital
3. Informes Periódicos
1┌─────────────┐ ┌─────────────┐ ┌─────────────┐2│ Schedule │────►│ Extraer │────►│ Generar │3│ (lunes 9am) │ │ datos │ │ informe PDF │4└─────────────┘ └─────────────┘ └─────────────┘
Trigger: Programado (semanal, mensual) Output: Informe con métricas actualizadas
4. Presupuestos
1┌─────────────┐ ┌─────────────┐ ┌─────────────┐2│ Solicitud │────►│ Calcular │────►│ Presupuesto │3│ de precio │ │ precios │ │ PDF │4└─────────────┘ └─────────────┘ └─────────────┘
Trigger: Formulario de solicitud, email Output: Presupuesto profesional con cálculos automáticos
Nodos de n8n para Documentos
Nodos Nativos
| Nodo | Uso |
|---|---|
| Google Docs | Crear/editar documentos desde plantillas |
| Google Drive | Guardar y organizar archivos |
| Microsoft Excel | Generar hojas de cálculo |
| HTML | Crear documentos HTML personalizados |
| Send Email | Enviar documentos adjuntos |
Nodos para PDFs
| Nodo | Descripción |
|---|---|
| HTTP Request | Conectar con servicios como Gotenberg |
| PDF Generator (community) | Convertir HTML a PDF |
| Merge | Combinar múltiples documentos |
Integraciones Externas
- Gotenberg: Servicio self-hosted para generar PDFs
- DocuSign/PandaDoc: Firma electrónica
- Notion: Documentación colaborativa
Tutorial: Automatizar Facturas con n8n
Vamos a crear un workflow completo para generar facturas automáticamente.
Paso 1: Crear la Plantilla
Primero, crea una plantilla en Google Docs con marcadores:
1FACTURA Nº {{numero_factura}}2 3Fecha: {{fecha}}4 5CLIENTE:6{{nombre_cliente}}7{{direccion_cliente}}8{{nif_cliente}}9 10CONCEPTO CANTIDAD PRECIO TOTAL11{{lineas_factura}}12 13 SUBTOTAL: {{subtotal}}€14 IVA (21%): {{iva}}€15 TOTAL: {{total}}€16 17Forma de pago: {{forma_pago}}
Paso 2: Configurar el Workflow en n8n
1{2 "nodes": [3 {4 "name": "Webhook - Nuevo Pedido",5 "type": "n8n-nodes-base.webhook",6 "parameters": {7 "path": "nueva-factura",8 "method": "POST"9 }10 },11 {12 "name": "Generar Número Factura",13 "type": "n8n-nodes-base.function",14 "parameters": {15 "functionCode": "const fecha = new Date();\nconst numero = `FAC-${fecha.getFullYear()}-${String(items[0].json.id).padStart(5, '0')}`;\nitems[0].json.numero_factura = numero;\nreturn items;"16 }17 },18 {19 "name": "Calcular Totales",20 "type": "n8n-nodes-base.function",21 "parameters": {22 "functionCode": "const subtotal = items[0].json.lineas.reduce((sum, l) => sum + l.total, 0);\nconst iva = subtotal * 0.21;\nitems[0].json.subtotal = subtotal.toFixed(2);\nitems[0].json.iva = iva.toFixed(2);\nitems[0].json.total = (subtotal + iva).toFixed(2);\nreturn items;"23 }24 },25 {26 "name": "Google Docs - Copiar Plantilla",27 "type": "n8n-nodes-base.googleDocs",28 "parameters": {29 "operation": "create",30 "documentId": "ID_DE_TU_PLANTILLA"31 }32 },33 {34 "name": "Reemplazar Variables",35 "type": "n8n-nodes-base.googleDocs",36 "parameters": {37 "operation": "update",38 "content": "{{numero_factura}},{{fecha}},{{nombre_cliente}}..."39 }40 },41 {42 "name": "Exportar a PDF",43 "type": "n8n-nodes-base.googleDrive",44 "parameters": {45 "operation": "download",46 "fileId": "={{ $node['Google Docs'].json.documentId }}",47 "options": {48 "mimeType": "application/pdf"49 }50 }51 },52 {53 "name": "Enviar por Email",54 "type": "n8n-nodes-base.emailSend",55 "parameters": {56 "toEmail": "={{ $node['Webhook'].json.email_cliente }}",57 "subject": "Factura {{ $node['Generar Número'].json.numero_factura }}",58 "attachments": "={{ $node['Exportar PDF'].binary }}"59 }60 }61 ]62}
Paso 3: Probar el Workflow
Envía un POST al webhook:
1curl -X POST https://tu-n8n.com/webhook/nueva-factura \2 -H "Content-Type: application/json" \3 -d '{4 "id": 1234,5 "nombre_cliente": "Empresa XYZ",6 "direccion_cliente": "Calle Mayor 1, Madrid",7 "nif_cliente": "B12345678",8 "email_cliente": "facturacion@xyz.com",9 "lineas": [10 {"concepto": "Servicio A", "cantidad": 1, "precio": 100, "total": 100},11 {"concepto": "Servicio B", "cantidad": 2, "precio": 50, "total": 100}12 ],13 "forma_pago": "Transferencia bancaria"14 }'
Tutorial: Generar Contratos Dinámicos
Arquitectura
1┌──────────────┐ ┌──────────────┐ ┌──────────────┐2│ Typeform/ │────►│ n8n Workflow │────►│ DocuSign/ │3│ Formulario │ │ │ │ PandaDoc │4└──────────────┘ └──────────────┘ └──────────────┘5 │6 ┌──────▼──────┐7 │ Google Docs │8 │ Plantilla │9 └─────────────┘
Workflow para Contratos
1// Nodo Function: Preparar datos del contrato2const hoy = new Date();3const datos = {4 fecha: hoy.toLocaleDateString('es-ES'),5 fecha_inicio: items[0].json.fecha_inicio,6 fecha_fin: items[0].json.fecha_fin,7 nombre_cliente: items[0].json.nombre,8 nif: items[0].json.nif,9 direccion: items[0].json.direccion,10 servicio: items[0].json.servicio,11 precio_mensual: items[0].json.precio,12 duracion_meses: items[0].json.duracion,13 precio_total: items[0].json.precio * items[0].json.duracion14};15 16// Generar cláusulas dinámicas según el servicio17if (datos.servicio === 'Premium') {18 datos.clausulas_extra = `19 - Soporte 24/720 - SLA de 99.9%21 - Acceso prioritario a nuevas features22 `;23} else {24 datos.clausulas_extra = '- Soporte en horario laboral';25}26 27return [{ json: datos }];
Generar PDFs con Gotenberg (Self-Hosted)
Si necesitas más control sobre la generación de PDFs, Gotenberg es excelente:
Instalar Gotenberg con Docker
1docker run -d -p 3000:3000 gotenberg/gotenberg:8
Nodo HTTP Request en n8n
1{2 "method": "POST",3 "url": "http://localhost:3000/forms/chromium/convert/html",4 "sendBody": true,5 "bodyContentType": "multipartFormData",6 "bodyParameters": {7 "files": {8 "value": "={{ $node['HTML Generator'].json.html }}",9 "filename": "documento.html"10 }11 },12 "options": {13 "response": {14 "response": {15 "responseFormat": "file"16 }17 }18 }19}
Ejemplo de HTML para PDF
1<!DOCTYPE html>2<html>3<head>4 <style>5 body { font-family: Arial; margin: 40px; }6 .header { border-bottom: 2px solid #333; padding-bottom: 20px; }7 .logo { max-width: 150px; }8 table { width: 100%; border-collapse: collapse; margin: 20px 0; }9 th, td { border: 1px solid #ddd; padding: 10px; text-align: left; }10 th { background: #f4f4f4; }11 .total { font-size: 1.2em; font-weight: bold; text-align: right; }12 </style>13</head>14<body>15 <div class="header">16 <img src="{{logo_url}}" class="logo" />17 <h1>FACTURA {{numero}}</h1>18 </div>19 20 <p><strong>Cliente:</strong> {{nombre_cliente}}</p>21 <p><strong>Fecha:</strong> {{fecha}}</p>22 23 <table>24 <thead>25 <tr>26 <th>Concepto</th>27 <th>Cantidad</th>28 <th>Precio</th>29 <th>Total</th>30 </tr>31 </thead>32 <tbody>33 {{#each lineas}}34 <tr>35 <td>{{this.concepto}}</td>36 <td>{{this.cantidad}}</td>37 <td>{{this.precio}}€</td>38 <td>{{this.total}}€</td>39 </tr>40 {{/each}}41 </tbody>42 </table>43 44 <p class="total">TOTAL: {{total}}€</p>45</body>46</html>
Casos de Uso por Industria
Despachos de Abogados
- Contratos: Plantillas por tipo de servicio
- Poderes: Generación automática con datos del cliente
- Minutas: Resumen de reuniones con IA
Agencias de Marketing
- Propuestas: Presupuestos personalizados
- Informes: Métricas de campañas automáticas
- Contratos: Según tipo de servicio
Consultorías
- Informes de proyecto: Con métricas del CRM
- Facturas por horas: Conectado a time tracking
- Propuestas técnicas: Con estimaciones automáticas
Inmobiliarias
- Contratos de alquiler: Con datos del inmueble
- Fichas de propiedad: Generadas desde la base de datos
- Presupuestos de reforma: Con cálculos automáticos
Integración con ChatGPT para Documentos Inteligentes
Puedes añadir ChatGPT a tu workflow para:
1. Resumir documentos
1// Prompt para resumir2const prompt = `Resume este documento en 3 bullet points:3 4${documento_original}5 6Mantén solo la información más importante.`;
2. Generar contenido dinámico
1// Prompt para generar sección2const prompt = `Genera una descripción profesional de 2 párrafos para este servicio:3 4Servicio: ${nombre_servicio}5Precio: ${precio}6Características: ${features.join(', ')}7 8Tono: profesional pero cercano.`;
3. Revisar y corregir
1// Prompt para revisar2const prompt = `Revisa este contrato y sugiere mejoras:3 4${contrato}5 6Busca: errores gramaticales, cláusulas ambiguas, términos legales incorrectos.`;
Mejores Prácticas
1. Usa plantillas versionadas
Guarda las plantillas en Google Drive con nombres versionados:
Contrato_v1.0.docxContrato_v1.1.docx
2. Valida datos antes de generar
1// Validación2if (!datos.nif || datos.nif.length !== 9) {3 throw new Error('NIF inválido');4}
3. Implementa logs
Guarda un registro de cada documento generado para auditoría.
4. Backup de documentos
Guarda una copia de cada documento generado en una carpeta de archivo.
5. Notifica errores
Configura alertas para cuando un workflow falla.
Recursos Relacionados
- La Escuela de IA - Comunidad gratuita con más tutoriales
- YouTube - Videos de automatización
- Guía completa de n8n - Fundamentos de n8n
- Prompt Engineering - Para documentos con IA
- Dashboard Ecommerce - Análisis de datos
FAQ
¿Puedo usar n8n gratis?
Sí, n8n es open source. Puedes instalarlo gratis en tu servidor con Docker.
¿Qué pasa si Google Docs falla?
Implementa reintentos automáticos y notificaciones de error en tu workflow.
¿Puedo generar documentos Word?
Sí, usando Microsoft 365 o convertiendo desde Google Docs.
¿Cuántos documentos puedo generar al día?
Depende de los límites de API de Google (2.500/día para Docs) y tu infraestructura.
¿Tienes dudas sobre automatización de documentos? Únete a La Escuela de IA o escríbeme en Twitter/X.