> For the complete documentation index, see [llms.txt](https://docs.fortics.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fortics.com.br/perguntas-frequentes/perguntas-frequentes-1/chat-center/integrando-anuncios-ctwa-ao-seu-fluxo.md).

# Integrando anúncios (CTWA) ao seu fluxo

Quando um cliente clica em um anúncio no Facebook ou Instagram, ele não está apenas iniciando um chat; ele está respondendo a uma oferta específica. O Chat Center permite que você identifique exatamente qual foi esse anúncio para que o seu robô continue a conversa sem que o cliente precise repetir o que deseja.

## Pré-requisitos

**Permissão necessária:** Adicionar, Editar e Remover Fluxos.\
O usuário responsável por executar este tutorial [precisa ter ativa a permissão de gerenciamento de Fluxos.](broken://pages/QNNAvdB6ZxF37fUngwE8) Caso essa opção não esteja disponível no seu perfil, solicite a liberação ao administrador da plataforma antes de prosseguir.

**Número de WhatsApp no Channel Connect**\
É obrigatório que seu número de WhatsApp esteja vinculado ao Channel Connect. É através dessa infraestrutura que os dados dos anúncios são transmitidos para o Chat Center. Embora você possa utilizar outros provedores, [recomendamos o uso do Channel Connect](broken://pages/wOuhKTzmwjiCgpwtlD65) para facilitar a gestão administrativa e garantir total compatibilidade técnica nativa.

**Canal Ativo no Chat Center**\
O número configurado no <mark style="color:$danger;">Channel Connect precisa estar conectado como um canal ativo</mark> dentro do seu **Chat Center**. Esta conexão é o que permite ao robô "ler" as interações vindas do Facebook e Instagram.

## Como o Chat Center recebe os dados do anúncio

Diferentemente de uma conversa comum, quando um cliente clica em um anúncio **CTWA (Click to WhatsApp),** o Facebook envia um "pacote de informações" junto com a primeira mensagem. No Chat Center, esse pacote é interceptado e armazenado automaticamente em uma variável nativa.

### A variável mestra: {{EVENT\_FLOW}}

No Chat Center, a variável **{{EVENT\_FLOW}}** funciona como uma verdadeira "caixa postal" inteligente. Sempre que o WhatsApp envia informações adicionais no momento em que a conversa é iniciada, esses dados são automaticamente recebidos e armazenados dentro dessa variável.

Porém, o conteúdo dessa “caixa” varia de acordo com a ação realizada pelo cliente antes de iniciar a conversa. Na prática, existem **três tipos principais de objetos** que podem ser recebidos, cada um trazendo um nível diferente de contexto para o atendimento.

{% hint style="warning" icon="lightbulb-on" %}
**##Dica**\
Aproveite o potencial da variável **{{EVENT\_FLOW}}** para estruturar jornadas personalizadas desde o primeiro contato. Como o Chat Center identifica automaticamente o tipo de objeto recebido, configure seu fluxo para reagir de forma específica em cada cenário. Isso amplia a inteligência da operação, aumenta a autonomia do sistema e contribui diretamente para a otimização da performance e geração de melhores resultados no atendimento.

{% endhint %}

#### 1. O objeto referral (Anúncios CTWA)

Este é o coração da nossa integração com anúncios do Facebook e Instagram.

* **O que é:** Dados enviados quando o cliente clica no botão "Enviar Mensagem" de um anúncio pago.
* **O que contém:** Título do anúncio (**Headline**), descrição, imagem/vídeo e o ID da campanha.
* **Uso Ideal:** Identificar qual oferta atraiu o cliente para oferecer um atendimento de vendas personalizado.

#### 2. O Objeto order (Pedidos de Catálogo)

* **O que é:** Informações enviadas quando o cliente usa o catálogo nativo do WhatsApp, adiciona itens ao carrinho e clica em "Enviar pedido para a empresa".
* **O que contém**: Lista de produtos, quantidades, preços e observações do carrinho.
* **Uso ideal**: Direcionar o cliente direto para o checkout ou para um atendente financeiro para fechar o pagamento.

#### 3. O objeto context (Mensagens de Contexto)

* **O que é:** Dados enviados quando o cliente interage com um link específico (ex.: "wa.me") que possui parâmetros de rastreio ou quando responde a um Story/Mensagem específico.
* **O que contém:** O ID da mensagem de origem ou o link de referência.
* **Uso ideal:** Saber de qual página do seu site o cliente veio ou a qual promoção específica ele está reagindo.

Abaixo temos um exemplo de quando o contato do CTWA chega como “referral” (anúncio)

```json
 {
  "referral":
   {
     "source_url": "AD_OR_POST_FB_URL",
     "source_id": "ADID",
     "source_type": "ad or post",
     "headline": "AD_TITLE",
     "body": "AD_DESCRIPTION",
     "media_type": "image or video",
     "image_url": "RAW_IMAGE_URL",
     "video_url": "RAW_VIDEO_URL",
     "thumbnail_url": "RAW_THUMBNAIL_URL",
  }
}
```

{% hint style="warning" icon="lightbulb-on" %}
\##Dica

O campo **source\_id** é a chave para uma personalização absoluta. Como ele é o identificador exclusivo de cada anúncio no Meta, você pode utilizá-lo no Chat Center para criar **rotas de atendimento específicas.**

Isso significa que, se você tem um anúncio de "Sapato" e outro de "Bolsa", o sistema identifica o ID de origem e redireciona o cliente automaticamente para o fluxo correspondente. Assim, o usuário nunca cai em um menu genérico, mas sim em uma experiência desenhada exclusivamente para o produto que despertou seu interesse.<br>
{% endhint %}

Abaixo temos um exemplo prático de como essa informação chegará ao Chat Center

```json
{
    "referral": {
        "source_url": "https://fb.me/4tSvNg2PP",
        "source_type": "post",
        "source_id": "706383378172970",
        "headline": "FALE CONOSCO",
        "body": "Sua empresa nunca mais precisa perder um potencial cliente por estar offline. Com o Chat Center, sua equipe pode responder e interagir com clientes 24 horas por dia, todos os dias da semana.u200bnnNu00e3o perca mais nenhum cliente interessado pelo seu produto ou serviu00e7o nos principais canais digitais.u200bnnObtenha agora: u200bnu2705 Atendentes ilimitados no mesmo nu00famero; u200bnu2705 Criau00e7u00e3o ilimitada de bots que operam 24 horas por dia; u200bnu2705 Integrau00e7u00e3o com mais de 15 canais digitais; u200bnu2705 Inteligu00eancia artificial a favor do seu negu00f3cio.u200bnnE MUITO MAIS!  u200bnnClique em "ENVIAR MENSAGEM" e fale agora mesmo com um especialista.",
        "media_type": "image",
        "image_url": "https://scontent.xx.fbcdn.net/v/t45.1600-4/359827779_23856776818410781_4716745135890130684_n.png?stp=c3.3.300.300a_dst-png_p306x306&_nc_cat=103&ccb=1-7&_nc_sid=2e75e1&_nc_ohc=uex-5ofjeZkAX_mTKOP&_nc_ad=z-m&_nc_cid=0&_nc_ht=scontent.xx&oh=00_AfBuTJIbdU9j7eC5OpSi0UcUX8Wo-BOPoHMQ5XPw35-maQ&oe=64C4995D"
    }
}
```

## Criando o fluxo para o CTWA

É essencial compreender que todos os contatos direcionados ao seu número de WhatsApp, seja por anúncio, site, QR Code ou interação direta, convergem para este mesmo fluxo inicial. Por isso, a primeira validação de segurança não é opcional: ela é o ponto de controle que garante organização, eficiência e integridade no seu atendimento.

**{{EVENT\_FLOW}} Não Vazio:** O sistema identifica que este usuário veio de um clique no **Facebook ou Instagram** (anúncio, post, botão de contato, etc.) ou enviou um pedido de catálogo. Ele traz "bagagem" de dados para uma experiência personalizada.

**{{EVENT\_FLOW}} Vazio:** Significa que o usuário chegou por um **contato orgânico ou direto** (digitou seu número, escaneou um QR Code ou clicou em um link simples no seu site/bio).

Vamos iniciar [com um componente de condição](/perguntas-frequentes/perguntas-frequentes-1/chat-center/componentes-do-fluxo/componente-fluxo-condicao.md) onde vamos testar se a variável {{EVENT\_FLOW}} está vazia ou não. Crie o componente de **Condição** e configure com os dados abaixo.

<div align="left"><figure><img src="/files/9mxox7LnYCuR17r7zQwD" alt=""><figcaption></figcaption></figure></div>

**Horários:** Permite [selecionar um Grupo de Horários](/perguntas-frequentes/perguntas-frequentes-1/chat-center/grupos-de-horarios.md) (previamente criado em configurações) para definir quando este componente deve ser executado. Para execução contínua, deixe em branco.

**Nome:** Coloque um nome para identificar o seu componente.

**Variável:** Aqui vamos selecionar a variável {{EVEMNT\_FLOW}} para verificar se ela está preenchida (indicando um evento de contexto) ou se está vazia.

**Adicionar exceção**: Marque essa opção, pois a exceção será o caminho para o qual o usuário será direcionado caso a variável {{EVENT\_FLOW}} esteja preenchida.

**Condição:** selecione **“É vazio”** para verificar se a variável não possui valor.

Agora é só **salvar** o componente para ter o fluxo abaixo:

<div align="left"><figure><img src="/files/hS9BOrZ5l2bvj0NIyGLZ" alt=""><figcaption></figcaption></figure></div>

Na opção **“É vazio”,** o fluxo seguirá para o atendimento normal, sem qualquer tratamento adicional. Inclusive, não é necessário adicionar outros componentes nessa ramificação, permitindo que o fluxo continue de forma orgânica.

{% hint style="danger" %}
**##Atenção**

Para garantir uma experiência de usuário fluida e sem frustrações, toda ramificação criada no seu fluxo deve ter um **destino obrigatório.** Uma ramificação vazia é considerada um "ponto cego": se o cliente selecionar essa opção, a conversa será interrompida e ele ficará preso no sistema, sem conseguir avançar ou obter ajuda.&#x20;

**Opções de direcionamento e encerramento**

Sempre que criar um novo caminho de decisão (em menus, botões ou condicionais), você deve obrigatoriamente utilizar um dos seguintes componentes para manter a integridade da jornada:

* **Ir para Fluxo (Subfluxo)**: [<mark style="color:$primary;">Encaminha o usuário para um fluxo de atendimento independente</mark>](/perguntas-frequentes/perguntas-frequentes-1/chat-center/componentes-do-fluxo/componente-de-fluxo-ir-para-fluxo.md) ou complementar já existente.
* **Ir para (Âncora):** [<mark style="color:$primary;">Direciona o usuário para um ponto específico</mark>](/perguntas-frequentes/perguntas-frequentes-1/chat-center/componentes-do-fluxo/componente-de-fluxo-ir-para.md) [<mark style="color:$primary;">(definido por uma âncora)</mark>](/perguntas-frequentes/perguntas-frequentes-1/chat-center/componentes-do-fluxo/componente-de-fluxo-ancoras.md) dentro do desenho do fluxo atual.
* **Transferência / Atendimento Humano:** [<mark style="color:$primary;">Use o componente equipe para encerrar</mark>](/perguntas-frequentes/perguntas-frequentes-1/chat-center/componentes-do-fluxo/componente-fluxo-equipe.md) <mark style="color:$primary;">a</mark> automação e posicionar o cliente na fila para ser atendido por um agente humano.
* **Finalizar Atendimento:** [<mark style="color:$primary;">Conclui formalmente a interação, encerrando o protocolo</mark>](/perguntas-frequentes/perguntas-frequentes-1/chat-center/componentes-do-fluxo/componente-fluxo-finalizar-atendimento.md) e, se configurado, disparando pesquisas de satisfação ou mensagens de despedida.
  {% endhint %}

Já a opção “**Exceção**” é a que utilizamos para identificar o tipo de contexto e, assim, direcionar usuários provenientes de anúncios.

A segunda etapa é criar uma variável para armazenar o tipo de objeto (contexto) que listamos anteriormente. Para isso, vamos criar uma variável utilizando um script em JavaScript.

Para isso, vamos utilizar o [componente “Script”](/perguntas-frequentes/perguntas-frequentes-1/chat-center/componentes-do-fluxo/componente-fluxo-script.md). Selecione-o e configure conforme os dados abaixo.

<div align="left"><figure><img src="/files/suG6dpXa3PjbtmXKKrgJ" alt=""><figcaption></figcaption></figure></div>

**Horários**: Permite selecionar um [Grupo de Horários ](/perguntas-frequentes/perguntas-frequentes-1/chat-center/grupos-de-horarios.md)(previamente criado em configurações) para definir quando este componente deve ser executado. Para execução contínua, deixe em branco.

**Nome**: Coloque um nome para identificar o seu componente.

**Parâmetros**: No campo de parâmetros, crie apenas um item para manter o controle e a eficiência da integração. Defina o nome como **event** e, como valor, utilize {{**EVENT\_FLOW**}}. Para adicionar o parâmetro, clique no botão “**+**” e preencha conforme a imagem acima, garantindo que a configuração esteja padronizada para assegurar a performance do fluxo.

**Tipo de função:** Selecione customizável, pois vamos adicionar um script.

**Customizável**: Aqui, vamos colar o script abaixo. Ele já está pronto e não precisa de edição, desde que os parâmetros tenham sido configurados como na imagem acima.

```javascript
(event) => {
  const jsonObject = JSON.parse(event);
  const primeiraPropriedade = Object.keys(jsonObject)[0];
  return primeiraPropriedade;
};
```

**Retorno da função:** Neste campo, você vai definir a [variável responsável por armazenar o tipo de objeto](/perguntas-frequentes/perguntas-frequentes-1/chat-center/criando-variaveis-personalizadas.md), garantindo autonomia e inteligência para reutilizar essa informação nas próximas etapas do fluxo. Clique no botão “**+**” com o fundo vermelho.

<div align="left"><figure><img src="/files/hOHsVL4IFdsqdoPrb9uf" alt=""><figcaption></figcaption></figure></div>

Preencha os campos conforme imagem abaixo e, em seguida, finalize no botão azul para salvar a nova variável com segurança e manter a consistência da operação.

<div align="left"><figure><img src="/files/YFWBpyPNjKAtkWmZX7aO" alt=""><figcaption></figcaption></figure></div>

Agora é só **salvar**.\
\
Com isso, uma nova variável foi criada e poderá ser utilizada no fluxo: {{RETORNO\_EVENT\_FLOW}}, responsável por armazenar o tipo de objeto (referral, order ou context).

Na última etapa, [crie um novo componente de condição para definir o tipo de objeto](/perguntas-frequentes/perguntas-frequentes-1/chat-center/componentes-do-fluxo/componente-fluxo-condicao.md) e realizar o encaminhamento específico para cada um deles.

<div align="left"><figure><img src="/files/20ebL6FCPfh92zWya8OZ" alt=""><figcaption></figcaption></figure></div>

**Horários**: Permite [selecionar um Grupo de Horários](/perguntas-frequentes/perguntas-frequentes-1/chat-center/grupos-de-horarios.md) (previamente criado em configurações) para definir quando este componente deve ser executado. Para execução contínua, deixe em branco.

**Nome**: Coloque um nome para identificar o seu componente.

**Variável**: Aqui, selecione a variável que acabamos de criar {{RETORNO\_EVENT\_FLOW}}.

**Verificação**: selecione “**Texto**” para comparar a variável como texto.

**Adicionar** **exceção**: Marque essa opção se quiser definir uma opção para caso venha um outro tipo de objeto.

**Condições** **e** **valor**: Aqui vamos criar três condições (uma para cada tipo de objeto/contexto). Selecione a condição “**Igual** **a**” e, em cada campo de valor, informe os nomes dos objetos (**referral, order e context**) para criar uma saída específica para cada tipo.

Agora é só **salvar**.

Com  isso, seu fluxo estará configurado conforme a imagem abaixo.

<div align="left"><figure><img src="/files/JLQELmUxNDDPBZFwviVM" alt=""><figcaption></figcaption></figure></div>

Note que, na condição que acabamos de criar (**Tipo de contexto**), temos quatro saídas: uma para cada tipo de contexto e uma exceção, utilizada quando nenhum dos três valores é identificado.&#x20;

Agora é só continuar a montar o seu fluxo de acordo com as suas necessidades.

{% hint style="danger" %}
**##Atenção**

Para garantir uma experiência de usuário fluida e sem frustrações, toda ramificação criada no seu fluxo deve ter um **destino obrigatório.** Uma ramificação vazia é considerada um "ponto cego": se o cliente selecionar essa opção, a conversa será interrompida e ele ficará preso no sistema, sem conseguir avançar ou obter ajuda.&#x20;

**Opções de direcionamento e encerramento**

Sempre que criar um novo caminho de decisão (em menus, botões ou condicionais), você deve obrigatoriamente utilizar um dos seguintes componentes para manter a integridade da jornada:

* **Ir para Fluxo (Subfluxo)**: [<mark style="color:$primary;">Encaminha o usuário para um fluxo de atendimento independente</mark>](/perguntas-frequentes/perguntas-frequentes-1/chat-center/componentes-do-fluxo/componente-de-fluxo-ir-para-fluxo.md) ou complementar já existente.
* **Ir para (Âncora):** <mark style="color:$primary;">D</mark>[<mark style="color:$primary;">ireciona o usuário para um ponto específico</mark>](/perguntas-frequentes/perguntas-frequentes-1/chat-center/componentes-do-fluxo/componente-de-fluxo-ir-para.md) <mark style="color:$primary;">(</mark>[<mark style="color:$primary;">definido por uma âncora</mark>](/perguntas-frequentes/perguntas-frequentes-1/chat-center/componentes-do-fluxo/componente-de-fluxo-ancoras.md)<mark style="color:$primary;">)</mark> dentro do desenho do fluxo atual.
* **Transferência / Atendimento Humano:** [<mark style="color:$primary;">Use o componente equipe para encerrar</mark> ](/perguntas-frequentes/perguntas-frequentes-1/chat-center/componentes-do-fluxo/componente-fluxo-equipe.md)a automação e posicionar o cliente na fila para ser atendido por um agente humano.
* **Finalizar Atendimento:** [<mark style="color:$primary;">Conclui formalmente a interação, encerrando o protocolo</mark>](/perguntas-frequentes/perguntas-frequentes-1/chat-center/componentes-do-fluxo/componente-fluxo-finalizar-atendimento.md) e, se configurado, disparando pesquisas de satisfação ou mensagens de despedida.
  {% endhint %}

### Bônus: Criar um fluxo especial para determinado impulsionamento no Meta (Facebook/Instagram)

Se a sua estratégia de marketing possui anúncios com ofertas diferentes (ex.: um anúncio de "Black Friday" e outro de "Lançamento de Produto"), você não precisa tratá-los no mesmo fluxo. O campo **source\_id** permite que o Chat Center identifique exatamente qual anúncio o cliente clicou para direcioná-lo a uma experiência exclusiva.

**Como aplicar na prática:**

**Identifique o ID:** No seu Gerenciador de Anúncios da Meta, copie o ID exclusivo do anúncio que você deseja destacar.

**Use o Script de extração:** [Crie um componente de script e cole o script abaixo](/perguntas-frequentes/perguntas-frequentes-1/chat-center/criando-variaveis-personalizadas.md) para capturar o valor de source\_id e salvá-lo em uma variável personalizada, no exemplo usamos {{ID\_ANUNCIO}}.

```javascript
(event) => {
  const jsonObject = JSON.parse(event);
  return jsonObject.referral.source_id;
};
```

Seu componente de script deve ficar como na imagem abaixo:

<div align="left"><figure><img src="/files/C3Mj3ScC9EXHt3cQq5CX" alt=""><figcaption></figcaption></figure></div>

**Crie a condição:** Logo após o script, [adicione um componente de Condição ](/perguntas-frequentes/perguntas-frequentes-1/chat-center/componentes-do-fluxo/componente-fluxo-condicao.md)para identificar se o cliente vem do anúncio como na imagem abaixo.

<div align="left"><figure><img src="/files/kzOIu8kcDFadjg9nRMVJ" alt=""><figcaption></figcaption></figure></div>

Note que como a ID do anúncio do Facebook é um número, mudamos a verificação para “Número”. Lembre-se de ativar **“Adicionar Exceção”**  para garantir que o fluxo continue normalmente mesmo para anúncios que não estejam entre os selecionados.

Na variável, selecione a {**{ID\_ANUNCIO}}** que acabamos de criar na etapa anterior.

Caso tenha mais de um anúncio que deseja separar, você pode ir criando novas condições.

Após criar os dois componentes, você deve posicioná-los corretamente na saída **“referral”** do componente condicional, conforme a imagem abaixo. Lembre-se de substituir o valor **“000000000000”** pela ID do seu anúncio.

<div align="left"><figure><img src="/files/ZrYhaMWeJl5YAa5qL3rP" alt=""><figcaption></figcaption></figure></div>

{% hint style="warning" icon="lightbulb-on" %}
**##Dica**\
Se você já sabe que os usuários vindos de um anúncio específico devem seguir para um fluxo diferente, evite sobrecarregar seu fluxo principal com componentes de **Condição**. Em vez de verificar uma regra para depois direcionar, [<mark style="color:$primary;">utilize o componente "Ir para Fluxo"</mark> ](/perguntas-frequentes/perguntas-frequentes-1/chat-center/componentes-do-fluxo/componente-de-fluxo-ir-para-fluxo.md)logo após identificar que é um “referral”.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.fortics.com.br/perguntas-frequentes/perguntas-frequentes-1/chat-center/integrando-anuncios-ctwa-ao-seu-fluxo.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
