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âmetro | Descrição |
|---|---|
| Ação do evento | A ação realizada em uma entidade/objeto. |
| Objeto do evento | A 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âmetro | Descrição |
|---|---|
| Endereço URL | Um 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
{
"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âmetro | Exemplos 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
{
"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)
{
"fk_id": "(string)",
"name": "(string)",
"description": "(string)",
"quantity": (int),
"unit_price": (int),
"unit": "(string)",
"type": "(string)"
}Dados de Pedido
{
"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
{
"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
{
"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
{
"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
2xxou 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 segundos3ª tentativa: depois de 18 segundos4ª tentativa: depois de 54 segundos5ª 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.
