All integrations

Stripe

Solo founder / small team - get pinged on every sale.

LiveWebhooksigned URL
number (green) Live Activity preview
Stripe payment received

The classic solo-founder dopamine hit: every successful charge → push notification with the customer email and amount. Chirp's @stripe inspector handles the most common Stripe events with built-in formatting (amounts converted from cents, customer email pulled from the expanded charge, subscription plan resolved from the price ID).

Easy first webhook integration. Most relevant events: `payment_intent.succeeded` (sale!), `payment_intent.payment_failed` (decline), `customer.subscription.created` (new sub), `invoice.payment_failed` (renewal failed). Add `customer.subscription.deleted` if you want churn pings.

Prerequisites

  • A Stripe account.
  • A Chirp inspector / webhook URL.

Setup

  1. 1

    Open the Stripe webhook settings

    Stripe Dashboard → Developers → Webhooks → "Add endpoint". Note: Stripe has a separate "Test mode" toggle in the dashboard - set up the webhook in both test and live modes if you want pings during local development.

  2. 2

    Configure the endpoint

    Paste the Chirp URL. Tick the events you care about (suggested set below). Stripe signs every webhook with a whsec_... secret on the endpoint detail page - that secret is for *your* server to verify Stripe's signatures. Chirp's @stripe normalizer trusts the inspector key in the URL as the auth (since the key is the secret that grants posting rights), so you don't need to share Stripe's signing secret with us.

    shell
    Endpoint URL: https://api.chirpapp.dev/v1/webhooks/stripe?key=YOUR_KEY
    Description: Chirp lock screen
    Events: payment_intent.succeeded
            payment_intent.payment_failed
            customer.subscription.created
            customer.subscription.deleted
            invoice.payment_failed
            charge.refunded
  3. 3

    Trigger a test event

    Stripe's webhook detail page has a "Send test webhook" button. Pick payment_intent.succeeded, send. Chirp's notification fires within seconds. If you want to verify Stripe-Signature properly (defense in depth), pair this with the Webhook Inspector integration - it forwards verbatim to your real backend, which can validate the signature there.

What you’ll see

Notification: "Chirp · Stripe" - title is the event type (e.g. "Payment succeeded · $24.00"), body is the customer email + product line. Tap to deep-link to the Stripe dashboard for that event. Failed payments show in red. Subscription events include the plan name. No persistent activity by default - Stripe events are one-shot pushes; if you want a card that aggregates today's revenue, the @openrouter-spend pattern (see that integration) is the closest analogue.

Troubleshooting

Test webhook from Stripe says "failed" with a 400.
Stripe's test events are real-format payloads with synthetic IDs. If Chirp 400s, check the inspector's recent-events log - most often it's a malformed event type (the @stripe normalizer expects events from the suggested list above; rare event types fall through to a generic representation but Chirp may still 400 if the payload shape is unexpected).
Pings work in test mode but not live mode.
Test and live modes have separate webhook configurations in Stripe. Add the Chirp endpoint in BOTH modes (toggle the dashboard's test/live switch).
Some events fire, others don't.
Stripe's event ticklist on the webhook page is the source of truth. Re-edit the endpoint and confirm every event you expect is ticked.
I want to ignore failed-payment retries (they fire on every retry).
Stripe retries failed payments automatically; each retry fires invoice.payment_failed. If you only want the first failure, filter in the Chirp inspector by attempt_count == 1.