For the complete documentation index, see llms.txt. This page is also available as Markdown.

Liquid를 이용한 고급 개인화

메시지 발송에 사용할 수 있는 Liquid 필터와 태그의 목록입니다.

핵클 CRM 캠페인에서 사용할 수 있는 Liquid 필터와 태그의 목록입니다. 목록에 없는 태그나 필터는 동작하지 않을 수 있으며, 이 경우 대부분 빈 문자열로 변환됩니다.

사용할 수 있는 변수

대시보드의 개인화 변수 모달을 통해 사용자별로 달라지는 값을 참조할 수 있어요.

참조 형식
내용

{{ user_properties.<속성> }}

사용자 속성

{{ event_properties.<속성> }}

이벤트 속성

{{ api_properties.<속성> }}

API 속성

{{ identifiers.<종류> }}

식별자 (Webhook 채널에서만 사용 가능)

예: {{ user_properties['name'] }}님 안녕하세요

자주 쓰는 패턴

이름이 없으면 기본값 사용

변수에 값이 없을 때 대체 문구를 씁니다.

{{ user_properties.name | default: '고객' }}

고객님 (name이 없을 때)

숫자에 천 단위 구분 기호

포인트·금액 등을 읽기 좋게 표시합니다.

변수: point = 15000

15,000P

한국 시간·한국어로 날짜 표시

Asia/Seoul 기준으로 변환하고 요일을 한국어로 출력합니다.

변수: ordered_at = "2026-07-15 23:00:00 UTC"

07월 16일 목요일

너무 길면 대체 문구로 바꾸기

지정한 길이를 넘는 값은 통째로 대체합니다.

변수: name = "김수한무거북이와두루미" (8자)

고객님

빠른 참조

필터

이름
역할

append

문자열 뒤에 다른 문자열을 붙입니다.

prepend

문자열 앞에 다른 문자열을 붙입니다.

capitalize

첫 글자만 대문자로 바꾸고 나머지는 그대로 둡니다.

downcase

모든 문자를 소문자로 바꿉니다.

upcase

모든 문자를 대문자로 바꿉니다.

lstrip

문자열 왼쪽(앞)의 공백을 제거합니다.

rstrip

문자열 오른쪽(뒤)의 공백을 제거합니다.

strip

문자열 양쪽 끝의 공백을 제거합니다.

strip_html

문자열에서 HTML 태그를 제거합니다.

strip_newlines

문자열에서 줄바꿈 문자를 제거합니다.

newline_to_br

줄바꿈 문자를 <br /> 태그로 바꿉니다.

remove

문자열에서 특정 부분 문자열을 모두 제거합니다.

remove_first

문자열에서 특정 부분 문자열을 처음 한 번만 제거합니다.

replace

문자열에서 특정 부분 문자열을 모두 다른 문자열로 바꿉니다.

replace_first

문자열에서 특정 부분 문자열을 처음 한 번만 다른 문자열로 바꿉니다.

split

문자열을 구분자 기준으로 나눠 배열로 만듭니다.

slice

문자열의 일부를 시작 위치와 길이로 잘라냅니다.

truncate

문자열을 지정한 길이로 줄이고 말줄임표를 붙입니다.

truncatewords

문자열을 지정한 단어 수로 줄이고 말줄임표를 붙입니다.

escape

문자열의 HTML 특수문자를 이스케이프합니다.

escape_once

문자열의 HTML 특수문자를 이스케이프하되, 이미 이스케이프된 부분은 다시 이스케이프하지 않습니다.

abs

숫자의 절댓값을 반환합니다.

at_least

숫자가 지정한 최솟값보다 작으면 최솟값을 반환합니다.

at_most

숫자가 지정한 최댓값보다 크면 최댓값을 반환합니다.

ceil

숫자를 올림하여 정수로 반환합니다.

floor

숫자를 내림하여 정수로 반환합니다.

round

숫자를 반올림합니다.

plus

숫자를 더합니다.

minus

숫자를 뺍니다.

times

숫자를 곱합니다.

divided_by

숫자를 나눕니다.

modulo

숫자를 나눈 나머지를 반환합니다.

number_with_delimiter

숫자에 천 단위 구분 기호(쉼표)를 붙입니다.

compact

배열에서 nil 값을 제거합니다.

concat

두 배열을 이어붙입니다.

first

배열의 첫 번째 요소를 반환합니다.

last

배열의 마지막 요소를 반환합니다.

join

배열의 요소를 구분자로 이어붙여 문자열로 만듭니다.

map

배열의 각 요소에서 지정한 속성 값만 뽑아 새 배열을 만듭니다.

reverse

배열의 순서를 뒤집습니다.

sort

배열을 정렬합니다(대소문자 구분, 대문자 우선).

sort_natural

배열을 대소문자 구분 없이 정렬합니다.

uniq

배열에서 중복된 값을 제거합니다.

where

배열에서 지정한 속성 값을 가진 요소만 남깁니다.

size

배열의 요소 개수 또는 문자열의 길이를 반환합니다.

date

날짜/시간 값을 지정한 형식의 문자열로 바꿉니다.

url_encode

문자열을 URL 인코딩합니다.

url_decode

URL 인코딩된 문자열을 원래대로 디코딩합니다.

url_escape

문자열에서 URL에 사용할 수 없는 문자만 이스케이프합니다.

url_param_escape

문자열을 URL 쿼리 파라미터 값으로 이스케이프합니다.

json_escape

문자열을 JSON 문자열 값으로 안전하게 이스케이프합니다.

json_parse

JSON 문자열을 파싱하여 템플릿에서 접근 가능한 객체로 만듭니다.

as_json_string

값을 JSON 문자열로 직렬화합니다.

default

값이 비어 있거나 falsy일 때 대체 값을 반환합니다.

fallback_over_length

문자열이 지정한 길이를 초과하면 대체 문구를 반환합니다.

태그

이름
역할

assign

변수에 값을 대입합니다.

capture

블록 안의 렌더 결과를 변수에 저장합니다.

if

조건이 참일 때만 블록을 렌더합니다.

unless

조건이 거짓일 때만 블록을 렌더합니다.

case / when

값에 따라 여러 분기 중 하나를 렌더합니다.

for

배열이나 범위를 순회하며 블록을 반복 렌더합니다.

break

for 반복문을 즉시 종료합니다.

continue

for 반복문에서 현재 반복을 건너뛰고 다음으로 넘어갑니다.

cycle

여러 값을 순서대로 돌아가며 출력합니다.

comment

블록 안의 내용을 출력하지 않습니다.

raw

블록 안의 내용을 Liquid 문법으로 해석하지 않고 그대로 출력합니다.

increment

0부터 시작하는 전용 카운터를 증가시키며 출력합니다.

decrement

-1부터 시작하는 전용 카운터를 감소시키며 출력합니다.

connected_content

외부 API를 호출해 응답(JSON)을 템플릿 변수로 저장합니다.

random

난수를 생성해 출력합니다.

문자열 필터

append

문자열 뒤에 다른 문자열을 붙입니다.

봄바람이 분다

prepend

문자열 앞에 다른 문자열을 붙입니다.

흩날리는 꽃잎

capitalize

첫 글자만 대문자로 바꾸고 나머지는 그대로 둡니다.

Spring bloom

downcase

모든 문자를 소문자로 바꿉니다.

blossom

upcase

모든 문자를 대문자로 바꿉니다.

PETAL

lstrip

문자열 왼쪽(앞)의 공백을 제거합니다.

[새싹 ]

rstrip

문자열 오른쪽(뒤)의 공백을 제거합니다.

[ 새싹]

strip

문자열 양쪽 끝의 공백을 제거합니다.

[새싹]

strip_html

문자열에서 HTML 태그를 제거합니다.

중요 안내

strip_newlines

문자열에서 줄바꿈 문자를 제거합니다.

여름이왔다

newline_to_br

줄바꿈 문자를 <br /> 태그로 바꿉니다.

매미가 울면<br /> 여름이 온다

remove

문자열에서 특정 부분 문자열을 모두 제거합니다.

밤 밤

remove_first

문자열에서 특정 부분 문자열을 처음 한 번만 제거합니다.

밤 여름밤

replace

문자열에서 특정 부분 문자열을 모두 다른 문자열로 바꿉니다.

여름 하늘, 여름 하늘

replace_first

문자열에서 특정 부분 문자열을 처음 한 번만 다른 문자열로 바꿉니다.

볕-비-비

split

문자열을 구분자 기준으로 나눠 배열로 만듭니다. 결과가 배열이므로 예시는 join과 함께 사용했습니다.

바다 / 수박 / 소나기

slice

문자열의 일부를 시작 위치와 길이로 잘라냅니다.

시그니처: slice: 시작위치[, 길이]

여름

바다

truncate

문자열을 지정한 길이로 줄이고 말줄임표를 붙입니다.

시그니처: truncate: 길이[, 말줄임문자열]

가을 하늘이...

비고: 말줄임 문자열이 길이에 포함됩니다 — 기본 말줄임(...) 기준으로 실제 보이는 본문은 길이 - 3자이며, 말줄임 문자열을 지정하면 그 길이만큼 차감됩니다.

truncatewords

문자열을 지정한 단어 수로 줄이고 말줄임표를 붙입니다.

시그니처: truncatewords: 단어수[, 말줄임문자열]

단풍 물들고 낙엽...

escape

문자열의 HTML 특수문자를 이스케이프합니다.

&lt;a href=&quot;x&quot;&gt;링크&lt;/a&gt;

escape_once

문자열의 HTML 특수문자를 이스케이프하되, 이미 이스케이프된 부분은 다시 이스케이프하지 않습니다.

&lt;p&gt; &amp; &lt;p&gt;

숫자 필터

abs

숫자의 절댓값을 반환합니다.

5

at_least

숫자가 지정한 최솟값보다 작으면 최솟값을 반환합니다.

5

at_most

숫자가 지정한 최댓값보다 크면 최댓값을 반환합니다.

5

ceil

숫자를 올림하여 정수로 반환합니다.

2

floor

숫자를 내림하여 정수로 반환합니다.

1

round

숫자를 반올림합니다.

시그니처: round: [소수자릿수]

3

3.14

plus

숫자를 더합니다.

125

minus

숫자를 뺍니다.

75

times

숫자를 곱합니다.

300

divided_by

숫자를 나눕니다.

3

3.3333333333333335

비고: 정수끼리는 정수 몫(소수점 버림)이며, 소수 결과가 필요하면 3.0처럼 소수로 나눕니다.

modulo

숫자를 나눈 나머지를 반환합니다.

1

number_with_delimiter

숫자에 천 단위 구분 기호(쉼표)를 붙입니다.

1,234,567.89

배열 필터

compact

배열에서 nil 값을 제거합니다.

단풍,낙엽

concat

두 배열을 이어붙입니다.

가,나,다

first

배열의 첫 번째 요소를 반환합니다.

사과

last

배열의 마지막 요소를 반환합니다.

join

배열의 요소를 구분자로 이어붙여 문자열로 만듭니다.

사과, 감, 밤

map

배열의 각 요소에서 지정한 속성 값만 뽑아 새 배열을 만듭니다.

단풍, 은행

reverse

배열의 순서를 뒤집습니다.

밤,감,사과

sort

배열을 정렬합니다(대소문자 구분, 대문자 우선).

Banana,Cherry,apple

비고: sort는 대소문자를 구분하며(대문자 우선), sort_natural은 대소문자를 무시합니다 — 위 출력이 이를 보여줍니다.

sort_natural

배열을 대소문자 구분 없이 정렬합니다.

apple,Banana,Cherry

uniq

배열에서 중복된 값을 제거합니다.

a,b

where

배열에서 지정한 속성 값을 가진 요소만 남깁니다.

시그니처: where: 속성명[, 값]

동백

size

배열의 요소 개수 또는 문자열의 길이를 반환합니다.

3

7

날짜 필터

date

날짜/시간 값을 지정한 형식의 문자열로 바꿉니다.

시그니처: date: format[, timezone][, locale: "언어태그"]

2026년 07월 16일 10시 30분

2026-07-16 08:00

목요일

07월 16일 목요일

2026-07-16 10:30

비고:

  • 날짜 문자열에 붙은 ISO Z 접미사는 파싱되지 않습니다(2026-07-16T10:30:00Z ✗) — 공백 구분 존(2026-07-16 10:30:00 UTC) 또는 존 없는 형식을 사용하세요.

  • 숫자 입력은 epoch 단위입니다.

  • timezone은 TZ 이름(Asia/Seoul)·ISO 오프셋(+09:00)을 지원하며, 분 단위 숫자(360)는 지원하지 않습니다.

  • 잘못된 timezone/locale은 해당 파라미터만 무시됩니다.

  • timezone(위치 인자)과 locale:(이름 인자)은 함께 사용할 수 있으며 순서는 무관합니다.

URL 필터

url_encode

문자열을 URL 인코딩합니다.

user%40example.com

url_decode

URL 인코딩된 문자열을 원래대로 디코딩합니다.

안녕 하세요

url_escape

문자열에서 URL에 사용할 수 없는 문자만 이스케이프합니다.

https://example.com/search?q=%EC%95%88%EB%85%95%20%ED%95%98%EC%84%B8%EC%9A%94

url_param_escape

문자열을 URL 쿼리 파라미터 값으로 이스케이프합니다.

%EA%B2%80%EC%83%89%EC%96%B4+A%26B

JSON 필터

json_escape

문자열을 JSON 문자열 값으로 안전하게 이스케이프합니다.

그가 \"안녕\"이라 말했다

json_parse

JSON 문자열을 파싱하여 템플릿에서 접근 가능한 객체로 만듭니다.

철수님의 포인트: 1500

비고: 파싱 실패 시 nil이 되며 렌더는 계속됩니다.

as_json_string

값을 JSON 문자열로 직렬화합니다.

{"name":"철수","point":1500}

기타 필터

default

값이 비어 있거나 falsy일 때 대체 값을 반환합니다.

시그니처: default: 기본값

나그네님 안녕하세요

fallback_over_length

문자열이 지정한 길이를 초과하면 대체 문구를 반환합니다.

시그니처: fallback_over_length: 최대길이, 대체문구

나그네

첫눈

비고: 길이는 UTF-16 코드 유닛 기준입니다(size 필터와 동일).

태그

assign

변수에 값을 대입합니다.

해클님 안녕하세요

capture

블록 안의 렌더 결과를 변수에 저장합니다.

철수님 환영합니다

if

조건이 참일 때만 블록을 렌더합니다.

VIP 혜택

unless

조건이 거짓일 때만 블록을 렌더합니다.

구독을 시작해보세요

case / when

값에 따라 여러 분기 중 하나를 렌더합니다.

골드 혜택

for

배열이나 범위를 순회하며 블록을 반복 렌더합니다.

귤 유자 곶감

break

for 반복문을 즉시 종료합니다.

123

continue

for 반복문에서 현재 반복을 건너뛰고 다음으로 넘어갑니다.

1245

cycle

여러 값을 순서대로 돌아가며 출력합니다.

ABAB

comment

블록 안의 내용을 출력하지 않습니다.

앞뒤

raw

블록 안의 내용을 Liquid 문법으로 해석하지 않고 그대로 출력합니다.

{{ name }}은 치환되지 않습니다

increment

0부터 시작하는 전용 카운터를 증가시키며 출력합니다.

0-1-2

비고: increment는 0부터, decrement는 -1부터 시작하며 assign 변수와 별개의 카운터를 사용합니다.

decrement

-1부터 시작하는 전용 카운터를 감소시키며 출력합니다.

-1--2

기타 태그

connected_content

외부 API를 호출해 응답(JSON)을 템플릿 변수로 저장합니다.

자세한 사용법·제약(타임아웃, 응답 크기 한도, 허용 프로토콜·주소 등)은 커넥티드 콘텐츠 작성하기를 참고하세요.

시그니처: {% connected_content <url> [:method <method>] [:body <body>] [:headers <json>] [:save <변수명>] %}

철수님, 오늘의 추천 상품을 확인해보세요 (API가 {"name": "철수"}를 응답했다고 가정)

비고: 렌더 시 실제 HTTP 호출이 발생합니다. 위 출력은 가정한 응답 기준 예시입니다.

random

난수를 생성해 출력합니다. 자연수를 넣어서 0 이상 특정 값 미만의 무작위 정수를 얻을 수 있습니다.

0.250538241955663 (실행마다 다름)

7 (실행마다 다름)

주사위 굴리기 (1~6) — 뽑은 값을 변수에 담아 재사용하려면 capture로 담고 plus로 숫자로 바꿉니다. {% random 6 %}은 0-5를 주므로 plus: 1로 1-6이 됩니다.

4 (실행마다 다름)

마지막 업데이트