> ## Documentation Index
> Fetch the complete documentation index at: https://docs.octasend.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# OctaTag: a tag do site

> Uma linha no seu site que carrega tours, avaliações, chatbot do site, conteúdo rico, popups, notificações e carrinho abandonado

A **OctaTag** é a tag única do OctaSend para o seu site. Você cola **uma linha** no `<head>` de todas as páginas e ela carrega sozinha tudo o que estiver ligado na sua conta: tours, avaliações, avaliações de produto, dúvidas de produto, chatbot do site, conteúdo rico, popups personalizadas, sino de notificações, notificações push e carrinho abandonado.

Depois de instalada, você não precisa trocar a tag quando liga um recurso novo, publica um tour ou ativa o chatbot: a tag busca a configuração da conta a cada carregamento de página, e a mudança aparece nos carregamentos seguintes, em até cerca de 30 segundos.

## Onde fica

A tag e tudo o que envolve a instalação ficam em **Configurações → Instalação**. A tela reúne:

| Seção | O que mostra |
| - | - |
| **Sua tag** | A tag pronta para copiar, ou o botão **Gerar tag** se a conta ainda não tem uma. |
| **Onde sua tag carregou** | Os domínios onde a tag já carregou, com os recursos que apareceram, cargas e erros. |
| **O que falta colar, recurso a recurso** | Um checklist dos recursos ligados na conta e o que cada um pede além da tag. |
| **Tags coladas na sua loja** | As tags emitidas para a conta, com as ações de substituir e desligar. |
| **Domínios onde os widgets podem aparecer** | A lista de domínios autorizados da conta. |

A mesma tag também aparece no bloco **Instalar no seu site** das telas **Tours → Configuração**, **Chatbot → Chatbot Site → Configuração** e **Conteúdo Rico → Configuração**. É sempre a mesma tag: copiar de qualquer uma dessas telas dá o mesmo resultado.

## Instalar a tag

**1. Gerar a tag**

Em **Configurações → Instalação**, no card **Sua tag**, clique em **Gerar tag** se a conta ainda não tem uma. A tag é criada com o nome **Site principal**. Se a conta já tem tag, ela aparece pronta.

**2. Copiar**

Clique em **Copiar tag**. O botão muda para **Copiada** quando a cópia dá certo. Se o navegador não permitir copiar, selecione o texto da tag e copie à mão.

**3. Colar no site**

Cole a linha no `<head>` de **todas as páginas** do site, no template ou tema que se repete em todas elas.

**4. Conferir**

Abra uma página do site num navegador. Em até 5 minutos o domínio aparece em **Onde sua tag carregou**.

A tag tem este formato:

```html theme={null}
<script src="https://api.octasend.com.br/functions/v1/octa/l.js" data-octa="pk_live_SUA_CHAVE" async></script>
```

> [!TIP]
>
> Não monte a tag à mão: copie a sua pronta na tela. O valor de `data-octa` é a chave da sua conta, e ela começa sempre com `pk_live_`.

A chave da tag é pública: qualquer visitante vê o valor no código da página, e isso é esperado. Ela não é uma senha e não substitui as credenciais da API. Para restringir os sites em que os widgets carregam, use a lista de domínios (veja *Domínios onde os widgets podem aparecer*, abaixo).

A tag carrega de forma assíncrona (`async`) e não atrasa a exibição da página.

> [!NOTE]
>
> Se a tela mostrar **Configuração do painel incompleta — fale com o suporte antes de colar a tag no site**, a tag não é exibida para copiar. Fale com a OctaSend antes de instalar.

## O que a tag carrega

Cada recurso entra na tag quando está ligado na conta, cumpre as condições da tabela e a página está num domínio autorizado (veja *Domínios onde os widgets podem aparecer*). Um recurso que não está ligado simplesmente não carrega, sem erro.

| Recurso (nome na tela Instalação) | Quando entra na tag | O que colar além da tag |
| - | - | - |
| **Tours** e **Avaliações** | Módulo Tours ou Avaliações ligado e pelo menos uma publicação feita. | Nada. Para retomar tours de onde a pessoa parou, identifique o usuário (veja *Identificar o usuário logado*). |
| **Avaliações e Dúvidas de Produto** | Módulo Avaliações de Produto ligado. | O bloco de avaliações e o selo de nota na página do produto. A aba **Dúvidas** aparece no mesmo bloco. Veja [Avaliações de produtos](https://docs.octasend.com.br/plataforma/avaliacoes-de-produtos.md) e [Dúvidas de produtos](https://docs.octasend.com.br/plataforma/duvidas-de-produto.md). |
| **Assistente** (chatbot do site) | Módulo ligado e o assistente ativado em **Chatbot → Chatbot Site**. | Nada. Veja [Chatbot do site](https://docs.octasend.com.br/plataforma/chatbot-do-site.md). |
| **Conteúdo Rico** | Módulo Conteúdo Rico ligado. | A marcação `<div data-octasend-content data-product="SKU_DO_PRODUTO"></div>` onde o conteúdo deve aparecer. Veja [Conteúdo rico](https://docs.octasend.com.br/plataforma/conteudo-rico.md). |
| **Popups** | Módulo Popups ligado e pelo menos uma popup **Ativa**. | Nada. Para as regras que dependem de quem navegou, identifique o usuário (veja *Identificar o usuário logado*) e peça o consentimento de marketing no banner de cookies. Veja [Popups personalizadas](https://docs.octasend.com.br/plataforma/popups.md). |
| **Sino de notificações** (in-app) | Módulo ligado. | Nada, mas o sino só aparece para usuário identificado com `userId` (e com `userHash`, se a verificação de identidade for exigida). |
| **Notificações push** | Módulo ligado e canal **Push Notification (Navegador)** ativo. | Um arquivo na raiz do site e um botão que chama `registerWebPush`. Veja *Notificações push pela tag*, abaixo. |
| **Carrinho abandonado** | Módulo ligado. Só reporta carrinhos com a integração [Wake](https://docs.octasend.com.br/integracoes/wake.md) conectada. | Nada além do contato do comprador. Veja *Carrinho abandonado pela tag*, abaixo. |

> [!NOTE]
>
> Com exceção do Conteúdo Rico, que já vem ligado, os recursos da tabela são **módulos opcionais**. Fale com a OctaSend para ativar.

> [!NOTE]
>
> O banner de cookies **não** é carregado pela OctaTag. Ele tem um script próprio, que precisa ser o **primeiro script do `<head>`** (antes do Google Tag Manager e de pixels), para poder bloquear os serviços até o aceite. Veja [Cookies e LGPD](https://docs.octasend.com.br/plataforma/cookies-lgpd.md). Quando o banner está no site, os módulos da tag respeitam a escolha do visitante: o assistente e o carrinho abandonado dependem da categoria **Funcionais**, e a telemetria de tours e avaliações depende de **Analytics**. Sem o banner, tudo continua como antes.

Os editores de Tours e Avaliações também usam a tag para você apontar um elemento do seu site durante a criação. Não há nada extra a instalar para isso.

### Notificações push pela tag

Com a tag instalada e o canal **Push Notification (Navegador)** ativo, faltam duas coisas:

1. Um arquivo `firebase-messaging-sw.js` na **raiz pública** do site (por exemplo, `https://seusite.com/firebase-messaging-sw.js`), com uma linha só. A linha, já com a chave da sua tag, fica em **Configurações → Canais → Push Notification (Navegador)**, na seção **Com a tag da loja**:
   ```javascript theme={null}
   importScripts('https://api.octasend.com.br/functions/v1/web-push-sw?t=pk_live_SUA_CHAVE')
   ```
2. Um botão que chama `registerWebPush` com o identificador da pessoa no seu sistema:
   ```javascript theme={null}
   botao.onclick = () => window.registerWebPush && window.registerWebPush(idDoUsuario)
   ```

O navegador só pede permissão depois de um clique, por isso chame `registerWebPush` no clique de um botão, nunca na abertura da página. A função só existe quando a tag carregou e o canal está ativo, por isso o teste antes de chamar. Quando a pessoa já deu permissão antes, a tag renova o registro do aparelho sozinha nas visitas seguintes, sem pedir de novo.

Se a sua conta usa a **verificação de identidade** (veja *Verificação de identidade (userHash)*, abaixo), o registro do aparelho também precisa do `userHash` daquele usuário. Passe como segundo argumento, `registerWebPush(idDoUsuario, userHash)`, ou informe antes no `identify` com o mesmo `userId`: a tag usa o `userHash` do `identify` quando o `userId` é o mesmo.

O passo a passo completo do canal, incluindo as credenciais do Firebase, está em [Web Push](https://docs.octasend.com.br/guias/web-push.md).

### Carrinho abandonado pela tag

A tag reporta o carrinho com as mesmas regras do script de carrinho abandonado:

* O identificador do carrinho vem do cookie `carrinho-id`.
* O contato vem do `identify` (`email`, `phone` e `name`) ou das variáveis `window.OCTASEND_EMAIL`, `window.OCTASEND_PHONE` e `window.OCTASEND_NOME`.
* Sem identificador do carrinho, ou sem e-mail e sem telefone, nada é reportado.
* O carrinho é conferido a cada 15 segundos e quando a pessoa sai da página. A mesma combinação de carrinho e contato não é reportada duas vezes.

Se a tag está instalada, o script de carrinho de **Configurações → Integrações** não é necessário. Ele continua valendo para quem não usa a tag.

### Sino de notificações pela tag

O sino busca as notificações in-app do usuário identificado com `userId`, o mesmo identificador que você usa em `recipient.user_id` ao enviar. Ele mostra as notificações dos últimos 30 dias (até 100) e avisa na tela quando chega uma nova.

Em **Configurações → Canais → In-app (dentro da aplicação)**, no card **Configuração da tag**, você escolhe:

| Campo | Opções |
| - | - |
| **Tema** | Automático, Claro ou Escuro |
| **Idioma** | Português, English ou Español |
| **Intervalo de atualização (ms)** | Entre 10.000 e 120.000. O padrão é 20.000. É de quanto em quanto tempo o sino busca novidades. |

Essas opções valem só para a tag. O widget in-app instalado pelo script próprio segue as opções dele, descritas em [Widget In-App](https://docs.octasend.com.br/api-reference/widget-in-app.md).

## Instalar pela integração da loja

Para algumas plataformas, a OctaSend instala ou entrega a OctaTag a partir da própria integração, no cartão **OctaTag na loja** (em **Configurações → Integrações →** a plataforma). O mesmo cartão tem o interruptor **Inserir o Conteúdo Rico nas páginas de produto**, que coloca o [Conteúdo Rico](https://docs.octasend.com.br/plataforma/conteudo-rico.md) sozinho na página do produto, sem editar o tema.

| Plataforma | Como a OctaTag chega à vitrine |
| - | - |
| **Nuvem Shop** | Interruptor da OctaTag automática na integração. A Nuvem Shop injeta o script na vitrine. Veja [Nuvem Shop](https://docs.octasend.com.br/integracoes/nuvemshop.md). |
| **Yampi** | Interruptor **Instalar OctaTag na loja**: a OctaSend cadastra na Yampi um script chamado **OctaSend OctaTag**. Quando a instalação automática não está disponível para a conexão, o cartão mostra a tag para você colar no tema. Veja [Yampi](https://docs.octasend.com.br/integracoes/yampi.md). |
| **Shopify** | Interruptor **Instalar OctaTag na loja** e, uma vez, **Ativar na loja** no editor de tema (a OctaTag é uma *incorporação do app*). Veja [Shopify](https://docs.octasend.com.br/integracoes/shopify.md). |
| **Olist Ecommerce** | Manual: o cartão mostra dois códigos, um para o `layout.liquid` do tema (recomendado) e um para o Google Tag Manager. Use só um. Veja [Olist Ecommerce](https://docs.octasend.com.br/integracoes/olist.md). |
| **Linx Commerce** | Manual: o cartão mostra dois códigos, um para o template **Header** ou **Footer** da loja e um para o Google Tag Manager. Use só um. Veja [Linx Commerce](https://docs.octasend.com.br/integracoes/linx.md). |

* Na Olist e na Linx, **troque** a tag genérica de **Configurações → Instalação** pelo código do cartão. Só o código do cartão avisa à OctaSend qual é a plataforma da loja; com a tag genérica, a inserção automática do Conteúdo Rico não age.
* A instalação automática é liberada aos poucos, conta por conta. Onde ela ainda não foi liberada, o cartão mostra o modo manual ou não aparece.
* Se você já configurou a lista de domínios autorizados, inclua o endereço da vitrine da plataforma (por exemplo, o endereço `*.catalog.yampi.io` da Yampi ou o seu domínio próprio). Sem isso, nada aparece.

## Identificar o usuário logado

Se o seu site tem login, informe à tag quem está navegando. Cole este trecho numa página em que o usuário já está identificado:

```html theme={null}
<script>
  window.octasend = window.octasend || function () {
    (window.octasend.q = window.octasend.q || []).push(arguments);
  };
  octasend('identify', {
    userId: 'id-do-cliente-123',
    name: 'Nome do cliente',
    email: 'cliente@email.com',
    phone: '+5511999999999',
  });
</script>
```

As três primeiras linhas guardam a chamada numa fila enquanto a tag ainda carrega. Por isso o trecho funciona antes ou depois da tag, sem erro.

| Campo | Para que serve |
| - | - |
| `userId` | O identificador do usuário **no seu sistema**, nunca um valor gerado pelo OctaSend. Os tours retomam de onde a pessoa parou, o sino mostra as notificações dela, o formulário de avaliação de produto aparece e o chatbot do site já sabe quem é. |
| `userHash` | A prova de que o `userId` é mesmo daquela pessoa, calculada no seu servidor. Usado pelo sino de notificações e pelo registro de push. Veja *Verificação de identidade (userHash)*, abaixo. |
| `name`, `email` | Pré-preenchem o formulário de avaliação de produto (junto com o `userId`) e evitam que o chatbot do site pergunte de novo. |
| `phone`, `email` | São o contato usado pelo carrinho abandonado e pelo chatbot do site. |

Todos os campos são opcionais, mas cada recurso só aproveita os que usa.

### Verificação de identidade (userHash)

A verificação de identidade garante que só o próprio usuário vê as notificações dele e registra o aparelho dele para o push. O seu servidor calcula um `userHash` com um segredo que só ele conhece, e o site envia esse valor junto com o `userId`.

**1. Gere o segredo**

Em **Configurações → Canais**, na tela das notificações in-app ou do web push, abra a seção **Verificação de identidade** e clique em **Gerar segredo**. O segredo é o mesmo para o sino e para o push. Guarde-o só no seu servidor, nunca no código do site. Esta etapa é de um usuário **MASTER** da conta (veja abaixo).

**2. Calcule o userHash no seu servidor**

O `userHash` é o HMAC-SHA256 do `userId` com o segredo, em hexadecimal.

**3. Envie no identify**

Passe o valor calculado junto com o `userId`.

```javascript Node.js theme={null}
const crypto = require('crypto')
const userHash = crypto.createHmac('sha256', segredo).update(userId).digest('hex')
```

```php PHP theme={null}
$userHash = hash_hmac('sha256', $userId, $segredo);
```

```python Python theme={null}
import hmac, hashlib
user_hash = hmac.new(segredo.encode(), user_id.encode(), hashlib.sha256).hexdigest()
```

```html No site theme={null}
<script>
  octasend('identify', { userId: 'id-do-cliente-123', userHash: 'VALOR_CALCULADO_NO_SERVIDOR' });
</script>
```

Como funciona:

* Com **Exigir verificação de identidade** desligado (o padrão), o `userHash` é opcional, mas um `userHash` errado é sempre recusado.
* Com **Exigir verificação de identidade** ligado (a opção fica disponível depois de gerar o segredo), sem o `userHash` certo o sino não carrega e o push não registra o aparelho.
* **Gerar novo segredo** invalida na hora todo `userHash` calculado com o segredo anterior. Atualize o seu servidor logo em seguida.
* Ligue a exigência só depois que o site já estiver enviando o `userHash`, e prefira um `userId` que não seja sequencial.
* Ao trocar de usuário com `identify`, envie o `userHash` do usuário novo. Um `userId` diferente sem `userHash` descarta o anterior.
* Só usuários **MASTER** da conta em uso veem o segredo, geram um novo e ligam ou desligam a exigência. Um usuário **PADRÃO** vê na seção só o aviso **Só usuários MASTER veem o segredo e ligam a exigência de verificação. Peça a um usuário MASTER da sua conta.**

Os detalhes do sino e das rotas de verificação estão em [Widget In-App](https://docs.octasend.com.br/api-reference/widget-in-app.md), e os do push em [Web Push](https://docs.octasend.com.br/guias/web-push.md).

> [!TIP]
>
> Se você não sabe onde o seu site guarda o ID de quem fez login, use o trecho da aba **Tours → Configuração**, em **Identificar quem está navegando**. Ele procura o ID sozinho em Nuvemshop, Shopify, Google Tag Manager (`dataLayer` com `userId` ou `user_id`), Segment, Intercom e nos globais `window.user` e `window.currentUser`. Você também pode informar o caminho do ID no seu site no campo **Onde está o ID no seu site (opcional)**.

Quando a pessoa sair da conta, chame:

```javascript theme={null}
octasend('reset')
```

Regras da identificação:

* O que vier do `identify` tem prioridade sobre `window.OCTASEND_EMAIL`, `window.OCTASEND_PHONE` e `window.OCTASEND_NOME`. Esses globais continuam valendo quando não há `identify`.
* `reset` apaga o que o `identify` informou. Os globais `OCTASEND_*`, se existirem na página, continuam sendo lidos.
* Quem já usa `window.OctaReviews.identify` nas avaliações de produto não precisa mudar: continua funcionando com a tag.
* Chame o `identify` assim que souber quem é o usuário, de preferência no carregamento da página. Os tours leem a identificação quando a página abre, e o chatbot do site, quando a conversa começa. O sino e as avaliações de produto percebem também uma identificação feita depois.

No checklist da tela **Instalação**, o item **Se a sua loja tem login** fica sempre marcado como **Não conseguimos conferir daqui**: a tela não tem como verificar se o `identify` foi instalado.

## Sites de página única (SPA)

A tag é carregada uma vez, na abertura do site, e continua ativa enquanto a pessoa navega sem recarregar a página:

* **Tours e avaliações** reavaliam as regras de página a cada troca de rota.
* **Conteúdo Rico e avaliações de produto** encontram sozinhos as marcações que aparecem depois, quando a SPA desenha a página do produto.
* **Login e logout sem recarregar**: chame `octasend('identify', { userId })` quando a pessoa entrar e `octasend('reset')` quando sair.
* **Trocas de rota** feitas pelo histórico do navegador (`pushState`, `replaceState`, Voltar e Avançar) são percebidas sozinhas, sem código extra.

## Outros comandos da tag

Além de `identify` e `reset`, a tag aceita comandos para quem quer acompanhar o carregamento pelo próprio código. Como no `identify`, eles podem ser chamados antes de a tag terminar de carregar.

| Comando | O que faz |
| - | - |
| `octasend('on', 'ready', callback)` | Chama o `callback` quando a tag termina de carregar, com a lista dos módulos ativos na página. Quem se inscreve depois disso recebe o aviso na hora. |
| `octasend('on', 'module:error', callback)` | Chama o `callback` quando um módulo falha, com o nome do módulo e o código do erro. |
| `octasend('status', callback)` | Chama o `callback` com os módulos ativos na página naquele momento. |
| `octasend('reload')` | Busca a configuração da conta de novo e atualiza os módulos da página, sem recarregar. Também serve para tentar de novo quando a primeira busca da configuração falhou (por exemplo, sem conexão ou com a CSP bloqueando): se o `reload` der certo, os módulos montam e o evento `ready` dispara nesse momento. |

```javascript theme={null}
octasend('on', 'ready', function (status) {
  console.log('Módulos ativos:', status.modulos);
});
```

## Verificar a instalação

### Onde sua tag carregou

A tabela mostra cada domínio em que a tag, ou um script antigo do OctaSend, carregou:

| Coluna | O que significa |
| - | - |
| **Domínio** | O endereço do site onde a tag carregou. |
| **Módulos que apareceram** | Os recursos que montaram na página na carga mais recente. |
| **Última vez** | Há quanto tempo a tag carregou pela última vez nesse domínio. |
| **Cargas em 24 h** | Estimativa de quantas sessões de navegação carregaram a tag nas últimas 24 horas. Cada aba do navegador conta uma vez. Para scripts antigos, aparece `—`. |
| **Erros** | Falhas de carregamento nas últimas 24 horas, incluindo recursos bloqueados pela política de segurança (CSP) do site. |

Os dados são consolidados a cada 5 minutos. Enquanto nenhum domínio aparece, a tela se atualiza sozinha por 1 minuto depois de aberta. Se o domínio não surgir nesse tempo, abra a tela de novo mais tarde.

Para montar essa tabela, a tag registra só o domínio do site, nunca o endereço completo das páginas.

### O que falta colar, recurso a recurso

O checklist lista os recursos ligados na conta. Cada item mostra:

* **Já apareceu na sua loja**: o recurso já montou em algum domínio pelo menos uma vez.
* **Ainda não vimos aparecer**: a tela ainda não recebeu prova de que o recurso montou. Isso **não** quer dizer que ele está quebrado.

Abaixo de cada recurso aparece o que ele pede além da tag, ou um link **Abrir o passo a passo** para a tela onde a instalação dele é explicada.

### Aviso de recurso fora do ar

Se a OctaSend desligar temporariamente um recurso, o topo da tela mostra o aviso **"\[recurso] está temporariamente fora do ar"**, com o motivo.

## Domínios onde os widgets podem aparecer

A conta tem **uma lista única** de domínios autorizados. Ela pode ser editada em **Configurações → Instalação** e também no bloco **Instalar no seu site** das telas de Tours, Chatbot Site e Conteúdo Rico. Salvar em qualquer uma dessas telas atualiza as outras.

A lista vale para **todos os widgets da tag**: tours, avaliações, avaliações de produto, dúvidas de produto, chatbot do site, conteúdo rico, popups personalizadas, carrinho abandonado, sino de notificações e notificações push.

Regras da lista:

* **Lista vazia** (o padrão): os widgets aparecem em qualquer site. Não há restrição.
* **Lista com domínios**: os widgets só carregam nos endereços cadastrados. Em qualquer outro domínio, eles não aparecem, e o domínio recusado passa a ser listado em **Configurações → Instalação** (veja *Domínios que se anunciaram*, abaixo).
* Com a lista preenchida, uma página que não informa o domínio de onde veio, como um arquivo aberto direto do computador, também não carrega os widgets.
* Uma lista recém-salva passa a valer no site em até cerca de 30 segundos.
* Ambientes de teste, homologação e desenvolvimento também precisam estar na lista. Para testar no seu computador, inclua `localhost`.
* A comparação é pelo domínio inteiro. `loja.com.br` não libera `minhaloja.com.br`.
* O `www.` é ignorado: `loja.com.br` vale também para `www.loja.com.br`.
* Outros subdomínios precisam ser cadastrados um a um. `loja.com.br` não libera `app.loja.com.br`.
* Você pode colar o endereço completo (`https://loja.com.br/produtos`): a tela guarda só o domínio, sem `https://`, caminho, porta nem `www.`.
* Só são aceitos letras, números, ponto e hífen. Em **Configurações → Instalação**, um valor inválido mostra **"… não é um endereço de site válido. Use só o domínio, como loja.com.br"** e não entra na lista. No bloco **Instalar no seu site**, a linha inválida é marcada como **domínio inválido** e o botão **Salvar domínios** fica desabilitado até você corrigir.

As **Avaliações de Produto** têm, além desta, uma lista própria em **E-commerce → Avaliações de produtos → Configuração**, no card **Sites que podem ler as respostas do widget**. As duas listas se somam: o widget de avaliações de produto carrega nos domínios de qualquer uma delas, e só com as duas vazias ele aparece em qualquer site. Veja [Avaliações de produtos](https://docs.octasend.com.br/plataforma/avaliacoes-de-produtos.md).

### Domínios que se anunciaram

Em **Configurações → Instalação**, acima da lista, aparecem os domínios que se anunciaram carregando seus widgets e ainda não estão na lista. Cada um mostra em quais recursos apareceu, em que período, quando foi o último acesso e quantas vezes se anunciou.

* Clique em **Adicionar** para levar o domínio para a lista.
* Qualquer visitante consegue se anunciar nessa lista. Confira o número de vezes e o período antes de adicionar, e adicione só os domínios que são seus. Um domínio que apareceu uma vez só, em segundos e num recurso só, costuma ser ruído.
* Domínios que a sua configuração atual já recusa aparecem num bloco separado, sem botão. Se algum for seu, digite o endereço no campo da lista.

Para incluir um domínio à mão, digite no campo e clique em **Incluir**. Para tirar, clique em **Remover**. Nada muda até você clicar em **Salvar lista de domínios**.

## Trocar ou desligar uma tag

Em **Tags coladas na sua loja** ficam todas as tags da conta. Além da tag nova (por exemplo, **Site principal**), a lista mostra as identificações dos scripts antigos do OctaSend:

| Nome na lista | De onde vem |
| - | - |
| **Tag antiga de Tours e Avaliações** | Script antigo de Tours e Avaliações |
| **Tag antiga do Assistente** | Script antigo do chatbot do site |
| **Tag antiga do Sino e do Push** | Scripts antigos do widget in-app e do push |
| **Tag antiga do Carrinho** | Script antigo de carrinho abandonado |

Cada linha mostra o valor mascarado, a última vez que carregou e a situação: **Antiga — para de funcionar em \[data]** ou **Desligada em \[data]**. O botão **Copiar** copia só o valor da chave.

| Ação | O que acontece |
| - | - |
| **Substituir por uma tag nova** | Emite uma tag nova. A atual continua funcionando por mais **7 dias**, para dar tempo de trocar no site. |
| **Desligar em 7 dias** | Faz o mesmo: emite a tag nova e começa a contagem de 7 dias da atual. |
| **Desligar agora** (menu **⋯**) | Desliga a tag na hora. Os recursos carregados por ela deixam de aparecer nos carregamentos seguintes das páginas (na tag nova, em até cerca de 30 segundos) e só voltam quando você colar uma tag válida. Se a conta ficar sem tag ativa, o card **Sua tag** volta a oferecer **Gerar tag**. |

Depois de substituir, a tela mostra a chave nova com o aviso **Tag nova criada**, e o card **Sua tag** passa a exibir a tag atualizada. Copie a tag do card e troque no site. Na lista, uma tag nova substituída passa a aparecer com **(anterior)** no nome, por exemplo **Site principal (anterior)**, e a tag emitida no lugar dela fica com o nome original. Ao substituir uma tag antiga, ela mantém o nome (por exemplo, **Tag antiga do Carrinho**) e a tag emitida aparece como **Site principal** (ou **Site principal 2**, se a conta já tiver uma tag ativa com esse nome). Enquanto a antiga ainda carregar em algum domínio nas últimas 48 horas, a lista avisa: **A tag antiga ainda está carregando em \[domínio] — ela para de funcionar em \[data]**.

> [!WARNING]
>
> **Desligar agora** é para quando a tag vazou e você precisa cortar no mesmo dia. A confirmação pede o motivo e, se a tag já carregou em algum site, que você digite o domínio mostrado. Se o domínio mudar enquanto você confirma, a tela avisa **O host mudou, tente de novo.**

> [!NOTE]
>
> Qualquer usuário da conta pode gerar a primeira tag, copiar a tag e editar a lista de domínios. **Substituir por uma tag nova**, **Desligar em 7 dias** e **Desligar agora** são permitidos só para usuários de nível **MASTER** na conta em uso. Para os demais usuários, esses botões não aparecem, e a lista mostra o aviso **Só usuários MASTER podem substituir ou desligar a tag. Se precisar trocar, peça a um usuário MASTER da sua conta.**

## Política de segurança de conteúdo (CSP)

Se o seu site usa uma CSP, libere o endereço da tag (a origem que aparece no `src`: `https://api.octasend.com.br`). A tag e todos os recursos buscam scripts e dados nesse mesmo endereço.

| Diretiva | O que liberar | Quando |
| - | - | - |
| `script-src` | O endereço da tag | Sempre |
| `connect-src` | O endereço da tag | Sempre |
| `connect-src` | Os domínios dos PDFs e modelos 3D que você usa | PDF em modo revista e modelos 3D do Conteúdo Rico |
| `connect-src` | `https://firebaseinstallations.googleapis.com` e `https://fcmregistrations.googleapis.com` | Notificações push |
| `worker-src` | `'self'` | Notificações push (o arquivo `firebase-messaging-sw.js` fica no seu domínio) |
| `img-src` | O endereço da tag, `data:`, `blob:` e os domínios das imagens que você usa | Tours, avaliações, avaliações de produto e Conteúdo Rico |
| `media-src` | O endereço da tag, `blob:` e os domínios dos vídeos em arquivo | Avaliações de produto e Conteúdo Rico |
| `frame-src` | `https://www.youtube.com`, `https://player.vimeo.com` e os domínios dos PDFs | Vídeos e PDFs do Conteúdo Rico |
| `worker-src` | `blob:` | PDF em modo revista no Conteúdo Rico. Sem ele, o PDF abre no modo documento. |

Quando a CSP bloqueia um recurso da tag, o bloqueio conta na coluna **Erros** de **Onde sua tag carregou**. Se a CSP bloquear a própria tag, nada carrega e o domínio não aparece na tabela: confira o console do navegador.

## Convivência com scripts antigos e com o seu site

**Scripts antigos do OctaSend.** Se o site ainda tem algum script antigo (Conteúdo Rico, carrinho abandonado, tours, avaliações, avaliações de produto, chatbot do site, sino de notificações ou push), remova-o depois de colar a tag. Enquanto o script antigo estiver na página, a tag cede o lugar a ele naquele recurso. No Conteúdo Rico, cada bloco é desenhado por quem carregar primeiro. Com os dois na página, o conteúdo não aparece em dobro e o carrinho não é reportado duas vezes.

**Outros scripts e o visual da loja.**

* Cole a tag **uma vez só** por página. Uma segunda cópia com a mesma chave é ignorada.
* A maior parte dos widgets é desenhada numa área isolada da página, então o CSS da loja não muda o visual deles.
* Um recurso que falha ao carregar sai só daquela página, e a falha conta na coluna **Erros**. Os outros recursos continuam funcionando.

## Solução de problemas

> [accordion] Colei a tag e nada aparece no site
>
> Confira, nesta ordem:
>
> 1. O recurso está ligado na conta? Ele precisa aparecer no checklist **O que falta colar, recurso a recurso**.
> 2. O recurso cumpre as condições da tabela *O que a tag carrega*? Por exemplo, tours precisam de uma publicação e o chatbot do site precisa estar ativado.
> 3. Há um script antigo do OctaSend na página? Enquanto ele estiver lá, é ele que funciona.
> 4. O domínio está fora da lista de domínios autorizados? Com a lista preenchida, nenhum widget aparece fora dela, inclusive em ambientes de teste e em `localhost`. Um domínio recusado aparece em **Configurações → Instalação**, no bloco dos domínios que a configuração atual recusa.
> 5. A CSP do site bloqueia a tag? Veja *Política de segurança de conteúdo (CSP)*, acima.

> [accordion] O domínio não aparece em Onde sua tag carregou
>
> Os dados são consolidados a cada 5 minutos. Abra uma página do site, espere alguns minutos e abra a tela **Instalação** de novo. Se continuar vazio, confira se a tag está em todas as páginas e se a CSP do site não bloqueia o endereço da tag.

> [accordion] O recurso aparece como Ainda não vimos aparecer
>
> A tela só marca **Já apareceu na sua loja** depois de receber prova de que o recurso montou. Abra no site uma página onde o recurso deve aparecer e confira de novo depois de alguns minutos.

> [accordion] O sino de notificações não aparece
>
> O sino só aparece para usuário identificado. Chame `octasend('identify', { userId })` com o mesmo identificador usado em `recipient.user_id` nos envios. Se a conta exige a verificação de identidade, o `identify` precisa trazer também o `userHash` certo daquele `userId`, calculado com o segredo atual. Confira também se o domínio está na lista de domínios autorizados.

> [accordion] O push não pede permissão
>
> O navegador só mostra o pedido depois de um clique: chame `registerWebPush` dentro do clique de um botão. Confira também se o arquivo `firebase-messaging-sw.js` está na raiz pública do site, se o canal **Push Notification (Navegador)** está ativo e se não há um script antigo de push na página. Se a pessoa já recusou a permissão antes, o navegador não pergunta de novo. Com a verificação de identidade exigida, o aparelho só é registrado com o `userHash` certo.

> [accordion] Troquei a tag e a antiga ainda carrega
>
> Depois de **Substituir por uma tag nova**, a antiga continua funcionando por 7 dias. A lista **Tags coladas na sua loja** mostra em quais domínios ela ainda carregou nas últimas 48 horas. Troque a tag nessas páginas antes da data indicada.

## Veja também

> [card] [Tours](https://docs.octasend.com.br/plataforma/tours.md)
>
> Guias passo a passo dentro do seu site.

> [card] [Chatbot do site](https://docs.octasend.com.br/plataforma/chatbot-do-site.md)
>
> Assistente com IA no seu site.

> [card] [Conteúdo rico](https://docs.octasend.com.br/plataforma/conteudo-rico.md)
>
> Blocos de conteúdo na página do produto.

> [card] [Web Push](https://docs.octasend.com.br/guias/web-push.md)
>
> Configuração completa do canal de push.

> [card] [Popups personalizadas](https://docs.octasend.com.br/plataforma/popups.md)
>
> Ofertas na loja a partir do que o visitante navegou e comprou.

> [card] [Cookies e LGPD](https://docs.octasend.com.br/plataforma/cookies-lgpd.md)
>
> Banner de consentimento, scanner e documentos legais.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.