Skip to content

A started session went idle

POST

When a started session has been idle for 30 minutes: the answers so far and the last page, no outcomes.

Media typeapplication/json
WebhookEvent_WebhookSessionSummary_
object
api_version
Api Version

The payload version

string
default: v1
Allowed value: v1
created
required
Created

When the event happened

string format: date-time
data
required
WebhookData_WebhookSessionSummary_

The event’s object

object
object
required
WebhookSessionSummary

The topic’s object

object
answered_count
required
Answered Count

How many components answers holds

integer
answers
required
Answers

The session’s answers keyed by component_key; a component on two pages holds its last answer. Email and phone answers only on endpoints with include_pii

object
key
additional properties
WebhookAnswer
object
kind
required
Kind

What kind of answer this is

string
Allowed values: choice image text email phone number date other
label
required
Label

The question as the quiz labels it

string
option_ids
required
Option Ids

The chosen options’ ids; empty for a typed answer

Array<string>
page_key
required
Page Key

The page the component is on

string
value
required
Value

The answer as stored: an option id or the typed text, a JSON number for a number, a {date, time} object for a date

values
required
Values

The answer as the shopper saw it: option labels, or the typed value as text

Array<string>
arm_id
Any of:
string
/^arm_[0-9a-f]{32}$/
channel
required
Channel

How the shopper arrived: direct | organic_search | paid_search | organic_social | paid_social | email | sms | affiliate | display | paid_other | referral | ai_assistant | other | shared_results

string
country
required
Any of:
string
device
required
WebhookDevice

The device as parsed from the session’s user agent when it opened

object
browser
required
Any of:
string
browser_version
required
Any of:
string
class
required
Class

Mobile | tablet | desktop

string
family
required
Any of:
string
model
required
Any of:
string
os
required
Any of:
string
os_version
required
Any of:
string
vendor
required
Any of:
string
ended_at
required
Any of:
string format: date-time
experiment_id
Any of:
string
/^expt_[0-9a-f]{32}$/
id
required
Id

The session’s id, the same session_id the profiles API shows

string
/^sess_[0-9a-f]{32}$/
identities
Any of:
Array<object>
ProfileIdentity
object
consent
required
Consent

True only when the shopper ticked the marketing-consent box on their newest run that showed it; anything else, including a skipped page or a quiz without the box, is false

boolean
first_seen_at
required
Any of:
string format: date-time
kind
required
Kind

Email | phone | shopify_customer_id. A new kind may be added, so skip one you do not know. shopify_customer_id arrives when the shopper takes a quiz logged in to the store or places an order linked to a quiz session; its consent is always false

string
last_seen_at
required
Any of:
string format: date-time
value
required
Value

The email (lowercase), the phone (E.164), or the Shopify customer as a gid://shopify/Customer/ GID

string
last_page
required
Any of:
string
page_url
required
Any of:
string
quiz_id
required
Quiz Id

The quiz the session ran

string
/^quiz_[0-9a-f]{32}$/
quiz_name
required
Any of:
string
source_kind
required
Any of:
string
source_session_id
required
Any of:
string
/^sess_[0-9a-f]{32}$/
started_at
required
Started At

When the session opened

string format: date-time
utm_campaign
required
Any of:
string
utm_content
required
Any of:
string
utm_medium
required
Any of:
string
utm_source
required
Any of:
string
utm_term
required
Any of:
string
version_id
required
Any of:
string
/^ver_[0-9a-f]{32}$/
version_number
required
Any of:
integer
visitor_id
required
Visitor Id

The shopper’s browser: the persistent visitor, or a visitor of this session only until analytics consent is given

string
/^vis_[0-9a-f]{32}$/
id
required
Id

The event id, also sent as the webhook-id header; deduplicate on it

string
/^evt_[0-9a-f]{32}$/
type
required
Type

The topic: quiz.started | quiz.finished | quiz.abandoned | identity.captured | quiz.published | experiment.started | experiment.ended | profile.created | profile.updated | export.completed | webhook.endpoint.disabled | ping

string

Any 2xx within 10 seconds acknowledges the event

410 ends the delivery and disables the endpoint; any other 4xx but 408 and 429 ends it

Retried, as are 408, 429, a timeout and a network error: seven retries over about 28 hours, then the delivery is dead