Choose your Stripe events
Start with the four events that cover payments, failures and cancellations. You can add more later.
- checkout.session.completed – a customer completes checkout for a one-time payment or a new subscription.
- invoice.payment_succeeded – a recurring invoice is paid, including subscription renewals.
- invoice.payment_failed – a charge or renewal fails, often the first sign of a card problem.
- customer.subscription.deleted – a subscription ends, whether cancelled immediately or at period end.
Inside your Stripe webhook handler, forward the fields that matter.
Verify the Stripe signature first, then send one HTTP call to LogsNinja with the amount as metadata – it powers both the alert and the revenue chart.
$ curl -X POST https://api.logsninja.com/v1/events \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -d '{ "project": "YOUR_PROJECT_ID", "stream": "payments", "title": "New subscription", "content": "[email protected] subscribed to Pro", "emoji": "💳", "metadata": {"plan": "pro", "amount": 49}, "notify": true }' ✓ Event received ✓ Push sent to 2 devices # revenue chart updated
Ship it safely
Verify before you trust
- Check the Stripe-Signature header against your webhook signing secret before processing anything.
- Keep your Stripe secret key and your LogsNinja API token out of client-side code.
- Never forward full card numbers or CVCs – Stripe never sends them to your webhook either.
Handle retries
- Stripe retries undelivered webhooks – return 200 quickly and process asynchronously if needed.
- Use the Stripe event ID as an idempotency key so a retried webhook does not create a duplicate alert.
- Log delivery failures on your side; LogsNinja events sent later still land in the right chart.
Build these charts on your dashboard
Every widget below reads the same events you just started sending – no second integration. Revenue today sums the amount metadata on the payments stream; the others count events by title.
Example values shown for illustration.
Frequently asked questions
Do I need to change my Stripe integration?
No. Keep your existing Stripe webhook endpoint. Add one HTTP call to LogsNinja inside your existing handler, after you verify the signature.
Which Stripe events should I add later?
customer.subscription.created for new trials, charge.refunded for refunds, and invoice.payment_action_required if you support 3D Secure.
Is it safe to send the payment amount to LogsNinja?
Yes. The amount is stored as event metadata, the same field used to power your revenue chart. Never send full card numbers or CVCs – Stripe does not send them to your webhook in the first place.




