Sponsored Offers
Encore’s headline monetization feature is Brand-Sponsored Premium Trials. When a user declines your paywall or starts a cancellation flow, Encore can present offers from premium partner brands — Disney+, Netflix, Spotify, Amazon Music, HelloFresh, ClassPass, and more — where the brand sponsors the user’s entitlement. You recover a churning user, and it costs you nothing.
“When users decline your paywall, a brand sponsors your Premium trial.” Offers that feel like gifts, not ads.
How it differs from a paid offer
| Retention (paid) offer | Sponsored offer | |
|---|---|---|
| Who pays | The user, via your billing | The partner brand |
| Callback path | onPurchaseRequest → your billing → completePurchaseRequest | none — resolves directly |
result.status | 'granted' | 'completed' |
| Your code | run billing | just entitle the user |
Both are “wins,” so the demo treats them the same:
import { isGranted } from '../lib/encore';
const result = await Encore.placement('cancellation_flow').show();
if (isGranted(result)) {
// status === 'granted' → paid purchase completed
// status === 'completed' → brand-sponsored trial accepted
entitleUser(result.entitlement);
}You don’t build the carousel
This is the key architectural point: the partner catalog, the sponsored-trial UI, partner selection, the affiliate redirect, and the revenue split are all handled by Encore’s backend and native SDK. Your job is only to:
- Present the placement at the right moment —
Encore.placement(id).show(). - Configure the sponsored campaign in the Encore dashboard (which partners, eligibility).
- React to
result.statusand entitle the user ongranted/completed.
In this demo (mock mode)
Because there’s no native SDK in mock mode, the mock models Encore’s native carousel so you can see the flow:
- A
sponsoredoffer renders a scrollable list of partner cards. - Picking a partner resolves
{ status: 'completed', entitlement, offerId, campaignId }and firesonPurchaseComplete— without touching your billing. - The example game Hotspot Havoc chains it as a win-back: decline the Pro
paywall and the sponsored partners (from
DEFAULT_PARTNERS) appear as a second-chance offer.
Offers and the partner catalog are configurable when you create the client:
import { createMockEncore, DEFAULT_PARTNERS } from 'react-native-encore-mock';
const Encore = createMockEncore({
offers: {
cancellation_flow: {
type: 'sponsored',
placementId: 'cancellation_flow',
campaignId: 'winback_2026',
entitlement: 'subscription',
title: 'Wait — a gift before you go',
subtitle: 'A partner brand will sponsor your next months.',
partners: DEFAULT_PARTNERS,
dismissLabel: 'No thanks',
},
},
});Going live
Install the real native SDK and the partner carousel is rendered for you — no UI
to build. Configure the campaign and partners in the
Encore dashboard; attribution and the revenue
split are handled on Encore’s side. Your placement().show() + isGranted(result)
code is unchanged. See Mock vs Live Mode.