Skip to content

Verify your Resend contacts before you send

Integration Sending and campaigns

Resend email verification in three steps: export your contacts, verify the file in PricklyMails, then suppress the addresses that cannot receive mail.

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

Verify for free

Step by step

Clean your list in three steps

  1. In Resend

    Export your contacts from Resend

    Before you start

    Exporting data is limited to the admins of your Resend team.

    1. Go to Audience and open the Contacts view.
    2. Click Export, then confirm your filters.
    3. Save the file, or, past 1,000 contacts, open the link Resend emails you to download it, within 7 days.

    Tip

    To verify part of your contacts only, such as one Segment or the contacts still subscribed, filter the Contacts view first: the export takes your filters. PricklyMails only needs the addresses, so keep the email column alone in a spreadsheet before moving on.

    Note

    Looking for Audiences? In November 2025, Resend renamed them Segments and made each address a single contact across your team, whatever Segments it belongs to.

  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 Resend: 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 Resend 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 Resend

    Bring the result back into Resend

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

    Remove

    They go on the suppression list: Resend skips them in every email your team sends, from any of your domains.

    Resend puts an address on that list itself after a hard bounce; adding yours ahead of time spares you the bounce.

    1. Save the addresses to remove in a CSV file, one address per line.
    2. In Resend, go to the Suppressions page, under Emails.
    3. Click + Add email address, then choose Import CSV.
    4. Upload the file.
    Review

    They deserve a look before your next Broadcast. To find them in Resend, create a Segment for them with Create Segment in the Segments view, then add each one to it from the Contacts view, through More options then Edit contact.

    Send

    They stay in your contacts: nothing to do.

    Warning

    The suppression list covers your transactional emails too: Resend sends nothing to an address on it, not even a password reset, until you remove it from the list.

    Tip

    Only a few addresses? Choose Add manually instead of Import CSV and enter each one.

Verify each address before it reaches Resend

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

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

Resend already suppresses bounced addresses, so why verify first?

Resend puts an address on its suppression list once the recipient's mail server has permanently rejected an email: by then the email has gone out and the bounce has counted. Resend requires every account to keep its bounce rate under 4%, and says a rate above 4% may bring a temporary pause in sending until it comes down. Verifying before you send takes out the addresses that cannot receive mail before they bounce.

Should I suppress, unsubscribe or delete the addresses to remove?

It depends on what should still reach them. In Resend's docs, an unsubscribed contact gets no Broadcasts or Automation emails but still receives your transactional ones, while an address on the suppression list gets no email from your team at all. Resend suppresses a bounced address on its own, but does not unsubscribe it for you. Unsubscribed contacts stay in your account, and the contacts you store count toward your plan's contact quota: past it, you cannot send Broadcasts until you remove contacts or upgrade. Deleting a contact frees its place.

Does Resend suggest verifying addresses?

Its guide to audience hygiene does. Besides a CAPTCHA and double opt-in at signup, it suggests a third-party verification service to tell whether an address is valid, reachable or likely to bounce, both to clean an existing list and to keep undeliverable addresses from being added. A PricklyMails batch covers the first, and its API checks each new address before it reaches Resend.

Does PricklyMails connect to Resend 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 Resend.

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.