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

AI 딜 우선순위 평가

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 클릭
{
  "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"
}
← 이전 레시피☰ 목차다음 레시피 →