Materials Explorer (static view) — every material and field.
The interactive view needs JavaScript (in a JS-capable browser this list is hidden and the
interactive UI is shown instead). If you are reading this from an AI, MCP client or agent,
use the machine-readable source instead: /wp-json/qa-platform/guide or
for-ai/materials.yaml.
Raw data for every pageview. Behavioral signals such as deep read, exit position and rage clicks sit on the same row.
tracking_id "all" (cross-site aggregate): supported
Identifiers used for joins and filtering. You normally filter on resolved columns such as url or device_type instead.
pv_id [uint32] [join] — Pageview identifier. Join key against click_event and others.session_id [uint64] [join] — Filter by session. Fast via the column DB binary scan.reader_id [uint32] [join] — Filter by user. Usually combined with url or similar.page_id [uint32] [join] — Per page. You normally filter on url and use page_id as the join key.device_id [uint8] — Device ID. 1=PC, 2=tablet, 3=SP. The label is device_type.source_id [uint32] — Source ID. The label is utm_source.medium_id [uint32] — Medium ID. The label is utm_medium.campaign_id [uint32] — Campaign ID. The label is utm_campaign.content_id [uint32] — Content ID. The label is utm_content.version_id [uint32] — Page version ID. Used for A/B and version comparison.prev_page_id [uint32] [since 2026-04-17] — Previous page ID. 0 selects landing pageviews.next_page_id [uint32] [since 2026-04-17] — Next page ID. 0 selects exit pageviews.Basic browsing metrics. Range filters work here (browse_sec gte:30, for example).
access_time [uint32] — UNIX time. Normally handled for you by the period parameters. You can also filter by time of day.month [since 2026-08-05] — Month the row belongs to (YYYY-MM). A virtual column derived from access_time on the site clock. Put it in keep to aggregate by month, which is the only way to build a monthly trend. Narrow the period with time instead; filtering on this column runs as a slow post_filter.pv [uint16] — Pageview number within the session (1 = landing).speed_msec [uint16] — Load speed in ms. Lets you pull pageviews that took 3 seconds or more.browse_sec [uint16] — Time on page, in seconds.is_last [uint8] — Last pageview of the session (0/1). For finding exit pages.is_newuser [uint8] — New user (0/1).Per-pageview scroll reach, deep read and where the reader stopped.
depth_position [uint8] [✦] — Deepest scroll reach, 0-100%. gte:80 means read to the bottom, lte:20 means left near the top.deep_read [uint8] [✦] — Deep-read flag. 1 when there are 5 or more spots held for 3 seconds or longer.stop_max_sec [uint16] — Longest pause, in seconds. The spot the reader stayed on longest.stop_max_pos [uint8] — Position of the longest pause, 0-100%. Goes with stop_max_sec.exit_pos [uint8] [✦] — Exit position, 0-100%. lte:30 means the reader left within the first screen.Rage clicks, dead clicks and form submits. Signals of friction with the UI.
irritation_click_count [uint8] [✦] — Number of rage-click bursts: 5 or more clicks within 3 seconds. gte:1 means friction with the UI.dead_click_image_count [uint8] [✦] — Clicks on images that carry no link. gte:1 means a missed opportunity.is_submit [uint8] — Form submit fired (0/1). Observed from the native submit event, including submits via Enter. For form CVR.Re-reading, skimming and hesitant mouse movement. Measures how well navigation works.
scroll_back_count [uint8] [✦] — Times the reader jumped back up 1000px or more within 3 seconds, i.e. re-reading.content_skip_count [uint8] [✦] — Times the reader skipped down 1000px or more, i.e. content that went unread.exploration_count [uint8] [✦] — Times the mouse swept back and forth horizontally, i.e. hunting for something to click.Whether scroll / click / event raw data exists for that pageview (as a count). neq:0 finds heatmap-eligible pageviews from the column DB alone.
is_raw_p [uint8] [since 2026-07-09] — Count of scroll raw data (raw_p) held, 0/1/2 and up. neq:0 selects heatmap-eligible pageviews.is_raw_c [uint8] [since 2026-07-09] — Count of click raw data (raw_c) held, 0/1/2 and up. neq:0 selects pageviews eligible for a click heatmap.is_raw_e [uint8] [since 2026-07-09] — Count of event raw data (raw_e) held, 0/1/2 and up. neq:0 selects pageviews with recorded events.Actual visible area. Useful for segmenting by responsive breakpoint.
window_inner_width [uint16] — innerWidth in px. between:768,1199 for the tablet band, gte:1200 for the desktop band.window_inner_height [uint16] — innerHeight in px.Which page came before and after. For path analysis.
prev_url [since 2026-04-17] — URL of the previous page. null on landing pageviews.prev_title [since 2026-04-17] — Title of the previous page.next_url [since 2026-04-17] — URL of the next page. null on exit pageviews.next_title [since 2026-04-17] — Title of the next page.Where the visit came from.
url — Page URL. Exact matches are fast via url_hash.title — Page title. More efficient to filter on url and keep this.source_domain — Referring domain. Indexed, so fast.referrer — Referrer.utm_source — Source.utm_medium — Medium. Unique index, so fast.utm_campaign — Campaign. Unique index, so fast.utm_content — Content.utm_term — Search term (utm).Device, OS, language and country.
device_type — One of three values: PC / SP / tablet. Case matters.os — OS (UAos). Indexed, so fast.browser — Browser (UAbrowser).language — Language.country_code — Country code, roughly 200 values. Indexed, so fast.ua — Composed UA string. Filtering on it directly is discouraged; use os and browser instead.original_id — Original ID. Indexed, so fast.Page kind, classified automatically (generated column). Filter directly on is_*.
page_type — Page type as a bit flag. Filtering on is_* is normally more efficient.page_fetch_status — HTML fetch status. 1 = success, -1 = failure.is_article — Article (0/1).is_product — Product (0/1).is_list — Listing (0/1).is_form — Form (0/1).is_trust_info — Trust information (0/1).is_faq — FAQ (0/1).is_landing — Landing (0/1).is_search — Search results (0/1).is_account — Account (0/1).is_cart — Cart (0/1).is_checkout — Checkout (0/1).is_confirm — Confirmation (0/1).is_thanks — Thank-you (0/1).is_top_page — Top page (0/1).is_event — Event (0/1).is_recipe — Recipe (0/1).is_job — Job posting (0/1).is_video — Video (0/1).is_howto — How-to (0/1).is_qa_forum — Q&A forum (0/1).Whether each configured goal was met. The definitions live in sites[].goals in /guide.
is_goal_1 [uint8] — Goal 1 met (0/1).is_goal_2 [uint8] — Goal 2 met (0/1).is_goal_3 [uint8] — Goal 3 met (0/1).is_goal_4 [uint8] — Goal 4 met (0/1).is_goal_5 [uint8] — Goal 5 met (0/1).is_goal_6 [uint8] — Goal 6 met (0/1).is_goal_7 [uint8] — Goal 7 met (0/1).is_goal_8 [uint8] — Goal 8 met (0/1).is_goal_9 [uint8] — Goal 9 met (0/1).is_goal_10 [uint8] — Goal 10 met (0/1).Raw data in which every click is stored automatically. Carries the selector and coordinates, and joins to the raw pageview log.
tracking_id "all" (cross-site aggregate): supported
Keys for joining to allpv.
pv_id [uint32] [join] — Which pageview the click happened on. Joins to allpv.session_id [uint64] [join] — Per session.page_id [uint32] [join] — Per page.What was pressed and when. event_sec tells you whether they read before clicking.
event_sec [uint16] [✦] — Seconds from page display to the click.element_text [uint32] — Text of the clicked element.selector [uint32] — CSS selector.to_url [uint32] — Destination URL.is_external [uint8] — External link (0/1).action_id [uint8] — What was clicked, as an observed fact. 1: click / 2: form (a click inside a form area) / 3: tel / 4: mailto.element_id [uint32] — Element id.element_class [uint32] — Element class.element_data [uint32] — data attribute.Click position in %. For heatmap-style aggregation.
page_x_pct [uint16] — Click X position in %.page_y_pct [uint16] — Click Y position in %. For analysing upper vs lower page.Search Console stored at (page x query x day) grain. Joins to the raw pageview log.
tracking_id "all" (cross-site aggregate): not supported — callable for this site only
page_id is N:M against allpv. Joining with no filter multiplies the rows out (a Cartesian product, i.e. row explosion), so narrow on url or keyword first, then join.
page_id [uint32] [join] — Per page. N:M against allpv. An unfiltered join explodes the row count, so narrow first.query_id [uint32] — Keyword ID. Search on keyword to get a set of query_id.search_type [uint8] — 1 = web, 2 = image, 3 = video.Clicks, impressions, CTR and position. position is rewritten into a column DB scan, so it is fast.
clicks [uint32] [✦] — Daily clicks.impressions [uint32] [✦] — Daily impressions.ctr [✦] — clicks / impressions. Computed at execution time (post_filter).position [✦] — Average position. Rewritten to position_x100 so it can be scanned in the column DB, which is fast.position_weighted — position x impressions. For weighted averages.position_x100 [uint16] — Raw value of position x 100.A gsc row carries no date of its own. This is the axis to use when you want monthly aggregation.
month [since 2026-08-05] — Month the row belongs to (YYYY-MM). Derived from the date Storage injects as it loops over the daily files. Put it in keep to aggregate by month. Narrow the period with time instead.Labels resolved from query_id and page_id.
keyword — Search query. Resolved from query_id.url — Page URL.title — Page title.page_type — Page type.page_fetch_status — Fetch status.Version history of page content. Lets you compare before and after a revision without mixing the two.
tracking_id "all" (cross-site aggregate): not supported — callable for this site only
Joins to allpv.version_id. Versions are tracked per page x device, because PC and SP use different templates and so have separate revision histories. That is why device_id is part of the key.
version_id [join] — PK, and the join key against allpv.version_id.page_id [join] — Page identifier. Narrowing by URL in allpv and then joining is recommended.device_id — 1=PC, 2=tablet, 3=SP. Part of the key because PC, SP and tablet each have their own revision history.Version number, creation date and URL.
version_no — Version number within the same page x device. 1 is the first version. calc MAX() gives the latest.update_date — Date the version was created. For finding changes made on a particular day.url — URL.title — Title.device_type — PC / SP / tablet.Returns summary data for every page. Convenient for per-page aggregation.
tracking_id "all" (cross-site aggregate): supported
The axes you aggregate along. Kept as numeric IDs; device_type is added for you.
page_id [uint32] — Page identifier. Use this material for rankings.device_id [uint8] — 1=PC, 2=tablet, 3=SP. device_type is added for you.utm_source — Source, with the label already resolved.utm_medium — Medium.utm_campaign — Campaign.source_domain — Referring domain.is_newuser [uint8] — New (1) or returning (0).is_QA [uint8] — Flag for traffic that came through QA.Totals over the period. Numeric range filters run as post_filter.
pv_count [uint32] — Total pageviews over the period.user_count [uint32] — Total users over the period.bounce_count [uint32] — Total bounces over the period.exit_count [uint32] — Total exits over the period.time_on_page [uint32] — Total time on page over the period, in seconds.lp_count [uint32] — Total number of times the page was the entry point.Restored from page_id.
title — Title.url — URL.wp_qa_id — WordPress post ID.