메인 콘텐츠로 건너뛰기
그룹은 규칙으로 정의됩니다. 이 페이지는 그 규칙의 레퍼런스입니다. 규칙의 각 부분이 어떻게 합쳐지는지, 쓸 수 있는 모든 조건 타입, 조건에 필요한 id를 설명합니다. 규칙은 POST /segments(그룹 만들기)와 POST /segments/preview(저장하지 않고 규칙에 맞는 연락처 수만 세기)에 보내는 filter 객체입니다.

규칙의 구조

세 목록은 다음과 같이 합쳐집니다. 연락처가 conditions(operator로 이어짐)에 일치하고, 그리고 requiredConditions의 모든 조건에 일치하고, 그리고 excludeConditions의 어떤 조건에도 일치하지 않으면 그룹에 속합니다. 비어 있거나 생략된 목록은 건너뜁니다. excludeConditions만 있으면, 그 조건에 일치하는 연락처를 뺀 모든 연락처가 그룹이 됩니다.
  • 목록 하나에는 조건을 최대 20개까지 넣을 수 있습니다. 더 길면 400 VALIDATION_ERROR입니다.
  • 규칙에는 세 목록을 통틀어 조건이 하나 이상 있어야 합니다. 하나도 없으면 422 EMPTY_FILTER로 거부됩니다.
  • 알 수 없는 키는 규칙과 모든 조건에서 거부됩니다(400 VALIDATION_ERROR, message에 잘못된 키의 경로가 표시됩니다). 조건 타입별로 이 페이지에 나온 키만 보내세요.
  • 조건은 field로 타입을 지정하는 객체입니다. 가능한 타입은 모두 아래에 있으며, 타입마다 쓰는 키가 다릅니다.
  • 일부 조건은 특정 목록에서 거부됩니다(아래 “일부 목록에서 거부되는 조건” 참고). 이런 조건은 422 CONDITION_NOT_SUPPORTED를 받습니다.
  • 수신 거부한 연락처는 규칙과 상관없이 어떤 그룹의 멤버도 되지 않습니다.
  • 기간(withinDays, 일 수를 뜻하는 value 등)은 규칙을 평가하는 시점부터 거슬러 셉니다. 그래서 같은 규칙도 시간이 지나면 다른 연락처와 일치합니다.
  • “한 적 없음” 형태의 연산자(not_viewed, not_clicked, not_enrolled)는 기록이 전혀 없는 연락처도 포함합니다. 중요한 경우에는 아래 각 항목에 따로 적어 두었습니다.

조건에 쓰는 id

일부 조건은 내 문서, 상품, 폴더, 1회성 발송, 그룹을 id로 가리킵니다. 모든 id는 내 계정에 있는지 확인합니다. 내 계정에 없는 id는 422 REFERENCE_NOT_FOUND이며, details.path(규칙 안의 위치)와 details.kind(document, product, tier, cta, folder, broadcast, step 중 하나)가 함께 옵니다. 내 계정에 없는 태그를 지정한 tag 조건은 422 TAG_NOT_FOUND(details.tag)를 받습니다. 내 계정에 없는 그룹을 지정한 group_membership 조건은 422 GROUP_REFERENCE_NOT_FOUND(details.groupIds)를 받습니다. UUID가 아닌 id는 400 VALIDATION_ERROR입니다. id가 선택이면 생략할 때 조건이 “계정 어디서든”으로 넓어집니다(예: documentId 없는 document_view는 내 모든 문서를 뜻합니다). id를 생략한 형태의 의미는 각 항목에 적어 두었습니다.

조건 타입

tag

내 태그를 가진(또는 가지지 않은) 연락처입니다. 태그는 정확한 이름으로 찾습니다.

document_view

내 문서를 본(또는 본 적 없는) 연락처입니다. 어떤 문서인지, 얼마나 최근인지, 몇 번인지, 어디까지 읽었는지로 범위를 좁힐 수 있습니다.
  • 기간(withinDays, 또는 viewedFrom과 viewedTo)을 지정하면, 가장 최근 조회가 그 기간 안에 있을 때 본 것으로 칩니다. minCount와 minScrollPct는 전체 기간 기준 값입니다. 기간은 최근 여부만 정하므로, “30일 안에 3번 조회”는 전체 조회가 3번 이상이고 마지막 조회가 최근 30일 안이라는 뜻입니다.
  • 그 문서가 들어 있는 폴더나 코스를 방문한 것도 문서를 본 것으로 칩니다. minScrollPct는 문서를 직접 본 경우만 세고 폴더 방문은 세지 않습니다.
  • withinDays는 viewedFrom / viewedTo와 함께 쓸 수 없습니다. viewedFrom과 viewedTo는 함께 써야 하고, viewedFrom은 viewedTo와 같거나 이전이어야 합니다.
  • minCount와 minScrollPct는 viewed에 쓰는 옵션입니다. not_viewed와 쓰면 받아들여지며 뜻이 뒤집힙니다. 그 횟수나 깊이에 이른 조회가 없는 연락처가 됩니다.
마케팅 메시지 수신에 동의했는지로 나눕니다.

cta_click

내 문서의 CTA(행동 유도) 버튼을 누른(또는 누른 적 없는) 연락처입니다.
  • 범위는 지정한 id가 정합니다. ctaId는 그 버튼, documentId는 그 문서의 아무 버튼, 둘 다 없으면 내 모든 문서의 아무 버튼입니다.
  • ctaId와 documentId는 둘 중 하나만 보내세요.

email_open

내 1회성 발송과 자동화 이메일을 연(또는 열지 않은) 연락처입니다. 영수증 같은 거래 이메일은 포함되지 않습니다.
  • 범위는 지정한 id가 정합니다. 1회성 발송, 자동화 단계, 또는 둘 다 없으면 모든 1회성 발송과 자동화 이메일입니다.
  • sent_not_opened에는 broadcastId 또는 stepId가 필요합니다. sinceSentDays는 sent_not_opened에서만 쓸 수 있습니다. 쓰지 않으면 아직 발송 대기 중인 이메일도 보낸 것으로 치고, 쓰면 그 일수 이전에 이미 발송된 이메일만 셉니다.
  • minCount는 broadcastId, stepId와 함께 쓸 수 없습니다.
내 1회성 발송과 자동화 이메일의 링크를 누른(또는 누르지 않은) 연락처입니다. 내 콘텐츠로 가는 링크만 셉니다. 수신 거부 링크는 세지 않습니다.
  • 범위는 지정한 id가 정합니다. 1회성 발송, 자동화 단계, 또는 둘 다 없으면 모든 1회성 발송과 자동화 이메일입니다.
  • broadcastId와 stepId는 둘 중 하나만 보내세요.

has_phone

전화번호가 있는지로 나눕니다.

form_submission

내 폼을 제출한(또는 제출한 적 없는) 연락처입니다. 폼 하나를 고르는 방법은 없고, 모든 폼이 대상입니다.

payment_status

결제가 완료되거나 실패하거나 환불될 때 연락처에 기록되는 결제 상태로 나눕니다.

first_seen

연락처가 처음 나타난 시점(첫 조회, 방문, 제출)이 얼마나 오래되었는지로 나눕니다.

last_active

연락처가 내 콘텐츠를 마지막으로 보거나 방문한 시점으로 나눕니다. 문서와 폴더 방문만 셉니다. 이메일을 열거나 링크를 누른 것은 세지 않습니다.

group_membership

내 다른 그룹에 속한(또는 속하지 않은) 연락처입니다.

tier_access

내 상품을 구매해 지금 이용 권한이 있는(또는 없는) 연락처입니다.
  • 범위는 지정한 id 하나가 정합니다. productId, tierId, documentId, saleStatus를 모두 생략하면 내 모든 상품이 대상입니다.
  • productId, tierId, documentId, saleStatus는 최대 하나만 보내세요.
  • expiringWithinDays는 expiring_within_days에서 필수이며, 다른 연산자에서는 생략해야 합니다.

days_since_purchase

상품을 결제한 지 얼마나 되었는지로 나눕니다.
  • 결제한 적 없는 연락처는 어느 연산자에도 일치하지 않습니다.
  • 범위는 지정한 id 하나가 정합니다. productId, tierId, documentId, saleStatus를 모두 생략하면 내 모든 상품이 대상입니다. 넷 중 최대 하나만 보내세요.
  • 전액 환불된 주문은 결제된 것으로 치지 않습니다.

repeat_bounce

이메일 주소가 계속 실패하는 연락처입니다.

course_last_access

폴더나 코스 하나를 얼마나 최근에 방문했는지로 나눕니다.

kakao_reachable

카카오 메시지를 보낼 수 있는 연락처입니다.

course_progress

폴더나 코스 하나를 얼마나 완료했는지로 나눕니다.

location

방문 기록에서 얻은 국가, 그리고 선택적으로 도시로 나눕니다.

checkout_abandoned

상품 하나의 결제를 시작했지만 끝내지 않은 연락처입니다. 반대 연산자는 없습니다.

일부 목록에서 거부되는 조건

일부 조건 형태는 422 CONDITION_NOT_SUPPORTED로 거부됩니다. details.path는 그 조건의 위치, details.operator는 그 조건의 연산자이고, 같은 결과를 내는 연산자가 있으면 details.invertTo에 담기며 그 연산자를 requiredConditions에 넣으면 됩니다. 여기에 없는 경우는 모든 목록에서 그대로 쓸 수 있습니다. 다른 모든 조건과, 위 조건이라도 다른 연산자나 범위로 쓰는 경우는 모든 목록에서 그대로 쓸 수 있습니다.

아직 지원하지 않는 조건

custom_field 조건은 받지 않습니다. 이 조건이 들어 있는 규칙은 422 CONDITION_NOT_SUPPORTED로 거부되며, details.field에 조건 타입이, details.path에 그 위치가 담깁니다.