Migration campaigns, upgrade offers, and promotional pricing
ZeroSettle provides three campaign types to grow and retain subscribers. All are configured from the ZeroSettle dashboard with built-in analytics — no app update required to change targeting, messaging, or pricing.
Migration campaigns help you move existing StoreKit or Play Store subscribers to web checkout at a discount. This eliminates platform fees on future renewals while giving users a lower price.
The SDK returns campaign data in ProductCatalog.config.migration. Use the built-in ZSMigrateTipView for a drop-in UI, or read the data to build your own:
Copy
let catalog = try await ZeroSettle.shared.fetchProducts(userId: user.id)if let migration = catalog.config?.migration { // Show migration prompt to eligible users print("\(migration.title): \(migration.discountPercent)% off")}
After a successful migration purchase, track the conversion:
Upgrade offers prompt subscribers to switch from shorter billing cycles (e.g., monthly) to longer ones (e.g., annual) at a savings. The SDK handles proration for web checkout subscribers and shows Apple cancel instructions for StoreKit-to-web migrations.
Present the upgrade offer using a SwiftUI modifier or the programmatic API:
Copy
@State private var showUpgradeOffer = falseButton("See Upgrade Options") { showUpgradeOffer = true}.upgradeOffer( isPresented: $showUpgradeOffer, productId: "premium_monthly", userId: currentUser.id) { result in switch result { case .upgraded: showConfirmation("You've been upgraded!") case .declined, .dismissed: break }}
Promotional pricing lets you offer discounts on any product. Promotions are configured per-product on the dashboard and surfaced automatically in the SDK product data.