Why Sessions Matter
In e-commerce, understanding the customer journey transformed how businesses operate. Companies like Amazon don’t just track what you buy—they track every click, every search, every item you lingered on. This data powers personalization, recommendation engines, and targeted marketing that drives billions in revenue. EveryBite brings this same approach to dining—but with a critical difference. Traditional loyalty identifies guests after they purchase. EveryBite identifies them before they browse. Sessions are how we understand the guest across every touchpoint—your mobile app, your website, your kiosk, your POS, even voice ordering. When a guest opens your app on Monday, browses your kiosk on Wednesday, and orders through your website on Friday, sessions link all of that behavior into a unified profile. But we go further. When you create a session, we don’t just return a session ID—we return real-time intelligence about who this guest is:- Identity — Is this a known guest? A returning visitor? A loyalty member?
- Segments — What are their dietary needs, preferences, and behavioral patterns?
- History — What have they ordered before? What do they customize? What’s their average spend?
- Recommendations — What should you show them first?
- Instant Personalization — Show relevant dishes from the first screen, not after login
- Real-time Segmentation — Know their segments before they place an order
- Predictive Insights — Anticipate what a guest wants before they search
- Loyalty Enrichment — Feed behavioral data into your CRM in real-time
- Cross-platform Continuity — Recognize the same guest across app, web, kiosk, and more
sessionId that binds this context to the request. Just include X-Session-ID in your headers, and we handle the rest.
What Sessions Capture
Each session captures context from the touchpoint and links it to everything else we know about this guest:| Context | What It Tells Us |
|---|---|
| Platform | Where is this guest interacting? iOS, Android, web, kiosk, POS, voice? |
| Chain & Location | Which restaurant and location are they browsing? |
| Guest Identity | Guest (inferred from device) or authenticated (known via Passport)? |
| Session Behavior | What are they searching for? What filters do they apply? What do they click? |
| Historical Patterns | How does this session connect to their past behavior across all platforms? |
| Enriched Data | What do loyalty data and industry trends tell us about guests like this? |
Session Lifecycle
Starting a Session
Initialize a session when a guest begins browsing. Pass the chain, platform, and guest context—we generate a unique session ID and return real-time GuestIQ intelligence:Example Response
Example Response
GuestIQ is optional but powerful. If you don’t need real-time intelligence, simply omit the
guestiq fields from your query. But if you want to personalize from the first screen, it’s all there waiting for you.sessionId is a UUID we generate—guaranteed unique across all sessions. Store it and include it in your headers for all subsequent API calls:
Using Sessions in Queries
Once you’ve configured your headers, your GraphQL queries are clean—just the data you want:Example Response
Example Response
Guest vs Authenticated Sessions
Sessions work differently depending on whether the user is authenticated:Guest Sessions
No Passport token provided
- Sessions tracked by device/browser fingerprint
- Multiple sessions compiled into inferred profile
- Behavioral patterns used for personalization
- Limited cross-device continuity
Authenticated Sessions
Passport token provided
- Sessions tied to verified user identity
- Complete history preserved
- Cross-device continuity
- Loyalty program integration
Guest Session Intelligence
Even without authentication, we compile sessions to understand guest patterns:Authenticated Session Benefits
When you includepassportId in startSession, the session unlocks additional capabilities. Your queries stay the same—the personalization comes from the session context:
Example Response
Example Response
Runtime Headers
Once you have a session, your runtime API calls only need three headers:| Header | Required | Description |
|---|---|---|
Authorization | Yes | Your API key |
Content-Type | Yes | application/json |
X-Session-ID | Yes | Session identifier from startSession |
Why so simple? You passed all the context when you created the session. Now every API call just needs the session ID—we handle the rest.
When to Start a New Session
Start a new session when:- User opens your app/website
- User begins a new ordering flow
- Previous session has timed out (30 minutes inactivity)
- User switches to a different restaurant chain
Best Practices
One Session Per Flow
Start a new session when the user begins ordering, not on every page view.
Persist Guest ID
Store the guest ID locally and reuse it across sessions for better personalization.
Handle Timeout Gracefully
If a session expires, start a new one transparently - don’t interrupt the user.
Include Location When Known
Pass
restaurantId if the user has selected a specific location for better analytics.
