☁️ APIs de CRMs Modernos
Salesforce, HubSpot, Pipedrive
CRMs (Customer Relationship Management) sao sistemas que gerenciam relacionamento com clientes: leads, oportunidades, contatos, negocios. Para dashboards de vendas, sao fonte primaria de dados comerciais.
Diferente de ERPs, CRMs modernos tem APIs REST bem documentadas e faceis de integrar. Salesforce e HubSpot lideram o mercado global, Pipedrive e RD Station sao populares no Brasil.
📊 Comparacao de APIs de CRMs
| CRM | API Style | Rate Limits | Auth |
|---|---|---|---|
| Salesforce | REST + SOQL | 15k/dia | OAuth 2.0 |
| HubSpot | REST | 100/10s | API Key / OAuth |
| Pipedrive | REST | 80/2s | API Token |
| RD Station | REST | 120/min | API Key |
💻 Codigo: Conexao com HubSpot
import { Client } from '@hubspot/api-client';
const hubspotClient = new Client({ accessToken: process.env.HUBSPOT_TOKEN });
// Buscar deals (negocios)
async function getDeals(filters: { stage?: string }) {
const response = await hubspotClient.crm.deals.searchApi.doSearch({
filterGroups: filters.stage ? [{
filters: [{ propertyName: 'dealstage', operator: 'EQ', value: filters.stage }]
}] : [],
properties: ['dealname', 'amount', 'dealstage', 'closedate', 'hs_lastmodifieddate'],
limit: 100
});
return response.results.map(deal => ({
id: deal.id,
name: deal.properties.dealname,
value: parseFloat(deal.properties.amount || '0'),
stage: deal.properties.dealstage,
closeDate: new Date(deal.properties.closedate)
}));
}
// Metricas de pipeline
async function getPipelineMetrics() {
const deals = await getDeals({});
const byStage = groupBy(deals, 'stage');
return Object.entries(byStage).map(([stage, stageDeals]) => ({
stage,
count: stageDeals.length,
totalValue: sumBy(stageDeals, 'value'),
avgValue: meanBy(stageDeals, 'value')
}));
}
📈 Pipelines e Funis de Vendas
Visualizacao de etapas
Pipelines de vendas representam as etapas que um lead percorre ate virar cliente. Dashboards de vendas precisam visualizar volume, valor e conversao em cada etapa.
🎯 Exemplo Visual: Funil de Vendas
💻 Codigo: Calculo de Funil
// Calcular metricas de funil
function calculateFunnelMetrics(deals: Deal[], stages: string[]) {
const stageOrder = stages.reduce((acc, stage, i) => ({ ...acc, [stage]: i }), {});
const byStage = groupBy(deals, 'stage');
return stages.map((stage, index) => {
const stageDeals = byStage[stage] || [];
const previousStage = stages[index - 1];
const previousCount = byStage[previousStage]?.length || stageDeals.length;
return {
stage,
count: stageDeals.length,
value: sumBy(stageDeals, 'value'),
conversionRate: index === 0 ? 100 : (stageDeals.length / previousCount * 100).toFixed(1),
dropOff: index === 0 ? 0 : previousCount - stageDeals.length
};
});
}
🤖 Automacoes e Workflows
Integrando com automacoes do CRM
CRMs modernos tem workflows automatizados que disparam acoes baseadas em eventos. Dashboards podem se integrar a esses workflows para receber dados em tempo real ou disparar alertas.
🔄 Exemplos de Integracao com Workflows
Webhook do CRM notifica dashboard quando deal e ganho. Dashboard atualiza metricas em real-time.
Dashboard detecta meta batida e dispara notificacao no Slack/Email via API do CRM.
Dashboard detecta risco de churn e cria task automatica para CS no CRM.
📊 Metricas de Vendas
KPIs essenciais de CRM
🎯 KPIs de Vendas do CRM
Receita mensal recorrente. Base para previsibilidade de receita.
Custo para adquirir um cliente. Quanto menor, melhor a eficiencia.
Valor total que cliente gera. LTV/CAC > 3 e saudavel.
Tempo medio do lead ate fechamento. Identifica gargalos.
% de oportunidades ganhas. Mede qualidade do pipeline.
Valor pipeline / meta. 3x e o minimo recomendado.
🏆 Lead Scoring
Priorizacao de leads
Lead Scoring atribui pontos a leads baseado em caracteristicas e comportamentos. Dashboards podem exibir distribuicao de scores e taxa de conversao por faixa.
💻 Codigo: Exibindo Lead Scores
// Buscar leads com scores do HubSpot
async function getLeadsWithScores() {
const contacts = await hubspotClient.crm.contacts.searchApi.doSearch({
properties: ['firstname', 'lastname', 'email', 'hubspotscore', 'lifecyclestage'],
limit: 100,
sorts: [{ propertyName: 'hubspotscore', direction: 'DESCENDING' }]
});
return contacts.results.map(contact => ({
id: contact.id,
name: `${contact.properties.firstname} ${contact.properties.lastname}`,
email: contact.properties.email,
score: parseInt(contact.properties.hubspotscore || '0'),
stage: contact.properties.lifecyclestage,
priority: getScorePriority(parseInt(contact.properties.hubspotscore || '0'))
}));
}
function getScorePriority(score: number): 'hot' | 'warm' | 'cold' {
if (score >= 80) return 'hot';
if (score >= 40) return 'warm';
return 'cold';
}
🇧🇷 CRMs Brasileiros
RD Station, Ploomes, Moskit
O mercado brasileiro tem CRMs locais populares. RD Station domina marketing/vendas, Ploomes e forte em industrias, Moskit e acessivel para PMEs.
💻 Codigo: Integracao RD Station CRM
// API do RD Station CRM
class RDStationCRMClient {
private baseUrl = 'https://crm.rdstation.com/api/v1';
async getDeals(params: { dealStageId?: string }) {
const url = new URL(`${this.baseUrl}/deals`);
if (params.dealStageId) url.searchParams.set('deal_stage_id', params.dealStageId);
const response = await fetch(url.toString(), {
headers: { 'Authorization': `Bearer ${process.env.RD_CRM_TOKEN}` }
});
const data = await response.json();
return data.deals.map(deal => ({
id: deal.id,
name: deal.name,
value: deal.amount_montly || deal.amount_unique,
stage: deal.deal_stage.name,
owner: deal.user.name,
createdAt: new Date(deal.created_at)
}));
}
}
💡 Dica Pratica
Para CRMs brasileiros: RD Station tem excelente documentacao e suporte. Ploomes e Moskit podem ter APIs mais limitadas - valide o que precisa antes de escolher. Considere usar Zapier/Make como middleware se integracao direta for complexa.