When the webhook log has no rows for a provider you use, nothing from that provider is reaching your store. This is a routing problem, not a signature one.
Every delivery that reaches the store leaves a row, including the ones that did nothing:
bin/plugin kahunacart webhooks
bin/plugin kahunacart webhooks --provider stripe --limit 50
Fix it
- Prove the webhook address is reachable from outside. It is
{route}/webhook/{provider}, which with the default route is/shop/webhook/stripe:
curl -i -X POST https://your-site.com/shop/webhook/stripe -d '{}'
- Read the answer:
| Answer | What it means |
|---|---|
A JSON body with 400 |
Correct. The address works, and the signature check rejected your empty test. Check the URL registered at the provider. |
404 |
The address is wrong. Check the store's route setting and that KahunaCart and the provider plugin are enabled. |
- Check the URL registered at the provider matches your site's address exactly, including
https://andwwwif your site uses it. - Press Set up webhook on the provider's card at KahunaCart → Setup → Payments. It adopts an existing endpoint instead of creating a duplicate.
Note
Changing the store's route changes every webhook URL. Press Set up webhook again on each provider, then delete the old endpoint in the provider's dashboard.
bin/plugin kahunacart check also runs a Webhook reachability check and prints the address providers deliver to.