Skip to sample

SaaS

Fictional sample. Quarry is not a live business.

Theme preference
Quarry

Product analytics

Know which clicks actually pay the bills.

Quarry ties product events to revenue so PMs stop arguing from screenshots.

Sunlit studio desks used as a stand-in for a product workspace

Trusted by teams in the field

Bramble
Portico
Nettle
Ashford
Vesper
Kindling
Redwood
Sable
Bramble
Portico
Nettle
Ashford
Vesper
Kindling
Redwood
Sable

Two ways to close the week.

One still lives in a spreadsheet. The other is the board your standup already needed.

Paper notes and a crowded analog desk

Export, paste, hope

Mixpanel in one tab, Stripe in another, a CSV from last Tuesday. The number changes depending on who built the pivot.

Keep exporting CSVs
Laptop and notebook on a clean modern workstation

One board, one number

Events land with the charge attached. The standup reads the same revenue figure finance already booked.

Start a workspace
OR

Instrument once. Query revenue from the same event.

The TypeScript client writes the click, the account, and the dollars. Open a call on the left to load the matching snippet.

track-charge.ts

TypeScript

import { Quarry } from "@quarry/events";

const quarry = new Quarry({ token: process.env.QUARRY_TOKEN });

await quarry.track({
  name: "checkout.paid",
  accountId: "acct_bramble",
  properties: { plan: "team", amountUsd: 2400 },
});

Four signals. One shelf.

Charges, funnel steps, experiments, and accounts live in the same catalog so a PM can find the next cut without a new tool.

  • Charges

    Paid events with an amount, a plan, and the account that closed.

  • Funnel steps

    Named surfaces in order, from first visit to the invoice.

  • Experiments

    Flag keys tied to the same revenue query the board already runs.

  • Accounts

    The company record every later event inherits after identify.

Send the first event

Start from a name, then attach only what the board needs.

  1. 1

    Create a workspace and copy the write token.

  2. 2

    Track one paid event with an account id and amount.

  3. 3

    Open the board. The charge should land in the current week.

Keep the catalog honest

Retire names that no longer ship, and lock the ones finance reads.

  1. 1

    Filter events by owner, status, or last seen.

  2. 2

    Rename in place when a surface ships under a new path.

  3. 3

    Archive test traffic so the standup number stays clean.

Start with checkout.paid

If you only send one event this week, send the charge. Funnels can wait until the dollars are trustworthy.

This week's Quarry board

Revenue, people, and the product paths carrying the week. Change the range and the board follows.

Last 30 days

+19.0%

Revenue

$824,522

+14.5%

Users

26,785

+14.8%

Sessions

63,786

-5.4%

Bounce rate

36.0%

Revenue

Daily take across the selected range

$824,522 total

Aug 7Aug 14Aug 21Aug 28Sep 5

Traffic channels

Session mix for this window

100

share pts

  • Product34%
  • Direct24%
  • Docs18%
  • Sales assist15%
  • Referral9%

Top pages

Ranked by views in this range

View all
  1. 01

    /checkout

    18,420
  2. 02

    /pricing

    12,680
  3. 03

    /docs/events

    9,340
  4. 04

    /onboarding

    7,120
  5. 05

    /customers/bramble

    5,480

Active people

Who is still in the product

View all
  • MC

    Mara Chen

    On call

    2m ago
  • JV

    Julian Voss

    Reviewing

    11m ago
  • NH

    Nori Hale

    Shipping

    24m ago
  • RL

    Reed Lang

    Idle

    1h ago

Built for teams who ship weekly and still have to explain the number.

Quarry is a small product-analytics company. We sell a board that finance will sit through, and an SDK that PMs can ship without a platform team.

140

Workspaces live

11 min

Median time to first event

SOC 2

Type II

12

People on the floor

Make revenue as inspectable as a pull request.

Standups should not start by reconstructing last week's funnel from three exports. We treat a paid event as a product surface: named, timed, and owned by the same client that wrote it.

That means idempotent writes, a catalog you can query, and operators who can explain a mismatch without opening a war room.

  • Sunlit studio desks with plants and open notebooks
  • Two colleagues reviewing a screen together
  • Team gathered around laptops in a bright workspace

The board is the product.

One contract for events, accounts, and charges. Partners integrate once, then read revenue by surface from the same numbered events.

Collaborative workshop around a table

Founding operators, still on the floor.

The first twelve people still own incidents, partner reviews, and the weekly board walkthrough. We hire people who can read a funnel as fluently as a pull request.

Questions we hear before the first event lands.

Billing, access, and the write path. Pick a topic on the rail. The list on the right jumps with you.

Product

A named write with an account id. Charges also send an amount. Funnel steps can omit dollars until you are ready.

Billing

Invoices close on the first weekday after your billing date. The PDF lands in Billing within a few hours.

Access

Owners and editors can rename or archive events. Viewers can read the board but cannot ship a catalog edit.

Support

Weekday tickets get a first reply within one business day. Priority plans get a same-day window.

Give the next standupa number it can trust.

Start a workspace, send one paid event, and read revenue by surface before Friday.

  • One client for track and query
  • Board that matches the ledger
  • Seats for PM, eng, and finance
  • SSO and token rotation
  • SOC 2 Type II
  • Catalog you can archive