ZapBounce and Notion

Notion databases get used as contact lists because they are already open on everybody's screen. There is no validation on an email property beyond what the field type does.

Verification therefore has to run outside Notion, on a schedule, through the API.

Anyone with edit access can type anything

Notion's collaborative model is the point, and it means a contact database is edited by people who are not thinking about data quality. Addresses arrive pasted from emails, retyped from business cards and copied from Slack.

Notion's email property type does not check whether the domain can receive mail. A well-formed address at a dead domain sits there looking exactly like a good one.

There is also no bounce feedback, because Notion does not send mail. Nothing in the system will ever tell you an address stopped working.

How the data moves

  1. Query the database through the API on a schedule

    A cron job pulling pages where the verdict property is empty or the check date is old.

  2. Submit the addresses as a batch

    One call for the whole set, rather than a request per page.

  3. Write the verdict to a select property

    Select rather than text, so the values stay consistent and the board view can group by them.

  4. Mind the Notion API rate limit on the write

    Notion allows a limited request rate, and page updates are one request each. Pace the write-back.

Setting it up

  1. Add a select property for the result with its four values (valid, invalid, catch_all, unknown), checkbox properties for the role and disposable flags, and a date property for the check.
  2. Create a Notion integration and share the database with it.
  3. Build a scheduled script that queries pages missing a recent verdict.
  4. Submit those addresses as one batch and collect the results.
  5. Update the pages, pacing the writes to stay inside Notion's rate limit.
  6. Create a filtered view showing addresses that need attention.

Notion: common questions

Can Notion validate email addresses?

The email property checks the format of the string. Nothing in Notion knows whether a mailbox exists.

How often should the schedule run?

Daily for new rows, quarterly for a full re-check. The collaborative editing means new addresses arrive continuously.

Select or text property?

Select. Consistent values, and board views can group by the verdict.

Check a Notion export today

100 free checks a month, no card. Unknown results and duplicates are never billed.