n8n workflows
Three importable n8n workflow templates and a reusable sub-workflow live inintegrations/n8n/. Each template calls rate.email through n8n's built-in HTTP Request node, so there is nothing to install beyond n8n itself.
Templates
| Template | Trigger | What it does |
|---|---|---|
| template-gmail-danger-label.json | Gmail Trigger | Checks each new sender and adds a Gmail label called "danger" to messages from risky senders. |
| template-form-signup-guard.json | Webhook | Point a signup form at the webhook. It checks the address and tells the form whether to let the signup through. |
| template-bulk-list-cleanup.json | Manual, reads a Google Sheet | Checks every address in a sheet and splits them into a "Keep" tab and a "Danger" tab. |
Import a template
- Open n8n and go to Workflows.
- Click Add workflow, then Import from File (or Import from URL for a raw link to one of these files).
- Pick the template's
.jsonfile. n8n opens it on the canvas; nothing runs yet.
This works the same way on n8n Cloud and on a self-hosted instance. Every node these templates use, HTTP Request, Gmail, Webhook, Respond to Webhook, Google Sheets, Set, If, Loop Over Items and Wait, is part of n8n's free node set on both.
Set up the credential
An imported template never carries a real API key: n8n strips credential values on export. Every template ships with an HTTP Request node already pointed at a Header Auth credential, with no credential selected yet.
- In n8n, go to Credentials and add a Header Auth credential.
- Set the parameter name to
Authorizationand the value toBearer, a space, then a secret key from your rate.email dashboard. - Open each HTTP Request node in the template and pick that credential from the dropdown.
{
"header": "Authorization",
"value": "Bearer sk_live_your_real_key_here"
}Use a secret key (sk_live_ / sk_test_), not a publishable key: a publishable key is restricted for use in a public web page and will not work here. Full request and response shapes are in the API reference.
What each verdict does
All three templates act on the verdict only, never the numeric score, because the verdict is what rate.email guarantees will not change between API versions.
| Verdict | Gmail danger label | Signup guard | Bulk cleanup |
|---|---|---|---|
| accept | No label | Allowed through | Written to Keep |
| review | Labelled danger | Allowed through | Written to Danger |
| reject | Labelled danger | Refused, friendly message | Written to Danger |
Reusable building block: the sub-workflow
subworkflow-rate-email.json takes one email address in and returns a flattened verdict out (verdict, score, top_reason,is_danger). Call it from another workflow with n8n's Execute Sub-workflow node so the rate.email call is wired up once and reused everywhere.
The three templates above do not call this sub-workflow themselves: each repeats the same HTTP Request and Set nodes on purpose, so a template imported on its own works without also importing and wiring up a second workflow first. Once a workflow is running, its "Rate the …" and "Read the verdict" nodes can be replaced with a single Execute Sub-workflow node pointing at subworkflow-rate-email.json.