RedChurn

Superwall setup

RedChurn sits on top of Superwall. You keep your paywalls, placements, and StoreKit / Play Billing logic. RedChurn listens to Superwall webhooks and runs retention flows on email, inside your app, or both.

Before you start

You need a Superwall project with at least one iOS or Android app and live or sandbox subscriptions flowing through Superwall. RedChurn does not replace Superwall. It adds automated billing recovery, cancel saves, and win back on the channels you choose.

Create your app in the RedChurn dashboard first and select Superwall as your billing provider. During onboarding, RedChurn generates a unique webhook URL for your app. You will paste it into Superwall along with the Svix signing secret Superwall generates for the endpoint.

  • A Superwall project with subscription events enabled
  • A RedChurn account with an app created (Superwall selected as provider)
  • HTTPS webhook endpoint (provided by RedChurn)
  • Resend account connected if you want email flows on day one
  • Subscriber emails in Superwall user attributes (required for email recovery)

Pass subscriber emails to Superwall

RedChurn sends recovery emails to the address Superwall includes in webhook payloads under userAttributes.email. Superwall does not infer emails from the store. Your app must set them after login with setUserAttributes.

Add one line in your mobile app when the user signs in. Once deployed, new webhooks include the email and RedChurn can deliver automatically. Existing subscribers get the email on their next app open after you ship the update.

RedChurn checks whether emails are arriving. If not, the dashboard shows the exact snippet for your stack under Integrations → Subscriber emails.

Swift (iOS) · swift
import SuperwallKit

// After login, when you know the subscriber email
Superwall.shared.setUserAttributes(["email": user.email])
React Native · tsx
import Superwall from '@superwall/react-native-superwall'

// After login, when you know the subscriber email
await Superwall.shared.setUserAttributes({ email: user.email })
Kotlin (Android) · kotlin
import com.superwall.sdk.Superwall

// After login, when you know the subscriber email
Superwall.instance.setUserAttributes(mapOf("email" to user.email))

What RedChurn reads from Superwall

Superwall delivers subscription lifecycle events through Svix-signed webhooks. RedChurn normalizes each event into the same retention model used across all billing providers.

Billing issue events trigger billing recovery. Cancellation and expiration events feed cancel saves and win back. Renewal and uncancellation events confirm recovered subscribers so MRR impact shows correctly in your Red Center.

  • billing_issue → billing recovery (failed payment, dunning)
  • cancellation → cancel save when a subscriber initiates cancel
  • expiration → win back for subscribers who have already churned
  • renewal / uncancellation → outcome tracking and MRR attribution
  • initial_purchase / product_change → analytics and subscriber state (no outbound flow by default)

Webhook setup

Open your Superwall dashboard: Integrations → Webhooks → Add endpoint.

Copy the webhook URL from RedChurn onboarding or from Dashboard → Apps → Integrations. The URL follows this pattern and must use HTTPS:

text
https://app.redchurn.io/api/webhooks/superwall/{your-app-slug}

Svix signing secret

After creating the endpoint, Superwall shows a Svix signing secret (starts with whsec_). Copy it from Superwall and paste it into RedChurn under Dashboard → Apps → Integrations.

RedChurn verifies Svix signatures on every delivery to reject forged requests. Paste the raw secret value exactly as Superwall shows it. RedChurn never displays the secret again after saving.

Verify the connection

After saving the webhook in Superwall and pasting the signing secret in RedChurn, click Test connection. RedChurn confirms the endpoint and signature verification are configured correctly.

Superwall does not send arbitrary test webhooks. To confirm live delivery, trigger a sandbox purchase (TestFlight on iOS or a Play test account on Android). The dashboard updates to Connected once the first authentic webhook is received.

  • Test connection → verifies secret saved and endpoint reachable
  • Sandbox purchase → confirms real Superwall payloads arrive
  • Dashboard → Apps → Integrations shows Connected status

Sandbox vs production

Superwall webhooks include an environment field when available. RedChurn tags events as SANDBOX or PRODUCTION for filtering in your Red Center.

Until you mark the app as production-deployed in RedChurn, sandbox-tagged events are treated as sandbox by default. Mark production deployed when your App Store or Play Store build is live so analytics and flows align with real subscribers.

Start with email only

You do not need the SDK to launch billing recovery on email. Follow the Resend setup guide, verify your sending domain, then enable email sequences under Scenarios → Email.

When Superwall reports a billing issue, RedChurn sends recovery emails from your domain on the schedule you configure. No app release required beyond setUserAttributes for subscriber emails.

Add in-app flows later

Cancel saves, in-app billing dunning, and win back prompts require the React Native or Swift SDK. Install it once, pass your SDK key and Superwall app user ID, and all copy and offers remain editable from the dashboard.

See the React Native or Swift SDK documentation for installation and the three in-app scenarios.

What stays unchanged

RedChurn is read-only on Superwall billing data. It does not modify entitlements, process refunds, or change your paywall logic. Your app keeps working normally if RedChurn is temporarily unavailable.

Superwall placements, experiments, and paywall templates continue to work exactly as before. RedChurn only adds retention automation and analytics on top.

Troubleshooting

If events are not arriving, check that the webhook URL is HTTPS, the Svix signing secret matches exactly, and you triggered a real sandbox or production purchase.

If the test connection passes but flows do not trigger, confirm the relevant flow is enabled in the RedChurn dashboard, Resend is connected for email channels, and subscriber emails appear in Superwall user attributes.

  • 401 / signature errors: signing secret mismatch or missing whsec_ prefix handling
  • No events in dashboard: endpoint URL typo or no purchase triggered yet
  • Email not sending: Resend domain not verified, flow disabled, or missing setUserAttributes email
  • In-app not showing: SDK not installed or app user ID not passed to RedChurn