Skip to main content
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. unavailable is a normal outcome (no eligible offers), not an error; have a fallback path.
  • Never gate access on the client result. claimed is 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