For RevOps
RevOps without five tools and a sync job
Tool sprawl is the job description. Five systems, one truth, and a sync job that breaks on a Friday. This collapses the middle of it.
RevOps at a twenty person company is mostly reconciliation. The list lives in one place, the enrichment in another, the sequencer keeps its own copy of the contact, and the CRM holds a third version. Nobody is exactly wrong, and the board number is still a guess.
Oxygen removes the seams rather than syncing across them. Records hold canonical companies, people and deals with provenance per field, dedupe lineage and a default stage model. A table row stays a candidate until you promote it, and events land where automation can reach them.
- Who this is for
- The operator who owns systems, data and reporting at a four to fifty person B2B SaaS company. Often the first ops hire, often whoever inherited the CRM from year one.
- What it looks like today
- Four systems each hold a partial copy of the same account. Enrichment happens in one, sending in another, and the CRM gets whatever survives the sync. Nobody can say where a field came from.
- What changes
- One database sits under the whole motion. A record carries provenance per field, a working row is explicitly a candidate, and a reported number opens into the run that wrote it.
Example searches
Ask for it the way you'd say it
Every search below runs on the same hosted Tables, with the cost previewed before anything is spent.
Duplicates worth merging
show me companies that are probably the same account under two names so i can merge them
A merge keeps lineage, so the surviving record still shows which source wrote each field.
Records that break the report
find the accounts missing an owner, an industry or a stage so the funnel report stops lying to me
The gap is a live view over records, not an export somebody rebuilds every Monday.
Growth as a renewal trigger
list customers whose headcount grew this quarter and flag the ones with a renewal coming up
The harvest lands as rows you filter on, and growth reads as a column. Re-run it next quarter to refresh it; it is not a view that updates itself.
Plays
Three motions you can run this week
Each one is a chain of Oxygen primitives — the same hosted objects your workspace already has, composed.
One account list, one owner
A deduped company and contact layer with merge lineage kept.
- 1Resolve the columns in a table, then promote only rows that pass your bar.
- 2Merge duplicates on records, then tag the segments your reporting slices by.
oxygen crm duplicatesRouting without a sync job
An inbound event reaches the right record and owner with no script between.
- 1Pick the workspace event from the trigger catalog with oxygen workflows events list, then branch on what the record already knows.
- 2Write the outcome back with provenance, holding anything that spends at a checkpoint.
oxygen workflows applyA funnel the stage model can defend
Stage definitions and required fields the whole team reads one way, with the gaps visible before the report goes out.
- 1Set the stage model, the option sets and the fields a deal needs before it moves, so a stage means one thing.
- 2Read the curated funnel, then open the records with no owner, an empty field or a failed sync and fix them at source.
oxygen dashboards summary
Capabilities
What you get
Canonical records, not a second copy
Companies, people and deals carry typed attributes, provenance per field, relationships, dedupe lineage and an activity timeline in the database enrichment ran in.
Working lists stay working lists
A table row is a candidate until you promote it. That one rule stops a half-finished scrape from overwriting an account your team already sells to.
A sync seam you can inspect
External IDs and a sync ledger sit on the record, with status, errors and retries stored as data rather than hidden behind a vendor status page.
Reporting without a warehouse
There is no export step and no nightly job. A funnel or spend figure is computed over the tenant tables the motion already writes, so the evidence sits one click under the number.
Instead of
The stack this replaces
Native, on one contract and one credit balance — not another tab wired to the last one.
- HubSpot
- Attio
- Clay
- Zapier
- Airtable
- Looker
Data sources
What the data actually comes from
Every value lands with its provider and cost recorded on the cell.

People Data Labs
Backfills the firmographics a record is missing, so a company is more than a domain.

Crustdata
Headcount trends and posting activity, which turn a static account into a trend line.

Blitz API
Resolves the person behind a company record before any metered lane is asked.
LeadMagic
Picks up contacts the first lane missed, including people outside the United States.
MillionVerifier
Grades an address before a cadence uses it, so a stale contact shows as a flag.
Run these on Oxygen's managed credits, or connect your own provider keys and pay the vendor directly — the same columns, the same runs, the same provenance either way. See every integration.
Limits
Where this stops
- Records and dashboards start on the day you connect. A year of funnel history stays in whatever produced it until you import the underlying objects and let them accumulate here.
FAQ
Questions people ask first
Do we have to abandon the CRM we bought?
How are duplicate accounts handled?
Can I route inbound leads without code?
What does the reporting actually cover?
Is there a per-seat charge for the ops team?
What happens to our data if we downgrade?
Put your GTM motion on one stack
Sign up, get a working workspace with a one-time credit grant, and run the first play end to end without wiring five tools together.