세분화 언어
Pushwoosh는 Tag 값을 기반으로 세분화된 세그먼트를 구축하기 위한 강력한 세분화 엔진을 제공합니다. 세분화 언어는 특정 기준과 일치하는 특정 사용자 그룹을 설명하고 단일 잠재고객 세그먼트로 취급하기 위해 세분화 기준을 작성하고 결합하는 특정 방법입니다.
이 문서는 세분화 언어의 기본 개념과 구문을 설명하고 다양한 사례에 대한 세분화 기준을 구축하는 포괄적인 예제를 제공합니다.
저장된 세그먼트 없이 인라인 사용
Anchor link to필터 표현식은 저장된 세그먼트에 속할 필요가 없습니다. NotifySegment의 expression 필드에 직접 전달하여 단일 전송을 타겟팅할 수 있습니다. 이 경우 세그먼트가 생성되지 않으며 표현식은 계정에 저장되지 않습니다.
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \ -H "Authorization: Token YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "segment": { "application": "XXXXX-XXXXX", "platforms": ["IOS", "ANDROID"], "expression": "T(\"City\", eq, \"Tokyo\") * T(\"Age\", gte, 18)", "payload": { "content": { "localized_content": { "en": { "ios": { "body": "Hello, Tokyo!" } } } } }, "schedule": { "at": "2026-05-01T12:00:00Z" } } }'기본 사항
Anchor link to사용자 기반의 각 기기에는 Tag 값을 통해 특정 속성이 연결되어 있습니다.
예를 들어, Jane이라는 사용자가 도쿄에 살고 나이가 28세라고 가정해 보겠습니다. 해당 사용자는 기기에 다음과 같은 Tag가 설정됩니다:
- 이름: Jane
- 도시: Tokyo
- 나이: 28
Jane을 타겟팅하려면 다음과 같이 세그먼트를 설명해야 합니다:
T("Name", eq, "Jane") * T("Age", eq, 28) * T("City", eq, "Tokyo")
이러한 조건의 조합은 잠재고객 세그먼트라고도 하는 사용자 그룹을 설명하는 데 사용되는 세분화 언어의 필터 표현식입니다.
필터 표현식
Anchor link to필터 표현식은 필요한 세그먼트를 설명하는 조건 또는 조건의 조합을 포함하는 문자열입니다.
각 조건은 해당 조건에 지정된 기준과 일치하는 기기 세그먼트를 설명합니다.
예를 들어, 다음 조건은 도쿄에 거주하는 사용자 세그먼트를 구축합니다:
T("City", e, "Tokyo")
여기서
- T는 Tag(조건 유형)입니다;
- eq는 적용할 연산자입니다;
- “Tokyo”는 사용자의 기기와 연결된 Tag 값입니다.
조건 유형
Anchor link to세분화에 사용할 수 있는 조건 유형은 다음과 같습니다:
- A (Application) – 특정 앱이 설치된 기기 세그먼트를 설명합니다. 별칭: App, Application;
- T (Tag) – 지정된 Tag 값을 가진 기기 세그먼트를 설명합니다;
- AT (App-scoped tag) – 특정 애플리케이션 내에서 태그 값을 조회합니다. 앱 코드가 첫 번째 인수로 필요합니다. 별칭: Tag;
- Event – 특정 Pushwoosh 이벤트를 트리거한 기기 세그먼트를 설명합니다;
- Geo – 특정 지리적 반경 내의 기기 세그먼트를 설명합니다;
- BTTS – 최적 발송 시간을 기반으로 한 기기 세그먼트를 설명합니다;
- Updated – 마지막 업데이트 타임스탬프를 기반으로 한 기기 세그먼트를 설명합니다;
- Segment – 코드로 다른 필터/세그먼트를 참조합니다;
조건 연산
Anchor link to정교한 세그먼트를 구축하기 위해 필터 표현식 내의 조건에 다음 연산을 적용할 수 있습니다:
합집합 (+)
Anchor link to세그먼트를 결합합니다. 즉, 지정된 조건 중 하나 이상과 일치하는 새로운 사용자 세그먼트를 구축합니다.

예를 들어, 도쿄나 오사카에 거주하는 사용자를 타겟팅하려면 다음 조건으로 세그먼트를 설명해야 합니다:
T("City", eq, "Tokyo") + T("City", eq, "Osaka")
교집합 (*)
Anchor link to조건에 의해 설명된 두 세그먼트에 모두 속하는 사용자 세그먼트를 구성합니다. 따라서 지정한 각 조건을 준수하는 사용자만 포함됩니다.

다음 표현식은 도쿄에 거주하고 이름을 지정한 사용자 세그먼트를 설명합니다:
T("City", eq, "Tokyo") * T("Name", any)
차집합 ()
Anchor link to설명된 세그먼트 중 하나에 속하고 다른 세그먼트에는 속하지 않는 사용자 세그먼트를 구축합니다.

도쿄에 거주하지만 이름을 알려주지 않은 사용자는 다음과 같이 설명됩니다:
T("City", eq, "Tokyo") \ T("Name", any)
필터 표현식의 조건으로 수행할 연산 순서를 결정합니다.
예를 들어, 다음 필터 표현식은 먼저 나이가 18세인 12345-67890 구독자 세그먼트를 얻은 다음 해당 세그먼트의 모든 남성을 뺍니다:
( A("12345-67890") * T("Age", eq, 18) ) \ T("Gender", eq, "Male")
Tag 조건 연산자
Anchor link to각 Tag 유형에 대해 자체 연산자가 적용됩니다.
정수 Tag 연산자
Anchor link to- eq - 지정된 값과 같음
- noteq - 지정된 값과 다름
- lte - 지정된 값보다 작거나 같음
- gte - 지정된 값보다 크거나 같음
- in - 지정된 값 중 하나
- notin - 지정된 값 중 어느 것과도 다름
- between - 지정된 범위 내
- any - 태그에 대해 설정된 값이 있는 기기
- notset - 태그에 대해 설정된 값이 없는 기기
문자열 Tag 연산자
Anchor link to- eq - 지정된 값과 같음
- noteq - 지정된 값과 다름
- startswith - 지정된 접두사로 시작
- endswith - 지정된 접미사로 끝남
- contains - 지정된 부분 문자열을 포함
- in - 지정된 값 중 하나와 같음
- notin - 지정된 값 중 어느 것과도 다름
- any - 태그에 대해 설정된 값이 있는 기기
- notset - 태그에 대해 설정된 값이 없는 기기
목록 Tag 연산자
Anchor link to- in - 지정된 태그 값 중 하나를 가진 기기
- notin - 기기와 연결된 지정된 태그 값이 없음
- any - 태그에 대해 설정된 값이 있는 기기
- notset - 태그에 대해 설정된 값이 없는 기기
날짜 Tag 연산자
Anchor link to- eq - 지정된 날짜와 같음
- noteq - 지정된 날짜와 다름
- lte - 지정된 날짜 이전 또는 당일
- gte - 지정된 날짜 이후 또는 당일
- in - 지정된 날짜 중 하나와 같음
- notin - 지정된 날짜 중 어느 것과도 다름
- between - 지정된 범위 내
- any - 태그에 대해 설정된 값이 있는 기기
- notset - 태그에 대해 설정된 값이 없는 기기
- match - 지정된 연도의 월과 월의 일과 일치합니다.
- daysago eq - 현재 날짜로부터 지정된 일수 전과 같음
- daysago noteq - 현재 날짜로부터 지정된 일수 전과 다름
- daysago lte - 현재 날짜로부터 지정된 일수 전보다 작거나 같음
- daysago gte - 현재 날짜로부터 지정된 일수 전보다 크거나 같음
- daysago between - 지정된 일수 사이
- minutesago lte - 현재 시각으로부터 지정된 분 수 이전 또는 같음
- minutesago gte - 현재 시각으로부터 지정된 분 수 이전 또는 같음
- daysahead - 현재 날짜(UTC)로부터 N일에서 M일 사이(양쪽 끝 포함)
부울 Tag 연산자
Anchor link to- eq - 지정된 값과 같음
- noteq - 지정된 값과 다름
- any - 태그에 대해 설정된 값이 있는 기기
- notset - 태그에 대해 설정된 값이 없는 기기
가격 Tag 연산자
Anchor link to- eq - 지정된 값과 같음
- noteq - 지정된 값과 다름
- lte - 지정된 값보다 작거나 같음
- gte - 지정된 값보다 크거나 같음
- in - 지정된 값 중 하나와 같음
- notin - 지정된 값 중 어느 것과도 다름
- between - 지정된 범위 내
- any - 태그에 대해 설정된 값이 있는 기기
- notset - 태그에 대해 설정된 값이 없는 기기
버전 Tag 연산자
Anchor link to- eq - 지정된 값과 같음
- noteq - 지정된 값과 다름
- lte - 지정된 값보다 작거나 같음
- gte - 지정된 값보다 크거나 같음
- in - 지정된 값 중 하나와 같음
- notin - 지정된 값 중 어느 것과도 다름
- between - 지정된 범위 내
- any - 태그에 대해 설정된 값이 있는 기기
- notset - 태그에 대해 설정된 값이 없는 기기
이벤트 조건 연산자
Anchor link to이벤트 횟수
Anchor link to- count gte - 이벤트를 n번 이상 또는 정확히 n번 트리거한 기기
- count lte - 이벤트를 n번 미만 또는 정확히 n번 트리거한 기기
- count eq - 이벤트를 정확히 n번 트리거한 기기
- count noteq - 이벤트를 n번이 아닌 횟수로 트리거한 기기
이벤트 날짜
Anchor link to- date gte - 지정된 날짜 이후 또는 정확히 그 날짜에 이벤트를 트리거한 기기
- date lte - 지정된 날짜 이전 또는 정확히 그 날짜에 이벤트를 트리거한 기기
- date eq - 지정된 날짜에 정확히 이벤트를 트리거한 기기
- date noteq - 지정된 날짜가 아닌 다른 날에 이벤트를 트리거한 기기
- date in - 지정된 날짜 중 하나에 이벤트를 트리거한 기기
- date notin - 지정된 날짜가 아닌 다른 날에 이벤트를 트리거한 기기
- date between - 지정된 기간 내에 이벤트를 트리거한 기기
- date daysago eq - 이벤트 트리거 날짜가 현재 날짜로부터 지정된 일수 전과 같음
- date daysago noteq - 이벤트 트리거 날짜가 현재 날짜로부터 지정된 일수 전과 다름
- date daysago lte - 이벤트 트리거 날짜가 현재 날짜로부터 지정된 일수 전보다 작거나 같음
- date daysago gte - 이벤트 트리거 날짜가 현재 날짜로부터 지정된 일수 전보다 크거나 같음
- date daysago between - 이벤트 트리거 날짜가 지정된 일수 사이임
- date daysahead - 이벤트 트리거 날짜가 현재 날짜로부터 지정된 일수 내에 있음(간격은 양쪽 끝을 포함하며, 전체 의미는 위 날짜 태그 연산자 참조)
- date minutesago lte - 이벤트 트리거 날짜가 현재 시각으로부터 지정된 분 수 이전 또는 같음
- date minutesago gte - 이벤트 트리거 날짜가 현재 시각으로부터 지정된 분 수 이전 또는 같음
이벤트 플랫폼
Anchor link to이벤트가 트리거된 플랫폼별로 이벤트를 필터링합니다.
- platforms - 플랫폼 목록 (예: [“ios”, “android”])
이벤트 속성
Anchor link to이벤트 조건은 이벤트 속성 값을 기반으로 필터링할 수 있습니다. 속성은 해당 연산자와 함께 다양한 데이터 유형을 지원합니다.
정수 이벤트 속성
Anchor link to- attribute “name” eq - 속성이 지정된 값과 같음
- attribute “name” noteq - 속성이 지정된 값과 다름
- attribute “name” gte - 속성이 지정된 값보다 크거나 같음
- attribute “name” lte - 속성이 지정된 값보다 작거나 같음
- attribute “name” between - 속성이 지정된 범위 내에 있음
- attribute “name” in - 속성이 지정된 값 중 하나와 같음
- attribute “name” notin - 속성이 지정된 값 중 어느 것과도 다름
- attribute “name” any - 속성에 대해 설정된 값이 있음
- attribute “name” notset - 속성에 대해 설정된 값이 없음
문자열 이벤트 속성
Anchor link to- attribute “name” eq - 속성이 지정된 값과 같음
- attribute “name” noteq - 속성이 지정된 값과 다름
- attribute “name” startswith - 속성이 지정된 접두사로 시작
- attribute “name” endswith - 속성이 지정된 접미사로 끝남
- attribute “name” contains - 속성이 지정된 부분 문자열을 포함
- attribute “name” in - 속성이 지정된 값 중 하나와 같음
- attribute “name” notin - 속성이 지정된 값 중 어느 것과도 다름
- attribute “name” any - 속성에 대해 설정된 값이 있음
- attribute “name” notset - 속성에 대해 설정된 값이 없음
부울 이벤트 속성
Anchor link to- attribute “name” eq - 속성이 true 또는 false와 같음
- attribute “name” noteq - 속성이 true 또는 false와 다름
날짜 이벤트 속성
Anchor link to- attribute “name” eq - 속성이 지정된 날짜와 같음
- attribute “name” noteq - 속성이 지정된 날짜와 다름
- attribute “name” gte - 속성이 지정된 날짜 이후 또는 당일
- attribute “name” lte - 속성이 지정된 날짜 이전 또는 당일
- attribute “name” between - 속성이 지정된 날짜 범위 내에 있음
- attribute “name” in - 속성이 지정된 날짜 중 하나와 같음
- attribute “name” notin - 속성이 지정된 날짜 중 어느 것과도 다름
- attribute “name” daysago eq/noteq/gte/lte/between - 며칠 전과 관련된 속성
- attribute “name” daysahead from to - 속성이 현재 날짜로부터 지정된 일수 간격 내에 있음(간격은 양쪽 끝을 포함하며, 전체 의미는 위 날짜 태그 연산자 참조)
- attribute “name” minutesago gte/lte - 몇 분 전과 관련된 속성
- attribute “name” any - 속성에 대해 설정된 값이 있음
- attribute “name” notset - 속성에 대해 설정된 값이 없음
가격 이벤트 속성
Anchor link to- attribute “name” eq - 속성이 지정된 가격 값과 같음
- attribute “name” noteq - 속성이 지정된 가격 값과 다름
- attribute “name” gte - 속성이 지정된 가격보다 크거나 같음
- attribute “name” lte - 속성이 지정된 가격보다 작거나 같음
- attribute “name” between - 속성이 지정된 가격 범위 내에 있음
- attribute “name” in - 속성이 지정된 가격 중 하나와 같음
- attribute “name” notin - 속성이 지정된 가격 중 어느 것과도 다름
- attribute “name” any - 속성에 대해 설정된 값이 있음
- attribute “name” notset - 속성에 대해 설정된 값이 없음
목록 이벤트 속성
Anchor link to- attribute “name” in - 속성이 지정된 값 중 하나를 포함
- attribute “name” notin - 속성이 지정된 값 중 어느 것도 포함하지 않음
- attribute “name” any - 속성에 대해 설정된 값이 있음
- attribute “name” notset - 속성에 대해 설정된 값이 없음
추가 조건 유형
Anchor link to지리 조건
Anchor link to지정된 반경 내의 지리적 위치를 기반으로 기기를 타겟팅합니다.
구문: Geo("<app-code>", <latitude>, <longitude>, <range-in-km>)
BTTS 조건
Anchor link to최적 알림 발송 시간(하루 중 시간, 0-23)으로 기기를 타겟팅합니다.
연산자:
- any - 설정된 최적 발송 시간 값이 있음
- eq - 정확한 시간 일치
- noteq - 시간과 다름
- gte - 시간보다 크거나 같음
- lte - 시간보다 작거나 같음
업데이트 조건
Anchor link to마지막 업데이트 타임스탬프로 기기를 필터링합니다.
연산자:
- gte - 지정된 날짜 이후 또는 당일에 업데이트됨
- lte - 지정된 날짜 이전 또는 당일에 업데이트됨
- between - 날짜 범위 내에 업데이트됨
세그먼트 조건
Anchor link to코드로 다른 필터/세그먼트를 참조합니다.
애플리케이션 조건 기기 존재 플래그
Anchor link to애플리케이션 조건은 기기 및 토큰 필터링을 제어하기 위한 추가 플래그를 지원합니다:
- with_tokens - 푸시 알림 토큰이 있는 기기
- without_tokens - 푸시 알림 토큰이 없는 기기
- with_devices - 등록된 기기가 있는 사용자
- without_devices - 등록된 기기가 없는 사용자/프로필
필터 표현식 예제
Anchor link to기본 예제
Anchor link to- 앱이 설치되어 있고 푸시 토큰이 있는 iOS 및 Android 기기:
A("11111-11111", ["ios","android"], [with_tokens])- 앱이 설치되어 있지만 푸시 토큰이 없는 iOS 및 Android 기기:
A("11111-11111", ["ios","android"], [without_tokens])- 푸시 토큰 유무에 관계없이 앱이 설치된 iOS 및 Android 기기:
A("11111-11111", ["ios","android"], [with_tokens, without_tokens])- 앱에서 무언가를 구매한 모든 앱 구독자:
AT("11111-11111", "In-App Purchase", gte, 1)고급 예제
Anchor link to- 최근 7일 동안 앱을 연 도쿄 사용자:
T("City", eq, "Tokyo") * Event("11111-11111", "App Open", date daysago lte 7)- 최근 30일 동안 50달러 이상 구매한 사용자:
Event("11111-11111", "Purchase", attribute "total_price" gte 50.00, date daysago lte 30)- 이름이 “J”로 시작하거나 “e”로 끝나는 사용자:
T("Name", startswith, "J") + T("Name", endswith, "e")- 최근에 구매하지 않은 뉴욕 100km 이내의 활성 iOS 사용자:
A("11111-11111", ["ios"], [with_tokens]) * Geo("11111-11111", 40.7128, -74.0060, 100) \ Event("11111-11111", "Purchase", date daysago lte 30)- 최적 발송 시간이 오전 9시에서 오후 5시 사이인 사용자:
BTTS("11111-11111", gte 9) * BTTS("11111-11111", lte 17)- 지난 1시간 동안 Android 또는 iOS에서 특정 이벤트를 트리거한 사용자:
Event("11111-11111", "Button Click", platforms ["android", "ios"], date minutesago lte 60)- 최근 3개월 동안 업데이트되었으며 앱 버전이 4.2 이상인 기기:
Updated("11111-11111", gte "2024-07-01 00:00:00") * AT("11111-11111", "App Version", gte, "4.2")