---
title: "Amplitude"
description: "ユーザー行動をより深く把握するために、AmplitudeとAdaptyを連携しましょう。"
---

[Amplitude](https://amplitude.com/) は強力なモバイル解析サービスです。Adaptyと組み合わせることで、イベントをAmplitudeに簡単に送信し、ユーザーの行動を把握して、的確な意思決定を行えます。

Adaptyは、ストアからの[サブスクリプションイベント](events)を一箇所で追跡できる完全なデータセットを提供し、Amplitudeアカウントに送信します。これにより、Amplitude上でユーザーの行動と課金履歴を紐付け、プロダクトの意思決定に役立てることができます。

### Amplitude 連携のセットアップ方法 \{#how-to-set-up-amplitude-integration\}

Adaptyでは、AppleまたはStripeサンドボックス環境、もしくはGoogleテストアカウントからの**本番**イベントと**テスト**イベントに対して、それぞれ個別のフローを設定できます。

- 本番イベントには、AmplitudeダッシュボードのプラットフォームごとのAPIキー（iOS、Android、Stripe各固有のキー）を **Production** フィールドに入力してください。
- テストイベントには、必要に応じて **Sandbox** フィールドを使用してください。

Amplitude連携をセットアップするには：

1. Adapty ダッシュボードで [**Integrations** -> **Amplitude**](https://app.adapty.io/integrations/amplitude) を開きます。

  <img src="/assets/shared/img/3b50552-CleanShot_2023-08-15_at_16.47.102x.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

2. **Amplitude integration** をオンに切り替えて有効化します。

3. 連携フィールドに入力します：

    | フィールド | 説明 |
    | ------------------------------------------ | ------------------------------------------------------------ |
    | **Amplitude iOS/ Android/ Stripe API key** | iOS / Android / Stripe用のAmplitude **API Key** をAdaptyに入力します。Amplitudeの **Project settings** から確認できます。詳しくは [Amplitude ドキュメント](https://amplitude.com/docs/apis/authentication) をご覧ください。まず **Sandbox** キーでテストを行い、成功したら **Production** キーに切り替えてください。 |

    
      <img src="/assets/shared/img/2297782-CleanShot_2023-08-15_at_16.53.512x.webp"
      style={{
        border: '1px solid #727272', /* border width and color */
        width: '700px', /* image width */
        display: 'block', /* for alignment */
        margin: '0 auto' /* center alignment */
      }}
    />
    

4. さらに詳細なカスタマイズのためのオプション設定：

   | パラメータ | 説明 |
   | --------------------------------------- | ------------------------------------------------------------ |
   | **How the revenue data should be sent** | 総収益を送るか、税金と手数料控除後の収益を送るかを選択します。詳細は[ストア手数料と税金](controls-filters-grouping-compare-proceeds#display-gross-or-net-revenue)をご覧ください。 |
   | **Exclude historical events**           | Adapty SDK インストール以前のイベントを除外するか選択します。データの重複を防ぐことができます。たとえば、ユーザーが1月10日にサブスクリプションを開始し、3月6日にAdapty SDKをインストールした場合、Adaptyは3月6日以降のイベントのみを送信します。 |
   | **Send User Attributes**                | 言語設定などのユーザー固有の属性を送信するにはこのオプションを選択します。 |
   | **Always populate user_id**             | Adaptyは自動的に `device_id` を `amplitudeDeviceId` として送信します。`user_id` については、この設定で動作を定義します：<ul><li>**ON**：`amplitudeUserId` または `customer_user_id` が利用できない場合、Adaptyの `profile_id` を送信します。</li><li>**OFF**：いずれのIDも利用できない場合、`user_id` を空のままにします。</li></ul> |

5. 受信したいイベントを選択し、[イベント名をマッピング](amplitude#events-and-tags)します。

6. **Save** をクリックして変更を保存します。

**Save** をクリックすると、AdaptyはAmplitudeへのイベント送信を開始します。

イベントに加えて、Adaptyは[サブスクリプションステータス](subscription-status)とサブスクリプションのプロダクトIDを[Amplitudeユーザープロパティ](https://amplitude.com/docs/data/user-properties-and-events)に送信します。

### イベントとタグ \{#events-and-tags\}

認証情報の下に、AdaptyからAmplitudeに送信できるイベントが3つのグループに分かれて表示されています。必要なものをオンにするだけで使えます。Adaptyが提供するイベントの全リストは[こちら](events)で確認できます。

  <img src="/assets/shared/img/da67694-CleanShot_2023-08-15_at_16.52.352x.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

Adaptyが提供するデフォルトのイベント名を使用することをお勧めします。ただし、必要に応じてイベント名を変更することも可能です。Adaptyはサーバー間連携を使ってAmplitudeにサブスクリプションイベントを送信するため、Amplitudeダッシュボードですべてのサブスクリプションイベントを確認できます。

### SDK の設定 \{#sdk-configuration\}

`setIntegrationIdentifier()` メソッドを使用して `amplitude_device_id` パラメータを設定します。これは連携のセットアップに必須です。

ユーザー登録がある場合は、`amplitude_user_id` も合わせて渡すことができます。

---
no_index: true
---

import Callout from '../../../components/Callout.astro';

<Callout type="note">
サードパーティSDKはユーザーIDを非同期で生成します。`Adapty.activate()` の実行時にIDがまだ準備できていない場合があります。**Customer User ID** がこれらのSDKのいずれかから取得される場合は、IDなしで `Adapty.activate()` を呼び出してください。IDが取得できたら、`setIntegrationIdentifier()` を呼び出し、次にCUIDで `identify()` を呼び出してください。
</Callout>

<Tabs groupId="current-os" queryString>
<TabItem value="Swift" label="iOS (Swift)" default>

**amplitudeDeviceId の設定**

```swift showLineNumbers

do {
    try await Adapty.setIntegrationIdentifier(
        key: "amplitude_device_id", 
        value: Amplitude.instance().deviceId
    )
} catch {
    // handle the error
}
```

**amplitudeUserId の設定**

```swift showLineNumbers

do {
    try await Adapty.setIntegrationIdentifier(
        key: "amplitude_user_id", 
        value: "YOUR_AMPLITUDE_USER_ID"
    )
} catch {
    // handle the error
}
```

</TabItem>
<TabItem value="kotlin" label="Android (Kotlin)" default>

**amplitudeDeviceId の設定**

```kotlin showLineNumbers 
//for Amplitude maintenance SDK (obsolete)
val amplitude = Amplitude.getInstance()
val amplitudeDeviceId = amplitude.getDeviceId()
val amplitudeUserId = amplitude.getUserId()

//for actual Amplitude Kotlin SDK
val amplitude = Amplitude(
    Configuration(
        apiKey = AMPLITUDE_API_KEY,
        context = applicationContext
    )
)
val amplitudeDeviceId = amplitude.store.deviceId

//

Adapty.setIntegrationIdentifier("amplitude_device_id", amplitudeDeviceId) { error ->
    if (error != null) {
        // handle the error
    }
}
```

**amplitudeUserId の設定**

```kotlin showLineNumbers
//for Amplitude maintenance SDK (obsolete)
val amplitude = Amplitude.getInstance()
val amplitudeDeviceId = amplitude.getDeviceId()
val amplitudeUserId = amplitude.getUserId()

//for actual Amplitude Kotlin SDK
val amplitude = Amplitude(
    Configuration(
        apiKey = AMPLITUDE_API_KEY,
        context = applicationContext
    )
)
val amplitudeUserId = amplitude.store.userId

//

Adapty.setIntegrationIdentifier("amplitude_user_id", amplitudeUserId) { error ->
    if (error != null) {
        // handle the error
    }
}
```

</TabItem>
<TabItem value="Flutter" label="Flutter (Dart)" default>

**amplitudeDeviceId の設定**

```javascript showLineNumbers

final Amplitude amplitude = Amplitude.getInstance(instanceName: "YOUR_INSTANCE_NAME");

try {
    await Adapty().setIntegrationIdentifier(
        key: "amplitude_device_id", 
        value: amplitude.getDeviceId(),
    );
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
    // handle the error
}
```

**amplitudeUserId の設定**

```javascript showLineNumbers

final Amplitude amplitude = Amplitude.getInstance(instanceName: "YOUR_INSTANCE_NAME");

try {
    await Adapty().setIntegrationIdentifier(
        key: "amplitude_user_id", 
        value: "YOUR_AMPLITUDE_USER_ID",
    );
} on AdaptyError catch (adaptyError) {
    // handle the error
} catch (e) {
    // handle the error
}
```

</TabItem>
<TabItem value="Unity" label="Unity (C#)" default>

**amplitudeDeviceId の設定**

```csharp showLineNumbers
using AdaptySDK;

Adapty.SetIntegrationIdentifier(
  "amplitude_device_id", 
  amplitude.getDeviceId(), 
  (error) => {
  // handle the error
});
```

**amplitudeUserId の設定**

```csharp showLineNumbers
using AdaptySDK;

Adapty.SetIntegrationIdentifier(
  "amplitude_user_id", 
  "YOUR_AMPLITUDE_USER_ID", 
  (error) => {
  // handle the error
});
```

</TabItem>
<TabItem value="rn" label="React Native (TS)" default>

**amplitudeDeviceId の設定**

```typescript showLineNumbers

try {
  await adapty.setIntegrationIdentifier("amplitude_device_id", deviceId);
} catch (error) {
  // handle `AdaptyError`
}
```

**amplitudeUserId の設定**

```typescript showLineNumbers

try {
  await adapty.setIntegrationIdentifier("amplitude_user_id", userId);
} catch (error) {
  // handle `AdaptyError`
}
```

</TabItem>
</Tabs>

## Amplitude イベント構造 \{#amplitude-event-structure\}

AdaptyはHTTP API v2を介してAmplitudeにイベントを送信します。各イベントの構造は次のとおりです：

```json
{
  "api_key": "your_amplitude_api_key",
  "events": [
    {
      "partner_id": "adapty",
      "event_type": "subscription_renewed",
      "time": 1709294400000,
      "insert_id": "123e4567-e89b-12d3-a456-426614174000",
      "user_id": "user_12345",
      "device_id": "device_12345",
      "platform": "iOS",
      "os_name": "iOS",
      "productId": "yearly.premium.6999",
      "revenue": 9.99,
      "event_properties": {
        "vendor_product_id": "yearly.premium.6999",
        "original_transaction_id": "GPA.3383...",
        "currency": "USD",
        "environment": "Production",
        "store": "app_store"
      },
      "user_properties": {
        "subscription_state": "subscribed",
        "subscription_product": "yearly.premium.6999"
      }
    }
  ]
}
```

各フィールドの説明：

| パラメータ | 型 | 説明 |
|:----------------------------|:-------|:---------------------------------------------------------------------|
| `api_key`                   | String | Amplitude API キー。 |
| `events`                    | Array  | イベントオブジェクトのリスト（Adaptyは1件ずつ送信します）。 |
| `events[].partner_id`       | String | 常に "adapty"。 |
| `events[].event_type`       | String | イベント名（Adaptyイベントからマッピングされたもの）。 |
| `events[].time`             | Long   | イベントのタイムスタンプ（ミリ秒）。 |
| `events[].insert_id`        | String | 一意のイベントID（UUID）。 |
| `events[].user_id`          | String | Amplitude ユーザーIDまたはカスタマーユーザーID。 |
| `events[].device_id`        | String | Amplitude デバイスID。 |
| `events[].platform`         | String | プラットフォーム（例：「iOS」、「Android」）。 |
| `events[].os_name`          | String | OS名。 |
| `events[].productId`        | String | ストアのプロダクトID。 |
| `events[].revenue`          | Float  | 収益額。 |
| `events[].event_properties` | Object | 詳細なイベント属性（利用可能な[イベントフィールド](webhook-event-types-and-fields#for-most-event-types)をすべて含む）。 |
| `events[].user_properties`  | Object | サブスクリプションステータスなどのユーザー属性。 |