JotForm 제출에서 HubSpot 회사와 작업을 생성하고 Google Sheets 기록을 포함합니다.
중급
이것은자동화 워크플로우로, 13개의 노드를 포함합니다.주로 Code, Wait, Hubspot, HttpRequest, GoogleSheets 등의 노드를 사용하며. JotForm 제출에서 HubSpot 회사와 작업을 생성하여 Google Sheets 기록 포함
사전 요구사항
- •HubSpot API Key
- •대상 API의 인증 정보가 필요할 수 있음
- •Google Sheets API 인증 정보
카테고리
-
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"meta": {
"instanceId": "67dd1445921862780ac74448aef33eb969db12b9a6ce95248c7ae86a887cb653",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "0293a49f-3721-456a-9951-3c0c0fc8ba5d",
"name": "JotForm 트리거",
"type": "n8n-nodes-base.jotFormTrigger",
"position": [
640,
416
],
"webhookId": "4376713f-865d-4009-abeb-12ebedde63f5",
"parameters": {
"form": "252808415357461"
},
"credentials": {
"jotFormApi": {
"id": "anmQIw1moNILel4d",
"name": "JotForm account"
}
},
"typeVersion": 1
},
{
"id": "b85baa2e-77ed-4939-8158-be4da9c49b30",
"name": "대기",
"type": "n8n-nodes-base.wait",
"position": [
1360,
416
],
"webhookId": "60d74e72-8895-4f22-a546-34f92db6c0cf",
"parameters": {
"amount": 10
},
"typeVersion": 1.1
},
{
"id": "f4ac75b3-4578-4134-a3da-0d5420d3f578",
"name": "HubSpot 작업 생성",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
1584,
416
],
"parameters": {
"url": "https://api.hubapi.com/crm/v3/objects/tasks",
"method": "POST",
"options": {
"response": {
"response": {
"neverError": true,
"responseFormat": "json"
}
}
},
"jsonBody": "={\n \"properties\": {\n \"hs_task_subject\": \"{{ $('Format Jotform Data').item.json.hubspot_task_title || 'Jotform Marketing Query' }}\",\n \"hs_task_body\": \"{{ \n 'Company: ' + ($('Format Jotform Data').item.json.company_name || 'Unknown Company') + '\\\\n' + \n 'Person: ' + ($('Format Jotform Data').item.json.full_name || 'Unknown') + '\\\\n' + \n 'Email: ' + ($('Format Jotform Data').item.json.email || 'N/A') + '\\\\n' + \n 'LinkedIn: ' + ($('Format Jotform Data').item.json.linkedin_profile || 'N/A') + '\\\\n' + \n 'Domain: ' + ($('Format Jotform Data').item.json.domain || 'N/A') + '\\\\n' + \n 'Marketing Budget (USD): ' + ($('Format Jotform Data').item.json.marketing_budget_usd || 'N/A') + '\\\\n' + \n 'Specific Query: ' + ($('Format Jotform Data').item.json.specific_query || 'No query provided.')\n }}\",\n \"hs_task_status\": \"NOT_STARTED\",\n \"hs_task_priority\": \"HIGH\",\n \"hs_task_type\": \"CALL\",\n \"hs_timestamp\": \"{{ $('Format Jotform Data').item.json.task_timestamp || (new Date().toISOString()) }}\",\n \"hubspot_owner_id\": \"{{ $('Format Jotform Data').item.json.assigned_owner_id || '82654288' }}\"\n },\n \"associations\": [\n {\n \"to\": {\n \"id\": \"{{ $('Format Jotform Data').item.json.company_id || '' }}\"\n },\n \"types\": [\n {\n \"associationCategory\": \"HUBSPOT_DEFINED\",\n \"associationTypeId\": 192\n }\n ]\n }\n ]\n}\n",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer <your pat token>"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "2b7fc36d-c4ca-485a-88ca-cfa47a5da226",
"name": "회사 생성1",
"type": "n8n-nodes-base.hubspot",
"position": [
912,
416
],
"parameters": {
"name": "={{ $json.CompanyName }}",
"resource": "company",
"additionalFields": {}
},
"credentials": {
"hubspotApi": {
"id": "0JXgoSMegjZJIEeR",
"name": "HubSpot dummy"
}
},
"typeVersion": 2.2,
"alwaysOutputData": true
},
{
"id": "c17f50ae-ee93-4687-bb76-f9448775e7a0",
"name": "데이터 서식 지정",
"type": "n8n-nodes-base.code",
"position": [
1184,
416
],
"parameters": {
"jsCode": "const inputData = $input.all();\nconst formattedData = [];\n\nconst ownerAssignments = {\n owner1: \"82654288\",\n owner2: \"944860204\", // Replace with actual ID\n};\n\n// helper: safely unescape quotes if Jotform encodes them\nconst unescapeQuotes = (v) =>\n typeof v === 'string'\n ? v.replace(/\\\\'/g, \"'\").replace(/\\\\\"/g, '\"')\n : v;\n\nfor (const { json: item } of inputData) {\n // Extract and sanitize fields\n const firstName = unescapeQuotes(item[\"First Name\"] || item.first_name || '');\n const lastName = unescapeQuotes(item[\"Last Name\"] || item.last_name || '');\n const fullName = `${firstName} ${lastName}`.trim() || 'Unknown';\n const email = unescapeQuotes(item.Email || item.email || '');\n const linkedinProfile = unescapeQuotes(item[\"Linkedin Profile\"] || item.linkedin || '');\n const companyName = unescapeQuotes(item[\"Company Name\"] || item.company_name || 'Unknown Company');\n const marketingBudget = unescapeQuotes(item[\"Marketing Budget ( in USD )\"] || item.marketing_budget || '');\n const domain = unescapeQuotes(item.Domain || item.domain || '');\n const specificQuery = unescapeQuotes(item[\"Any Specific querry ?\"] || item.query || '');\n\n // Task title\n const taskTitle = `(Jotform) Marketing Query from ${fullName} (${companyName})`;\n\n // Owner assignment (basic hash)\n const companyHash = (companyName || '').length % 2;\n const assignedOwnerId = companyHash === 0 ? ownerAssignments.owner1 : ownerAssignments.owner2;\n\n // Timestamp (24 hrs from now)\n const futureDate = new Date();\n futureDate.setHours(futureDate.getHours() + 24);\n const taskTimestamp = futureDate.toISOString();\n\n // Final formatted structure\n const formattedItem = {\n first_name: firstName,\n last_name: lastName,\n full_name: fullName,\n email: email,\n linkedin_profile: linkedinProfile,\n company_name: companyName,\n marketing_budget_usd: marketingBudget,\n domain: domain,\n specific_query: specificQuery,\n hubspot_task_title: taskTitle,\n task_timestamp: taskTimestamp,\n assigned_owner_id: assignedOwnerId,\n };\n\n formattedData.push({ json: formattedItem });\n}\n\nreturn formattedData;\n"
},
"typeVersion": 2
},
{
"id": "da057d1b-4a6e-4e28-8aee-b3636c16831c",
"name": "로그 저장",
"type": "n8n-nodes-base.googleSheets",
"position": [
2240,
416
],
"parameters": {
"columns": {
"value": {
"Notes": "=This was created at {{ $json.createdAt }} & was updated at {{ $json.updatedAt }}",
"domain": "={{ $json.properties.domain }}",
"company": "={{ $json.properties.name }}",
"HubspotCompanyID": "={{ $json.id }}"
},
"schema": [
{
"id": "company",
"type": "string",
"display": true,
"required": false,
"displayName": "company",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "No. of Stores",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "No. of Stores",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "domain",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "domain",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Notes",
"type": "string",
"display": true,
"required": false,
"displayName": "Notes",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "HubspotCompanyID",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "HubspotCompanyID",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"domain"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1117410898,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ETTxIAb6Kj69V7xInvYEdYqvKcV8mjE3BoT1a7ER5tE/edit#gid=1117410898",
"cachedResultName": "AlreadyExistingHC"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1ETTxIAb6Kj69V7xInvYEdYqvKcV8mjE3BoT1a7ER5tE",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ETTxIAb6Kj69V7xInvYEdYqvKcV8mjE3BoT1a7ER5tE/edit?usp=drivesdk",
"cachedResultName": "Linkedin2Hubspot"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "78jRH4x5Oj2STz8x",
"name": "Google Sheets dummy"
}
},
"typeVersion": 4.7
},
{
"id": "a479a00e-a33e-4123-9887-ef98144d0ec3",
"name": "스티커 노트",
"type": "n8n-nodes-base.stickyNote",
"position": [
480,
16
],
"parameters": {
"width": 416,
"height": 624,
"content": "## 🧾 JOTFORM TRIGGER\n\nThis workflow begins with a JotForm submission trigger. \nIt captures the following fields submitted through the form:\n\n- **Name**\n- **First Name**\n- **Last Name**\n- **Email**\n- **LinkedIn Profile**\n- **Company Name**\n- **Marketing Budget (in USD)**\n- **Domain**\n- **Any Specific Query**\n\nEach submission is automatically passed to the next step for HubSpot company creation and task generation.\n"
},
"typeVersion": 1
},
{
"id": "ce5c50c0-18f6-45d8-a74b-13c500fb3777",
"name": "스티커 노트1",
"type": "n8n-nodes-base.stickyNote",
"position": [
896,
16
],
"parameters": {
"color": 6,
"width": 416,
"height": 624,
"content": "## 🏢 HUBSPOT COMPANY CREATION & FORMATTER\n\nThis section uses the submitted **Company Name** to create a new company record in HubSpot (if it doesn’t already exist). \nThe **Formatter** node then processes all JotForm inputs into a structured, standardized format — ready for task creation in HubSpot.\n\nKey functions performed here:\n- Sanitizes all JotForm fields (name, email, domain, etc.)\n- Generates a follow-up task title automatically\n- Assigns a HubSpot owner based on company data\n- Prepares timestamps for scheduling tasks\n"
},
"typeVersion": 1
},
{
"id": "3231a6ce-d8f8-434b-af2b-fcb08d4a00ba",
"name": "회사 도메인 설정",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
2016,
416
],
"parameters": {
"url": "=https://api.hubapi.com/crm/v3/objects/companies/{{ $('Loop Over Items3').item.json.company_id }}",
"method": "PATCH",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
},
"jsonBody": "={\n \"properties\": {\n \"domain\": \"{{ $('Loop Over Items3').item.json.domain}}\"\n }\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Bearer < PAT >"
},
{
"name": "Content-Type",
"value": "application/json"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "968e7fc6-65fa-4385-aba8-2933bac8ed02",
"name": "대기10",
"type": "n8n-nodes-base.wait",
"position": [
1808,
416
],
"webhookId": "97ecc78e-a2af-485e-883e-48559fe4477b",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "565fce0c-493d-4171-a095-b16d9993b3a3",
"name": "스티커 노트2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1328,
0
],
"parameters": {
"color": 7,
"width": 400,
"height": 640,
"content": "## 🔁 HUBSPOT TASK CREATION\n\nThis section loops through the formatted data and sends HTTP requests to HubSpot to create tasks. \nEach task includes all relevant submission details, such as company, contact, LinkedIn profile, and marketing query.\n\nCore logic:\n- Wait node prevents rate limit collisions\n- HubSpot API is called using a structured payload\n- Tasks are linked with their associated company records\n- Task priority, status, and owner are assigned automatically\n"
},
"typeVersion": 1
},
{
"id": "a332ddf0-e435-4371-b213-8699c3cf066f",
"name": "스티커 노트4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1744,
0
],
"parameters": {
"color": 3,
"width": 400,
"height": 640,
"content": "## 🌐 LOOP OVER & DOMAIN SETTING\n\nAfter the tasks are created, this section updates each HubSpot company with its corresponding **Domain** value using the id generating while creating company. \nIt ensures that all newly created companies in HubSpot have their website field populated correctly.\n\nDetails:\n- Wait node ensures proper sequencing\n- The “Set Company Domain” HTTP request updates the HubSpot company record\n- Prevents duplicate or unlinked company entries\n"
},
"typeVersion": 1
},
{
"id": "62fd01c6-f579-4fb3-9807-f414c2312bed",
"name": "스티커 노트5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2160,
0
],
"parameters": {
"color": 2,
"width": 256,
"height": 624,
"content": "## 📊 STORING LOGS\n\nLogging is critical for transparency and debugging. \nThis section safely records all processed submissions and API responses in a connected **Google Sheet**.\n\nBenefits:\n- Provides a full audit trail of workflow executions\n- Helps monitor form activity and HubSpot sync status\n- Simplifies debugging in case of failed API calls\n"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"b85baa2e-77ed-4939-8158-be4da9c49b30": {
"main": [
[
{
"node": "f4ac75b3-4578-4134-a3da-0d5420d3f578",
"type": "main",
"index": 0
}
]
]
},
"968e7fc6-65fa-4385-aba8-2933bac8ed02": {
"main": [
[
{
"node": "3231a6ce-d8f8-434b-af2b-fcb08d4a00ba",
"type": "main",
"index": 0
}
]
]
},
"c17f50ae-ee93-4687-bb76-f9448775e7a0": {
"main": [
[
{
"node": "b85baa2e-77ed-4939-8158-be4da9c49b30",
"type": "main",
"index": 0
}
]
]
},
"0293a49f-3721-456a-9951-3c0c0fc8ba5d": {
"main": [
[
{
"node": "2b7fc36d-c4ca-485a-88ca-cfa47a5da226",
"type": "main",
"index": 0
}
]
]
},
"2b7fc36d-c4ca-485a-88ca-cfa47a5da226": {
"main": [
[
{
"node": "c17f50ae-ee93-4687-bb76-f9448775e7a0",
"type": "main",
"index": 0
}
]
]
},
"3231a6ce-d8f8-434b-af2b-fcb08d4a00ba": {
"main": [
[
{
"node": "da057d1b-4a6e-4e28-8aee-b3636c16831c",
"type": "main",
"index": 0
}
]
]
},
"f4ac75b3-4578-4134-a3da-0d5420d3f578": {
"main": [
[
{
"node": "968e7fc6-65fa-4385-aba8-2933bac8ed02",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Apollo.io와 Google Sheets를 사용한 자동화된 LinkedIn 잠재 고객 강화 파이프라인
Apollo.io와 Google Sheets를 사용한 자동화된 LinkedIn 리드 강화 파이프라인
If
Code
Wait
+
If
Code
Wait
33 노드Rahi Uppal
리드 생성
AI 기반 다중 채널 잠재고객 도달 시스템 - JotForm, Gemini AI 및 HeyReach
JotForm, Gemini AI 및 HeyReach를 기반으로 한 AI 기반 다중 채널 잠재고객 도달 시스템
If
Wait
Gmail
+
If
Wait
Gmail
19 노드Rahi Uppal
리드 육성
09 - 잠재 리드 프로필 강화기
잠재 고객 정보 보강 및 개인화 아웃리치 자동화: HubSpot, Phantombuster 및 GPT
If
Set
Code
+
If
Set
Code
30 노드Avkash Kakdiya
리드 육성
SignSnapHome, HubSpot, Twilio를 사용한 부동산 오픈하우스 후속 작업 자동화
SignSnapHome, HubSpot 및 Twilio를 통한 부동산 오픈하우스 후속 조치 자동화
If
Set
Code
+
If
Set
Code
32 노드Kaden Reese
콘텐츠 제작
Postgres 및 Gallabox 개인화 메시지를 사용한 자동화된 WhatsApp 잠재 고객 육성
Postgres와 Gallabox 개인 맞춤형 메시지를 활용한 자동화 WhatsApp 리드 육성
Code
Postgres
Http Request
+
Code
Postgres
Http Request
11 노드Rahi
리드 육성
3D 제품 비디오
为电商店铺에서2D图像생성3D제품视频
If
Code
Wait
+
If
Code
Wait
21 노드InfyOm Technologies
디자인
워크플로우 정보
난이도
중급
노드 수13
카테고리-
노드 유형7
저자
Rahi Uppal
@rahiuppalAI and Automation Consultant with over 1000 hours of experience building, deploying, and solving marketing and sales automation problems. I ship AI products faster by combining business acumen with AI & automation expertise and an engineering mindset. Connect with me on LinkedIn to chat.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유