# Uso de los datos de respuesta de webhooks en su journey

## Resumen

Cuando [mapea valores de una respuesta de webhook](/es/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables), Pushwoosh los almacena como variables que puede usar más adelante en el journey, en cualquier lugar donde de otro modo usaría un [atributo de Evento](/es/product/audience-data-and-segmentation/events/#2-set-attributes).

<Aside type="note">
Para agregar un elemento **Webhook** y configurar el **Mapeo de respuesta**, consulte [Webhook](/es/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables).
</Aside>

## Guardar un valor de webhook como una Etiqueta con Actualizar perfil de usuario

Un [**Webhook**](/es/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables) puede devolver datos de un sistema externo, como un ID de usuario de CRM o el estado de una suscripción, que Pushwoosh aún no almacena en el perfil del usuario. [**Actualizar perfil de usuario**](/es/product/customer-journey/journey-elements/flow-controls/update-user-profile/#use-a-value-from-a-webhook-response) guarda los valores mapeados como [Etiquetas](/es/product/audience-data-and-segmentation/user-data-tags/tags/) para que pueda usarlos en [segmentos](/es/product/audience-data-and-segmentation/segmentation/), [contenido dinámico](/es/product/personalization/dynamic-content/) y en pasos posteriores del journey.

### Ejemplo: guardar un ID de usuario de CRM como una Etiqueta

Un nuevo usuario se registra en su aplicación y el journey crea un registro coincidente en su CRM. Guardar el ID de usuario de CRM devuelto como una Etiqueta le permite hacer referencia o actualizar el mismo registro de CRM más tarde, por ejemplo, desde otro journey o una llamada de Webhook de seguimiento, en lugar de crear un registro duplicado cada vez que el usuario vuelve a entrar en el journey.

**Flujo del journey:** Entrada basada en disparadores → Webhook → Actualizar perfil de usuario → Salida

1. Cree un journey con **Entrada basada en disparadores** en el evento `SignUp`.
2. Agregue un elemento **Webhook** después del paso de entrada. Asígnele un nombre (por ejemplo, `Create user in CRM`) y establezca la URL de la solicitud en su punto final de creación de usuarios de CRM.
3. En **Mapeo de respuesta**, establezca **Path** en el campo de ID de la respuesta (por ejemplo, `data.user.id`) y **Atributo** en `crm_user_id`.

<img src="/journey-elements-webhook-response-data-1.webp" alt="Mapeo de respuesta de webhook con Path data.user.id y Atributo crm_user_id" />

4. Agregue un elemento **Actualizar perfil de usuario** después del paso de **Webhook**.

5. En **Valor de Etiqueta Dinámico**, haga clic en **+ Valor Dinámico**. En **Etiqueta**, seleccione la Etiqueta que almacena el ID de CRM (créela con antelación si es necesario). En **Evento**, seleccione el paso del webhook por el nombre que le dio (`Create user in CRM`). En **Valor Dinámico**, seleccione `crm_user_id`.
<img src="/journey-elements-webhook-response-data-2.webp" alt="Valor de Etiqueta Dinámico con Etiqueta para ID de CRM, paso de Evento Webhook y Valor Dinámico crm_user_id" />
6. Agregue **Salida** al final de la rama.
<img src="/journey-elements-webhook-response-data-3.webp" alt="Rama del journey que termina con Salida después del paso Actualizar perfil de usuario" />

<Aside type="caution">
Si falta el valor del webhook para un usuario (la respuesta no era JSON, el **Path** no se resolvió o la llamada falló), Pushwoosh omite esa actualización de la Etiqueta. La Etiqueta mantiene su valor anterior o permanece sin establecer, y el journey continúa sin errores en este paso. Ejecute [**Probar webhook**](/es/product/customer-journey/journey-elements/channels/webhook/#test-the-webhook) antes del lanzamiento para confirmar su mapeo. [Obtenga más información](/es/product/customer-journey/journey-elements/flow-controls/update-user-profile/#use-a-value-from-a-webhook-response).
</Aside> 

## Programar un retraso a partir de un valor de webhook con Retraso de tiempo

Las fechas de visita, los plazos de renovación y las ventanas de entrega a menudo se encuentran en un sistema externo de reservas o facturación. Después de que un [**Webhook**](/es/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables) mapea la fecha de la respuesta de la API, [**Retraso de tiempo**](/es/product/customer-journey/journey-elements/flow-controls/time-delay/#use-a-date-from-a-webhook-response) puede pausar el journey hasta ese momento, por ejemplo, 2 días antes de una cita, para que el siguiente mensaje se envíe a tiempo.

### Ejemplo: programar un recordatorio a partir de una fecha en la respuesta

Un usuario reserva una cita en su aplicación. El journey obtiene la fecha de la visita de su sistema de reservas y envía un recordatorio push 2 días antes de la visita.


1. Cree un journey con **Entrada basada en disparadores** en el evento `AppointmentBooked`.
2. Agregue un elemento **Webhook** después del paso de entrada. Asígnele un nombre (por ejemplo, `Get appointment details`) y establezca la URL de la solicitud en la API de su sistema de reservas.
3. En **Mapeo de respuesta**, establezca **Path** en el campo de fecha de la respuesta (por ejemplo, `appointment.date`) y **Atributo** en `visit_date`.
<img src="/journey-elements-webhook-response-data-4.webp" alt="Paso de Webhook con mapeo de respuesta para appointment.date a visit_date" />
4. Agregue un elemento **Retraso de tiempo** después del paso de **Webhook**. Seleccione **Basado en datos de usuario/evento**, establezca **Obtener fecha de** en **Evento**, establezca **Evento** en el paso del webhook por el nombre que le dio (`Get appointment details`), establezca **Valor del evento** en `visit_date` y establezca el retraso en **Antes de** `2` **Días**.
<img src="/journey-elements-webhook-response-data-5.webp" alt="Retraso de tiempo configurado a partir de visit_date del webhook con un desfase de 2 días antes" />
5. Si los usuarios pueden reservar con menos de 2 días de antelación a la visita, habilite **Dividir en ramas si la fecha está en el pasado o está vacía** en el elemento **Retraso de tiempo**. Esto crea dos ramas, **En el pasado** y **En el futuro**. Consulte [Dividir ramas cuando la fecha está en el pasado o está vacía](/es/product/customer-journey/journey-elements/flow-controls/time-delay/#split-branches-when-the-date-is-in-the-past-or-empty).
6. Agregue un paso de **Push** con su mensaje de recordatorio. Si la división está habilitada, agregue este **Push** en ambas ramas: **En el pasado** (enviar inmediatamente) y **En el futuro** (después de **Retraso de tiempo**).
7. Agregue **Salida** al final de cada rama.
<img src="/journey-elements-webhook-response-data-6.webp" alt="Retraso de tiempo dividido en ramas En el pasado y En el futuro, cada una con pasos de Push y Salida" />

<Aside type="caution">
Si el valor mapeado falta o no es una fecha válida, el usuario sale del journey con un error en este paso. 

Si la visita es en menos de 2 días, el objetivo de **Antes de** `2` **Días** ya está en el pasado cuando el usuario llega a **Retraso de tiempo**, y el usuario abandona el journey sin errores y sin recordatorio a menos que habilite **Dividir en ramas si la fecha está en el pasado o está vacía**. 

A diferencia de [**Actualizar perfil de usuario**](/es/product/customer-journey/journey-elements/flow-controls/update-user-profile/#use-a-value-from-a-webhook-response), que deja la Etiqueta sin cambios y continúa, **Retraso de tiempo** detiene al usuario cuando la fecha falta, no es válida o está en el pasado (sin división de ramas).
Asegúrese de que su webhook devuelva de manera fiable una fecha en un [formato compatible](/es/product/customer-journey/journey-elements/flow-controls/time-delay/#delay-based-on-user-or-event-data). Ejecute [**Probar webhook**](/es/product/customer-journey/journey-elements/channels/webhook/#test-the-webhook) antes del lanzamiento. [Obtenga más información](/es/product/customer-journey/journey-elements/flow-controls/time-delay/#use-a-date-from-a-webhook-response).
</Aside>

## Aspectos a tener en cuenta

* **Sintaxis de Path:** use una ruta separada por puntos (por ejemplo, `data.user.id`). No se admiten comodines ni filtros. Consulte [Mapeo de respuesta de Webhook](/es/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables) para obtener más detalles.
* **Tamaño de la respuesta:** las respuestas de más de 64 KB no se procesan para el mapeo.
* **Pruebas:** ejecute [**Probar webhook**](/es/product/customer-journey/journey-elements/channels/webhook/#test-the-webhook) en el elemento **Webhook** antes de usar los valores mapeados en un journey en vivo.