Connection
Where the Qinto worker answers. When this page is hosted on the same domain as the worker, that domain is the answer.
It is remembered for next time. Everything on this page goes through the tag this address serves at
/q.js — the page never speaks to the worker itself.
The snippet a site pastes
This one tag goes in your own site’s <head>. It buffers calls made before the tag lands, then loads
it. No method is named anywhere in it, so a method the tag gains later works without pasting anything again. The
last argument is the window name it binds — the Qinto platform hands you a different one for a white-labelled
domain. This page runs the buffering half and loads the tag from the address above, so pointing it at another
worker needs a fresh page — press Reload.
<script>
(function(w,d,u,g){if(g in w){var o=w[g];
if(!(o&&o._q))console.error("window."+g+" is already in use");return}
var t={_q:1,q:[]};
Object.defineProperty(w,g,{value:new Proxy(t,{get:function(o,n){
if(typeof n!="string"||n=="then"||n=="ready"||n=="config"||n in o)return o[n];
return o[n]=function(){var a=arguments;var p=new Promise(function(res,rej){o.q.push([n,a,res,rej])});p.catch(function(){});return p}}}),writable:true,enumerable:true,configurable:true});
var s=d.createElement("script");s.async=true;s.src=u;s.dataset.qintoGlobal=g;
d.head.appendChild(s)})(window,document,"https://qinto.example.com/q.js","qinto");
</script>
How this works
- Load the tag — it opens a connection, and the worker creates an anonymous profile for this browser and stores a visitor ID in a secure cookie.
- Say who they are —
qinto.identifywith an email, a phone number, or your own customer ID turns that anonymous browser into a person profile. - Send events and consent —
qinto.trackandqinto.consentland on that person and follow them to their other devices.
The guided run loads the tag, views a page, invents a person, buys something, saves consent, and reads the consent back — about ten seconds end to end.
Good to know
-
The visitor cookie is deliberately unreadable by this page — call
qinto.getSession()to ask the worker for the anonymous ID, and for the person ID once an identifier has linked one. - Every method returns a promise. Press “Send event” before loading the tag and watch the snippet hold the call until the tag lands, then send it.
-
A worker with page-load capture switched on sends its own
PageViewas soon as the tag connects. That one comes from the tag, not from this page, so it appears in the worker’s logs but not in the activity list. - To arrive as a brand-new visitor, open this page in a private window.
- Sending the same email from two browsers links both to one person — that is the point of the graph.
- Everything you send is real. Point this at a test deployment, not one carrying live customer data.
Standard events
The eleven names every Qinto app is built against. Pick one and its documented payload lands in the box below,
ready to edit before you send it. All of them reach a site’s apps; only Purchase is also recorded as a
conversion, because it carries an amount and an order number. That orderId is both the conversion
dedupe key and the event id destinations deduplicate on, so change it before you send a second purchase.
Send it
Any name is accepted; the eleven above are the ones an app recognises without being configured for your site.
eventId is an option rather than a property, so one written in the box is lifted into the options
argument for you. None of the eleven needs one.
Say who the visitor is
An email address or phone number turns the anonymous browser profile into a person profile — the record that follows this person across their devices. Leave anything blank that you do not want to send.
How to reach them
Name
Where they are
Where they came from
Sending this person also sends whatever custom properties are listed below.
Custom properties
Anything the graph does not know by name is kept as your own property on the person — a plan, a loyalty tier, a
lifetime value. Values that look like a number or true/false are sent as such; write null to remove a
property that is already stored.
Link another ID
Attach an extra identifier — a loyalty number, a CRM ID, a second email. Anything sent later with that ID lands on this same person.
What this person agreed to
Consent is remembered per person, so it follows them to their other devices. “Strictly necessary” is always on and cannot be switched off.
Individual apps (optional)
Record a decision for a single named app, on top of the categories above. Name any app you like.
Call a method by hand
Every button on this page ends up here: a method on window.qinto. Write the arguments as a JSON array —
qinto.track('AddToCart', { currency: 'USD', value: 10.5 }) is
["AddToCart", { "currency": "USD", "value": 10.5 }]. What you send is validated strictly, so unknown
fields come back as an error.
Read data back over HTTP
The tag does not cover these — they are the token-authenticated HTTP surface, so this page calls them directly. They
need a worker access token from the Qinto platform; without one the worker answers unauthenticated —
itself a valid thing to see here. The visitor is taken from the cookie the tag set when it connected.
Kept for this browser tab only and forgotten when you close it — the platform shows a token once, so this page never writes it to long-term storage.