LaneyGuide
모바일 앱과 알림

예약 알림 Query 예시

이벤트, AND, OR, 검색, 상대 시간과 사용자 필드를 조합하는 예약 알림 조건을 확인하세요.

레퍼런스검증일 2026. 8. 9.관리 Laney 제품팀

예약 알림 Query는 한 예약 행이 조건 결과에 들어오는 순간을 선택합니다. 어떤 변경을 확인할지 이벤트로 정하고, 어떤 예약을 받을지 Query로 좁힙니다. 규칙을 넓게 만들수록 알림이 많아지므로 합성 예약으로 통과 조건과 불일치 조건을 모두 시험하세요.

이벤트와 진입 규칙

화면의 이벤트내부 값알림이 생기는 시점
새 예약insert새 행이 Query를 만족합니다.
예약 변경update변경 전에는 불일치하고 변경 후 처음 일치합니다.
예약 삭제delete삭제 직전의 행이 Query를 만족합니다.

예약 변경 규칙은 결과 집합의 경계를 기준으로 작동합니다. 이미 일치하는 예약을 다시 저장해도 중복 알림을 만들지 않습니다. 일치하던 예약이 조건에서 빠질 때에도 알리지 않습니다. 이후 다른 변경으로 다시 조건에 들어오면 새 알림을 만듭니다.

Query 행이 없으면 해당 이벤트의 모든 예약이 일치합니다. 운영 알림에서는 최소 한 행을 추가하고 합성 예약으로 결과를 검증하세요.

조건 행에서 선택할 수 있는 필드

필드대표 용도대표 연산자
예약 상태대기, 확정, 완료, 취소와 노쇼 구분eq, neq, in
예약 시작앞으로 시작할 예약이나 시간 범위eq, gt, gte, lt, lte, in
예약 종료종료 시각 범위eq, gt, gte, lt, lte, in
메모VIP, 긴급, 캠페인과 같은 텍스트 패턴eq, neq, like, ilike, in
고객 ID특정 고객 또는 고객 목록eq, neq, in
생성 시각최근 생성된 예약 범위eq, gt, gte, lt, lte, in
예약 ID한 예약 또는 예약 목록eq, neq, in
사용자 필드지점, 등급, 담당자와 여러 선택값필드 종류에 맞는 연산자

조직이 예약에 추가한 사용자 필드는 같은 화면의 필드 목록에 표시됩니다. 고급 JSON에서는 custom.<key>로 참조합니다.

연산자

연산자화면 표시동작
eq같음값이 정확히 같습니다.
neq같지 않음값이 다릅니다.
gt, gte초과, 이상값이 기준보다 크거나 기준 이상입니다.
lt, lte미만, 이하값이 기준보다 작거나 기준 이하입니다.
like패턴 일치%는 여러 글자, _는 한 글자를 대신합니다.
ilike패턴 일치 (대소문자 무시)like와 같지만 영문 대소문자를 구분하지 않습니다.
in목록 중 하나쉼표로 입력한 값 중 하나와 일치합니다.
contains모두 포함배열형 사용자 필드가 입력한 값을 모두 포함합니다.

같은 필드에 서로 다른 연산자를 추가할 수 있습니다. 예를 들어 예약 시작에 gte = now와 lt = now+1d를 함께 사용하면 실행 시각부터 24시간 뒤 직전까지를 선택합니다. 같은 필드와 같은 연산자 조합은 한 Query에서 한 번만 사용할 수 있습니다.

조건 행으로 만드는 유용한 규칙

다음은 합성 운영 상황을 위한 예시입니다.

운영 상황이벤트Query 행
생성 시점부터 확정된 예약새 예약status eq confirmed
대기 예약이 처음 확정됨예약 변경status eq confirmed
VIP 메모가 있는 예약새 예약 또는 예약 변경notes ilike %VIP%
확정 또는 완료 예약필요한 이벤트status in confirmed, completed
앞으로 24시간 안에 시작필요한 이벤트starts_at gte now, starts_at lt now+1d
앱과 SMS 태그가 모두 있는 예약필요한 이벤트custom.channels contains app, sms
취소 상태로 삭제된 예약예약 삭제status eq cancelled

조건 행은 모두 AND로 결합됩니다. status eq confirmed와 notes ilike %VIP%를 추가하면 두 조건을 모두 만족하는 예약만 알립니다.

상대 시간

시간 필드에는 now와 분, 시간 또는 일 단위의 상대 시간을 사용할 수 있습니다.

값의미
now이벤트를 검사하는 시각
now-30m검사 시각 30분 전
now+2h검사 시각 2시간 후
now-7d검사 시각 7일 전
now+1d검사 시각 1일 후

상대 시간은 예약 이벤트가 발생할 때 계산됩니다. 예약 시각이 단순히 가까워졌다는 이유만으로 데이터 변경 이벤트가 생기지는 않습니다. 시간 경과만으로 알림 대상을 찾아야 한다면 예약 알림 Query 대신 하트비트 자동화를 사용하세요.

고급 JSON에서 OR 사용하기

고급 JSON은 where, or, search를 지원합니다. 다음 예시는 상태가 대기 또는 확정이고, 메모에 긴급이 있거나 고객 등급 사용자 필드가 vip인 예약을 선택합니다.

{
  "where": {
    "status": { "in": ["pending", "confirmed"] }
  },
  "or": [
    {
      "notes": { "ilike": "%긴급%" },
      "custom.customer_tier": { "eq": "vip" }
    }
  ]
}

or 배열의 한 객체 안에서는 조건 하나만 참이어도 됩니다. where와 or 객체는 함께 만족해야 합니다.

여러 OR 그룹 결합하기

or에 객체를 여러 개 넣으면 각 객체는 AND로 결합됩니다. 다음 예시는 대기 예약이면서 긴급 또는 vip 조건과 강남 지점 또는 kakao 유입 조건을 모두 만족해야 합니다.

{
  "where": {
    "status": { "eq": "pending" }
  },
  "or": [
    {
      "notes": { "ilike": "%긴급%" },
      "custom.customer_tier": { "eq": "vip" }
    },
    {
      "custom.branch": { "eq": "gangnam" },
      "custom.source": { "eq": "kakao" }
    }
  ]
}

or 안에서는 in과 contains를 사용할 수 없습니다. 목록 또는 배열 조건은 where에 두고 나머지 대체 조건만 or에 두세요.

검색과 필터 결합하기

search는 예약의 검색 가능한 값에서 용어를 찾습니다. 예약에서는 상태, 메모와 고객 ID가 검색 대상입니다. 다음 예시는 검색 가능한 값에 상담이 있고, 다음 하루 안에 시작하며, 상태가 대기 또는 확정인 예약을 선택합니다.

{
  "search": "상담",
  "where": {
    "status": { "in": ["pending", "confirmed"] },
    "starts_at": { "gte": "now", "lt": "now+1d" }
  }
}

search, where와 각 or 그룹은 모두 함께 적용됩니다.

사용자 필드 조합하기

다음 예시는 labels 사용자 필드가 vip와 mobile을 모두 포함하고, tier가 gold인 예약을 선택합니다.

{
  "where": {
    "custom.labels": { "contains": ["vip", "mobile"] },
    "custom.tier": { "eq": "gold" }
  }
}

사용자 필드 키와 종류는 현재 조직의 사용자 필드에서 확인하세요. 여러 선택값에는 contains를 사용하세요. 텍스트에는 like 또는 ilike를 사용할 수 있습니다. 단일 선택값과 켜기 값에는 eq, neq 또는 in을 사용하세요.

지원하지 않는 고급 속성

예약 알림은 변경된 한 행이 Query에 속하는지만 판정합니다. 따라서 결과 목록을 위한 embed, order, limit, offset은 사용할 수 없습니다. 관계 조회, 정렬 또는 여러 행 조회가 필요하면 자동화 조회 문법과 일반 자동화를 사용하세요.

고급 JSON을 조건 행으로 되돌릴 때 OR 또는 검색이 있으면 정보가 손실되므로 전환되지 않습니다. 고급 JSON 상태에서 그대로 수정하고 저장하세요.

이 페이지에서