PlacementController
Framework-agnostic placement lifecycle controller.
Encapsulates the same register → decide → impression-track → interact flow
that the React usePlacement() hook provides, but without any framework dependency.
Subscribe to state changes with onChange and read the current state
with state, or just await load() for a one-shot pattern.
Example
Section titled “Example”const ctrl = new PlacementController(sdk, { surfaceSlot: { id: 'upsell_banner' } });ctrl.onChange(() => updateUI(ctrl.state));await ctrl.load();Accessors
Section titled “Accessors”content
Section titled “content”Get Signature
Section titled “Get Signature”get content():
RevTurbineDecisionContent|null
Current resolved content, or null if no decision has been loaded.
Returns
Section titled “Returns”RevTurbineDecisionContent | null
decision
Section titled “decision”Get Signature
Section titled “Get Signature”get decision():
RevTurbinePlacementDecision|null
Current decision, or null if not yet loaded.
Returns
Section titled “Returns”RevTurbinePlacementDecision | null
placementId
Section titled “placementId”Get Signature
Section titled “Get Signature”get placementId():
string
Registered placement ID, or empty string before first load().
Returns
Section titled “Returns”string
Get Signature
Section titled “Get Signature”get state():
PlacementControllerState
Current state snapshot.
Returns
Section titled “Returns”visible
Section titled “visible”Get Signature
Section titled “Get Signature”get visible():
boolean
Convenience: true when the current decision says the placement is visible.
Returns
Section titled “Returns”boolean
Methods
Section titled “Methods”ctaClick()
Section titled “ctaClick()”ctaClick(
ctaTarget?):Promise<void>
Record a CTA click interaction.
Parameters
Section titled “Parameters”ctaTarget?
Section titled “ctaTarget?”string
Returns
Section titled “Returns”Promise<void>
ctaComplete()
Section titled “ctaComplete()”ctaComplete(
ctaTarget?):Promise<void>
Record a CTA completion interaction and hide the placement.
Parameters
Section titled “Parameters”ctaTarget?
Section titled “ctaTarget?”string
Returns
Section titled “Returns”Promise<void>
dismiss()
Section titled “dismiss()”dismiss(
cooldownMs?):Promise<void>
Record a dismiss interaction and hide the placement.
Parameters
Section titled “Parameters”cooldownMs?
Section titled “cooldownMs?”number = ...
Returns
Section titled “Returns”Promise<void>
load()
Section titled “load()”load():
Promise<RevTurbinePlacementDecision|null>
Register the placement (if needed) and fetch a decision.
When autoTrackImpression is true (default), a visible decision
automatically records an impression event.
Returns
Section titled “Returns”Promise<RevTurbinePlacementDecision | null>
onChange()
Section titled “onChange()”onChange(
listener): () =>void
Subscribe to state changes. Returns an unsubscribe function.
Parameters
Section titled “Parameters”listener
Section titled “listener”Returns
Section titled “Returns”() => void
Example
Section titled “Example”const unsub = ctrl.onChange(() => console.log(ctrl.state));// later...unsub();refresh()
Section titled “refresh()”refresh():
Promise<RevTurbinePlacementDecision|null>
Re-fetch the placement decision (clears impression tracking).
Returns
Section titled “Returns”Promise<RevTurbinePlacementDecision | null>
remindMeLater()
Section titled “remindMeLater()”remindMeLater(
seconds?):Promise<void>
Alias for snooze.
Parameters
Section titled “Parameters”seconds?
Section titled “seconds?”number = 3600
Returns
Section titled “Returns”Promise<void>
reset()
Section titled “reset()”reset():
void
Reset the controller state (clears decision, placement ID, etc.).
Returns
Section titled “Returns”void
snooze()
Section titled “snooze()”snooze(
seconds?):Promise<void>
Record a snooze/remind-me-later interaction and hide the placement.
Parameters
Section titled “Parameters”seconds?
Section titled “seconds?”number = 3600
Returns
Section titled “Returns”Promise<void>