← Central de conteúdo

CRM integrado ao ERP: como carregar histórico no primeiro dia

Quem já viveu uma implantação de CRM conhece a cena. Alguém pergunta "e o histórico dos clientes, entra?", e a resposta vem em forma de planilha: exporta do ERP, ajusta coluna, importa. Três semanas depois, o vendedor abre a ficha de um cliente, vê "última compra: março" e desconfia. Vai no ERP: o cara comprou anteontem. A partir daí, ninguém mais olha o CRM.

Tela real do zCRM relacionada a CRM integrado ao ERP: como carregar histórico no primeiro dia
Uma implantação curta avança por dados, piloto, rotina e revisão de uso.

Quem já viveu uma implantação de CRM conhece a cena. Alguém pergunta "e o histórico dos clientes, entra?", e a resposta vem em forma de planilha: exporta do ERP, ajusta coluna, importa. Três semanas depois, o vendedor abre a ficha de um cliente, vê "última compra: março" e desconfia. Vai no ERP: o cara comprou anteontem. A partir daí, ninguém mais olha o CRM.

O erro não foi a importação ter dado errado. Foi ter existido. E o vocabulário ajudou a errar: "carregar histórico" descreve uma mudança de lugar que não precisa acontecer.

Nada é copiado — o que se carrega é uma chave

Vale ser literal sobre o que entra no banco do CRM quando uma conta é criada a partir do ERP. No zCRM, o comando crm:sync-erp-accounts percorre as entidades do ERP e grava quatro campos:

  • erp_entity_id — o identificador da entidade no ERP;
  • erp_entity_code — o código como o cliente conhece;
  • erp_name — o nome de exibição (fantasia, quando existe);
  • owner_user_id — o dono da conta.

É isso. Não entra faturamento, pedido, nota, título nem histórico de compra. O banco do CRM não fica sabendo quanto aquele cliente comprou no ano passado — e não precisa.

O erp_entity_id é a única cola entre os dois bancos: uma string opaca, tratada como identificador e nada mais — o CRM nunca faz conta com ela, porque em outro ERP ela pode ser um inteiro, um GUID ou um código composto. Carregar histórico, na prática, é gravar essa chave uma vez por cliente.

Tela do zCRM relacionada ao tema do artigo
A Conta 360 reúne histórico do ERP, relacionamento, saúde e potencial antes do atendimento.

O histórico continua morando no ERP — e é por isso que ele não envelhece

Aqui está o ganho que a importação joga fora. Uma cópia nasce certa e apodrece: é uma fotografia de terça-feira que continua sendo terça-feira para sempre, enquanto o cliente segue comprando. Toda a engenharia de "sincronizar" depois existe para consertar um problema que a cópia criou.

Quando o vendedor abre a Conta 360 e olha os pedidos daquele cliente, o zCRM lê no ERP, naquele momento, filtrando pela chave da conta. O dado não está desatualizado porque nunca foi armazenado. O pedido que o faturamento lançou às 11h aparece às 11h — não porque exista uma sincronização esperta, mas porque não existe sincronização nenhuma naquele caminho.

Isso tem uma consequência vendida como limite que é, na verdade, a garantia: o CRM não escreve no ERP. As views de integração são somente leitura. Nome errado se corrige no ERP, e o CRM passa a mostrar certo. Nunca há duas versões da verdade brigando, porque só existe uma.

O que o comando faz, linha a linha

É aqui que o "primeiro dia" acontece de verdade. Para cada entidade do ERP, o sync procura uma conta com aquela chave. Não achou — cria, com os quatro campos. Achou — atualiza o código e o nome, e para por aí.

O dono sai do vendedor_codigo do ERP. Se aquele vendedor ainda não tem login no CRM, o sync cria o usuário ativo, com papel de vendedor e um e-mail técnico (erp-seller-*@crm.local), amarrado ao código do ERP. Quando a importação de usuários rodar depois com o e-mail real, esse usuário é promovido, não duplicado — a carteira que já estava apontando para ele continua apontando.

E tem a parte que decide se o CRM sobrevive ao segundo mês: o sync preserva o trabalho humano. Se alguém trocou o dono na mão, definiu temperatura, marcou potencial ou escreveu uma nota, rodar o sync de novo não desfaz nada disso — o dono só é preenchido quando está vazio. Um sync que atropela o que a equipe editou treina a equipe a não editar.

Antes de valer, dá para ensaiar: --dry-run mostra o que aconteceria sem gravar, --limit=N roda num pedaço e --include-inactive decide se cliente inativo entra.

O cache de métricas: a exceção, e por que ela existe

Se nada é copiado, por que a tela de clientes em risco abre rápido?

Porque existe uma exceção deliberada. CRM e ERP são bancos Firebird separados, e o Firebird não faz join entre bancos — cada consulta roda contra um banco só. Casar as duas pontas é sempre trabalho de aplicação, e fazer isso ao vivo, varrendo anos de notas de 3 mil clientes a cada tela, castigaria o servidor do ERP no horário comercial.

Então o crm:sync-account-metrics agrega uma vez por dia, às 02:30, e grava em crm_account_metrics o que é caro de calcular e barato de guardar: última compra, dias sem comprar, contagem e receita de 12 meses, ticket médio, RFM, segmento e risco. Isso é cache derivado, não cópia de histórico: pode ser jogado fora e recalculado do ERP a qualquer momento, sem perder nada.

A regra prática que separa os dois mundos: agregação pesada é job; leitura ao vivo só com filtro por entidade e período. É por isso que a lista de risco é de ontem à noite e o drill de um cliente específico é de agora.

Erros comuns na hora de ligar os dois

  • Exportar o ERP e importar no CRM. Cria uma segunda verdade que começa a divergir na primeira hora e obriga alguém a conciliar planilha para sempre.
  • Tratar o cache como se fosse o dado. Discutir com o vendedor se o RFM está certo às 15h, quando ele foi calculado às 02:30, é discutir a hora do relógio.
  • Achar que o sync é a implantação. Ele é a última etapa. Antes, alguém precisou criar as views v_crm_* no ERP e apontar a conexão. Sem isso, não há primeiro dia.
  • Mostrar código no lugar de nome. É por isso que o erp_name existe como cache de exibição (com crm:backfill-account-names para as contas antigas). Tela que mostra "cliente 10842" não é usada.
  • Supor que o vínculo automático acerta tudo. Cliente sem vendedor no ERP vira conta sem dono, e ninguém reclama de uma conta que não aparece na tela de ninguém.

Como isso se aplica no zCRM

O que dói, concretamente, é o CRM que começa vazio e pede para a equipe digitar aquilo que a empresa já sabe há dez anos. O time paga o custo antes de receber qualquer valor — e, previsivelmente, não paga.

O zCRM roda hoje sobre dados reais: milhares de contas sincronizadas do ERP, com métricas RFM calculadas. E é útil olhar o que o primeiro dia entrega cheio e o que ele entrega vazio, porque não é a mesma coisa. Cheio: a carteira, com dono, e tudo que o ERP já sabe — quem comprou, quanto, quando, há quantos dias parou, qual o ticket, qual o risco. Vazio: a camada transacional do CRM — oportunidades, atividades, contatos, visitas e conversas começam em zero, porque esses fatos nunca existiram em lugar nenhum para serem carregados.

Essa assimetria é o ponto. O que a empresa já sabe, ela não digita de novo. O que ela nunca registrou, ela passa a registrar a partir de agora — sobre uma carteira que já está de pé.

Repare no que isso faz com a primeira semana: em vez de "vou alimentar o CRM até ele ficar útil", o gestor pergunta no dia um "quem da minha carteira parou de comprar?" — e a resposta existe, porque ela sempre existiu no ERP; só estava sem endereço.

O limite honesto, explícito: o zCRM não importa e não migra histórico. Não há cópia de notas, pedidos ou títulos para o banco do CRM, e não há escrita no ERP — cadastro errado se corrige no ERP. Também não é instantâneo: alguém precisa criar as views v_crm_* e apontar a conexão antes. E o vínculo automático não acerta 100%: cliente sem vendedor_codigo no ERP vira conta sem dono, e conta sem dono não aparece no escopo de carteira de ninguém — precisa ser atribuída na mão. Por fim, as métricas são de um job diário; só o drill por conta é ao vivo. Quem promete tempo real na carteira inteira está descrevendo outro produto.

Próxima leitura

  • Integrar CRM ao ERP sem trocar o ERP: o que a PME precisa saber.
  • ERP como fonte oficial: por que não duplicar cadastro de cliente no CRM.
  • Checklist do primeiro dia: quais dados do ERP carregar no CRM.