TallyフォームのSlack通知を自動化
中級
これはLead Generation分野の自動化ワークフローで、11個のノードを含みます。主にSet, Wait, Gmail, Webhook, Airtableなどのノードを使用。 Tallyフォームの自動化:Airtableで保存し、Slackで通知
前提条件
- •Googleアカウント + Gmail API認証情報
- •HTTP Webhookエンドポイント(n8nが自動生成)
- •Airtable API Key
カテゴリー
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "csdsQBzjewFU2R9L",
"meta": {
"instanceId": "e95c8554b03e2c16a5c8c44cc7d45f6192b966fba75d5438d1201989ceff13e2",
"templateCredsSetupCompleted": true
},
"name": "Automate a Tally Form slack",
"tags": [],
"nodes": [
{
"id": "209736b4-b77d-445f-a592-67408ad188d5",
"name": "フィールド編集",
"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": "7d8cefdb-3eaf-40b5-b837-429fd219daa8",
"name": "待機",
"type": "n8n-nodes-base.wait",
"position": [
1960,
1060
],
"webhookId": "0401220d-037c-4e73-96ad-8ed99c768d6e",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "62227d14-34a0-42f0-986f-cdf88720c60b",
"name": "Webhook : Tally",
"type": "n8n-nodes-base.webhook",
"position": [
620,
1060
],
"webhookId": "20bc0a59-b424-454d-9d49-4504e6b29fa2",
"parameters": {
"path": "20bc0a59-b424-454d-9d49-4504e6b29fa2",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 2
},
{
"id": "6038f0a2-0787-4693-88b9-57313d81b526",
"name": "Airtable : レコード作成",
"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": "57f2a3bb-b87f-4137-ab7d-ba60f257d74d",
"name": "GMAIL : メッセージ送信",
"type": "n8n-nodes-base.gmail",
"position": [
2360,
1060
],
"webhookId": "b01196a3-c7e2-4933-b8ae-bb1e0820f703",
"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": "b3d40a1e-61cf-499f-9ec5-41f05e65237b",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
160,
620
],
"parameters": {
"width": 200,
"height": 400,
"content": "## 🎯 Workflow Goal\n\n**Still manually checking form responses in your inbox?**\n\n**What if every submission landed neatly in Airtable — and you got a clean Slack message instantly?**\n\nThat’s exactly what this workflow does.\nNo code, no delay — just a smooth automation:\n\n**Tally → Airtable → Slack**"
},
"typeVersion": 1
},
{
"id": "9eccf3c9-5d89-465e-8647-4b3f677b56d2",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
0
],
"parameters": {
"color": 3,
"height": 1220,
"content": "## 🧩 Step 1 – Connect Tally to n8n\n\n**Let’s start by connecting your Tally form to n8n using a webhook.**\n\nThis will trigger your workflow every time someone submits the form — no manual checking needed.\n\n### 🔧 What we’re setting up\n- A **Webhook** node that receives form responses from Tally.\n\n### ✅ How to set it up\n1. Add a **Webhook** node in n8n.\n2. Set the **HTTP Method** to `POST`.\n3. Copy the webhook URL.\n4. Go to your Tally form settings → **Integrations** → **Webhooks**.\n5. Paste your webhook URL and activate it.\n\nNow every new submission will ping n8n automatically.\n\n### 📦 Output\nThe full form response arrives in `{{$json.fields}}`, as an array of objects like:\n\n```json\n[\n {\n \"label\": \"Full Name\",\n \"value\": \"Jane Doe\"\n },\n {\n \"label\": \"Email\",\n \"value\": \"jane.doe@example.com\"\n }\n]"
},
"typeVersion": 1
},
{
"id": "4859c72a-fe22-4e94-b78e-b036cc398acb",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
980,
160
],
"parameters": {
"color": 6,
"width": 280,
"height": 1060,
"content": "## 🛠 Step 2 – Clean the Tally response\n\n**Now that Tally sends raw data to n8n, we need to make it usable.**\n\nLet’s transform that messy `fields[]` array into a clean object that Airtable and Slack can read easily.\n\n### 🔧 What we’re setting up\n- A **Set** or **Function** node to restructure the data into readable fields.\n\n### ✅ How to set it up\n1. Add a **Function** node (or use **Set** if you don’t want to write code).\n2. Paste this code inside:\n\n```js\nconst out = {};\nfor (const field of $json.fields) {\n out[field.label] = field.value;\n}\nreturn [{ json: out }];\n\nThis turns the array into a simple object.\n\n📦 Output\nNow you can use the values easily:\n\n{{$json[\"Full Name\"]}}\n\n{{$json[\"Email\"]}}\n\n{{$json[\"Phone\"]}}\n\nSuper clean, super useful.\n\nyaml\nCopier\nModifier\n"
},
"typeVersion": 1
},
{
"id": "b635a05b-fd2c-46f7-a211-bf90ff379556",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1520,
200
],
"parameters": {
"color": 2,
"width": 280,
"height": 1020,
"content": "## 🧱 Step 3 – Send the cleaned data to Airtable\n\n**Now that your Tally response is nice and tidy, it’s time to store it.**\n\nWe’re going to create a new record in your Airtable base using the structured data from Step 2.\n\n### 🔧 What we’re setting up\n- An **Airtable > Create Record** node that saves each submission as a new row.\n\n### ✅ How to set it up\n1. Add an **Airtable node** and choose the **“Create Record”** operation.\n2. Connect your Airtable account.\n3. Select the correct **Base** and **Table**.\n4. Map the cleaned fields to your Airtable columns:\n\n- Name → `{{$json[\"Full Name\"]}}`\n- Email → `{{$json[\"Email\"]}}`\n- Phone → `{{$json[\"Phone\"]}}`\n- Company → `{{$json[\"Company\"]}}`\n- Anything else you need\n\n### 📦 Output\nEach time someone fills out the form, a new Airtable row is created automatically."
},
"typeVersion": 1
},
{
"id": "125c7959-e049-478b-9f3d-b8de998a7754",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1920,
320
],
"parameters": {
"color": 4,
"width": 600,
"height": 900,
"content": "## 📬 Step 4 – Send an automatic Slack message\n\n**After storing the data in Airtable, let’s notify your team — instantly.**\n\nWe’ll send a professional Slack message each time someone fills out your Tally form.\n\n### 🔧 What we’re setting up\n- A **Slack > Send a Message** node to post in your chosen channel or send a DM.\n\n### ✅ How to set it up\n1. Add a **Slack node** and choose the **“Send Message”** operation.\n2. Connect your Slack account.\n3. Pick the right **channel** or user.\n4. Customize the message using the cleaned data:\n\n```plaintext\n🎉 New form submission!\n\n👤 Name: {{$json[\"Full Name\"]}}\n📧 Email: {{$json[\"Email\"]}}\n📞 Phone: {{$json[\"Phone\"]}}\n🏢 Company: {{$json[\"Company\"]}}\n(Optional) Use Markdown formatting in your message for extra clarity.\n\n📦 Output\nYou’ll receive a neat Slack message every time — no inbox clutter, no delay.\n\nyaml\nCopier\nModifier\n"
},
"typeVersion": 1
},
{
"id": "ccfd0ac3-6a74-4efe-bf2f-e444a9d5f699",
"name": "付箋5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2600,
880
],
"parameters": {
"width": 320,
"height": 340,
"content": "## ✅ Step 5 – Workflow complete\n\n**And that’s it!** You’ve just built a full automation that captures Tally form responses, cleans the data, stores it in Airtable, and sends a custom Slack message — all on autopilot.\n\nNo more copy-paste. No more missed submissions.\n\nNow every lead is organized, stored, and shared with your team… instantly.\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "0fe76154-7e4f-4ff0-bc97-7bcffb1f9a4b",
"connections": {
"7d8cefdb-3eaf-40b5-b837-429fd219daa8": {
"main": [
[
{
"node": "57f2a3bb-b87f-4137-ab7d-ba60f257d74d",
"type": "main",
"index": 0
}
]
]
},
"209736b4-b77d-445f-a592-67408ad188d5": {
"main": [
[
{
"node": "6038f0a2-0787-4693-88b9-57313d81b526",
"type": "main",
"index": 0
}
]
]
},
"62227d14-34a0-42f0-986f-cdf88720c60b": {
"main": [
[
{
"node": "209736b4-b77d-445f-a592-67408ad188d5",
"type": "main",
"index": 0
}
]
]
},
"6038f0a2-0787-4693-88b9-57313d81b526": {
"main": [
[
{
"node": "7d8cefdb-3eaf-40b5-b837-429fd219daa8",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
中級 - リード獲得
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
見積もりリクエスト?Tallyで送信、Airtableに記録、Slackで通知、Gmailで感謝メール送信
Tally、Airtable、Slack、Gmailを使って見積もりリクエスト処理を自動化
Set
Wait
Gmail
+
Set
Wait
Gmail
13 ノードBaptiste Fort
リード獲得
Tallyフォーム処理の自動化
Gmailを使って、Tallyフォームの申し込みをAirtableに自動返信
Set
Wait
Gmail
+
Set
Wait
Gmail
11 ノードBaptiste Fort
リード獲得
潜在顧客開掘とメールワーキングフロー
Google Maps、SendGrid、AIを使用してB2Bリード獲得とメールマーケティングを自動化
If
Set
Code
+
If
Set
Code
141 ノードEzema Kingsley Chibuzo
リード獲得
株式市場の日次レポートを自動化
Bright Data、GPT-4.1、Airtable、Gmail を使った自動化による毎日の株式市場レポート
Set
Wait
Switch
+
Set
Wait
Switch
27 ノードBaptiste Fort
コンテンツ作成
Telegramから会議記録を自動のにAirtable、Slack、Gmailへ送信
GPT-4.1を使ってTelegramメッセージから会議記録を作成し、Airtable、Slack、Gmailへ送信する
If
Code
Wait
+
If
Code
Wait
29 ノードBaptiste Fort
AI要約
廃弃カートリッジ復元メールの自動化ワークフロー
Gmail、Googleスプレッドシート、Twilioを使用したShopifyアブンドカート復活(コードなし)
If
Set
Wait
+
If
Set
Wait
60 ノードVelebit from Innovatio
営業
ワークフロー情報
難易度
中級
ノード数11
カテゴリー1
ノードタイプ6
作成者
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.
外部リンク
n8n.ioで表示 →
このワークフローを共有