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

PostHog es una plataforma de analítica que ofrece herramientas para rastrear el comportamiento de los usuarios, visualizar el uso del producto y analizar la retención. Con funcionalidades como el seguimiento de eventos, los flujos de usuario y los feature flags, está diseñada para ayudarte a entender mejor tu producto y mejorarlo.
Integrar PostHog con Adapty permite hacer un seguimiento fluido de los eventos relacionados con suscripciones, como inicios de prueba, renovaciones y cancelaciones. Al enviar estos eventos a PostHog, puedes analizar cómo los cambios en las suscripciones afectan al comportamiento de los usuarios, evaluar el rendimiento de los paywalls y obtener información más detallada sobre tus estrategias de monetización, todo dentro de tu flujo de trabajo de analítica habitual.
## Características de la integración \{#integration-characteristics\}

| Característica de la integración | Descripción                                                  |
| -------------------------------- | ------------------------------------------------------------ |
| Frecuencia                       | Tiempo real; es posible que los eventos no aparezcan de inmediato en el dashboard de PostHog. |
| Dirección de los datos           | Los eventos de Adapty se envían desde el servidor de Adapty al servidor de PostHog. |
| Punto de integración de Adapty   | <ul><li> Los SDK de PostHog y Adapty en el código de la aplicación móvil</li><li> El servidor de Adapty</li></ul> |

## Estructura de eventos de PostHog \{#posthog-event-structure\}

Adapty envía los eventos seleccionados a PostHog según lo configurado en la sección **Events names** de la [página de integración de PostHog](https://app.adapty.io/integrations/posthog). Cada evento tiene esta estructura:
```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}}"
  }
}
```

Donde
| **Parámetro**   | **Tipo**             | **Descripción**                                              |
| --------------- | -------------------- | ------------------------------------------------------------ |
| **distinct_id** | String               | Identificador único del usuario (p. ej., `profile.posthog_distinct_user_id`, `customer_user_id` o `profile_id`). |
| **timestamp**   | ISO 8601 fecha y hora | La fecha y hora del evento.                                  |
| **event**       | String               | El nombre del evento tal como lo definiste en la sección Events names de la [configuración de PostHog](https://app.adapty.io/integrations/posthog). |
| **properties**  | Object               | Contiene [properties.$set](posthog#propertiesset-parameters) y todas las [propiedades específicas del evento](messaging#event-properties). Cada propiedad es opcional y no se enviará a PostHog si no está presente. |
### Parámetros de properties.$set

Cada parámetro del objeto `properties.$set` es opcional y no se enviará a PostHog si no está presente.
| **Parámetro**   | **Tipo**             | **Descripción**                                              |
| --------------- | -------------------- | ------------------------------------------------------------ |
| **email**           | String        | Dirección de correo electrónico del usuario.                 |
| **first_name**      | String        | Nombre del usuario.                                          |
| **last_name**       | String        | Apellido del usuario.                                        |
| **birthday**        | String (Date) | Fecha de nacimiento del usuario.                             |
| **gender**          | String        | Género del usuario.                                          |
| **os**              | String        | Sistema operativo del dispositivo del usuario.               |
## Configuración de la integración con PostHog \{#setting-up-posthog-integration\}

1. Abre la página [Integrations -> PostHog](https://app.adapty.io/integrations/posthog) en el Adapty Dashboard y activa el botón.

   
     <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. Inicia sesión en el [PostHog Dashboard](https://posthog.com/).

3. Ve a **Settings -> Project**.
4. En la ventana **Project**, desplázate hacia abajo hasta la sección **Project ID** y copia la **Project API key**.

5. Pega la API key en el campo **Project API key** del Adapty Dashboard. PostHog no tiene un modo Sandbox específico para la integración servidor a servidor.

6. Elige tu **PostHog Deployment**:
| Opción | Descripción |
| ------ | ----------- |
| us/eu | Despliegues de PostHog alojados por defecto. |
| Custom | Para instancias autoalojadas. Introduce la URL de tu instancia en el campo **PostHog Instance URL**. |

7. (Opcional) Si usas un despliegue de PostHog autoalojado, introduce la dirección de tu despliegue en el campo **PostHog Instance URL**.
8. (opcional) Ajusta opciones como **Reporting Proceeds**, **Exclude Historical Events**, **Report User's Currency** y **Send Trial Price**. Consulta [Configuración de la integración](configuration#integration-settings) para más detalles sobre estas opciones.

9. (opcional) También puedes personalizar qué eventos se envían a PostHog en la sección **Events names**. Desactiva los eventos que no necesites o cámbiales el nombre según convenga.

10. Haz clic en **Save** para finalizar la configuración.
## Configuración del SDK \{#sdk-configuration\}

Para habilitar la recepción de datos de atribución desde PostHog, pasa el valor `distinctId` a Adapty tal como se muestra a continuación:

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

<Callout type="note">
Si usas un ID de usuario de terceros como Customer User ID, no lo pases durante `activate()` — es posible que el SDK de terceros aún no lo haya generado. En su lugar, llama primero a `activate()` sin CUID, luego a `setIntegrationIdentifier()`, y después a `identify()` con el 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>

No hay un SDK oficial de PostHog para 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 enviará ahora eventos a PostHog y recibirá atribución de él.