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.

Pipedream Node stepAPI
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.

Check Typeform or webhook leads before CRM sync
Filter disposable or risky emails before enrichment
Clean small lists with a reusable Pipedream component
Route workflow branches based on Verifly status fields

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

  1. Add VERIFLY_API_KEY under Pipedream environment variables (Settings), then reference it as process.env.VERIFLY_API_KEY.
  2. Add a Node code step immediately after the trigger.
  3. Fetch GET /verify with the trigger's email and return the parsed JSON so it becomes a step export.
  4. Add a filter/end-workflow step or an if/else that reads the verdict and stops non-deliverable events.
  5. Let only clean events continue to the CRM, enrichment, or send steps.
Verify step + filter that ends bad events
// 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.