Event reference
Everything Qubix sees about a visitor lands in one stream of events: the click from an ad, the page that was shown, the install, the push notification, the conversion posted back by an affiliate network. Scripts read that stream, and so do the funnel and the reports.
This page lists the kinds of events, what each one carries, and the traps worth knowing before you count anything.
See your own events first
Names below are the ones this product writes, but which of them appear depends on what you run. Ask your own data:
function main() {
const kinds = sql`
SELECT event, count() AS n, max(event_time) AS last_seen
FROM qubix_events
WHERE event_time > now() - INTERVAL 30 DAY
GROUP BY event
ORDER BY n DESC`
for (const k of kinds) console.log(k.event, k.n, k.last_seen)
}
You may see names that are not in the tables below — test traffic, scanners probing your domains, or events from a newer version than this page. Treat an unknown name as unknown; do not guess it into a funnel.
Traffic
| Event | What it means | Carries |
|---|---|---|
campaign_visit | A visitor arrived from an ad — the top of the funnel, one per click. | The full landing address with every marker the source put in it; campaign; geo; the ad, when the link carried one. |
render | A page was shown to the visitor. | The address, the PWA, geo. |
white_page | The cloak served the safe page instead of the offer. | The address, campaign, geo. |
campaign_visit_sdk | The same arrival, reported by the SDK from someone else's site rather than by our own redirect. | Campaign; markers as the SDK sent them. |
campaign_visit is the top of the funnel. render and white_page describe what was shown, and
one visitor produces several of them. Counting clicks means counting campaign_visit.
Installs and launches
| Event | What it means | Carries |
|---|---|---|
installed | The PWA was installed. | PWA, campaign, offer, ad, geo, the address. |
install_accepted | The install was accepted — written alongside installed. | The same set. |
install_blocked | The install did not happen: conditions did not let it through. | The same set. |
install_rejected | The visitor declined the install prompt. | The same set. |
install_ios | The install path for iPhone, which differs from the others. | The same set. |
install_fallback_redirect | The install was impossible, so the visitor was sent onward to the offer. | The same set. |
install_fallback_stay | The install was impossible and the visitor stayed on the page. | PWA, offer. |
launch_pwa | The installed app was opened. | PWA, campaign, offer, geo. |
render_pwa_launch | The launch screen of the installed app was drawn. | PWA, geo, the address. |
installed and install_accepted come in pairsThey are written for the same install, so counting both doubles your installs. Pick one — installed —
and use it everywhere. This is the single most common way an event-based funnel goes wrong.
Push notifications
Two different families share the push_ prefix, and mixing them is a mistake.
The subscription — what happened on the storefront. These carry the campaign, the offer and the ad, because they belong to the traffic that brought the visitor:
| Event | What it means |
|---|---|
push_prompt_shown | The visitor was asked for permission to send notifications. |
push_allow | Permission granted. |
push_deny | Permission refused. |
push_ignored | The prompt was neither accepted nor refused. |
push_subscribe | The subscription was registered and can now be sent to. |
The delivery — what happened to a sent campaign. These carry the push campaign instead:
| Event | What it means |
|---|---|
push_sent | The notification was handed over for delivery. |
push_shown | It was displayed on the device. |
push_click | The visitor tapped it and came back. |
push_dismiss | The visitor swiped it away. |
push_expired | It was not delivered before its lifetime ran out. |
push_failed | Delivery failed. |
So the conversion of a push campaign is push_click against push_sent, while the quality of your
storefront is push_allow against push_prompt_shown. Neither ratio makes sense across the two
families.
Conversions
| Event | What it means | Carries |
|---|---|---|
reg | A registration, reported by an affiliate network. | Status as the network sent it, currency, offer, ad, geo, and the network's original request. |
dep | A deposit. | The same, plus the amount and its currency. |
Both arrive from outside — from the network's postback — so they know the visitor (piuid), but
they do not carry the marker your traffic source put in the link. That marker arrived earlier,
on campaign_visit. Sending events to your source shows how the two are tied
together.
Postback diagnostics
These are not conversions. They are records of postbacks that could not be turned into one, kept so that a missing conversion can be investigated from a screen instead of a log:
| Event | What it means |
|---|---|
postback_no_subid | The request carried no identifier, so it could not be attached to any visitor. |
postback_unmatched_status | The status was not recognised. |
postback_duplicate_suppressed | A repeat of a conversion already counted. |
postback_stale_hash | The request arrived at an address that has since changed. |
Never count these as conversions — filter your queries by the event name explicitly rather than taking everything that came from a network.
Behaviour on the page
| Event | What it means |
|---|---|
exit_intent | The visitor was about to leave the page. |
idle_redirect | The visitor was sent onward after a period of inactivity. |
open | The app or page was opened. |
offer_refresh_denied | A request to re-issue the offer link was refused. |
Fields of an event
Not every field is filled for every kind — an install has no status, a push delivery has no offer. What is worth knowing:
| Field | What it is |
|---|---|
event_time | When it happened. |
event | The kind, from the tables above. |
piuid | The visitor identifier. Present on everything and the key that ties a journey together. |
url | The full raw address of the request, with every parameter the source sent. |
params['name'] | Any parameter of that address, already parsed out. |
sub_id_1 … sub_id_16, click_id, external_id | The common markers, lifted into columns of their own. |
status, revenue, currency | Filled on conversions. |
country, city, language, device, ua, ip | Who and from where. |
campaign_id, offer_id, ad_id, pwa_id, domain | What the traffic belongs to. |
push_campaign_id | Which push campaign — the delivery family only. |
extra | Everything else the source of the event chose to record. |