This guide explains how to automatically update a Harvestr Discovery's status when the status of a linked item changes in a Notion database.
Once configured, updating an item's status in Notion automatically updates the linked Discovery in Harvestr.
There is no native Notion integration. This recipe runs through Zapier and the Harvestr API, so a Zapier account is required.
What you need
In Notion
A database with at least:
a Status property
a Harvestr URL property, holding the URL of the Harvestr Discovery you want to sync
In Harvestr
Optionally, a Notion URL field on your Discoveries, holding the URL of the linked Notion item. This is not required for the Notion → Harvestr sync, but it's useful if you want the relationship visible from Harvestr, or plan to sync in the other direction later.
You also need two API tokens:
one with read_discovery access, to list your discovery states
one with write_discovery access, to update discoveries
Permissions
a Zapier account with access to Webhooks by Zapier
a Harvestr account with Editor permissions
How linking works
For each Discovery you want to sync with a Notion item:
paste the Harvestr Discovery URL into the Harvestr URL field on the Notion item — required
paste the Notion item URL into the Notion URL field on the Discovery in Harvestr — optional
How to set up the sync
Step 1 — Configure the Notion trigger
In Zapier, create a new Zap. For the trigger, choose:
App: Notion
Trigger event: Updated Properties in Data Source Item
Then configure it:
Data Source — select the table containing the items you want to sync
Properties to watch — select your Notion Status property
The Zap now only runs when the status of one of those items changes.
Step 2 — Filter on linked items only
Add a Filter by Zapier step, set to continue only when:
Properties Harvestr URL exists
This ensures the Zap only runs for Notion items actually linked to a Discovery.
Step 3 — Extract the Discovery ID from the Harvestr URL
Add a step:
Formatter by Zapier
Event: Text
Transform: Extract Pattern
Input: your Harvestr URL field
Pattern:
(?:[?&]v=|/)([A-Za-z0-9_-]+)$
Leave the other parameters as they are, then test to confirm the Discovery ID is extracted correctly.
Step 4 — Map the Notion status to a Harvestr state ID
First, get your Harvestr discovery state IDs
Go to your Harvestr API settings and create a read_discovery API token.
Use the list discovery states endpoint to list your states:
click Authorize and paste your token
click Execute and keep the state IDs handy for the next steps
In Zapier
Add a step:
Formatter by Zapier
Action event: Utilities
Transform: Lookup Table
Lookup key: your Notion Status property
Lookup table setup
In the left column, put your Notion status names. In the right column, the corresponding Harvestr discovery state IDs retrieved from the API.
Notion status | Harvestr discoveryStateId |
Planned | abc |
In progress | xyz |
Done | 123 |
The output of this step is the correct Harvestr discoveryStateId.
Step 5 — Update the Discovery in Harvestr
Add a final step:
Webhooks by Zapier
Action event: Custom Request
Configure it as follows.
Method
PATCH
URL
https://rest.harvestr.io/v1/discovery/<DISCOVERY_ID>
Use the Discovery ID extracted in Step 3.
Data
Use raw JSON:
{
"discoveryStateId": "<MAPPED_DISCOVERY_STATE_ID>"
}Replace <MAPPED_DISCOVERY_STATE_ID> with the output of the lookup table from Step 4.
Headers
Create a new write_discovery token
In Zapier, add these headers:
|
|
| your write_discovery token |
Step 6 — Test the Zap
Update the status of a linked item in Notion
Check that the linked Discovery status updates in Harvestr
Troubleshooting
The Zap doesn't trigger
Make sure you selected:
Updated Properties in Data Source Item as the trigger event
the correct Notion table
the correct Status property under "Properties to watch"
The Zap runs but nothing updates in Harvestr
Check that:
the Notion item has a valid Harvestr URL
the Discovery ID extraction in Step 3 works correctly
the lookup table contains the correct Harvestr discovery state IDs
your Harvestr API token carries the
write_discoveryscope
The wrong status is applied
Review the lookup table and confirm each Notion status name maps to the correct Harvestr discoveryStateId.
