8
n8n 한국어amn8n.com

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)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
고급
노드 수20
카테고리1
노드 유형9
난이도 설명

고급 사용자를 위한 16+개 노드의 복잡한 워크플로우

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34