Skip to content

A shopper finished a quiz

POST

About a minute after the session completes, with the answers, outcomes and products shown through that minute, and identities on endpoints with include_pii.

Media typeapplication/json
WebhookEvent_WebhookSession_
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_WebhookSession_

The event’s object

object
object
required
WebhookSession

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
completed_at
required
Any of:
string format: date-time
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}$/
formulas
required
Formulas

The formula values the quiz computed

Array<object>
ProfileFormula
object
component_key
required
Component Key

The formula or value table

string
kind
Kind

A formula’s number, or the value a value table resolved

string
default: formula
Allowed values: formula table
label
required
Label

Its label

string
page_key
required
Page Key

The page the formula or value table is on

string
value
required
Any of:
number
value_text
Any of:
string
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
points
required
Points

The points per dimension the quiz computed

Array<object>
ProfilePoints
object
dimension_id
required
Dimension Id

The points dimension

string
name
required
Name

Its name

string
total
required
Total

The points the session scored on it

number
products_shown
required
Products Shown

Every product the session showed; on quiz.finished those shown within a minute of completion

Array<object>
WebhookProduct
object
block_key
required
Block Key

The product block that showed it

string
currency
required
Any of:
string
handle
required
Any of:
string
image
required
Any of:
string
page_key
required
Page Key

The page of that block

string
position
required
Any of:
integer
price
required
Any of:
number
product_id
required
Product Id

The product’s Shopify GID

string
source
required
Source

How the block picked it: manual | rankings | points | smart

string
title
required
Any of:
string
variant_id
required
Any of:
string
variant_title
required
Any of:
string
property_mappings
required
Property Mappings

The quiz’s enabled question-to-property mappings for integrations; contact questions only on endpoints with include_pii

Array<object>
WebhookPropertyMapping
object
option_values
required
Any of:
object
key
additional properties
string
property_name
required
Property Name

The profile property the answer is written to

string
question_key
required
Question Key

The question’s component_key

string
question_label
required
Question Label

The question as the quiz labels it

string
quiz_id
required
Quiz Id

The quiz the session ran

string
/^quiz_[0-9a-f]{32}$/
quiz_name
required
Any of:
string
results_url
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
terminal_page
required
Any of:
ProfileResultPage
object
page_count
required
Any of:
integer
page_key
required
Page Key

The result page

string
position
required
Any of:
integer
shown_products
required
Shown Products

The products it showed

Array<object>
ProfileShownProduct
object
block_key
required
Block Key

The product block that showed it

string
currency
required
Any of:
string
handle
required
Any of:
string
image
required
Any of:
string
price
required
Any of:
number
product_id
required
Product Id

The product’s Shopify GID

string
title
required
Any of:
string
variant_id
required
Any of:
string
variant_title
required
Any of:
string
title
required
Any of:
string
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