Documentação

FAQ

Os usuários precisam instalar algo?

Não. Os usuários só precisam colar uma única tag de script no seu HTML — sem pacotes npm, sem passos de build, sem dependências. As funcionalidades extras carregam automaticamente a partir da mesma origem.

Vai entrar em conflito com o meu CSS?

Não. O widget é renderizado dentro de um Shadow DOM, isolando por completo os seus estilos da sua página.

Suporta single-page apps (React, Vue, Next.js)?

Sim. O script carrega uma vez e persiste entre as mudanças de rota. Para React/Next.js, coloque o script no seu layout raiz.

Next.js App Routertsx
// app/layout.tsx (App Router)
import Script from 'next/script';
import { ReactNode } from 'react';

export default function RootLayout({ children }: { children: ReactNode }) {
  return (
    <html lang="en">
      <body>
        {children}
        <Script id="respondo-init" strategy="afterInteractive">
          {`
            window.Respondo = window.Respondo || {};
            Respondo.init = Respondo.init || function(c) { window.RespondoAIConfig = c; };
            Respondo.q = Respondo.q || [];
            Respondo.identify = Respondo.identify || function(d) { Respondo.q.push(['identify', d]); };
            Respondo.init({
              agentId: 'YOUR_AGENT_ID',
              channelId: 'YOUR_CHANNEL_ID'
            });
          `}
        </Script>
        <Script src="https://api.respondo.ai/widget/widget.js" strategy="afterInteractive" />
      </body>
    </html>
  );
}

O que acontece quando uma conversa é resolvida?

Uma nova mensagem após a resolução abre automaticamente uma conversa de acompanhamento vinculada à anterior (mostrada como "Continuação de #N" na sua caixa de entrada). O contexto, como o idioma e a transcrição anterior, é transportado, e o visitante vê um único chat contínuo. Se um colega de time estava cuidando da conversa resolvida, o acompanhamento é encaminhado de volta à sua equipe em vez da IA; caso contrário, a IA assume.

Como é carregado o widget?

O widget é carregado de forma assíncrona (async), por isso nunca bloqueia a renderização da página. O bundle principal é de ~180KB (~50KB gzipped); as funcionalidades opcionais (campanhas, tours de produto) carregam como chunks lazy separados depois que o widget monta, então a renderização inicial da página nunca é bloqueada.

Como funciona o escalonamento?

Os usuários podem clicar no botão "Falar com um humano", escrever uma frase a pedir um humano, ou a IA transfere por conta própria quando não consegue responder a partir da sua base de conhecimento. Uma vez escalada, a IA deixa de responder e todas as mensagens seguintes são encaminhadas para a sua equipe de suporte. Consulte a seção Escalonamento e transferência para mais detalhes.

Os usuários podem continuar a conversar com a IA depois do escalonamento?

Sim. O widget mostra um botão "Continuar com a IA" que permite ao usuário dispensar o escalonamento e retomar a conversa com a IA.

Base de conhecimento e rastreamento do site#

Por que o rastreamento do meu site está bloqueado?

"Bloqueado" significa que o site — ou sua camada de proteção (Cloudflare, um WAF, um plugin anti-bot) — recusou nosso rastreador: a página inicial ou o robots.txt respondeu em todas as tentativas com um erro de acesso ou um desafio de "verificando seu navegador", ou o robots.txt proíbe explicitamente nosso rastreador. As páginas já importadas permanecem intactas, e uma ressincronização falhará da mesma forma até que o site nos deixe entrar. Peça ao dono do site para permitir o User-Agent RespondoAI-Crawler (string completa: Mozilla/5.0 (compatible; RespondoAI-Crawler/1.0; +https://respondo.ai/bot)) nas configurações de proteção — no Cloudflare, é Security → WAF → Custom rules — e, se a causa for o robots.txt, adicionar uma regra de permissão para User-agent: RespondoAI-Crawler. A Respondo não publica um endereço IP fixo do rastreador — libere pelo User-Agent; se o erro exibido na fonte mencionar um IP, libere-o também. Se o site não puder ser alterado, adicione o mesmo conteúdo como arquivos ou texto colado.

O rastreamento terminou, mas encontrou apenas algumas páginas

Descobrimos páginas pelo sitemap do site (a linha Sitemap: no robots.txt ou locais comuns como /sitemap.xml) e seguindo links a partir da URL inicial — até 10 níveis de links de profundidade e até 5.000 páginas por fonte. Só são importadas páginas do mesmo site e dentro do caminho da URL inicial: um rastreamento iniciado em https://example.com/help ignora /blog, então comece pela raiz ou adicione caminhos a incluir. Páginas para as quais nenhum link ou sitemap aponta, páginas proibidas pelo robots.txt e páginas atrás de login não são encontradas. Páginas quase idênticas (versões para impressão, variantes com parâmetros de rastreamento) são mescladas em uma. Páginas cujo conteúdo é desenhado inteiramente por JavaScript são detectadas e renderizadas por um mecanismo de contingência baseado em navegador; por isso, um número baixo de páginas normalmente indica um problema de escopo ou de sitemap, não de renderização.

Como limito o rastreamento a uma seção do site?

Abra Advanced no diálogo de adicionar site e preencha Only crawl paths starting with (rastrear apenas caminhos que começam com) e/ou Skip paths starting with (pular caminhos que começam com) — um caminho por linha, até 50 por campo. A correspondência é por segmentos inteiros do caminho: /docs corresponde a /docs e /docs/getting-started, mas não a /docs-archive; a barra final é ignorada e você pode colar uma URL completa — apenas o caminho dela é usado. Regras de exclusão prevalecem sobre regras de inclusão. As mesmas regras valem para o sitemap e para cada ressincronização posterior dessa fonte.

Com que frequência a Respondo rastreia meu site novamente?

Cada fonte de site tem um agendamento Auto-refresh no painel de páginas: Off (desligado), Daily (a cada 24 horas) ou Weekly (a cada 7 dias). Um rastreamento agendado é incremental: páginas cujo lastmod no sitemap é anterior ao rastreamento anterior são puladas, páginas inalteradas não são reindexadas, páginas alteradas são reindexadas e páginas que desapareceram são removidas. Para atualizar imediatamente, use Re-sync no menu da fonte ou Re-sync all na página Knowledge.

"Não conseguimos ler o site desta vez" — o que aconteceu?

É a falha genérica: o site não respondeu a tempo, o domínio não foi resolvido, o servidor retornou um erro, a página inicial não tinha texto legível ou o endereço não foi encontrado. O detalhe é exibido na fonte. Verifique se a URL abre em uma janela anônima do navegador, se não há erro de digitação no domínio e se a página inicial é uma página de conteúdo real, e não uma tela de login. Redes sociais e plataformas de mensagens (Facebook, Instagram, LinkedIn, X, YouTube e similares) não podem ser importadas — são rejeitadas antes de o rastreamento começar. Suas páginas existentes são mantidas; uma fonte agendada tenta novamente na próxima execução; caso contrário, ressincronize quando o site voltar a ficar acessível.

O que significam "nosso índice de busca está cheio" e "não conseguimos indexar esta fonte"?

Ambos aparecem depois que o conteúdo foi lido com sucesso. Índice cheio significa que o índice de busca para o qual esta fonte é copiada não tem espaço do lado da Respondo — um limite da Respondo, não um problema com seu conteúdo. As páginas estão armazenadas, tudo o que já foi indexado continua respondendo, nossa equipe é notificada automaticamente e a fonte será indexada assim que houver espaço; ressincronizar antes falhará da mesma forma. Não conseguimos indexar esta fonte significa que a construção do índice de busca falhou desta vez — um erro temporário do nosso lado; os dados existentes estão intactos e a tarefa é repetida automaticamente. Se qualquer uma das mensagens persistir, use "Perguntar ao Copilot" no erro.

Páginas longas são respondidas apenas pelo início?

Não. Cada página rastreada é dividida em trechos sobrepostos de cerca de 1.600 caracteres, cada um indexado separadamente com o título da página anexado, de modo que uma resposta pode vir de qualquer parte de um artigo longo. As citações continuam mostrando um link por página. Páginas importadas antes dessa mudança são redivididas nas próximas ressincronizações.

Como obtenho ajuda com um erro de rastreamento?

Todo erro de rastreamento ou indexação na página Knowledge vem com um botão Perguntar ao Copilot. Ele abre o Copilot com o erro anexado, e o Copilot responde a partir da própria documentação de ajuda da Respondo com passos concretos para o seu caso. Essa ajuda é gratuita — não conta nas suas solicitações de IA. Se os passos não resolverem, diga isso — "não ajudou" já basta. O Copilot então oferece um cartão que entrega o problema à equipe da Respondo: o cartão lista exatamente o que será enviado, nada sai até você confirmar, e a resposta deles chega na mesma conversa do Copilot. Se não for possível encaminhar daqui, o Copilot avisa claramente em vez de ficar em silêncio.

Mensagens que não chegam ao cliente#

Uma resposta diz "Not delivered" — o que isso significa e por onde começo?

Toda mensagem enviada pela caixa de entrada traz um indicador de entrega: Queued (respostas escritas em sequência são combinadas e saem como um único e-mail em poucos minutos), Sending…, Sent, Delivered ou uma falha em vermelho. As falhas vêm em três formas: Not delivered — o canal recusou a mensagem; Bounced, com o subtipo do retorno ao lado — o servidor de e-mail do destinatário rejeitou a mensagem; e Marked as spam — o destinatário a denunciou. Passe o mouse sobre o rótulo ou clique nele: a dica traz as próprias palavras do provedor, incluindo o diagnóstico SMTP bruto no caso de um retorno. Ao lado ficam no máximo duas ações — Retry / Send again, que realmente reenvia, e Ask Copilot (perguntar ao Copilot), que abre o Copilot com o erro anexado. Se não houver nenhum botão de reenvio, o endereço está bloqueado e enviar de novo falharia da mesma forma. Um Sent ou Delivered acompanhado de N files not delivered significa que o texto chegou, mas um anexo não — aquele canal não conseguiu transportar o arquivo.

Por que meu e-mail não chegou ao cliente?

São quatro coisas diferentes, e o rótulo as distingue. Um retorno permanente significa que o endereço não existe ou recusa mensagens — não há botão de reenvio, e o endereço entra na lista de supressão. Um retorno temporário é uma caixa cheia ou um problema passageiro no servidor de destino; Send again fica disponível e normalmente funciona mais tarde. Um retorno cujo diagnóstico menciona SPF, DKIM, DMARC ou 5.7.515 é outra história: o sistema de e-mail do destinatário rejeitou a mensagem porque seu domínio de envio não passou na verificação de autenticação. Uma nova resposta vai retornar exatamente do mesmo jeito até o domínio ser corrigido; então responda por outro canal enquanto isso e conserte os registros DNS do canal de e-mail em Settings → Channels. Por fim, Marked as spam significa que o destinatário apertou "denunciar spam": o endereço é suprimido e paramos de enviar para ele. Um relatório de campanha pode ainda mostrar The email provider rejected this message — uma recusa definitiva antes mesmo de o e-mail sair, em geral um domínio de envio não verificado ou um endereço malformado — e The email provider rejected our credentials, que é um problema de configuração do workspace, e não algo relativo àquele contato.

O que é a lista de supressão e como um endereço sai dela?

É uma lista, privada do seu workspace, de endereços de e-mail para os quais a Respondo se recusa a enviar. Um endereço entra nela quando uma mensagem sofre um retorno permanente (uma rejeição definitiva), quando alguém denuncia um dos seus e-mails como spam ou quando ele é bloqueado manualmente. Retornos temporários nunca suprimem um endereço. Enquanto o bloqueio estiver ativo, as entregas de campanha para ele são puladas com This address is blocked after an earlier bounce or complaint, e uma resposta na caixa de entrada é barrada antes de sair. Só o destinatário real da mensagem é suprimido — uma notificação de retorno não consegue bloquear um endereço qualquer. O painel não tem uma tela para essa lista: um proprietário ou administrador pode lê-la com GET https://api.respondo.ai/api/v1/integrations/email/suppressions e remover uma entrada com DELETE https://api.respondo.ai/api/v1/integrations/email/suppressions/<email>, ou pedir isso ao suporte da Respondo. Só libere um retorno permanente quando souber que a caixa postal foi de fato corrigida — enviar de novo para um endereço morto prejudica a reputação do seu domínio.

O WhatsApp não aceita minha resposta — a janela de 24 horas

O WhatsApp permite que uma empresa envie mensagens livres apenas dentro de 24 horas após a última mensagem do cliente; depois disso, a Meta recusa tudo com o erro 131047. A Respondo acompanha essa janela por pessoa e, quando sabe que ela expirou, interrompe a resposta antes do envio. Quando a Respondo não tem registro algum de janela — um contato importado ou um número que nunca escreveu para você — ela não bloqueia: a mensagem vai para a Meta e a Meta decide. Existem exatamente dois caminhos. Espere o cliente escrever de novo — a mensagem dele reabre a janela por mais 24 horas e sua resposta então passa — ou envie um modelo aprovado pela Meta. Modelos não podem ser enviados pelo campo de redação da conversa. Gerencie-os em Outbound → WhatsApp templates: Sync traz o que já está registrado no seu número, New template submete um à Meta, cuja revisão leva um dia ou mais. Depois envie um modelo aprovado por uma campanha outbound direcionada àquele contato. Um modelo alcança pessoas dentro e fora da janela igualmente, mas só enquanto o status dele for approved.

"That channel is disconnected" / "That channel is not connected" — canal desconectado ou inexistente

Disconnected significa que a integração existe, mas não está mais ativa — o token de acesso foi revogado ou expirou, ou alguém a desconectou. Not connected significa que o endereço do contato não tem integração alguma por trás. Os dois se resolvem em Settings → Channels, onde os canais desconectados ficam agrupados sob um título próprio, com um botão Reconnect em cada cartão; reconecte e depois reenvie a mensagem. Dois casos vizinhos parecem iguais, mas não são: um canal de e-mail cujo domínio de envio não está verificado não pode ser colocado em Live e não envia nada até que DKIM e SPF sejam confirmados; e um canal somente de recebimento recusa mensagens de saída por definição, então Retry nunca vai funcionar ali.

"No channel to reach this person on" / "No email address on this contact" — sem canal ou sem endereço

Os dois aparecem no relatório de entrega de uma campanha, e não na caixa de entrada. O primeiro significa que nenhum dos endereços do contato coincide com os canais em que a campanha envia; se o único endereço dele estiver em um canal somente de recebimento, isso é relatado separadamente como uma exclusão deliberada. O segundo significa que a campanha envia e-mail e o contato não tem endereço cadastrado. O Telegram tem sua própria variante: se a pessoa nunca escreveu para o seu bot, não existe conversa para escrever, porque a Bot API proíbe um bot de iniciar o contato — ela precisa mandar a primeira mensagem. Resolva adicionando o endereço que falta ao contato, ampliando os canais que a campanha usa ou deixando que ela recorra ao e-mail.

O contato cancelou a inscrição — o que posso enviar?

They had already unsubscribed significa que o contato tem um opt-out global — definido pelo link de cancelamento em um dos seus e-mails, trazido por uma importação ou alternado por um colega. Campanhas e séries pulam esses contatos em todos os canais, não só no e-mail, e a entrega é registrada como exclusão, não como falha. Uma resposta individual de um colega dentro de uma conversa deliberadamente não é bloqueada por isso: o opt-out diz respeito a disparos em massa, e responder a alguém que escreveu para você é uma decisão humana. O estado aparece no contato como Outbound: Subscribed / Unsubscribed, a lista de contatos pode ser filtrada por ele, e o botão Re-subscribe no contato reverte a situação — use isso apenas quando a pessoa tiver pedido.

Quantas vezes vocês tentam de novo, e apertar Retry é seguro?

Uma resposta da caixa de entrada é entregue a uma fila que faz até cinco tentativas, esperando cerca de 3, 10, 30 e 30 minutos entre elas. Só falhas passageiras são repetidas — tempos esgotados, conexões recusadas, limites de taxa, erros do próprio servidor do provedor. Uma recusa definitiva (endereço desconhecido, domínio de envio não verificado, credenciais rejeitadas) é marcada como falha na hora, porque repetir traria a mesma resposta. As entregas de campanha rodam em uma fila própria, com até seis tentativas e esperas mais curtas — 5 segundos, 30 segundos, 2 minutos, 10 minutos; quando elas acabam, a entrega é encerrada com Delivery kept failing and was stopped after several attempts em vez de ficar presa em "queued" para sempre. Apertar Retry manualmente é seguro. A ação só age sobre uma mensagem que está realmente em estado de falha e, no caso do e-mail, primeiro pergunta ao provedor o que aconteceu com o original: se aquele e-mail de fato saiu, a linha muda para entregue em vez de mandar uma segunda cópia, e um reenvio real parte com uma nova chave de idempotência. Onde uma segunda cópia seria errada — um retorno permanente, uma denúncia de spam, um envio ainda em andamento — o botão não aparece ou a tentativa é recusada com o motivo.

A causa ainda não está clara — como consigo ajuda?

Toda mensagem que falhou traz um botão Ask Copilot ao lado. Ele abre o Copilot com o erro, o canal e a conversa anexados, e o Copilot responde a partir da própria documentação de ajuda da Respondo com passos para exatamente aquela falha. Essa ajuda é gratuita — não conta nas suas solicitações de IA. Se os passos não resolverem, diga isso — "não ajudou" já basta. O Copilot então oferece um cartão que entrega o problema à equipe da Respondo: o cartão lista exatamente o que será enviado, nada sai até você confirmar, e a resposta deles chega na mesma conversa do Copilot. Se não for possível encaminhar daqui, o Copilot avisa claramente em vez de ficar em silêncio.