# Usando dados de resposta de webhook em sua jornada

## Visão geral

Quando você [mapeia valores de uma resposta de webhook](/pt/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables), o Pushwoosh os armazena como variáveis que você pode usar mais tarde na jornada, em qualquer lugar que você usaria um [atributo de Evento](/pt/product/audience-data-and-segmentation/events/#2-set-attributes).

<Aside type="note">
Para adicionar um elemento **Webhook** e configurar o **Mapeamento de resposta**, consulte [Webhook](/pt/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables).
</Aside>

## Salvar um valor de webhook como uma Tag com Atualizar perfil do usuário

Um [**Webhook**](/pt/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables) pode retornar dados de um sistema externo, como um ID de usuário de CRM ou status de assinatura, que o Pushwoosh ainda não armazena no perfil do usuário. [**Atualizar perfil do usuário**](/pt/product/customer-journey/journey-elements/flow-controls/update-user-profile/#use-a-value-from-a-webhook-response) salva valores mapeados como [Tags](/pt/product/audience-data-and-segmentation/user-data-tags/tags/) para que você possa usá-los em [segmentos](/pt/product/audience-data-and-segmentation/segmentation/), [conteúdo dinâmico](/pt/product/personalization/dynamic-content/) e etapas posteriores da jornada.

### Exemplo: salvar um ID de usuário do CRM como uma Tag

Um novo usuário se inscreve em seu aplicativo, e a jornada cria um registro correspondente em seu CRM. Salvar o ID de usuário do CRM retornado como uma Tag permite que você referencie ou atualize o mesmo registro do CRM mais tarde, por exemplo, de outra jornada ou de uma chamada de Webhook de acompanhamento, em vez de criar um registro duplicado cada vez que o usuário reentra na jornada.

**Fluxo da jornada:** Entrada baseada em gatilho → Webhook → Atualizar perfil do usuário → Sair

1. Crie uma jornada com **Entrada baseada em gatilho** no evento `SignUp`.
2. Adicione um elemento **Webhook** após a etapa de entrada. Dê um nome a ele (por exemplo, `Criar usuário no CRM`) e defina a URL da solicitação para o seu endpoint de criação de usuário do CRM.
3. Em **Mapeamento de resposta**, defina **Caminho** para o campo de ID na resposta (por exemplo, `data.user.id`) e **Atributo** para `crm_user_id`.

<img src="/journey-elements-webhook-response-data-1.webp" alt="Mapeamento de resposta de webhook com Caminho data.user.id e Atributo crm_user_id" />

4. Adicione um elemento **Atualizar perfil do usuário** após a etapa de **Webhook**.

5. Em **Valor de Tag Dinâmico**, clique em **+ Valor Dinâmico**. Em **Tag**, selecione a Tag que armazena o ID do CRM (crie-a com antecedência, se necessário). Em **Evento**, selecione a etapa de webhook pelo nome que você deu a ela (`Criar usuário no CRM`). Em **Valor Dinâmico**, selecione `crm_user_id`.
<img src="/journey-elements-webhook-response-data-2.webp" alt="Valor de Tag Dinâmico com Tag para ID do CRM, etapa de Webhook do Evento e Valor Dinâmico crm_user_id" />
6. Adicione **Sair** no final da ramificação.
<img src="/journey-elements-webhook-response-data-3.webp" alt="Ramificação da jornada terminando com Sair após a etapa Atualizar perfil do usuário" />

<Aside type="caution">
Se o valor do webhook estiver ausente para um usuário (a resposta não foi JSON, o **Caminho** não foi resolvido ou a chamada falhou), o Pushwoosh pula essa atualização de Tag. A Tag mantém seu valor anterior ou permanece não definida, e a jornada continua sem erro nesta etapa. Execute [**Testar webhook**](/pt/product/customer-journey/journey-elements/channels/webhook/#test-the-webhook) antes do lançamento para confirmar seu mapeamento. [Saiba mais](/pt/product/customer-journey/journey-elements/flow-controls/update-user-profile/#use-a-value-from-a-webhook-response).
</Aside> 

## Agendar um atraso a partir de um valor de webhook com Atraso de tempo

Datas de visita, prazos de renovação e janelas de entrega geralmente residem em um sistema externo de agendamento ou faturamento. Depois que um [**Webhook**](/pt/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables) mapeia a data da resposta da API, o [**Atraso de tempo**](/pt/product/customer-journey/journey-elements/flow-controls/time-delay/#use-a-date-from-a-webhook-response) pode pausar a jornada até aquele momento, por exemplo, 2 dias antes de um compromisso, para que a próxima mensagem seja enviada na hora certa.

### Exemplo: agendar um lembrete a partir de uma data na resposta

Um usuário marca um compromisso em seu aplicativo. A jornada busca a data da visita em seu sistema de agendamento e envia um lembrete por push 2 dias antes da visita.


1. Crie uma jornada com **Entrada baseada em gatilho** no evento `AppointmentBooked`.
2. Adicione um elemento **Webhook** após a etapa de entrada. Dê um nome a ele (por exemplo, `Obter detalhes do compromisso`) e defina a URL da solicitação para a API do seu sistema de agendamento.
3. Em **Mapeamento de resposta**, defina **Caminho** para o campo de data na resposta (por exemplo, `appointment.date`) e **Atributo** para `visit_date`.
<img src="/journey-elements-webhook-response-data-4.webp" alt="Etapa de Webhook com mapeamento de resposta para appointment.date para visit_date" />
4. Adicione um elemento **Atraso de tempo** após a etapa de **Webhook**. Selecione **Com base nos dados do usuário/evento**, defina **Obter data de** para **Evento**, defina **Evento** para a etapa de webhook pelo nome que você deu a ela (`Obter detalhes do compromisso`), defina **Valor do evento** para `visit_date` e defina o atraso para **Antes** de `2` **Dias**.
<img src="/journey-elements-webhook-response-data-5.webp" alt="Atraso de tempo configurado a partir de visit_date do webhook com um deslocamento de 2 dias antes" />
5. Se os usuários puderem agendar com menos de 2 dias de antecedência da visita, habilite **Dividir em ramificações se a data estiver no passado ou vazia** no elemento **Atraso de tempo**. Isso cria duas ramificações, **No passado** e **No futuro**. Consulte [Dividir ramificações quando a data está no passado ou vazia](/pt/product/customer-journey/journey-elements/flow-controls/time-delay/#split-branches-when-the-date-is-in-the-past-or-empty).
6. Adicione uma etapa de **Push** com sua mensagem de lembrete. Se a divisão estiver habilitada, adicione este **Push** em ambas as ramificações: **No passado** (enviar imediatamente) e **No futuro** (após o **Atraso de tempo**).
7. Adicione **Sair** no final de cada ramificação.
<img src="/journey-elements-webhook-response-data-6.webp" alt="Atraso de tempo dividido em ramificações No passado e No futuro, cada uma com etapas de Push e Sair" />

<Aside type="caution">
Se o valor mapeado estiver ausente ou não for uma data válida, o usuário sai da jornada com um erro nesta etapa.

Se a visita for em menos de 2 dias, o alvo de **Antes** de `2` **Dias** já está no passado quando o usuário chega ao **Atraso de tempo**, e o usuário deixa a jornada sem erro e sem lembrete, a menos que você habilite **Dividir em ramificações se a data estiver no passado ou vazia**.

Ao contrário de [**Atualizar perfil do usuário**](/pt/product/customer-journey/journey-elements/flow-controls/update-user-profile/#use-a-value-from-a-webhook-response), que deixa a Tag inalterada e continua, o **Atraso de tempo** para o usuário quando a data está ausente, inválida ou no passado (sem divisão de ramificação).
Certifique-se de que seu webhook retorne de forma confiável uma data em um [formato suportado](/pt/product/customer-journey/journey-elements/flow-controls/time-delay/#delay-based-on-user-or-event-data). Execute [**Testar webhook**](/pt/product/customer-journey/journey-elements/channels/webhook/#test-the-webhook) antes do lançamento. [Saiba mais](/pt/product/customer-journey/journey-elements/flow-controls/time-delay/#use-a-date-from-a-webhook-response).
</Aside>

## Pontos a serem considerados

* **Sintaxe do caminho:** use um caminho separado por pontos (por exemplo, `data.user.id`). Caracteres curinga e filtros não são suportados. Consulte [Mapeamento de resposta de webhook](/pt/product/customer-journey/journey-elements/channels/webhook/#map-webhook-response-data-to-variables) para detalhes.
* **Tamanho da resposta:** respostas maiores que 64 KB não são processadas para mapeamento.
* **Teste:** execute [**Testar webhook**](/pt/product/customer-journey/journey-elements/channels/webhook/#test-the-webhook) no elemento **Webhook** antes de usar valores mapeados em uma jornada ativa.