top of page

Integração do Apollo.io com o CRM



⚠️ 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
a imagem denota um screenshot da visualização de kanban do Pipedrive
Exemplo de um Funil Comercial com visão em Kanban

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

  1. Minerar os contatos no Apollo

    1. Sua aplicação saberá quais contatos buscar com base no estágio

  2. Enviar os contatos para o CRM

    1. 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:

  1. Instanciação de Contatos e Negociações no Funil de Pré-vendas do CRM

    1. Criar no CRM, sob propriedade do usuário correto, uma negociação cada contato salvo no Apollo por aquele usuário

      1. Criar na etapa ‘Entrada’

        1. Se o contato apenas tiver sido salvo no Apollo

      2. Criar na etapa ‘Pesquisa’

        1. Sempre que o contato tiver sido salvo colateralmente, após ter sido enviado diretamente para uma cadência dentro do Apollo

    2. Regras para criação de negócios no CRM

      1. As entidades contato no Apollo possuem vários campos, eles precisam ser enviados para entidades distintas no CRM

        1. A negociação nascer associada a duas entidades nativas do CRM:

          1. Contato e Organização

        2. Os dados do contato do Apollo devem ir para o Contato no CRM.

          1. Linkedin

          2. Email

          3. Telefone corporativo

          4. etc…

        3. Os dados da Empresa do contato no Apollo devem ir para os campos correspondentes na Organização, no CRM

          1. Site

          2. Número de funcionários

          3. Endereço

          4. etc…

        4. O Negócio no CRM deverá ser nomeado com o seguinte padrão: 'primeiro nome' + 'nome da empresa’

          1. O negócio precisa estar associado ao contato e à empresa criada na etapa anterior

  2. Sincronização de Contatos e Negociações

    1. 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

  3. Atualizar no CRM tudo que foi realizado no Apollo

    1. Emails que foram enviados

    2. Linkedins que foram enviados

    3. 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):

  1. Levantar todos os novos contatos que surgiram no último minuto

    1. No estágio ‘Sem estágio ⚪’

    2. 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


39 visualizações0 comentário

Commenti


bottom of page