Superwall cancellation feedback

Add cancellation conversations beside your Superwall paywalls

Keep Superwall in charge of paywalls and subscription state while Paydirt turns a non-renewing trial or paid subscription into exact product feedback.

What this workflow actually does

Superwall can run standalone or alongside another purchase source of truth. Paydirt’s setup first inspects the host app: a standalone Superwall subscription flow uses the Superwall adapter, while a Superwall app backed by RevenueCat should follow the RevenueCat source of truth instead of double-detecting the same cancellation.

The source adapter consumes Superwall customer information, filters for an active, non-revoked subscription that will not renew and has a future expiration, and uses offer type to distinguish a trial from a paid period.

Paydirt does not alter placements, campaigns, paywall presentation, or purchase handling. It adds a feedback conversation after subscription state indicates cancellation and sends the resulting evidence to the configured Slack channel.

A strong fit for

  • Standalone Superwall subscription integrations
  • Apps using Superwall paywalls with an inspectable subscription source of truth
  • Trial and paid cancellation conversations
  • Teams that want feedback metadata without replacing paywall logic

Not designed to replace

  • Changing Superwall campaigns or placements
  • Running two cancellation detectors for the same subscription
  • Purchasing, restoring, or entitlement enforcement
  • Guaranteeing feedback from users who never reopen the app

From trigger to exact answers

  1. 01

    Identify the actual source of truth

    The coding agent checks whether Superwall owns subscription state or delegates purchases to RevenueCat or app-owned logic.

  2. 02

    Install one adapter

    Standalone Superwall uses its customer-info stream; RevenueCat-backed Superwall uses only the RevenueCat adapter.

  3. 03

    Filter cancellation state

    Paydirt considers active, non-revoked, future-expiring subscriptions whose renewal flag is off.

  4. 04

    Add product context

    Provider, store, product, offer type, expiration, and StoreKit price data when available travel with the conversation.

Preserve the host app’s Superwall version

Paydirt’s core has no Superwall dependency. The setup contract returns source compatible with the app’s installed Superwall SDK and an exact start call.

import Paydirt
import SuperwallKit

Paydirt.configure(apiKey: "PUBLIC_PAYDIRT_SDK_KEY", theme: .automatic)

PaydirtSuperwallAdapter.shared.start(
    cancellationFormId: "PAID_CANCELLATION_FORM_ID",
    trialCancellationFormId: "TRIAL_CANCELLATION_FORM_ID"
)

What reaches Slack

  • Superwall provider, store, and product identifier
  • Offer type used to distinguish trial and paid cancellation
  • Expiration and renewal context
  • StoreKit price metadata when the App Store product can be loaded
  • Every raw question and accepted text/voice answer

Know the limits

  • A RevenueCat-backed Superwall app should not also run the standalone Superwall detector
  • In-app feedback still depends on the customer returning to the app
  • Non-App-Store products may not have StoreKit localized price information
  • Paydirt observes subscription feedback events; it does not configure paywalls or campaigns

Questions developers ask

Can Paydirt work with Superwall without RevenueCat?

Yes. The standalone Superwall adapter reads Superwall customer information directly and does not require RevenueCat.

What if this app uses both Superwall and RevenueCat?

Use the provider that owns subscription state. For the common RevenueCat-backed setup, install only the RevenueCat adapter so the same cancellation is not detected twice.

Does Paydirt change Superwall placements?

No. Superwall remains responsible for paywalls, campaigns, and purchasing. Paydirt adds a separate feedback presentation when cancellation state is observed.

Ship the smallest useful feedback loop

Install one form at a real product moment, send the completed raw conversation to one Slack channel, and verify it in the app before expanding.

Start setup