Automatización de la redacción de acuerdos y firmas electrónicas
Este es unDocument Extractionflujo de automatización del dominio deautomatización que contiene 33 nodos.Utiliza principalmente nodos como Set, Code, Gmail, Merge, DataTable. Automatización del ciclo de vida completo del acuerdo: JotForm, aprobación, firma electrónica y seguimiento con Signwell
- •Cuenta de Google y credenciales de API de Gmail
- •Credenciales de API de Google Drive
- •Pueden requerirse credenciales de autenticación para la API de destino
Nodos utilizados (33)
Categoría
{
"id": "TWnGL7anpqfTlrTu",
"meta": {
"instanceId": "90dd23d886c9cb675f452d0fb004af6ee783e4e974ef4384cbfad1854c68a875",
"templateCredsSetupCompleted": true
},
"name": "Agreement Composer and E-Signature Automation",
"tags": [
{
"id": "ClBqgyA0LGlkvyvZ",
"name": "Contracts",
"createdAt": "2025-10-16T09:18:33.184Z",
"updatedAt": "2025-10-16T09:18:33.184Z"
},
{
"id": "ZFOFNDdsvoQ2qGKW",
"name": "Form Automation",
"createdAt": "2025-10-16T09:18:33.189Z",
"updatedAt": "2025-10-16T09:18:33.189Z"
},
{
"id": "ZUPuUVjkdgHAmXJY",
"name": "Document Generation",
"createdAt": "2025-10-16T09:18:33.178Z",
"updatedAt": "2025-10-16T09:18:33.178Z"
},
{
"id": "aXYmTJgLTE6cyQne",
"name": "Agreements",
"createdAt": "2025-10-20T04:04:41.153Z",
"updatedAt": "2025-10-20T04:04:41.153Z"
}
],
"nodes": [
{
"id": "ebc8134f-42d0-41cf-99de-61df1a74a558",
"name": "Activador JotForm",
"type": "n8n-nodes-base.jotFormTrigger",
"position": [
-880,
-352
],
"webhookId": "c4c32e08-4686-4831-966c-7241f91b8048",
"parameters": {
"form": "252888042997475"
},
"credentials": {
"jotFormApi": {
"id": "MEZxYkQDesqbiRMw",
"name": "JotForm account"
}
},
"typeVersion": 1
},
{
"id": "d8d29e44-2dd1-4f58-9c6f-56aafb3d02b0",
"name": "Obtener URL de Documento Limpio",
"type": "n8n-nodes-base.set",
"position": [
-64,
-352
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "f10e836d-09ee-4fed-93bd-548c0e6ac685",
"name": "documentUrl",
"type": "string",
"value": "=https://docs.google.com/document/d/{{ $json.documentId }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "58107ec8-d271-446e-9265-af7597678714",
"name": "Compartir Borrador por Email",
"type": "n8n-nodes-base.gmail",
"position": [
144,
-224
],
"webhookId": "f7e31863-b041-4ea2-bd2d-12a16654e17f",
"parameters": {
"sendTo": "YOUR_EMAIL_ADDRESS",
"message": "=Hi – your agreement composer here emailing on behalf of you...\n<br><br>\nThe draft digital services agreement for <b>{{ $('Edit Fields').item.json.clientCompanyName }}</b> is ready for your review: {{ $json.documentUrl }}.\n<br><br>\nOnce you are happy with it, simply reply <b>Approved</b> so that I can continue the process. Otherwise, you can edit the draft as required, and then reply 'Approved' after so that I can continue the same process.\n<br><br>\n<em>Please note, the agreement will be sent for signing to <b>{{ $('Edit Fields').item.json.clientFullName }}</b> ({{ $('Edit Fields').item.json.clientEmail }}).</em>\n<br><br>\nThanks!",
"options": {
"senderName": "Your Agreement Composer",
"appendAttribution": false
},
"subject": "=Approval Request: Draft - {{ $('Copy and Rename File').item.json.name }}"
},
"credentials": {
"gmailOAuth2": {
"id": "51mlyK2w5LA9QaKi",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "300eec85-1d70-486a-b596-5f9e38f6f6b4",
"name": "Editar Campos",
"type": "n8n-nodes-base.set",
"position": [
-672,
-352
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "5eaad570-e75d-4a35-8811-7f88c7a5afe7",
"name": "clientCompanyName",
"type": "string",
"value": "={{ $json['Company Name'] }}"
},
{
"id": "7136a740-0ea6-449d-a4ea-269ff1455d18",
"name": "clientCompanyAddress",
"type": "string",
"value": "={{ (() => {\n const a = $json['Company Address'] ?? {};\n const parts = [a.addr_line1, a.addr_line2, a.city, a.state, a.postal, a.country]\n .map(v => (typeof v === 'string' ? v.trim() : v))\n .filter(v => v); // drops empty/undefined\n\n return parts.join(', ');\n})() }}"
},
{
"id": "3947ba78-0d19-44df-8b0a-53302a7a0b31",
"name": "clientFullName",
"type": "string",
"value": "={{ $json[\"Full Name\"].first }} {{ $json[\"Full Name\"].last }}"
},
{
"id": "d07cb3d5-ff59-4984-bf3d-a83b8fcba9cb",
"name": "ClientNamePosition",
"type": "string",
"value": "={{ $json[\"Your Position / Job Title\"] }}"
},
{
"id": "7b28296d-5c19-4ca8-b77b-f8d0d83dedb9",
"name": "clientEmail",
"type": "string",
"value": "={{ $json.Email }}"
},
{
"id": "efc5cdb0-49eb-451f-acea-df916982d05a",
"name": "formCompletedDate",
"type": "string",
"value": "={{ $now.format('yyyy-MM-dd') }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "65107954-9e06-47dd-9199-e4c34182f36a",
"name": "Copiar y Renombrar Archivo",
"type": "n8n-nodes-base.googleDrive",
"position": [
-464,
-352
],
"parameters": {
"name": "=Digital Services Agreement - {{ $json.clientCompanyName }} - {{ $json.formCompletedDate }} - Ref-{{ new Date().toISOString().replace(/[-T:.Z]/g, '') }}",
"fileId": {
"__rl": true,
"mode": "list",
"value": "1Nz2sAkDiIxMylzec7vNqOwjP2RRIeV8VOip4UWh2JD8",
"cachedResultUrl": "https://docs.google.com/document/d/1Nz2sAkDiIxMylzec7vNqOwjP2RRIeV8VOip4UWh2JD8/edit?usp=drivesdk",
"cachedResultName": "Digital Services Agreement - {{clientCompanyName}} - {{currentDate}}"
},
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1DNTyDTLimYYpG6Oj_DxSfaw9yx-S43rH",
"cachedResultUrl": "https://drive.google.com/drive/folders/1DNTyDTLimYYpG6Oj_DxSfaw9yx-S43rH",
"cachedResultName": "Services Agreements - Drafts"
},
"operation": "copy",
"sameFolder": false
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "IjoB5flCkLlcfjdH",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "731dc0a8-e40d-4ccb-baf4-8aa14cb6e543",
"name": "Actualizar Nuevo Archivo",
"type": "n8n-nodes-base.googleDocs",
"position": [
-256,
-352
],
"parameters": {
"simple": false,
"actionsUi": {
"actionFields": [
{
"text": "{{clientCompanyName}}",
"action": "replaceAll",
"replaceText": "={{ $('Edit Fields').item.json.clientCompanyName }}"
},
{
"text": "{{clientFullName}}",
"action": "replaceAll",
"replaceText": "={{ $('Edit Fields').item.json.clientFullName }}"
},
{
"text": "{{clientNamePosition}}",
"action": "replaceAll",
"replaceText": "={{ $('Edit Fields').item.json.ClientNamePosition }}"
},
{
"text": "{{clientCompanyAddress}}",
"action": "replaceAll",
"replaceText": "={{ $('Edit Fields').item.json.clientCompanyAddress }}"
},
{
"text": "{{agreementDate1}}",
"action": "replaceAll",
"replaceText": "={{ new Date($('Edit Fields').item.json.formCompletedDate).toLocaleDateString('en-US', { month:'long', day:'numeric', year:'numeric' }) }}"
},
{
"text": "{{agreementDate2}}",
"action": "replaceAll",
"replaceText": "={{ new Date($('Edit Fields').item.json.formCompletedDate).toLocaleDateString('en-US', { month:'short', day:'numeric', year:'numeric' }) }}"
}
]
},
"operation": "update",
"documentURL": "={{ $json.id }}"
},
"credentials": {
"googleDocsOAuth2Api": {
"id": "lJWyEbBbmTlTRv3x",
"name": "Google Docs account"
}
},
"typeVersion": 2,
"alwaysOutputData": true
},
{
"id": "13d43194-f2a6-466e-a587-97f3752f0bed",
"name": "Obtener Registro de Acuerdo Relevante",
"type": "n8n-nodes-base.dataTable",
"position": [
-640,
128
],
"parameters": {
"limit": 1,
"filters": {
"conditions": [
{
"keyName": "documentFileName",
"keyValue": "={{ (() => {\n const s = ($json.Subject ?? '').toString();\n const m = s.match(/Digital Services Agreement.*$/i);\n return m ? m[0].trim() : s;\n})() }}"
}
]
},
"operation": "get",
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "7q3kikjopVGUGQgQ",
"cachedResultUrl": "/projects/7FLBLfPJX4Uw0i6f/datatables/7q3kikjopVGUGQgQ",
"cachedResultName": "Services Agreements"
}
},
"executeOnce": false,
"typeVersion": 1
},
{
"id": "c4fbf446-5a2e-4ece-80e3-af4ee341a23a",
"name": "Verificar Aprobación por Email",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
-880,
128
],
"parameters": {
"filters": {
"q": "from:@YOUR_EMAIL_DOMAIN \"Re: Approval Request: Draft\" \"Approved\" ",
"labelIds": [
"Label_1461057032612050483"
]
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"credentials": {
"gmailOAuth2": {
"id": "51mlyK2w5LA9QaKi",
"name": "Gmail account"
}
},
"typeVersion": 1.2
},
{
"id": "2fa4037a-3f10-48db-ba88-9da006d0ecf6",
"name": "Descargar Archivo como PDF",
"type": "n8n-nodes-base.googleDrive",
"position": [
-432,
128
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "url",
"value": "={{ $json.documentUrl }}"
},
"options": {
"binaryPropertyName": "downloadedPdfFile",
"googleFileConversion": {
"conversion": {
"docsToFormat": "application/pdf"
}
}
},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "IjoB5flCkLlcfjdH",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "ab82861a-b78b-44f2-8c91-77418777f4c2",
"name": "Subir Archivo PDF",
"type": "n8n-nodes-base.googleDrive",
"position": [
-208,
128
],
"parameters": {
"name": "={{ $json.documentFileName }}",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1DNTyDTLimYYpG6Oj_DxSfaw9yx-S43rH",
"cachedResultUrl": "https://drive.google.com/drive/folders/1DNTyDTLimYYpG6Oj_DxSfaw9yx-S43rH",
"cachedResultName": "Services Agreements - Drafts"
},
"inputDataFieldName": "=downloadedPdfFile"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "IjoB5flCkLlcfjdH",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "13e7027a-a84d-4619-8e25-4cbdd87d1fd0",
"name": "Crear Documento en Signwell",
"type": "n8n-nodes-base.httpRequest",
"position": [
224,
128
],
"parameters": {
"url": "https://www.signwell.com/api/v1/documents/",
"method": "POST",
"options": {},
"jsonBody": "={\n \"test_mode\": true,\n \"draft\": false,\n \"with_signature_page\": false,\n \"reminders\": false,\n \"apply_signing_order\": false,\n \"embedded_signing\": true,\n \"embedded_signing_notifications\": true,\n \"text_tags\": false,\n \"allow_decline\": true,\n \"allow_reassign\": true,\n \"files\": [\n {\n \"name\": \"{{ $('Upload PDF File').item.json.name }}.pdf\",\n \"file_url\": \"https://drive.google.com/uc?export=download&id={{ $('Upload PDF File').item.json.id }}\"\n }\n ],\n \"recipients\": [\n {\n \"send_email\": false,\n \"send_email_delay\": 0,\n \"id\": \"1\",\n \"name\": \"{{ $('Get Relevant Agreement Record').item.json.clientFullName }}\",\n \"email\": \"{{ $('Get Relevant Agreement Record').item.json.clientEmail }}\"\n }\n ],\n \"fields\": [\n [\n {\n \"type\": \"signature\",\n \"required\": true,\n \"fixed_width\": false,\n \"lock_sign_date\": false,\n \"x\": 140,\n \"y\": 527,\n \"page\": 2,\n \"recipient_id\": \"1\",\n \"height\": \"40.0\",\n \"width\": \"200.0\"\n },\n {\n \"type\": \"date\",\n \"required\": true,\n \"fixed_width\": false,\n \"lock_sign_date\": true,\n \"x\": 100,\n \"y\": 588,\n \"page\": 2,\n \"recipient_id\": \"1\",\n \"date_format\": \"Month DD, YYYY\"\n }\n ]\n ]\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Content-Type",
"value": "application/json"
},
{
"name": "X-Api-Key",
"value": "YOUR_SIGNWELL_API_KEY"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "776c7399-727c-4a96-a09b-748ebf486364",
"name": "Enviar Acuerdo Preparado al Cliente",
"type": "n8n-nodes-base.gmail",
"position": [
544,
432
],
"webhookId": "96aa5fa2-dfd3-46b1-b831-400093f55b46",
"parameters": {
"sendTo": "={{ $json.recipients[0].email }}",
"message": "=Hi {{ $json.recipients[0].name.split(\" \")[0] }},\n<br><br>\nThanks for the conversations so far regarding the engagement.\n<br><br>\nAs discussed, please find the Services Agreement for your review and e-signing: <b>{{ $json.recipients[0].embedded_signing_url }}</b>.\n<br><br>\nThanks,<br>\nYOUR NAME",
"options": {
"senderName": "YOUR NAME OR COMPANY NAME",
"appendAttribution": false
},
"subject": "=Please Review and Sign: {{ $json.name }}"
},
"credentials": {
"gmailOAuth2": {
"id": "51mlyK2w5LA9QaKi",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "a390b505-acee-4f18-9919-9bf512d3afd9",
"name": "Actualizar Fila - Estado de Aprobación",
"type": "n8n-nodes-base.dataTable",
"position": [
-432,
336
],
"parameters": {
"columns": {
"value": {
"approvalStatus": "Approved"
},
"schema": [
{
"id": "documentFileName",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "documentFileName",
"defaultMatch": false
},
{
"id": "clientEmail",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "clientEmail",
"defaultMatch": false
},
{
"id": "clientFullName",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "clientFullName",
"defaultMatch": false
},
{
"id": "clientNamePosition",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "clientNamePosition",
"defaultMatch": false
},
{
"id": "clientCompanyName",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "clientCompanyName",
"defaultMatch": false
},
{
"id": "clientCompanyAddress",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "clientCompanyAddress",
"defaultMatch": false
},
{
"id": "documentUrl",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "documentUrl",
"defaultMatch": false
},
{
"id": "approvalStatus",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "approvalStatus",
"defaultMatch": false
},
{
"id": "sentDocumentPdfUrl",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "sentDocumentPdfUrl",
"defaultMatch": false
},
{
"id": "sentDate",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "sentDate",
"defaultMatch": false
},
{
"id": "signwellUrl",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "signwellUrl",
"defaultMatch": false
},
{
"id": "docSigned",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "docSigned",
"defaultMatch": false
},
{
"id": "finalExecutedDocGDrive",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "finalExecutedDocGDrive",
"defaultMatch": false
},
{
"id": "finalExecutedDocSignwellUrl",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "finalExecutedDocSignwellUrl",
"defaultMatch": false
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"filters": {
"conditions": [
{
"keyValue": "={{ $json.id }}"
}
]
},
"options": {},
"operation": "update",
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "7q3kikjopVGUGQgQ",
"cachedResultUrl": "/projects/7FLBLfPJX4Uw0i6f/datatables/7q3kikjopVGUGQgQ",
"cachedResultName": "Services Agreements"
}
},
"typeVersion": 1
},
{
"id": "e3d74ab8-44ef-4dd2-ade0-dbe942af78d3",
"name": "Actualizar Fila - Detalles Adicionales del Doc",
"type": "n8n-nodes-base.dataTable",
"position": [
544,
80
],
"parameters": {
"columns": {
"value": {
"sentDate": "={{ $('Create Document in Signwell').item.json.created_at }}",
"signwellUrl": "={{ $('Create Document in Signwell').item.json.recipients[0].embedded_signing_url }}",
"signwellDocID": "={{ $json.id }}",
"sentDocumentPdfUrl": "={{ $('Upload PDF File').item.json.webViewLink }}"
},
"schema": [
{
"id": "documentFileName",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "documentFileName",
"defaultMatch": false
},
{
"id": "clientEmail",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "clientEmail",
"defaultMatch": false
},
{
"id": "clientFullName",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "clientFullName",
"defaultMatch": false
},
{
"id": "clientNamePosition",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "clientNamePosition",
"defaultMatch": false
},
{
"id": "clientCompanyName",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "clientCompanyName",
"defaultMatch": false
},
{
"id": "clientCompanyAddress",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "clientCompanyAddress",
"defaultMatch": false
},
{
"id": "documentUrl",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "documentUrl",
"defaultMatch": false
},
{
"id": "approvalStatus",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "approvalStatus",
"defaultMatch": false
},
{
"id": "sentDocumentPdfUrl",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "sentDocumentPdfUrl",
"defaultMatch": false
},
{
"id": "sentDate",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "sentDate",
"defaultMatch": false
},
{
"id": "signwellUrl",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "signwellUrl",
"defaultMatch": false
},
{
"id": "docSigned",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "docSigned",
"defaultMatch": false
},
{
"id": "finalExecutedDocGDrive",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "finalExecutedDocGDrive",
"defaultMatch": false
},
{
"id": "finalExecutedDocSignwellUrl",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "finalExecutedDocSignwellUrl",
"defaultMatch": false
},
{
"id": "signwellDocID",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "signwellDocID",
"defaultMatch": false
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"filters": {
"conditions": [
{
"keyValue": "={{ $('Get Relevant Agreement Record').item.json.id }}"
}
]
},
"options": {},
"operation": "update",
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "7q3kikjopVGUGQgQ",
"cachedResultUrl": "/projects/7FLBLfPJX4Uw0i6f/datatables/7q3kikjopVGUGQgQ",
"cachedResultName": "Services Agreements"
}
},
"typeVersion": 1
},
{
"id": "b926ab5b-99ba-4400-9726-ca7ccc8bd9ef",
"name": "Otorgar Acceso de Compartición al Archivo PDF",
"type": "n8n-nodes-base.googleDrive",
"position": [
0,
128
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {},
"operation": "share",
"permissionsUi": {
"permissionsValues": {
"role": "reader",
"type": "anyone"
}
}
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "IjoB5flCkLlcfjdH",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "26ceb85f-ea7d-4b06-9739-5295f2ebdb70",
"name": "Remover Acceso de Compartición al Archivo PDF",
"type": "n8n-nodes-base.httpRequest",
"position": [
544,
256
],
"parameters": {
"url": "=https://www.googleapis.com/drive/v3/files/{{ $('Upload PDF File').item.json.id }}/permissions/anyoneWithLink",
"method": "DELETE",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleDriveOAuth2Api"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "IjoB5flCkLlcfjdH",
"name": "Google Drive account"
}
},
"typeVersion": 4.2
},
{
"id": "5ca86907-f3f4-473f-ad9c-a172f7e17079",
"name": "Extraer Hilo de Email Completo - URL de Doc Finalizado",
"type": "n8n-nodes-base.gmail",
"position": [
-640,
816
],
"webhookId": "2569cc53-b873-438f-b4ae-060bee204b92",
"parameters": {
"simple": false,
"options": {},
"resource": "thread",
"threadId": "={{ $json.threadId }}",
"operation": "get"
},
"credentials": {
"gmailOAuth2": {
"id": "51mlyK2w5LA9QaKi",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "0236fb26-b121-4874-ace9-7976f82df4ba",
"name": "Obtener URL de Doc Finalizado en Signwell + Datos",
"type": "n8n-nodes-base.code",
"position": [
-400,
816
],
"parameters": {
"jsCode": "// Robust SignWell link extractor for a Gmail thread item\n\nconst msgs = $json.messages || ($json.payload ? [$json] : []);\nconst out = { decodedText: '', downloadLink: '', extractedFilename: '' };\n\n// helpers\nfunction b64urlDecode(s = '') {\n s = s.replace(/-/g, '+').replace(/_/g, '/');\n while (s.length % 4) s += '=';\n return Buffer.from(s, 'base64').toString('utf8');\n}\nfunction qpDecode(s = '') {\n // remove soft line breaks and decode =XX\n return s.replace(/=\\r?\\n/g, '').replace(/=([A-Fa-f0-9]{2})/g, (_, h) => String.fromCharCode(parseInt(h, 16)));\n}\nfunction partText(part) {\n if (!part?.body?.data) return '';\n let s = b64urlDecode(part.body.data);\n const isQP = (part.headers || []).some(h => /Content-Transfer-Encoding/i.test(h.name) && /quoted-printable/i.test(h.value));\n if (isQP) s = qpDecode(s);\n return s;\n}\nfunction findFirstLinkInParts(p) {\n if (!p) return null;\n // prefer text/plain, then text/html\n if (/^text\\//i.test(p.mimeType)) {\n const s = partText(p);\n const m = s.match(/https:\\/\\/www\\.signwell\\.com\\/app\\/signed\\/[^\\s\"'()<>]+/i);\n if (m) return m[0].replace(/[.)]+$/, ''); // strip trailing punctuation\n }\n for (const child of (p.parts || [])) {\n const found = findFirstLinkInParts(child);\n if (found) return found;\n }\n return null;\n}\nfunction findPlainText(p) {\n if (!p) return '';\n if (p.mimeType === 'text/plain') return partText(p);\n for (const child of (p.parts || [])) {\n const s = findPlainText(child);\n if (s) return s;\n }\n return '';\n}\n\n// process first message in thread\nfor (const m of msgs) {\n // Subject can be top-level or in headers\n const subject = m.Subject || m.subject ||\n (m.payload?.headers || []).find(h => h.name === 'Subject')?.value || '';\n const nameMatch = subject.match(/\\(([^)]+)\\)/);\n if (nameMatch) out.extractedFilename = nameMatch[1].replace(/\\.pdf$/i, '');\n\n out.downloadLink = findFirstLinkInParts(m.payload) || '';\n out.decodedText = findPlainText(m.payload) || '';\n break;\n}\n\nreturn [{ json: out }];\n"
},
"typeVersion": 2
},
{
"id": "1b0a1605-2c44-4bcf-b728-643be7d8655c",
"name": "Descargar Doc Finalizado desde Signwell",
"type": "n8n-nodes-base.httpRequest",
"position": [
-144,
816
],
"parameters": {
"url": "={{ $json.downloadLink }}",
"options": {
"response": {
"response": {
"responseFormat": "file",
"outputPropertyName": "finalExecutedDocGDrive"
}
}
}
},
"typeVersion": 4.2
},
{
"id": "d8a87424-131d-4eb1-b385-0b1ec209ef6d",
"name": "Subir Doc Finalizado",
"type": "n8n-nodes-base.googleDrive",
"position": [
96,
928
],
"parameters": {
"name": "={{ $node['Get Signwell Completed Doc URL + Data'].json['extractedFilename'] }}_SIGNED.pdf",
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive"
},
"options": {},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1hRcXphNp4YPFaBzJOj86w2im4Pv5jH4H",
"cachedResultUrl": "https://drive.google.com/drive/folders/1hRcXphNp4YPFaBzJOj86w2im4Pv5jH4H",
"cachedResultName": "Services Agreements - Final Versions"
},
"inputDataFieldName": "finalExecutedDocGDrive"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "IjoB5flCkLlcfjdH",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "250db16b-8cf8-438c-b2ca-cf2e53a5a136",
"name": "Verificar Email para Notificación de Finalización",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
-896,
816
],
"parameters": {
"filters": {
"q": "from:signwelldocs@signwell.com \"document completed (digital services agreement\" ",
"labelIds": [
"Label_572888736126663916"
]
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"credentials": {
"gmailOAuth2": {
"id": "51mlyK2w5LA9QaKi",
"name": "Gmail account"
}
},
"typeVersion": 1.2
},
{
"id": "4daba244-542c-41c4-85ee-0c76cb12c4ea",
"name": "Obtener Registro de Acuerdo Relevante2",
"type": "n8n-nodes-base.dataTable",
"position": [
320,
928
],
"parameters": {
"limit": 1,
"filters": {
"conditions": [
{
"keyName": "documentFileName",
"keyValue": "={{ $('Download Completed Doc from Signwell').item.json.extractedFilename }}"
}
]
},
"operation": "get",
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "7q3kikjopVGUGQgQ",
"cachedResultUrl": "/projects/7FLBLfPJX4Uw0i6f/datatables/7q3kikjopVGUGQgQ",
"cachedResultName": "Services Agreements"
}
},
"executeOnce": false,
"typeVersion": 1
},
{
"id": "975619f1-0546-44b5-827e-81871649b273",
"name": "Actualizar Fila - Detalles del Doc Finalizado",
"type": "n8n-nodes-base.dataTable",
"position": [
544,
1024
],
"parameters": {
"columns": {
"value": {
"docSigned": "Yes",
"finalExecutedDocGDrive": "={{ $('Upload Completed Doc').item.json.webContentLink }}",
"finalExecutedDocSignwellUrl": "={{ $('Download Completed Doc from Signwell').item.json.downloadLink }}"
},
"schema": [
{
"id": "documentFileName",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "documentFileName",
"defaultMatch": false
},
{
"id": "clientEmail",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "clientEmail",
"defaultMatch": false
},
{
"id": "clientFullName",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "clientFullName",
"defaultMatch": false
},
{
"id": "clientNamePosition",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "clientNamePosition",
"defaultMatch": false
},
{
"id": "clientCompanyName",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "clientCompanyName",
"defaultMatch": false
},
{
"id": "clientCompanyAddress",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "clientCompanyAddress",
"defaultMatch": false
},
{
"id": "documentUrl",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "documentUrl",
"defaultMatch": false
},
{
"id": "approvalStatus",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "approvalStatus",
"defaultMatch": false
},
{
"id": "sentDocumentPdfUrl",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "sentDocumentPdfUrl",
"defaultMatch": false
},
{
"id": "sentDate",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "sentDate",
"defaultMatch": false
},
{
"id": "signwellUrl",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "signwellUrl",
"defaultMatch": false
},
{
"id": "docSigned",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "docSigned",
"defaultMatch": false
},
{
"id": "finalExecutedDocGDrive",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "finalExecutedDocGDrive",
"defaultMatch": false
},
{
"id": "finalExecutedDocSignwellUrl",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "finalExecutedDocSignwellUrl",
"defaultMatch": false
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"filters": {
"conditions": [
{
"keyValue": "={{ $json.id }}"
}
]
},
"options": {},
"operation": "update",
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "7q3kikjopVGUGQgQ",
"cachedResultUrl": "/projects/7FLBLfPJX4Uw0i6f/datatables/7q3kikjopVGUGQgQ",
"cachedResultName": "Services Agreements"
}
},
"typeVersion": 1
},
{
"id": "c3005f01-30b9-4f42-943b-b8371ae9adf7",
"name": "Remover Doc Finalizado de Signwell",
"type": "n8n-nodes-base.httpRequest",
"position": [
784,
1024
],
"parameters": {
"url": "=https://www.signwell.com/api/v1/documents/{{ $json.signwellDocID }}",
"method": "DELETE",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "X-Api-Key",
"value": "YOUR_SIGNWELL_API_KEY"
},
{
"name": "accept",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "1bdc96ce-bc11-41cb-9525-c9f1abc5ef80",
"name": "Nota Adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
-992,
-464
],
"parameters": {
"color": 5,
"width": 1392,
"height": 432,
"content": "## Get Client Form Inputs > Create + Send Agreement Draft (Internally)"
},
"typeVersion": 1
},
{
"id": "5dab0894-c4e7-41cd-9404-de4051b5259c",
"name": "Nota Adhesiva1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-992,
0
],
"parameters": {
"color": 2,
"width": 1808,
"height": 656,
"content": "## Get Internal Approval > Create Signwell Doc > Send Agreement to Client "
},
"typeVersion": 1
},
{
"id": "06ab07cd-6660-44aa-ac46-f4c15cf37cfc",
"name": "Nota Adhesiva2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-992,
688
],
"parameters": {
"color": 4,
"width": 2080,
"height": 544,
"content": "## Get Completed Signwell Doc Notification > Download & Store Completed Agreement > Share With Client"
},
"typeVersion": 1
},
{
"id": "7ca36348-ef27-44b4-96f0-64bc12f08172",
"name": "Combinar Datos",
"type": "n8n-nodes-base.merge",
"position": [
544,
832
],
"parameters": {
"mode": "combine",
"options": {},
"combineBy": "combineByPosition"
},
"typeVersion": 3.1
},
{
"id": "0fdb0538-ab98-41bf-9d7e-226f16d62a93",
"name": "Enviar PDF de Acuerdo Finalizado al Cliente",
"type": "n8n-nodes-base.gmail",
"position": [
784,
832
],
"webhookId": "d39932e5-037b-499f-a277-d77e42d52045",
"parameters": {
"sendTo": "={{ $json.clientEmail }}",
"message": "=Hi {{ (() => {\n const raw = ($json.clientFullName?.name ?? $json.clientFullName ?? '').toString();\n const first = raw.trim().replace(/\\s+/g, ' ').split(' ')[0] || '';\n return first; // \"John\" or \"John-Boy\"\n})() }},\n<br><br>\nPlease find attached the fully signed agreement.\n<br><br>\nThanks,\n<br>\nYOUR NAME",
"options": {
"senderName": "YOUR NAME OR COMPANY NAME",
"attachmentsUi": {
"attachmentsBinary": [
{
"property": "finalExecutedDocGDrive"
}
]
},
"appendAttribution": false
},
"subject": "=Signed Agreement Copy ({{ $json.documentFileName }})\n"
},
"credentials": {
"gmailOAuth2": {
"id": "51mlyK2w5LA9QaKi",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "2084e233-a3a2-4fcb-b55b-a4a4757ce165",
"name": "Insertar Nueva Fila",
"type": "n8n-nodes-base.dataTable",
"position": [
144,
-384
],
"parameters": {
"columns": {
"value": {
"clientEmail": "={{ $('Edit Fields').item.json.clientEmail }}",
"documentUrl": "={{ $json.documentUrl }}",
"clientFullName": "={{ $('Edit Fields').item.json.clientFullName }}",
"documentFileName": "={{ $('Copy and Rename File').item.json.name }}",
"clientCompanyName": "={{ $('Edit Fields').item.json.clientCompanyName }}",
"clientNamePosition": "={{ $('Edit Fields').item.json.ClientNamePosition }}",
"clientCompanyAddress": "={{ $('Edit Fields').item.json.clientCompanyAddress }}"
},
"schema": [
{
"id": "documentFileName",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "documentFileName",
"defaultMatch": false
},
{
"id": "clientEmail",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "clientEmail",
"defaultMatch": false
},
{
"id": "clientFullName",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "clientFullName",
"defaultMatch": false
},
{
"id": "clientNamePosition",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "clientNamePosition",
"defaultMatch": false
},
{
"id": "clientCompanyName",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "clientCompanyName",
"defaultMatch": false
},
{
"id": "clientCompanyAddress",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "clientCompanyAddress",
"defaultMatch": false
},
{
"id": "documentUrl",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "documentUrl",
"defaultMatch": false
},
{
"id": "approvalStatus",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "approvalStatus",
"defaultMatch": false
},
{
"id": "sentDocumentPdfUrl",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "sentDocumentPdfUrl",
"defaultMatch": false
},
{
"id": "sentDate",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "sentDate",
"defaultMatch": false
},
{
"id": "signwellUrl",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "signwellUrl",
"defaultMatch": false
},
{
"id": "docSigned",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "docSigned",
"defaultMatch": false
},
{
"id": "finalExecutedDocGDrive",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "finalExecutedDocGDrive",
"defaultMatch": false
},
{
"id": "finalExecutedDocSignwellUrl",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "finalExecutedDocSignwellUrl",
"defaultMatch": false
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"dataTableId": {
"__rl": true,
"mode": "list",
"value": "7q3kikjopVGUGQgQ",
"cachedResultUrl": "/projects/7FLBLfPJX4Uw0i6f/datatables/7q3kikjopVGUGQgQ",
"cachedResultName": "Services Agreements"
}
},
"typeVersion": 1
},
{
"id": "30a27a9e-2c98-4b70-b320-9c260cad1a76",
"name": "Nota Adhesiva7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2032,
-976
],
"parameters": {
"color": 7,
"width": 1008,
"height": 2032,
"content": "# **Agreement Composer and E-Signature Automation**\n *Client Form → Draft → Approve → Sign → Deliver, fully automated*\n\n This workflow automates the entire agreement lifecycle from client form submission to signed document delivery. It generates personalized agreements from templates, manages internal approvals, orchestrates e-signatures via Signwell, and delivers fully executed documents with complete audit trails in n8n Data Tables.\n\n ### Good to know\n - Handles client data collection via JotForm with custom field mapping\n - Automatically populates Google Doc templates with client-specific details\n - Internal approval workflow with email-based confirmation\n - Signwell integration for embedded e-signatures - **test mode enabled by default** - disable for legally binding documents\n - Complete lifecycle tracking in n8n Data Tables (draft → approval → sent → signed)\n - Auto-cleanup: removes documents from Signwell after completion to save storage\n\n ## Who's it for\n Service businesses, consultants, agencies, and freelancers who send agreements to clients regularly. Perfect for anyone wanting to avoid other costly e-signature platforms with limited API and automation capabilities. [Signwell has an affordable entry level tier](https://www.signwell.com/pricing/) with generous API limits. If you're looking to eliminate manual document preparation, have an approval workflow, and track signatures while maintaining professional client communication, then this solution is a good fit.\n\n## How it works\n### Phase 1: Draft Creation\n 1. JotForm trigger captures client submission (company name, address, contact details, position)\n 2. Standardizes form data and duplicates Google Doc template with custom filename\n 3. Replaces template variables with client information (company name, address, full name, position, dates)\n 4. Creates clean document URL and logs initial record to Data Tables\n 5. Emails internal team with draft review link and client details\n### Phase 2: Approval & Preparation\n 1. Gmail monitors inbox for \"Approved\" reply email\n 2. Fetches agreement record from Data Tables and marks as approved\n 3. Downloads Google Doc as PDF and uploads to Drive folder\n 4. Grants temporary public sharing access (required for Signwell file import)\n 5. Creates Signwell document with embedded signature fields and signing URL\n 6. Emails client with personalized signing link\n 7. Revokes public sharing access for security and updates Data Tables with Signwell details\n### Phase 3: Signature & Delivery\n 1. Gmail monitors for Signwell completion notification\n 2. Extracts signed document download link from notification email\n 3. Downloads fully executed PDF from Signwell\n 4. Uploads to \"Final Versions\" folder in Google Drive\n 5. Updates Data Tables with completion status and final document URLs\n 6. Sends confirmation email to client with signed PDF attached\n 7. Deletes document from Signwell to free up storage\n\n ## Requirements\n - JotForm account (free tier works)\n - Gmail account with OAuth2 access\n - Google Drive account (OAuth2)\n - Google Docs account (OAuth2) with a draft Agreement template\n - Signwell account with API key\n - n8n Data Tables (built-in, no external service needed)\n - Google Drive folders: \"Services Agreements - Drafts\" and \"Services Agreements - Final Versions\"\n\n ## How to set up\n 1. **Add credentials**: JotForm API, Gmail OAuth2, Google Drive OAuth2, Google Docs OAuth2, Signwell API key\n 2. **Create JotForm**: Build form with fields: Company Name, Company Address (address field), Full Name (name field), Your Position/Job \n Title, Email\n 3. In \"JotForm Trigger\" node: select your form\n 4. **Create Google Doc template**: Add variables `{{clientCompanyName}}`, `{{clientFullName}}`, `{{clientNamePosition}}`,\n `{{clientCompanyAddress}}`, `{{agreementDate1}}`, `{{agreementDate2}}`\n 5. In \"Copy and Rename File\" node: select your template document and update folder ID to your \"Drafts\" folder\n 6. **Create Data Table**: Name it \"Services Agreements\" with columns: documentFileName, clientEmail, clientFullName,\n clientNamePosition, clientCompanyName, clientCompanyAddress, documentUrl, approvalStatus, sentDocumentPdfUrl, sentDate, signwellUrl, \n signwellDocID, docSigned, finalExecutedDocGDrive, finalExecutedDocSignwellUrl\n 7. In \"Insert Row\" and all \"Get/Update Row\" nodes: select your Data Table\n 8. **Create Gmail labels**: \"_AGREEMENTS\" with 2 nested (sublabels) Agreement-Approvals\" and \"Agreement-Completed\" for filtering\n 9. In \"Check for Email Approval\" node: select your approval label and update internal email address\n 10. In \"Check Email for Completed Notification\" node: select your completed label\n 11. In \"Create Document in Signwell\" node: update API key and adjust signature field coordinates for your document\n 12. **Set Signwell to live mode**: Change `\"test_mode\": true` to `\"test_mode\": false` when ready for production\n 13. Activate workflow\n\n ## Customizing this workflow\n - **Change template variables**: Edit \"Update New File\" node to add/remove fields (e.g., pricing, terms, scope of work)\n - **Modify approval email**: Edit \"Share Email Draft\" node to change recipient, subject line, or message format\n - **Adjust Signwell fields**: Edit \"Create Document in Signwell\" node to change signature/date field positions (x, y coordinates) to match your agreement template, and add any other fields you'd like\n - **Add approval deadline**: Add Wait node with timeout after \"Share Email Draft\" to auto-remind for pending approvals\n - **Multi-signer support**: Modify \"Create Document in Signwell\" recipients array to add multiple signers (e.g., both parties)\n - **Change storage folders**: Update folder IDs in \"Upload PDF File\" and \"Upload Completed Doc\" nodes\n - **Add Slack notifications**: Add Slack nodes after key milestones (draft created, approved, signed)\n - **Custom client messaging**: Edit \"Send Prepared Agreement to Client\" and \"Send Client Completed Agreement PDF\" nodes for personalized communication\n - **Add reminder logic**: Insert Wait + Send Email nodes between signing and completion to remind client if not signed within X days"
},
"typeVersion": 1
},
{
"id": "3a637b50-3438-4a8a-994e-d9223a1c8d75",
"name": "Nota Adhesiva8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-992,
-976
],
"parameters": {
"color": 7,
"width": 896,
"height": 480,
"content": "## Quick Troubleshooting\n * **JotForm not triggering**: Verify webhook is active in JotForm settings and form ID matches \"JotForm Trigger\" node\n * **Template variables not replacing**: Check variable names in template doc exactly match `{{variableName}}` format (case-sensitive) \n * **Wrong internal email for approval**: Update email address in \"Share Email Draft\" node to your own email\n * **Approval email not detected**: Confirm Gmail label \"Agreement-Approvals\" exists and reply contains exact word \"Approved\"\n * **Signwell document creation fails**: Verify PDF has public sharing enabled before API call AND Signwell API key is valid in \"Create Document in Signwell\" node\n * **Signature fields in wrong position**: Adjust x/y coordinates in \"Create Document in Signwell\" node (test in Signwell UI first to find correct pixel positions)\n * **Completed document not downloading**: Check Signwell completion email format - Code node extracts link via regex pattern\n * **Data Tables errors**: Ensure documentFileName exactly matches between \"Insert Row\" and \"Get/Update Row\" operations\n * **Client emails not sending**: Re-authorize Gmail OAuth2 credentials and verify sender name/address in Gmail nodes\n * **Drive folder not found**: Update folder IDs in \"Copy and Rename File\", \"Upload PDF File\", and \"Upload Completed Doc\" nodes to your own folder IDs\n * **Signwell deletion fails**: Verify signwellDocID was correctly stored in Data Tables before deletion (check \"Update Row - Additional Doc Details\" output)\n * **401/403 API errors**: Re-authorize all OAuth2 credentials (Gmail, Google Drive, Google Docs)\n * **Test mode documents**: Change `\"test_mode\": true` to `\"test_mode\": false` in \"Create Document in Signwell\" node for production signatures"
},
"typeVersion": 1
},
{
"id": "81473db5-2e22-46cf-8916-50272872e083",
"name": "Nota Adhesiva5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-64,
-1200
],
"parameters": {
"color": 7,
"width": 800,
"height": 704,
"content": "## Sample Outputs\n- Agreement Drafts and Final folders/files in Google Drive\n\n\n\n\n\n### File References\n- [Agreement Template (sample)](https://docs.google.com/document/d/1Nz2sAkDiIxMylzec7vNqOwjP2RRIeV8VOip4UWh2JD8/edit?usp=sharing)\n- [Final Agreement Signed (sample)](https://drive.google.com/file/d/1zV4iQ1SDiofNQ9fNXWSABa7-ki0Txhvz/view?usp=sharing)\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "786fdb22-129f-423a-b7fb-8f54bf4f95c2",
"connections": {
"7ca36348-ef27-44b4-96f0-64bc12f08172": {
"main": [
[
{
"node": "0fdb0538-ab98-41bf-9d7e-226f16d62a93",
"type": "main",
"index": 0
}
]
]
},
"300eec85-1d70-486a-b596-5f9e38f6f6b4": {
"main": [
[
{
"node": "65107954-9e06-47dd-9199-e4c34182f36a",
"type": "main",
"index": 0
}
]
]
},
"2084e233-a3a2-4fcb-b55b-a4a4757ce165": {
"main": [
[]
]
},
"ebc8134f-42d0-41cf-99de-61df1a74a558": {
"main": [
[
{
"node": "300eec85-1d70-486a-b596-5f9e38f6f6b4",
"type": "main",
"index": 0
}
]
]
},
"731dc0a8-e40d-4ccb-baf4-8aa14cb6e543": {
"main": [
[
{
"node": "d8d29e44-2dd1-4f58-9c6f-56aafb3d02b0",
"type": "main",
"index": 0
}
]
]
},
"ab82861a-b78b-44f2-8c91-77418777f4c2": {
"main": [
[
{
"node": "b926ab5b-99ba-4400-9726-ca7ccc8bd9ef",
"type": "main",
"index": 0
}
]
]
},
"d8d29e44-2dd1-4f58-9c6f-56aafb3d02b0": {
"main": [
[
{
"node": "58107ec8-d271-446e-9265-af7597678714",
"type": "main",
"index": 0
},
{
"node": "2084e233-a3a2-4fcb-b55b-a4a4757ce165",
"type": "main",
"index": 0
}
]
]
},
"58107ec8-d271-446e-9265-af7597678714": {
"main": [
[]
]
},
"65107954-9e06-47dd-9199-e4c34182f36a": {
"main": [
[
{
"node": "731dc0a8-e40d-4ccb-baf4-8aa14cb6e543",
"type": "main",
"index": 0
}
]
]
},
"2fa4037a-3f10-48db-ba88-9da006d0ecf6": {
"main": [
[
{
"node": "ab82861a-b78b-44f2-8c91-77418777f4c2",
"type": "main",
"index": 0
}
]
]
},
"d8a87424-131d-4eb1-b385-0b1ec209ef6d": {
"main": [
[
{
"node": "4daba244-542c-41c4-85ee-0c76cb12c4ea",
"type": "main",
"index": 0
}
]
]
},
"c4fbf446-5a2e-4ece-80e3-af4ee341a23a": {
"main": [
[
{
"node": "13d43194-f2a6-466e-a587-97f3752f0bed",
"type": "main",
"index": 0
}
]
]
},
"13e7027a-a84d-4619-8e25-4cbdd87d1fd0": {
"main": [
[
{
"node": "776c7399-727c-4a96-a09b-748ebf486364",
"type": "main",
"index": 0
},
{
"node": "26ceb85f-ea7d-4b06-9739-5295f2ebdb70",
"type": "main",
"index": 0
},
{
"node": "e3d74ab8-44ef-4dd2-ade0-dbe942af78d3",
"type": "main",
"index": 0
}
]
]
},
"a390b505-acee-4f18-9919-9bf512d3afd9": {
"main": [
[]
]
},
"13d43194-f2a6-466e-a587-97f3752f0bed": {
"main": [
[
{
"node": "a390b505-acee-4f18-9919-9bf512d3afd9",
"type": "main",
"index": 0
},
{
"node": "2fa4037a-3f10-48db-ba88-9da006d0ecf6",
"type": "main",
"index": 0
}
]
]
},
"4daba244-542c-41c4-85ee-0c76cb12c4ea": {
"main": [
[
{
"node": "975619f1-0546-44b5-827e-81871649b273",
"type": "main",
"index": 0
},
{
"node": "7ca36348-ef27-44b4-96f0-64bc12f08172",
"type": "main",
"index": 1
}
]
]
},
"b926ab5b-99ba-4400-9726-ca7ccc8bd9ef": {
"main": [
[
{
"node": "13e7027a-a84d-4619-8e25-4cbdd87d1fd0",
"type": "main",
"index": 0
}
]
]
},
"26ceb85f-ea7d-4b06-9739-5295f2ebdb70": {
"main": [
[]
]
},
"776c7399-727c-4a96-a09b-748ebf486364": {
"main": [
[]
]
},
"975619f1-0546-44b5-827e-81871649b273": {
"main": [
[
{
"node": "c3005f01-30b9-4f42-943b-b8371ae9adf7",
"type": "main",
"index": 0
}
]
]
},
"1b0a1605-2c44-4bcf-b728-643be7d8655c": {
"main": [
[
{
"node": "d8a87424-131d-4eb1-b385-0b1ec209ef6d",
"type": "main",
"index": 0
},
{
"node": "7ca36348-ef27-44b4-96f0-64bc12f08172",
"type": "main",
"index": 0
}
]
]
},
"0236fb26-b121-4874-ace9-7976f82df4ba": {
"main": [
[
{
"node": "1b0a1605-2c44-4bcf-b728-643be7d8655c",
"type": "main",
"index": 0
}
]
]
},
"250db16b-8cf8-438c-b2ca-cf2e53a5a136": {
"main": [
[
{
"node": "5ca86907-f3f4-473f-ad9c-a172f7e17079",
"type": "main",
"index": 0
}
]
]
},
"5ca86907-f3f4-473f-ad9c-a172f7e17079": {
"main": [
[
{
"node": "0236fb26-b121-4874-ace9-7976f82df4ba",
"type": "main",
"index": 0
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Extracción de documentos
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
Dean Pike
@deanjpSaving 20+ hours weekly for growing companies by putting their client-facing and back-office operations on autopilot. As the Founder of TidyCurve, we build AI agents and workflow automations that replace critical repetitive work: from lead generation and customer support, to marketing, recruitment, and onboarding. We deploy scalable solutions in 4-8 weeks at a fraction of enterprise costs - backed by a 60-day 3x ROI guarantee.
Compartir este flujo de trabajo