데브포일 홈
WordPress 자동화
Guest
STAGE 15 · Lv.76

고객 데이터 CRM 동기화

WooCommerce 고객 데이터를 Make.com을 통해 HubSpot, Notion, Airtable 등 CRM에 자동 동기화합니다. 양방향 동기화, 고객 세그먼테이션까지 구현합니다.

CRM 동기화가 필요한 이유

고객 데이터 사일로의 위험과 통합 관리의 가치

WooCommerce에 고객 데이터가 쌓이지만, 영업팀은 HubSpot을, 마케팅팀은 Mailchimp를, 운영팀은 Notion을 사용합니다. 데이터가 분산되면 고객에 대한 통합적인 이해가 불가능합니다. 영업사원이 고객에게 전화할 때 최근 구매 이력을 모르고, 마케팅 팀은 VIP 고객에게 첫 구매 할인 쿠폰을 보내는 실수가 발생합니다.


Make.com을 활용한 CRM 동기화는 WooCommerce의 고객 데이터를 실시간으로 외부 CRM에 동기화합니다. 새 고객이 가입하면 HubSpot에 자동 등록, 주문이 완료되면 구매 이력 업데이트, VIP 등급 달성 시 자동 태그 추가, 이탈 위험 고객 자동 감지까지 모든 것이 자동으로 처리됩니다.


이 레슨에서는 WooCommerce 고객 데이터를 HubSpot, Notion, Airtable에 자동 동기화하는 Make.com 시나리오를 구축합니다. 단방향 동기화뿐만 아니라, CRM에서 변경된 데이터가 WordPress에도 반영되는 양방향 동기화, 그리고 자동 세그먼테이션, 충돌 해결 전략, 실시간 vs 배치 동기화의 선택 기준까지 모든 것을 다룹니다.

🛒
WooCommerce
고객 데이터
⚙️
Make.com
데이터 변환/매핑
📊
CRM
HubSpot/Notion/Airtable
🏢
HubSpot
영업/마케팅 CRM
무료 플랜 100만 연락처
📝
Notion
데이터베이스 관리
소규모 팀에 적합
📋
Airtable
스프레드시트형 DB
유연한 뷰/필터
🔄
양방향
실시간 동기화
데이터 일관성 보장
CRM 도구 무료 플랜 Make.com 연동 장점 적합한 팀
HubSpot CRM 100만 연락처, 무제한 사용자 네이티브 모듈 강력한 영업 파이프라인, 이메일 추적 영업팀 있는 B2B
Notion 무제한 블록 네이티브 모듈 유연한 DB, 팀 협업 소규모 스타트업
Airtable 1,000행/베이스 네이티브 모듈 다양한 뷰, 자동화 내장 운영팀, 마케팅팀
Salesforce 없음 ($25/월~) 네이티브 모듈 기업급, 커스터마이징 무한 중대형 기업
Google Sheets 무료 네이티브 모듈 익숙함, 공유 쉬움 초소규모, 프리랜서

WooCommerce → CRM 자동 동기화

WordPress/WooCommerce 이벤트 → Make.com Webhook

고객 데이터 동기화의 핵심은 WordPress/WooCommerce에서 발생하는 모든 고객 관련 이벤트를 감지하여 Make.com으로 전달하는 것입니다. 주요 이벤트는 회원가입, 주문 완료, 프로필 업데이트, 리뷰 작성, 위시리스트 추가 등입니다.

// 고객 데이터 동기화 - 통합 Webhook 시스템 class MakeCom_CRM_Sync { private $webhook_url; public function __construct() { $this->webhook_url = get_option('makecom_crm_webhook_url'); // 이벤트 1: 새 주문 완료 add_action('woocommerce_order_status_completed', [$this, 'sync_order']); add_action('woocommerce_order_status_processing', [$this, 'sync_order']); // 이벤트 2: 회원가입 add_action('user_register', [$this, 'sync_new_user']); // 이벤트 3: 프로필 업데이트 add_action('profile_update', [$this, 'sync_profile_update'], 10, 2); // 이벤트 4: 리뷰 작성 add_action('comment_post', [$this, 'sync_review'], 10, 3); } public function sync_order($order_id) { $order = wc_get_order($order_id); $customer_id = $order->get_customer_id(); // 고객 통계 계산 $total_orders = wc_get_customer_order_count($customer_id); $total_spent = wc_get_customer_total_spent($customer_id); $avg_order = $total_orders > 0 ? $total_spent / $total_orders : 0; // 고객 세그먼트 결정 $segment = $this->calculate_segment($total_orders, $total_spent); // 구매 상품 목록 $products = []; $categories = []; foreach ($order->get_items() as $item) { $product = $item->get_product(); $products[] = [ 'name' => $item->get_name(), 'sku' => $product ? $product->get_sku() : '', 'price' => $item->get_total(), 'quantity' => $item->get_quantity(), ]; // 구매 카테고리 수집 if ($product) { $cat_ids = $product->get_category_ids(); foreach ($cat_ids as $cid) { $term = get_term($cid); if ($term) $categories[] = $term->name; } } } // RFM 분석 데이터 $last_order_date = $order->get_date_created(); $days_since_last = floor((time() - $last_order_date->getTimestamp()) / 86400); $payload = [ 'event' => 'order_completed', 'customer_id' => $customer_id, 'email' => $order->get_billing_email(), 'first_name' => $order->get_billing_first_name(), 'last_name' => $order->get_billing_last_name(), 'phone' => $order->get_billing_phone(), 'total_orders' => $total_orders, 'total_spent' => round($total_spent, 0), 'avg_order_value' => round($avg_order, 0), 'segment' => $segment, 'last_order_id' => $order_id, 'last_order_date' => $last_order_date->date('Y-m-d'), 'last_order_total' => $order->get_total(), 'products' => $products, 'purchase_categories' => array_unique($categories), 'days_since_last' => $days_since_last, 'rfm_recency' => $this->rfm_score('recency', $days_since_last), 'rfm_frequency' => $this->rfm_score('frequency', $total_orders), 'rfm_monetary' => $this->rfm_score('monetary', $total_spent), ]; $this->send_webhook($payload); } private function calculate_segment($orders, $spent) { if ($orders >= 10 || $spent >= 500000) return 'vip'; if ($orders >= 5 || $spent >= 200000) return 'loyal'; if ($orders >= 2) return 'repeat'; return 'new'; } private function rfm_score($type, $value) { switch ($type) { case 'recency': if ($value return 5; if ($value return 4; if ($value return 3; if ($value return 2; return 1; case 'frequency': if ($value >= 10) return 5; if ($value >= 5) return 4; if ($value >= 3) return 3; if ($value >= 2) return 2; return 1; case 'monetary': if ($value >= 500000) return 5; if ($value >= 200000) return 4; if ($value >= 100000) return 3; if ($value >= 50000) return 2; return 1; } return 1; } public function sync_new_user($user_id) { $user = get_userdata($user_id); $this->send_webhook([ 'event' => 'new_customer', 'email' => $user->user_email, 'name' => $user->display_name, 'user_id' => $user_id, 'registered' => $user->user_registered, 'segment' => 'new', 'source' => get_user_meta($user_id, 'registration_source', true) ?: 'direct', ]); } private function send_webhook($data) { if (empty($this->webhook_url)) return; wp_remote_post($this->webhook_url, [ 'headers' => ['Content-Type' => 'application/json'], 'body' => wp_json_encode($data), 'timeout' => 15, ]); } } new MakeCom_CRM_Sync();
🔒
여기까지는 미리보기입니다
고객 데이터 CRM 동기화
무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.
Google로 3초 만에 시작 →🧵 Threads로 시작무료 공개 강의 둘러보기 (Lv.1~3)