> ## Content Index
> Fetch the complete content index at: https://blog.notifly.tech/llms.txt
> Use this file to discover other available public pages before exploring further.

# 상품 정보를 메시지마다 다시 넣고 계신가요? 노티플라이 카탈로그 사용법
- URL: https://blog.notifly.tech/notifly-catalog/
- Published: 2026-08-21T07:18:37.000Z
- Updated: 2026-08-21T07:48:31.000Z
- Description: 상품명, 가격, 링크를 캠페인마다 매번 넣고 계신가요? 변동이 잦은 상품 데이터는 구글 시트에서 한 번에 관리하세요. 구글 시트를 노티플라이 카탈로그로 연결하면 상품 ID 하나로 최신 정보를 메시지에 불러올 수 있습니다. 노티플라이 카탈로그로 반복 작업과 데이터 중복을 줄이는 방법을 확인해보세요.
- Author: 노티플라이
- Tags: 노티플라이 활용팁, 개인화 메시지, CRM 메시지, CRM 세팅, CRM 직무, CRM 자동화, Spreadsheet, Google Sheet

오늘 아침 상품 담당팀이 상품 정보 20건을 업데이트했다고 해보겠습니다. 그중 12개는 이미 캠페인에서 사용하고 있던 상품입니다. 가격이 바뀌고, 상품명이 수정된 제품도 있겠죠.

그렇다면 이미 사용 중이던 12개의 상품 데이터는 캠페인마다 하나씩 열어서 수정해야 할까요?

지금까지는 같은 상품을 쓰는 캠페인이 여러 개라면 하나씩 찾아서 고쳐야 했습니다. 상품 수가 늘어날수록 시간이 더 많이 드는 작업입니다. 이런 번거로운 작업을 노티플라이에서는 카탈로그 기능으로 간단하게 효율화할 수 있습니다. 이벤트에는 *item\_id* 만 남기고 상품명이나 가격, 링크와 같은 세부 정보는 구글 시트 한 곳에서 관리합니다. 메시지를 보내는 순간 아이템 ID에 맞는 최신 정보를 찾아서 반영할 수 있게 됩니다.

카탈로그가 무엇이고 어떻게 동작하는지부터 구글 시트를 연동하고 메시지에 상품 정보를 채우는 방법, 카탈로그를 활용할 수 있는 캠페인 예시까지 확인해보세요.

---

## **1\. 노티플라이 카탈로그란?**

노티플라이 카탈로그는 상품정보, 이벤트, 혜택 내용처럼 여러 메시지에서 반복해서 사용하는 데이터를 프로젝트에 저장하는 기능입니다. 

CRM에서 다루는 데이터는 크게 유저 데이터와 카탈로그 데이터로 구분할 수 있습니다.

**\- 유저 데이터** : 이름, 등급, 가입일, 보유 적립금, 멤버십처럼 사용자의 개별 속성을 나타내는 정보  
\- **카탈로그 데이터** : 상품명, 가격, 이미지 URL처럼 여러 유저가 함께 참조하는 정보

카탈로그 데이터들은 상품별로, 매장별로, 콘텐츠별로 따로 모아져서 관리됩니다. 이렇게 모아 놓은 묶음 하나를 카탈로그라고 부릅니다. 상품 정보를 모으면 'products' 카탈로그, 매장 정보를 모으면 'stores' 카탈로그가 됩니다.

![노티플라이 카탈로그 데이터 미리보기 페이지](https://storage.ghost.io/c/71/dc/71dc3c60-dc2f-4009-b189-22017fd0e537/content/images/2026/08/image-5.png)

노티플라이 카탈로그 데이터 미리보기 페이지

카탈로그 데이터 안에서 각 아이템을 구분하는 고유한 값을 **아이템 ID**라고 합니다. 아이템 ID가 sku-1001인 상품을 1만 명이 조회했다고 가정해 보겠습니다. 조회 이벤트마다 상품명과 가격이 함께 담겨 있다는 것은 같은 상품 데이터가 1만 개 쌓여 있는 것과 같습니다. 상품명이나 가격이 바뀌면 이 1만 개를 일일이 찾아 고쳐야 합니다.

이런 반복 작업을 대체하기 위한 기능이 카탈로그입니다. 이벤트에는 sku-1001라는 아이템 ID 값만 남기고 상품 데이터는 카탈로그의 행에서 관리할 수 있습니다.

💡

****카탈로그 기능을 사용하면 무엇이 달라질까요?**   
  
****① 메시지에 들어갈 정보를 마케터가 직접 관리합니다.**  
카탈로그의 데이터 원본은 구글 시트입니다. 상품명을 수정하거나 할인가를 반영하는 등의 데이터 관리 작업을 구글 시트 안에서 모두 처리할 수 있습니다.  
  
****②** ****같은 상품을 쓰는 캠페인을 하나씩 찾아다니지 않아도 됩니다.**  
셀의 값을 변경하고 동기화하면 그 상품을 참조하는 모든 캠페인과 유저 여정에 함께 반영됩니다. 시트를 한 번 수정하는 것으로 수십 개의 캠페인을 업데이트할 필요가 없어집니다.  
  
****③ 개발팀에 요청하는 이벤트 스펙이 가벼워집니다.**  
상품명, 가격, 딥링크를 이벤트마다 실어 보내는 대신 아이템 ID 하나만 저장하면 됩니다. 나중에 새로운 정보를 메시지에 쓰고 싶다면 이벤트를 다시 설계할 필요 없이 시트에 열을 하나 추가하면 됩니다.

---

## 2\. 노티플라이 카탈로그, 어떻게 동작하나요?

카탈로그 데이터가 실제 메시지에 반영되어 발송되기까지의 과정은 네 단계로 이루어집니다.

| 단계         | 하는 일                                                         |
| ---------- | ------------------------------------------------------------ |
| 1\. 데이터 준비 | 구글 시트에 정리된 카탈로그 데이터를 노티플라이 카탈로그와 연동합니다.                      |
| 2\. 동기화    | 설정한 동기화 일정에 맞춰 구글 시트 데이터를 읽어와 카탈로그에 저장합니다.                   |
| 3\. 메시지 세팅 | 저장된 데이터가 들어갈 수 있도록 메시지에 리퀴드(Liquid) 문법을 넣어둡니다.               |
| 4\. 반영     | 메시지를 보내는 시점에 이벤트의 아이템 ID를 기준으로 카탈로그에서 최신 정보를 가져와 메시지를 완성합니다. |

하지만 카탈로그가 동작한다고 메시지 발송이 자동으로 시작되지는 않습니다. 카탈로그는 데이터를 보관하고 있을 뿐 데이터를 불러오는 것은 리퀴드, 발송 대상과 시점을 정하는 것은 캠페인과 유저 여정이 담당합니다.

---

## 3\. 카탈로그 연동하기

그렇다면 이 카탈로그 기능을 실제 캠페인에 적용하려면 어떤 작업이 필요할까요?  
가장 기초가 되는 구글 시트 연동 과정부터 살펴보겠습니다.

### 1) Google Sheets에 상품 정보를 정리합니다

구글 시트의 한 행에는 하나의 상품 데이터만 담겨 있어야 하고, 첫 번째 열의 이름은 반드시 id 여야 합니다.

![노티플라이 카탈로그 데이터 정리 예시](https://storage.ghost.io/c/71/dc/71dc3c60-dc2f-4009-b189-22017fd0e537/content/images/2026/08/image-4.png)

노티플라이 카탈로그 데이터 정리 예시

💡

****한 번 더 확인해 주세요!**  
  
****✓ ID는 바뀌지 않는 값을 써야합니다.**  
ID는 상품명이나 가격이 수정되어도 그대로 유지되는 내부 식별자여야 합니다. 이벤트에 담기는 ID와 시트의 ID가 같은 값을 가리키는지 먼저 확인해 주세요.  
  
****✓ 중복 ID와 빈 ID가 없어야 합니다.**  
한 카탈로그 안에서 ID는 중복될 수 없습니다. 시트에서 행을 복사해서 쓰다 보면 중복이 생기기 쉬우니 동기화 전에 한 번 더 점검해 주세요.  
  
****✓ 열 이름은 영문·숫자·하이픈(-)·밑줄(\_)로만 작성합니다.**  
[Liquid](https://blog.notifly.tech/personalization-marketing-using-liquid-messages/)에서 데이터를 **items\[0\].name* 형태로 참조하기 때문에 한글 열 이름이나 공백이 들어간 이름은 가급적 사용하지 않는 것을 권장합니다.  
  
****✓ 개인정보는 넣지 않습니다.**  
카탈로그는 여러 유저가 함께 참조하는 공용 데이터입니다. 이름, 전화번호, 주소처럼 특정 개인을 식별할 수 있는 정보는 유저 속성으로 관리해야 합니다.

### 2) 노티플라이 콘솔에서 카탈로그를 만듭니다

**데이터 관리 → 카탈로그 → 카탈로그 만들기**로 이동해 아래 순서대로 진행합니다.

---

**Step 1** \- 카탈로그 이름을 입력합니다. Liquid에서 이 이름을 그대로 쓰기 때문에 products처럼 짧고 뜻이 분명한 이름이 좋습니다.

**Step 2** \- 구글 시트의 스프레드시트 ID를 입력합니다.

**Step 3** \- 필요하면 탭 이름과 A1 범위를 지정하고, 동기화 주기를 설정합니다.

**Step 4** \- 시트 공유 메뉴에서 catalog-reader@notifly.tech에 뷰어 권한을 부여합니다. 

**Step 5** \- \[카탈로그 만들기\] 버튼을 클릭한 후, 동기화 진행 상태를 확인합니다.

---

![노티플라이 카탈로그 상세 화면](https://storage.ghost.io/c/71/dc/71dc3c60-dc2f-4009-b189-22017fd0e537/content/images/2026/08/image-2.png)

노티플라이 카탈로그 상세 화면

동기화가 끝나면 행 수와 상태, 최근 동기화 기록을 확인할 수 있고, 내용 미리보기에서 실제로 조회되는 상품을 눈으로 확인할 수 있습니다.   
만약 동기화 시간 외에 데이터 수정이 필요한 경우 우측 상단의 \[지금 동기화\] 버튼을 눌러 바로 업데이트할 수 있습니다.

💡

****한번 더 확인해주세요!**  
  
****✓ 동기화 실패가 발송 중단은 아닙니다.**  
새 동기화에 문제가 생겨도 마지막으로 성공한 데이터가 계속 쓰이기 때문에 시트를 손보는 동안에도 메시지는 발송됩니다. 만약 권한 오류나 데이터 검증 오류가 표시되는 경우, 시트 공유 설정이 되어 있는지 → 첫 번째 열의 이름이 ‘id’인지 → 중복 ID는 없는지 순서대로 확인해 보시길 권장합니다.  
  
****✓ 카탈로그 이름을 바꾸면 Liquid도 함께 고쳐야 합니다.**  
카탈로그 이름이 곧 참조 키이므로, 이미 발행된 캠페인의 Liquid가 예전 이름을 가리키고 있지 않은지 확인이 필요합니다.

---

## **4\. 아이템 ID 하나로 메시지를 구성하는 방법**

연동이 끝났다면 리퀴드 문법을 사용해 카탈로그 데이터를 메시지에서 활용할 수 있습니다. 이벤트 파라미터에 *item\_id* 가 담겨 있는 경우를 생각해 보겠습니다.

```
{
  "item_id": "sku-1001"
}
```

메시지에서는 *catalog\_items* 태그로 상품을 조회합니다.

```
{% catalog_items products {{ event["item_id"] }} %}
{% if items.size > 0 %}
{{ user["name"] | default: "고객" }}님, 담아두신 [{{ items[0].name }}]을 다시 확인해 보세요.
지금 가격은 {{ items[0].price }}원이에요.
{% else %}
{% abort_message("상품 정보를 찾지 못했습니다") %}
{% endif %}
```

여기서 *products* 는 조회할 카탈로그 이름이고, *event\["item\_id"\]* 는 찾고자 하는 상품의 ID입니다.이렇게 조회된 데이터는 *items* 이라는 배열에 담기며, 구글 시트에 적어 둔 값이 그대로 메시지 제목과 내용, 액션 URL로 채워집니다.

상품을 찾지 못했을 때의 처리도 미리 넣어두시길 권장합니다. 대체 문구를 보여주거나 위 예시처럼 *abort\_message* 로 발송 자체를 중단하는 방식이 안전합니다.

💡

****알아 두면 좋은 세 가지**  
  
****① 유저 여정에서는** ***entry\_event** **로 읽습니다.**  
이벤트로 시작한 유저 여정이라면 진입 이벤트 파라미터를 **entry\_event*로 참조합니다.  
예) *{% catalog\_items products {{ entry\_event\["item\_id"\] }} %}*   
  
****② 영역마다 조회를 넣어 주세요.**  
메시지 제목, 내용, 액션 URL은 각각 렌더링됩니다. 여러 영역에서 같은 상품 정보를 쓴다면 각 영역에 **catalog\_items* 조회를 함께 넣어야 합니다.  
  
****③ 여러 ID를 조회할 때는 순서를 확인하세요.**  
한 번에 여러 ID를 넘길 수 있지만, 존재하는 상품만 요청 순서대로 **items*에 담깁니다. 앞의 ID가 없으면 뒤 상품의 배열 번호가 당겨질 수 있으니 테스트 발송으로 반환된 id와 순서를 꼭 확인해 주세요.  
예) *{% catalog\_items products {{ event\["primary\_item\_id"\] }} {{ event\["secondary\_item\_id"\] }} %}*

---

## **5\. 카탈로그와 커넥티드 콘텐츠, 언제 무엇을 쓸까요?**

노티플라이에는 실시간으로 외부 API를 호출하여 받은 데이터를 메시지에 바로 적용할 수 있게 해주는 커넥티드 콘텐츠라는 기능도 있습니다. 

카탈로그와 커넥티드 콘텐츠, 변경된 데이터를 메시지에 바로 적용할 수 있다는 점에서 두 기능은 비슷해 보이지만 다루는 데이터의 범위가 다릅니다.

![노티플라이 카탈로그 동작 방식](https://storage.ghost.io/c/71/dc/71dc3c60-dc2f-4009-b189-22017fd0e537/content/images/2026/08/image.png)

노티플라이 카탈로그 동작 방식

카탈로그는 **여러 캠페인이 반복해서 참조하는 상품, 콘텐츠 정보**에 주로 사용됩니다. 갱신 주기가 분 단위일 필요가 없고, 발송이 외부 API 상태에 영향을 받지 않아야 하는 상황에 좋습니다.

![노티플라이 카탈로그와 커넥티드 콘텐츠의 차이](https://storage.ghost.io/c/71/dc/71dc3c60-dc2f-4009-b189-22017fd0e537/content/images/2026/08/data-src-image-f4762dc8-9429-4d4a-b78c-95dfa1c70379.png)

노티플라이 카탈로그와 커넥티드 콘텐츠의 차이

커넥티드 콘텐츠는 **메시지를 발송하는 그 순간의 실시간 데이터가 필요할 때** 주로 사용됩니다. 상품 재고 현황, 유저별 배송 상태, 예약 가능 시간처럼 미리 저장해 두기 어려운 데이터나 안전하게 다뤄야 하는 정보를 불러올 때 유용합니다.

> 커넥티드 콘텐츠의 자세한 활용법은[ 커넥티드 콘텐츠를 활용한 개인화 마케팅 전략](https://blog.notifly.tech/connected%5Fcontents/) 포스팅에서 확인하실 수 있습니다.

두 기능은 하나의 메시지 안에서 함께 사용될 수도 있습니다. 

**이커머스 배송 알림 시** 상품명과 링크는 카탈로그에서 가져오고 실시간 배송 상태만 커넥티드 콘텐츠로 조회하는 방식이나, **장바구니 리마인드 알림 시** 상품 기본 정보는 카탈로그에서 불러오고 실시간 재고 및 쿠폰 정보는 커넥티드 콘텐츠와 결합하는 방식이 대표적입니다.

---

## **6\. 카탈로그에 무엇을 담고, 어떻게 개인화할까요?**

### 6-1\. 어떤 정보를 담을 것인가

카탈로그는 상품에만 쓰는 기능이 아닙니다. **여러 유저가 함께 보는 대상**이라면 무엇이든 카탈로그 데이터가 될 수 있습니다.

카탈로그 데이터에 담을 열을 고를 땐 **“메시지에 그대로 노출되거나, 링크로 연결될 값인가?”** 를 먼저 생각해 보면 좋습니다.   
대표적인 업종별 카탈로그 데이터 구성 예시는 다음과 같습니다.

<!DOCTYPE html> 

| 업종       | 한 행에 담는 대상  | 함께 담으면 좋은 열                                                      |
| -------- | ----------- | ---------------------------------------------------------------- |
| 이커머스·커머스 | 상품          | name, price, sale\_price, deeplink, category, brand, image\_url  |
| 콘텐츠·미디어  | 아티클, 영상, 강의 | title, deeplink, author, duration, genre, image\_url             |
| 여행·예약    | 숙소, 노선, 클래스 | name, region, min\_price, deeplink, rating, image\_url           |
| 금융·구독    | 상품, 요금제, 혜택 | name, rate, benefit\_summary, deeplink, valid\_until, image\_url |
| 오프라인 매장  | 지점          | store\_name, address, open\_hours, map\_url, phone, image\_url   |
| 프로모션     | 쿠폰, 기획전     | title, discount, banner\_url, deeplink, valid\_until, image\_url |

### 6-2\. 어떻게 활용할 것인가

카탈로그 기능을 사용하면 이벤트가 발생한 시점에 이전 데이터를 그대로 보내는 일이 사라지기 때문에 상품 정보가 자주 바뀌는 서비스에서 특히 유용하게 활용됩니다. 

카탈로그 데이터를 어떻게 CRM 캠페인에 활용할 수 있을지 몇 가지 활용 사례를 살펴보겠습니다.

### **활용 사례 1 : 상품 조회·장바구니 이탈 리마인드**

**1\.** 상품 조회*(product\_viewed)* 나 장바구니(*cart\_item\_added)* 이벤트에는 *item\_id* 만 남깁니다.   
**2\.** 이후 일정 시간 안에 구매하지 않은 유저에게 리마인드 메시지가 발송되도록 유저 여정을 설계합니다.  
**3\.** 리마인드 메시지 작성 시 entry\_event\["item\_id"\] 리퀴드 구문을 활용하면 해당 상품의 카탈로그 데이터가 포함된 메시지가 자동으로 발송됩니다.

만약 장바구니에 제품을 담아둔 후 2시간이 지난 시점에 가격 변동이 있었다면 **"방금 담아두신 상품, 89,000원으로 할인 중이에요!"**처럼 가격 변화 자체를 메시지 소재로 사용할 수 있습니다.

### 활용 사례 2 : 재입고·가격 인하 알림

![상품 재입고 / 가격 인하 알림 메시지 유저여정과 발송 예시](https://storage.ghost.io/c/71/dc/71dc3c60-dc2f-4009-b189-22017fd0e537/content/images/2026/08/data-src-image-35d65b6a-cedf-4337-9bfa-1464a0a680a2.png)

상품 재입고 / 가격 인하 알림 메시지 유저여정과 발송 예시

**1\.** 상품 재입고*(back\_in\_stock)* 나 가격 인하*(price\_dropped)* 이벤트에 *item\_id* 를 담아둡니다.  
**2\.** 해당 이벤트를 시작 조건으로 재입고/할인 알림을 설정한 유저에게 메시지가 발송되도록 유저 여정을 설계합니다.  
**3\.** 알림 메시지 작성 시 entry\_event\["item\_id"\] 리퀴드 구문을 활용하면 해당 상품의 카탈로그 데이터가 포함된 메시지가 자동으로 발송됩니다.

만약 재입고 할인이 시작된 상품이라면 **"담아두신 A 상품이 재입고 되었어요!"**처럼 개인화된 행동 유도 메시지를 발송할 수 있습니다.

💡

****카탈로그의 값이 바뀌었다는 사실만으로 발송이 자동으로 시작되지는 않습니다.**  
이 캠페인에서는 역할 구분이 특히 중요합니다. 카탈로그는 데이터를 보관하고 있을 뿐, 언제 누구에게 메시지를 보낼지 정하는 것은 캠페인과 유저 여정입니다.

### 활용 사례 3 : 콘텐츠·프로모션 추천

**1\.** 추천 로직이 고른 콘텐츠 ID(*content\_id)* 나 프로모션 ID(*offer\_id)*를이벤트 또는 유저 속성에 담아둡니다.  
**2\.** 해당 이벤트나 속성 조건을 기준으로 추천 메시지가 발송되도록 캠페인 혹은 유저 여정을 설계합니다.  
**3\.** 추천 메시지 작성 시 entry\_event\["content\_id"\] 리퀴드 구문을 활용하면 카탈로그에서 해당 콘텐츠의 제목·썸네일·링크·유효기간 데이터가 포함된 메시지가 자동으로 발송됩니다.

만약 추천 시스템이 특정 유저에게 로맨스 영화를 추천하기로 결정했다면 서버는 노티플라이에서 '추천 생성됨(*recommendation\_generated*)'과 같은 이벤트를 발생시키면서 그 이벤트의 세부 정보로 콘텐츠 ID를 담아서 보냅니다.

노티플라이는 카탈로그에서 전달받은 콘텐츠 ID에 해당하는 영화 포스터 이미지와 제목을 가져와서 유저에게 추천 메시지를 발송합니다.

콘텐츠나 프로모션을 추천할 때 처음부터 복잡한 추천 시스템을 구축할 필요는 없습니다. 마케터가 구글 시트에서 '이번 주 추천 콘텐츠' 목록을 직접 관리하고, 캠페인이 그 ID를 참조하게 하는 것으로 시작해 보세요.

---

## 7\. 마무리

다시 처음 질문으로 돌아가 보겠습니다. 그동안 변경된 상품 데이터를 캠페인마다 다시 넣어야 했던 이유는 이벤트마다 모든 데이터를 담아두었기 때문입니다.

카탈로그 기능을 활용하면 이벤트에는 ID만 남기고 자주 바뀌는 정보는 구글 시트 한 곳에서 가볍게 관리할 수 있습니다. 이 데이터 구분만으로도 캠페인 수정과 데이터 중복이 눈에 띄게 줄어듭니다.

효과를 가장 빠르게 확인할 수 있는 '장바구니 이탈'이나 '상품 조회 리마인드' 캠페인부터 시작해 보세요. 시트에 상품 ID, 이름, 가격, 링크를 정리하고 첫 메시지를 연결해 보면 전체 흐름을 빠르게 익힐 수 있습니다.

[![](https://storage.ghost.io/c/71/dc/71dc3c60-dc2f-4009-b189-22017fd0e537/content/images/2025/07/image.png)](https://notifly.tech/ko/contact-sales?ref=blog.notifly.tech)

### 함께 읽어보면 좋은 글

- [유저 조건 개인화로 맞춤 CRM 메시지 보내는 방법](https://blog.notifly.tech/personalized-user-message/)
- [리퀴드 언어로 구현하는 강력한 개인화 메시지](https://blog.notifly.tech/personalization-marketing-using-liquid-messages/)
- [개발 없이 BigQuery 데이터를 활용해 유저 속성 자동 업데이트하기](https://blog.notifly.tech/bigquery-google-sheet-notifly-integration/)