Native connectors
Connect one of thirteen tools and clean a list where it already lives, no export, no re-import. Pick an audience, we verify it in the background, and the verdicts are written straight back onto the contacts.
No API call needed. Connectors are set up in the dashboard under Integrations, not through this API. Everything below describes what happens once you connect, so you know exactly what we touch in your account.
Connecting
Every tool offers two ways in. Sign in is the quickest: you are handed to the tool, you approve Prime Verifier there, and we never see your password. Or paste a key you generate yourself, if you would rather not authorise an app. Both are stored encrypted and used only for the syncs you start, and the connector behaves identically either way.
- Mailchimp: sign in, or paste an API key from Account, Extras, API keys. Keep the
-us14style suffix on the end: that suffix is what identifies your data centre, and the key does not work without it. - HubSpot: sign in, or paste a Private App token (HubSpot retired plain API keys in November 2022). A pasted token needs the
crm.objects.contacts.readandcrm.objects.contacts.writescopes, pluscrm.lists.read. - Klaviyo: sign in, or paste a Private API Key with read access to Lists and Profiles plus write access to Tags.
- Zoho CRM: sign in. Zoho keeps each account in one region, so you are handed to the sign-in page for yours; if your CRM lives at
crm.zoho.inthe connection is made there, not on.com. - ActiveCampaign: API key plus your account URL, because every account has its own host.
- Brevo: API key. If the account restricts API access by IP, a perfectly good key still returns 401 until
40.160.27.30is allowed. - MailerLite: API key. Grouping is optional in MailerLite, so ungrouped contacts appear under All subscribers.
- Mailjet: API key and secret key. Mailjet needs the pair; the key alone will not authenticate.
- SendGrid: API key with Marketing permissions. A send-only key is valid and still fails on every contacts call.
- Mailgun: API key. US and EU accounts both work, we detect which.
- Campaign Monitor: API key.
- SparkPost: API key, US or EU. Removal only: SparkPost cannot update a single recipient, so verdicts cannot be written onto contacts there and the sync screen does not offer it.
- Google Sheets: sign in. You then pick a spreadsheet from Google's own file chooser, and that is the only file we can see: we ask for a permission that covers just the files you choose, so the rest of your Drive stays private to us.
Signing in asks for the least we can work with: read your lists and the contacts in them, and write the verdict back onto those contacts. Never your password, your billing, or the ability to send. You can revoke it from the tool at any time, and disconnecting here deletes what we hold immediately.
What a sync does
Choose a list and we pull its addresses, de-duplicate them, and run them through the same verification pipeline as a CSV upload. The run appears in your Bulk Jobs as a normal job and charges credits at the usual rate, so a sync costs exactly what verifying those addresses any other way would cost. One sync runs at a time per connected tool, so a double-click cannot bill you twice for the same list.
Spreadsheets work differently
A tool with contacts in it answers "what should I verify?" with a list. A spreadsheet needs three answers, so Google Sheets asks for all three: the file, the tab inside it, and the column holding the addresses. We show you a sample from each column and a guess at which one looks right, but the choice stays yours, because verifying the wrong column would charge you once per row for it.
The results go into a new Prime Verifier column beside your data, one row at a time, matched by the address on that row. Run the same sheet again and the same column is updated rather than a second one being added. Nothing else in your sheet is touched: no rows are deleted, moved or reordered, which is also why Google Sheets has no removal options at all. The column tells you which rows are bad and what you do about them is your call.
The tags
Each verdict has its own tag, and a contact gets at most one. They are separate rather than a single "bad" tag because the four mean genuinely different things and you act on them differently. Tools without tags use the nearest equivalent instead, so Brevo gets a PV_STATUS attribute, MailerLite and Mailjet a pv_status field, SendGrid a custom field and Mailgun a member variable. The values are identical everywhere.
pv-good: the mailbox was confirmed to exist. Safe to send.pv-risky: a catch-all domain, which accepts every address, so the mailbox could not be confirmed either way. Free, for that reason.pv-invalid: the mailbox does not exist. Sending here earns a hard bounce.pv-unknown: no definitive answer from the mail server (blocked, greylisted, timed out). Free, like every result we could not confirm.pv-disposable: a throwaway address. Written in spreadsheets only, where there is no removal to fall back on and a blank cell would read as "not checked". It is separate frompv-invalidbecause a disposable address usually does exist, it just belongs to nobody in a week.
Each tag is opt-in, because tagging is one API call per contact and a large audience should not pay for writes you did not ask for. pv-risky and pv-unknown are tag-only and are never removed: neither is proof an address is bad, so deleting them is not a call we will make for you.
Cleaning up
- Remove invalid: unsubscribed (Mailchimp), suppressed (Klaviyo), or marked
pv-removed(HubSpot, which has no suppression list for contacts). We never hard-delete, so your history and reporting survive. - Remove disposable: throwaway addresses are handled the same way.
- Google Sheets removes nothing at all and does not offer these options. Deleting a row from a document you own would take every other column on it with it, and unlike an unsubscribe there is no undo.
Nothing is destroyed. Removal means unsubscribe or suppress, never permanent deletion. If a sync fails part way, we write nothing back at all rather than acting on partial results.
Disconnecting
Disconnecting deletes the stored key immediately. Tags and suppressions already written into your tool stay exactly as they are, they are your data.
Something else?
More connectors are on the way. Until then, any tool with an API can be wired up through the REST API or an automation platform, and you can subscribe to results with webhooks.