INTERAFLOW.ai
IntegraçãoCRM · CTI · Salesforce

Salesforce + Interaflow — CTI nativo no Lightning.

Chamada toca, o Lightning abre o Lead ou Contact certo antes do agente atender. Desligou, vira Task com transcrição, gravação e disposition. WhatsApp e e-mail aparecem na Activity Timeline do mesmo registro. Outbox pattern com retry e DLQ — se a Salesforce API tiver 503, nada se perde. OAuth2 via Connected App, sem middleware no meio.

  • Setup com apoio do time em 1 dia útil
  • Open CTI oficial — sem Service Cloud Voice
  • Outbox resiliente com DLQ
  • Open CTI (beta)

    Lightning + Classic

  • Outbox com DLQ

    retry exponencial

  • Setup em 1 dia

    com apoio do time

Como funciona a integração Salesforce + Interaflow, na prática

A integração tem duas metades que conversam entre si. A primeira é o CTI no Lightning — um Lightning Component do Interaflow que ancora no Utility Bar (aquela barra persistente no rodapé do Lightning) e fala com o Interaflow via Open CTI, o framework JavaScript oficial da Salesforce pra embedar softphones. Quando uma chamada toca no Interaflow, o widget faz um sforce.opencti.screenPop no ID do Lead, Contact ou Account correspondente — o agente vê o cliente antes mesmo de atender. Quando a chamada encerra, o widget pode abrir automaticamente o formulário de log de chamada pré-preenchido, ou criar a Task silenciosamente via outbox (configurável por operação).

A segunda metade é o sync de dados via API, usando OAuth2 (Connected App publicada no seu org Salesforce) e o outbox pattern — cada evento do Interaflow (chamada iniciada, mensagem de WhatsApp, resultado de campanha, gravação disponível) é enfileirado, entregue à Salesforce REST API com chave de idempotência, e re-tentado com backoff exponencial se a Salesforce responder 5xx ou estourar o governor limit. Idempotency key garante que nenhum evento vira duplicata, mesmo sob retry.

O que a integração sincroniza, do Interaflow pro Salesforce: chamadas (como Task com Type='Call', CallDuration, CallDisposition e CallObject apontando pra gravação — também suportado como custom object Interaflow_Call__c pra quem preferir separar), mensagens de WhatsApp (como Task ou custom activity), atualização de propriedades de Lead/Contact/Account (Last_Call_Result__c, Preferred_Channel__c), criação ou atualização de Opportunity e Case quando a campanha tem essa regra, e criação de relação com User (owner do Task) via match por email do agente.

O que a integração sincroniza, do Salesforce pro Interaflow: mudança de stage em Opportunity dispara régua de cadência no Interaflow, criação de Lead vira contato no mailing de campanha, mudança de status em Case pode abrir conversa de WhatsApp. Esse caminho roda via Platform Events (ou Outbound Message como fallback legado) + endpoint REST nosso de ingestão. (Fluxo de volta em rollout — enquanto não libera, trazer contatos via Bulk API no Salesforce-side ou export de Report + import bulk.)

O que a integração entrega pro usuário final. O rep abre o Lightning pela manhã, não precisa abrir ferramenta de softphone separada — o Interaflow já tá no Utility Bar. Chamada toca, o Lead pula na tela. Desliga, a Task já aparece na Activity Timeline com transcrição. O SDR continua no Lightning. O gerente roda relatório Salesforce nativo cruzando origem de Lead (Marketing) com resultado de chamada (Contact Center) sem export. E o cliente não percebe — ele só sente o efeito de "eles sabem quem eu sou". Mais contexto no pillar /omnichannel, na feature /crm e no hub /integracoes. Pra quem está avaliando HubSpot em paralelo, ver /integracoes/hubspot.

Ficha técnica

Ficha técnica da integração

Os detalhes que o admin Salesforce e o time de RevOps pedem antes de aprovar. Tudo abaixo é o que está em produção; o que está em rollout tem flag explícita.

Objetos Salesforce mapeados (Interaflow → Salesforce)

  • Contato

    Objeto Salesforce
    Lead ou Contact
    Notas
    Match por telefone E.164 (Phone/MobilePhone) ou email. Configurável: sempre Lead, sempre Contact, ou roteador (Lead até conversão, depois Contact).
  • Empresa

    Objeto Salesforce
    Account
    Notas
    Associada ao Contact ou Lead quando aplicável.
  • Chamada

    Objeto Salesforce
    Task (Type='Call')
    Notas
    Campos CallDuration, CallDisposition, CallObject (URL gravação), Description (transcrição). Custom object Interaflow_Call__c como opção avançada.
  • Mensagem WhatsApp

    Objeto Salesforce
    Task (Type='Other')
    Notas
    Ou custom activity se o org usar Enhanced Messaging.
  • Campanha

    Objeto Salesforce
    Campaign + CampaignMember
    Notas
    Lista do Interaflow vira Campaign; cada contato vira CampaignMember com status atualizado pelo resultado.
  • Resultado

    Objeto Salesforce
    Opportunity (update) ou Case (create)
    Notas
    Regra por campanha. Update em StageName, criação de Case com Origin='Call'.
  • Agente

    Objeto Salesforce
    User
    Notas
    Match por email do usuário Salesforce (case-insensitive).

Autenticação

  • OAuth2 via Connected App

    Authorization code flow com refresh token automático. API v59.0+ (Lightning Experience e Classic). Named Credentials suportado pra quem prefere armazenar credencial no Salesforce. Credenciais criptografadas via Fernet em storage isolado por tenant. Revogação em 1 click no painel do Interaflow.

  • Escopos mínimos

    • api
    • refresh_token
    • offline_access
    • lightning
    • visualforce

Eventos publicados pelo outbox

  • call.started

    instantâneo

  • call.ended

    < 1s

  • message.outbound

    instantâneo

  • recording.available

    30–90s

  • transcription.available

    1–3 min

  • Platform Event (Salesforce → Interaflow)

    em rollout

  • Open CTI widget (AppExchange)

    beta

CTI no Lightning — Open CTI beta

  • Lightning Component interaflowSoftphone ancorado no Utility Bar (configurável por App).
  • Eventos suportados: screenPop, saveLog, setSoftphoneItemLabel, enableClickToDial, onClickToDial.
  • Screen pop match por telefone (Contact primeiro, Lead depois; múltiplos, lista pro agente escolher). Click-to-call em qualquer campo telefone do Lightning.
  • Status: widget em beta (instalável via URL em sandbox). Publicação no AppExchange em rollout.

Exemplo de payload entregue pro Salesforce

Exemplo · Task (Type='Call') criada via outbox
POST https://<myorg>.my.salesforce.com/services/data/v59.0/sobjects/Task/
Authorization: Bearer <oauth-token>
Idempotency-Key: tn_x9k-call_4821-f3b7a1
Content-Type: application/json

{
  "Subject": "Chamada — Interaflow",
  "Type": "Call",
  "Status": "Completed",
  "WhoId": "00Q...lead_or_contact_id...",
  "CallDuration": 204,
  "CallDisposition": "promessa_pagamento",
  "CallObject": "https://recordings.interaflow.co/signed/...",
  "Description": "Cliente confirma débito em 15/05. Transcrição: ...",
  "ActivityDate": "2026-04-20"
}
# → 201 Created
# Location: /services/data/v59.0/sobjects/Task/00T...

Entrega e resiliência

  • Idempotency key por evento (hash de tenant_id + entity_id + event_type + timestamp). Salesforce nunca recebe Task duplicada, mesmo sob retry.
  • Retry: backoff exponencial (1s, 4s, 16s, 1min, 5min, 30min) até 6 tentativas.
  • Dead-letter queue: eventos não entregues vão pra DLQ com replay manual via painel admin.
  • Governor limits respeitados (Enterprise = 100k calls/24h por licença; Unlimited = 1M). Fila interna adapta pressão de saída. Bulk API 2.0 pra volumes acima de 2k eventos/hora.
  • Observabilidade: dashboard de eventos (24h/7d/30d), log com payload + response (30 dias de retenção), alertas Slack/email/webhook por limiar de DLQ ou API_QUERY_LIMIT_EXCEEDED.
  • 6

    RETRIES ANTES DE DLQ

  • 100k/24h

    LIMITE API RESPEITADO

  • 30d

    RETENÇÃO DE LOG

Mesma arquitetura descrita no hub /integracoes (outbox pattern compartilhado) e usada na integração HubSpot.

Como funciona

Como os dados fluem entre Interaflow e Salesforce

Três fluxos rodando em paralelo: o CTI no Lightning (visual, tempo real), o outbox (dados, quase tempo real), e o inbound via Platform Events (ainda em rollout). Um diagrama resolve mais que cem bullets.

CTI LIGHTNING — Open CTI (beta)

  1. Utility Bar (Lightning Component)
  2. sforce.opencti (postMessage)
  3. Interaflow softphone — ring · screenPop · saveLog

OUTBOX — Interaflow → Salesforce (GA)

  1. Discador · WhatsApp · Chat · E-mail · Flow engine
  2. Event bus (dedup + idempotency)
  3. Outbox queue (retry + governor-aware)
  4. Salesforce REST API
  5. Salesforce — Task · Lead · Contact · Account · Opportunity · Case · CampaignMember

PLATFORM EVENTS — Salesforce → Interaflow (em rollout)

  1. Salesforce (Flow / Apex)
  2. Platform Event Interaflow_Event__e
  3. CometD / Pub/Sub API
  4. Interaflow — Contato · Campanha · Flow trigger

Diagrama em low-fi — SVG final entra no próximo release.

Linha do tempo de uma chamada inbound no Salesforce

  1. 00:00

    Chamada inbound entra no Interaflow (SIP)

  2. 00:00

    CTI dispara onCallReceived — Lightning faz screenPop no Contact

  3. 00:03

    Agente aceita a chamada; card do Contact já está aberto

  4. 03:24

    Agente encerra; CTI dispara saveLog (Task criada no Salesforce)

  5. 04:10

    Evento recording.available — CallObject preenchido com URL pré-assinada

  6. 05:30

    Evento transcription.available — Description da Task atualizada

Latências típicas — refinar com medição real no ambiente.

Casos de uso

Três jeitos de usar Salesforce + Interaflow

Três recortes que cobrem o que a gente vê instalado em campo em Sales Cloud, Service Cloud e em orgs híbridos.

  • Sales Cloud — SDR vive no Lightning, disca pelo Utility Bar

    Quem usa:Time de Sales Cloud com discador preditivo no topo do funil (prospecção ou qualificação), Lead-to-Opportunity, e cadência multicanal que não pode sair do Lightning.

    +22%vs. Sales Dialer padrão

    TAXA DE CONEXÃO

    1. Report do Salesforce (Leads MQL, região SP, sem última atividade nos últimos 15 dias) vira mailing de campanha no Interaflow via Bulk API.
    2. Discador preditivo liga, AMD filtra caixa postal, conectadas caem pro SDR com o Lead pulando na tela via Open CTI (screenPop).
    3. SDR fala, desliga, Task é criada com Type='Call', CallDuration, CallDisposition mapeada pra campo custom do Lead (Last_Call_Result__c).
    4. Se converter Lead em Opportunity, a Task migra pro Contact + Opportunity automaticamente (padrão Salesforce).
    5. Quem não responde em 48h entra no fluxo de WhatsApp + e-mail no Interaflow — e cada toque também vira Task no Lead.

    Mix típico de canais na cadência

    • Voz (discador) 55%
    • WhatsApp 30%
    • E-mail (Sales Engagement) 15%
  • Service Cloud — Case aberto, Activity Timeline viva

    Quem usa:Operação de suporte em Service Cloud que atende por múltiplos canais (WhatsApp, chat, voz) e quer tudo virando Activity no Case.

    +6ppagente tem Case aberto

    CSAT PÓS-INTEGRAÇÃO

    1. Cliente manda WhatsApp → Interaflow identifica pelo telefone (match no Contact via SOQL) → abre Case no Service Cloud com Origin='WhatsApp'.
    2. Cada mensagem vira Task no Case. Se for Enhanced Messaging do Salesforce, vira Conversation.
    3. Cliente liga depois — Open CTI faz screenPop no Case (se há Case aberto ativo) em vez do Contact genérico. Agente continua a conversa sem perder contexto.
    4. Quando o Case fecha, Interaflow dispara CSAT no canal preferido do cliente (regra configurável).
    5. Tudo vira relatório Service Cloud nativo — sem plugin extra.

    Distribuição de canais no SAC

    • WhatsApp 50%
    • Chat web 25%
    • Voz 20%
    • E-mail 5%
  • Cobrança — Stage em Opportunity dispara régua no Interaflow

    Quem usa:Financeiro ou RevOps que usa Opportunity (ou Custom Object) pra rastrear pendências de pagamento e já roda Flow/Process Builder no Salesforce.

    +15%vs. régua só e-mail

    RECUPERAÇÃO DE INADIMPLÊNCIA

    1. Opportunity muda pra stage 'Atrasada 30d' → Flow publica Interaflow_Event__e → Interaflow inicia régua.
    2. Régua tem 4 toques: WhatsApp (D+0), ligação (D+2), SMS (D+5), ligação final (D+10).
    3. Cada toque atualiza campo custom da Opportunity no Salesforce (Last_Contact_Channel__c, Last_Contact_Result__c).
    4. Pagamento confirmado (webhook do ERP ou mudança manual no Salesforce) → Flow publica outro Platform Event → Interaflow derruba a régua.

    Mix de canais na régua de cobrança

    • WhatsApp 45%
    • Voz 30%
    • SMS 15%
    • E-mail 10%

Números ilustrativos baseados em benchmark de mercado. Serão substituídos por case Interaflow real com cliente autorizado — ver também /discador e /whatsapp/campanhas.

How-to

5 passos pra ligar Salesforce e Interaflow

Tempo médio de setup com apoio do nosso time, do zero até o primeiro evento chegando no Salesforce: cerca de 1 dia útil. Enterprise com Softphone Layout customizado, Platform Events e workflows: 2–3 dias com o admin.

Roadmap de setup · tempo cumulativo estimado

  1. 15%
    1. Criar a Connected App no Salesforce
  2. 30%
    2. Autorizar o Interaflow
  3. 60%
    3. Mapear objetos e configurar o outbox
  4. 85%
    4. Instalar o Softphone no Lightning (Open CTI)
  5. 100%
    5. Rodar o teste de ida e volta
  1. Criar a Connected App no Salesforce

    No seu org Salesforce, em Setup → App Manager → New Connected App, cria uma Connected App com OAuth habilitado. Escopos: api, refresh_token, offline_access (e lightning + visualforce pra CTI). O Callback URL é fornecido pelo Interaflow no onboarding. Copia Consumer Key e Consumer Secret.

  2. Autorizar o Interaflow

    No painel do Interaflow, em Configurações → Integrações → Salesforce, cola Consumer Key/Secret, clica em Conectar. O Interaflow redireciona pro OAuth2 oficial do Salesforce, você aprova escopos com o usuário de serviço (recomendado) e volta pro Interaflow autenticado. Named Credentials também é suportado se você prefere armazenar credencial no Salesforce.

  3. Mapear objetos e configurar o outbox

    Escolha quais objetos o Interaflow vai tocar (Lead e Contact sempre; Account, Opportunity, Case opcionais). Pra Call, decide: Task padrão (recomendado) ou custom object Interaflow_Call__c. Mapeia campos (Phone, MobilePhone, Email, disposition custom etc.). Custom fields aparecem automaticamente — o Interaflow lê o schema via Describe API.

  4. Instalar o Softphone no Lightning (Open CTI)

    Admin Salesforce instala o Interaflow Softphone Layout (pacote enviado pelo nosso time — AppExchange em rollout) em Setup → Call Center → Softphone Layouts. Ancora o Lightning Component interaflowSoftphone no Utility Bar do App Lightning principal (Setup → App Manager → Edit → Utility Items → Add → Interaflow). Atribui licença de Call Center aos usuários que vão usar o softphone.

  5. Rodar o teste de ida e volta

    O painel do Interaflow traz um test run que cria uma Task sintética no Salesforce (associada a um Contact de teste), verifica se chegou com o idempotency key correto e qual response code. Se 201 Created, liga o switch Enviar eventos reais. Monitora as primeiras 24h no dashboard — DLQ deve ficar zerada, contagem de enviados deve bater com o volume real.

    Exemplo · test run criando Task no sandbox
    $ interaflow-cli salesforce test-run --contact test@example.com
    → POST /services/data/v59.0/sobjects/Task/
    ← 201 Created (idempotency-key: tn_x9k-test-f3b7a1)
    ✓ Task 00T...  created in 420ms

Comparação

Interaflow nativo vs. Zapier/middleware vs. custom code vs. Service Cloud Voice

Quem compra CTI Salesforce hoje avalia quatro caminhos — e um deles é da própria Salesforce. A gente compara os quatro sem maquiar.

  • Infra de voz embaixo

    Zapier / Make / middleware
    Nenhuma — só dados
    Integração custom (código)
    Você pluga a sua
    Service Cloud Voice
    Amazon Connect (obrigatório)
    Interaflow nativo
    Asterisk + SIP próprio Interaflow
  • Autenticação

    Zapier / Make / middleware
    OAuth2 do middleware
    Integração custom (código)
    Você implementa
    Service Cloud Voice
    Salesforce + AWS
    Interaflow nativo
    OAuth2 direto Connected App
  • CTI no Lightning

    Zapier / Make / middleware
    Não existe
    Integração custom (código)
    Você constrói com Open CTI
    Service Cloud Voice
    Nativo (via SCV)
    Interaflow nativo
    Widget Open CTI (beta)
  • Latência típica

    Zapier / Make / middleware
    15s–2min (fila do middleware)
    Integração custom (código)
    Depende
    Service Cloud Voice
    < 1s
    Interaflow nativo
    < 1s
  • Retry / DLQ

    Zapier / Make / middleware
    Parcial
    Integração custom (código)
    Você implementa
    Service Cloud Voice
    Nativo
    Interaflow nativo
    Nativo, 6 retries + DLQ
  • Governor limits Salesforce

    Zapier / Make / middleware
    Não respeita
    Integração custom (código)
    Você gerencia
    Service Cloud Voice
    Salesforce-side
    Interaflow nativo
    Gerenciado pelo outbox
  • Discador preditivo nativo

    Zapier / Make / middleware
    Não
    Integração custom (código)
    Você integra
    Service Cloud Voice
    Limitado (progressive)
    Interaflow nativo
    Sim — Asterisk + AMD
  • WhatsApp Business integrado

    Zapier / Make / middleware
    Via plugin terceiro
    Integração custom (código)
    Você integra
    Service Cloud Voice
    Não oficial
    Interaflow nativo
    Nativo
  • Speech Analytics + Monitoria IA

    Zapier / Make / middleware
    Não
    Integração custom (código)
    Você integra
    Service Cloud Voice
    Básico (real-time analytics)
    Interaflow nativo
    Nativo (add-on)
  • Volume suportado

    Zapier / Make / middleware
    Centenas de eventos/dia
    Integração custom (código)
    Depende
    Service Cloud Voice
    Ilimitado (paga Connect)
    Interaflow nativo
    Milhares de eventos/minuto
  • Custo por seat/mês

    Zapier / Make / middleware
    US$ 20–200 + tarifa de op
    Integração custom (código)
    Dev time contínuo
    Service Cloud Voice
    ~US$ 150/seat + Connect usage
    Interaflow nativo
    Incluso no plano Plus+
  • Tempo de go-live

    Zapier / Make / middleware
    1 dia + N semanas (edge cases)
    Integração custom (código)
    4–12 semanas
    Service Cloud Voice
    2–6 semanas (SCV onboarding)
    Interaflow nativo
    ~1 dia útil

Comparação contra arquiteturas de integração típicas e contra Service Cloud Voice (produto Salesforce/AWS). Valores de latência, volume e custo são típicos; custo de SCV inclui estimativa de uso Amazon Connect — varia conforme volume. Pra quem quer mais controle via código cru, veja /api.

FAQ

Perguntas frequentes — Interaflow + Salesforce

Connected App OAuth2 · Outbox com DLQ · Rollback 1-click

Salesforce, mas com a conversa inteira rodando dentro dele.

Liga em 1 dia útil com apoio do nosso time. Roda em teste no seu sandbox com um Contact de exemplo antes de subir em produção. Se o test run não entregar 201 Created na Task do seu sandbox, a gente te ajuda a destravar — ou sai.

  • Connected App OAuth2 · security review-friendly
  • Setup em 1 dia útil · com apoio do time
  • Rollback 1-click · revoga OAuth sem resíduo

Demo de verdade é assim: você traz um sandbox seu, a gente instala o widget no Utility Bar do Lightning, liga pra um Contact de teste, você vê o screenPop, a Task criada e a transcrição aparecendo. Não tem slide.