JotFormからZohoへのリード自動化(送信完了後)
中級
これは自動化ワークフローで、15個のノードを含みます。主にSet, Gmail, ZohoCrm, JotFormTrigger, Agentなどのノードを使用。 JotForm、Googleスプレッドシート、Gemini AIを使ってZoho CRMへの不動産リードマッチングを自動化する
前提条件
- •Googleアカウント + Gmail API認証情報
- •Google Sheets API認証情報
- •Google Gemini API Key
使用ノード (15)
カテゴリー
-
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "DPZycgH7MnQo6dpN",
"meta": {
"instanceId": "7f1a0694161455be3a7e71f1e0dea04908b0376a1a81e3a0c1e5ac879d48f83a"
},
"name": "JotForm to Zoho Lead Automation (Submitted)",
"tags": [],
"nodes": [
{
"id": "95504a3e-0464-4260-b058-011b59b035d9",
"name": "セット:リード正規化",
"type": "n8n-nodes-base.set",
"position": [
-80,
624
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "lead_fullName",
"name": "lead.fullName",
"type": "string",
"value": "={{ $json.name || $json['Name'] || '' }}"
},
{
"id": "lead_email",
"name": "lead.email",
"type": "string",
"value": "={{ $json.email || $json['Email'] || '' }}"
},
{
"id": "lead_phone",
"name": "lead.phone",
"type": "string",
"value": "={{ $json.phone || $json['Cell Phone Number'] || '' }}"
},
{
"id": "lead_moveInDate",
"name": "lead.moveInDate",
"type": "string",
"value": "={{ $json.move_in_date || $json['Desired move in date'] || '' }}"
},
{
"id": "lead_mustHaves",
"name": "lead.mustHaves",
"type": "string",
"value": "={{ ($json.must_haves || $json['Any \\'must haves\\' for your apartment?'] || '').toString().trim() }}"
},
{
"id": "lead_minBedrooms",
"name": "lead.minBedrooms",
"type": "string",
"value": "={{ $json['Minimum # of bedrooms desired'] }}"
},
{
"id": "lead_minBathrooms",
"name": "lead.minBathrooms",
"type": "string",
"value": "={{ $json['Minimum # of bathrooms desired'] }}"
},
{
"id": "lead_needsAssignedParking",
"name": "lead.needsAssignedParking",
"type": "boolean",
"value": "={{ ($json.assigned_parking || $json['Do you need assigned parking?'] || '').toString().toLowerCase() === 'yes' }}"
},
{
"id": "lead_hasPets",
"name": "lead.hasPets",
"type": "boolean",
"value": "={{ ($json.has_pets || $json['Do you have pets?'] || '').toString().toLowerCase().includes('dont') }}"
},
{
"id": "lead_preferredNeighborhoods",
"name": "lead.preferredNeighborhoods",
"type": "array",
"value": "={{ ($json.preferred_neighborhoods || $json['List your preferred neighborhoods'] || '').toString().split(/,|\\n/).map(s => s.trim()).filter(s => s.length > 0) }}"
},
{
"id": "lead_maxMonthlyRent",
"name": "lead.maxMonthlyRent",
"type": "number",
"value": "={{ (() => { const val = ($json.price_range || $json['What is the price range you are considering?'] || '').toString().replace(/[^0-9.]/g, ''); return val ? Number(val) : null; })() }}"
},
{
"id": "lead_submittedAt",
"name": "lead.submittedAt",
"type": "string",
"value": "={{ $now.toISO() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "e4430f1c-e7b6-4360-9826-4717bdceec21",
"name": "JotFormトリガー",
"type": "n8n-nodes-base.jotFormTrigger",
"position": [
-384,
624
],
"webhookId": "WEBHOOK_ID_PLACEHOLDER",
"parameters": {
"form": "YOUR_JOTFORM_FORM_ID"
},
"typeVersion": 1
},
{
"id": "3eebca56-8295-4c30-91af-a97f35a8b7b3",
"name": "AIエージェント",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
176,
624
],
"parameters": {
"text": "={\n \"lead\": {{ JSON.stringify($json.lead) }},\n \"listings\": googleSheets tool node \n}\n",
"options": {
"systemMessage": "=You are a real-estate assistant that receives a customer’s apartment search criteria and finds the best matching listings from a Google Sheet database.\n\nYou have access to the tool \"googleSheets\" which contains all available apartment listings. Each row includes fields such as:\nlisting_id, supplier_name, supplier_type, bedrooms, bathrooms, assigned_parking, rent, pets_allowed, furnished, neighborhoods, available_from, address, contact_email, contact_phone, crm_listing_id, images, sqft, floor, elevator, balcony, supplier_rating.\n\nYour goal:\n1. Search the sheet for apartments that match the user’s criteria.\n2. Return the top 3 matches ranked by overall suitability.\n3. Return your reasoning and summarize why each match fits.\n4. Always output in valid JSON.\n\n### Matching rules\n- Bedrooms ≥ requested minimum.\n- Bathrooms ≥ requested minimum.\n- Assigned parking must be \"Yes\" if the user needs it.\n- Rent ≤ maximum price range (if provided).\n- If user has a pet → only listings where `pets_allowed` = \"Yes\".\n- Preferred neighborhoods → give higher score to exact matches or close alternatives.\n- Consider soonest available dates ≥ requested move-in date.\n- Higher `supplier_rating` is better.\n- Ignore listings that violate hard constraints (e.g. rent too high or parking required but missing).\n\n### Required Output Format\nUse this exact structure (valid JSON only):\n\n{\n \"recommendedListingId\": \"string\",\n \"topMatches\": [\n {\n \"listingId\": \"string\",\n \"score\": number,\n \"reason\": \"string\",\n \"rent\": number,\n \"bedrooms\": number,\n \"bathrooms\": number,\n \"neighborhood\": \"string\",\n \"availableFrom\": \"string\"\n }\n ],\n \"notes\": \"string\"\n}\n\nDo not include explanations or prose outside this JSON.\n"
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.2
},
{
"id": "1b2e69b8-bde7-45d2-bfb0-2886ac2f3997",
"name": "Google Geminiチャットモデル",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
16,
912
],
"parameters": {
"options": {}
},
"typeVersion": 1
},
{
"id": "5e06fdc6-e204-41e1-a3e5-dd0fce8cffd2",
"name": "googleSheets",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
272,
928
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "YOUR_SHEET_GID_OR_NAME",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_DOCUMENT_ID/edit#gid=YOUR_SHEET_GID_OR_NAME",
"cachedResultName": "Sheet Name (Template)"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_GOOGLE_SHEET_DOCUMENT_ID",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEET_DOCUMENT_ID/edit?usp=drivesdk",
"cachedResultName": "Sample Database (Template)"
}
},
"typeVersion": 4.7
},
{
"id": "dfdfbe18-115f-4d97-a75f-915dff0b3e11",
"name": "構造化出力パーサー",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
512,
896
],
"parameters": {
"jsonSchemaExample": "{\n \"recommendedListingId\": \"string\",\n \"topMatches\": [\n {\n \"listingId\": \"string\",\n \"score\": \"\",\n \"reason\": \"string\",\n \"rent\": \"\",\n \"bedrooms\": \"\",\n \"bathrooms\": \"\",\n \"neighborhood\": \"string\",\n \"availableFrom\": \"string\"\n }\n ],\n \"notes\": \"string\"\n}"
},
"typeVersion": 1.3
},
{
"id": "29e27f69-2060-4058-87dd-1c118acfd4be",
"name": "メッセージ送信",
"type": "n8n-nodes-base.gmail",
"position": [
672,
624
],
"webhookId": "WEBHOOK_ID_PLACEHOLDER",
"parameters": {
"sendTo": "={{ $('JotForm Trigger').item.json.Email }}",
"message": "=Hi {{ $('JotForm Trigger').item.json.Name }},\n\nGreat news! 🎉 Based on your preferences, we’ve found several apartments that closely match what you’re looking for. \n\nWe’d love to discuss these options with you and help you pick the perfect one.\n\nPlease use the link below to book a quick meeting with our property consultant: 👉 YOUR_CALENDLY_LINK\n\nDuring the call, we’ll review the listings, confirm availability, and guide you through the next steps.\n\nThe Real Estate Team — If you’ve already scheduled a call, please disregard this message.\n\nLooking forward to speaking with you soon!\nBest regards,\n",
"options": {},
"subject": "Your apartment search results are ready",
"emailType": "text"
},
"typeVersion": 2.1,
"alwaysOutputData": false
},
{
"id": "e0793c85-9b49-4a34-9b1a-03862379c05f",
"name": "リード作成",
"type": "n8n-nodes-base.zohoCrm",
"position": [
928,
624
],
"parameters": {
"Company": "TEMPLATED_COMPANY_NAME",
"lastName": "={{ $('JotForm Trigger').item.json.Name }}",
"resource": "lead",
"additionalFields": {
"Email": "={{ $('JotForm Trigger').item.json.Email }}",
"Mobile": "={{ $('JotForm Trigger').item.json['Cell Phone Number'] }}",
"Full_Name": "={{ $('JotForm Trigger').item.json.Name }}",
"Description": "=🧭 Apartment Match Summary\n──────────────────────────\nLead Name: {{ $('JotForm Trigger').item.json.Name }}\nEmail: {{ $('JotForm Trigger').item.json.Email }}\nPhone: {{ $('JotForm Trigger').item.json['Cell Phone Number'] }}\nMove-in Date: {{ $('Set: Normalize Lead').item.json.lead.moveInDate }}\nPreferred Neighborhoods: {{ $('Set: Normalize Lead').item.json.lead.preferredNeighborhoods }}\nMax Rent: {{ $('Set: Normalize Lead').item.json.lead.maxMonthlyRent }} EGP\nNeeds Parking: {{ $('Set: Normalize Lead').item.json.lead.needsAssignedParking }}\nHas Pets: {{ $('Set: Normalize Lead').item.json.lead.hasPets }}\n\n──────────────────────────\n🏠 AI Recommended Listing\nRecommended Listing ID: {{ $json.output.recommendedListingId }}\nTop Match Neighborhood: {{ $json.output.topMatches[0].neighborhood }}\nRent: {{ $json.output.topMatches[0].rent }} EGP\nBedrooms/Bathrooms: {{ $json.output.topMatches[0].bedrooms }}/{{ $json.output.topMatches[0].bathrooms }}\nAvailable From: {{ $json.output.topMatches[0].availableFrom }}\n\n──────────────────────────\n🏘️ Other Good Matches\n2️⃣ {{ $json.output.topMatches[1].listingId }} — {{ $json.output.topMatches[1].neighborhood }}\n Rent: {{ $json.output.topMatches[1].rent }} EGP\n\n3️⃣ {{ $json.output.topMatches[2].listingId }} — {{ $json.output.topMatches[2].neighborhood }}\n Rent: {{ $json.output.topMatches[2].rent }} EGP\n\n\n",
"Lead_Source": "JotForm form"
}
},
"typeVersion": 1
},
{
"id": "4ad8beca-d9ad-414f-a0ad-bc56011f0993",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
-448,
544
],
"parameters": {
"color": 3,
"content": "Starts the workflow when a user submits the JotForm, capturing the raw lead data."
},
"typeVersion": 1
},
{
"id": "df77592b-4994-41a5-b47c-59ce7923bb44",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
544
],
"parameters": {
"color": 4,
"content": "Maps the raw form fields to a standardized lead object for consistent data use.\n"
},
"typeVersion": 1
},
{
"id": "80c58506-ad79-481e-9d5a-24985dbb3cd5",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
112,
528
],
"parameters": {
"color": 6,
"width": 336,
"content": "The core logic. Uses lead criteria and the googleSheets tool to find and rank the top three matching listings.\n"
},
"typeVersion": 1
},
{
"id": "4c92a0b0-2f32-4b94-81cf-0b0dd4d842ef",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
176,
976
],
"parameters": {
"color": 5,
"width": 288,
"content": ".\n\n\n\n\nThe tool that allows the AI to search and retrieve all apartment listings from the Google Sheet database.\n"
},
"typeVersion": 1
},
{
"id": "9a308dff-e55f-47fc-b5b6-1319b6e78e52",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
592,
528
],
"parameters": {
"color": 4,
"width": 256,
"content": "Automatically emails the lead to notify them their results are ready and prompts them to book a follow-up consultation.\n"
},
"typeVersion": 1
},
{
"id": "cbe5ea3e-4edc-4a3d-8bbf-ddaaefc9baee",
"name": "付箋5",
"type": "n8n-nodes-base.stickyNote",
"position": [
864,
528
],
"parameters": {
"color": 5,
"width": 288,
"content": "Creates a new, detailed lead record in Zoho CRM, including the customer's needs and the AI's top listing recommendations.\n"
},
"typeVersion": 1
},
{
"id": "3873d283-f68d-4bc3-90ae-4ebf61767759",
"name": "付箋12",
"type": "n8n-nodes-base.stickyNote",
"position": [
-448,
-224
],
"parameters": {
"width": 1024,
"height": 736,
"content": "# JotForm Setup Guide\n\n\n## ⚡ Step 1: Link with the Webhook\n\n\n* **1. Log in to your JotForm account, select your Cashback Form, and navigate to Settings.**\n\n* **2. Go to Integrations and search for Webhooks.**\n\n* **3. Paste the JotForm Trigger Webhook URL provided by your n8n workflow into the field.**\n\n* **4. Save and activate! Your form is now live!**\n\n## 🔑 Step 2: Unlock File Access (API Key)\n\n* **1.Generate a JotForm API Key in your JotForm account settings.**\n\n* **2.CRITICAL: Set the key permission level to \"Full Access\" (required for file downloads).**\n\n* **3.Go to your n8n workflow and insert this key into:**\n * **I.The JotForm Trigger node's credential.**\n * **II.The Fetch All Receipts node's query parameters.**\n\n## ⚙️ Step 3: Configure Your n8n Nodes\n\n* **In the JotForm Trigger node replace the placeholder with your actual JotForm ID.**"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "27b5e246-a6bf-40c4-8ddf-52a41aeb2040",
"connections": {
"3eebca56-8295-4c30-91af-a97f35a8b7b3": {
"main": [
[
{
"node": "29e27f69-2060-4058-87dd-1c118acfd4be",
"type": "main",
"index": 0
}
]
]
},
"5e06fdc6-e204-41e1-a3e5-dd0fce8cffd2": {
"ai_tool": [
[
{
"node": "3eebca56-8295-4c30-91af-a97f35a8b7b3",
"type": "ai_tool",
"index": 0
}
]
]
},
"29e27f69-2060-4058-87dd-1c118acfd4be": {
"main": [
[
{
"node": "e0793c85-9b49-4a34-9b1a-03862379c05f",
"type": "main",
"index": 0
}
]
]
},
"e4430f1c-e7b6-4360-9826-4717bdceec21": {
"main": [
[
{
"node": "95504a3e-0464-4260-b058-011b59b035d9",
"type": "main",
"index": 0
}
]
]
},
"95504a3e-0464-4260-b058-011b59b035d9": {
"main": [
[
{
"node": "3eebca56-8295-4c30-91af-a97f35a8b7b3",
"type": "main",
"index": 0
}
]
]
},
"1b2e69b8-bde7-45d2-bfb0-2886ac2f3997": {
"ai_languageModel": [
[
{
"node": "3eebca56-8295-4c30-91af-a97f35a8b7b3",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"dfdfbe18-115f-4d97-a75f-915dff0b3e11": {
"ai_outputParser": [
[
{
"node": "3eebca56-8295-4c30-91af-a97f35a8b7b3",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
中級
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
JotFormキャッシュバック(テンプレート)
JotForm、Gemini 2.5、Notion を使った自動化現金戻し領収書処理
If
Code
Gmail
+
If
Code
Gmail
25 ノードAbdullah Alshiekh
候補者スコアリング(提出済み)
JotformとGemini AIを使った候補者の分析と順位付けの自動化
If
Gmail
Google Sheets
+
If
Gmail
Google Sheets
14 ノードAbdullah Alshiekh
AI医療レポートジェネレーター
メールから医療報告を生成するためにGemini AIとGoogle Workspaceを使用する
Set
Code
Gmail
+
Set
Code
Gmail
21 ノードAbdullah Alshiekh
文書抽出
AI駆動のフィードバックトリアージシステム:JotformからTrello、Airtable、Slackへ、Geminiを統合
AI駆動のフィードバックトリアージシステム:JotformからTrello、Airtable、Slackへ、Geminiを統合
If
Set
Gmail
+
If
Set
Gmail
21 ノードAtta
市場調査
Jotform、Gemini AI、Google Sheets を使用した内部クレーム処理の自動化
Jotform、Gemini AI、Google Sheetsを使って、内部でのクレーム処理を自動化
If
Gmail
Google Sheets
+
If
Gmail
Google Sheets
22 ノードiamvaar
チケット管理
重複フォーム提出の検出と、JotformおよびGeminiを使用したAI返信の送信
重複したフォーム送信を検出し、JotformとGeminiを使ってAI応答を送信する
If
Set
Gmail
+
If
Set
Gmail
17 ノードRoshan Ramani
ワークフロー情報
難易度
中級
ノード数15
カテゴリー-
ノードタイプ9
作成者
Abdullah Alshiekh
@abdullah01🚀 Automation pro building AI-powered workflows with n8n. 💼 Special focus on real use cases 🔧 Love clean, flexible, and business-ready automations.
外部リンク
n8n.ioで表示 →
このワークフローを共有