RECIPE 080
영업 파이프라인 자동 업데이트 & 예측
- ▸CRM 기회(Opportunity) 데이터를 주기적으로 분석
- ▸성사 가능성 높은 딜을 AI로 자동 평가 및 우선순위화
- ▸주간 영업 파이프라인 현황을 팀에 자동 보고
✅사전 준비
- □HubSpot CRM 또는 Salesforce API 접근 권한
- □영업 단계(Stage) 정의 및 코드 확인
- □OpenAI API 키 (딜 평가용)
- □Google Sheets 또는 Notion 파이프라인 대시보드 준비
HubSpot 파이프라인 딜 조회
Node: HTTP Request
Method: GET
URL: https://api.hubapi.com/crm/v3/objects/deals
Query Parameters:
limit: 100
properties: dealname,amount,dealstage,closedate,hs_deal_stage_probability
sorts: -closedate
Headers:
Authorization: Bearer YOUR_HUBSPOT_API_KEYAI 딜 우선순위 평가
System: 영업 분석 전문가입니다.
각 딜의 성사 가능성을 0-100으로 점수화하고 액션을 제안하세요.
User: 딜 정보:
딜명: {{ $json.properties.dealname }}
금액: {{ $json.properties.amount }}원
현재 단계: {{ $json.properties.dealstage }}
마감 예정일: {{ $json.properties.closedate }}
현재 성사 확률: {{ $json.properties.hs_deal_stage_probability }}%
JSON 형식으로 반환: {"score": 0-100, "action": "권장 액션", "risk": "리스크 요인"}주간 파이프라인 요약
// Code 노드 - 파이프라인 통계
const deals = $input.all();
const totalValue = deals.reduce((sum, d) => sum + parseFloat(d.json.properties.amount || 0), 0);
const highPriority = deals.filter(d => d.json.ai_score >= 70);
const closingThisWeek = deals.filter(d => {
const closeDate = new Date(d.json.properties.closedate);
const weekEnd = new Date();
weekEnd.setDate(weekEnd.getDate() + 7);
return closeDate <= weekEnd;
});
return [{ json: {
totalDeals: deals.length,
totalValue: totalValue.toLocaleString(),
highPriorityCount: highPriority.length,
closingThisWeekCount: closingThisWeek.length
} }];💡 TIPSalesforce를 사용하는 경우 n8n에 기본 내장된 Salesforce 노드를 활용하면 HTTP Request 없이도 딜 데이터를 쉽게 조회할 수 있습니다.
⚡
워크플로우 JSON
아래 JSON을 복사해 n8n에 바로 임포트하세요
📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
"recipeId": "recipe080",
"title": "월간 콘텐츠 성과 종합 리포트",
"chapter": 7,
"category": "콘텐츠 & 미디어 자동화",
"difficulty": "⭐⭐⭐",
"estimatedTime": "60분",
"usedApps": [
"YouTube Data API",
"Mailchimp",
"Google Analytics",
"Google Sheets",
"Slack"
],
"description": "매월 1일 오전 8시 YouTube·Mailchimp·Google Analytics 등 모든 콘텐츠 채널의 전월 성과 데이터를 자동 수집해 Merge 노드로 통합하고, Google Sheets 월간 리포트 탭에 자동 기록한 뒤 Slack에 주요 지표 요약과 리포트 링크를 발송합니다.",
"nodes": [
{
"id": "node1",
"type": "n8n-nodes-base.scheduleTrigger",
"name": "매월 1일 오전 8시 실행",
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 8 1 * *"
}
]
}
}
},
{
"id": "node2",
"type": "n8n-nodes-base.httpRequest",
"name": "YouTube 전월 채널 성과 수집",
"parameters": {
"method": "GET",
"url": "https://www.googleapis.com/youtube/v3/channels",
"queryParameters": {
"part": "statistics",
"id": "={{$env.YOUTUBE_CHANNEL_ID}}",
"key": "={{$env.YOUTUBE_API_KEY}}"
}
}
},
{
"id": "node3",
"type": "n8n-nodes-base.httpRequest",
"name": "Mailchimp 전월 캠페인 성과 수집",
"parameters": {
"method": "GET",
"url": "https://{{$env.MAILCHIMP_DC}}.api.mailchimp.com/3.0/campaigns",
"authentication": "basicAuth",
"basicAuth": {
"user": "anystring",
"password": "={{$env.MAILCHIMP_API_KEY}}"
},
"queryParameters": {
"since_send_time": "={{$now.minus({months: 1}).startOf('month').toISO()}}",
"before_send_time": "={{$now.startOf('month').toISO()}}",
"status": "sent"
}
}
},
{
"id": "node4",
"type": "n8n-nodes-base.httpRequest",
"name": "Google Analytics 전월 트래픽 수집",
"parameters": {
"method": "POST",
"url": "https://analyticsdata.googleapis.com/v1beta/properties/{{$env.GA4_PROPERTY_ID}}:runReport",
"authentication": "oAuth2",
"body": {
"dateRanges": [
{
"startDate": "={{$now.minus({months: 1}).startOf('month').format('YYYY-MM-DD')}}",
"endDate": "={{$now.minus({months: 1}).endOf('month').format('YYYY-MM-DD')}}"
}
],
"metrics": [
{
"name": "sessions"
},
{
"name": "activeUsers"
}
]
}
}
},
{
"id": "node5",
"type": "n8n-nodes-base.merge",
"name": "전체 채널 데이터 통합",
"parameters": {
"mode": "append"
}
},
{
"id": "node6",
"type": "n8n-nodes-base.googleSheets",
"name": "월간 리포트 시트 기록",
"parameters": {
"operation": "appendOrUpdate",
"spreadsheetId": "={{$env.CONTENT_REPORT_SHEET_ID}}",
"sheetName": "월간리포트",
"columns": {
"mappingMode": "defineBelow",
"value": {
"기록월": "={{$now.minus({months: 1}).format('YYYY-MM')}}",
"유튜브구독자": "={{$node['YouTube 전월 채널 성과 수집'].json['items'][0]['statistics']['subscriberCount']}}",
"유튜브조회수": "={{$node['YouTube 전월 채널 성과 수집'].json['items'][0]['statistics']['viewCount']}}",
"뉴스레터오픈율": "={{($node['Mailchimp 전월 캠페인 성과 수집'].json['campaigns'][0]['report_summary']['open_rate'] * 100).toFixed(1)}}%",
"웹세션수": "={{$node['Google Analytics 전월 트래픽 수집'].json['rows'][0]['metricValues'][0]['value']}}"
}
}
}
},
{
"id": "node7",
"type": "n8n-nodes-base.slack",
"name": "월간 리포트 Slack 발송",
"parameters": {
"channel": "={{$env.CONTENT_SLACK_CHANNEL}}",
"text": "📊 {{$now.minus({months: 1}).format('YYYY년 MM월')}} 콘텐츠 성과 리포트 준비 완료!\n\n유튜브 구독자: {{$node['YouTube 전월 채널 성과 수집'].json['items'][0]['statistics']['subscriberCount'].toLocaleString()}}명\n뉴스레터 오픈율: {{($node['Mailchimp 전월 캠페인 성과 수집'].json['campaigns'][0]['report_summary']['open_rate'] * 100).toFixed(1)}}%\n웹 세션: {{$node['Google Analytics 전월 트래픽 수집'].json['rows'][0]['metricValues'][0]['value'].toLocaleString()}}회\n\n📋 전체 리포트: {{$env.CONTENT_REPORT_SHEET_URL}}"
}
}
],
"envVariables": {
"YOUTUBE_CHANNEL_ID": "YouTube 채널 ID",
"YOUTUBE_API_KEY": "YouTube Data API 키",
"MAILCHIMP_DC": "Mailchimp 데이터센터 코드",
"MAILCHIMP_API_KEY": "Mailchimp API 키",
"GA4_PROPERTY_ID": "Google Analytics 4 속성 ID",
"CONTENT_REPORT_SHEET_ID": "Google Sheets 월간 리포트 시트 ID",
"CONTENT_REPORT_SHEET_URL": "Google Sheets 공유 URL",
"CONTENT_SLACK_CHANNEL": "콘텐츠 팀 Slack 채널 ID"
},
"tips": [
"Google Analytics 4 API는 OAuth2 인증이 필요합니다. n8n의 Google Analytics OAuth2 자격증명을 미리 설정해두세요.",
"SNS 플랫폼(Instagram, Twitter 등)의 팔로워·참여율 데이터도 각 API 노드로 추가하면 더 완성도 높은 종합 리포트를 만들 수 있어요.",
"임원 보고용 리포트라면 Code 노드로 전월 대비 증감률을 계산해 Slack 메시지에 추가하면 바로 활용할 수 있어요."
],
"qrUrl": "www.koreaaitimes.com/books/n8n-vol2/recipe080"
}