# Connected content

Connected content는 [Liquid 템플릿](/ko/product/personalization/liquid-templates/)의 기능으로, 웹 서비스와 같은 외부 소스에서 데이터를 동적으로 검색하여 이메일 또는 푸시 알림 메시지 내에서 직접 사용할 수 있습니다. 이 기능은 지정된 URL에서 JSON 데이터를 가져와 콘텐츠에 활용할 수 있는 변수에 저장하여 실시간 개인화를 가능하게 합니다.

## 주요 사용 사례

- **제품 추천**: 각 사용자에게 맞춤화된 개인화된 제품 목록을 표시합니다.

- **프로모션 코드**: 백엔드 서비스에서 생성된 고유한 프로모션 코드를 삽입합니다.

## 전제 조건

* Connected Content를 사용하려면 **User ID, HWID 또는 사용자 지정 태그**를 기반으로 필요한 데이터(예: 프로모션 코드, 제품 추천)를 생성하고 제공하는 자체 백엔드 서비스가 있어야 합니다. 그런 다음 Pushwoosh는 메시지를 보내기 전에 이 데이터를 가져옵니다.

## 단계별 구현 가이드

<Aside type="caution" icon="setting" title="개발자 지원 필요">
Connected content를 사용하려면 개발팀의 도움이 필요합니다. 시작하려면 이 가이드를 공유하세요.
</Aside>

### 1단계. 백엔드 서비스 설정

백엔드 서비스는 다음을 수행해야 합니다:

* 사용자별 매개변수(예: `userId`)를 포함하는 요청을 수락합니다. Connected Content는 `UserID`, `HWID` 또는 프로젝트에 설정한 모든 사용자 지정 태그를 지원합니다.
* 필요한 데이터와 함께 JSON 응답을 반환합니다. 이 콘텐츠는 메시지에 동적으로 삽입될 수 있습니다.

<Aside type="note" title="작동 방식"> 

백엔드 서비스는 데이터 제공자 역할을 하며, 사용자별 정보와 함께 HTTP 요청에 응답합니다. 

1. Pushwoosh는 백엔드에 요청을 보내 사용자별 식별자를 쿼리 매개변수로 전달합니다.
2. 백엔드는 요청을 처리하고 요청된 데이터를 검색합니다.
3. 백엔드는 JSON 응답을 반환합니다.
4. 메시지를 보내기 전에 Pushwoosh는 백엔드 서비스에서 JSON 응답을 가져와 반환된 값(예: `code`)을 메시지 콘텐츠에 동적으로 사용합니다.

**응답 예시**

```
{ "code": "SPECIALOFFERFORUSER12345" }
```
</Aside>



### 2단계. Pushwoosh에서 Connected content로 프리셋 생성
 
1. [Push](/ko/product/content/push-presets/) 또는 [이메일 콘텐츠 편집기](/ko/product/content/email-content/drag-and-drop-email-editor/)에서 메시지 필드에 Connected Content 구문을 삽입합니다.

**예시** 

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }} :save result %}  
```
**구문 분석**
|  |  |
| ----- | ----- |
| `connected_content` | 지정된 백엔드 URL에서 JSON 데이터를 가져옵니다. |
|    `http://your-backend-url.com` | 필요한 데이터를 JSON 형식으로 반환하는 백엔드 엔드포인트입니다. |
| `userId={{ ${userid} }}` | 사용자 ID를 백엔드로 전달하는 동적 쿼리 매개변수입니다. `connected_content` 안에서는 변수를 `${}`로 감쌉니다. 메시지 텍스트에서는 `${}` 없이 `{{userid}}`로 씁니다. |
| `:save result` | 가져온 JSON 응답을 Liquid 템플릿에서 사용할 수 있도록 result 변수에 저장합니다. |

![Connected Content 구문 삽입](/connectedcontent.webp)

**인증 (선택 사항)**

백엔드 서비스에 인증이 필요한 경우, 안전한 액세스를 보장하기 위해 Connected Content 요청에 API 키 또는 토큰을 포함할 수 있습니다.

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }}&auth=YOUR_API_KEY :save result %}  
```

선택적 `:headers` 매개변수(헤더 이름과 값의 JSON 객체)를 사용하여 인증(또는 기타) 데이터를 HTTP 헤더로 보낼 수도 있습니다.

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }} :headers {"Authorization": "Bearer YOUR_TOKEN", "X-Api-Key": "YOUR_API_KEY"} :save result %}  
```
|  |  |
| ----- | ----- |
| `:headers {...}` | 요청과 함께 전송되는 HTTP 헤더의 JSON 객체입니다(예: `Authorization: Bearer <token>`). |

<Aside type="caution" title="정적 값만">
`${}` 개인화 변수는 URL 내에서만 작동합니다. `:headers` 내의 값은 정적이며 보간되지 않습니다.
</Aside>

<Aside type="danger" title="URL에 자격 증명을 포함하지 마세요">
API 키 및 토큰의 경우 URL 쿼리 매개변수(예: `&auth=YOUR_API_KEY`)보다 `:headers`를 선호하세요. 가져오기에 실패하면 요청 URL이 로그에 기록되어 거기에 있는 키가 노출됩니다. `:headers` 내의 값은 절대 기록되지 않습니다.

Connected content를 사용하려면 계정에 Liquid 콘텐츠 템플릿이 활성화되어 있어야 합니다. 활성화되어 있지 않으면 `connected_content` 태그 전체(내부의 모든 키 포함)가 렌더링되지 않고 모든 수신자에게 리터럴 텍스트로 전송됩니다. 계정에 이 기능이 활성화되어 있는지 확실하지 않은 경우 [Pushwoosh 지원팀](https://help.pushwoosh.com/hc/en-us/requests/new)에 문의하세요.
</Aside>

**Connected content에서 태그 사용**

태그 값을 포함하려면 같은 `{{ ${tag_name} }}` 형식으로 URL에 쿼리 매개변수로 추가합니다. `connected_content` 태그 안에 `{{ tag_name }}`으로 쓰면 값이 비어 있는 상태로 전송됩니다.

```
{% connected_content http://your-backend-url.com?userId={{ ${userid} }}&lang={{ ${Language} }} :save result %} 
```

2. 다음으로, 다음과 같이 **검색된 데이터**를 통합한 메시지 텍스트를 추가합니다:

```

Hey, {{userid}}, grab your personal promo code - {{result.code}} 
```

![**검색된 데이터**와 함께 메시지 텍스트 추가](/connectedcontent-1.webp)

3. 메시지 내용을 최종 확정하고 프리셋 설정을 구성한 후, 캠페인에서 재사용할 수 있도록 저장합니다.

<video src="/connectedcontent-2.webm" title="Connected content로 메시지 보내기" autoplay loop muted playsinline />

### 3단계. 구성된 프리셋을 사용하여 메시지 보내기

이 프리셋을 사용하여 [일회성 푸시](/ko/product/messaging-channels/push-notifications/send-push-notifications/one-time-push/#how-to-send-a-push-notification-using-the-one-time-push-form) 또는 [이메일 양식](/ko/product/messaging-channels/emails/sending-emails/send-one-time-emails/) 또는 [customer journey](/ko/product/customer-journey/pushwoosh-journey-overview/)를 사용하여 메시지를 보냅니다.

<Aside type="caution" title="중요">
서비스가 HTTP 200 OK 이외의 상태를 반환하면 이메일 또는 푸시 알림이 전송되지 않습니다. 이는 필요한 데이터가 성공적으로 검색된 경우에만 통신이 전송되도록 보장합니다.
</Aside>