Automatización de procesamiento de formularios Tally
Este es unLead Generationflujo de automatización del dominio deautomatización que contiene 11 nodos.Utiliza principalmente nodos como Set, Wait, Gmail, Webhook, Airtable. Automatizar respuestas desde Gmail para formularios Tally enviados a Airtable
- •Cuenta de Google y credenciales de API de Gmail
- •Punto final de HTTP Webhook (n8n generará automáticamente)
- •Clave de API de Airtable
Categoría
{
"id": "5ecs295v3ZaiY8HM",
"meta": {
"instanceId": "e95c8554b03e2c16a5c8c44cc7d45f6192b966fba75d5438d1201989ceff13e2",
"templateCredsSetupCompleted": true
},
"name": "Automate a Tally Form",
"tags": [],
"nodes": [
{
"id": "de34d97a-e3e8-4be7-9a2b-c77222eeb2ca",
"name": "Editar Campos",
"type": "n8n-nodes-base.set",
"position": [
1060,
1060
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "0186e9c9-424c-4ad8-8382-1614cf48c9d1",
"name": "full_name",
"type": "string",
"value": "={{ $json.body.data.fields[0].value }}"
},
{
"id": "e5559efc-1458-48e6-a207-f7fea896e930",
"name": "company_name",
"type": "string",
"value": "={{ $json.body.data.fields[1].value }}"
},
{
"id": "bbc04ed4-a8f7-4778-bfdc-038c637320fa",
"name": "job_title",
"type": "string",
"value": "={{ $json.body.data.fields[2].value }}"
},
{
"id": "8175addd-ef95-45f9-b307-b218d6ede2be",
"name": "email",
"type": "string",
"value": "={{ $json.body.data.fields[3].value }}"
},
{
"id": "f017c0bd-bd5d-4a5e-967f-bb27c514f5ee",
"name": "phone_number",
"type": "string",
"value": "={{ $json.body.data.fields[4].value }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "635a0ccc-dd60-4e24-aaff-50dda69e9705",
"name": "Esperar",
"type": "n8n-nodes-base.wait",
"position": [
1960,
1060
],
"webhookId": "f647bd2e-8bdd-49ab-8eba-8a1db07bc2e8",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "8592b7dc-baa5-4306-9ffa-f341ade8e434",
"name": "Disparador Webhook : Tally",
"type": "n8n-nodes-base.webhook",
"position": [
620,
1060
],
"webhookId": "e92bb825-14ff-43e0-bd7c-24504d4acb56",
"parameters": {
"path": "formulaire-tally",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "316dcbae-3957-4109-a984-cbf068529c74",
"name": "Airtable : Crear un registro",
"type": "n8n-nodes-base.airtable",
"position": [
1600,
1060
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appPk6zfIQ1EbBq43",
"cachedResultUrl": "https://airtable.com/appPk6zfIQ1EbBq43",
"cachedResultName": "Client Requests"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblLkuoQ9AYsAQ0io",
"cachedResultUrl": "https://airtable.com/appPk6zfIQ1EbBq43/tblLkuoQ9AYsAQ0io",
"cachedResultName": "Client Requests"
},
"columns": {
"value": {
"Email": "={{ $json.email }}",
"Full Name": "={{ $json.full_name }}",
"Job Title": "={{ $json.job_title }}",
"Company Name": "={{ $json.company_name }}",
"Phone Number": "={{ $json.phone_number }}"
},
"schema": [
{
"id": "Full Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Full Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Company Name",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Company Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Job Title",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Job Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Email",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Email",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Phone Number",
"type": "string",
"display": true,
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Phone Number",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Submission Date",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Submission Date",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "create"
},
"credentials": {
"airtableTokenApi": {
"id": "fbET2GdSoJjK5Idu",
"name": "Airtable Personal Access Token account"
}
},
"typeVersion": 2.1
},
{
"id": "9fc0fee1-0896-4d3b-bb97-30c6bc8e9493",
"name": "GMAIL : Enviar un mensaje",
"type": "n8n-nodes-base.gmail",
"position": [
2360,
1060
],
"webhookId": "52b3183a-ee31-49ed-8711-d822c07ea3aa",
"parameters": {
"sendTo": "={{ $json.fields.Email }}",
"message": "=<p>Hi {{ $json.fields['Full Name'] }},</p>\n\n<p>Thanks for reaching out! We’ve received your request and our team will get back to you as soon as possible.</p>\n\n<p><strong>Here’s a quick summary:</strong></p>\n<ul>\n\n <li><strong>Company:</strong>{{ $json.fields['Company Name'] }} </li>\n <li><strong>Job Title:</strong> {{ $json.fields['Job Title'] }}</li>\n\n<p>We’ll be in touch very soon!</p>\n<p>— The Team</p>\n\n",
"options": {},
"subject": "Thanks for reaching out!"
},
"credentials": {
"gmailOAuth2": {
"id": "FKD43HaVeVoUXOi0",
"name": "Gmail account"
}
},
"typeVersion": 2.1
},
{
"id": "531b37a5-ab97-401f-b8c1-71b076319121",
"name": "Nota Adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
160,
620
],
"parameters": {
"width": 200,
"height": 340,
"content": "**Still manually copy-pasting your Tally form responses?**\n\nWhat if every submission went straight into Airtable — and the user got an automatic email right after?\n\nThat’s exactly what this workflow does.\nNo code, no headache — just a simple and fast automation:\n\n**Tally → Airtable → Gmail.**\n\n"
},
"typeVersion": 1
},
{
"id": "90a2d5a9-1138-468e-b5be-1f98b0a027eb",
"name": "Nota Adhesiva1",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
1240
],
"parameters": {
"color": 3,
"height": 1460,
"content": "## STEP 1 — Capture Tally Form Responses\n\n### Goal\nTrigger the workflow automatically every time someone submits your Tally form.\n\n### What we're setting up\nA webhook that catches form responses and kicks off the rest of the flow.\n\n### Steps to follow\nAdd a Webhook node\n\nParameter :\tValue\nMethod :\tPOST\nPath :\tformulaire-tally\nAuthentication : None\nRespond : Immediately\n\n\nSave the workflow\n→ This will generate a URL like:\n\n*https://your-workspace.n8n.cloud/webhook-test/formulaire-tally*\n*\n💡 Use the Test URL first (found under Parameters > Test URL)\n\nHead over to Tally\nGo to your form → Form Settings > Integrations > Webhooks\nPaste the Test URL into the Webhook field\nEnable the webhook ✅\n\nSubmit a test entry\n→ Tally won’t send anything until a real submission is made.\nThis step is required for n8n to capture the structure.\n\n### Expected output\n\nn8n receives a JSON object containing:\n\nGeneral info (IDs, timestamps, etc.)\n\nA fields[] array with all the form inputs (name, email, etc.)\n\nEach field is nicely structured with a label, key, type, and most importantly, a value.\n\nPerfect foundation for the next step: data cleanup."
},
"typeVersion": 1
},
{
"id": "28b97f32-e5ac-4368-a644-663ce1f0fce7",
"name": "Nota Adhesiva2",
"type": "n8n-nodes-base.stickyNote",
"position": [
960,
1240
],
"parameters": {
"color": 6,
"width": 300,
"height": 1160,
"content": "## STEP 2 — Clean and Structure the Form Data (Set node)\n\n### Goal\n\nTake the raw data sent by Tally and turn it into clean, readable JSON that's easy to use in the rest of the workflow.\n\nTally sends the responses inside a big array called field.\n\nCan you grab a field directly with something like {{$json[\"fields\"][3][\"value\"]}}? Yes.\n\nBut a good workflow is like a sock drawer — when everything’s folded and labeled, life’s just easier.\n\nSo we’re going to clean it up using a Set node.\n\n### Steps to follow\n\nAdd a Set node right after the Webhook.\n\nEnable the “Keep only set” option.\n\nDefine the following fields in the Set node:\n\nField name:\tExpression\nfull_name:\t{{$json[\"fields\"][0][\"value\"]}}\ncompany_name:\t{{$json[\"fields\"][1][\"value\"]}}\njob_title:\t{{$json[\"fields\"][2][\"value\"]}}\nemail:\t{{$json[\"fields\"][3][\"value\"]}}\nphone_number:\t{{$json[\"fields\"][4][\"value\"] ?? \"\"}}\nsubmission_date:\t{{$now.toISOString()}}\n\n⚠️ The order of fields[] depends on your Tally form. If you change the question order, make sure to update these indexes accordingly.\n\n### Expected output\n\nYou’ll get a clean, structured JSON like this:\n\nNow your data is clear, labeled, and ready for the rest of your workflow."
},
"typeVersion": 1
},
{
"id": "6bd0534c-1b1f-43ae-927a-b976d7a8de7e",
"name": "Nota Adhesiva3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1540,
1220
],
"parameters": {
"color": 2,
"width": 280,
"height": 1500,
"content": "## STEP 3 — Save Data in Airtable\n\nEvery time someone submits your Tally form, their info is automatically added to an Airtable base. No more copy-pasting — everything lands right where it should.\n\n## Steps to follow\n1. Create your Airtable base\nStart by creating a base named Leads (or whatever you prefer), with a table called Form Submissions.\n\nAdd the following columns in this exact order so everything maps correctly later:\n\n### Generate an Airtable token\nSo n8n can send data into your base:\n\nGo to 👉 [ https://airtable.com/create/tokens](https://airtable.com/create/tokens\n)\n\nClick Create token\n\nGive it a name (e.g. Tally Automation)\n\nCheck the following permissions:\n\ndata.records:read\n\ndata.records:write\n\nschema.bases:read\n\nUnder Base access, either choose your base manually or select “All current and future bases”\n\nClick Create token and copy the generated key\n\n### Add configure the Airtable node in n8n\n\nNode: Airtable\n\nOperation: Create\n\nAuthentication: Personal Access Token\n\nPaste your token\n\nn8n will suggest your base and table (or you can manually grab the IDs from the URL:\nhttps://airtable.com/appXXXXXXXX/tblYYYYYYYY/...)\n\nMap your fields\nInside the Airtable node, add the following field mappings:\n\nEvery new Tally form submission automatically creates a new row in your Airtable base."
},
"typeVersion": 1
},
{
"id": "0ecbb548-23dd-4f81-9ba7-b60da12227d9",
"name": "Nota Adhesiva4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1980,
1240
],
"parameters": {
"color": 4,
"width": 520,
"height": 900,
"content": "## STEP 4 — Send an Automatic Confirmation Email\n\n### Goal\n\nSend a professional email as soon as a form is completed\n\n### Steps to follow\n\n1. Add a Wait node\n\nYou don’t want the email to go out instantly — it feels cold and robotic.\n→ Add a Wait node right after Airtable.\n\nMode: Wait for a period of time\n\nDelay: 5 to 10 minutes\n\nUnit: Minutes\n\n2. Add a Gmail > Send Email node\nAuthentication: OAuth2\n\nConnect a Gmail account (business or test)\n⚠️ No API keys here — Gmail requires OAuth.\n\n3. Configure the Send Email node\n\n\n\nField\tValue\n\nCredential to connect with Gmail account via OAuth2\n\nResource :\tMessage\nOperation :\tSend\nTo :\t{{ $json.fields[\"Email\"] }}\nSubject : Thanks for reaching out!\nEmail Type : HTML\nMessage: (but do the mapping correctly using the Input so that lead receives its name correctly )"
},
"typeVersion": 1
},
{
"id": "27ecea70-1450-40a4-9adc-b71c3916d403",
"name": "Nota Adhesiva5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2580,
1020
],
"parameters": {
"width": 320,
"height": 200,
"content": "## End of the Workflow\n\nAnd that’s it — your automation is live!\n\nYour lead fills out the Tally form → the info goes to Airtable → they get a clean, professional email without you doing a thing."
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "734ed2ae-e251-4b36-a008-4f8f1703fe45",
"connections": {
"635a0ccc-dd60-4e24-aaff-50dda69e9705": {
"main": [
[
{
"node": "9fc0fee1-0896-4d3b-bb97-30c6bc8e9493",
"type": "main",
"index": 0
}
]
]
},
"de34d97a-e3e8-4be7-9a2b-c77222eeb2ca": {
"main": [
[
{
"node": "316dcbae-3957-4109-a984-cbf068529c74",
"type": "main",
"index": 0
}
]
]
},
"Webhook : Tally": {
"main": [
[
{
"node": "de34d97a-e3e8-4be7-9a2b-c77222eeb2ca",
"type": "main",
"index": 0
}
]
]
},
"316dcbae-3957-4109-a984-cbf068529c74": {
"main": [
[
{
"node": "635a0ccc-dd60-4e24-aaff-50dda69e9705",
"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?
Intermedio - Generación de leads
¿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
Baptiste Fort
@baptistefort👋 I'm Baptiste Fort. What if automating was simply our way of taking back control in a world that's moving too fast? I build workflows that are simple, useful — sometimes invisible lol. Automation isn’t cheating. It’s just being one step ahead.
Compartir este flujo de trabajo