Configurando o Respond.io com o HubSpot do Início ao Fim

Configurando o Respond.io com o HubSpot do início ao fim

Turn this article into takeaways for your work.

Each assistant summarizes the article only for you and suggests best practices for your work.

Uma equipe de RevOps de uma empresa SaaS em fase de crescimento usou o Respond.io por 60 dias antes de alguém conferir a lista de contatos do HubSpot. Quando olharam, encontraram 800 registros duplicados, alguns contatos duplicados 4 ou 5 vezes, com o histórico de conversas dividido entre vários registros e sem uma visão única e limpa do cliente. A qualidade dos dados do CRM é um problema persistente: o Gartner estima que a baixa qualidade de dados custa às organizações, em média, US$12,9 milhões por ano, e os registros de contato duplicados estão entre as causas-raiz mais comuns.

A causa: as configurações padrão de sincronização do Respond.io criam um novo contato no HubSpot para cada conversa, independentemente de aquele telefone ou e-mail já existir no seu CRM. Três ajustes de configuração resolveram o problema. Mas, até lá, a equipe já tinha gasto 2 dias limpando a base. A deduplicação no ponto de sincronização é uma das etapas mais negligenciadas nos fluxos de deduplicação de leads multi-canal. Se a sua instância do Respond.io recebe conversas de vários canais, configurar uma caixa de entrada multi-canal com regras de roteamento adequadas antes de ativar a sincronização com o HubSpot ajuda a garantir que cada contato seja criado com atribuição de origem consistente.

Este guia cobre a configuração da integração que evita esse cenário, desde a conexão inicial até a sincronização de conversas, a criação de deals e a atribuição de reps, com as configurações específicas que importam.

Pré-requisitos

Antes de iniciar a integração:

  1. Conta Respond.io com pelo menos um canal conectado (WhatsApp Business API, Instagram DM ou widget de chat do site). Uma conta apenas com o widget de chat do site e nenhum outro canal ainda pode integrar, mas o valor é maior quando o WhatsApp está conectado.
  2. Conta HubSpot com acesso à API habilitado. Você precisa de pelo menos o HubSpot Starter para acessar o menu de Integrações.
  3. Token de Private App do HubSpot: não use uma chave de API (o HubSpot descontinuou essas chaves). No HubSpot, vá em Settings → Integrations → Private Apps → Create a Private App. Nomeie-o "Respond.io Integration" e conceda os escopos: crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.deals.write, conversations.read, oauth. Copie o token; você vai precisar dele no Respond.io. A documentação de Private Apps do HubSpot explica em detalhes a seleção de escopos e a rotação de tokens.
  4. Acesso de administrador nas duas plataformas: você precisa de direitos de administrador no Respond.io para configurar integrações, e de admin ou super admin no HubSpot para criar propriedades personalizadas.

Etapa 1: Conecte o Respond.io ao HubSpot pela integração nativa

No Respond.io, vá em Settings → Integrations → HubSpot. Clique em Connect.

O fluxo OAuth pedirá que você faça login no HubSpot e conceda ao Respond.io acesso ao seu portal. Conceda o acesso. Depois que o OAuth for concluído, você voltará ao Respond.io com uma confirmação de que a conexão está ativa.

Mas não pare aí. As configurações padrão após o OAuth não são adequadas para a maioria das equipes.

Na página de configurações da integração com o HubSpot no Respond.io, você verá:

  • Sync all contacts: Desative. Você não quer que todo visitante anônimo do chat do site seja sincronizado com o HubSpot. Ative a sincronização de contatos apenas para conversas em que você tenha um identificador (e-mail ou telefone).
  • Auto-create contacts: Defina como "Only for identified contacts" (ou seja, contatos dos quais ao menos um telefone ou e-mail foi coletado).
  • Default contact lifecycle stage: Defina como "Lead" para novos contatos, não "Subscriber". Subscriber é para opt-ins de newsletter e vai confundir seus relatórios de lifecycle stage.

Etapa 2: Regras de correspondência de contatos (é aqui que nascem as duplicatas)

O Respond.io associa uma conversa a um contato existente do HubSpot usando um de três identificadores: endereço de e-mail, número de telefone ou ID do WhatsApp. A ordem importa.

A prioridade de correspondência padrão é: E-mail → Telefone → ID do WhatsApp.

Para um funil focado em WhatsApp, isso é o inverso do ideal. A maioria das conversas de WhatsApp não tem endereço de e-mail no início. Você o coleta depois, no fluxo de qualificação. Se o Respond.io tenta fazer a correspondência primeiro por e-mail e não encontra, ele cria um novo contato. Depois, quando o e-mail chega, ele cria outro contato correspondido por e-mail. Resultado: dois contatos para a mesma pessoa.

Mude a prioridade de correspondência para: Telefone → ID do WhatsApp → E-mail.

Os números de WhatsApp estão atrelados a números de telefone, então essa correspondência é confiável desde a primeira mensagem. Atualize isso em Settings → Integrations → HubSpot → Contact Matching. A documentação de integração com o HubSpot do Respond.io detalha toda a lógica de correspondência e as configurações de deduplicação disponíveis no painel da integração.

Ative também Deduplication on match: quando o Respond.io encontra um contato existente do HubSpot que corresponde ao número de telefone, ele atualiza o registro em vez de criar um novo. Essa única configuração evita cerca de 70% da criação de duplicatas. O artigo da Wikipedia sobre deduplicação de dados explica os algoritmos de correspondência por trás da lógica de deduplicação, especialmente relevante para entender por que a correspondência com prioridade para telefone é mais confiável do que a com prioridade para e-mail em contatos de canais de mensagens.

Etapa 3: Mapeamento de campos

Nas configurações da integração do Respond.io com o HubSpot, vá à aba Field Mapping. Ela controla quais atributos de contato do Respond.io são sincronizados com quais propriedades de contato do HubSpot.

Campos padrão que sincronizam bem de fábrica: First Name, Last Name, Email, Phone. Mas você precisa adicionar campos personalizados para capturar dados específicos de chat que as propriedades padrão do HubSpot não têm.

Primeiro, crie estas propriedades de contato personalizadas no HubSpot (Settings → Properties → Create Property):

  • Last Chat Channel: texto de linha única (por exemplo, WhatsApp, Instagram, Website Chat)
  • Chat Qualification Score: número
  • Chat Lead Source: texto de linha única (por exemplo, Meta Ad, WhatsApp Orgânico, Website)
  • First Contact Date (Chat): seletor de data
  • Qualification Answers: texto de várias linhas

As decisões sobre quais campos personalizados criar, e como nomeá-los de forma consistente para que a lógica de roteamento não quebre, estão cobertas no guia de campos personalizados para implementação de CRM.

Depois, mapeie-os no Respond.io:

Campo do Respond.io Propriedade do HubSpot
First Name First Name
Last Name Last Name
Email Email
Phone Phone Number
Channel Last Chat Channel (custom)
Contact Source Chat Lead Source (custom)
Created At First Contact Date (chat) (custom)
Custom: Qualification Score Chat Qualification Score (custom)
Tags (mapear para tags de contato do HubSpot, se você usa tags do HubSpot)

O campo Qualification Score exige que você defina uma pontuação nos workflows do Respond.io (abordado na Etapa 6). Por enquanto, crie o mapeamento e deixe a lógica de pontuação para depois que o fluxo estiver construído.

Etapa 4: Configurações de sincronização de conversas

O Respond.io pode sincronizar as mensagens das conversas com a timeline do contato no HubSpot. Isso é útil, mas gera muito ruído se você sincronizar tudo.

A configuração padrão sincroniza todas as mensagens, incluindo mensagens automáticas do bot, mensagens do sistema e notas internas. Isso significa que a timeline de um contato ativo no HubSpot pode ter mais de 50 entradas por semana, o que torna quase impossível para um rep ter uma visão rápida de como as coisas estão.

Em Settings → Integrations → HubSpot → Conversation Sync, altere:

  • Sync conversations: Sim, mas apenas para conversas com status = "Resolved" ou em que um humano tenha sido atribuído (não conversas puramente de bot)
  • Sync bot messages: Não
  • Sync internal notes: Não (elas são para sua equipe, não para o registro do CRM)
  • Sync attachments: Sim, mas apenas imagens e documentos (não reações com emoji nem notas de voz)

Uma regra prática mais limpa: sincronize um resumo da conversa com o HubSpot quando a conversa chegar a um estado terminal (qualificada, desqualificada ou transferida). Uma única entrada na timeline com um resumo é mais útil do que 30 entradas mostrando cada mensagem do bot.

Etapa 5: Automação de criação de deals

Quando um lead se qualifica no seu fluxo do Respond.io (o chatbot conclui a qualificação), você quer que um Deal do HubSpot seja criado automaticamente, e não manualmente por um rep.

No Respond.io, vá em Workflows → New Workflow. Defina o gatilho como: Contact Attribute Changed → Qualification Score → is greater than → [seu limite].

Ações no workflow:

  1. Update contact: Defina Lifecycle Stage = MQL, Lead Status = New
  2. Create HubSpot Deal: Título = "Chat Lead: [Primeiro Nome do Contato]", Pipeline = [seu pipeline de vendas], Stage = "New Lead", Amount = deixe em branco, Owner = [atribuição em rodízio]
  3. Assign conversation: Atribua a conversa do Respond.io ao rep que recebeu o deal (exige uma etapa para consultar o dono do deal; use a ação de lookup do HubSpot se o seu plano suportar)
  4. Send rep notification: Slack ou e-mail com o link do deal e o link da conversa

A lógica do workflow em linguagem simples: quando um contato pontua acima do seu limite de qualificação, mova-o automaticamente para MQL, crie um deal no pipeline, atribua o deal a um rep e notifique esse rep. O rep não cria nada manualmente. Para equipes que estão construindo uma camada mais ampla de automação de CRM, a automação de workflows de CRM cobre os padrões de criação de deals, transições de lifecycle e notificações a reps em diferentes plataformas de CRM. Depois que o deal é criado e o rep é notificado, a próxima etapa crítica é o handoff do chatbot para o rep, que mostra como estruturar o cartão de contexto e o SLA da primeira mensagem para que o lead de fato avance para uma reunião.

Etapa 6: Atribuição de reps (alinhando Respond.io e HubSpot)

A integração não espelha automaticamente os donos de contato do HubSpot para os responsáveis pelas conversas no Respond.io. Você precisa configurar isso.

Duas abordagens:

Opção A (Respond.io para HubSpot): Quando um rep é atribuído a uma conversa no Respond.io, sincronize essa atribuição com o Contact Owner do HubSpot. Configure em Settings → Integrations → HubSpot → Sync Assignment. Ative "Sync assignee to HubSpot contact owner."

Opção B (HubSpot para Respond.io): Quando um Contact Owner do HubSpot é definido ou alterado, atualize o responsável pela conversa no Respond.io. Isso exige um workflow do HubSpot que chame a API do Respond.io. É útil se sua equipe atribui deals primeiro no HubSpot.

Para a maioria das equipes, a Opção A é mais simples. Os reps trabalham no Respond.io para o chat; o HubSpot reflete essa atribuição.

Para contatos sem responsável (novos leads ainda sem rep), configure o rodízio no Respond.io: Settings → Teams → [Sua Equipe de Vendas] → Assignment → Round Robin. Isso distribui as novas conversas de forma equilibrada entre os reps disponíveis.

Etapa 7: Testes (5 cenários para executar antes da sincronização completa)

Execute estes cenários de teste antes de ativar a integração para toda a sua lista de contatos:

Cenário de Teste Como Executar Resultado Esperado
Novo contato apenas com telefone Envie uma mensagem de WhatsApp de um número que não esteja no HubSpot Novo contato criado no HubSpot com o telefone; sem duplicata
Contato existente envia mensagem de novo Use o mesmo número do teste 1 Contato existente do HubSpot atualizado, não duplicado
Fluxo de qualificação concluído Percorra todo o seu fluxo de bot como um lead quente Lifecycle stage MQL definido; deal criado no pipeline; rep notificado
Contato com telefone e e-mail Conclua o fluxo e colete o e-mail Um único contato com ambos os campos; sem segundo contato para o e-mail
Rep atribui a conversa Atribua a conversa de teste a um rep no Respond.io O dono do contato no HubSpot é atualizado para esse rep

Confira o HubSpot após cada teste antes de passar ao próximo. O que você procura: lifecycle stages corretos, nenhuma duplicata, valores de campo corretos e entradas na timeline apenas onde você configurou.

Etapa 8: Executando a primeira sincronização real

Não ative a sincronização para todos os contatos de uma vez. Comece com um grupo controlado:

  1. No Respond.io, filtre os contatos pela tag = "Test" ou por um intervalo de datas (por exemplo, apenas conversas de ontem)
  2. Ative a sincronização somente para esse grupo filtrado
  3. Confira o HubSpot após 30 minutos. Verifique os registros, procure duplicatas, confirme os valores dos campos.
  4. Se estiver limpo, amplie a sincronização para os últimos 7 dias de conversas
  5. Faça outra auditoria. Extraia um relatório do HubSpot de contatos criados nos últimos 7 dias com origem = "Respond.io" e verifique por amostragem 20 registros.

Só depois de duas auditorias limpas você deve ativar a sincronização para todos os contatos e todas as novas conversas.

Armadilhas Comuns

Sincronizar todos os contatos em vez de apenas os identificados. Visitantes anônimos do chat do site que nunca informaram nome, telefone ou e-mail criarão contatos em branco no HubSpot, sem dados utilizáveis. Configure a sincronização apenas para contatos identificados.

Não definir uma prioridade de correspondência. A correspondência padrão com prioridade para e-mail causa duplicatas para contatos de WhatsApp que informam o e-mail mais tarde no fluxo. Mude para correspondência com prioridade para telefone antes de ativar a sincronização completa.

Sincronização de conversas sem filtro. Sincronizar cada mensagem do bot nas timelines do HubSpot enterra os contatos em ruído. Use o filtro "apenas conversas qualificadas".

Expiração do token de Private App do HubSpot. Os tokens de Private App não expiram, mas se alguém revogar o app ou a integração for reconectada com um novo token, a sincronização quebra silenciosamente. Nenhum erro aparece no Respond.io. Os contatos simplesmente param de sincronizar. Defina um lembrete mensal no calendário para verificar o status da integração no painel de configurações de integração do Respond.io. O guia de boas práticas de segurança do OAuth 2.0 da IETF cobre princípios de gestão do ciclo de vida de tokens, incluindo a detecção de falhas silenciosas de token, a mesma classe de problema que causa estados de sincronização de CRM quebrados.

Próximos Passos

Execute uma sincronização de teste com 50 contatos usando conversas da última semana. Procure duplicatas no HubSpot executando um relatório de Contatos filtrado por "Create Date = últimos 7 dias E Source = Respond.io" e verificando registros com números de telefone duplicados.

Quando o teste estiver limpo, ative a sincronização completa e passe à construção das suas regras de roteamento de atribuição de reps.

Saiba Mais

About the author

Victor Hoang

Victor Hoang

Co-Founder, Rework.com

Victor Hoang is Co-Founder and CMO of Rework. He spent 12+ years scaling B2B SaaS growth, building a lead engine that generated over 1 million leads and $10M+ in annual recurring revenue. Today he builds AI agents and MCP servers into Rework's products to empower customers across growth and operations. He writes about what actually works.