Principal Canais e caixas de entrada
📲

Canais e caixas de entrada

Como conectar e configurar Instagram, Web Widget e e-mail.
Ian Kraskoff Fabrício Rissetto Tech
Por Ian Kraskoff and 3 outros
15 artigos

Como conectar o Instagram ao Cloud Chat

Quando usar - Você quer atender DMs do Instagram dentro do Cloud Chat - Você quer responder a respostas de Stories sem alternar entre Instagram e Cloud Chat - Você está montando uma caixa para integração com a página do Facebook + Instagram Pré-requisitos - Estar logado como administrador no Cloud Chat - Conta do Facebook Business vinculada à conta do Instagram - Permissão para administrar a página do Facebook ligada ao Instagram Sobre este tutorial Neste artigo você aprende a conectar a caixa do Instagram ao Cloud Chat. Como o Instagram é integrado - DMs e respostas a Stories — capturados normalmente e aparecem no feed de conversas - Menções em Stories (quando alguém marca o perfil da empresa) — não são consideradas como conversa e não aparecem no feed Passo a passo Etapa 1 — Acessar Configurações de caixa 1. Vá em Configurações 1. Selecione Caixa de entrada 1. Clique em Adicionar caixa de entrada Etapa 2 — Escolher Messenger e autenticar 1. Escolha Messenger 1. Clique em Continue with Facebook (se necessário, faça login com sua conta do Facebook) Etapa 3 — Selecionar a página do Facebook 1. Selecione Edit previous settings 1. Escolha Opt in to current pages only e selecione a página que deseja conectar :::warning Em caso de multi-conta, garanta que você não vai desmarcar as contas conectadas anteriormente nas configurações subsequentes. ::: 1. Selecione o seu negócio 1. Selecione a conta do Instagram que deseja conectar 1. Aceite os termos da Meta / Instagram Etapa 4 — Configurar a caixa no Cloud Chat 1. No Cloud Chat, selecione a caixa do Instagram que deseja habilitar 1. Defina o nome da caixa e clique em Criar caixa de entrada 1. Escolha os agentes que vão atender essa caixa 1. Clique em Adicionar agentes :::success Pronto! A caixa do Instagram está conectada ao Cloud Chat. ::: Caso já tenha outra integração — Configurar destinatário principal :::warning Se você possui (ou já possuiu) outra integração no Messenger/Instagram, garanta que o destinatário principal das mensagens está configurado para o Cloud Chat. ::: Etapa 1 — Acessar configurações avançadas 1. Acesse Configurações → Configurações da Página → Configurações avançadas de mensagens Etapa 2 — Configurar destinatário do Messenger Vá em Destinatário do Messenger → Configurar → Destinatário principal do protocolo de transferência e selecione CloudHumans. Etapa 3 — Configurar destinatário do Instagram Vá em Destinatário do Instagram → Configurar → Destinatário principal do protocolo de transferência e selecione CloudHumans. Observações - Para conectar WhatsApp (também Meta): FAQ — Integração com WhatsApp: perguntas frequentes - Para conectar Web Widget ao site: Como instalar o Web Widget do Cloud Chat no site e passar dados do contato - Para entender quais perfis atendem a caixa: Tipos de permissões e perfis de usuários no Cloud Chat

Última atualização em Aug 19, 2026

Como instalar o Web Widget do Cloud Chat: público, com dados ou em área logada (HMAC)

Quando usar - Você quer adicionar o chat do Cloud Chat em qualquer página do seu site - Você quer passar dados do contato automaticamente (nome, e-mail, telefone, atributos) sem o cliente digitar - Você quer validar a identidade do usuário (HMAC) para impedir que alguém se passe por outra pessoa - Você quer permitir múltiplas conversas simultâneas e dar acesso ao histórico dentro do widget - Você quer restringir o widget a domínios específicos (ex: produção apenas) Pré-requisitos - Estar logado como administrador no Cloud Chat - Acesso ao código fonte do site onde o widget vai ser instalado - Para Cenário 3 (área logada com HMAC): backend próprio para gerar o identifier_hash — não pode ser feito no frontend (expõe a chave secreta) Sobre este tutorial Esse artigo cobre o ciclo completo de instalação do Web Widget do Cloud Chat. Antes de seguir o passo a passo de código, você precisa decidir qual dos 3 cenários se encaixa no seu uso — eles têm requisitos e complexidade muito diferentes. Qual cenário é o seu? | Cenário | Quando usar | Passa dados do cliente? | Precisa de HMAC? | | --- | --- | --- | --- | | 1. Widget público (sem dados) | Site público / landing page / blog. O cliente digita o próprio nome e e-mail ao iniciar a conversa. | ❌ Não | ❌ Não | | 2. Widget com dados, fora de área logada | Páginas que já conhecem o contato mas não exigem autenticação forte (ex: link único enviado por e-mail/CRM, formulário pós-cadastro). | ✅ Sim | ❌ Não | | 3. Widget em área logada (com HMAC) | Portal do cliente, dashboard interno, app autenticado. Qualquer cenário onde o usuário precisa fazer login pra acessar. | ✅ Sim | ✅ Obrigatório | :::warning Se o seu caso é o Cenário 3 (área logada), você precisa configurar o HMAC. Sem ele a conversa não será criada. ::: :::info O atributo personalizado do contato deve ser criado previamente — ver Como criar campos customizados de contatos e conversas. ::: Etapa comum a todos os cenários — Criar a caixa de entrada do tipo Web Widget Antes de configurar qualquer cenário, você precisa criar uma caixa de entrada do tipo Website no Cloud Chat. O caminho é o mesmo para os 3 cenários. 1. Acessar a tela de Caixas de Entrada No painel do Cloud Chat, vá em Configurações → Caixas de Entrada e clique no botão Adicionar Caixa de Entrada (canto superior direito). 2. Escolher o canal Website Selecione o card Website na grade de canais disponíveis. 3. Configurar o canal do website Preencha os campos: - Nome do site — nome exibido pro cliente (ex: "Cloud Humans") - Domínio do website — domínio onde o widget vai rodar (ex: cloudhumans.com) - Cor do Widget — cor primária do botão e cabeçalho - Seja bem-vindo — título inicial do widget (ex: "Olá!") - Bem-vindo, saudação — mensagem de boas-vindas - Ativar saudação do canal — se quer enviar mensagem automática ao iniciar conversa Clique em Criar caixa de entrada. 4. Adicionar agentes Selecione os agentes que terão acesso a essa caixa de entrada. Como administrador, adicione-se a si mesmo se quiser visualizar todas as conversas. Clique em Adicionar agentes. 5. Configuração do script Na tela final (“Sua caixa de entrada está pronta!”), o Cloud Chat exibe o script básico de instalação do widget. Porém, existem outras opções de configuração que podem ser utilizadas dependendo do seu cenário. Clique em Mais configurações. Nessa seção, você verá as três opções de script disponíveis para instalação, que explicaremos abaixo. :::success Pronto. Agora vá pro cenário que se aplica ao seu caso (1, 2 ou 3 abaixo) e siga as instruções específicas de cada um. ::: Cenário 1 — Web Widget público (sem passar dados do cliente) Use quando o widget fica numa página pública (landing, blog, site institucional). O cliente digita o próprio nome / e-mail / telefone ao iniciar a conversa. Como instalar Cole o script copiado na Etapa Comum (Passo 5) logo antes do fechamento da tag </body> no HTML da página: :::info É só isso. Esse cenário não exige nada além do script base. Não chame setUser(), não passe identifier_hash. O cliente preenche os próprios dados no formulário inicial do widget. ::: Cenário 2 — Web Widget passando dados do cliente, fora de área logada Use quando você já conhece o contato mas a página não exige login. Exemplos: - Link único enviado por e-mail ou WhatsApp com o identifier na URL - Página pós-cadastro (o cliente acabou de preencher um formulário) - Página acessada via deep link de campanha de CRM Aqui você quer pré-preencher nome, e-mail, telefone e atributos personalizados sem o cliente digitar. Como instalar :::error ⚠️ O primeiro argumento de setUser(...) é o identifier — precisa ser único por usuário (ID interno, UUID do banco, etc). Se você deixar o identifier chumbado (valor fixo, copiado do exemplo, ou um placeholder), o Cloud Chat mescla todos os acessos como o mesmo contato — funde tickets de pessoas diferentes na mesma conversa e quebra o histórico irreversivelmente. Antes de subir pra produção, confirme com seu time de engenharia que o identifier está sendo populado dinamicamente com o ID real do usuário. ::: :::info Você precisa passar pelo menos o e-mail ou o telefone — são os identificadores que o Cloud Chat usa para fazer match com o contato. ::: Cenário 3 — Web Widget em área logada (com HMAC + opcionalmente múltiplas conversas) Use quando o widget fica dentro de área logada (portal do cliente, dashboard, app autenticado). Aqui o HMAC é obrigatório. Esse cenário também é o único onde faz sentido habilitar múltiplas conversas + histórico. 3.1 — Como funciona o HMAC A validação usa HMAC SHA-256: um código gerado a partir do identifier do usuário combinado com uma chave secreta (token) da caixa de entrada. :::warning A geração do identifier_hash é responsabilidade do cliente. O cálculo precisa acontecer no backend (servidor), nunca no navegador, se a chave secreta vazar no front-end, a proteção deixa de existir. A Cloud Humans fornece o token por caixa de entrada; implementar o cálculo e a entrega do hash ao widget é responsabilidade da equipe técnica do cliente. ::: 3.2 — Copiar o token da caixa de entrada Em Configurações → Caixas de Entrada → (sua inbox Website) → Configurações avançadas → Validação de Identidade do Usuário → Copiar. Esse token é secreto — guarde apenas no backend, nunca no frontend. 3.3 — Calcular o identifier_hash no backend Quando o usuário se autentica no seu sistema, o backend calcula: identifier_hash = HMAC_SHA256(token_da_inbox, identifier) Onde identifier é o ID único do usuário (UUID interno, e-mail corporativo, etc). Exemplos server-side: // Node.js const crypto = require('crypto'); const hash = crypto .createHmac('sha256', '<token-da-inbox>') .update('<identifier>') .digest('hex'); # Python import hashlib, hmac hash = hmac.new(b'<token-da-inbox>', b'<identifier>', hashlib.sha256).hexdigest() // PHP $identifier_hash = hash_hmac('sha256', '<identifier>', '<token-da-inbox>'); 3.4 — Enviar o hash no widget via setUser <script> (function(d,t) { var BASE_URL="https://cloudchat2.cloudhumans.com"; var g=d.createElement(t),s=d.getElementsByTagName(t)[0]; g.src=BASE_URL+"/packs/js/sdk.js"; g.defer = true; g.async = true; s.parentNode.insertBefore(g,s); g.onload=function(){ window.cloudchatSDK.run({ websiteToken: 'SEU_TOKEN_AQUI', baseUrl: BASE_URL }); window.addEventListener('cloudchat:ready', function() { window.$cloudchat.setUser('<identifier-do-usuario>', { identifier_hash: '<hash-gerado-no-backend>', email: '[email protected]', name: 'João da Silva', phone_number: '+5511999999999' }); }); } })(document,"script"); </script> 3.5 — Forçar a validação na caixa de entrada Ainda em Configurações avançadas, marque "Forçar validação de identidade do usuário" → Habilitado. A partir daí, requisições sem um identifier_hash válido são rejeitadas. :::error Ative o "Forçar validação" somente depois que o backend já estiver enviando o identifier_hash correto. Se ativar antes, todas as conversas que não enviam o hash passam a ser rejeitadas e o chat para de funcionar. Teste primeiro numa caixa de entrada de homologação. ::: :::success Boas práticas: - Use um identifier estável — nunca mude o identificador de um usuário existente - Não exponha o token HMAC no frontend - Gere o hash sempre no backend e envie ao cliente apenas no momento de inicializar o widget - Regenere o identifier_hash toda vez que o widget for carregado para um usuário autenticado ::: 3.6 — (Opcional) Habilitar múltiplas conversas e histórico Com o HMAC já funcionando, você pode habilitar a feature de múltiplas conversas + histórico: o mesmo usuário consegue manter vários atendimentos abertos em paralelo e ver o histórico de conversas já encerradas dentro do próprio widget. Útil para SaaS, B2B ou e-commerce com alta recompra/recontato. Como o usuário vê: o widget passa a exibir duas abas — Conversas ativas (em aberto) e Histórico de conversas (encerradas, com busca por data inicial, data final e ID do ticket; carrega 5 por vez). Vídeos demonstrativos: https://www.loom.com/share/5e1ffa9996814752b4e745191d5059f7 https://www.loom.com/share/184de48c78c440dfaf6169c14b244f94 Como ativar: 1. No painel do Cloud Chat, vá em Caixas de Entrada → (sua inbox Website) → Configuração 2. Ative a flag Múltiplas conversas por usuário 3. Copie o novo script exibido após a ativação — ele já vem com user_id e identifier_hash no formato correto 4. Substitua o script atual da página pelo novo :::error A feature de múltiplas conversas e histórico depende do HMAC estar ativo e funcionando. Não habilite em widget público (Cenário 1) nem em widget sem área logada (Cenário 2) — sem validação de identidade, qualquer um consegue acessar o histórico de outro usuário. ::: Validação de Domínio (opcional, todos os cenários) Configure os domínios onde o widget pode funcionar — útil para evitar uso fora dos domínios autorizados (staging, terceiros não autorizados). Em Caixas de Entrada → (sua inbox) → Configuração, na seção Validação de Domínio: | Configuração | Comportamento | | --- | --- | | Campo vazio | Sem restrições — funciona em qualquer domínio | | example.com | Permite uso apenas nesse domínio | | *.example.com | Permite uso em todos os subdomínios (ex: app.example.com, login.example.com) | Como testar 1. Abra a página com o widget instalado 2. Verifique se o widget aparece no canto da tela 3. Cenário 2 e 3: confirme que nome, e-mail, telefone e atributos já aparecem preenchidos sem o cliente digitar 4. Cenário 2 e 3: teste com pelo menos 2 usuários diferentes — abra o widget com um, depois com outro, confira no painel se aparecem como contatos separados (não mesclados num só). Se aparecerem mesclados, o identifier está fixo — corrija antes de subir pra produção 5. Cenário 3: teste com um identifier_hash inválido e confirme que o widget rejeita a requisição quando "Forçar validação" está habilitado 6. Cenário 3 com múltiplas conversas: abra dois tickets em paralelo e confirme que aparecem como conversas separadas dentro do widget Perguntas frequentes O que acontece se já existir uma informação anterior do contato? A nova informação enviada via script sobrescreve os dados antigos. O dado mais recente prevalece. E se eu errar o nome de algum campo personalizado? Nenhum erro é lançado. O campo incorreto é ignorado silenciosamente. Apenas os campos existentes são atualizados. Posso passar atributos da conversa também? :::warning Não por enquanto. A passagem de atributos personalizados da conversa não foi lançada na versão atual (v0) por limitações técnicas. Use o formulário no início da conversa como alternativa. ::: Que tipos de formatação o widget aceita? O Widget aceita a maioria dos formatos do Markdown: - Negrito / Tachado / Itálico - Bloco de código - Links - Imagens - Bullet points Posso usar HMAC sem ativar múltiplas conversas? Sim. HMAC é uma camada de segurança independente — você pode ativar só o HMAC (Cenário 3, passos 3.1 a 3.5) sem habilitar múltiplas conversas (passo 3.6). O contrário não é recomendado. Posso usar tudo isso em apps mobile? Sim, via WebView. Veja Como integrar o Web Widget em aplicativos mobile. Observações - Para compartilhar a sessão do widget entre abas do navegador: Como compartilhar a sessão do Web Widget entre abas do navegador - Para usar o widget em apps mobile via WebView: Como integrar o Web Widget em aplicativos mobile - Para criar atributos personalizados antes de passar via script: Como criar campos customizados de contatos e conversas - Para ativar continuidade de conversa por e-mail: Como habilitar continuidade de conversas por e-mail - Para ativar o widget no Portal de Ajuda: Como ativar o Web Widget no Portal de Ajuda

Última atualização em May 26, 2026

Como conectar uma caixa de e-mail ao Cloud Chat (Google, Microsoft, IMAP/SMTP)

Quando usar - Você quer conectar uma caixa de e-mail ao Cloud Chat para receber e responder e-mails de clientes na mesma inbox que chat e WhatsApp - Sua caixa é Gmail / Google Workspace, Outlook / Microsoft 365 ou de outro provedor (Zimbra, Yahoo, provedor próprio, etc.) - Você precisa reconectar uma caixa existente que está com erro Pré-requisitos :::error Desligue a ClaudIA para a caixa que está criando antes da conexão. Quando um e-mail novo é conectado, o Cloud Chat puxa o histórico de e-mails como novas conversas — se a ClaudIA estiver ligada, ela passará a respondê-los. ::: - Estar logado como administrador no Cloud Chat - O e-mail deve ser uma caixa de usuário (login + senha) — não pode ser grupo - Para Microsoft: o e-mail precisa ser a conta principal da conta Microsoft - Para IMAP/SMTP: acesso às configurações do provedor para ativar IMAP e obter endereço/porta dos servidores Sobre este tutorial O Cloud Chat suporta três caminhos para conectar uma caixa de e-mail: - Google (OAuth) — para Gmail e Google Workspace, via Sign in with Google - Microsoft (OAuth) — para Outlook.com e Microsoft 365, via Sign in with Microsoft - Outros provedores (IMAP/SMTP) — para qualquer outro provedor, com configuração manual :::info Google e Microsoft deprecaram suporte a integrações via IMAP — para esses dois, usamos integrações nativas (OAuth). Para todos os outros provedores, IMAP/SMTP é o caminho. ::: Pule direto para a etapa do seu provedor: - Caminho A — Google (Gmail / Workspace) - Caminho B — Microsoft (Outlook / 365) - Caminho C — Outros provedores via IMAP/SMTP Vídeos de referência: https://www.loom.com/embed/f97da4387d464ce998ca54a6c271dcc9 https://www.loom.com/embed/c28480dab2b5482c93f2801b4c9355a9 https://www.loom.com/embed/1114432b7f2a4c8b99f592b9dd002a3f Passo a passo Etapa 1 — Acessar Configurações de caixa 1. Acesse Configurações no Cloud Chat 1. Vá em Caixa de Entrada → Adicionar Caixa de Entrada 1. Selecione o canal E-mail — em seguida escolha o provedor (Google, Microsoft ou Outros provedores) Caminho A — Google (Gmail / Workspace) Use quando a caixa for Gmail ou Google Workspace — integração via OAuth (Sign in with Google). :::info O aplicativo de conexão nativa com o Gmail está em fase beta aguardando aprovação do Google, mas está funcional. ::: 1. Selecione Google como provedor Após selecionar E-mail, clique em Google. 2. Faça o login Google 1. Insira o endereço de e-mail que deseja conectar 1. Clique em Sign in with Google e siga o login Google 2. Selecione a conta e aceite as permissões solicitadas 3. Adicione os agentes Selecione os agentes que terão acesso à caixa. :::success Pronto! A caixa Gmail está integrada ao Cloud Chat. ::: Limitações de sincronização (Google): - Apenas mensagens da Caixa de Entrada são sincronizadas para o Cloud Chat - Mensagens em outras pastas ou em spam não são sincronizadas automaticamente Para mover mensagens de spam automaticamente, crie uma regra no Gmail: https://www.loom.com/share/4dde1712265c411c841c37d7a1e264df Caminho B — Microsoft (Outlook / 365) Use quando a caixa for Outlook.com ou Microsoft 365 — integração via OAuth (Sign in with Microsoft). 1. Habilite POP/IMAP no Outlook 1. Acesse Settings → Mail → Forwarding and IMAP em outlook.live.com 1. No bloco POP and IMAP, ative Let devices and apps use IMAP 1. Clique em Save 2. Confirme que o e-mail é o principal 1. Acesse Minha Conta Microsoft → Suas Informações → Editar Informações da Conta 2. Verifique que o e-mail a conectar é a conta principal :::warning Se o e-mail não for o principal, marque-o como tal clicando em Tornar o principal. Caixas secundárias não conseguem conectar. ::: 3. Faça o login Microsoft no Cloud Chat Após selecionar E-mail e escolher Microsoft: 1. Informe o endereço de e-mail 2. Clique em Sign in with Microsoft — você será redirecionado ao login Microsoft :::warning Se você tem outras contas Microsoft na mesma máquina, uma delas pode vir preenchida automaticamente. Faça logout da conta Microsoft anterior antes ou — recomendado — faça a configuração em aba anônima. ::: 4. Adicione os agentes Após o redirecionamento de volta ao Cloud Chat, selecione os agentes que terão acesso e clique em Adicionar agentes. :::success Pronto! Sua caixa Outlook/Microsoft 365 está integrada ao Cloud Chat. ::: Caminho C — Outros provedores via IMAP/SMTP Use quando a caixa for de qualquer outro provedor (Zimbra, Yahoo, provedor próprio etc.) — configuração manual via IMAP/SMTP. 1. Ative IMAP no provedor 1. Acesse as configurações do seu e-mail 2. Ative o encaminhamento IMAP 3. Copie as informações de conexão (endereço, porta) 2. Nomeie a caixa no Cloud Chat Após selecionar E-mail e escolher Outros provedores: 1. Nomeie a caixa e insira o e-mail 1. Clique em Criar canal de e-mail 3. Adicione agentes Selecione os agentes que vão atuar na caixa e clique em Adicionar agentes. 4. Configure o IMAP 1. Clique em Mais configurações 1. Vá em Configuração e ative o IMAP 1. Insira endereço, porta, login e senha :::warning Se o provedor tem autenticação de dois fatores, use a senha de app gerada — não a senha pessoal. ::: Endereço e porta padrão (exemplos): | Provedor | Endereço IMAP | Porta | | --- | --- | --- | | Google | imap.gmail.com | 993 | 1. Clique em Atualizar as configurações de IMAP 5. Configure o SMTP 1. Ative o SMTP 1. Insira endereço, porta, login e senha (autenticação de dois fatores: use a senha de app) Endereço e porta padrão (exemplos): | Provedor | Endereço SMTP | Porta | | --- | --- | --- | | Google | smtp.gmail.com | 587 | 1. No campo Domínio, insira o mesmo do endereço do SMTP :::info Para a maioria dos casos, mantenha as opções de criptografia, SSL e autenticação no padrão (STARTTLS, none, login). ::: 1. Clique em Atualizar a configuração de SMTP :::success Pronto! Sua caixa de e-mail está conectada ao Cloud Chat. ::: Reconectar em caso de erro Vale para caixas Google e Microsoft (caminhos A e B). Em caso de erro, a caixa de entrada exibe um alerta em vermelho. Para reconectar: 1. Acesse Configurações → Caixas de Entrada → Configurações 2. Na faixa vermelha, clique em Clique aqui para reconectar 3. Faça o login Google ou Microsoft novamente conforme o caminho original :::info Não é necessário excluir a caixa para reconectar. ::: Observações - Para enviar disparo proativo via e-mail: Como enviar mensagens proativas unitárias no Cloud Chat - Para habilitar continuidade de conversa entre canais (chat → e-mail): Como habilitar continuidade de conversas por e-mail - Erro 550 5.7.515 em Google Workspace: Como corrigir o erro 550 5.7.515 — Autenticação de e-mail via Google Workspace

Última atualização em May 26, 2026

Como integrar o Web Widget do Cloud Chat em aplicativos mobile

Quando usar - Você quer adicionar o Cloud Chat dentro de um app mobile (Flutter, React Native, iOS, Android) - Você não tem SDK nativo disponível ainda e quer uma solução funcional já - Você quer reaproveitar o Web Widget já configurado no painel do Cloud Chat Pré-requisitos - Ter uma caixa de entrada do tipo Web Widget já configurada — ver Como instalar o Web Widget do Cloud Chat no site - Acesso ao código fonte do app mobile pra adicionar uma WebView Sobre este artigo Atualmente, o Cloud Chat pode ser integrado em apps mobile por meio do Web Widget usando o componente WebView de cada plataforma. Como funciona O Web Widget do Cloud Chat é distribuído como um script JavaScript, gerado automaticamente durante a configuração de uma caixa de entrada do tipo Web Widget no painel. Esse script pode ser incorporado em uma WebView dentro do app mobile (Flutter, React Native, Android nativo, iOS nativo). Permite que o chat seja renderizado dentro do app, com experiência próxima à do Web Widget original. :::info Exemplo: em React Native, embute o widget num <WebView> apontando para a URL onde o script foi inserido — garantindo a comunicação completa com o Cloud Chat. ::: SDKs nativos :::warning Ainda não disponibilizamos SDKs nativos oficiais para Flutter, React Native, Android ou iOS. Temos planos de lançar SDKs no futuro, mas sem data definida. Enquanto isso, o uso via WebView é a única forma recomendada e suportada oficialmente. ::: Vantagens e limitações | Aspecto | WebView | | --- | --- | | Compatibilidade | Funciona em qualquer app com suporte a WebView | | Esforço de implementação | Baixo — basta incluir o script gerado pelo Cloud Chat | | Experiência de uso | Similar ao Web Widget | | Limitação | Menor flexibilidade de personalização e performance que um SDK nativo | Passo a passo Etapa 1 — Criar inbox Web Widget no Cloud Chat Crie uma nova caixa de entrada do tipo Web Widget no painel do Cloud Chat. Etapa 2 — Copiar o script Copie o script gerado na etapa de configuração da inbox. Etapa 3 — Hospedar uma página HTML simples Insira o script em uma página HTML simples hospedada pelo seu app (ou em servidor próprio). Etapa 4 — Carregar dentro da WebView Aponte a WebView do seu app para essa página HTML. Etapa 5 — Testar Valide a comunicação e a aparência do widget dentro do aplicativo. Roadmap :::info Estamos avaliando o desenvolvimento de SDKs nativos para Flutter e React Native, com recursos avançados como notificações push e controle de sessão nativo. No momento, sem data definida para lançamento. ::: Observações - Para o passo a passo completo de instalação do Web Widget no site (com passagem de dados do contato): Como instalar o Web Widget do Cloud Chat no site - Para sessão compartilhada entre abas/contextos: Como compartilhar a sessão do Web Widget entre abas do navegador - Para múltiplas conversas e histórico (área logada): Como ativar múltiplas conversas e histórico no Web Widget

Última atualização em Aug 19, 2026

Como compartilhar a sessão do Web Widget entre abas do navegador

Quando usar - O usuário abre o seu site em múltiplas abas e você quer que o widget reconheça a mesma identidade em todas - Sua aplicação permite múltiplas abas abertas simultaneamente - Você já usa (ou quer usar) Validação de Identidade do widget e quer evitar exigir login em cada aba Pré-requisitos - Web Widget já configurado com Validação de Identidade (Identity Validation) habilitada - user_id único por usuário no seu sistema - Backend disponível para gerar identifier_hash (opção recomendada) - Web Widget instalado — ver Como instalar o Web Widget do Cloud Chat no site Sobre este artigo Este guia explica como manter a mesma sessão de usuário do Web Widget Cloud Chat em duas ou mais abas, sem exigir que cada aba esteja autenticada. Cenário típico: o usuário abre o site em duas abas e inicia uma conversa pelo widget em uma delas. Na segunda aba, o widget deve reconhecer o mesmo usuário e exibir o mesmo histórico de conversas. Como funciona (explicação simplificada) 1. user_id = "nome no crachá" — identifica quem é o usuário 2. identifier_hash = "carimbo de autenticidade" — prova que o crachá é verdadeiro 3. O Cloud Chat confere o carimbo (usando uma chave secreta que só o servidor conhece) antes de liberar acesso ao histórico Fluxo entre abas :::info Ponto-chave: cada aba precisa chamar setUser() independentemente. O cookie cw_user_* é compartilhado automaticamente entre abas (mesmo domínio), mas o authToken interno do widget é por instância (por aba). Por isso, ambas as abas precisam ter acesso ao user_id e identifier_hash para inicializar corretamente. ::: Opção recomendada: Endpoint server-side Esta é a opção mais segura. O identifier_hash nunca é armazenado no navegador — é obtido sob demanda a partir de um endpoint protegido pela autenticação da sua aplicação. Backend (Node.js / Express) const crypto = require('crypto'); app.get('/api/widget-identity', authMiddleware, (req, res) => { const userId = String(req.user.id); const hmacToken = process.env.CLOUDCHAT_HMAC_TOKEN; const identifierHash = crypto .createHmac('sha256', hmacToken) .update(userId) .digest('hex'); res.json({ user_id: userId, identifier_hash: identifierHash, name: req.user.name, email: req.user.email, }); }); Backend (Ruby on Rails) class Api::WidgetIdentityController < ApplicationController before_action :authenticate_user! def show user_id = current_user.id.to_s hmac_token = ENV['CLOUDCHAT_HMAC_TOKEN'] identifier_hash = OpenSSL::HMAC.hexdigest('sha256', hmac_token, user_id) render json: { user_id: user_id, identifier_hash: identifier_hash, name: current_user.name, email: current_user.email } end end Backend (Python / Django) import hmac import hashlib from django.http import JsonResponse from django.contrib.auth.decorators import login_required from django.conf import settings @login_required def widget_identity(request): user_id = str(request.user.id) identifier_hash = hmac.new( settings.CLOUDCHAT_HMAC_TOKEN.encode(), user_id.encode(), hashlib.sha256 ).hexdigest() return JsonResponse({ 'user_id': user_id, 'identifier_hash': identifier_hash, 'name': request.user.get_full_name(), 'email': request.user.email, }) Frontend (qualquer aba) <script> window.cloudchatSettings = { // ... configurações do widget }; window.addEventListener('cloudchat:ready', async function () { try { const response = await fetch('/api/widget-identity', { credentials: 'include', }); if (!response.ok) { console.error('Falha ao obter identidade do widget'); return; } const { user_id, identifier_hash, name, email } = await response.json(); window.$cloudchat.setUser(user_id, { identifier_hash: identifier_hash, name: name, email: email, }); } catch (error) { console.error('Erro ao configurar usuário do widget:', error); } }); </script> :::success Vantagens: - O hmac_token nunca sai do servidor - O identifier_hash nunca é persistido no navegador - Cada aba obtém dados frescos, garantindo consistência - Logout retorna 401, e o widget não é identificado ::: Opção alternativa: localStorage (com ressalvas) Use somente se sua aplicação não tem backend disponível para fornecer o identifier_hash (SPAs puramente estáticas). :::warning Aviso de segurança: o localStorage é acessível por qualquer script JavaScript no mesmo domínio. Se o site for vulnerável a XSS, um atacante pode ler o identifier_hash armazenado. ::: Aba que gera os dados (ex: página de login) const userData = { user_id: '12345', identifier_hash: 'abc123def456...', name: 'Maria Silva', email: '[email protected]', }; localStorage.setItem('cloudchat_user', JSON.stringify(userData)); Qualquer aba que carrega o widget window.addEventListener('cloudchat:ready', function () { const stored = localStorage.getItem('cloudchat_user'); if (!stored) return; try { const { user_id, identifier_hash, name, email } = JSON.parse(stored); window.$cloudchat.setUser(user_id, { identifier_hash, name, email, }); } catch (e) { console.error('Dados do widget inválidos no localStorage'); localStorage.removeItem('cloudchat_user'); } }); Ao fazer logout localStorage.removeItem('cloudchat_user'); window.$cloudchat.reset(); Opção avançada: sessionStorage + BroadcastChannel Combina a não persistência do sessionStorage com sincronização entre abas via BroadcastChannel API. Os dados existem apenas enquanto pelo menos uma aba está aberta. Inicialização (em todas as abas) const CHANNEL_NAME = 'cloudchat-session'; const STORAGE_KEY = 'cloudchat_user'; const channel = new BroadcastChannel(CHANNEL_NAME); channel.onmessage = (event) => { if (event.data.type === 'session-data') { sessionStorage.setItem(STORAGE_KEY, JSON.stringify(event.data.payload)); initWidget(event.data.payload); } if (event.data.type === 'session-request') { const stored = sessionStorage.getItem(STORAGE_KEY); if (stored) { channel.postMessage({ type: 'session-data', payload: JSON.parse(stored) }); } } if (event.data.type === 'session-clear') { sessionStorage.removeItem(STORAGE_KEY); window.$cloudchat.reset(); } }; function initWidget(userData) { window.$cloudchat.setUser(userData.user_id, { identifier_hash: userData.identifier_hash, name: userData.name, email: userData.email, }); } window.addEventListener('cloudchat:ready', function () { const stored = sessionStorage.getItem(STORAGE_KEY); if (stored) { initWidget(JSON.parse(stored)); return; } channel.postMessage({ type: 'session-request' }); // Timeout: se nenhuma aba responder em 2s, esta é a primeira aba }); Ao autenticar (aba principal) const userData = { user_id, identifier_hash, name, email }; sessionStorage.setItem(STORAGE_KEY, JSON.stringify(userData)); channel.postMessage({ type: 'session-data', payload: userData }); initWidget(userData); Ao fazer logout sessionStorage.removeItem(STORAGE_KEY); channel.postMessage({ type: 'session-clear' }); window.$cloudchat.reset(); :::success Vantagens: - Dados não persistem após fechar todas as abas - Sincronização em tempo real entre abas - Sem dependência de cookies acessíveis por JS ::: :::warning Limitações: - BroadcastChannel não é suportado no IE11 (mas funciona em todos os navegadores modernos) - Se o usuário fechar todas as abas, precisa autenticar novamente ::: Segurança O que NUNCA fazer :::error Nunca exponha o hmac_token (chave secreta) no frontend. É a chave que o servidor usa para gerar o identifier_hash. Se um atacante a obtém, pode personificar qualquer usuário. // ❌ ERRADO const hmacToken = 'sua-chave-secreta-aqui'; const hash = CryptoJS.HmacSHA256(userId, hmacToken).toString(); ::: Riscos de armazenar identifier_hash no localStorage Contextualização do risco O identifier_hash por si só não é um segredo de alto valor: - É uma assinatura (HMAC) do user_id, não um token de acesso - Um atacante precisa do user_id correspondente E da validação HMAC ativa para personificar alguém - Não concede acesso a sistemas além do widget de chat - O impacto de vazamento é limitado: o atacante poderia, no máximo, abrir conversas no widget como aquele usuário Ainda assim, a opção server-side é preferível por eliminar a exposição. Tabela comparativa de armazenamento Boas práticas :::success 1. Proteja-se contra XSS — é a ameaça nº 1 para qualquer dado no navegador. Use Content Security Policy (CSP), sanitize inputs, mantenha dependências atualizadas 2. Gere identifier_hash no servidor, nunca no frontend 3. Use HTTPS sempre — sem exceções 4. Limite a superfície de ataque — carregue o widget apenas em páginas necessárias 5. Limpe dados ao fazer logout — remova localStorage/sessionStorage e chame $cloudchat.reset() ::: Referências: - OWASP HTML5 Security Cheat Sheet - Auth0 — Secure Browser Storage Reset de sessão Use window.$cloudchat.reset() para limpar a sessão. Internamente: 1. Fecha o chat se estiver aberto 2. Remove o cookie cw_conversation (token de sessão da conversa) 3. Remove o cookie cw_user_{websiteToken} (identidade do usuário) 4. Recarrega o iframe do widget, iniciando sessão limpa Quando usar Exemplo: logout completo function onLogout() { // 1. Limpar dados armazenados (se localStorage) localStorage.removeItem('cloudchat_user'); // 2. Resetar o widget if (window.$cloudchat) { window.$cloudchat.reset(); } // 3. Redirecionar para página de login window.location.href = '/login'; } Troubleshooting Problema: Widget mostra "Iniciar nova conversa" em vez do histórico Causa provável: setUser() não foi chamado, ou foi chamado com identifier_hash inválido. Solução: 1. Verifique no console se há erros de rede (HTTP 401 no endpoint /widget/contact) 2. Confirme que o identifier_hash foi gerado com o hmac_token correto 3. Confirme que o user_id passado para setUser() é o mesmo usado para gerar o hash Problema: Abas mostram usuários diferentes Causa provável: cada aba está chamando setUser() com dados diferentes. Solução: 1. Endpoint server-side: confirme que ambas as abas chamam o mesmo endpoint e usuário logado 2. localStorage: verifique se os dados foram gravados antes da segunda aba ler Problema: Após logout, widget ainda mostra dados do usuário anterior Causa provável: $cloudchat.reset() não foi chamado, ou os cookies não foram limpos. Solução: 1. Chame window.$cloudchat.reset() antes ou durante o logout 2. Limpe localStorage/sessionStorage se estiver armazenando dados lá 3. Verifique se o cookie cw_user_* foi removido (DevTools → Application → Cookies) Problema: setUser() lança erro "Identifier should be a string or a number" Causa: o user_id está como undefined, null ou objeto. Solução: garanta que é string ou número: window.$cloudchat.setUser(String(userData.user_id), { ... }); Problema: setUser() lança erro "User object should have one of the keys..." Causa: o objeto não contém nenhuma das chaves obrigatórias. Solução: inclua ao menos uma de name, email ou avatar_url: window.$cloudchat.setUser(userId, { identifier_hash: hash, name: 'Nome do Usuário', }); Problema: BroadcastChannel não sincroniza entre abas Causa provável: abas em domínios diferentes (ex: app.exemplo.com vs www.exemplo.com). Solução: BroadcastChannel só funciona entre páginas do mesmo domínio (same-origin). Garanta que todas as abas usam exatamente a mesma URL base. Observações - Para a instalação básica do Web Widget: Como instalar o Web Widget do Cloud Chat no site - Para múltiplas conversas e histórico (que essa feature pressupõe): Como ativar múltiplas conversas e histórico no Web Widget - Para uso em apps mobile via WebView: Como integrar o Web Widget em aplicativos mobile

Última atualização em Aug 19, 2026

Migrar seu Instagram da Página do Facebook para a integração nativa

Quando usar - Seu Instagram hoje está conectado ao Cloud Chat por uma caixa de entrada de Página do Facebook (integração antiga) e você quer passar para a integração nativa do Instagram. - Você quer manter todo o histórico das conversas do Instagram (mensagens diretas). - Você também usa o Facebook Messenger na mesma página e quer continuar atendendo o Messenger normalmente. Pré-requisitos - Ser administrador da conta. - A migração é feita por caixa de entrada, nas próprias configurações — sem abrir chamado. :::warning Depois de migrar, para conseguir responder as conversas do Instagram você precisa definir o novo app do Instagram como app de roteamento padrão na Meta. Sem isso, as respostas falham com (#100) not the thread owner (ver Etapa 4). ::: O que acontece na migração - A caixa de entrada atual passa a ser de Instagram — as mensagens diretas e todo o histórico continuam nela. - Suas conversas de Facebook Messenger vão para uma caixa de entrada nova, separada, para o Messenger continuar funcionando. Passo a passo Etapa 1 — Abrir as configurações da caixa de entrada Vá em Configurações → Caixas de Entrada e selecione a caixa de entrada do Instagram (a que hoje está conectada por uma Página do Facebook). Etapa 2 — Iniciar a migração Na aba de configurações, role até a seção Migrar para a nova integração do Instagram e clique em Migrar para o Instagram. Seção Migrar para o Instagram nas configurações da caixa de entrada Etapa 3 — Entrar com o Instagram e aprovar as permissões Você será direcionado ao login do Instagram. Faça login com a conta e aprove as permissões solicitadas. Ao retornar, a caixa de entrada já aparece como Instagram e a nova caixa de Messenger é criada. Etapa 4 — Definir o app de roteamento padrão na Meta Na caixa de entrada do Instagram, abra a aba Configurações avançadas e vá até a seção Roteamento de conversas. Clique no link para abrir as configurações da Meta e defina o app do Instagram como o app padrão de respostas. Seção Roteamento de conversas na aba Configurações avançadas :::error Se você pular esta etapa, ao tentar responder verá o erro (#100) not the thread owner e a mensagem não será enviada. ::: Observações - O histórico das mensagens diretas do Instagram é preservado — nada é perdido na migração. - As conversas do Facebook Messenger continuam funcionando na nova caixa de entrada. - A movimentação das conversas acontece em segundo plano; pode levar alguns instantes em contas com muitas conversas.

Última atualização em Jul 02, 2026

O que acontece com os atendimentos quando eu excluo uma caixa de entrada

Quando usar - Você vai excluir uma caixa de entrada (ex.: trocar de número de WhatsApp, migrar de WABA, desativar um canal) e quer saber o que acontece com os atendimentos que estavam nela - Você precisa preservar o histórico de conversas antes de mexer no canal O que acontece Ao excluir uma caixa de entrada, o Cloud Chat apaga também as conversas e as mensagens que pertenciam a ela. O histórico não fica órfão nem é transferido para outra caixa: ele é removido junto. :::error Ação irreversível. As conversas e mensagens da caixa excluída não podem ser recuperadas depois — nem pelo suporte. Se o histórico daquele canal importa para você, não exclua a caixa antes de resolver a preservação dos dados. ::: Junto da caixa também saem: os membros vinculados a ela, as campanhas, os webhooks e as automações específicas daquela caixa. Se você precisa preservar o histórico Antes de excluir, extraia os dados que você quer guardar: - Construtor de Relatórios (Relatórios → Construtor de Relatórios): monte a visão que precisa e exporte em CSV/Excel. - Data Extract API: para extrações em lote — veja Como extrair dados em lote via API (Data Extract API). Se a mudança é de número/WABA de WhatsApp e você quer manter o histórico dentro do Cloud Chat, fale com o time da Cloud Humans antes de excluir a caixa — dependendo do caso existem caminhos melhores que a exclusão.

Última atualização em Aug 27, 2026

O chat do site abre sozinho quando o agente responde?

O chat do site sobe sozinho quando o agente responde? Sim — esse é o comportamento padrão do Web Widget. O que acontece na prática Quando o agente (ou a ClaudIA) responde e o cliente está com o chat fechado: 1. O widget abre um pop-up de mensagem não lida acima do bubble, com a prévia da resposta. 2. O bubble ganha um indicador de não lida. 3. Toca um som de notificação. Ao clicar no pop-up, o chat abre na conversa e as mensagens são marcadas como lidas. Se o cliente já estiver com o chat aberto, não há pop-up: a mensagem aparece direto na conversa. :::info Vale tanto para resposta de agente humano quanto de ClaudIA — qualquer mensagem de saída visível ao cliente. ::: Como desligar ou religar O pop-up é controlado no script de instalação do widget no seu site, pela chave showUnreadMessagesDialog. O padrão é ligado; para desligar, defina essa chave como false nas configurações do widget dentro do script. Com o pop-up desligado, o cliente ainda recebe o indicador de não lida no bubble — só não aparece a prévia. :::warning Essa configuração fica no código do seu site, não no painel do Cloud Chat. Precisa do time que mantém o site para alterar. ::: Para abrir o chat inteiro, e não só o pop-up Isso não é opção do painel. Para abrir a janela completa automaticamente, o site precisa escutar o evento de nova mensagem do widget (cloudchat:on-message) e chamar a função de abrir o chat (window.$cloudchat.toggle). É uma implementação no site, feita pelo time de desenvolvimento. :::warning Abrir a janela inteira sobre a tela do cliente sem ele pedir é intrusivo e costuma piorar a experiência. O pop-up com prévia existe para chamar atenção sem sequestrar a navegação. :::

Última atualização em Sep 02, 2026

Como corrigir o erro 550 5.7.515 — Autenticação de e-mail via Google Workspace

Quando usar - Você usa Google Workspace e suas mensagens enviadas pelo Cloud Chat para destinatários Microsoft (Outlook, Hotmail, Live, Microsoft 365) estão sendo rejeitadas com o erro 550 5.7.515 - O envio direto pelo Gmail funciona, mas pelo Cloud Chat (ou qualquer outra plataforma de terceiros) falha - Você precisa configurar SPF, DKIM e DMARC alinhados ao seu domínio para passar nos requisitos da Microsoft Pré-requisitos - Acesso Super Admin ao Google Workspace (admin.google.com) - Acesso ao provedor de DNS do seu domínio (Registro.br, Cloudflare, GoDaddy, AWS Route 53 etc.) - Gmail ativado no domínio há pelo menos 24 a 72 horas antes de gerar a chave DKIM - Caixa de e-mail conectada — ver Como conectar caixa de e-mail do Google ao Cloud Chat :::error Substitua SEUDOMINIO.COM.BR pelo seu domínio real ao longo de todo este documento. Os exemplos usam esse placeholder apenas para ilustrar. ::: Sobre este artigo Esse erro não é uma fragilidade do Cloud Chat — o mesmo aconteceria com qualquer plataforma de atendimento que envie e-mails em nome do seu domínio. Quando você envia pelo Gmail direto, a mensagem sai dos servidores do Google — que já estão autorizados no SPF e assinam o DKIM com o seu domínio automaticamente. Tudo passa. Quando o e-mail sai pelo Cloud Chat (ou qualquer plataforma de terceiros), ele parte de servidores diferentes, que não estão no SPF do seu domínio e não têm acesso à chave DKIM dele. Resultado: SPF falha, DKIM não alinha, DMARC não passa, e a Microsoft rejeita com 550 5.7.515: 550 5.7.515 Access denied, sending domain SEUDOMINIO.COM.BR doesn't meet the required authentication level. The sender's domain in the 5322.From address doesn't meet the authentication requirements defined for the sender. Spf=Fail , Dkim=Pass , DMARC=None A causa raiz: o domínio não tem SPF, DKIM e DMARC devidamente configurados. O Gmail direto "esconde" o problema porque o Google cuida disso automaticamente para os seus próprios servidores. Qualquer envio por fora expõe a lacuna. Este guia corrige essa configuração no Google Workspace e no seu provedor de DNS. Depois de aplicada, a autenticação passa tanto pelo Gmail quanto pelo Cloud Chat. Diagnóstico A Microsoft rejeita suas mensagens porque falta autenticação alinhada ao domínio do cabeçalho From:. O cabeçalho da devolução costuma mostrar: - SPF = Fail — o registro SPF não inclui _spf.google.com, ou não existe - DKIM = Pass, mas sem alinhamento — o Google assina com d=gmail.com em vez de d=<seu-dominio>. Passa tecnicamente, mas não conta para o DMARC - DMARC = None — não existe registro DMARC publicado :::info Desde o fim de 2024, a Microsoft exige pelo menos um mecanismo de autenticação alinhado ao From: para remetentes de alto volume (≥ 5.000 mensagens para outlook.com, hotmail.com, live.com, msn.com). Se você já está recebendo esse erro, seu domínio ultrapassou esse limiar. ::: :::info Sobre alinhamento: para o DMARC passar, basta SPF ou DKIM estar alinhado. Este guia configura os dois para maior confiabilidade, mas o DKIM alinhado (Etapa 2) é o componente principal. ::: Inspecionar o cabeçalho de uma mensagem devolvida Antes de mexer no DNS, confirme o estado atual. Localize uma mensagem devolvida com o código 550 5.7.515, abra-a no Gmail e clique em Mostrar original. Procure a linha Authentication-Results: Authentication-Results: ... spf=fail (sender IP is ...) smtp.mailfrom=<seu-dominio>; dkim=pass header.d=gmail.com; ← d=gmail.com = SEM alinhamento dmarc=none action=none header.from=<seu-dominio>; Se o padrão for esse, siga este guia. Se for diferente (ex: SPF pass, DMARC quarantine), a investigação deve seguir por outro caminho — abra um chamado de suporte. Passo a passo Etapa 1 — Publicar o registro SPF No seu provedor de DNS, publique (ou atualize) um registro TXT no apex do domínio: | Campo | Valor | | --- | --- | | Tipo | TXT | | Host / Nome | @ (ou o próprio domínio) | | Valor | v=spf1 include:_spf.google.com ~all | | TTL | 3600 | :::error Só pode existir um único registro SPF por domínio. Se já houver um, edite-o e mescle os includes: v=spf1 include:_spf.google.com include:outro-servico.com ~all ::: Verificação: dig TXT <seu-dominio> +short # Deve retornar uma linha contendo v=spf1 include:_spf.google.com ~all Etapa 2 — Configurar o DKIM no Google Workspace (passo principal) Este é o passo mais importante. Ele faz o Google assinar suas mensagens com d=<seu-dominio> em vez de d=gmail.com, resolvendo o problema de alinhamento. 2.1 — Gerar a chave DKIM 1. Acesse admin.google.com como Super Admin 2. Vá em Menu → Apps → Google Workspace → Gmail → Autenticar e-mail 3. Selecione o seu domínio e clique em Gerar novo registro 4. Configure: 2048 bits, prefixo do seletor: google 5. Copie os dois valores exibidos: - Nome do host DNS: google._domainkey - Valor TXT: texto longo começando com v=DKIM1; k=rsa; p=MIIBIjAN... :::warning Botão desabilitado? Aguarde 24–72h desde a ativação do Gmail no domínio. ::: 2.2 — Publicar o registro DKIM no DNS | Campo | Valor | | --- | --- | | Tipo | TXT | | Host / Nome | google._domainkey | | Valor | Texto copiado do Admin console | | TTL | 3600 | 2.2.1 — Erro CharacterStringTooLong ao publicar o DKIM Sintoma Ao publicar o registro TXT google._domainkey, o provedor exibe erro semelhante a: ⚠️ Ocorreu um erro. Tente novamente mais tarde. CharacterStringTooLong (Value is too long) encountered with '"v=DKIM1; k=rsa; p=XXXXXXXX..."' O registro não é salvo e a autenticação DKIM não pode ser ativada. Causa A RFC 1035 (seção 3.3) limita cada character-string de um registro TXT a 255 caracteres. A chave pública RSA de 2048 bits gerada pelo Google Workspace ultrapassa esse limite (≈400 caracteres), então o provedor rejeita quando o valor é enviado como string única. Não é problema da chave nem do Google Workspace — é limitação do protocolo DNS. Solução Quebre o valor em múltiplas strings de até 255 caracteres, cada uma entre aspas duplas e separadas por espaço. O servidor DNS concatena automaticamente na entrega, e o resolver enxerga uma única chave DKIM contínua. Formato esperado: "v=DKIM1; k=rsa; p=XXXXXXXXXXXXXXXXXXXXXXXXXXXX...ate_255_chars" "continuacao_ate_255_chars..." "parte_final_da_chave" Como quebrar a chave 1. Cole o valor copiado do Admin console (v=DKIM1; k=rsa; p=...) em um editor de texto 2. A cada 255 caracteres do conteúdo, insira " " (aspas — espaço — aspas) 3. Envolva o valor inteiro com aspas duplas no início e no fim 4. Cole o resultado no campo Valor / Content do registro TXT :::info Dica: Não conte as aspas externas no limite de 255 — apenas o conteúdo da string. ::: Comportamento por provedor de DNS: | Provedor | Como colar | | --- | --- | | Cloudflare | Cole o valor já quebrado com aspas e espaços no campo Content. A UI aceita direto. | | AWS Route 53 | Cole as strings quebradas com aspas no campo Value. Cada string em linha separada também funciona. | | Registro.br | Formato de múltiplas strings entre aspas em linha única. | | GoDaddy / HostGator / outros | Aceitam o mesmo formato. Se a UI recusar aspas, procure a opção raw ou advanced. | Verificação Após salvar e aguardar propagação (até 30 minutos), valide: dig TXT google._domainkey.<seu-dominio> +short A saída deve exibir a chave concatenada. Se o retorno mostrar várias strings separadas, ainda é válido — o que importa é a chave RSA reconstruída ser idêntica ao valor do Admin console. Para confirmar, compare a chave retornada pelo dig com a do passo de geração no Google Workspace. 2.3 — Ativar a autenticação 1. Volte a Gmail → Autenticar e-mail no Admin console 2. Clique em Iniciar autenticação 3. Aguarde o status mudar para Autenticando e-mails com DKIM :::warning Pode levar até 48 horas para começar a funcionar. ::: Verificação: dig TXT google._domainkey.<seu-dominio> +short # Deve retornar v=DKIM1; k=rsa; p=... completo Etapa 3 — Publicar o registro DMARC :::error Publique o DMARC somente depois que SPF e DKIM estiverem autenticando corretamente por pelo menos 48 horas. ::: | Campo | Valor | | --- | --- | | Tipo | TXT | | Host / Nome | _dmarc | | Valor | v=DMARC1; p=none; rua=mailto:dmarc-reports@<seu-dominio>; pct=100; adkim=s; aspf=s | | TTL | 3600 | Crie uma caixa ou alias dmarc-reports@<seu-dominio> para receber os relatórios agregados (XML) que os provedores enviam diariamente. Roteiro de endurecimento Avance de fase somente depois de pelo menos uma semana sem falsos positivos nos relatórios. | Fase | Semana | Política | Efeito | | --- | --- | --- | --- | | 1 — Monitoramento | 0 | p=none | Apenas gera relatórios | | 2 — Quarentena parcial | ≥ 1 | p=quarantine; pct=10 | 10% das não autenticadas vão para spam | | 3 — Quarentena total | ≥ 2–3 | p=quarantine; pct=100 | Todas vão para spam | | 4 — Rejeição | ≥ 4 | p=reject; pct=100 | Servidor rejeita mensagens não autenticadas | Desbloqueio rápido (se for urgente) Se precisar destravar o envio para destinatários Microsoft imediatamente, publique apenas: 1. Etapa 1 — o registro SPF 2. Etapa 3 — o registro DMARC com p=none (sem esperar as 48h do DKIM) Na maioria dos casos, isso já encerra o 550 5.7.515, porque a Microsoft mira especificamente domínios sem nenhum DMARC. Ter um DMARC publicado (mesmo permissivo) já muda o tratamento. :::warning A Etapa 2 (DKIM alinhado) continua sendo a correção definitiva e precisa ser executada em seguida — sem ela, SPF e DMARC ficam sobre uma base frágil. ::: Verificação final Depois da propagação (30 min para SPF/DMARC, até 48h para DKIM): dig TXT <seu-dominio> +short # SPF dig TXT google._domainkey.<seu-dominio> +short # DKIM dig TXT _dmarc.<seu-dominio> +short # DMARC Teste funcional Envie um e-mail de teste para qualquer endereço @outlook.com, @hotmail.com ou conta Microsoft 365. No cabeçalho do e-mail recebido, confira: Authentication-Results: ... spf=pass smtp.mailfrom=<seu-dominio>; dkim=pass header.d=<seu-dominio>; ← prova do alinhamento dmarc=pass header.from=<seu-dominio>; :::success Se as três linhas mostrarem pass com header.d=<seu-dominio> e header.from=<seu-dominio>, a configuração está correta — o erro 550 5.7.515 não voltará a ocorrer. ::: :::warning Se dkim=pass ainda aparecer com header.d=gmail.com, a Etapa 2.3 ainda não foi concluída ou o DNS continua propagando. Aguarde mais algumas horas e teste de novo. ::: Fontes oficiais - Set up DKIM — Google Workspace Admin Help - Turn on DKIM for your domain — Google Workspace Admin Help - Set up SPF — Google Workspace Admin Help - Define your SPF record — Google Workspace Admin Help - Add your DMARC record — Google Workspace Admin Help - Recommended DMARC rollout — Google Workspace Admin Help - Email sender guidelines — Google Workspace Admin Help — Outlook.com Observações - Para conectar uma caixa Gmail ao Cloud Chat: Como conectar caixa de e-mail do Google ao Cloud Chat - Para conectar uma caixa Outlook ao Cloud Chat: Como conectar caixa de e-mail Outlook/Microsoft ao Cloud Chat - Para entender como anexos de e-mail funcionam: Como funcionam os anexos de e-mail no Cloud Chat

Última atualização em Sep 02, 2026

Continuidade de conversas por e-mail: como habilitar e como funciona (automática e manual)

Quando usar - O cliente está num chat do site (Web Widget) e some (fecha a aba, troca de aparelho) — e você quer que a conversa continue por e-mail - Você precisa que uma conversa de WhatsApp prossiga por e-mail (tratativas longas, anexos, registro com terceiros) - Você quer manter o contexto da conversa quando ela transita entre canais Pré-requisitos - Uma caixa de entrada de e-mail configurada — ver Conectando caixa de e-mail ao Cloud Chat - O agente que vai operar alocado nessa caixa de e-mail - O contato precisa ter e-mail cadastrado - Para habilitar a opção na caixa de entrada: estar logado como administrador Sobre este artigo A continuidade por e-mail evita que o atendimento se perca quando o cliente sai do canal original. Existem dois modos: - Automática (por inatividade) — só no Web Widget: o Cloud Chat envia a resposta por e-mail se o cliente não estiver vendo o chat. - Manual (botão) — no Web Widget e no WhatsApp: o agente força a conversa a seguir por e-mail. Como habilitar na caixa de entrada Etapa 1 — Ter uma caixa de e-mail Tenha (ou crie) uma caixa de entrada do tipo e-mail em Configurações → Caixa de entrada. Etapa 2 — Habilitar a continuidade na caixa do Site Na caixa do tipo Site, abra a aba Ciclo da conversa e ative Habilitar continuidade das conversas por e-mail. Etapa 3 — Selecionar a caixa de e-mail de continuidade Em Selecione a caixa de e-mail para continuar a continuidade, escolha a caixa da Etapa 1. :::success Pronto — a continuidade por e-mail está habilitada para essa caixa de entrada. ::: Continuidade automática (por inatividade) — Web Widget Quando um agente responde uma conversa de Web Widget (com a continuidade habilitada e o contato com e-mail), o Cloud Chat aguarda cerca de 2 minutos. Passado esse tempo: - Se o cliente não abriu a conversa no chat nesse intervalo (inativo) → a resposta é enviada por e-mail, com o histórico da conversa. - Se o cliente estava no chat e viu a mensagem → a conversa continua no widget, normalmente. Quando o cliente responde ao e-mail, a resposta aparece na conversa para o agente, identificada como vinda do e-mail. :::info A continuidade automática é reversível: se o cliente voltar ao chat do site, a conversa volta a fluir pelo widget. Uma nova resposta só vai por e-mail se ele ficar inativo de novo. Mensagens enviadas em sequência nesses ~2 minutos são agrupadas em um único e-mail. ::: Continuidade manual (botão) — Web Widget e WhatsApp O agente pode forçar a conversa a seguir por e-mail, sem esperar a inatividade. Como ativar 1. Abra a conversa no painel. 2. No topo da conversa, clique em Ativar continuidade por e-mail. - Web Widget — ativa direto ao clicar. - WhatsApp — aparece um modal de confirmação antes de aplicar. :::error A ativação manual é permanente para aquela conversa — não dá para desfazer. A partir daí, todas as respostas seguem por e-mail, e a conversa passa a se comportar como uma conversa de e-mail no painel. ::: Quando o botão não aparece (ou está bloqueado) - A continuidade não está habilitada na caixa de entrada → habilite seguindo a seção "Como habilitar na caixa de entrada" acima. - O contato não tem e-mail cadastrado → edite o contato e adicione um e-mail antes de tentar. Pontos de atenção :::warning Quando a conversa está seguindo por e-mail, há duas limitações atuais que vale conhecer: - Cópia (CC/BCC): o campo de resposta não muda para o formato de e-mail completo, então não é possível adicionar destinatários em cópia por essa conversa. - Indicador de canal: não há, na linha do tempo da conversa, uma marca clara do momento em que ela passou a seguir por e-mail (ou voltou para o widget). Use a identificação das mensagens — as respostas que chegam por e-mail vêm marcadas — para se orientar. ::: Observações - No WhatsApp, a continuidade por e-mail é sempre iniciada pelo agente (nunca automática pela inatividade do cliente). - Para enviar a transcrição completa de uma conversa por e-mail (sem migrar o canal): Como enviar a transcrição de uma conversa por e-mail - Para envios proativos por e-mail (você inicia o contato): Guia de disparo proativo unitário no WhatsApp

Última atualização em Sep 02, 2026

Nova conversa pelo Web Widget: por que a inbox aparece (ou não)

https://www.loom.com/share/5868f5eba483411487f46c6d55a9336c Ao iniciar uma Nova conversa com um contato e escolher uma inbox de Web Widget (chat do site), a inbox só aparece na lista de origem em algumas condições — isso evita disparar algo que não chegaria ao cliente ou que duplicaria uma conversa em andamento. Modal "Nova conversa" com o seletor de Caixa de Entrada aberto, mostrando a inbox de Web Widget como opção de origem 1. O contato precisa estar identificado no widget Só dá pra iniciar uma conversa proativa por Web Widget com um contato identificado (que acessou logado/autenticado no widget — área logada). Visitante anônimo não aparece como opção: sem uma sessão identificada, a mensagem não teria como ser entregue de forma confiável quando ele voltasse. 2. Widget de conversa única ("Manter Conversa Única") A inbox só é oferecida se o contato não tiver uma conversa ativa nela: - Conversa ativa (aberta, pendente ou em soneca) → a inbox não aparece (pra não criar uma segunda conversa em paralelo). - Conversa resolvida → não bloqueia: você inicia uma nova normalmente (cria uma nova, não reabre a antiga). - Mensagem proativa anterior que o cliente ainda não respondeu → não bloqueia: você inicia uma nova normalmente. :::info A checagem é feita por contato dentro daquela inbox, não por sessão: se ele abriu o chat do site em outro navegador ou dispositivo e tem uma conversa ativa por lá, a inbox também não aparece. ::: 3. Widget de múltiplas conversas Se o widget permite múltiplas conversas por usuário, a inbox sempre aparece — o contato pode ter várias conversas em paralelo. Quando o cliente recebe? A conversa que você inicia fica aguardando: aparece pro cliente assim que ele reabrir o widget no site — inclusive em outra aba ou sessão. "A inbox do site não aparece — por quê?" Para iniciar o fluxo, abra o contato e clique em Nova Mensagem: Botão "Nova Mensagem" no painel do contato, usado para iniciar uma conversa proativa Se a inbox do site não estiver na lista, confira: 1. O contato está identificado nesse widget? (anônimo não é ofertado) 2. Já existe uma conversa ativa (aberta/pendente/em soneca) dele nessa inbox? Se sim, continue ou resolva a existente. 3. O widget é de conversa única? Então é uma conversa ativa por vez. A mesma regra vale no servidor: mesmo que a conversa seja tentada por outro caminho, ela é recusada com o motivo (contato não identificado ou conversa ativa já existente). Isso cobre também o caso em que o cliente manda uma mensagem enquanto a janela de Nova conversa está aberta.

Última atualização em Sep 02, 2026

Como identificar falhas de envio de mensagens no Cloud Chat

Quando usar - Você quer entender por que uma conversa aparece destacada em vermelho na fila - Você precisa identificar rapidamente atendimentos com mensagens não entregues - Você está investigando atrasos de resposta causados por mensagens com erro Sobre este artigo A funcionalidade de Indicadores de Falha de Envio torna mais fácil identificar conversas cuja última mensagem não foi entregue com sucesso. Quando isso acontece, o Cloud Chat destaca a conversa visualmente para que o time aja rapidamente. :::info Sem esse tipo de sinalização, falhas podem passar despercebidas na fila, gerando atraso no retorno ao cliente, retrabalho no suporte e a necessidade de revisar várias conversas manualmente. Com os indicadores, o time prioriza rapidamente as conversas com erro e reduz o tempo de resposta. ::: O que aparece em uma conversa com falha Quando a última mensagem está com falha, a conversa exibe: - Barra lateral vermelha no card da conversa (lado esquerdo) - Ícone de erro no lugar da seta de "enviado", ao lado da prévia da mensagem - Badge vermelho com "!" no lugar da bolinha verde de não lidas Exemplo visual Exemplo prático 1. Um agente envia uma mensagem ao cliente 2. A mensagem falha por instabilidade de conexão / canal 3. Na lista de conversas, esse ticket passa a aparecer com: - Barra vermelha na lateral - Ícone de erro na prévia - Badge vermelho de alerta 4. Quando uma nova mensagem é enviada com sucesso, os indicadores deixam de aparecer e a conversa volta ao comportamento padrão :::success A indicação de falha some automaticamente quando uma nova mensagem é entregue com sucesso. ::: Dúvidas comuns Isso substitui o contador de mensagens não lidas? Para conversas com falha na última mensagem, o badge de alerta vermelho com "!" é priorizado para chamar atenção ao erro. Precisa ativar alguma configuração? Não. Essa melhoria é aplicada automaticamente na experiência da lista de conversas. O que devo fazer ao ver uma conversa com "!" vermelho? Abra a conversa, verifique a mensagem com falha e tente reenviar ou enviar uma nova mensagem. Quando o alerta de falha deixa de aparecer? Quando a última mensagem deixa de estar com status de falha — por exemplo, após um novo envio bem-sucedido. Observações - Para entender o significado de cada código de erro de envio (especialmente WhatsApp): Por que minha mensagem não está sendo enviada? Guia completo de erros - Para diminuir o risco de bloqueio do número e perda de mensagens: Como evitar bloqueios e banimentos no WhatsApp - Para reconectar uma inbox de WhatsApp que parou de receber mensagens: Como reconectar sua inbox de WhatsApp no Cloud Chat

Última atualização em Sep 02, 2026

Como funcionam os anexos de e-mail no Cloud Chat

Quando usar - Você quer entender como anexos enviados/recebidos por e-mail aparecem no Cloud Chat - O cliente reclamou de um arquivo "que não chegou" e você precisa diagnosticar - Você precisa explicar para um agente novo onde encontrar e como baixar anexos de uma conversa de e-mail Pré-requisitos - Caixa de entrada E-mail conectada — ver Como conectar caixa de e-mail Outlook/Microsoft ao Cloud Chat ou Como conectar caixa de e-mail do Google ao Cloud Chat - Acesso a uma conversa de e-mail no Cloud Chat com pelo menos um anexo Sobre este artigo Quando uma conversa entra no Cloud Chat por e-mail, qualquer arquivo anexo segue junto com a mensagem — tanto na entrada (cliente envia para o agente) quanto na saída (agente envia para o cliente). Este artigo descreve como esse fluxo aparece para o agente, para o cliente, e como contornar problemas comuns. Detalhes Como o cliente vê os anexos enviados por um agente? Quando um agente envia um e-mail com arquivos anexados, o cliente final recebe cada anexo no corpo da mensagem. O formato é sempre o mesmo: - O nome do arquivo aparece em negrito - Ao lado, aparece a palavra Download, que é um hiperlink — basta clicar para baixar o arquivo O arquivo fica armazenado no Cloud Chat? Sim. O anexo fica disponível dentro da conversa, exatamente como enviado pelo cliente (ou pelo agente). Você pode fazer o download a qualquer momento, mesmo após a conversa ter sido encerrada. Há limite de tamanho ou tipo de arquivo? O Cloud Chat aceita os mesmos tipos e tamanhos permitidos pelo provedor de e-mail. Em outras palavras: se o e-mail entregou na caixa, o anexo será exibido no Cloud Chat. :::info Limites comuns por provedor: - Gmail / Google Workspace — 25 MB por mensagem - Outlook / Microsoft 365 — 20 MB por mensagem (pode ir até 150 MB com configuração específica) - Provedores menores — costumam ser entre 10 e 25 MB ::: Como o cliente baixa o anexo? Basta clicar em Download, ao lado do nome do arquivo. O arquivo é baixado direto para o dispositivo do cliente. Posso visualizar o anexo dentro do Cloud Chat (sem baixar)? A pré-visualização inline depende do tipo de arquivo: - Imagens (PNG, JPG, GIF) — aparecem com pré-visualização - PDF, DOC, XLSX, ZIP, vídeos — precisam ser baixados para serem abertos E se o anexo não aparecer? Verifique nessa ordem: 1. O e-mail original realmente continha o arquivo? Confira no provedor de origem (Gmail web, Outlook web). 2. O provedor bloqueou o envio por tipo ou tamanho? Olhe o cabeçalho do e-mail por avisos de quarentena. 3. A conversa foi carregada por completo? Tente recarregar a página do Cloud Chat (F5) ou abrir a conversa em uma aba nova. :::warning Se mesmo após esses passos o anexo continuar ausente, abra um chamado para o suporte da Cloud Humans com: - ID da conversa no Cloud Chat - Message-ID original do e-mail (encontrado no cabeçalho da mensagem no provedor) - Print da mensagem original com o anexo presente ::: Observações - Para conectar uma caixa Gmail: Como conectar caixa de e-mail do Google ao Cloud Chat - Para conectar uma caixa Outlook: Como conectar caixa de e-mail Outlook/Microsoft ao Cloud Chat - Para outros provedores via IMAP/SMTP: Como conectar uma caixa de e-mail ao Cloud Chat (outros provedores) - Para corrigir o erro 550 5.7.515 no envio: Como corrigir o erro 550 5.7.515 — Autenticação de e-mail via Google Workspace

Última atualização em Sep 02, 2026