Skip to content

Guia para webhooks ​

Sobre os webhooks ​

Webhooks permitem a você programar notificações da Leads2b sobre eventos realizados em seus dados quando eles acontecem.

Quando um desses eventos é acionado (por exemplo um novo cliente é criado), a Leads2b vai enviar essa notificação como uma requisição HTTP POST, com um corpo/payload JSON para o endereço que você especificou.

Você pode criar um novo webhook no sistema Leads2b através do Menu Configurações > Apps e Conexões > Webhooks.

WARNING

Essa funcionalidade está disponível para alguns planos. Verifique seu plano atual e garanta que isso esteja disponível para você!

Eventos na Leads2b ​

Com um evento, você pode filtrar quais tipos de notificações você quer receber.

ParâmetroDescrição
Ação do eventoA ação realizada em uma entidade/objeto.
Objeto do eventoA entidade/objeto que a ação foi realizada.

TIP

Eventos na Leads2b são disparados tanto pela utilização do sistema web quanto por chamadas externas da API.

Endereço externo à Leads2b ​

ParâmetroDescrição
Endereço URLUm endereço HTTP onde seus eventos selecionados são enviados. Nós podemos enviá-los somente à uma URL completa, válida e publicamente acessível.

Formato do webhook ​

json
{
  "meta": {
    "id": xxx,
    "company_id": xxxxx,
    "object": "customer",
    "action": "created",
    "user_id": xxx,
    "date": "YYYY-MM-DD HH:mm:ss"
  },
  "data": (os dados do objeto a partir desta atualização)
}

TIP

O schema de dados atual dos Webhooks Leads2b é o v1. Portando, ao configurar seu webhook, a configuração registrado é algo como v1.customer.created, v1.order.updated, etc.

Bloco meta do webhook ​

ParâmetroExemplos e explicações
"id"ID do objeto
"company_id"ID da empresa da qual o webhook foi acionado
"object"Veja tipos de objetos suportados
"action"Veja ações de evento suportadas
"user_id"ID do usuário
"date"Data de criação do evento

Bloco data do webhook ​

Os dados do objeto/entidade enviados na atualização.

Dados de Cliente ​

json
{
  "fk_id": "(string)",
  "name": "(string)",
  "fantasy_name": "(string)",
  "email": "(string)",
  "ddd": "(string)",
  "cel_phone": "(string)",
  "credit_limit": (float),
  "comercial_phone": "(string)",
  "cnpj": "(string)",
  "cpf": "(string)",
  "observations": "(string)",
  "ie": "(string)",
  "restriction": "(string)",
  "tags": ["(string)"],
  "responsibles": [
    {
      "id_user": (int),
      "user_fk_id": "(string)"
    }
    ...
  ],
  "contacts": [
    {
      "name": "(string)",
      "email": "(string)",
      "phone": "(string)",
      "department_name": "(string)",
      "fk_id": "(string)"
    }
    ...
  ],
  "addresses": [
    {
      "type": "(string)",
      "name": "(string)",
      "address": "(string)",
      "address_number": "(string)",
      "address_type": "(string)",
      "neighborhood": "(string)",
      "address_complement": "(string)",
      "city": "(string)",
      "uf": "(string)",
      "zipcode": "(string)",
      "fk_id": "(string)"
    }
    ...
  ]
}

Dados de Item (produtos) ​

json
{
  "fk_id": "(string)",
  "name": "(string)",
  "description": "(string)",
  "quantity": (int),
  "unit_price": (int),
  "unit": "(string)",
  "type": "(string)"
}

Dados de Pedido ​

json
{
  "fk_id": "(string)",
  "customer_id": (int),
  "customer_name": "(string)",
  "contact_name": "(string)",
  "customer_fk_id": "(string)",
  "customer_id_order": "(string)",
  "fk_id_freight": "(string)",
  "fk_id_redispatch_freight": "(string)",
  "freight_value": "(string)",
  "fk_id_shipping": "(string)",
  "fk_id_redispatch_company": "(string)",
  "fk_id_billing_location": "(string)",
  "fk_id_payment_term": "(string)",
  "fk_id_payment_type": "(string)",
  "date": "(string)",
  "due_date": "(string)",
  "nf": "(string)",
  "num_itens": (int),
  "discount": (float),
  "approved": (int),
  "status": "(string)",
  "total_price": (float),
  "user_id": (int),
  "user_fk_id": "(string)",
  "user_email": "(string)",
  "observations": "(string)",
  "further_information": "(string)",
  "quotation_approval_message": "(string)",
  "estimated_delivery_date": "(string)",
  "estimated_billing_date": "(string)",
  "id_order_category": (int),
  "fk_id_order_category": "(string)",
  "id_contract": "(string)",
  "customer_type": (int),
  "customer_city": "(string)",
  "items": [
    {
      "id": (int),
      "fk_id": "(string)",
      "name": "(string)",
      "description": "(string)",
      "type": "(string)",
      "quantity": (float),
      "item_fk_id": "(string)",
      "line_num": "(string)",
      "due_date": "(string)",
      "price": (float),
      "original_price": (float),
      "perc_desc": (float),
      "vlr_desc": (float),
      "icms": (float),
      "base_icms": (float),
      "value_icms": (float),
      "icms_st": (float),
      "base_icms_st": (float),
      "value_icms_st": (float),
      "ipi": (float),
      "base_ipi": (float),
      "value_ipi": (float)
    }
  ],
  "address": {
    "address": "(string)",
    "address_number": "(string)",
    "neighborhood": "(string)",
    "address_complement": "(string)",
    "city": "(string)",
    "uf": "(string)",
    "zipcode": "(string)",
    "fk_id": "(string)"
  }
}

Dados de Orçamento ​

json
{
  "fk_id": "(string)",
  "date": "(string)",
  "customer_id": (int),
  "customer_name": "(string)",
  "contact_name": "(string)",
  "customer_fk_id": "(string)",
  "fk_id_payment_term": "(string)",
  "fk_id_payment_type": "(string)",
  "id_opportunity": (int),
  "client_status": (int),
  "approved": (int),
  "user_id": (int),
  "user_email": "(string)",
  "observations": "(string)",
  "scope": "(string)",
  "estimated_billing_date": "(string)",
  "customer_id_order": "(string)",
  "id_contract": "(string)",
  "customer_tags": ["(string)"],
  "customer_type": (int),
  "customer_city": "(string)",
  "deleted_at": "(string)",
  "items": [
    {
      "id": (int),
      "id_item": (int),
      "fk_id": "(string)",
      "name": "(string)",
      "description": "(string)",
      "type": "(string)",
      "quantity": (float),
      "price": (float),
      "original_price": (float),
      "cost": (float),
      "icms": (float),
      "base_icms": (float),
      "value_icms": (float),
      "icms_st": (float),
      "base_icms_st": (float),
      "value_icms_st": (float),
      "ipi": (float),
      "base_ipi": (float),
      "value_ipi": (float),
      "recurrency_period": (int),
      "financial_cost": (float),
      "shipping_cost": (float)
    }
  ],
  "address": {
      "address": "(string)",
      "address_number": "(string)",
      "neighborhood": "(string)",
      "address_complement": "(string)",
      "city": "(string)",
      "uf": "(string)",
      "zipcode": "(string)",
      "fk_id": "(string)"
  }
}

Dados de Lead ​

json
{
  "company_name": "(string)",
  "social_reason": "(string)",
  "email": "(string)",
  "addresses": [
    {
      "address": "(string)",
      "city": "(string)",
      "state": "(string)",
      "zipcode": "(string)"
    }
  ],
  "phone": "(string)",
  "main_email": "(string)",
  "main_phone": "(string)",
  "main_contact": "(string)",
  "vendor": "(string)",
  "group": "(string)",
  "id_pipeline": (int),
  "pipeline_name": "(string)",
  "id_pipeline_item": (int),
  "pipeline_item_name": "(string)",
  "origin_name": "(string)",
  "status": "(string)",
  "loss_reason": "(string)",
  "lost_at": "(string)",
  "won_at": "(string)",
  "created_at": "(string)",
  "updated_at": "(string)",
  "deleted_at": "(string)"
}

Dados de Oportunidade e Pós-venda ​

json
{
  "name": "(string)",
  "description": "(string)",
  "company_name": "(string)",
  "social_reason": "(string)",
  "id_customer": (int),
  "customer_name": "(string)",
  "customer_phone": "(string)",
  "customer_email": "(string)",
  "id_contact": (int),
  "contact_name": "(string)",
  "id_responsible": (int),
  "responsible": "(string)",
  "id_pipeline": (int),
  "pipeline_name": "(string)",
  "id_pipeline_item": (int),
  "pipeline_item_name": "(string)",
  "id_origin": (int),
  "origin_name": "(string)",
  "items": [
    {
      "id": (int),
      "name": "(string)",
      "description": "(string)",
      "unit": "(string)",
      "fk_id": "(string)",
      "amount": (int),
      "unit_price": (float),
      "price": (float)
    }
  ],
  "loss_reason": "(string)",
  "lost_at": "(string)",
  "won_at": "(string)",
  "created_at": "(string)",
  "updated_at": "(string)",
  "deleted_at": "(string)"
}

Ações de evento suportadas ​

  • Created
  • Updated
  • Deleted
  • Won (disponível apenas para leads, oportunidades e pós-vendas)
  • Lost (disponível apenas para leads, oportunidades e pós-vendas)

Tipos de objetos suportados ​

  • Customer
  • Item
  • Order
  • Quotation
  • Lead
  • Opportunity
  • After_Sale

TIP

Acesse lista de webhooks para ver todas as combinações de objetos e ações para criação de webhooks.

Exemplos e explicações ​

É possível configurar notificações para eventos como customer.created, order.updated, item.deleted. Por exemplo, se você deseja receber webhook para notificá-lo quando um cliente for alterado, escolha customer como o objeto do evento e updated como a ação do evento.

Você pode ver todos os webhooks que podem ser criados na Leads2b aqui

Lógica de Retentativa ​

Política de retentativa de webhooks é a seguinte:

  • No caso da tentativa original de notificação falhar (recebendo um código de resposta diferente de 2xx ou excedendo o tempo limite de 10 segundos), nós iremos tentar mais 5 vezes:

  • 1ª tentativa: instantânea (logo após falhar)

  • 2ª tentativa: depois de 6 segundos

  • 3ª tentativa: depois de 18 segundos

  • 4ª tentativa: depois de 54 segundos

  • 5ª tentativa: depois de 162 segundos ≃ 2.7 minutos

INFO

O tempo total para o pior cenário (5 retentativas) é de 4 minutos.

Se a tentativa de entrega falhar em todas essas tentativas, iremos considerar como uma entrega mal sucedida.