What's New in August 2026: Meta Ads Attribution, the KMP & Web SDKs, and Web Checkout Discount Codes
Superwall becomes a Meta mobile measurement partner with attribution and an acquisition cohort report, the KMP and Web SDKs land in beta, Android ships custom store products and a Billing Library 9 upgrade, and web paywalls can now redeem Stripe discount codes.
Meta Ads: Superwall as your mobile measurement partner
Superwall is now a mobile measurement partner (MMP) for Meta campaigns. Connect a Meta dataset, generate ad links from the dashboard, and Superwall attributes installs to the campaign, ad set, and ad that drove them, then sends conversion events back to Meta so it can optimize delivery. Matching is probabilistic and IDFA-free: it runs once per install, within 7 days, with no ATT prompt required.
A matched install sets acquisition_* user attributes
(campaign, ad set, ad, placement, network, and more), which you can use
as breakdowns in charts or as targeting in audience filters — for
example, showing a different paywall to users who arrived through a
specific ad. With the integration enabled, a new Advertising chart group appears with Ad Spend, ROAS, CPM, CPT, CPP, and Blended
CPT.
This requires SuperwallKit 4.16.0+ and is iOS-only for now; it's rolling out gradually, so reach out to [email protected] if you don't see Performance Marketing under Integrations yet.
Acquisition cohort report: what a campaign cost, and what it's earned back
The new acquisition cohort report pulls installs, trials, ad spend, CPI, and install-cohorted revenue
per campaign, ad set, ad, or country, available through the Superwall MCP or the API at POST /v2/charts/acquisition-cohort-report.
Ask your agent something like "show me installs and D30 revenue by
campaign for the last 30 days" and get an answer keyed by any
combination of d1, d3, d4, d7, d14, d30, and d90. Revenue is cohorted by install date, not purchase date, so a d30 figure reflects what a campaign's users had earned back within 30
days of installing — however long ago that was.
Acquisition cohort report docs →
Web checkout: discount codes, redeemed on the paywall
Web paywalls can now let customers enter a Stripe promotion code and see the price update before checkout. Add a text input and a button with the new Apply Discount tap action, point it at the input, and Superwall validates the code against Stripe, re-prices the paywall in place, and carries the discount through to the Stripe checkout session.
New hasDiscount, discountCode, and discountedPrice variables let the paywall react — a strikethrough of the original price
next to the discounted one is the common pattern. Building on the Web SDK instead? Call activePaywall.redeemDiscount() directly.
Two new SDKs land in beta: Kotlin Multiplatform and Web
The KMP SDK brings paywalls, placements, and entitlements to Kotlin
Multiplatform, wrapping the native Android and iOS SDKs behind one API
that lives entirely in commonMain — the same configure signature on both platforms, no expect/actual of your own, no Context parameter on Android. It supports minSdk 26 on Android and iOS 14+, and shipped its first two releases this
month (0.1.0, then 0.1.1).
The Web SDK brings the same campaigns, audience rules, and experiments to the
browser as ESM-only packages: @superwall/paywalls-js for the headless core, a /browser entry for the presenter, @superwall/paywalls-react for React 19 hooks, and @superwall/server / @superwall/verify for gating real resources server-side, since subscription state read
in the browser can always be edited from DevTools.
Both SDKs are in beta — expect API changes between releases.
KMP SDK docs → | Web SDK docs →
Android: custom store products and a Billing Library 9 upgrade
Android SDK 2.8.0 extends custom store products — products configured
on a custom store in the dashboard, backed by Stripe or your own
payment backend — so their price, period, and trial data template into
the paywall like any other product, with purchases routed entirely
through your PurchaseController, bypassing Google Play Billing.
The same release upgrades Google Play Billing Library from 8.0.0 to
9.1.0 (Google requires it by August 31, 2026) and raises the SDK's minSdk to 23. This is a breaking change for apps still calling removed
Billing Library APIs (SkuDetails, querySkuDetailsAsync, queryPurchaseHistoryAsync) directly, or using another subscription SDK that hasn't updated for
Billing 9 — test purchase, restore, and subscription-status flows
before shipping the upgrade. If you're not ready, you can pin Billing
to 8.3.0; see the changelog for the exact resolutionStrategy.force snippet.
Follow-up releases 2.8.1 and 2.8.2 fixed localized paywalls briefly
flashing the default language on first paint, added a presentation_id to paywall analytics events, and meaningfully cut memory and CPU
during paywall preloading.
Also shipped in August
- Expo native PaywallView. Expo SDK 1.3.0 adds a
native
PaywallViewcomponent for inline, overlay, and modal layouts, with declarative loading, skipped, error, and dismissed fallbacks, plus an Android SDK bump to 2.7.24. - Dynamic Type in paywalls. iOS SDK 4.16.2 adds the
user's system-wide text size as three device attributes —
fontScale,fontSize, andpreferredContentSizeCategory— for use in paywalls and audience filters, joining the Android device attributes that shipped in July. It also links subscriptions to the user server-side after a successful purchase or restore, and fixes a crash when an unevaluable audience-filter expression used to abort the app. - Xcode 26.0 build fix. iOS SDK 4.16.3 fixes a build error when compiling under Xcode 26.0.
- "Using your own backend" guide. A new cross-platform
guide for apps that validate receipts or serve entitlements from
their own server, covering both the "forward transactions, let
Superwall handle purchasing" path and the full
PurchaseControllerpath. - Apply Discount, not Redeem Discount. The dashboard's discount action was renamed to Apply Discount to avoid confusion with the separate Redeem Purchase tap action.
- Blended CPI and CPT charts. New chart docs for Blended CPI (total spend ÷ all new installs, paid and organic) and Blended CPT, both part of the Advertising chart group unlocked by Meta Ads.
That's August. If something here unlocks a use case you have been sitting on, or raises a question, tell us. We say test everything, and we would rather hear the hard question now than after you ship.
Ready to try it?
Create your Superwall account → and build your first paywall today. It is free to get started, and everything above works from day one.
Want to see it live first? Book a demo → and we will walk you through Meta Ads attribution, the KMP and Web SDKs, and web checkout discount codes, mapped to your app. A good fit if you are on Enterprise, scaling growth, or weighing a migration.
FAQ
- What does the Meta Ads integration do?
- It makes Superwall a mobile measurement partner (MMP) for Meta campaigns: Superwall generates the ad links, attributes installs to the campaign/ad set/ad that drove them, and sends conversion events back to Meta. It's iOS-only for now and requires SuperwallKit 4.16.0+.
- What is the acquisition cohort report?
- A report that pulls installs, trials, ad spend, CPI, and install-cohorted revenue per campaign, ad set, ad, or country, available through the Superwall MCP or the API. Revenue is cohorted by install date, so a d30 figure reflects what a campaign's users earned back within 30 days of installing.
- How do discount codes work on Superwall's web checkout?
- Add an Input element and a button with the new Apply Discount tap action on your web paywall. Superwall validates the code against your existing Stripe promotion codes, re-prices the paywall, and carries the discount through to the Stripe checkout session.
- Are the KMP and Web SDKs ready for production?
- Both are in beta. The KMP SDK wraps the native Android and iOS SDKs behind one Kotlin Multiplatform API; the Web SDK brings the same campaigns and experiments to the browser as ESM-only packages, with React 19 bindings included.
- Do I need to do anything for the Android Billing Library 9 upgrade?
- If your app calls removed Billing Library APIs directly (SkuDetails, querySkuDetailsAsync, queryPurchaseHistoryAsync) or uses another subscription SDK that doesn't yet support Billing 9, update SDK 2.8.0 with care and test purchase/restore flows first — or pin Billing to 8.3.0 in the interim. Google requires Billing 9 by August 31, 2026.