Como funciona
Conectando
1. Autorizar OAuth 2.0
O Bling usa OAuth 2.0 (API v3). O fluxo é:- Acesse Integrações > Bling
- Clique em Conectar Bling
- Você será redirecionado para o Bling (
https://www.bling.com.br/Api/v3/oauth/authorize) — faça login e autorize - O Bling retorna para o BulkRoute no endpoint
/integrations/bling/callbackcom o código de autorização - O BulkRoute troca o código por
access_tokenerefresh_tokene armazena na integração
O
refresh_token é usado automaticamente quando o access_token expira. Você não precisa reconectar manualmente enquanto o refresh token for válido.2. Mapear carriers
O Bling identifica transportadoras portransporte.transportadora.id (ID numérico). O BulkRoute usa códigos (ex: BRASPRESS, CORREIOS). Você precisa mapear via Integrações > Bling > Mapeamentos:
Se não houver mapeamento, o BulkRoute faz fallback por nome: se o nome da transportadora contiver “CORREIOS”, “JADLOG” ou “BRASPRESS”, usa o carrier correspondente; caso contrário, usa
BLING.
3. Disparar sincronização
A sincronização é manual — não há cron automático. Para importar pedidos:- Em Integrações > Bling, clique em Sincronizar Agora
- Escolha o tipo de sync:
- orders — importa pedidos pagos do Bling
- tracking — envia tracking codes de volta ao Bling
- full — executa ambos
- O job entra na fila BullMQ e processa em background (concurrency 2)
- Acompanhe o progresso em Sync History
O que é importado
Para cada pedido no Bling, o BulkRoute cria um shipment com:
Metadados adicionais salvos:
blingOrderId, blingCarrierName, blingCarrierId, syncedAt.
O status inicial do shipment é sempre PENDING e is_own_fleet: false.
Sincronização de tracking
Quando o BulkRoute gera um tracking code para um shipment originado do Bling:- O sync
trackingbusca shipments comtracking_codepreenchido emetadata.blingOrderId(limite 200 por execução) - Para cada um, chama
POST /pedidos/vendas/{orderId}/rastreiona API v3 do Bling - Corpo enviado:
- O Bling atualiza o pedido com o tracking code
Endpoints da API BulkRoute
Rate limit e retry
- O Bling API tem rate limit. Quando retorna
429 Too Many Requests, o BulkRoute respeita o headerRetry-After(default 2s) e tenta novamente (até 3 vezes) - A fila BullMQ tem 3 tentativas com backoff exponencial de 10s
- Concorrência do worker: 2 jobs em paralelo