발행일: 2026-10-06(화) 11:44
← 목차로 돌아가기|하루 30분 n8n 시리즈 ② 실무 자동화 레시피 100
RECIPE 051

Typeform 응답 → Notion 데이터베이스 자동 저장

  • ▸Typeform 설문 제출 시 즉시 Notion에 레코드 생성
  • ▸응답 필드를 Notion 속성(텍스트, 선택, 날짜)에 매핑
  • ▸중복 제출 방지 로직 추가

✅사전 준비

  • □Typeform 계정 및 폼 생성 완료
  • □Notion 통합 토큰 발급 (https://www.notion.so/my-integrations)
  • □Notion 데이터베이스 ID 확인
  • □n8n Typeform Trigger 자격증명 설정

워크플로우 구성

Typeform Trigger
→ IF (중복 체크: 이메일 필드 존재 여부)
→ Notion (Create Page)
→ Slack (신규 응답 알림)

Notion 페이지 생성 Body 예시

{
  "parent": { "database_id": "YOUR_DATABASE_ID" },
  "properties": {
    "이름": { "title": [{ "text": { "content": "{{ $json.answers[0].text }}" } }] },
    "이메일": { "email": "{{ $json.answers[1].email }}" },
    "제출일": { "date": { "start": "{{ $now.toISO() }}" } },
    "점수": { "number": {{ $json.calculated_score }} }
  }
}
💡 TIPTypeform 필드 ID는 폼 편집 화면 URL 또는 Typeform API 응답의 `answers[n].field.id`에서 확인할 수 있습니다.
⚡

워크플로우 JSON

아래 JSON을 복사해 n8n에 바로 임포트하세요

📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
  "recipeId": "recipe051",
  "title": "채용 지원서 → 구글 시트 자동 정리 & Slack 알림",
  "chapter": 5,
  "category": "HR & 조직 운영 자동화",
  "difficulty": "⭐",
  "estimatedTime": "20분",
  "usedApps": [
    "Gmail",
    "Google Sheets",
    "Slack"
  ],
  "description": "잡코리아·사람인·원티드 등에서 지원서가 이메일로 수신되면 지원자 이름·포지션·이메일을 Google Sheets에 자동 기록하고 채용팀 Slack에 새 지원자 알림을 보냅니다.",
  "nodes": [
    {
      "id": "trigger_gmail",
      "type": "trigger",
      "service": "Gmail",
      "name": "지원서 이메일 감지",
      "config": {
        "event": "messageReceived",
        "pollInterval": "every 10 minutes",
        "filters": {
          "subject": "지원"
        }
      }
    },
    {
      "id": "extract_info",
      "type": "action",
      "service": "OpenAI",
      "name": "지원자 정보 추출",
      "config": {
        "operation": "chat",
        "model": "gpt-4o-mini",
        "messages": [
          {
            "role": "system",
            "content": "채용 지원서 이메일에서 정보를 추출합니다. 반드시 JSON 형식으로만 답하세요: {\"name\": \"이름\", \"position\": \"포지션\", \"email\": \"이메일\", \"phone\": \"연락처\"}"
          },
          {
            "role": "user",
            "content": "제목: {{$json['subject']}}\n내용: {{$json['text'].slice(0, 1000)}}"
          }
        ]
      }
    },
    {
      "id": "parse_json",
      "type": "action",
      "service": "Function",
      "name": "JSON 파싱",
      "config": {
        "code": "const raw = $json['choices'][0]['message']['content'];\nconst parsed = JSON.parse(raw);\nreturn [{ json: { ...parsed, receivedAt: new Date().toISOString() } }];"
      }
    },
    {
      "id": "record_sheet",
      "type": "action",
      "service": "Google Sheets",
      "name": "지원자 시트 기록",
      "config": {
        "operation": "appendRow",
        "spreadsheetId": "{{$env.RECRUIT_SHEET_ID}}",
        "sheetName": "지원자목록",
        "row": {
          "접수일시": "{{$json['receivedAt']}}",
          "이름": "{{$json['name']}}",
          "포지션": "{{$json['position']}}",
          "이메일": "{{$json['email']}}",
          "연락처": "{{$json['phone']}}",
          "상태": "서류검토중"
        }
      }
    },
    {
      "id": "notify_slack",
      "type": "action",
      "service": "Slack",
      "name": "채용팀 Slack 알림",
      "config": {
        "operation": "sendMessage",
        "channel": "{{$env.RECRUIT_SLACK_CHANNEL}}",
        "message": "📨 새 지원자가 접수되었습니다!\n\n👤 이름: {{$json['name']}}\n💼 포지션: {{$json['position']}}\n📧 이메일: {{$json['email']}}\n📞 연락처: {{$json['phone']}}\n\n👉 시트에서 확인하세요: {{$env.RECRUIT_SHEET_URL}}"
      }
    }
  ],
  "edges": [
    {
      "from": "trigger_gmail",
      "to": "extract_info"
    },
    {
      "from": "extract_info",
      "to": "parse_json"
    },
    {
      "from": "parse_json",
      "to": "record_sheet"
    },
    {
      "from": "record_sheet",
      "to": "notify_slack"
    }
  ],
  "tips": [
    "지원서 이메일 양식이 플랫폼마다 다르기 때문에 OpenAI 추출 방식이 가장 유연하게 대응할 수 있어요.",
    "포지션별로 다른 Slack 채널에 알림을 보내고 싶다면 IF 노드로 포지션을 분기하세요.",
    "지원자 시트에 '상태' 열을 두고 서류검토중 → 서류합격 → 면접예정 순으로 관리하면 레시피 052와 자연스럽게 연결돼요."
  ],
  "qrUrl": "www.koreaaitimes.com/books/n8n-vol2/recipe051"
}
← 이전 레시피☰ 목차다음 레시피 →