Pular para conteúdo

Referência Técnica — Integração Pipedrive → Omie

Atualizado: 2026-07-08 · por: sessão manual · validação prod + fuso horário · rev: 3 IDs, URLs, credenciais, custom fields, paths no blueprint, snippets de payload. Usar como cheat sheet ao mexer no cenário.

⚠️ PEGADINHA DE FUSO — ler antes de correlacionar horários. A UI do Make (org 115055) exibe os horários em UTC-2, que fica 1h à frente do horário real do Brasil/Bepex (UTC-3). O WhatsApp/Chatwoot e o relógio da Daiane mostram UTC-3. Então, ao cruzar um log do Make com um horário que o cliente/Daiane reportou: horário real (BRT) = horário da UI do Make − 1h. Ex.: run que a UI mostra "18:27" aconteceu às 17:27 BRT. (Vale pra todos os cenários do org 115055 — candidato a virar nota na skill make-bepex.)


Cenário no Make

Campo Valor
Nome Pipedrive to Omie (Instant)
ID 2912018
Org Bepex (115055)
Organization ID interno 290560
Pasta Pipedrive
Status Active
URL editor https://us1.make.com/115055/scenarios/2912018/edit
URL histórico https://us1.make.com/115055/scenarios/2912018/logs
Versão deprecada Pipedrive to Omie (Deprecated) (pasta DEPRECADOS, desativada desde 2023-12-01)

Webhook trigger

Campo Valor
URL pública https://hook.us1.make.com/${WEBHOOK_MAKE_PIPEDRIVE_OMIE}
hookId interno 1652440
Module ID [77] (gateway:CustomWebHook)
Payload mínimo { "deal id": ..., "id do orcamento": ... }

Clone de teste (parado, mantido pra referência/futuros testes)

Campo Valor
Nome Pipedrive to Omie (Instant) - CLONE for CPF testing 2026-04-29
ID 4706443
Webhook próprio https://hook.us1.make.com/${WEBHOOK_MAKE_PIPEDRIVE_OMIE_CLONE}
Status Inactive

Tenants Omie (multi-tenant)

Tenant Filter (empresa.nome contém) app_key conta corrente SetVar module
DALE Metais DALE (CI) ${OMIE_APP_KEY_DALE} 4605038485 [49]
ONIX ONIX (CI) ${OMIE_APP_KEY_ONIX} 2286054792 [50]
ATARES atares (CI) ${OMIE_APP_KEY_ATARES} 10755908313 [86]

App secrets também hardcoded no blueprint dentro do mapper de cada SetVar. Não documentar aqui em texto plano — abrir o módulo via Make UI ou via blueprint API se precisar.


Credenciais e auth

FlowTech (bepex.flowtech.net.br)

Campo Valor
Endpoint marca-concluído POST /integracao/orcamento/{id}/marcar-concluido
Header auth Authorization: Token ${FLOWTECH_API_TOKEN}
Usado em [9]

DateCode (api.datecode.com.br)

Campo Valor
Endpoint POST /v2/dados/consulta
Header auth Authorization: Basic ${FLOWTECH_BASIC_AUTH} (decode → enrico@bepex.com.br:${FLOWTECH_SENHA})
Tipos aceitos "PJ" e "PF" (confirmado em produção 04/05/2026)
Body { "document": "...", "tipoPessoa": "PJ\|PF" }
Usado em [33]

Pipedrive

Campo Valor
Connection ID no Make 504644
Domain bepex.pipedrive.com
Usado em [73], [78]

Omie (apps por tenant, ver acima)

Campo Valor
Base URL https://app.omie.com.br/api/v1/
Endpoints usados geral/clientes/, produtos/pedidovenda/, geral/produtos/, geral/malha/, geral/vendedores/
Auth app_key + app_secret no body do request (não header)

Custom fields críticos

Pipedrive Deal

Hash Significado Valor setado pelo cenário
934241be2703a7ccdaf77bc01a04a7224ec935ad "Status integração Omie" (provável) 261 (= "Enviado pra Omie")

Pipedrive Organization

Hash Significado
04383a86d143afb3acccb175c8b6f3e7333998cc Razão Social (PJ)
address_route (padrão) Rua
address_street_number (padrão) Número
address_sublocality (padrão) Bairro
address_admin_area_level_2 (padrão) Cidade
address_admin_area_level_1 (padrão) Estado/UF
address_postal_code (padrão) CEP
address_formatted_address (padrão) Endereço completo formatado

Importante: os address_* subcampos só ficam preenchidos se o vendedor usou o autocomplete Google ao digitar o endereço. Se digitou texto puro, o address fica como string e os subcampos vazios — quebra a integração silenciosamente.


Paths no blueprint (validados)

[77] webhook            bp.flow[0]
[9]  FlowTech           bp.flow[1]
[73] UpdateDeal         bp.flow[2]
[78] GetOrganization    bp.flow[3]
[45] Router principal   bp.flow[4]
  [49] SetVar DALE      bp.flow[4].routes[0].flow[0]
  [50] SetVar ONIX      bp.flow[4].routes[1].flow[0]
  [86] SetVar ATARES    bp.flow[4].routes[2].flow[0]
  [53] sub-router       bp.flow[4].routes[3].flow[0]
    [51] GetVariables   bp.flow[4].routes[3].flow[0].routes[0].flow[0]
    [54] cnpj ajustado  bp.flow[4].routes[3].flow[0].routes[0].flow[1]
    [43] ListarVendedores bp.flow[4].routes[3].flow[0].routes[0].flow[2]
    [52] sub-router     bp.flow[4].routes[3].flow[0].routes[0].flow[3]
      # route[0].flow = [33, 92, 93, 91]  (atualizado 2026-07-07 — inseridos 92/93 antes do guard 91)
      [33] DateCode        [52].routes[0].flow[0]
      [92] SetVar uf_guard [52].routes[0].flow[1]   ← inserido 2026-07-07
      [93] GetVar uf_guard [52].routes[0].flow[2]   ← inserido 2026-07-07
      [91] Router Guard UF [52].routes[0].flow[3]
        [90] Alerta UF Vazia    [91].routes[0].flow[0]   filtro {{length(93.uf_guard)}} = 0
        [31] IncluirCliente     [91].routes[1].flow[0]   filtro {{length(93.uf_guard)}} > 0
        [38] Router pós-cliente [91].routes[1].flow[1]
          [36] SetVar cnpj_adicionado [38].routes[0].flow[0]  (31.statusCode == 200)
          [39] SetVar cnpj_existente  [38].routes[1].flow[0]  (500 + "já cadastrado")
      # route[1].flow = [56]
      [56] sub-router   [52].routes[1].flow[0]
        [55] GetVariables [56].routes[0].flow[0]
        [57] AdicionarPedido [56].routes[0].flow[1]
        [11] Iterar Produtos Finais [56].routes[0].flow[2]
        [12] IncluirProduto [56].routes[0].flow[3]
        [25] Router pós-produto [56].routes[0].flow[4]
        [59] sub-router [56].routes[0].flow[5]
          [60] GetVariables
          [69] ConsultarProduto
          [61] IncluirItemPedido

Guard UF (router 91) — filtros e variável (fix 2026-07-07)

Item Valor
[92] SetVariable nome uf_guard, scope roundtrip, value = {{ifempty(33.data[].enderecos[].uf; switch(78.address_admin_area_level_1; ...27 estados...; 78.address_admin_area_level_1))}} (mesma expressão do campo estado do [31])
[93] GetVariables uf_guard (surface pro filtro)
Filtro rota alerta ([90]) {{length(93.uf_guard)}}number:equal 0
Filtro rota adiciona-cliente ([31]) {{length(93.uf_guard)}}number:greater 0

⚠️ Nunca usar {{93.uf_guard}} cru no filtro (retorna null) nem 33.data[].enderecos[].uf cru (vira array). Sempre length(93.uf_guard).


Snippets de payload (referência rápida)

IncluirCliente ([31]) — body atual

{
  "call": "IncluirCliente",
  "app_key": "{{51.app_key}}",
  "app_secret": "{{51.app_secret}}",
  "param": [{
    "codigo_cliente_integracao": "{{54.cnpj ajustado}}",
    "email": "{{ifempty(9.data.cliente.email; 33.data[].emails[].email)}}",
    "razao_social": "{{substring(ifempty(ifempty(78.`04383a86d143afb3acccb175c8b6f3e7333998cc`; 33.data[].empresa.razaoSocial); 9.data.cliente.nome); 0; 60)}}",
    "cnpj_cpf": "{{ifempty(9.data.cliente.cnpj; 9.data.cliente.cpf)}}",
    "telefone1_ddd": "{{33.data[].telefones[].ddd}}",
    "telefone1_numero": "{{33.data[].telefones[].telefone}}",
    "contato": "{{73.person_id.name}}",
    "endereco": "{{ifempty(78.address_route; 33.data[].enderecos[].logradouro)}}",
    "endereco_numero": "{{ifempty(ifempty(78.address_street_number; 33.data[].enderecos[].numero); \"SN\")}}",
    "bairro": "{{ifempty(78.address_sublocality; 33.data[].enderecos[].bairro)}}",
    "complemento": "{{substring(33.data[].enderecos[].complemento; 0; 60)}}",
    "estado": "{{ifempty(33.data[].enderecos[].uf; switch(78.address_admin_area_level_1; \"Acre\"; \"AC\"; \"Alagoas\"; \"AL\"; \"Amapá\"; \"AP\"; \"Amazonas\"; \"AM\"; \"Bahia\"; \"BA\"; \"Ceará\"; \"CE\"; \"Distrito Federal\"; \"DF\"; \"Espírito Santo\"; \"ES\"; \"Goiás\"; \"GO\"; \"Maranhão\"; \"MA\"; \"Mato Grosso\"; \"MT\"; \"Mato Grosso do Sul\"; \"MS\"; \"Minas Gerais\"; \"MG\"; \"Pará\"; \"PA\"; \"Paraíba\"; \"PB\"; \"Paraná\"; \"PR\"; \"Pernambuco\"; \"PE\"; \"Piauí\"; \"PI\"; \"Rio de Janeiro\"; \"RJ\"; \"Rio Grande do Norte\"; \"RN\"; \"Rio Grande do Sul\"; \"RS\"; \"Rondônia\"; \"RO\"; \"Roraima\"; \"RR\"; \"Santa Catarina\"; \"SC\"; \"São Paulo\"; \"SP\"; \"Sergipe\"; \"SE\"; \"Tocantins\"; \"TO\"; 78.address_admin_area_level_1))}}",
    "cidade": "{{ifempty(78.address_admin_area_level_2; 33.data[].enderecos[].cidade)}}",
    "cep": "{{if(length(78.address_postal_code) < 8; 33.data[].enderecos[].cepFormatado; 78.address_postal_code)}}",
    "nome_fantasia": "{{substring(ifempty(ifempty(78.`04383a86d143afb3acccb175c8b6f3e7333998cc`; 33.data[].empresa.razaoSocial); 9.data.cliente.nome); 0; 60)}}",
    "contribuinte": "{{if(9.data.cliente.cnpj; \"S\"; \"N\")}}",
    "bloquear_faturamento": "N",
    "recomendacoes": [{
      "codigo_vendedor": "{{43.data.cadastro[].codigo}}"
    }]
  }]
}

DateCode ([33]) — body atual

{
  "document": "{{54.cnpj ajustado}}",
  "tipoPessoa": "{{if(9.data.cliente.cnpj; \"PJ\"; \"PF\")}}"
}

AdicionarPedido ([57]) — body

{
  "call": "AdicionarPedido",
  "app_key": "{{51.app_key}}",
  "app_secret": "{{51.app_secret}}",
  "param": [{
    "codigo_pedido_integracao": "{{timestamp}}",
    "codigo_cliente": "{{55.código cliente omie}}",
    "codigo_cenario_impostos": 4607146685,
    "codigo_parcela": "{{9.data.orcamento.codigo_pagamento_omie}}",
    "codigo_categoria": "1.01.01",
    "codigo_conta_corrente": "{{51.conta corrente}}"
  }]
}

IncluirItemPedido ([61]) — body

{
  "call": "IncluirItemPedido",
  "app_key": "{{51.app_key}}",
  "app_secret": "{{51.app_secret}}",
  "param": [{
    "codigo_pedido": "{{57.data.codigo_pedido}}",
    "codigo_produto": "{{69.data.codigo_produto}}",
    "quantidade": "{{11.qtd}}",
    "valor_unitario": "{{11.preco_unitario_custo}}",
    "cfop": "5.102"
  }]
}

Dados de teste (validados em produção)

Caso PF — Wellington Martins Gonçalves

Campo Valor
Pipedrive deal id 74183
FlowTech orçamento id 30666
CPF 087.348.207-79 (08734820779 sem máscara)
Pipedrive Person id 36090
Pipedrive Org id 24970 (Org-falsa-pra-PF com nome=nome da pessoa)
Tenant Omie ATARES
Pedido criado (validação 04/05 18:20 BRT — clone) numero 0000000000000459, codigo_pedido 11050337175
Pedido criado (validação 04/05 21:03 BRT — produção) numero 0000000000000460, codigo_pedido 11050367661

Caso PJ — 3D ESQUADRIAS COMERCIO E SERVICOS LTDA

Campo Valor
Pipedrive deal id 74193
FlowTech orçamento id 30800
CNPJ 22.734.767/0001-87
Tenant Omie (depende da empresa.nome)
Execução referência 3f1279d2bd8047c8b35e14531b07f08b (29/abr 09:31:15)

Comandos úteis (API Make)

GET blueprint

$.ajax({
  url: '/api/v2/scenarios/2912018/blueprint',
  method: 'GET',
  success: (data) => { window.__bp = data.response.blueprint; }
});

PATCH blueprint

$.ajax({
  url: '/api/v2/scenarios/2912018',
  method: 'PATCH',
  contentType: 'application/json; charset=utf-8',
  data: JSON.stringify({ blueprint: JSON.stringify(bp) })
});

Listar últimas execuções

$.ajax({
  url: '/api/v2/scenarios/2912018/logs?pg[limit]=10',
  method: 'GET',
  success: (data) => console.log(data.scenarioLogs)
});

Trigger webhook simulado (não funciona de dentro do Make.com por CSP — usar outra origem como https://www.google.com)

fetch('https://hook.us1.make.com/${WEBHOOK_MAKE_PIPEDRIVE_OMIE}', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ "deal id": 74183, "id do orcamento": 30666 })
});

Replay run (UI)

Abrir execução em https://us1.make.com/115055/scenarios/2912018/logs/{runId} → botão Replay run no topo direito. Atenção: replay re-executa todos os módulos, incluindo [9] que chama /marcar-concluido no FlowTech (idempotente) e os módulos Omie (vão criar pedido duplicado).


Backups do blueprint

Arquivo Estado que preserva
<Downloads local>/blueprint_2912018_backup_2026-04-29.json (139 KB) Pré-Fase-1 (antes do suporte a PF).
<Downloads local>/blueprint_2912018_backup_2026-07-07_preGuardFix.json (~142 KB) Antes do fix do guard 07/07 (guard 91 com expressão de array crua nos filtros — ainda quebrado em multi-endereço).

Pra restaurar, ver snippet abaixo (rollback de emergência).

Backup pré-Fase-1 (detalhe)

Salvo em <Downloads local>/blueprint_2912018_backup_2026-04-29.json (139 KB, JSON).

Pra restaurar (rollback de emergência):

// Cole o conteúdo do arquivo na variável bp e:
$.ajax({
  url: '/api/v2/scenarios/2912018',
  method: 'PATCH',
  contentType: 'application/json; charset=utf-8',
  data: JSON.stringify({ blueprint: JSON.stringify(bp) })
});

Isso reverte pra antes do suporte a PF (mas mantém todos os bugs/limitações pré-existentes).