DenchClaw + Notion: Bidirectional Sync Guide
Sync Notion databases with DenchClaw using the browser agent — import properties, map to DuckDB fields, keep data in sync, and know when to use each tool.
DenchClaw + Notion: Bidirectional Sync Guide
A lot of teams start with Notion for contact tracking — it's flexible, it's familiar, and it's free. But Notion isn't a CRM: it doesn't have a pipeline view, natural language querying, or browser-based enrichment. DenchClaw fills those gaps. This guide covers how to import your Notion databases into DenchClaw, keep them in sync, and figure out when each tool is the right one for the job.
Importing Notion Databases via Browser Agent#
DenchClaw's browser agent can navigate to your Notion workspace and import database contents directly, since it inherits your Chrome session — no Notion API key required.
Step 1: Identify your Notion database#
Open Notion in Chrome, navigate to your contacts or deals database, and copy the page URL. It looks like:
https://www.notion.so/yourworkspace/Contacts-abc123def456...
Step 2: Tell DenchClaw to import it#
"Import my Notion contacts database from this URL:
https://www.notion.so/yourworkspace/Contacts-abc123def456"
DenchClaw opens the URL in the browser agent, reads the database table view, and extracts all rows and their properties.
Alternatively, if your database is public or you've shared it:
"Import contacts from my Notion database called 'Sales Contacts'"
DenchClaw will search your Notion workspace for a database matching that name.
Step 3: Review the import preview#
Before writing to DuckDB, DenchClaw shows you what it found:
Found 87 contacts in Notion database "Sales Contacts"
Properties detected:
- Name (title)
- Company (text)
- Email (email)
- Status (select: Lead, Prospect, Customer)
- Last Contact (date)
- Notes (text)
- Deal Value (number)
Map to DenchClaw fields? (yes/no)
Confirm and DenchClaw creates the contacts in DuckDB.
Mapping Notion Properties to DenchClaw Fields#
Notion's property types don't map 1:1 to DenchClaw fields. Here's how they translate:
| Notion Property Type | DenchClaw Field Type | Notes |
|---|---|---|
| Title | Name field | Direct map |
| Text | Text field | Direct map |
| Number | Number field | Direct map |
| Select | Status / Select field | Options are preserved |
| Multi-select | Tag field | Stored as comma-separated |
| Date | Date field | ISO 8601 format |
| Email field | Direct map | |
| URL | URL field | Direct map |
| Checkbox | Boolean field | true/false |
| Relation | Reference field | Linked by name, not ID |
| Formula | Computed field | DenchClaw re-evaluates |
| Rollup | Not imported | Recalculate in DuckDB |
DenchClaw handles the mapping automatically during import, but you can override:
"Map Notion's 'Priority' select field to a field called 'Lead Score' in DenchClaw"
Or after import:
-- Rename a field after import
UPDATE fields SET name = 'lead_score' WHERE name = 'priority' AND object_id = (
SELECT id FROM objects WHERE name = 'Contacts'
);Keeping Data in Sync With Scheduled Tasks#
After the initial import, you'll want to keep Notion and DenchClaw in sync as data changes in either place.
Sync Notion → DenchClaw (Notion is the source)#
If your team primarily updates records in Notion:
"Every day at 6am, check for new or updated rows in my Notion Contacts database
and sync changes to DenchClaw"
DenchClaw schedules a daily task that:
- Opens the Notion database in the browser agent
- Checks for rows with
Last edited timenewer than the last sync - Updates matching DuckDB entries or creates new ones
You can also trigger manually:
"Sync from Notion now"
Sync DenchClaw → Notion (DenchClaw is the source)#
If you're enriching contacts in DenchClaw and want those updates reflected in Notion:
"When a contact's status changes in DenchClaw, update the matching row in Notion"
DenchClaw creates a trigger that, on each status change, opens the Notion database in the browser agent and updates the corresponding row.
Handling conflicts#
When the same record was updated in both systems since the last sync:
"If there's a conflict during Notion sync, keep the DenchClaw version unless the
Notion version is newer"
Or:
"Show me conflicts for review rather than auto-resolving them"
Conflicts are logged in DuckDB:
SELECT
contact_name,
field_name,
denchclaw_value,
notion_value,
conflict_time
FROM sync_conflicts
WHERE resolved = false
ORDER BY conflict_time DESC;Exporting DenchClaw Data to Notion#
Sometimes you want to push data the other direction — from DenchClaw back into Notion, perhaps to share with stakeholders who live in Notion.
Export a filtered view to Notion#
"Export all closed deals from Q1 to a new Notion database called 'Q1 Closed Deals'"
DenchClaw:
- Runs the DuckDB query
- Opens Notion in the browser agent
- Creates a new database with the matching schema
- Populates it with the exported rows
-- The underlying query DenchClaw runs
SELECT
name,
company,
deal_value,
close_date,
deal_stage,
notes
FROM v_contacts
WHERE deal_stage = 'Closed Won'
AND close_date >= '2026-01-01'
AND close_date < '2026-04-01'
ORDER BY close_date DESC;Scheduled export#
"Every Friday, export this week's new leads to my Notion 'Weekly Leads' database"
This creates a Notion database that becomes a shareable weekly report, populated automatically from DenchClaw.
When to Use Notion vs. DenchClaw#
Both tools store structured data, but they're optimized for different things. Here's a practical guide:
Use Notion for:
- Documentation alongside data (meeting notes, product specs, company research)
- Collaboration with people who aren't in your CRM workflow
- Flexible page-based content with embedded databases
- Content that's inherently hierarchical (wiki-style)
- Visual kanban boards for non-sales workflows
Use DenchClaw for:
- Active lead and deal tracking with pipeline management
- Browser-based enrichment (Apollo, LinkedIn, etc.)
- Natural language CRM queries from Telegram/WhatsApp/Discord
- Complex analytical queries via DuckDB SQL
- Email and calendar integration with contact context
- Automated enrichment and trigger-based updates
- Revenue tracking and sales analytics
The best setup: Notion as your knowledge base and document store, DenchClaw as your active CRM. They stay in sync via the scheduled tasks described above.
A contact in DenchClaw has structured CRM data. The same contact in Notion might have a linked page with research notes, a meeting transcript, and a proposal document. DenchClaw handles the sales motion; Notion handles the knowledge.
Practical DuckDB Queries for Synced Data#
After syncing from Notion, validate your data:
-- Check import completeness
SELECT
COUNT(*) AS total_imported,
COUNT(email) AS has_email,
COUNT(company) AS has_company,
COUNT(status) AS has_status
FROM v_contacts
WHERE source = 'notion';-- Find contacts that exist in Notion but were updated in DenchClaw
SELECT
c.name,
c.company,
c.updated_at,
c.source
FROM v_contacts c
WHERE source = 'notion'
AND updated_at > last_sync_time
ORDER BY updated_at DESC;-- Status distribution from imported Notion data
SELECT
status,
COUNT(*) AS count
FROM v_contacts
WHERE source = 'notion'
GROUP BY status
ORDER BY count DESC;Frequently Asked Questions#
Do I need a Notion API key to sync?
No. DenchClaw's browser agent uses your existing Notion session (from Chrome). No API key, no integration setup in Notion's developer console. Just log into Notion in Chrome, and DenchClaw can access your workspace.
Can I sync private Notion databases?
Yes, as long as you have access to them in your Notion account. The browser agent inherits your permissions — if you can see it in Chrome, DenchClaw can see it too.
What happens to Notion relation fields?
Relations link Notion pages to each other. DenchClaw imports the linked page's title as a text value. If you have a relation between Contacts and Companies, DenchClaw will import the company name as a text field, not a live relation. You'll need to manually set up the relationship in DenchClaw if you want it to be a live reference.
Can I sync Notion databases owned by other team members?
Only if those databases are shared with your Notion account. The browser agent accesses whatever your account can access — it doesn't bypass Notion's permission model.
Is there a row limit for Notion imports?
Not technically, but very large databases (5,000+ rows) will take longer because the browser agent scrolls through the Notion interface to read all rows. For large databases, run the import in batches: "Import the first 500 rows of my Notion database."
Ready to try DenchClaw? Install in one command: npx denchclaw. Full setup guide →
