Pipedream email verification
Verify emails inside Pipedream workflows
Use Verifly from Pipedream steps when an automation needs to check an email before it creates contacts, enriches leads, or triggers outbound work.
const res = await fetch(`https://verifly.email/api/v1/verify?email=${steps.trigger.event.email}`, {
headers: { Authorization: `Bearer ${process.env.VERIFLY_API_KEY}` }
})
return await res.json()Real-time SMTP mailbox checks
Single, batch, and async bulk verification
Disposable, role account, and catch-all detection
Pay-as-you-go credits with no subscription lock-in
Search fit
Built for Pipedream email verification workflows
Use Verifly when you need a simple API, predictable pricing, and clean JSON results before emails hit your product, CRM, or campaign tool.
A verification step between trigger and action
Pipedream workflows are a chain of steps: a trigger fires (a Typeform submission, a webhook, a new row), and each following step transforms or acts on the event. The danger is that the address from the trigger flows straight into an expensive or reputation-sensitive action — a CRM contact, an enrichment API call, an outbound email — before anyone checks whether it is real.
Inserting a Verifly step right after the trigger fixes that. A Node code step reads steps.trigger.event.email, calls the verify endpoint, and returns the result into the workflow's step exports. Every later step can then read steps.verify.$return_value.result and branch on it.
The key is stored in Pipedream's environment variables, so it never appears in the workflow definition. Because each verification is a single credit and credits never expire, adding this guard step costs a fraction of a cent per event and saves the downstream steps from acting on garbage.
Verify, export, and branch
- Add VERIFLY_API_KEY under Pipedream environment variables (Settings), then reference it as process.env.VERIFLY_API_KEY.
- Add a Node code step immediately after the trigger.
- Fetch GET /verify with the trigger's email and return the parsed JSON so it becomes a step export.
- Add a filter/end-workflow step or an if/else that reads the verdict and stops non-deliverable events.
- Let only clean events continue to the CRM, enrichment, or send steps.
// Step 1 — code step named "verify"
export default defineComponent({
async run({ steps }) {
const email = steps.trigger.event.body.email
const res = await fetch(
`https://verifly.email/api/v1/verify?email=${encodeURIComponent(email)}`,
{ headers: { Authorization: `Bearer ${process.env.VERIFLY_API_KEY}` } }
)
return await res.json() // { result, disposable, role, catch_all }
},
})
// Step 2 — filter step: continue only when deliverable
// $.flow.exit() when steps.verify.$return_value.result !== 'deliverable'FAQ
Frequently asked questions
How do I read the trigger's email in a code step?
Reference it from the step exports, e.g. steps.trigger.event.body.email for an HTTP/webhook trigger. Pass it to Verifly's GET /verify endpoint from a Node code step.
How do later steps use the verdict?
Return the parsed JSON from the verify step. It becomes steps.verify.$return_value, so a downstream filter or if/else can branch on .result being deliverable, undeliverable, or risky.
How do I stop a workflow on a bad address?
Use a filter step or call $.flow.exit() when the verdict is not deliverable, so the CRM/enrichment/send steps never run for invalid events.
Where does the API key live in Pipedream?
In Pipedream environment variables, read via process.env.VERIFLY_API_KEY, so the secret is not embedded in the workflow definition.
Can I verify a whole list in one workflow?
For batches, call POST /verify/batch from a code step with an array of addresses instead of one GET per event, or use the async bulk endpoint for large lists.
What does each event's check cost?
One credit per address. Credits are pay-as-you-go from $2 to $0.60 per 1,000 and never expire, so a per-event guard step is inexpensive.