No credit cardStart free

Pages

A page is an ordered list of charts rendered in a CSS Grid. One link, multiple charts. Not a dashboard builder - a playlist.

Quick Start

Create some charts first, then combine them into a page:

bash
# Create a page with 3 columns
# mrr spans all 3, the rest span 1 each
rq pages create weekly-overview \
--columns 3 \
--charts mrr:3,churn,signups,arpu,ltv,cac
# Publish it
rq pages publish weekly-overview
# → https://rawquery.dev/p/xyz789

Layout

Pages use CSS Grid. You choose the number of columns (1-4), and each chart gets a column span. That's the entire layout system.

The :N suffix in the chart list is the span. mrr:3 = full-width on a 3-column grid. burn:2 = two-thirds. No suffix = span 1.

bash
# 3-column grid example:
# Row 1: mrr (full width)
# Row 2: churn | signups | arpu
# Row 3: burn (2/3 width) | arr
rq pages create kpi-board \
--columns 3 \
--charts mrr:3,churn,signups,arpu,burn:2,arr

Responsive by default: 3 columns on desktop, 2 on tablet, 1 on mobile. No config needed.

Auto-Refresh

Pages can auto-refresh all charts on an interval. Minimum 5 minutes to keep things sane. Set it when creating a page or update later:

bash
# Refresh every 30 minutes (value in seconds via API)
rq pages create live-dashboard \
--columns 2 \
--charts mrr,users,errors,latency \
--refresh 1800
# Or update an existing page via API
curl -X PATCH /api/v1/workspaces/{workspace_id}/pages/live-dashboard \
-H "Authorization: Bearer ..." \
-d '{"refresh_interval": 1800}'

Publishing

Same model as charts. Publish generates a link, unpublish kills it. Password protection optional.

bash
rq pages publish weekly-overview
# → https://rawquery.dev/p/xyz789
rq pages publish weekly-overview --password boardroom
rq pages unpublish weekly-overview

All charts on the page must be published individually for their data to load. Unpublished charts show an error state on the page - the page itself doesn't break.

Parameters

Charts inherit parameters from their saved queries. On a page, all charts receive the same URL parameters. Unknown params are ignored per chart. Missing required params show an error state.

bash
# Page with default params
curl -X POST /api/v1/workspaces/{workspace_id}/pages \
-d '{"name": "q1", "columns": 2, "charts": [{"name": "mrr"}, {"name": "churn"}],
"params": {"from": "2025-01-01", "to": "2025-03-31"}}'
# Override via URL
# https://rawquery.dev/p/xyz789?from=2025-04-01&to=2025-06-30

No filter dropdowns. No date pickers. The filter is the URL.

CLI Commands

bash
rq pages # List all pages
rq pages create <name> \
--columns <1-4> \
--charts "mrr:3,churn,signups" \
[--title "Page Title"] \
[--refresh <seconds>]
rq pages show <name> # View page layout
rq pages update <name> [--charts ...] [--columns ...] [--title ...]
rq pages delete <name>
rq pages publish <name> [--password]
rq pages unpublish <name>

What Pages Are Not

  • Not a dashboard builder. No drag-and-drop, no pixel-perfect layout.
  • Not interactive. No filter widgets, no date pickers, no cross-filtering. Params are in the URL.
  • Not a viewer portal. You have the link, you see the data. You don't, you don't.