---
title: "PostHog"
description: ""
---

PostHog là một nền tảng phân tích cung cấp các công cụ để theo dõi hành vi người dùng, trực quan hóa mức độ sử dụng sản phẩm và phân tích khả năng giữ chân người dùng. Với các tính năng như theo dõi sự kiện, user flows và feature flags, nền tảng này được thiết kế để giúp bạn hiểu rõ hơn và cải thiện sản phẩm của mình.

Tích hợp PostHog với Adapty giúp theo dõi liền mạch các sự kiện liên quan đến gói đăng ký, chẳng hạn như bắt đầu dùng thử, gia hạn và hủy đăng ký. Bằng cách gửi các sự kiện này tới PostHog, bạn có thể phân tích cách các thay đổi gói đăng ký ảnh hưởng đến hành vi người dùng, đánh giá hiệu suất paywall và có được cái nhìn sâu hơn về các chiến lược kiếm tiền — tất cả trong quy trình phân tích hiện có của bạn.

## Đặc điểm tích hợp \{#integration-characteristics\}

| Đặc điểm tích hợp | Mô tả                                                        |
| ------------------ | ------------------------------------------------------------ |
| Lịch trình         | Thời gian thực; các sự kiện có thể không xuất hiện ngay lập tức trên dashboard PostHog. |
| Chiều dữ liệu      | Các sự kiện Adapty được gửi từ máy chủ Adapty tới máy chủ PostHog. |
| Điểm tích hợp Adapty | <ul><li> SDK PostHog và Adapty trong code ứng dụng di động</li><li> Máy chủ Adapty</li></ul> |

## Cấu trúc sự kiện PostHog \{#posthog-event-structure\}

Adapty gửi các sự kiện đã chọn tới PostHog như được cấu hình trong phần **Events names** trên [trang tích hợp PostHog](https://app.adapty.io/integrations/posthog). Mỗi sự kiện có cấu trúc như sau:

```json showLineNumbers
{
  "distinct_id": "john.doe@example.com",
  "timestamp": "2025-01-08T11:06:12+00:00",
  "event": "subscription_started",
  "properties": {
    "$set": {
      "email": "user@example.com",
      "first_name": "John",
      "last_name": "Doe",
      "birthday": "1990-01-01",
      "gender": "male",
      "os": "iOS"
    },
    "timezone": "America/New_York",
    "ip_address": "10.168.1.1",
    "*": "{{other_event_properties}}"
  }
}
```

Trong đó

| **Tham số**     | **Kiểu**             | **Mô tả**                                                    |
| --------------- | -------------------- | ------------------------------------------------------------ |
| **distinct_id** | String               | Mã định danh duy nhất của người dùng (ví dụ: `profile.posthog_distinct_user_id`, `customer_user_id` hoặc `profile_id`). |
| **timestamp**   | ISO 8601 date & time | Ngày và giờ xảy ra sự kiện.                                  |
| **event**       | String               | Tên sự kiện như bạn đã định nghĩa trong phần Events names của [cấu hình PostHog](https://app.adapty.io/integrations/posthog). |
| **properties**  | Object               | Chứa [properties.$set](posthog#propertiesset-parameters) và tất cả [các thuộc tính theo từng sự kiện](messaging#event-properties). Mỗi thuộc tính là tùy chọn và sẽ không được gửi tới PostHog nếu bị thiếu. |

### Các tham số properties.$set \{#propertiesset-parameters\}

Mỗi tham số trong object `properties.$set` là tùy chọn và sẽ không được gửi tới PostHog nếu bị thiếu.

| **Tham số**     | **Kiểu**      | **Mô tả**                                                    |
| --------------- | ------------- | ------------------------------------------------------------ |
| **email**       | String        | Địa chỉ email của người dùng.                                |
| **first_name**  | String        | Tên của người dùng.                                          |
| **last_name**   | String        | Họ của người dùng.                                           |
| **birthday**    | String (Date) | Ngày sinh của người dùng.                                    |
| **gender**      | String        | Giới tính của người dùng.                                    |
| **os**          | String        | Hệ điều hành của thiết bị người dùng.                       |

## Thiết lập tích hợp PostHog \{#setting-up-posthog-integration\}

1. Mở trang [Integrations -> PostHog](https://app.adapty.io/integrations/posthog) trong Adapty Dashboard và bật toggle.

   
     <img src="/assets/shared/img/posthog-on.webp"
     style={{
       border: 'none', /* border width and color */
       width: '700px', /* image width */
       display: 'block', /* for alignment */
       margin: '0 auto' /* center alignment */
     }}
   />
   

2. Đăng nhập vào [PostHog Dashboard](https://posthog.com/).

3. Điều hướng đến **Settings -> Project**.

   
     <img src="/assets/shared/img/posthog-settings.webp"
     style={{
       border: 'none', /* border width and color */
       width: '700px', /* image width */
       display: 'block', /* for alignment */
       margin: '0 auto' /* center alignment */
     }}
   />
   

4. Trong cửa sổ **Project**, cuộn xuống phần **Project ID** và sao chép **Project API key**.

5. Dán API key vào trường **Project API key** trong Adapty Dashboard. PostHog không có chế độ Sandbox riêng cho tích hợp server-to-server.

6. Chọn **PostHog Deployment** của bạn:

   | Tùy chọn | Mô tả                                                        |
   | -------- | ------------------------------------------------------------ |
   | us/eu    | Các deployment mặc định được PostHog lưu trữ.               |
   | Custom   | Dành cho các instance tự lưu trữ. Nhập URL instance của bạn vào trường **PostHog Instance URL**. |

7. (Tùy chọn) Nếu bạn đang dùng deployment PostHog tự lưu trữ, nhập địa chỉ deployment của bạn vào trường **PostHog Instance URL**.

8. (Tùy chọn) Điều chỉnh các cài đặt như **Reporting Proceeds**, **Exclude Historical Events**, **Report User's Currency** và **Send Trial Price**. Xem [Cài đặt tích hợp](configuration#integration-settings) để biết thêm chi tiết về các tùy chọn này.

9. (Tùy chọn) Bạn cũng có thể tùy chỉnh các sự kiện nào được gửi tới PostHog trong phần **Events names**. Tắt các sự kiện không cần thiết hoặc đổi tên chúng theo nhu cầu.

10. Nhấn **Save** để hoàn tất thiết lập.

## Cấu hình SDK \{#sdk-configuration\}

Để bật tính năng nhận dữ liệu attribution từ PostHog, truyền giá trị `distinctId` vào Adapty như sau:

---
no_index: true
---

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

<Callout type="note">
Các SDK bên thứ ba tạo user ID theo cách bất đồng bộ. ID có thể chưa sẵn sàng khi `Adapty.activate()` chạy. Nếu **Customer User ID** của bạn đến từ một trong các SDK này, hãy gọi `Adapty.activate()` mà không truyền ID đó. Khi ID đã có, gọi `setIntegrationIdentifier()`, sau đó gọi `identify()` với CUID.
</Callout>

<Tabs groupId="current-os" queryString>

<TabItem value="swift" label="Swift" default>

```swift showLineNumbers
do {
    let distinctId = PostHogSDK.shared.getDistinctId()

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

</TabItem>

<TabItem value="kotlin" label="Kotlin" default>

```kotlin showLineNumbers
Adapty.setIntegrationIdentifier("posthog_distinct_user_id", PostHog.distinctId()) { error ->
    if (error != null) {
        // handle the error
    }

```

 </TabItem>

<TabItem value="java" label="Java" default>

```java showLineNumbers
Adapty.setIntegrationIdentifier("posthog_distinct_user_id", PostHog.distinctId(), error -> {
    if (error != null) {
        // handle the error
    }
});
```

</TabItem>

<TabItem value="flutter" label="Flutter" default>

```javascript showLineNumbers
try {
    final distinctId = await Posthog().getDistinctId();

    await Adapty().setIntegrationIdentifier(
        key: "posthog_distinct_user_id",
        value: distinctId,
    );
} catch (e) {
    // handle the error
}
```

</TabItem>

<TabItem value="unity" label="Unity" default>

Không có SDK PostHog chính thức cho Unity.

</TabItem>

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

```typescript showLineNumbers

// ...
const posthog = usePostHog();

// ...
try {
  await adapty.setIntegrationIdentifier("posthog_distinct_user_id", posthog.getDistinctId());
} catch (error) {
  // handle `AdaptyError`
}
```

</TabItem>

</Tabs>

Adapty sẽ gửi các sự kiện tới PostHog và nhận attribution từ đó.