Fields
None. Needs Webhook: Read and write.
It sends one test event to your webhook URL now, signed and with the same headers as every delivery, so a receiver that accepts it accepts the real ones (see Check the signature). The event:
event_typeiswebhook.tested, andcursoris0.payloadholds yourlicense_idand theurlit was sent to.- It is not one of your store's changes: it never appears in GET /changes, it is not retried, and a failed test does not count towards pausing the webhook. A test that arrives does not lift a pause either.
A paused webhook can be tested too, to check a fix before the PUT that resumes it. 5 tests a minute per store, whichever key sends them, on top of the key's own limit.
What it answers
Always 200 once something was tried: whether the test arrived is the answer.
| Field | Meaning |
|---|---|
| delivered | true when your URL answered with any 2xx status. |
| status | The HTTP status your URL answered with, or null when nothing answered. |
| duration_ms | How long it took, in milliseconds. |
| error | What went wrong, in one sentence of ours, or null when it was delivered. What your server replied is never passed back. |
Returns
- 200The test was tried.
data.deliveredsays whether it arrived. - 404webhook_not_set: the store has no webhook to test.
- 409webhook_managed_by_plugin: the store's plugin manages its webhook.
- 429rate_limited: more than 5 tests in a minute for this store. Wait for
Retry-Afterseconds.
This endpoint can also answer 401 invalid_api_key, 403 license_not_active, 403 product_not_included, 403 insufficient_scope and 429 rate_limited.