Skip to main content

Overview

The Stripe integration allows you to automatically track customer cancellations from your Stripe subscriptions. When a customer cancels their subscription, SeggWat captures the event along with the cancellation reason and any comments they provide.
This integration connects your Stripe account to SeggWat. It tracks cancellations from your customers’ subscriptions, helping you understand why customers churn.

Features

  • Automatic churn tracking - Cancellation events are captured in real-time via webhooks
  • Cancellation reasons - See why customers are leaving (too expensive, missing features, etc.)
  • Customer comments - Capture verbatim feedback from departing customers
  • Churn analytics - View trends, statistics, and breakdowns in the Insights dashboard
  • Owner notifications - Get notified when customers leave feedback with their cancellation

Setup Instructions

Step 1: Open the Stripe Integration

  1. Navigate to your project in SeggWat
  2. Go to Integrations in the sidebar
  3. Click on the Stripe integration card

Step 2: Copy the Webhook URL

In the Stripe integration modal, you’ll see a unique webhook URL for your project:
https://seggwat.com/hooks/stripe/{your-project-key}
Click the Copy button to copy this URL to your clipboard.

Step 3: Configure Stripe Webhook

  1. Open your Stripe Dashboard
  2. Go to DevelopersWebhooks
  3. Click Add endpoint
  4. Paste the webhook URL from SeggWat
  5. Under Select events, click Select events
  6. Search for and enable:
    • customer.subscription.deleted
  7. Click Add endpoint

Step 4: Copy the Signing Secret

After creating the webhook in Stripe:
  1. Click on the webhook you just created
  2. Under Signing secret, click Reveal
  3. Copy the secret (starts with whsec_)
  4. Return to SeggWat and paste it in the Signing Secret field
  5. Click Save Secret
Make sure to copy the complete signing secret. It should start with whsec_ followed by a long string of characters.

Viewing Churn Data

Once configured, churn data appears in two places:

Insights → Churn Tab

Navigate to Insights and click the Churn tab to see:
  • Total cancellations - All-time count
  • Monthly trends - This month vs. last month with percentage change
  • Cancellation reasons - Visual breakdown of why customers churn
  • Recent cancellations - List of recent events with customer details and comments

Notifications

Project owners receive notifications when customers include comments with their cancellations. This helps you quickly respond to actionable feedback.

Cancellation Reasons

Stripe captures cancellation feedback through the cancellation_details.feedback field. SeggWat maps these to the following categories:
ReasonDescription
Too ExpensiveCustomer finds the price too high
Missing FeaturesProduct lacks features the customer needs
Switched ServiceCustomer moved to a competitor
Low QualityCustomer is unhappy with product quality
Too ComplexProduct is too difficult to use
UnusedCustomer no longer needs the product
Customer ServiceIssues with support experience
OtherCustom reason provided by customer
To collect cancellation reasons in Stripe, you need to enable cancellation feedback in your billing settings. Go to SettingsBillingCustomer portal and enable “Collect cancellation feedback”.

Testing the Integration

You can test the webhook using Stripe CLI:
# Install Stripe CLI if needed
brew install stripe/stripe-cli/stripe

# Login to your Stripe account
stripe login

# Trigger a test event
stripe trigger customer.subscription.deleted
This will send a test webhook to your endpoint and help verify the integration is working.

Troubleshooting

Webhook Not Receiving Events

  1. Verify the webhook URL is correct in Stripe
  2. Ensure the signing secret matches (starts with whsec_)
  3. Check that customer.subscription.deleted event is enabled
  4. Verify your webhook endpoint is showing in the Stripe dashboard

Integration Shows “Pending”

The status changes to “Active” after the first successful webhook is received. You can:
  • Wait for a real cancellation
  • Use Stripe CLI to trigger a test event (see Testing section above)
  • Check the Stripe dashboard for webhook delivery attempts

Invalid Secret Error

If you see a secret validation error:
  1. Re-copy the secret from Stripe (click “Reveal” to see the full secret)
  2. Ensure no extra spaces before or after the secret
  3. The secret should start with whsec_

Signature Verification Failed

If webhook signature verification fails:
  1. Ensure you’re using the correct signing secret for this specific webhook endpoint
  2. Check that the webhook is pointing to the correct URL
  3. Verify no proxy or middleware is modifying the request body

Data Privacy

SeggWat only stores:
  • Subscription ID (for deduplication)
  • Customer ID (if provided by Stripe)
  • Cancellation reason and comment
  • Timestamp
We do not store payment information, card details, or access your Stripe billing data.

Multiple Payment Providers

You can connect both Stripe and Polar to the same project. SeggWat will aggregate churn data from all connected payment providers, and the provider source is shown for each cancellation event.

Next Steps