# Stripe 통합

<Aside type="caution" icon="setting" title="개발자 지원 필요">
Stripe Checkout 세션을 생성할 때 메타데이터(journey, user, device)를 전달하려면 개발팀의 도움이 필요합니다. 이 가이드를 개발팀과 공유하세요.
</Aside>

[Stripe](https://stripe.com/)은 결제를 수락하고 구독을 관리할 수 있는 결제 플랫폼입니다. Stripe을 Pushwoosh와 통합하면 [캠페인](/ko/product/customer-journey/pushwoosh-journey-overview/)에서 결제 및 구독을 추적하고, Journey 및 제품별 수익을 분석하고, 결제 이벤트를 기준으로 [사용자를 세분화](/ko/product/audience-data-and-segmentation/segmentation/)하고, [ManyMoney AI](/ko/product/pushwoosh-ai/ai-assistant/)를 사용하여 수익 인사이트를 얻을 수 있습니다.

## 통합 개요

### 통합 유형

**소스:** 결제 및 구독 이벤트가 Stripe에서 Pushwoosh로 전송됩니다.

### 전제 조건

Pushwoosh와 Stripe 통합을 설정하려면 다음을 확인하세요:

* 활성 Pushwoosh 계정이 있어야 합니다.
* Stripe 계정이 있어야 합니다.


### 용어집 (엔티티 이름이 다른 경우 매핑)

아래 표는 Stripe 엔티티가 Pushwoosh에 어떻게 매핑되는지 보여줍니다. 이 매핑은 Checkout 세션을 생성할 때 해당 필드를 메타데이터로 전달하여 이루어집니다 ([메타데이터 구성](#metadata-configuration) 참조).

| Stripe | Pushwoosh |
|--------|-----------|
| 고객 | 메타데이터의 `user_id` (필수), `device_id` (선택 사항) |
| 결제 / 청구 | 이벤트 **StripePaymentSucceeded** (`charge.succeeded`) |
| 인보이스 (결제됨) | 이벤트 **StripeInvoicePaid** (`invoice.paid`) |
| 구독 | **StripeSubscriptionCreated** + **StripeInvoicePaid**의 속성 |
| 제품 / 가격 | 메타데이터 및 이벤트 속성의 `product_id`, `product_name` |
| 캠페인 (journey) | 메타데이터의 `journey_uuids` |

### 동기화된 엔티티

* 결제 이벤트 (일회성 결제, 구독 인보이스)
* 구독 이벤트 (구독 생성, 구독 인보이스 결제)


### 통합은 어떻게 작동하나요?

Stripe 계정을 **Stripe Connect**를 통해 Pushwoosh에 연결하면, Pushwoosh는 Stripe로부터 결제 및 구독 데이터를 수신합니다. Checkout 세션을 생성할 때 메타데이터를 전달하여 각 거래를 캠페인 및 사용자 또는 장치에 연결할 수 있습니다 ([메타데이터 구성](#metadata-configuration) 참조).

Pushwoosh는 [세분화](/ko/product/audience-data-and-segmentation/segmentation/) 및 분석에 사용할 수 있는 이벤트를 생성합니다.

##### 데이터 흐름

1. **설정** → **3rd-party integrations**에서 **Stripe Connect**를 통해 Stripe 계정을 Pushwoosh에 한 번 연결합니다.
2. Checkout 세션을 생성할 때, 나중에 결제를 귀속시킬 수 있도록 메타데이터를 전달합니다 ([메타데이터 구성](#metadata-configuration) 참조).
3. Stripe에서 결제 또는 구독 이벤트(예: 일회성의 경우 `charge.succeeded`, 구독의 경우 `invoice.paid`)가 발생하면 Stripe는 데이터를 Pushwoosh로 보냅니다.
4. Pushwoosh는 해당 이벤트를 생성하고 귀속을 위해 메타데이터를 사용합니다. 이 데이터는 Finance Overview, Audience → Events 및 ManyMoney에 나타납니다.


### 사용 사례
##### 결제 추적
모든 성공적인 결제 및 구독에 대한 정보를 자동으로 수신합니다.

##### 결제를 캠페인에 연결
메타데이터를 전달하여 거래를 특정 [customer journeys](/ko/product/customer-journey/pushwoosh-journey-overview/)와 연결합니다 ([메타데이터 구성](#metadata-configuration) 참조).

##### 수익 분석
캠페인, 제품, 사용자 및 장치별 수입을 확인합니다.

##### 고객 세분화
결제 이벤트를 기반으로 [세그먼트를 생성](/ko/product/audience-data-and-segmentation/segmentation/create-segments/by-events/)합니다.

##### AI 분석
[ManyMoney AI](/ko/product/pushwoosh-ai/ai-assistant/) 어시스턴트는 결제 및 구독 통계를 자동으로 수신하고 이 데이터를 기반으로 결정을 내릴 수 있습니다.

## 통합 설정

### Stripe을 Pushwoosh에 연결

1. Pushwoosh 애플리케이션을 열고(Stripe 계정은 특정 애플리케이션이 아닌 전체 계정에 연결됨) **Settings** → **3rd-party integrations**로 이동합니다.
2. **Stripe** 카드를 찾아 **LOGIN PAGE** 버튼을 클릭합니다.

![3rd-party integrations 섹션과 LOGIN PAGE 버튼이 있는 Stripe 카드가 포함된 설정 페이지](/integrations-stripe-integration-1.webp)

3. Stripe 인증 페이지로 리디렉션됩니다.

![계정 선택 및 Connect 버튼이 있는 Stripe 인증 페이지](/integrations-stripe-integration-2.webp)

4. Stripe 페이지에서 이메일을 입력하고 **Continue**를 클릭합니다.
5. Stripe 계정에 로그인하거나 새 계정을 만듭니다. 여러 계정이 있는 경우 연결하려는 계정을 선택합니다.
6. **Connect**를 클릭하여 확인합니다.
7. 성공적으로 인증되면 Pushwoosh로 다시 리디렉션됩니다. 통합 상태가 **Connected**로 변경됩니다.

![Connected 상태의 Stripe 카드를 보여주는 3rd-party integrations 페이지](/integrations-stripe-integration-3.webp)

### 통합 연결 해제

##### 방법 1. Pushwoosh를 통해

1. **Settings** → **3rd-party integrations**로 이동합니다.
2. **Stripe** 카드를 찾아 **SETTINGS** 버튼을 클릭합니다.
3. 팝업 창에서 **Disconnect** 버튼을 클릭합니다.

![3rd-party integrations의 Disconnect 버튼이 있는 Stripe 카드 SETTINGS 팝업](/integrations-stripe-integration-4.webp)


##### 방법 2. Stripe 대시보드를 통해

1. [Stripe 대시보드](https://dashboard.stripe.com)에 로그인합니다.
2. **Settings** → **Team and security** → **Installed apps**로 이동합니다.
3. **Connect Extensions** 섹션에서 애플리케이션을 찾습니다.

![Stripe 대시보드 설정, 팀 및 보안, 설치된 앱, Connect Extensions 섹션](/integrations-stripe-integration-5.webp)

Stripe를 통해 연결을 해제하면 Pushwoosh는 자동으로 알림을 받고 통합을 제거합니다.

## 메타데이터 구성

Stripe는 결제 이벤트를 Pushwoosh로 보내지만, 추가 데이터 없이는 Pushwoosh가 어떤 캠페인이나 어떤 사용자의 결제인지 알 수 없습니다. Checkout 세션 생성 시 메타데이터(캠페인 ID, 사용자 또는 장치 ID, 제품)를 전달하면 각 결제가 올바른 Journey와 사용자에게 귀속됩니다.

그러면 Finance Overview에서 캠페인별 수익을 보고, 결제자별로 세그먼트를 구축하고, 올바른 귀속으로 ManyMoney를 사용할 수 있습니다.

### 사용 가능한 메타데이터 필드

| 필드 | 설명 | 필수 | 예시 |
|-------|-------------|----------|---------|
| `journey_uuids` | 세미콜론으로 구분된 캠페인 (journey) ID | 아니요 | `bfab4bc0-b0a5-414b-befc-4aaddc429b0e;a2bff710-6b49-44d1-96a7-3232feeca6e9` |
| `user_id` | 사용자 식별자. 이벤트 수집 및 `device_id` 적용에 필요합니다 | 예 | `user_12345` 또는 `email@example.com` |
| `device_id` | 장치 하드웨어 ID (HWID). | 아니요 | `hwid_abc123` |
| `product_id` | 제품 ID | 아니요 | `prod_premium` |
| `product_name` | 제품 이름 | 아니요 | `Premium Plan` |

<Aside type="caution" title="중요">

- `user_id`가 없으면 이벤트가 수집되지 않고 `device_id`는 무시됩니다. 포괄적인 분석을 위해 `journey_uuids`와 `device_id`도 제공하세요.

- `journey_uuids`는 선택 사항이며 메타데이터를 통해서만 설정할 수 있습니다. Stripe는 캠페인이나 Journey 데이터를 제공하지 않으므로, 수익을 Journey에 귀속시키려면 Checkout 세션을 생성할 때 전달해야 합니다.

- `product_id`와 `product_name`은 선택 사항입니다. Pushwoosh는 메타데이터를 먼저 사용합니다. 메타데이터에 둘 중 하나가 없으면 Stripe에서 가능한 경우 가져옵니다. 두 소스 모두에 값이 없으면 필드는 저장되지 않습니다.

</Aside>

### Checkout 세션을 통해 메타데이터 전달

메타데이터는 결제 유형에 따라 Checkout 세션을 생성할 때 전달됩니다:

| 결제 유형 | 매개변수 | Stripe 이벤트 |
|--------------|-----------|--------------|
| 일회성 결제 (`mode=payment`) | `payment_intent_data[metadata]` | `charge.succeeded` |
| 구독 (`mode=subscription`) | `subscription_data[metadata]` | `invoice.paid` |

### 처리 중 메타데이터 우선순위

**구독의 경우** (`invoice.paid` 이벤트):

```text
인보이스 메타데이터 → 비어 있는 경우 → 구독 메타데이터
```

**일회성 결제의 경우** (`charge.succeeded` 이벤트):

```text
청구 메타데이터 (payment_intent_data에서)
```

## Stripe API를 통해 체크아웃 세션 생성 (curl)

##### 일회성 결제 (`mode=payment`)

```bash
curl https://api.stripe.com/v1/checkout/sessions \
  -u sk_live_YOUR_SECRET_KEY: \
  -d "mode=payment" \
  -d "success_url=https://example.com/success" \
  -d "cancel_url=https://example.com/cancel" \
  -d "line_items[0][price]=price_1234567890" \
  -d "line_items[0][quantity]=1" \
  -d "payment_intent_data[metadata][journey_uuids]=bfab4bc0-b0a5-414b-befc-4aaddc429b0e" \
  -d "payment_intent_data[metadata][user_id]=user_12345" \
  -d "payment_intent_data[metadata][device_id]=hwid_abc123" \
  -d "payment_intent_data[metadata][product_id]=prod_premium" \
  -d "payment_intent_data[metadata][product_name]=Premium Plan"
```

##### 구독 (`mode=subscription`)

```bash
curl https://api.stripe.com/v1/checkout/sessions \
  -u sk_live_YOUR_SECRET_KEY: \
  -d "mode=subscription" \
  -d "success_url=https://example.com/success" \
  -d "cancel_url=https://example.com/cancel" \
  -d "line_items[0][price]=price_monthly_premium" \
  -d "line_items[0][quantity]=1" \
  -d "subscription_data[metadata][journey_uuids]=bfab4bc0-b0a5-414b-befc-4aaddc429b0e" \
  -d "subscription_data[metadata][user_id]=user_12345" \
  -d "subscription_data[metadata][device_id]=hwid_abc123" \
  -d "subscription_data[metadata][product_name]=Monthly Premium"
```

## 데이터 보기

통합이 성공적으로 완료되면 [Dashboards](/ko/product/statistics-and-analytics/dashboards/) 섹션에 새로운 **Finance Overview** 대시보드가 나타납니다. 여기에서 캠페인(journey)별로 분류된 총 수익 및 신규 구독 통계를 볼 수 있습니다.

![캠페인별 총 수익 및 신규 구독이 포함된 통계의 Finance Overview 대시보드](/integrations-stripe-integration-6.webp)

자세한 정보는 Stripe 대시보드를 방문하세요.

## 결제 기반 세그먼트 생성

Stripe 이벤트를 사용하여 사용자 세그먼트를 생성합니다:

1. **Audience** → **Segments**를 엽니다.
2. **Create Segment** → **Build Segment**를 클릭합니다.
3. **Add filter by**에서 **Event**를 클릭합니다.
4. 드롭다운에서 Stripe 이벤트를 선택합니다 (사용 가능한 이벤트는 아래 표 참조).
<Aside type="note">
Stripe 이벤트는 통합이 연결되고 결제 데이터가 수신된 후 목록에 나타납니다.
</Aside>

5. 조건 설정: 이벤트가 발생한 횟수와 기간(예: 지난 30일 동안, 날짜 사이).
6. 선택적으로 이벤트 속성으로 세그먼트를 좁힙니다. 아래 표는 각 이벤트에 사용할 수 있는 속성을 나열합니다.

| 이벤트 | 설명 | 속성 |
|-------|-------------|------------|
| `StripePaymentSucceeded` | 성공적인 결제 | __amount, __currency, invoice_id, journey_uuids, product_id, product_name, stripe_customer_id, subscription_id |
| `StripeInvoicePaid` | 구독 인보이스 결제됨 | __amount, __currency, journey_uuids, product_id, product_name, stripe_customer_id, transaction_id, transaction_type |
| `StripeSubscriptionCreated` | 구독 생성됨 | __amount, __currency, interval, journey_uuids, product_id, product_name, status, stripe_customer_id, subscription_id |

![Create Segment 및 Build Segment 옵션이 있는 Audience Segments 페이지](/integrations-stripe-integration-7.webp)

7. 더 많은 이벤트를 추가하려면 다른 이벤트 필터를 추가하고 조건 사이에 연산자(AND 또는 OR)를 선택합니다.

[세그먼트 생성에 대해 자세히 알아보기](/ko/product/audience-data-and-segmentation/segmentation/create-segments/by-events/).

<Aside type="tip">
`StripePaymentSucceeded` (`__amount`, `__currency`, `product_id`) 또는 `StripeInvoicePaid` (`__amount`, `__currency`, `transaction_id`, `product_id`)를 [전환 이벤트](/ko/product/audience-data-and-segmentation/events/conversion-events/)의 소스로 매핑하여 Stripe 수익을 RFM 세분화, Journey 귀속 및 ManyMoney AI에 다른 수익 소스와 함께 가져올 수도 있습니다.
</Aside>

## ManyMoney AI 어시스턴트

Stripe 통합이 성공적으로 완료되면 [**ManyMoney**](/ko/product/pushwoosh-ai/ai-assistant/) AI 어시스턴트가 자동으로 결제 및 구독 통계에 접근할 수 있게 됩니다.

ManyMoney는 대시보드 인터페이스에서 사용할 수 있습니다. Stripe를 연결하면 결제 데이터가 자동으로 분석에 사용 가능해집니다. 추가 구성은 필요하지 않습니다.

### ManyMoney가 할 수 있는 일

- **수익 분석:** 수입, 전환 및 캠페인 효과에 대한 질문에 답변합니다.
- **기간 비교:** 다른 시간 간격에 걸친 결제 및 구독 동향을 보여줍니다.
- **트렌드 식별:** 성장 및 감소하는 제품 및 고객 세그먼트를 감지합니다.
- **권장 사항 제공:** 결제 데이터를 기반으로 최적화를 제안합니다.

<Aside type="tip" title="프롬프트 예시">

- 지난달 캠페인에서 발생한 수익은 얼마인가요?
- 1월과 2월의 구독 전환율을 비교해 주세요.
- 환불 통계를 보여주세요.

</Aside>