Skip to content

Verify the contacts in your Notion database

Integration CRM, support and community

Notion email verification for a contacts database: export it as CSV, verify the file in PricklyMails, then mark the addresses to remove in a property.

There is no native Notion connector: you export the list, PricklyMails verifies it, and you bring the result back into Notion. New addresses can go through the API before they ever reach Notion.

Verify for free

Step by step

Clean your list in three steps

  1. In Notion

    Export your contacts database from Notion

    1. Open the database that holds your contacts as a full page.
    2. Click the ••• icon at the top right, then Export.
    3. Choose Markdown & CSV from the dropdown, then click Export.
    4. Unzip the file that downloads: your database is the CSV file inside.

    Tip

    Notion exports a database from its current view or its default one, never every view at once: export from a view that shows all your contacts, then keep the email column alone in a spreadsheet before moving on.

    SourceNotion's official help center
  2. In PricklyMails

    Verify the file in PricklyMails

    1. In the dashboard, open Batches and click New batch.
    2. Drop the file you exported from Notion: a .csv or .txt with one address per line, no header row and no quotes. A header row would count as an address in the estimate, though it is never billed, and a quoted address would not be verified: the report lists both as malformed. You can also paste the list.
    3. The dashboard counts the addresses and shows the estimated cost in tokens before anything is sent, then you click Submit batch. A batch holds at least 20 addresses, and your plan sets the largest list it can hold.
    4. The list is verified in the background. Once the batch is done, open it and click Download report: you get a CSV with a row for each address of your file, giving its verdict, its reason, its score and its recommendation, with the dashboard's labels.

    Note

    Download the report from the browser that sent the list: that browser is what keeps the addresses, for the 16 most recent batches at most. Our servers, in Germany, only keep a one-way fingerprint of each one.
    What the report says

    Every address gets a recommendation: the action to take. The report writes it with the dashboard's label; the API returns a short form of it.

    Send
    The address is valid, or hosted by a large provider that accepts every address without confirming any. Send as usual.
    Review
    A domain that accepts any address (catch-all), a generic address such as contact@, a full mailbox, or a server that never answered, or refused to. Take a look before you send.
    Remove
    The address does not exist, its domain cannot receive mail, or it is disposable, mistyped or malformed. Take it out.

    Note

    A malformed address is never verified: the batch counts it under "Malformed addresses", and the report still lists it, with the verdict "Invalid", the reason "Malformed address" and the recommendation "Remove", so you take it out of Notion with the others. A duplicate, counted under "Duplicates removed", appears only once.

    Behind each recommendation sit a verdict (Valid, Risky, Invalid or Not verifiable), a reason and a score from 0 to 100, each in its own column of the report. When a server never answers, the address comes back "Not verifiable" and the checks that got no answer are refunded.

  3. In Notion

    Bring the result back into Notion

    Open the report in a spreadsheet and filter the Recommendation column.

    Remove

    They get a remove mark in a select property, which the views you send from can filter out. The rows themselves stay.

    Importing or merging a CSV only adds rows to a Notion database and never updates the existing ones, so the marks go in by hand, which suits a small database.

    1. In the database, select + next to the right-most property, name it Email check and choose the Select type.
    2. Select 🔍 at the top of the database and type an address to remove.
    3. In the row it finds, click the Email check cell, type remove and press Enter.
    4. Repeat from the search for each address to remove.
    5. In each view you send from, open the settings menu at the top of the database, select Filter, and choose Email check to hide the rows marked remove.
    Review

    They deserve a look before you contact them. Mark them review in the same Email check property, then filter a view on that value to go through them.

    Send

    They need no mark: leave their rows as they are.

Verify each address before it reaches Notion

Does your signup form or script add contacts to a Notion database through its API, with the Create a page (opens in a new tab) call? Ask PricklyMails first. If the recommendation is remove, don't create the page.

One call starts the verification and already flags a likely typo, a second one reads the verdict. Depending on your plan, a signed webhook can also send it to you as soon as it's ready.

Request
curl -s https://api.pricklymails.com/api/verify \
  -H "Authorization: Bearer pm_live_9f3a..." \
  -H "Content-Type: application/json" \
  -d '{ "email": "ana.silva@gmail.con" }' \
  | jq '{job_uuid, suggestion}'
Response
{
  "job_uuid": "8f1c2a9e-4b7d-4e2a-9c61-3d5f0b7a2e18",
  "suggestion": "ana.silva@gmail.com"
}
Request
curl -s https://api.pricklymails.com/api/verify/$JOB_UUID \
  -H "Authorization: Bearer pm_live_9f3a..." \
  | jq '.verifications[0] | {status, reason, score, recommendation}'
Response
{
  "status": "invalid",
  "reason": "no_mx_records",
  "score": 0,
  "recommendation": "remove"
}
Read the API docs

Frequently asked questions

Why not import the result back into the database?

Notion's help says that importing a CSV, or merging one into an existing database with Merge with CSV from its ••• menu, adds rows and never updates the existing ones: every contact would come back as a duplicate. The result goes onto the rows themselves, as a property: by hand for a small database, or through Notion's API, which updates a page's properties, for a database of any size.

SourceNotion's official help center

Why is Export missing from my ••• menu?

In an Enterprise workspace, the workspace or teamspace owner may have disabled exporting. A workspace owner turns it back on under Settings then Security by switching off Disable export, and a teamspace owner does the same in the security settings of the teamspace. A guest of the workspace needs full access to the database to see and use the export option.

SourceNotion's official help center

Does PricklyMails connect to Notion directly?

No, there is no native connector: you go through a file export, as above. You can also call the PricklyMails API from your own code before an address reaches Notion.

These trademarks belong to their respective owners. Naming them implies no partnership.

Check your list before your next send.

1,000 tokens free when you sign up, no credit card. After that, you only pay for answers.