Notion에서 Google 연락처로 연락처 동기화 및 그룹 레이블 추가
고급
이것은CRM분야의자동화 워크플로우로, 20개의 노드를 포함합니다.주로 If, Set, Code, Notion, HttpRequest 등의 노드를 사용하며. Notion 연락처를 Google 연락처에 자동 동기화 및 그룹 라벨 추가
사전 요구사항
- •Notion API Key
- •대상 API의 인증 정보가 필요할 수 있음
카테고리
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"id": "h7YubkTUmnZrsMQs",
"meta": {},
"name": "Sync Contacts from Notion to Google Contacts with Group Labels",
"tags": [],
"nodes": [
{
"id": "9884a0d6-5969-4e36-9d1e-e9026cfd2fae",
"name": "Notion에서 모든 연락처 가져오기",
"type": "n8n-nodes-base.notion",
"position": [
260,
240
],
"parameters": {
"options": {},
"resource": "databasePage",
"operation": "getAll",
"returnAll": true,
"databaseId": {
"__rl": true,
"mode": "id",
"value": "Enter your Notion database ID here."
}
},
"credentials": {},
"typeVersion": 2,
"alwaysOutputData": true
},
{
"id": "14397583-f0e6-4bc4-9bf1-ac87f80e701a",
"name": "일치 라벨 찾기",
"type": "n8n-nodes-base.code",
"position": [
1400,
240
],
"parameters": {
"jsCode": "// Get raw label from Edit Fields\nconst rawLabel = $('Loop Over Contacts').first().json.label || '';\nconsole.log(\"rawLabel:\", rawLabel);\n\n// Parse if it’s a stringified array, otherwise treat as array or single value\nlet labelNames;\nif (typeof rawLabel === 'string') {\n try {\n labelNames = JSON.parse(rawLabel); // Convert \"['Gelatin 180-200']\" to [\"Gelatin 180-200\"]\n } catch (e) {\n labelNames = [rawLabel]; // If not valid JSON, treat as single string\n }\n} else if (Array.isArray(rawLabel)) {\n labelNames = rawLabel; // Already an array\n} else {\n labelNames = rawLabel ? [rawLabel] : []; // Fallback\n}\n\nconst contactGroups = $input.first().json.contactGroups || [];\n\nconsole.log(\"labelNames (parsed):\", labelNames);\nconsole.log(\"contactGroups:\", contactGroups);\n\n// Match labels and extract resourceName\nconst matchedLabels = labelNames.map(label => {\n const group = contactGroups.find(g => \n g.name.trim().toLowerCase() === label.trim().toLowerCase() && \n g.groupType === \"USER_CONTACT_GROUP\"\n );\n console.log(`Searching for: \"${label}\", Found:`, group);\n return {\n name: label,\n resourceName: group ? [group.resourceName] : null // Wrap resourceName in an array\n };\n});\n\nconsole.log(\"matchedLabels:\", matchedLabels);\n\nreturn matchedLabels.map(label => ({\n json: {\n name: label.name,\n resourceName: label.resourceName // Now an array like [\"contactGroups/40cf29798a92c131\"]\n }\n}));"
},
"executeOnce": true,
"typeVersion": 2
},
{
"id": "bc13d96d-951e-4d7a-90ed-af96617647ef",
"name": "Google 연락처에 연락처 추가",
"type": "n8n-nodes-base.googleContacts",
"position": [
1880,
240
],
"parameters": {
"givenName": "={{ $('Loop Over Contacts').item.json.firstName }}",
"additionalFields": {
"group": "={{ $json.resourceName }}",
"phoneUi": {
"phoneValues": [
{
"type": "home",
"value": "={{ $('Loop Over Contacts').item.json.phone }}"
}
]
}
}
},
"credentials": {},
"executeOnce": false,
"typeVersion": 1
},
{
"id": "d61f9032-9982-4aaf-ab68-c827c345c14d",
"name": "워크플로우 개요",
"type": "n8n-nodes-base.stickyNote",
"position": [
-40,
-540
],
"parameters": {
"width": 1600,
"height": 520,
"content": "# Sync Notion Contacts to Google Contacts with Group Labels\nThis workflow syncs contacts from a Notion database to Google Contacts, assigning group labels based on Notion properties. It triggers on new or updated contacts, retrieves details (name, phone, labels), checks/creates Google Contact groups, adds the contact, and updates Notion to mark it as synced.\n\n**Setup Instructions:**\n1. Connect Notion and Google Contacts via OAuth2 in n8n’s credential settings.\n2. Set your Notion database ID in the Notion Trigger node (find it in your Notion database URL, e.g., 0427eb01ed3b4947873382c566f23785).\n3. Ensure Notion database has fields: name, phone, labels, and “Added to Contacts” checkbox.\n4. Test the workflow to confirm syncing.\n\n**Requirements:**\n- Notion account with a contact database.\n- Google Contacts account with OAuth2.\n- **Self-hosted n8n instance required (uses community nodes).**\n\nFor advanced setups, see [Notion’s API guide](https://developers.notion.com/)."
},
"typeVersion": 1
},
{
"id": "1c52ad45-98ff-4f32-b58e-81dfe4eda13d",
"name": "트리거 설명",
"type": "n8n-nodes-base.stickyNote",
"position": [
-40,
20
],
"parameters": {
"color": 6,
"width": 260,
"height": 520,
"content": "Triggers the workflow when a new contact is added or an existing contact is updated in the specified Notion database."
},
"typeVersion": 1
},
{
"id": "61818fe5-608c-4410-b8fe-f76a203b0123",
"name": "필드 매핑 가이드",
"type": "n8n-nodes-base.stickyNote",
"position": [
440,
20
],
"parameters": {
"color": 6,
"width": 220,
"height": 400,
"content": "Maps Notion fields (name, phone, labels, added status) to variables for further processing. Customize here to add more fields like email."
},
"typeVersion": 1
},
{
"id": "12fb9b67-4b5a-40b0-90f1-f7e896cd47d9",
"name": "라벨 매칭 가이드",
"type": "n8n-nodes-base.stickyNote",
"position": [
1340,
20
],
"parameters": {
"color": 6,
"width": 220,
"height": 400,
"content": "Matches Notion labels to existing Google Contact groups, parsing labels from Notion’s property_buy field."
},
"typeVersion": 1
},
{
"id": "a1b2c3d4-e5f6-4a7b-8c9d-0e1f2a3b4c5d",
"name": "이미 동기화된 항목 확인 가이드",
"type": "n8n-nodes-base.stickyNote",
"position": [
920,
20
],
"parameters": {
"color": 6,
"width": 220,
"height": 400,
"content": "Checks if the contact has already been synced to Google Contacts using the 'Already Added' field in Notion."
},
"typeVersion": 1
},
{
"id": "b2c3d4e5-f6a7-4b8c-9d0e-1f2a3b4c5d6e",
"name": "그룹 존재 여부 확인 가이드",
"type": "n8n-nodes-base.stickyNote",
"position": [
1580,
20
],
"parameters": {
"color": 6,
"width": 220,
"height": 400,
"content": "Verifies if the specified group label exists in Google Contacts. If not, a new group is created."
},
"typeVersion": 1
},
{
"id": "c3d4e5f6-a7b8-4c9d-0e1f-2a3b4c5d6e7f",
"name": "그룹 생성 가이드",
"type": "n8n-nodes-base.stickyNote",
"position": [
1580,
-160
],
"parameters": {
"color": 6,
"width": 220,
"height": 400,
"content": "Creates a new group in Google Contacts if the specified label doesn’t exist."
},
"typeVersion": 1
},
{
"id": "d4e5f6a7-b8c9-4d0e-1f2a-3b4c5d6e7f8a",
"name": "연락처 추가 가이드",
"type": "n8n-nodes-base.stickyNote",
"position": [
1820,
20
],
"parameters": {
"color": 6,
"width": 220,
"height": 400,
"content": "Adds the contact to Google Contacts with the specified name, phone, and group labels."
},
"typeVersion": 1
},
{
"id": "566b7be5-6090-48eb-acb2-71c0844c240b",
"name": "Notion 연락처 필드 매핑",
"type": "n8n-nodes-base.set",
"position": [
500,
240
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "cf7632d2-9983-4c09-8021-7043b8606c48",
"name": "firstName",
"type": "string",
"value": "={{ $json.name }}"
},
{
"id": "bc1f218c-bd1b-4b07-b812-1569f483a838",
"name": "label",
"type": "string",
"value": "={{ $json.property_buy }}"
},
{
"id": "d62010cd-2768-40a4-9279-c4742575a7bd",
"name": "phone",
"type": "string",
"value": "={{ $json.property_phone }}"
},
{
"id": "71fe5268-8798-4641-9395-1c2295c83ae0",
"name": "Already Added",
"type": "string",
"value": "={{ $json.property_added_to_contacts }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "8f91fe10-353f-4a03-8ddf-18c8958188aa",
"name": "연락처 순환 처리",
"type": "n8n-nodes-base.splitInBatches",
"position": [
760,
240
],
"parameters": {
"options": {
"reset": false
}
},
"typeVersion": 3
},
{
"id": "2d832694-f231-4201-8432-9d032e000d7f",
"name": "Google 연락처 그룹 가져오기",
"type": "n8n-nodes-base.httpRequest",
"position": [
1180,
240
],
"parameters": {
"url": "https://people.googleapis.com/v1/contactGroups",
"options": {},
"sendQuery": true,
"authentication": "predefinedCredentialType",
"queryParameters": {
"parameters": [
{
"name": "pageSize",
"value": "1000"
}
]
},
"nodeCredentialType": "googleContactsOAuth2Api"
},
"credentials": {},
"typeVersion": 4.2
},
{
"id": "d9660c1f-9672-4cf0-8196-fee0b0acb8d3",
"name": "Google 연락처 그룹 존재 여부 확인",
"type": "n8n-nodes-base.if",
"position": [
1640,
240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "f8e38a64-ace8-49e8-b400-c6609db670e9",
"operator": {
"type": "array",
"operation": "empty",
"singleValue": true
},
"leftValue": "={{ $json.resourceName }}",
"rightValue": "null"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "c913cf75-f9eb-4b27-b5f3-5bae32ee0d86",
"name": "Notion에서 연락처 동기화 완료 표시",
"type": "n8n-nodes-base.notion",
"position": [
2080,
240
],
"parameters": {
"pageId": {
"__rl": true,
"mode": "url",
"value": "={{ $('Get All Contacts from Notion').item.json.url }}"
},
"options": {},
"resource": "databasePage",
"operation": "update",
"propertiesUi": {
"propertyValues": [
{
"key": "Added to Contacts|checkbox",
"checkboxValue": true
}
]
}
},
"credentials": {},
"typeVersion": 2.2
},
{
"id": "d8f8f322-26c2-4c22-bc74-22db9c67cfd3",
"name": "새 Google 연락처 그룹 생성",
"type": "n8n-nodes-base.httpRequest",
"position": [
1640,
40
],
"parameters": {
"url": "https://people.googleapis.com/v1/contactGroups",
"method": "POST",
"options": {},
"jsonBody": "={\n \"contactGroup\": {\n \"name\": \"{{ $json.name }}\"\n }\n} ",
"sendBody": true,
"specifyBody": "json",
"authentication": "predefinedCredentialType",
"nodeCredentialType": "googleContactsOAuth2Api"
},
"credentials": {},
"typeVersion": 4.2
},
{
"id": "8e01eb00-ba8b-495b-bcec-38c50d631357",
"name": "연락처 이미 동기화 여부 확인",
"type": "n8n-nodes-base.if",
"position": [
980,
240
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "a707ab4a-4300-4626-bc72-d0bd6126f733",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $('Map Notion Contact Fields').item.json['Already Added'].toBoolean() }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "7a218d3f-9a76-4f21-a599-f550f3642159",
"name": "새 Notion 연락처 트리거",
"type": "n8n-nodes-base.notionTrigger",
"position": [
40,
160
],
"parameters": {
"pollTimes": {
"item": [
{
"mode": "everyWeek"
}
]
},
"databaseId": {
"__rl": true,
"mode": "id",
"value": "Enter your Notion database ID here."
}
},
"credentials": {},
"typeVersion": 1
},
{
"id": "871cfdb2-8353-4347-8b96-23d0deacb3cd",
"name": "업데이트된 Notion 연락처 트리거",
"type": "n8n-nodes-base.notionTrigger",
"position": [
40,
360
],
"parameters": {
"event": "pagedUpdatedInDatabase",
"pollTimes": {
"item": [
{
"mode": "everyWeek"
}
]
},
"databaseId": {
"__rl": true,
"mode": "id",
"value": "Enter your Notion database ID here."
}
},
"credentials": {},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "c0a0f606-780f-4f03-95d9-6d7ad6c12790",
"connections": {
"14397583-f0e6-4bc4-9bf1-ac87f80e701a": {
"main": [
[
{
"node": "d9660c1f-9672-4cf0-8196-fee0b0acb8d3",
"type": "main",
"index": 0
}
]
]
},
"8f91fe10-353f-4a03-8ddf-18c8958188aa": {
"main": [
[],
[
{
"node": "8e01eb00-ba8b-495b-bcec-38c50d631357",
"type": "main",
"index": 0
}
]
]
},
"566b7be5-6090-48eb-acb2-71c0844c240b": {
"main": [
[
{
"node": "8f91fe10-353f-4a03-8ddf-18c8958188aa",
"type": "main",
"index": 0
}
]
]
},
"2d832694-f231-4201-8432-9d032e000d7f": {
"main": [
[
{
"node": "14397583-f0e6-4bc4-9bf1-ac87f80e701a",
"type": "main",
"index": 0
}
]
]
},
"9884a0d6-5969-4e36-9d1e-e9026cfd2fae": {
"main": [
[
{
"node": "566b7be5-6090-48eb-acb2-71c0844c240b",
"type": "main",
"index": 0
}
]
]
},
"7a218d3f-9a76-4f21-a599-f550f3642159": {
"main": [
[
{
"node": "9884a0d6-5969-4e36-9d1e-e9026cfd2fae",
"type": "main",
"index": 0
}
]
]
},
"bc13d96d-951e-4d7a-90ed-af96617647ef": {
"main": [
[
{
"node": "c913cf75-f9eb-4b27-b5f3-5bae32ee0d86",
"type": "main",
"index": 0
}
]
]
},
"8e01eb00-ba8b-495b-bcec-38c50d631357": {
"main": [
[
{
"node": "8f91fe10-353f-4a03-8ddf-18c8958188aa",
"type": "main",
"index": 0
}
],
[
{
"node": "2d832694-f231-4201-8432-9d032e000d7f",
"type": "main",
"index": 0
}
]
]
},
"d8f8f322-26c2-4c22-bc74-22db9c67cfd3": {
"main": [
[
{
"node": "8f91fe10-353f-4a03-8ddf-18c8958188aa",
"type": "main",
"index": 0
}
]
]
},
"c913cf75-f9eb-4b27-b5f3-5bae32ee0d86": {
"main": [
[
{
"node": "8f91fe10-353f-4a03-8ddf-18c8958188aa",
"type": "main",
"index": 0
}
]
]
},
"d9660c1f-9672-4cf0-8196-fee0b0acb8d3": {
"main": [
[
{
"node": "d8f8f322-26c2-4c22-bc74-22db9c67cfd3",
"type": "main",
"index": 0
}
],
[
{
"node": "bc13d96d-951e-4d7a-90ed-af96617647ef",
"type": "main",
"index": 0
}
]
]
},
"871cfdb2-8353-4347-8b96-23d0deacb3cd": {
"main": [
[
{
"node": "9884a0d6-5969-4e36-9d1e-e9026cfd2fae",
"type": "main",
"index": 0
}
]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 고객관계관리
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
내 워크플로우 12
웹 스크래핑, LinkedIn 데이터 및 GPT-4o를 사용하여 Salesforce 계정 정보 자동 강화
If
Set
Code
+
If
Set
Code
30 노드Le Nguyen
고객관계관리
Google 연락처와 Notion 양방향 동기화
双向동기화 Google 通讯录与 Notion
If
Set
Merge
+
If
Set
Merge
82 노드Solomon
기타
블로그 및 LinkedIn 콘텐츠 제작 자동화
OpenAI 및 Replicate AI 이미지를 사용한 블로그 및 LinkedIn 콘텐츠 제작 자동화
If
Set
Code
+
If
Set
Code
28 노드Sagar Budhathoki
콘텐츠 제작
Notion 콘텐츠에서 Linear 작업 티켓 생성
Notion 내용을 통해 Linear 작업지 생성
If
Set
Code
+
If
Set
Code
24 노드David Roberts
엔지니어링
Gemini와 GPT를 사용하여 노트와 음성에서 구조화된 Notion 작업 공간 생성
Gemini와 GPT를 사용하여 메모와 음성에서 구조화된 Notion 작업 공간을 만들기
If
Set
Code
+
If
Set
Code
36 노드Alex Huy
멀티모달 AI
Reels 트렌드 모니터링 도구
Gemini와 Apify를 사용하여 높은 성과 Instagram Reels를 찾아 Notion에 저장
If
Set
Code
+
If
Set
Code
36 노드Eugene Green
시장 조사