Fill in the blanks

B2B data enrichment that runs where the work happens

Enrichment goes wrong when it happens somewhere else. Run it as columns on the rows you are already working and the answer, its source, and its cost stay attached to what you act on.

try

Enrichment is usually bought as a bulk job: upload a file, wait, download a wider file, and hope the mapping survived the round trip. What comes back is a snapshot with no memory of which vendor said what, which is why nobody can ever answer where a wrong field came from.

Here enrichment is a column. Each cell records the provider that answered, the inputs it was given, the outputs it produced, the cost, and any error. Dependencies between columns are explicit, so a company lookup feeding a contact lookup runs in that order without anyone sequencing it by hand.

Example searches

Ask for it the way you'd say it

Each example is a request in plain words, with what it returns underneath.

  • Widen an account list

    add headcount, funding stage, and country to every company sitting in this table

    The company lookup fills headcount and country, a funding lookup fills the stage, and each cell names the lane that filled it.

  • Standing fill on new records

    whenever a new company record appears, fill in its firmographics automatically

    The saved configuration is the standing permission, so new records arrive filled rather than queued.

  • Fill what came back empty

    run the company lookup again on the rows that came back blank and leave the filled ones alone

    A scheduled refresh re-runs only empty or failed cells unless you force a full pass, so rows that already hold an answer are not billed again.

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.

  • Enrich once, then promote

    Fields you decide to trust become part of the account record with the run that produced them.

    1. 1Run the enrichment columns on the working table and inspect a sample of the cells by hand.
    2. 2Promote the fields you accept. The ones you reject stay in the table rather than in your CRM.
    oxygen enrich-column run
  • A standing rule for new records

    Records created by a form, an import, or a webhook get filled without anyone remembering to.

    1. 1Enable enrichment on the object and pick which named enrichments run, such as company details or funding history.
    2. 2Read the backfill preview first, then let records enrich as they arrive from then on.
    oxygen crm enrichment enable
  • Refresh a segment on a schedule

    A market map stays roughly current without the quarterly rebuild nobody has time for.

    1. 1Schedule the column as a full refresh with --force, since a schedule fills only empty or failed cells by default.
    2. 2Cap each delivery, then promote only the differences that changed the account's shape.
    oxygen tables schedule set

Capabilities

What you get

  • Columns, not a bulk upload

    Enrichment runs where the rows already live. No export, no re-import, and no mapping step that silently drops a field on the way back in.

  • Dependencies that resolve themselves

    A column that reads another column runs after it. The order comes from the references you wrote, not from somebody remembering the sequence.

  • Every cell explains itself

    Provider, inputs, outputs, retries, and errors open from the cell, and its cost is one command away. Tracing a wrong value takes a click, not an argument.

  • Your own keys where you have them

    Managed access is the default lane. Where you already pay a vendor directly, connect that key on the $99 plan or above. Your vendor bills the call, and OXYGEN adds a small platform fee per call.

Boundaries

What Tables does not own

Enrichment is Tables work. The enriched row is a candidate until you promote it onto Records, which owns canonical attributes and their merge history. Scheduling a recurring refresh across several steps belongs to Workflows.

Data sources

Data sources and CRM connections

  • People Data Labs

    The second lane for funding and revenue fields, tried when the first lane returns nothing, so those blanks get another chance.

  • Crustdata

    On your own Crustdata key, headcount trend, funding, and job-posting context, the fields that turn a static row into a moving one.

  • Blitz API

    Company and profile detail from LinkedIn, and the head lane when a row needs a work email next.

  • LeadMagic

    A fallback lane for funding, tech stack, and hiring fields, and for work email and mobile, tried when the earlier lanes come back empty.

  • Professional Network Data

    OXYGEN's public LinkedIn data lane for public profile and company detail without touching a connected account.

Use managed credits where available, or connect a supported provider key on an eligible paid plan. Your provider bills its calls; OXYGEN adds a per-call platform fee. Signed-in CRM connections such as HubSpot have no per-call fee. Connected sending accounts reserve monthly credits. See pricing and supported integrations.

Limits

Where this stops

  • Every provider sounds confident and some of them are wrong. Sample a dozen rows by hand before promoting a field across a whole table, headcount and revenue bands most of all.
  • Enrichment only surfaces what a source already holds. A company nobody has indexed stays mostly empty however many lanes you stack behind it.

FAQ

Questions people ask first

Is this a bulk upload job?
No. Columns run against rows already in the workspace, in place. Nothing is exported and re-imported, which is where most enrichment projects quietly lose a field or a row ordering.
How do I know which provider filled a cell?
The cell records it, with the inputs it was given, the outputs, the cost, and any error. That record is the difference between fixing a wrong value and arguing about it.
Can enrichment run on new records automatically?
Yes. Enable it on the object and pick which named enrichments run. The saved choice is the standing permission, so records created later fill in without a per-row approval, within the per-batch credit ceiling.
What stops a run from enriching everything?
Run conditions plus a ceiling you approve. Most tables only need enrichment on rows that cleared qualification, and shrinking the input set saves far more than switching provider.
Do enriched fields overwrite what I already have?
Only where you say so. Promotion is explicit and records its provenance, so an attribute a person set by hand is not silently replaced by a provider that disagrees.
What does enrichment cost?
It is metered in credits, and you can preview it on your own rows first. A plan dollar buys 100 credits, so an estimate converts into money without arithmetic; top-ups cost more per credit.

Try Tables in your own workspace

Sign up, get a working workspace with a one-time credit grant, and run the first play from the web app, the CLI, or your AI assistant over MCP.