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. Conecta en LinkedIn de Javier Santos.
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
- LinkedIn de Javier Santos - Conecta conmigo
- 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.

