Skip to content

How to diagnose webhook failures in Console

Use this page as the main diagnosis flow for webhook failures, parsing issues, route mismatches, sizing problems, and exchange-side rejections.

Fast diagnosis rule Check in this order: accepted, connection, bot name, symbol, size, provider outcome.

Fast diagnosis order: accepted, connection, bot, symbol, size, outcome

Section titled “Fast diagnosis order: accepted, connection, bot, symbol, size, outcome”
StepQuestionIf no
1Was the request accepted?fix sender or request transport first
2Did the token hit the correct connection?fix the webhook URL
3Did the bot name match that connection?fix the payload bot name
4Did the symbol resolve correctly?fix the symbol or provider mapping
5Did the size resolve above zero and exchange minimums?fix amount, position, or sizing suffixes
6Did the provider accept the final order?inspect the exchange response and field values

How to tell setup errors from exchange rejections

Section titled “How to tell setup errors from exchange rejections”

Failures before provider outcome are usually setup, token, bot, symbol, or payload problems. Failures after provider outcome are usually exchange-side rejects.

If the request was not accepted, stop there. Do not reason about symbol, size, or exchange response yet.

The token in the webhook URL chooses the saved connection. If that token is wrong, the request is already running in the wrong context.

Example:

https://YOUR-API-DOMAIN/api/automaton/webhook/TOKEN_FOR_BETA
ALPHA(BTCUSDT){type=market,side=buy,amount=0.001}

The token resolves one saved connection, but the payload can still name another bot.

Example:

URL token belongs to: ALPHA
Payload sent: BETA(BTCUSDT){type=market,side=buy,amount=0.001}

Make sure the parsed symbol and provider context match the market you intended to trade.

Many “valid” commands fail here.

Typical causes:

  • %p used while there is no open position
  • available balance is too low
  • total balance is too low
  • the final size rounds below exchange minimums

Concrete example:

ALPHA(BTCUSDT){type=market,side=sell,amount=100%p,reduceOnly=true}

If there is no current position, 100%p resolves from zero.

Even after syntax and sizing are valid, the provider can still reject the final instruction because of:

  • step size
  • minimum quantity
  • minimum notional
  • post-only constraints
  • symbol-specific rules

When to stop retrying and fix the payload first

Section titled “When to stop retrying and fix the payload first”

If the request failed on acceptance, parsing, bot match, symbol resolution, or sizing, stop retrying and fix the payload or connection first.

The parser expects this structure:

BOTNAME(SYMBOL){ command; command; command; }

Bad example:

ALPHA BTCUSDT type=market side=buy amount=0.001

Good example:

ALPHA(BTCUSDT){type=market,side=buy,amount=0.001}
  • start with a tiny size
  • use one simple symbol
  • keep Console open
  • send the payload
  • confirm the correct connection
  • confirm the correct bot name
  • confirm the resolved behavior
  • only then move it into automation