CRM & Notion Field Filler — Enrich Records You Already Have
Under maintenancePricing
from $3.50 / 1,000 field filled on an existing records
CRM & Notion Field Filler — Enrich Records You Already Have
Under maintenanceFind records in Notion, HubSpot, Supabase or any MCP-connected app that are missing phone, website, owner or any other field — and fill only the blanks from an Apify dataset. Never overwrites what a human typed.
Pricing
from $3.50 / 1,000 field filled on an existing records
Rating
0.0
(0)
Developer
K O
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Your CRM is full of half-finished records. A company name and nothing else. A contact with no phone. A lead with no website.
This Actor finds those gaps and fills them — only the blanks, never the values a person typed in by hand.
Point it at the app your records live in (Notion, HubSpot, Supabase, Airtable, any MCP connector), point it at an Apify dataset that has the missing values, tell it which field joins the two, and it patches the difference.
What makes it safe to run on a live CRM
- Blank-only by default. A field holding a value is left alone.
overwriteexists, and is off. - Minimal patches. It sends only the fields it actually filled, not the whole record.
- No LLM. Deterministic joins on a key you choose. Nothing is inferred, guessed, or hallucinated into your database.
dryRunreports every record and field it would touch, for free, before anything is written.- One rejected record never aborts the rest of the run.
How it works
- Connect your app under Integrations in Apify Console.
- Run in
list-toolsmode to see the connector's tool names. - Run in
fillmode.
{"destination": "<your connector>","mode": "fill","readTool": "query_database","readToolArgs": { "database_id": "abc123" },"updateTool": "update_page","idField": "id","idArgName": "page_id","datasetId": "<dataset with the missing values>","matchKey": "email","fillFields": ["phone", "website", "owner"]}
Credentials never reach this Actor. It talks to your app through Apify's MCP proxy, which holds the real tokens.
Examples
Fill missing phone numbers on CRM contacts — matchKey: "email", fillFields: ["phone"], source dataset from any contact-enrichment Actor.
Add owner names to a contractor list — matchKey: "licenseNumber", fillFields: ["owner", "phone"], source from a licence-registry Actor.
Backfill company websites in Notion — matchKey: "domain", fillFields: ["website", "industry"].
Input
| Field | Required | Description |
|---|---|---|
destination | yes | MCP connector holding your records |
mode | fill (default) or list-tools | |
readTool | for fill | Tool that lists your existing records |
readToolArgs | JSON args for the read tool | |
updateTool | for fill | Tool that patches one record |
updateToolExtraArgs | Constant args merged into every update | |
idField | Where the record ID lives in the read result. Default id | |
idArgName | What the update tool calls that ID. Default id | |
datasetId | for fill | Apify dataset supplying the values |
matchKey | for fill | Field joining both sides. Case/space insensitive |
sourceMatchKey | Only if the source names the join field differently | |
fillFields | for fill | Destination fields to complete |
fieldMap | Only if a source field is named differently or nested | |
overwrite | Also replace non-blank values. Default off | |
maxItems | Cap on records updated per run. Default 1000 | |
dryRun | Plan only, write nothing |
Output
One row per record handled:
{ "updated": true, "key": "a@example.com", "id": "page_123","filled": ["phone"], "patch": { "phone": "480-555-0100" } }
Failures are recorded rather than dropped:
{ "updated": false, "key": "b@example.com", "id": "page_124", "error": "Tool \"update_page\" returned an error: ..." }
What counts as blank
null, missing, "", whitespace, and []. Note that 0 and false are real values and are not treated as gaps.
Pricing
$5 per 1,000 records updated. Records that were already complete, records with no match in the source, and dry runs are all free. You pay when a record actually gained data.
FAQ
Does this see my Notion/HubSpot token? No. Apify's MCP proxy holds credentials and attaches them to outbound calls.
Will it overwrite my data? Not unless you set overwrite: true. By default it only writes into empty fields.
What if a record has no match in the source? It's skipped and counted as unmatched. Nothing is written.
Can an AI agent call this? Yes — it's exposed through the Apify MCP server, and list-tools then fill is a natural two-step.