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

PostHog — это аналитическая платформа с инструментами для отслеживания поведения пользователей, визуализации использования продукта и анализа удержания. Благодаря функциям отслеживания событий, пользовательских потоков и feature flags она помогает лучше понимать ваш продукт и улучшать его.

Интеграция PostHog с Adapty позволяет без лишних усилий отслеживать события, связанные с подписками: старт триала, продления, отмены. Отправляя эти события в PostHog, вы можете анализировать, как изменения в подписках влияют на поведение пользователей, оценивать эффективность пейволов и глубже понимать свои стратегии монетизации — всё в рамках уже существующего аналитического рабочего процесса.

## Характеристики интеграции \{#integration-characteristics\}

| Характеристика интеграции | Описание                                                     |
| ------------------------- | ------------------------------------------------------------ |
| Расписание                | В реальном времени; события могут появляться на дашборде PostHog не сразу. |
| Направление данных        | События Adapty отправляются с сервера Adapty на сервер PostHog. |
| Точка интеграции Adapty   | <ul><li>SDK PostHog и Adapty в коде мобильного приложения</li><li>Сервер Adapty</li></ul> |

## Структура событий PostHog \{#posthog-event-structure\}

Adapty отправляет выбранные события в PostHog в соответствии с настройками в разделе **Events names** на [странице интеграции PostHog](https://app.adapty.io/integrations/posthog). Каждое событие имеет следующую структуру:

```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}}"
  }
}
```

Где

| **Параметр**    | **Тип**                  | **Описание**                                                 |
| --------------- | ------------------------ | ------------------------------------------------------------ |
| **distinct_id** | String                   | Уникальный идентификатор пользователя (например, `profile.posthog_distinct_user_id`, `customer_user_id` или `profile_id`). |
| **timestamp**   | Дата и время ISO 8601    | Дата и время события.                                        |
| **event**       | String                   | Название события, как вы его задали в разделе Events names в [настройках PostHog](https://app.adapty.io/integrations/posthog). |
| **properties**  | Object                   | Содержит [properties.$set](posthog#propertiesset-parameters) и все [специфичные для события свойства](messaging#event-properties). Каждое свойство опционально и не будет отправлено в PostHog, если отсутствует. |

### Параметры properties.$set \{#propertiesset-parameters\}

Каждый параметр объекта `properties.$set` является опциональным и не будет отправлен в PostHog, если отсутствует.

| **Параметр**    | **Тип**         | **Описание**                              |
| --------------- | --------------- | ----------------------------------------- |
| **email**       | String          | Адрес электронной почты пользователя.     |
| **first_name**  | String          | Имя пользователя.                         |
| **last_name**   | String          | Фамилия пользователя.                     |
| **birthday**    | String (Date)   | Дата рождения пользователя.               |
| **gender**      | String          | Пол пользователя.                         |
| **os**          | String          | Операционная система устройства.          |

## Настройка интеграции с PostHog \{#setting-up-posthog-integration\}

1. Откройте страницу [Integrations -> PostHog](https://app.adapty.io/integrations/posthog) в дашборде Adapty и включите переключатель.

   
     <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. Войдите в [дашборд PostHog](https://posthog.com/).

3. Перейдите в **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. В окне **Project** прокрутите вниз до раздела **Project ID** и скопируйте **Project API key**.

5. Вставьте API-ключ в поле **Project API key** в дашборде Adapty. У PostHog нет специального режима Sandbox для серверного взаимодействия.

6. Выберите **PostHog Deployment**:

   | Опция  | Описание                                                     |
   | ------ | ------------------------------------------------------------ |
   | us/eu  | Дефолтные развёртывания, размещённые PostHog.                |
   | Custom | Для self-hosted инстансов. Введите URL вашего инстанса в поле **PostHog Instance URL**. |

7. (опционально) Если вы используете self-hosted развёртывание PostHog, введите адрес вашего развёртывания в поле **PostHog Instance URL**.

8. (опционально) При необходимости настройте параметры **Reporting Proceeds**, **Exclude Historical Events**, **Report User's Currency** и **Send Trial Price**. Подробнее об этих опциях читайте в разделе [Настройки интеграции](configuration#integration-settings).

9. (опционально) Вы также можете настроить, какие события отправляются в PostHog, в разделе **Events names**. Отключите ненужные события или переименуйте их по необходимости.

10. Нажмите **Save**, чтобы завершить настройку.

## Настройка SDK \{#sdk-configuration\}

Чтобы получать данные атрибуции из PostHog, передайте значение `distinctId` в Adapty, как показано ниже:

---
no_index: true
---
import Callout from '../../../components/Callout.astro';

<Callout type="note">
Если вы используете сторонний user ID в качестве Customer User ID, не передавайте его во время `activate()` — сторонний SDK может ещё не успеть его сгенерировать. Вместо этого сначала вызовите `activate()` без CUID, затем `setIntegrationIdentifier()`, а потом `identify()` с 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> 

Официального SDK PostHog для 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 будет отправлять события в PostHog и получать из него данные атрибуции.