The Spine · Customer 360

One record per customer.

Stripe knows what they pay. Support knows what they said. The board knows what you're building for them. The spine joins all of it onto one shared record per customer — so every view reads as one customer, not three silos, and every task knows who it's for.

Every join on this page ships today.

The 360

Open an account. Stop opening tabs.

One page per customer company. What they pay, what they asked for, who they are, and when you're talking next — pulled together from your connectors, not retyped by anyone.

    Subscription

    Plan, MRR, status — active, trialing, or canceled — currency and start date, straight from Stripe.

    Insights

    Every piece of feedback tagged to this account — requests, bugs, reviews — each with its source.

    Meetings

    Bookings made through your scheduling links land here: guest, host, event type, time.

    Contacts

    The named humans — buyer, champion, CTO — with emails. Stripe gives you the company; you add the people.

    Sources

    A dot per connector: filled means it has data for this customer, hollow means not yet. No guessing what's wired.

    External IDs

    Stripe cus_* and CRM identifiers ride on the record — so the same customer never splits in two.

Watch: one customer, everything joined · Example data

The 360's Behaviour, Work, and Conversation panels land per connector — the joins are already written underneath; each panel switches on as its connector ships.

Identity stitching

alice@fernwood.co signs in. The Fernwood record lights up.

When events or SDK data arrive with a user's email, the spine matches the domain to the account — automatically. No CSV uploads, no manual merging, no duplicate customers.

  • Email domain → account, on write. Each product user becomes an end-user record attached to their company.
  • External IDs resolve too — Stripe customer IDs and CRM identifiers point at the same record.
  • Every match is logged: method, confidence, status. An audit trail you can inspect — not a black box.

How a match is recorded

signal  alice@fernwood.co

match   domain fernwood.co → Fernwood & Co

method  email_domain

status  confirmed · audit entry written

Example data — the actual audit trail lives on every match.

Revenue on the spine

What they pay, attached to everything.

Connect Stripe and your customers and subscriptions backfill in seconds. From then on, revenue isn't a report you run — it's a column on the record everything else joins to.

01 · On each account

  • Every subscription on the record: plan, MRR, status, currency, start date.
  • Multiple subscriptions? The account shows the representative one, picked by status priority.
  • Churn reads where you work: a canceled status sits right on the customer's record — not in a spreadsheet you check monthly.

02 · Across the list

  • Search any customer by name, domain, or external ID — one keystroke, no tool-hopping.
  • Filter by subscription status; sort by MRR. Your biggest customers, top of the list.
  • Each row carries domain, plan, and revenue — the list is a revenue view for free.

Feedback & work, joined

Every task knows who asked — and what they pay.

Tag any insight with an account and the 360 collects everything that customer asked for. Assign a task to an account and the picker reads the money inline — Fernwood & Co · $5,000/mo. The why travels with the work.

  • Insight → account: feedback, requests, and bug reports pile up on the customer who said them.
  • Task → account: the dropdown shows each account with its MRR, so picking a customer is picking a stake.
  • Open the task detail and the customer, their plan, and their revenue are on the card — no second tab.

Today the customer and MRR show on the task's detail view; board and list rows don't carry MRR per task yet.

Events on the spine

Usage data arrives already joined.

Every analytics event is stitched at write time — the account and end-user ride on the event row itself. 'What did this customer do in the last 30 days?' is one indexed lookup, not a join across identity tables.

  • Stitching happens in the ingest path, not a nightly batch — events are account-aware the moment they land.
  • Per-account and per-user event queries are indexed — built for "show me this customer's usage", at speed.
  • The 360's Behaviour panel reads from this join as the analytics connector lands — the data is already in place.

One event row, pre-joined

event    feature_used · export_csv

user     alice@fernwood.co

account  Fernwood & Co · $5,000/mo

joined   at write — no fan-out at query time

Example data

Where the edges are — plainly

The 360's Behaviour, Work, and Conversation panels switch on per connector — the underlying joins ship today, the panels light up as each connector lands. Work items from code tools reach accounts through features for now, not directly. Anything not on this page isn't in the product yet.

Early access

See your own customers on one record.

Connect Stripe on the call and watch your accounts, plans, and MRR land on the spine within minutes — your real data, your real join.