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

Calendly 예약 → CRM 자동 등록 + 환영 이메일

  • ▸Calendly 신규 예약 시 CRM(HubSpot/Notion)에 자동 연락처 생성
  • ▸예약자에게 개인화된 환영 이메일 발송
  • ▸내부 팀 Slack 채널에 예약 알림 전송

✅사전 준비

  • □Calendly 웹훅 설정 (Settings → Integrations → Webhooks)
  • □HubSpot API 키 또는 Notion 통합 토큰 준비
  • □Gmail/SMTP 자격증명 설정
  • □Slack Bot 토큰 설정

Calendly 웹훅 수신 URL

Node: Webhook
Method: POST
Path: /calendly
Authentication: None (또는 Header Auth)

웹훅 등록:
https://calendly.com/integrations/webhooks
Subscription URL: https://your-n8n.com/webhook/calendly
Events: invitee.created, invitee.canceled

HubSpot 연락처 생성 Body

{
  "properties": {
    "firstname": "{{ $json.payload.invitee.name.split(' ')[0] }}",
    "lastname": "{{ $json.payload.invitee.name.split(' ').slice(1).join(' ') }}",
    "email": "{{ $json.payload.invitee.email }}",
    "hs_lead_status": "NEW",
    "lifecyclestage": "lead",
    "notes_last_contacted": "{{ $now.toISO() }}"
  }
}
💡 TIPCalendly 웹훅 payload의 `event_type.name`으로 어떤 미팅 타입인지 구분하여, 미팅 종류별 다른 이메일 템플릿을 보낼 수 있습니다.
⚡

워크플로우 JSON

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

📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
  "recipeId": "recipe053",
  "title": "신규 입사자 30일 온보딩 자동 체크리스트",
  "chapter": 5,
  "category": "HR & 조직 운영 자동화",
  "difficulty": "⭐⭐⭐",
  "estimatedTime": "50분",
  "usedApps": [
    "Google Sheets",
    "Gmail",
    "Slack"
  ],
  "description": "신규 입사자가 시트에 등록되면 입사 D+1, D+3, D+7, D+14, D+30 일정에 맞춰 안내 이메일을 순차 발송하는 30일 온보딩 자동화 워크플로우입니다.",
  "nodes": [
    {
      "id": "trigger_new_employee",
      "type": "trigger",
      "service": "Google Sheets",
      "name": "신규 입사자 등록 감지",
      "config": {
        "event": "rowAdded",
        "spreadsheetId": "{{$env.HR_SHEET_ID}}",
        "sheetName": "직원명단"
      }
    },
    {
      "id": "send_day1",
      "type": "action",
      "service": "Gmail",
      "name": "D+1 첫날 안내 이메일",
      "config": {
        "operation": "sendEmail",
        "to": "{{$json['이메일']}}",
        "subject": "[{{$env.COMPANY_NAME}}] 입사를 환영합니다! 🎉 첫날 안내드립니다",
        "body": "안녕하세요, {{$json['이름']}}님!\n\n{{$env.COMPANY_NAME}}에 오신 것을 진심으로 환영합니다! 🎉\n\n✅ 오늘 확인하실 사항:\n- 사내 시스템 계정 활성화 확인\n- 팀 소개 미팅 일정 확인\n- 사내 규정 안내 문서 검토\n\n궁금하신 점은 언제든지 HR팀({{$env.HR_EMAIL}})으로 문의해 주세요!\n\n{{$env.COMPANY_NAME}} HR팀 드림"
      }
    },
    {
      "id": "wait_2days",
      "type": "action",
      "service": "Wait",
      "name": "2일 대기 (D+3)",
      "config": {
        "waitType": "duration",
        "duration": 2,
        "unit": "days"
      }
    },
    {
      "id": "send_day3",
      "type": "action",
      "service": "Gmail",
      "name": "D+3 시스템 접근 권한 확인",
      "config": {
        "operation": "sendEmail",
        "to": "{{$json['이메일']}}",
        "subject": "[온보딩 D+3] 시스템 접근 권한 확인해 주세요",
        "body": "안녕하세요, {{$json['이름']}}님!\n\n입사 3일차가 되셨네요. 잘 적응하고 계신가요? 😊\n\n✅ D+3 체크리스트:\n- 이메일·슬랙·노션 계정 정상 접속 여부\n- 업무용 노트북 세팅 완료 여부\n- 1차 팀 미팅 완료 여부\n\n불편한 점이 있으시면 HR팀으로 말씀해 주세요!\n\n{{$env.COMPANY_NAME}} HR팀 드림"
      }
    },
    {
      "id": "wait_4days",
      "type": "action",
      "service": "Wait",
      "name": "4일 대기 (D+7)",
      "config": {
        "waitType": "duration",
        "duration": 4,
        "unit": "days"
      }
    },
    {
      "id": "send_day7",
      "type": "action",
      "service": "Gmail",
      "name": "D+7 첫 주 피드백 설문",
      "config": {
        "operation": "sendEmail",
        "to": "{{$json['이메일']}}",
        "subject": "[온보딩 D+7] 첫 주를 보내신 소감이 궁금해요!",
        "body": "안녕하세요, {{$json['이름']}}님!\n\n벌써 입사 1주일이 지났습니다! 🙌\n\n짧은 설문을 통해 첫 주 온보딩 경험을 공유해 주시면 더 나은 환경을 만드는 데 큰 도움이 됩니다.\n\n📝 첫 주 피드백 설문 (3분 완성):\n{{$env.ONBOARDING_SURVEY_URL}}\n\n앞으로도 잘 부탁드립니다!\n{{$env.COMPANY_NAME}} HR팀 드림"
      }
    },
    {
      "id": "wait_7days",
      "type": "action",
      "service": "Wait",
      "name": "7일 대기 (D+14)",
      "config": {
        "waitType": "duration",
        "duration": 7,
        "unit": "days"
      }
    },
    {
      "id": "send_day14",
      "type": "action",
      "service": "Gmail",
      "name": "D+14 2주차 체크인",
      "config": {
        "operation": "sendEmail",
        "to": "{{$json['이메일']}}",
        "subject": "[온보딩 D+14] 2주차 체크인입니다 😊",
        "body": "안녕하세요, {{$json['이름']}}님!\n\n입사 2주차가 되셨습니다. 업무에 조금 더 익숙해지셨나요?\n\n✅ D+14 체크리스트:\n- 주요 업무 프로세스 파악 여부\n- 팀원 모두와 인사 나누기\n- 단기 업무 목표 설정 완료 여부\n\n매니저와 1:1 미팅을 통해 궁금한 점을 해소해 보세요!\n\n{{$env.COMPANY_NAME}} HR팀 드림"
      }
    },
    {
      "id": "wait_16days",
      "type": "action",
      "service": "Wait",
      "name": "16일 대기 (D+30)",
      "config": {
        "waitType": "duration",
        "duration": 16,
        "unit": "days"
      }
    },
    {
      "id": "send_day30",
      "type": "action",
      "service": "Gmail",
      "name": "D+30 한 달 온보딩 완료",
      "config": {
        "operation": "sendEmail",
        "to": "{{$json['이메일']}}",
        "subject": "[온보딩 완료] 🎊 입사 한 달을 축하드립니다!",
        "body": "안녕하세요, {{$json['이름']}}님!\n\n입사 30일을 맞이하셨습니다! 🎊\n\n한 달 동안 열심히 적응해 주셔서 정말 감사합니다.\n공식 온보딩 프로그램은 오늘로 마무리되지만, 언제든지 HR팀 문을 두드려 주세요.\n\n📝 30일 온보딩 최종 설문 (5분):\n{{$env.ONBOARDING_FINAL_SURVEY_URL}}\n\n앞으로도 함께 성장해요! 💪\n{{$env.COMPANY_NAME}} HR팀 드림"
      }
    },
    {
      "id": "notify_hr_complete",
      "type": "action",
      "service": "Slack",
      "name": "HR팀 온보딩 완료 알림",
      "config": {
        "operation": "sendMessage",
        "channel": "{{$env.HR_SLACK_CHANNEL}}",
        "message": "🎊 온보딩 완료!\n\n👤 {{$json['이름']}}님 ({{$json['부서']}} / {{$json['직책']}})\n30일 온보딩 프로그램이 완료되었습니다.\n\n👉 최종 설문 응답을 확인해 주세요: {{$env.ONBOARDING_FINAL_SURVEY_URL}}"
      }
    },
    {
      "id": "update_onboarding_status",
      "type": "action",
      "service": "Google Sheets",
      "name": "온보딩 완료 상태 기록",
      "config": {
        "operation": "updateRow",
        "spreadsheetId": "{{$env.HR_SHEET_ID}}",
        "sheetName": "직원명단",
        "rowNumber": "{{$json['rowIndex']}}",
        "columns": {
          "온보딩상태": "완료",
          "온보딩완료일": "{{$now.format('YYYY-MM-DD')}}"
        }
      }
    }
  ],
  "edges": [
    {
      "from": "trigger_new_employee",
      "to": "send_day1"
    },
    {
      "from": "send_day1",
      "to": "wait_2days"
    },
    {
      "from": "wait_2days",
      "to": "send_day3"
    },
    {
      "from": "send_day3",
      "to": "wait_4days"
    },
    {
      "from": "wait_4days",
      "to": "send_day7"
    },
    {
      "from": "send_day7",
      "to": "wait_7days"
    },
    {
      "from": "wait_7days",
      "to": "send_day14"
    },
    {
      "from": "send_day14",
      "to": "wait_16days"
    },
    {
      "from": "wait_16days",
      "to": "send_day30"
    },
    {
      "from": "send_day30",
      "to": "notify_hr_complete"
    },
    {
      "from": "notify_hr_complete",
      "to": "update_onboarding_status"
    }
  ],
  "tips": [
    "Wait 노드를 사용하는 이 워크플로우는 n8n 클라우드 또는 상시 운영 서버가 필요해요. 서버가 재시작되면 Wait 상태가 초기화될 수 있어요.",
    "각 단계 이메일 발송 후 HR팀 Slack에도 '발송 완료' 알림을 추가하면 온보딩 진행 상황을 한눈에 파악할 수 있어요.",
    "D+7, D+30 설문 미응답자에게는 3일 후 리마인더 이메일을 추가로 보내는 분기를 만들어보세요."
  ],
  "qrUrl": "www.koreaaitimes.com/books/n8n-vol2/recipe053"
}
← 이전 레시피☰ 목차다음 레시피 →