---
title: "Configurar la integración de webhook"
description: "Configura la integración de webhook en Adapty para automatizar el seguimiento de eventos."
---

La [integración de webhook](webhook) de Adapty consta de los siguientes pasos:

  <img src="/assets/shared/img/webhook-setup.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '300px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

<p> </p>

1. **Configura tu endpoint:**
   1. Asegúrate de que tu servidor pueda procesar las solicitudes de Adapty con la cabecera **Content-Type** establecida en `application/json`.
   2. Configura tu servidor para recibir la solicitud de verificación de Adapty y responder con cualquier estado `2xx` y un cuerpo JSON.
   3. [Gestiona los eventos de suscripción](#subscription-events) una vez verificada la conexión.
2. **Configura y activa la integración de webhook** en el [Adapty Dashboard](#configure-webhook-integration-in-the-adapty-dashboard). También puedes [mapear los eventos de Adapty a nombres de eventos personalizados](#configure-webhook-integration-in-the-adapty-dashboard). Te recomendamos probar en el entorno **Sandbox** antes de pasar a producción.
3. **Adapty envía una solicitud de verificación** a tu servidor.
4. **Tu servidor responde** con un estado `2XX` y un cuerpo JSON.
5. **Una vez que Adapty recibe una respuesta válida, empieza a enviar eventos de suscripción.**

## Configura tu servidor para procesar las solicitudes de Adapty \{#set-up-your-server-to-process-adapty-requests\}

Adapty enviará a tu endpoint de webhook 2 tipos de solicitudes:

1. [Solicitud de verificación](#verification-request): la solicitud inicial para verificar que la conexión está configurada correctamente. Esta solicitud no contendrá ningún evento y se enviará en el momento en que hagas clic en el botón **Save** en la integración de Webhook del Adapty Dashboard. Para confirmar que tu endpoint recibió correctamente la solicitud de verificación, tu endpoint debe responder con la respuesta de verificación.
2. [Evento de suscripción](#subscription-events): una solicitud estándar que el servidor de Adapty envía cada vez que se crea un evento en él. Tu servidor no necesita responder con ninguna respuesta específica. Lo único que necesita el servidor de Adapty es recibir una respuesta HTTP estándar con código 200 si recibe el mensaje correctamente.

### Solicitud de verificación \{#verification-request\}

Después de activar la integración de webhook en el Adapty Dashboard, Adapty enviará una solicitud POST de verificación que contiene un objeto JSON vacío `{}` como cuerpo.

Configura tu endpoint para que tenga la **cabecera Content-Type** como `application/json`, es decir, el endpoint de tu servidor debe esperar que la solicitud de webhook entrante tenga su carga útil formateada como JSON.

Tu servidor debe responder con un código de estado 2xx y enviar cualquier respuesta JSON válida, por ejemplo:

```json title="Json"
{}
```

Una vez que Adapty recibe la respuesta de verificación en el formato correcto y con un código de estado 2xx, tu integración de webhook de Adapty está completamente configurada.

### Eventos de suscripción \{#subscription-events\}

Los eventos de suscripción se envían con la cabecera **Content-Type** establecida en `application/json` y contienen datos del evento en formato JSON. Para conocer los posibles tipos de eventos y las estructuras de solicitud, consulta [Tipos de eventos y campos del webhook](webhook-event-types-and-fields).

## Configurar la integración de webhook en el Adapty Dashboard \{#configure-webhook-integration-in-the-adapty-dashboard\}

En Adapty, puedes configurar flujos separados para los eventos de producción y los eventos de prueba recibidos desde el entorno sandbox de Apple o Stripe, o desde la cuenta de prueba de Google.

Para los eventos de producción, usa el campo **Production endpoint URL** especificando la URL a la que se enviarán los callbacks. Además, configura el campo **Authorization header value for production endpoint**: la cabecera que tu servidor usará para autenticar los eventos de Adapty. Ten en cuenta que usaremos el valor especificado en el campo **Authorization header value for production endpoint** como cabecera `Authorization` exactamente como se proporcionó, sin ningún cambio ni adición.

Para los eventos de prueba, usa los campos **Sandbox endpoint URL** y **Authorization header value for sandbox endpoint** según corresponda.

Para configurar la integración de webhook:

1. Abre [Integrations -> Webhook](https://app.adapty.io/integrations/customwebhook) en tu Adapty Dashboard.

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

2. Activa el interruptor para iniciar la integración.
4. Rellena los campos de la integración:

    | Campo                                                  | Descripción                                                  |
    | ------------------------------------------------------ | ------------------------------------------------------------ |
    | **Production endpoint URL**                            | La URL que Adapty usa para enviar solicitudes HTTP POST de eventos en producción. |
    | **Authorization header value for production endpoint** | <p>La cabecera que tu servidor usará para autenticar las solicitudes de Adapty en producción. Ten en cuenta que usaremos el valor especificado en este campo como cabecera `Authorization` exactamente como se proporcionó, sin ningún cambio ni adición.</p><p></p><p>Aunque no es obligatorio, se recomienda encarecidamente para mayor seguridad.</p> |

    Además, para tus necesidades de prueba en el entorno sandbox, hay otros dos campos disponibles:

    | Campo de prueba                                       | Descripción                                                  |
    | --------------------------------------------------- | ------------------------------------------------------------ |
    | **Sandbox endpoint URL**                            | La URL que Adapty usa para enviar solicitudes HTTP POST de eventos en el entorno sandbox. |
    | **Authorization header value for sandbox endpoint** | <p>La cabecera que tu servidor usará para autenticar las solicitudes de Adapty durante las pruebas en el entorno sandbox. Ten en cuenta que usaremos el valor especificado en este campo como cabecera `Authorization` exactamente como se proporcionó, sin ningún cambio ni adición.</p><p></p><p>Aunque no es obligatorio, se recomienda encarecidamente para mayor seguridad.</p> |

4. (Opcional) Elige los eventos que quieres recibir y mapea sus nombres. Consulta nuestros [Flujos de eventos](event-flows) para ver qué eventos se activan en cada situación.

   Si los IDs de tus eventos difieren de los usados en Adapty, mantén los IDs de tu sistema tal como están y reemplaza los IDs de eventos predeterminados de Adapty con los tuyos en la sección **Events names** de la página [Integrations -> Webhooks](https://app.adapty.io/integrations/customwebhook).
   
   El ID del evento puede ser cualquier cadena; simplemente asegúrate de que el ID del evento en tu servidor de procesamiento de webhooks coincida con el que introdujiste en el Adapty Dashboard. No puedes dejar el ID del evento vacío para los eventos habilitados.

  <img src="/assets/shared/img/86942b8-event_names_renaming.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

5. Los campos y opciones adicionales no son obligatorios; úsalos según sea necesario:

    | Ajuste                             | Descripción                                                  |
    | :--------------------------------- | :----------------------------------------------------------- |
    | **Send Trial Price**               | Cuando está habilitado, Adapty incluirá el precio de la suscripción en los campos `price_local` y `price_usd` para el evento **Trial Started**. |
    | **Exclude Historical Events**      | Elige excluir los eventos que ocurrieron antes de que el usuario instalara la app con el SDK de Adapty. Esto evita la duplicación de eventos y garantiza un reporting preciso. Por ejemplo, si un usuario activó una suscripción mensual el 10 de enero y actualizó la app con el SDK de Adapty el 6 de marzo, Adapty omitirá los eventos anteriores al 6 de marzo y conservará los eventos posteriores. |
    | **Send user attributes**           | Activa esta opción para enviar atributos específicos del usuario, como las preferencias de idioma. Estos atributos aparecerán en el campo `user_attributes`. Consulta [Campos del evento](webhook-event-types-and-fields#event-fields) para más información. |
    | **Send attribution**               | Activa esta opción para incluir información de atribución (por ejemplo, datos de AppsFlyer) en el campo `attributions`. Consulta la sección [Datos de atribución](webhook-event-types-and-fields#attributions) para más detalles. |
    | **Send Play Store purchase token** | Activa esta opción para recibir el token de Play Store necesario para la revalidación de compras, si es necesario. Al activarlo, se añadirá el parámetro `play_store_purchase_token` al evento. Para más detalles sobre su contenido, consulta la sección [Token de compra de Play Store](webhook-event-types-and-fields#play-store-purchase-token). |

6. Recuerda hacer clic en el botón **Save** para confirmar los cambios.

En el momento en que hagas clic en el botón **Save**, Adapty enviará una solicitud de verificación y esperará la respuesta de verificación de tu servidor.

### Elegir los eventos a enviar y mapear los nombres de los eventos \{#choose-events-to-send-and-map-event-names\}

Elige los eventos que quieres recibir en tu servidor activando el interruptor correspondiente. Si los nombres de tus eventos difieren de los usados en Adapty y necesitas mantener tus nombres tal como están, puedes configurar el mapeo reemplazando los nombres de eventos predeterminados de Adapty con los tuyos en la sección **Events names** de la página [Integrations -> Webhooks](https://app.adapty.io/integrations/customwebhook).

  <img src="/assets/shared/img/86942b8-event_names_renaming.webp"
  style={{
    border: '1px solid #727272', /* border width and color */
    width: '700px', /* image width */
    display: 'block', /* for alignment */
    margin: '0 auto' /* center alignment */
  }}
/>

El nombre del evento puede ser cualquier cadena. No puedes dejar los campos vacíos para los eventos habilitados. Si eliminaste accidentalmente el nombre de un evento de Adapty, siempre puedes copiarlo desde el artículo [Eventos para enviar a integraciones de terceros](events).

## Gestionar los eventos de webhook \{#handle-webhook-events\}

Los webhooks suelen entregarse entre 5 y 60 segundos después de que ocurre el evento. Sin embargo, los eventos de cancelación pueden tardar hasta 2 horas en entregarse después de que un usuario cancele su suscripción.
Si el código de estado de respuesta de tu servidor está fuera del rango 200-404, Adapty reintentará enviar el evento hasta 9 veces en 24 horas con retroceso exponencial. Te recomendamos configurar tu webhook para realizar solo una validación básica del cuerpo del evento de Adapty antes de responder. Si tu servidor no puede procesar el evento y no quieres que Adapty reintente, usa un código de estado dentro del rango 200-404. Además, gestiona cualquier tarea que consuma tiempo de forma asíncrona y responde a Adapty rápidamente. Si Adapty no recibe una respuesta en 10 segundos, considerará el intento como fallido y reintentará.