From tray-api
Handles Tray webhooks for real-time notifications on products, orders, customers, variants, prices, stocks, and store configurations. Covers all scopes, payload formats, retry logic, and best practices.
npx claudepluginhub tray-tecnologia/tray-api-ai-plugin --plugin tray-apiThis skill uses the workspace's default tool permissions.
> Execute estas verificações antes de gerar qualquer payload ou código:
Monitors deployed URLs for regressions after deploys, merges, or upgrades by checking HTTP status, console errors, network failures, performance (LCP/CLS/INP), content, and API health.
Share bugs, ideas, or general feedback.
Execute estas verificações antes de gerar qualquer payload ou código:
access_token não aparece como literal string no código gerado.when_not_to_use no frontmatter).node skills/webhooks/scripts/validate.mjs '<payload_json>'
para confirmar a estrutura do payload que vai gerar (ou processar). O
validador checa apenas estrutura (campos obrigatórios, tipos e campos
desconhecidos), nunca valores reais — então monte um payload sintético
com placeholders sempre que os valores vierem do listener, de variáveis
de ambiente ou de outras chamadas. Exemplo:
node skills/webhooks/scripts/validate.mjs '{"seller_id":"<id>","scope_id":"<id>","scope_name":"order","act":"insert"}'.
Corrija todos os erros antes de retornar o código ao usuário. Até 3
tentativas — se persistir, explique o problema ao usuário.Documentação oficial: https://developers.tray.com.br/#apis-de-sistema-de-notificacao-webhook
Os webhooks devem ser ativados via ticket de suporte da Tray, informando a URL do endpoint receptor do seu aplicativo.
| Escopo | Ações | Descrição |
|---|---|---|
product | insert, update, delete | Criação, atualização ou exclusão de produto |
product_price | update | Alteração de preço de produto |
product_stock | update | Alteração de estoque de produto |
variant | insert, update, delete | Criação, atualização ou exclusão de variação |
variant_price | update | Alteração de preço de variação |
variant_stock | update | Alteração de estoque de variação |
order | insert, update | Criação ou atualização de pedido |
customer | insert, update, delete | Criação, atualização ou exclusão de cliente |
store_config | update | Alteração de configuração da loja (inclui ativação de MultiCD) |
Ativação de escopos: por padrão, a Tray libera apenas o escopo
order. Para habilitar outros escopos, abra um chamado no suporte Tray informando a URL de notificação e os escopos desejados.
Sobre pagamentos: não existe escopo de webhook
payment. Notificações de pagamento chegam via escopoorder— o objeto de pedido retornado pela API contém o campopayments_notificationcom a URL e os dados de pagamento. Consulte o skilltray-pagamentospara detalhes.
O webhook envia um POST com Content-Type: application/x-www-form-urlencoded — sempre, incluindo os de MultiCD.
| Campo | Tipo | Descrição |
|---|---|---|
seller_id | integer | ID da loja que disparou o evento |
scope_id | integer | ID do recurso afetado (ex: ID do produto) |
scope_name | string | Nome do escopo (ex: product, order) |
act | string | Ação realizada: insert, update ou delete |
app_code | string | Código do aplicativo que recebe a notificação |
url_notification | string | URL de notificação cadastrada no aplicativo |
Exemplo de payload completo:
seller_id=391250&scope_id=4375797&scope_name=order&act=update&app_code=718&url_notification=https://suaurldenotificacao
Leitura em PHP:
$sellerID = $_POST["seller_id"];
$scopeName = $_POST["scope_name"];
$scopeID = $_POST["scope_id"];
$act = $_POST["act"];
switch ($scopeName . "_" . $act) {
case "product_insert":
case "product_update":
$productID = $scopeID;
break;
case "order_insert":
case "order_update":
$orderID = $scopeID;
break;
case "customer_delete":
$customerID = $scopeID;
break;
}
Quando o MultiCD está ativo na loja, os webhooks de product_stock e variant_stock são disparados para alterações de estoque em qualquer centro de distribuição.
seller_id para confirmar que o evento pertence à loja esperadaAo receber um webhook, seu endpoint deve:
scope_name, scope_id e act do payloadx-www-form-urlencodedscope_name + "_" + act para rotear eventosseller_id e tratamento de duplicatas (idempotência)application/x-www-form-urlencodedaccess_token configurado para chamadas complementares à API