RECIPE B
시나리오 B — 스타트업 영업팀 리드-to-클로즈 파이프라인
- ▸리드 유입부터 계약 체결까지 영업 전 단계를 완전 자동화할 수 있다
- ▸CRM 파이프라인 상태 변경에 따라 이메일·Slack·Notion이 자동 연동되도록 구성할 수 있다
- ▸영업 팀 전체의 성과를 실시간 대시보드로 공유할 수 있다
✅사전 준비
- □챕터 3 전체 레시피(026~040) 및 미니 프로젝트 P3 완료
- □HubSpot CRM 파이프라인 단계 정의 및 설정 완료
- □팀원별 Slack DM 채널 ID 확인
- □PDF 생성 API 키 준비 (html2pdf.app)
- □Notion '고객사 DB' 및 '계약 DB' 구성 완료
- □Gmail 영업 전용 계정 자격증명 연결
리드-to-클로즈 5단계 자동화 흐름
[STAGE 1] 리드 유입 (Lead)
광고 폼 Webhook / CSV 업로드
→ 리드 점수 계산
→ HubSpot Deal 생성
→ 담당자 자동 배정 (Round-Robin)
→ 담당자에게 Slack DM 알림
→ 24시간 후 팔로업 이메일 자동 예약
[STAGE 2] 미팅 제안 (Meeting)
HubSpot 상태 변경 감지
→ Calendly 링크 포함 이메일 발송
→ Notion 고객사 페이지 자동 생성
[STAGE 3] 제안서 발송 (Proposal)
HubSpot 상태 변경 감지
→ 견적 데이터 Sheets에서 조회
→ PDF 제안서 자동 생성
→ 고객 이메일 발송
→ Slack #sales 공유
[STAGE 4] 협상 (Negotiation)
HubSpot 상태 변경 감지
→ 팀장 Slack 알림 (고액 딜 에스컬레이션)
→ 미팅 리마인더 자동 발송
[STAGE 5] 계약 체결 (Closed Won)
HubSpot 상태 변경 감지
→ 계약서 생성 & 발송
→ 온보딩 Notion 페이지 자동 생성
→ Slack #sales 팀 축하 메시지
→ 인보이스 자동 생성 & 발송
→ 월간 매출 시트 업데이트Round-Robin 담당자 배정 — Code 노드
// Google Sheets에서 담당자 목록과 마지막 배정 인덱스를 읽어옴
const reps = $('담당자 시트').all().map(r => r.json);
const lastIdx = Number($('설정 시트').item.json.lastAssignedIndex ?? -1);
const nextIdx = (lastIdx + 1) % reps.length;
const assigned = reps[nextIdx];
// 다음 실행을 위해 인덱스 업데이트 (Sheets Update 노드로 연결)
return [{
json: {
assignedName: assigned.name,
assignedEmail: assigned.email,
assignedSlack: assigned.slackId,
nextIndex: nextIdx,
}
}];계약 체결 축하 Slack 메시지
const deal = $json;
const amount = Number(deal.amount).toLocaleString();
const emojis = ['🎉','🏆','💰','🚀','⭐'];
const emoji = emojis[Math.floor(Math.random() * emojis.length)];
const message =
`${emoji} *계약 체결!*
고객사: ${deal.companyName}
담당자: ${deal.assignedRep}
계약금액: ${amount}원
포지션: ${deal.dealName}
수고하셨습니다! 팀 전체가 응원합니다 💪`;
return [{ json: { message } }];💡 TIPHubSpot 무료 플랜에서는 Webhook Trigger가 지원되지 않습니다. Schedule Trigger로 5분마다 HubSpot Deals API를 폴링하고, 전회 조회 시각을 Sheets에 저장해 그 이후 변경된 딜만 처리하는 '마지막 조회 시각' 패턴을 사용하세요.
⚠️ 주의계약서 PDF에는 법적 효력이 필요한 내용이 포함됩니다. n8n으로 자동 생성된 계약서는 반드시 법무팀 또는 변호사 검토를 거친 표준 템플릿을 기반으로 하세요. 계약 조건이 자동으로 변경되지 않도록 템플릿을 잠금 처리하는 것을 권장합니다.
⚡
워크플로우 JSON
아래 JSON을 복사해 n8n에 바로 임포트하세요
📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
"id": "scenario_B",
"chapter": 9,
"title": "시나리오 B — 스타트업 영업팀 리드-to-클로즈 파이프라인",
"difficulty": "⭐⭐⭐",
"target": "5~10명 규모의 B2B 스타트업 영업팀",
"outcome": "리드가 유입되는 순간부터 계약 완료까지 전 과정이 자동화돼요. 영업사원은 '사람 만나는 것'에만 집중하면 돼요.",
"linked_recipes": [
{
"recipe": "026",
"desc": "리드 유입"
},
{
"recipe": "027",
"desc": "팔로업"
},
{
"recipe": "028",
"desc": "견적"
},
{
"recipe": "030",
"desc": "계약 온보딩"
},
{
"recipe": "032",
"desc": "주간 파이프라인"
},
{
"recipe": "040",
"desc": "달성률"
}
],
"workflow_diagram": [
"[리드 유입] Facebook Lead Ads Trigger",
"↓",
"HubSpot → Contact & Deal 생성",
"↓",
"IF (지역/업종) → 담당자 배정",
"↓",
"Slack DM → 담당자 즉시 알림",
"↓",
"Wait 30분",
"↓",
"Gmail → 팔로업 이메일 자동 발송",
"↓",
"[HubSpot Deal = 계약 완료]",
"↓",
"Slack + Gmail → 온보딩 시작 알림"
],
"key_setup_point": "HubSpot의 딜 상태 변경을 트리거로 활용하면, 영업사원이 CRM을 업데이트하는 것만으로 다음 자동화가 연쇄적으로 실행돼요.",
"workflow_url": "www.koreaaitimes.com/books/n8n-vol2/recipeB"
}