Skip to content

Standard events

Standard events are the vocabulary apps are built against. Your site writes each event once, and every installed app receives the same payload and transforms it for its own destination. Adding a destination is a change in the Blotout platform, never a change in your tracking code, and when a destination changes its format the app handles it for you.

Event names are free-form: track accepts any non-empty string. The eleven events on this page are a convention, not a validation. Sending one of them is what lets an app recognise the event without per-site configuration. Your own event name is fine too, but only an app that knows it will do anything with it.

Every parameter below is optional unless its table marks it required. You can add properties of your own next to the standard ones; an app that does not know a property ignores it.

Each event can be sent from four places. The payload is the same in all four, so every example on this page has a tab per surface. Pick one tab and the whole page follows.

The snippet from your site’s Snippet page in the Blotout platform binds window.qinto. Call it from any script on the page. A call made before the tag has loaded is queued and sent in order once the connection is open.

<script>
qinto.track('AddToCart', { currency: 'USD', value: 10.5 })
</script>

The tag records PageView for you. See Browser for the snippet and its options.

track returns the event id. When the payload carries a non-empty orderId, that is the event id, so a purchase you send from both the page and your backend carries one id and destinations deduplicate it. Otherwise the SDKs mint one, and you can pass your own through the options argument when the id has to match a record in your own system. A supplied id always wins.

Delivery and recording are two different things, and the difference matters when you debug an app:

  • Delivery. A track that survives the transform chain is delivered to every eligible app. An app’s transform hook can drop it, in which case nothing downstream sees it, or replace its payload. Consent decides which apps are eligible, and an app never receives an event it emitted itself.
  • Recording. The identity graph records an event as a conversion only when it carries a finite numeric value and a non-empty orderId. Of the eleven events, only Purchase does. The orderId is the dedupe key, so a retried Purchase with the same order id records once.

The other ten create no conversion row. A server-side track whose identifier resolves to a known email or phone still updates that profile. An event with neither a conversion nor an identifier is delivery-only: apps see it, the graph does not change.

A page was viewed. Takes no parameters.

qinto.track('PageView')

A visit to a page you care about, such as a product or landing page.

Name Type Required Description
currency string No The currency for the value specified
value number No A numeric value associated with this event
contents Content[] No The products or items related to this event
qinto.track('ViewContent', {
currency: 'USD',
value: 10.5,
contents: [
{
id: '123123123',
quantity: 1,
value: 10.5,
title: 'Summer Fun',
category: 'bracelets',
image: 'https://mysite.com/product/fun-main.jpg',
url: 'https://mysite.com/summer-fun'
}
]
})

A product was added to the shopping cart.

Name Type Required Description
currency string Yes The currency for the value specified
value number Yes A numeric value associated with this event
contents Content[] No The products or items related to this event
checkoutUrl string No URL of the checkout page
qinto.track('AddToCart', {
currency: 'USD',
value: 10.5,
checkoutUrl: 'https://www.example.com/path/to/checkout',
contents: [
{
id: '123123123',
quantity: 1,
value: 10.5,
title: 'Summer Fun',
category: 'bracelets',
image: 'https://mysite.com/product/fun-main.jpg',
url: 'https://mysite.com/summer-fun'
}
]
})

A product was removed from the shopping cart. Same parameters as AddToCart.

Name Type Required Description
currency string Yes The currency for the value specified
value number Yes A numeric value associated with this event
contents Content[] No The products or items related to this event
checkoutUrl string No URL of the checkout page
qinto.track('RemoveFromCart', {
currency: 'USD',
value: 10.5,
checkoutUrl: 'https://www.example.com/path/to/checkout',
contents: [
{
id: '123123123',
quantity: 1,
value: 10.5,
title: 'Summer Fun',
category: 'bracelets',
image: 'https://mysite.com/product/fun-main.jpg',
url: 'https://mysite.com/summer-fun'
}
]
})

A person entered the checkout flow, before completing it.

Name Type Required Description
currency string Yes The currency for the value specified
value number Yes A numeric value associated with this event
contents Content[] No The products or items related to this event
checkoutUrl string No URL of the checkout page
qinto.track('InitiateCheckout', {
currency: 'USD',
value: 20.5,
checkoutUrl: 'https://www.example.com/path/to/checkout',
contents: [
{
id: '123123123',
quantity: 1,
value: 10.5,
title: 'Summer Fun',
category: 'bracelets',
image: 'https://mysite.com/product/fun-main.jpg',
url: 'https://mysite.com/summer-fun'
},
{
id: '4423434343',
quantity: 2,
value: 5,
title: 'Summer Shorts',
category: 'shorts',
image: 'https://mysite.com/product/shorts-main.jpg',
url: 'https://mysite.com/summer-shorts'
}
]
})

The person submitted their shipping information.

Name Type Required Description
currency string No The currency for the value specified
value number No A numeric value associated with this event
contents Content[] No The products or items related to this event
qinto.track('AddShippingInfo', {
currency: 'USD',
value: 20.5,
contents: [
{
id: '123123123',
quantity: 1,
value: 10.5,
title: 'Summer Fun',
category: 'bracelets',
image: 'https://mysite.com/product/fun-main.jpg',
url: 'https://mysite.com/summer-fun'
},
{
id: '4423434343',
quantity: 2,
value: 5,
title: 'Summer Shorts',
category: 'shorts',
image: 'https://mysite.com/product/shorts-main.jpg',
url: 'https://mysite.com/summer-shorts'
}
]
})

Payment information was added in the checkout flow.

Name Type Required Description
currency string No The currency for the value specified
value number No A numeric value associated with this event
contents Content[] No The products or items related to this event
qinto.track('AddPaymentInfo', {
currency: 'USD',
value: 20.5,
contents: [
{
id: '123123123',
quantity: 1,
value: 10.5,
title: 'Summer Fun',
category: 'bracelets',
image: 'https://mysite.com/product/fun-main.jpg',
url: 'https://mysite.com/summer-fun'
},
{
id: '4423434343',
quantity: 2,
value: 5,
title: 'Summer Shorts',
category: 'shorts',
image: 'https://mysite.com/product/shorts-main.jpg',
url: 'https://mysite.com/summer-shorts'
}
]
})

A purchase was made, or the checkout flow completed. This is the only standard event the identity graph records as a conversion.

Name Type Required Description
currency string Yes The currency for the value specified
value number Yes A numeric value associated with this event
orderId string Yes The order ID for the transaction, and the conversion dedupe key
contents Content[] No The products or items related to this event
discounts Discount[] No The discount codes used for the transaction
grossValue number No The gross value, for destinations configured to use it
taxCost number No The tax cost, used to calculate net value if configured
shippingCost number No The shipping cost, used to calculate net value if configured

The event id is the orderId, so a purchase you also send from another system carries the same id in both places and destinations deduplicate across them. Over HTTP you set eventId yourself, so pass the order id there.

qinto.track('Purchase', {
currency: 'USD',
value: 20.5,
orderId: '190315',
discounts: [
{ code: 'OFF20', value: '20', type: 'PERCENTAGE' },
{ code: 'BONUS150', value: '150', type: 'FLAT' }
],
contents: [
{
id: '123123123',
quantity: 1,
value: 10.5,
title: 'Summer Fun',
category: 'bracelets',
image: 'https://mysite.com/product/fun-main.jpg',
url: 'https://mysite.com/summer-fun'
},
{
id: '4423434343',
quantity: 2,
value: 5,
title: 'Summer Shorts',
category: 'shorts',
image: 'https://mysite.com/product/shorts-main.jpg',
url: 'https://mysite.com/summer-shorts'
}
]
})

A person applied to start a paid subscription.

Name Type Required Description
currency string No The currency for the value specified
value number No A numeric value associated with this event
sourceId string No The unique identifier of the sign-up source
qinto.track('Subscribe', { sourceId: 'Email', currency: 'USD', value: 49.99 })

A search was made.

Name Type Required Description
currency string No The currency for the value specified
value number No A numeric value associated with this event
search string No The search query the person entered
contents Content[] No The products or items related to this event
qinto.track('Search', {
currency: 'USD',
value: 10.5,
search: 'summer',
contents: [
{
id: '123123123',
quantity: 1,
value: 10.5,
title: 'Summer Fun',
category: 'bracelets',
image: 'https://mysite.com/product/fun-main.jpg',
url: 'https://mysite.com/summer-fun'
}
]
})

A sign-up was completed. name and category are flat strings here, not a contents entry.

Name Type Required Description
currency string No The currency for the value specified
value number No A numeric value associated with this event
name string No Title of the product or page
category string No Category of the item
qinto.track('Lead', {
category: 'offers',
name: 'Special Offer',
currency: 'USD',
value: 49.99
})

One line item, in the contents array.

Name Type Required Description
id string Yes ID of the item, such as the product ID
quantity number Yes Quantity of the item
value number Yes Final price per unit, not the line total
variantId string No Variation ID of the item, when a destination keys on it
sku string No SKU of the item, when a destination keys on it
title string No Title of the item
description string No Product description for the item
category string No Category of the item; comma separated for several
brand string No Brand of the item
type product | product_group No Type of the item
image string No Image URL of the item
url string No URL of the item

value is the price of one unit. A line of two shorts at 5 each is { quantity: 2, value: 5 }, and the event’s own value carries the total.

A discount code, in the discounts array on Purchase.

Name Type Required Description
code string Yes The discount code that was applied
type FLAT | PERCENTAGE No Whether the discount is a flat amount or a percentage
value string No The value applied for that code

Discount.value is a string, unlike the event-level value.

The vocabulary is EdgeTag’s, so a site moving from EdgeTag keeps its event names and almost all of its payloads. What differs:

  • edgetag('tag', …) is qinto.track(…). Same arguments, same position for the payload.
  • Content.item_price is Content.value. Same meaning, the final price per unit, spelled the same way as the event-level amount.
  • The conversion key is orderId, which is also what EdgeTag’s Purchase calls it. Qinto has no transactionId.
  • source is set by the platform, never by the caller. Apps read it from the action.
  • Offline and replay state live in a server event’s observed field. Browser actions carry neither, because the browser transport does not replay accepted actions.