Orçamentos e grupos de promoções
Como limitar o gasto com descontos por promoção, grupo, categoria, marca, seller ou loja inteira.
Descontos custam dinheiro. Um orçamento de promoções é um teto: "no máximo R$ 5.000 de desconto neste mês" ou "no máximo 200 usos desta promoção". Quando o consumo chega ao teto, as promoções cobertas param de aplicar; elas não são desativadas e voltam a aplicar sozinhas se um estorno liberar saldo ou a janela virar. Um grupo de promoções é só um rótulo que reúne várias promoções (por exemplo "Campanha de verão") para que um orçamento possa limitá-las em conjunto.
Como funciona
Do carrinho ao pedido
- Quando uma promoção entra num carrinho, o valor do desconto é reservado nos orçamentos aplicáveis, por 24 horas. Se o carrinho morrer, a reserva expira sozinha e o saldo volta.
- Quando o pedido passa a pago, a reserva vira liquidada e passa a contar definitivamente. Um pedido que fica 24 horas sem pagar perde a reserva (ela expira e o saldo volta).
- Se o pedido é cancelado ou reembolsado, o valor é liberado.
Escopos (scope)
scope | scope_ref | Limita |
|---|---|---|
promotion | id da promoção | Aquela promoção |
group | id do grupo de promoções | As promoções ligadas ao grupo |
category | id da categoria | Descontos em itens daquela categoria no carrinho |
brand | id da marca | Descontos em itens daquela marca |
seller | id do seller | Descontos em itens daquele seller (e promoções dele) |
marketplace | não se aplica | Todos os descontos da loja |
Dimensão e janela
discount_amountmede centavos de desconto concedido e usalimit_cents.redemptionsmede número de usos e usalimit_count.- A janela define quando o contador zera:
lifetimenunca zera;daily,weekly(semana ISO) emonthlyzeram na virada do dia, da semana ou do mês no fuso de São Paulo. - Sem
limit_cents/limit_counto orçamento é ilimitado: serve só para medir (unlimited: true).
Conceitos importantes
Alerta
alert_threshold_pct não bloqueia nada: ele só liga alert_reached quando o consumo passa daquele percentual do teto, para a loja ser avisada antes de esgotar.
Orçamento de seller
Um orçamento com vendor_id pertence a um seller; um sem vendor_id é da loja. O filtro ?vendor_id= da lista aceita valor vazio para pedir só os da loja.
Quem paga
funding_source (seller, operator, manufacturer, shared) e funding_split registram quem arca com o desconto, para a conciliação. Eles não mudam o bloqueio.
Endpoints
| Método e caminho | Para que serve | Auth | Página |
|---|---|---|---|
GET /api/v1/admin/promotion-budgets | Lista orçamentos com consumo | admin | Consultar orçamentos |
GET /api/v1/admin/promotion-budgets/{id} | Detalha um orçamento | admin | Consultar orçamentos |
POST /api/v1/admin/promotion-budgets | Cria um orçamento | admin | Criar, alterar e excluir orçamento |
PUT /api/v1/admin/promotion-budgets/{id} | Altera um orçamento | admin | Criar, alterar e excluir orçamento |
DELETE /api/v1/admin/promotion-budgets/{id} | Exclui um orçamento | admin | Criar, alterar e excluir orçamento |
GET /api/v1/admin/promotion-groups | Lista grupos de promoções | admin | Consultar grupos |
GET /api/v1/admin/promotion-groups/{id} | Detalha um grupo | admin | Consultar grupos |
GET /api/v1/admin/promotion-groups/{id}/usage | Conta orçamentos que usam o grupo | admin | Consultar grupos |
POST /api/v1/admin/promotion-groups | Cria um grupo | admin | Criar, alterar e excluir grupo |
PUT /api/v1/admin/promotion-groups/{id} | Renomeia um grupo | admin | Criar, alterar e excluir grupo |
DELETE /api/v1/admin/promotion-groups/{id} | Exclui um grupo | admin | Criar, alterar e excluir grupo |
Erros comuns
- Esperar que o orçamento desative a promoção. Ele só faz a promoção parar de aplicar enquanto está esgotado.
- Esquecer o
scope_ref. Qualquer escopo que não sejamarketplaceexige o id do alvo, em UUID. Um valor que não é UUID é recusado com400, porque nunca casaria com nada. - Trocar
redemptionsporlimit_cents. Comdimensionredemptionso teto élimit_count; mandar sólimit_centsleva400. - Tentar mudar escopo, alvo, dimensão ou dono depois de criado. Esses campos são imutáveis: o
PUTresponde400 immutable_field. Crie outro orçamento. - Valores fora das listas.
window,on_low_balance,funding_sourceescopeinválidos são barrados pelo banco e chegam como500, não400. Use só os valores documentados. - Apagar um grupo em uso. A exclusão do grupo não é bloqueada: os orçamentos que apontavam para ele ficam órfãos e deixam de limitar qualquer coisa. Consulte
/usageantes.