1. Home
  2. Signup protection
  3. Zapier and n8n

Signup protection recipe

Filter fake form signups in Zapier or n8n

Between the form trigger and the step that adds the person to your list or CRM, add one HTTP request to the SimpleVerifier API with the email, then a filter. Drop rows where action is do_not_send, tag rows where reason_code is role or catch_all, and pass the rest. No code needed.

Where it runs
Runs after the form is submitted, before the contact reaches your list or CRM. It can't show an error on the form itself.
Timeout
Set the HTTP step's timeout to about 30 seconds; automation runs don't have a person waiting.

You need an API key from the API keys page (Pro, Business or Agency), stored server-side as SIMPLEVERIFIER_KEY. Reviewed 2026-10-31.

Block, warn or allow

  • Block: disposable or temporary inbox (reason_code "disposable" (action "do_not_send"))
  • Block: invalid: bad format, no mail server, mailbox not found (action "do_not_send" (reason_code "syntax", "no_mx", "mailbox_not_found", "domain_not_hosted"))
  • Block: misspelled domain (gmial.com, hotmial.com) (reason_code "typo_domain" (action "do_not_send"))
  • Warn: role inbox (info@, sales@, admin@) (reason_code "role")
  • Warn: catch-all domain (reason_code "catch_all")
  • Warn: looks invented (test@, john.doe@, example.com) (likely_invented true)
  • Allow: valid, or the check could not finish (action "send", "send_with_care", "retry_later", or any non-2xx answer or timeout)

The reasoning for each row is on the signup protection overview.

  1. 1. Zapier: add a Webhooks by Zapier step

    Choose the Custom Request event. Map the email from your form trigger into the body.

    Method:   POST
    URL:      https://simpleverifier.com/api/v1/verify
    Data Pass-Through: false
    Data:     {"email": "<map the email field from your form>"}
    Headers:  Authorization | Bearer sv_live_...
              Content-Type  | application/json
  2. 2. Zapier: filter and route

    Add Filter by Zapier (or Paths for a tag branch) after the request. If the webhook step errors, Zapier stops the run by default; to fail open, set the step's error handling to continue.

    Only continue if:   action (Text) Does not exactly match  do_not_send
    
    Paths (optional):
      Tag as "check"  if  reason_code is in role, catch_all  OR  likely_invented is true
      Add normally    otherwise
  3. 3. n8n: HTTP Request node

    Store the key as a Header Auth credential so it never sits in the workflow JSON. Under Settings set On Error to Continue, so an outage lets the contact through.

    Method:           POST
    URL:              https://simpleverifier.com/api/v1/verify
    Authentication:   Generic Credential Type > Header Auth
                      Name: Authorization   Value: Bearer sv_live_...
    Send Body:        on, JSON
    Body:             { "email": "{{ $json.email }}" }
    Options > Timeout: 30000
  4. 4. n8n: Switch node

    Route on the decision fields. Connect Block to nothing (or to a log), Warn to a node that tags the contact, Allow to your list.

    Mode: Rules
      Block:  {{ $json.action }}  is equal to  do_not_send
      Warn:   {{ ["role", "catch_all"].includes($json.reason_code) || $json.likely_invented === true }}  is true
      Fallback output: Allow

Common questions

Which plan do I need for Zapier or n8n?
Any plan with API access (Pro, Business or Agency). Each check is one API call.
Can I check a whole sheet of old sign-ups this way?
You can, but a CSV upload in the dashboard is quicker for a backlog. Use the automation for new sign-ups as they arrive.
Which plan includes the API?
Pro ($29.99/month, 10,000 calls a month included), Business and Agency. Each address checked is one call. Starter and Growth have no API access.
How do I try it without blocking anyone?
Set SIGNUP_GUARD_DRY_RUN=1. The code logs what it would block and lets everyone through. Read the logs for a few days, then remove the variable.

Other recipes

Clean your next list before it bounces

100 free email checks when you sign in with Google, no card. Then monthly plans from $9, or one flat price with fair use, never cut off.

100 free checks, no card Cancel anytime Secure payment by Stripe