Xero Proxy

Developer documentation

Alerting

The built-in rules, how they are evaluated, and where notifications go.

View as markdown

Built-in rules

RuleFires whenDefault
connection_expiryA Xero connection is expiring, has expired, or was revoked at Xero. Every key on it stops working when it does.14 days of warning
sustained_429Xero returned 429 more than the threshold within the window. The per-minute app ceiling is shared across everything on the connection.20 429s in the window
unusual_key_usageA key's request volume rose above a multiple of its own recent baseline, which is what a leaked credential looks like.5 times the baseline
proxy_error_rateThe share of proxied requests failing exceeded the threshold. Usually a scope that was never granted, or a connection in trouble.25 percent of requests
webhook_delivery_failuresEvent deliveries to your own endpoints exhausted their retries. A subscriber that has quietly stopped accepting events is invisible from the endpoint's own side.5 exhausted deliveries in the window
quota_pressureAn organisation is close to its Xero daily limit. The reserve decides who spends what is left, not how much is left, so this is the warning that buys time to act.750 calls left in the day
idempotency_conflictsA key sent an Idempotency-Key it had already used for a different write. The request was refused rather than answered wrongly, but an application generating keys that way is one code path from writing a duplicate.5 conflicts in the window
deferred_backlogRequests accepted for later execution have been waiting longer than expected. A queue that drains is the feature working; a queue that does not is work quietly not happening, which looks the same from outside until somebody asks where last week's invoices went.30 minutes the oldest job has waited
callback_delivery_failuresCallbacks announcing that deferred work finished exhausted their retries. This one is worse than it looks: an endpoint that has stopped accepting them cannot tell, because nothing arriving is exactly what a quiet period looks like, and the software waiting on the signal removed its polling because the signal existed.5 exhausted deliveries in the window

Evaluation and delivery

  • Rules are evaluated on a schedule by a separate task container, never inside a request.
  • A condition that persists updates one alert rather than filling the page with duplicates, and records how many times it has been seen.
  • Delivery is by email or by webhook. A webhook receives a signed JSON payload; the signature is an HMAC of the body under your webhook secret.
  • Alerts remain in the dashboard whether or not delivery succeeded, and failed deliveries record why.