Before You Start
Ensure you have:- Installed the SDK (see Installation)
- Configured the provider (see Configuration)
- Created an experience in your Fanfare dashboard
Using the Experience Journey
The recommended way to implement any experience is using theuseExperienceJourney hook. This hook manages the entire customer journey through your experience, handling:
- Session creation and restoration
- Sequence routing (general admission, VIP, etc.)
- Distribution entry (queue, draw, auction, or timed release)
- Public journey state updates and admission notifications
Public Journey States
UseJourneyView first when building UI. It exposes only the actions that are valid for the current public state.
| State | Description |
|---|---|
ready | The journey exists and can be started |
routing | Fanfare is resolving the consumer’s current public path |
gated | The consumer must complete authentication, an access code, or another public requirement |
routed.scheduled | A matching sequence exists but is not active yet |
routed.waitlist | The consumer is on the waitlist |
routed.enterable | The consumer can enter, book, bid, or otherwise participate |
routed.participating | The consumer is already participating |
routed.granted | The consumer has access to continue to checkout or the next app step |
routed.ended | The sequence has a terminal outcome |
routed.unavailable | No public sequence is currently available |
Creating a Queue Experience
Queues are first-in-first-out waiting lines. Customers join and wait for their turn.Basic Queue Implementation
Using the Experience Widget
For the fastest implementation, use the supportedExperienceWidget. It renders the correct module for the routed distribution type and exposes slots when you need custom UI.
view.sequence.phase and view.sequence.mechanism decide which module appears.
Creating a Draw Experience
Draws randomly select winners from entrants. The same journey state model applies; only the participating and admitted UI copy changes.Creating an Auction Experience
Auction experiences expose auction-specific actions while the consumer is participating. Render those actions only when they are present on the current sequence view.Creating a Timed Release Experience
Timed releases expose a completion action once the consumer is participating. Keep the button tied to the state-gated action onview.sequence.
Handling Authentication
Some experiences require user authentication. The journey handles this automatically:Handling Access Codes
For VIP or restricted sequences, handle access code requirements:Waitlists for Upcoming Experiences
If an experience has not started yet, customers can join a waitlist:Best Practices
1. Always Handle All States
Ensure you handle all possible journey states to avoid blank screens:2. Persist the Admission Token
Always include the admission token when redirecting to checkout:3. Handle Token Expiration
Admission tokens expire. Check the expiration and handle accordingly:4. Provide Clear Feedback
Always show loading states and progress indicators:Next Steps
- Testing - Test your integration locally
- Deployment - Production deployment checklist
- SDK Reference - Complete API reference