Integração do Apollo.io com o CRM
- Ivan Flecha
- 22 de ago. de 2023
- 4 min de leitura
⚠️ Observações | Leitura obrigatória
O Apollo não realiza webhooks
O Apollo não irá cuidar da lógica da integração para você - você precisará criar uma mini-aplicação para integrá-lo
Para obter sua chave de API Apollo navegue até https://developer.apollo.io/keys/
O CRM realiza webhooks, mas se você está configurando uma operação de pré-vendas e precisa alimentar o CRM com dados de contatos do APollo, este método não irá funcionar
Contexto negocial
Existem duas ferramentas que estão trackeando partes paralelas de um processo único:
Apollo
CRM
Resultados buscados:
Quando ocorrer um avanço de etapa no Apollo, o CRM precisa tomar uma ação na entidade negócio
Quando ocorrer um avanço de etapa no CRM, o Apollo precisa tomar uma ação na entidade contato
⚠️ Recomendamos que você construa uma esquemática de correspondência de estágios entre todas as ferramentas envolvidas pelas suas organizações de receita (todas as unidades, equipes e cargos que interagem com o cliente e adquirem receita com base nessas interações). Veja o template abaixo como inspiração (copie à vontade).
Esquemática da Jornada de Compra gerenciada por ferramentas comerciais
Estrutura do Funil Comercial no CRM

Integrando Apollo e CRM via API
Para integrar o Apollo e o CRM sem o uso do Maker (antigo integromat), Integrately ou Zapier, você precisará construir uma aplicação.
Sua aplicação precisa executar dois passos
Minerar os contatos no Apollo
Sua aplicação saberá quais contatos buscar com base no estágio
Enviar os contatos para o CRM
Utilizar a API do CRM para fazer o POST dos contatos
Integração simples
Aqui segue um passo-a-passo para criar esta aplicação FaaS usando Cloudflare Workers que integre o Apollo.io com a API do Pipedrive.
Nota: Ao desenvolver esta aplicação, lembre-se de consultar a documentação oficial tanto do Apollo.io quanto do Pipedrive para obter detalhes sobre os endpoints, estrutura de dados e outras informações específicas que você possa precisar. Além disso, leve em consideração as taxas de limite de ambas as APIs para evitar excedê-las.
Para implementar cada fase, você precisará de código específico. Vamos abordar cada fase e fornecer um exemplo simplificado de código. Porém, tenha em mente que estes são códigos básicos e podem precisar de ajustes e otimizações conforme sua implementação real.
Código de Exemplo da Integração Simples
1. Configuração Inicial
Para este guia, vou assumir que você já tenha suas chaves de API.
2. Minerando Contatos do Apollo
const APOLLO_API_KEY = 'your_apollo_api_key';
const apolloEndpoint = 'https://api.apollo.io/contacts'; // Este é um exemplo. Verifique a documentação do Apollo.
async function fetchContactsFromApollo() {
const response = await fetch(apolloEndpoint, {
headers: {
'Authorization': `Bearer ${APOLLO_API_KEY}`
}
});
if (!response.ok) {
throw new Error('Failed to fetch contacts from Apollo');
}
return response.json();
}
3. Verificando Estágios dos Contatos no Apollo
async function getContactStages() {
const contacts = await fetchContactsFromApollo();
return contacts.map(contact => ({
id: contact.id,
stage: contact.stage
}));
}
4. Enviar Contatos para Pipedrive
const PIPEDRIVE_API_KEY = 'your_pipedrive_api_key';
const pipedriveEndpoint = 'https://api.pipedrive.com/v1/persons'; // Verifique a documentação do Pipedrive.
function mapApolloStageToPipedrive(stage) {
// Implemente sua lógica de mapeamento aqui.
// Por exemplo:
switch (stage) {
case 'ApolloStage1': return 'PipedriveStage1';
// Adicione mais mapeamentos conforme necessário
default: return 'Unknown';
}
}
async function sendContactToPipedrive(contact) {
const mappedStage = mapApolloStageToPipedrive(contact.stage);
const response = await fetch(pipedriveEndpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${PIPEDRIVE_API_KEY}`
},
body: JSON.stringify({
name: contact.name, // Ajuste os campos conforme necessário
stage: mappedStage
})
});
if (!response.ok) {
throw new Error('Failed to send contact to Pipedrive');
}
return response.json();
}
async function processContacts() {
const contacts = await getContactStages();
for (let contact of contacts) {
await sendContactToPipedrive(contact);
}
}
5. Lidar com Exceções e Monitorar
Você pode adicionar blocos `try-catch` em funções relevantes para lidar com erros:
try {
await processContacts();
} catch (error) {
console.error('Error processing contacts:', error);
}
6. Deploy
Neste ponto, você estará pronto para fazer o deploy do seu Cloudflare Worker através do dashboard do Cloudflare.
Lembre-se de que este é um exemplo simplificado para demonstrar a lógica geral. Na prática, você pode querer adicionar mais tratamento de erros, otimizar chamadas de API (por exemplo, enviar contatos em lote), usar funções de retry em caso de falhas, entre outras melhorias.
Integração completa com correspondência total de dados
Para a correspondência total de dados entre as ferramentas, você precisará criar uma aplicação bastante robusta.
Abaixo em 'Tarefas Críticas' você verá nossa recomendação dos principais pontos necessários para você construir sua sprint de desenvolvimento em colaboração das equipes comercial e de desenvolvimento.
Tarefas críticas
Precisamos resolver duas preocupações:
Instanciação de Contatos e Negociações no Funil de Pré-vendas do CRM
Criar no CRM, sob propriedade do usuário correto, uma negociação cada contato salvo no Apollo por aquele usuário
Criar na etapa ‘Entrada’
Se o contato apenas tiver sido salvo no Apollo
Criar na etapa ‘Pesquisa’
Sempre que o contato tiver sido salvo colateralmente, após ter sido enviado diretamente para uma cadência dentro do Apollo
Regras para criação de negócios no CRM
As entidades contato no Apollo possuem vários campos, eles precisam ser enviados para entidades distintas no CRM
A negociação nascer associada a duas entidades nativas do CRM:
Contato e Organização
Os dados do contato do Apollo devem ir para o Contato no CRM.
Linkedin
Email
Telefone corporativo
etc…
Os dados da Empresa do contato no Apollo devem ir para os campos correspondentes na Organização, no CRM
Site
Número de funcionários
Endereço
etc…
O Negócio no CRM deverá ser nomeado com o seguinte padrão: 'primeiro nome' + 'nome da empresa’
O negócio precisa estar associado ao contato e à empresa criada na etapa anterior
Sincronização de Contatos e Negociações
Avançar para o estágio ‘Pesquisa’ no CRM todas as negociações cujo lead correspondente tiver sido enviado para o estágio ‘Prospectando 💎⛏️’ no Apollo
Atualizar no CRM tudo que foi realizado no Apollo
Emails que foram enviados
Linkedins que foram enviados
Aberturas de email que ocorreram
Sugestão de 1º Passo
Para se aclimitar com a construção do código e com as APIs dos sistemas, sugerimos começar pela extração de contatos do Apollo.
Exemplo de mineração dos contatos do estágio agendado no Apollo através do comando de search (com base na esquemática de jornada de compra supra):
https://knowledge.apollo.io/hc/en-us/articles/4416173158541-Use-the-Apollo-REST-API
Levantar todos os novos contatos que surgiram no último minuto
No estágio ‘Sem estágio ⚪’
No estágio ‘Prospectando 💎⛏️’
Conseguiu construir sua integração?
Construí a simples, usando Cloudflare
Construí a simples, utilizando outra forma de Serverless
Construí a simples, utilizando outro caminho
Construí a complexa
Comments