Encore.placement(id).show() (and the inline Encore.show()) resolves when the offer flow
ends. On web there are no global purchase handlers to register: when a user claims an
offer, the SDK opens the advertiser’s URL directly (at claim time in immediate mode, at
redeem() time in deferred mode). Your integration
is just: await the call, branch on the result.
For the cross-platform decision tree, see Integration Patterns.
Branch on the result
show() resolves a bare ShowResult and never
rejects:
Loading state
The placement builder exposes a loading callback for spinners and button states:Cross-cutting telemetry
For consistent analytics across many placements, wrap the placement call in a small helper instead of duplicating tracking at each call site:Rules of thumb
- Always handle all three statuses.
unavailableis a normal outcome (no eligible offers), not an error; have a fallback path. - Never gate access on the client result.
claimedis not a conversion; verify entitlements server-side, by user, via Encore’s server-side entitlements API. - Call from user actions. Present offers in response to a real moment (cancel tap,
checkout success), and in deferred mode call
redeem()from a click handler so the advertiser tab isn’t popup-blocked.
See also
- Concepts: Integration Patterns: cross-platform decision tree
- Redemption Modes: deferred vs immediate walkthrough
show()·redeem()·placement()