show() resolves
{ status: 'claimed' }. The SDK renders nothing after a claim: the host owns whatever
comes next.
Requires the current
@encorekit/web-sdk 2.x release. Upgrading an existing integration:
Updating to 2.x.What a claimed result carries
The payload mirrors the iOS and Android
ClaimedOffer field for field, so a
cross-platform integration reads one shape everywhere.
Which sheet renders
TheuseCase option is the only thing that
selects a composition, and it defaults to 'reduceChurn':
A use case with nothing to present is not an error.
show() resolves
{ status: 'unavailable' }, the same result no eligible offers produce, and it never falls
back to another use case’s offers or copy.
These symbols match the native SDKs verbatim (iOS
.reduceChurn / .rewardUsers, Android
REDUCE_CHURN / REWARD_USERS), so a cross-platform integration reads one vocabulary. The
values Encore sends and stores are separate frozen labels, which is what keeps a rename from
ever changing the wire. You never type a wire value: passing one is rejected as an
unrecognized use case.Where the sheet’s copy comes from
headline and subheadline on the
placement options set the copy for one
presentation, ahead of the copy Encore resolved for your app. The full resolution order,
and how blank values behave, are on
Where the copy comes from.
Identify before you present
Callidentify() with your stable user id before
presenting, so the claim binds to an account id that survives reloads, navigations, and
device switches. Exposures recorded before identify() are keyed to the auto-generated
anonymous id and are not retro-linked, so a late identify leaves them unattributed. See
Configure Analytics.
A claim is not a conversion
claimed reports a presentation fact: the user tapped Claim and was handed off to the
advertiser. Nothing has been earned or verified at that moment.
Advertiser completion happens later, is asynchronous, and is server-authoritative. Verify
real access from your backend through Encore’s HMAC-authenticated server-side entitlements
API, by user, never from this result and never from the client.
Gotchas
- Nothing renders after a claim. If your flow wants a confirmation moment, render it
yourself when the result is
claimed. unavailableis overloaded on purpose. It means no eligible offers, a measurement control cohort, or nothing to present for the requested use case, and the SDK keeps them indistinguishable so incrementality experiments aren’t contaminated. Show your normal fallback; don’t branch on a suspected control assignment.- You don’t need a click handler for
show(). The advertiser tab opens inside the user’s tap on Claim, which happens within the SDK’s own sheet, so popup blockers have nothing to catch. Present offers from whatever moment makes sense in your app. reset()does not revoke anything. It clears local SDK state and generates a fresh anonymous id. Claims already recorded belong to the user id they were made under.
Related
show(): the fullShowResultcontract.placement(): thePlacementOptionscontract, includingheadlineandsubheadline.- Updating to 2.x: moving off the two-phase flow.
- Reduce Churn at the Paywall · Post-Purchase Placements: the two use cases end to end.