다이나믹 세그먼트와 정적 리스트는 무엇이 다른가

정적 리스트는 특정 시점에 조건을 만족한 유저를 한 번 뽑아 고정한 명단입니다—다음 날 조건을 새로 만족하는 유저가 생겨도 리스트에 자동으로 추가되지 않고, 반대로 조건을 벗어난 유저도 자동으로 빠지지 않습니다. 반면 다이나믹 세그먼트(Dynamic Segmentation)는 조건 자체를 저장해두고, 유저의 상태가 바뀔 때마다 그 조건을 다시 평가해 진입·이탈을 자동으로 갱신하는 방식입니다. "최근 3일 내 앱 방문 3회 이상, 장바구니에 5만 원 이상 담은 서울 거주 유저"라는 조건을 다이나믹 세그먼트로 만들어두면, 오늘 이 조건을 새로 만족한 유저는 자동으로 들어오고, 조건을 만족하다가 최근성 기준(3일)을 벗어난 유저는 자동으로 빠집니다. Segment의 Unify 기능이 오디언스를 만들면 목적지가 지원하는 형식(불리언 속성 또는 사용자 리스트)으로 자동 동기화를 시작하는 것도 이 원리를 기반으로 합니다.

조건은 어떤 종류로 조합되나

세그먼트 조건은 크게 세 종류로 나뉩니다. 첫째는 행동 조건으로, 특정 이벤트가 정해진 기간 안에 몇 번 발생했는지(빈도)와 마지막 발생이 언제인지(최근성)를 씁니다—"최근 3일 내 앱 방문 3회 이상"이 이 유형입니다. 둘째는 거래·상태 조건으로, 장바구니 금액이나 누적 구매액처럼 숫자 임계값을 씁니다—"장바구니 5만 원 이상"이 이 유형입니다. 셋째는 속성 조건으로, 회원가입 시 입력한 거주지역, 회원등급, 성별 같은 비교적 고정적인 정보를 씁니다—"서울 거주"가 이 유형입니다. 실무에서 쓰는 대부분의 정밀 세그먼트는 이 세 유형을 AND로 묶어서 만들어집니다. OR을 쓰면 대상이 넓어지고, AND를 쓸수록 대상은 좁아지지만 메시지 관련성은 높아집니다.

세그먼트가 작동하려면 무엇이 먼저 갖춰져 있어야 하나

아무리 룰셋을 정교하게 설계해도, 그 조건에 쓰이는 이벤트나 속성이 CDP에 실제로 들어와 있지 않으면 세그먼트는 항상 0명이거나 잘못된 인원으로 나옵니다. 예를 들어 "장바구니 5만 원 이상"이라는 조건을 쓰려면, 장바구니 담기 이벤트가 상품 금액 정보와 함께 실시간으로 CDP에 전송되고 있어야 하고, "서울 거주"라는 조건을 쓰려면 회원 정보의 거주지역 필드가 CDP의 유저 프로필과 매핑돼 있어야 합니다. 이 부분이 3강에서 다룬 데이터 파이프라인 설계와 직접 연결되는 지점입니다—세그먼트를 만들기 전에 반드시 그 조건에 필요한 데이터가 이미 파이프라인을 통해 들어오고 있는지 먼저 확인해야 시행착오를 줄일 수 있습니다.

세그먼트 갱신 주기를 확인해야 하는 이유

"다이나믹"이라는 이름과 달리, 모든 CDP·모든 조건이 완전히 실시간으로 갱신되는 것은 아닙니다. 어떤 조건(예: 실시간 이벤트 기반)은 초 단위로 갱신되지만, 다른 조건(예: 배치로 연동되는 CRM 속성)은 하루에 한 번만 갱신될 수 있습니다. 이 갱신 주기를 확인하지 않고 "실시간 개인화"를 전제로 캠페인을 설계하면, 실제로는 하루 지난 데이터를 기준으로 메시지가 나가는 상황이 생길 수 있습니다. 세그먼트를 만들 때는 반드시 각 조건 필드의 실제 갱신 주기를 벤더 문서나 설정 화면에서 확인하고, 그 주기에 맞춰 메시지 발송 타이밍을 설계해야 합니다.

세그먼트를 너무 잘게 쪼갤 때 생기는 문제

정밀 타겟팅을 목표로 조건을 계속 AND로 추가하다 보면 세그먼트 인원이 급격히 줄어드는 함정에 빠지기 쉽습니다. "최근 3일 내 앱 방문 3회 이상"에 "장바구니 5만 원 이상"과 "서울 거주"까지 더하면 전체 유저 기반에서 이 조건을 모두 만족하는 사람은 소수로 좁혀지고, 캠페인 하나를 돌려도 통계적으로 의미 있는 결과를 보기 어려운 규모가 될 수 있습니다. 실무에서는 세그먼트를 설계할 때 예상 인원을 미리 추정해보고, 인원이 지나치게 적다면 조건 하나를 완화하거나(예: 최근성을 3일에서 7일로), OR 조건으로 유사한 행동을 묶어 규모를 확보하는 절충이 필요합니다. 정밀도와 규모는 항상 트레이드오프 관계에 있다는 것을 세그먼트 설계 단계에서부터 염두에 둬야 합니다.