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.

Michal Parizek
Michal Parizek

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.

Meta Ads integration docs →

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.

Discount codes docs →

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.

Android changelog →

Also shipped in August

  • Expo native PaywallView. Expo SDK 1.3.0 adds a native PaywallView component 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, and preferredContentSizeCategory — 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 PurchaseController path.
  • 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.

Get the Superwall newsletter

Paywall strategy and monetization tactics, straight to your inbox.

Book a demo

Tell us a little about your app and we'll match you with the right person.

  • A personalized walkthrough of the paywall builder
  • Guidance on your monetization and pricing strategy
  • Custom implementation recommendations for your stack
  • A look at proven paywall templates
  • Revenue-optimization best practices

Get started

Build, test, and optimize your paywalls

Join 10,000+ apps using Superwall to grow subscription revenue without shipping an app update.

Start for free

No credit card required