Zapier is the default answer for "connect tool A to tool B and send an email." That accessibility is also the risk: a marketing manager who cannot read an SPF record can, in under five minutes, wire up a Zap that fires thousands of emails from a Gmail account that was never warmed for bulk. The emails leave. Zapier reports success. The recipients never see them.
The fix is a webhook step between the trigger and the Send Email action. The webhook creates a placement test on the exact email content, waits for results, and either lets the send proceed or blocks it with a Slack alert.
Most Zapier email mistakes are authentication, not content. A zap that uses Email by Zapier sends from zapiermail.com — Gmail and Outlook know that domain is used by thousands of senders and treat it with suspicion. Always prefer Gmail, Outlook, Mailchimp or a dedicated ESP action over the built-in sender.
The Zapier email tools in order of risk
Not all Zapier email actions are created equal. Here is how we rank them for production use:
- Email by Zapier — Lowest deliverability. Shared sending domain. Acceptable for internal alerts to a few teammates, bad for customer-facing email.
- Gmail — Good for low-volume personalised email. Daily sending limits apply (2,000 from Workspace, 500 from personal). Bad for marketing bulk.
- Outlook / Microsoft 365 — Similar to Gmail. Fine for low-volume, bad for bulk.
- Mailchimp, SendGrid, Mailgun, Brevo, Postmark — Best. Dedicated sender reputation, proper authentication, bulk-friendly.
- Webhooks by Zapier — The actual fix. Use this to call your ESP's transactional API with full control over headers.
The placement-check pattern
Before the Send step, insert two actions:
- Webhooks by Zapier → POST to
/api/tests. Body contains subject, from, and HTML. Save the returnedtokento the zap context. - Delay by Zapier → Delay For five minutes. This is a free built-in action; it does not count against your task quota as a separate task.
- Webhooks by Zapier → GET
/api/tests/:token. Parse the response. The score lives atscore. - Filter by Zapier — only continue if
score is greater than 70. Otherwise the zap halts and you can add a Slack step on the opposite branch. - Your real Send step runs only when the filter passes.
Example webhook configuration
In the Webhooks by Zapier POST step, configure the following:
URL: https://check.live-direct-marketing.online/api/tests
Method: POST
Data Pass-Through: false
Data:
subject: {{Subject from Trigger}}
from: campaigns@yourbrand.com
html: {{HTML body from Trigger}}
Headers:
Content-Type: application/json
Accept: application/jsonZapier will serialise the Data fields as JSON automatically when Content-Type is set. The response appears in the step output as structured fields; you can reference token in later steps via {{Token}}.
A native integration is in private beta. It will appear in the Zapier app directory as a single Check Placement action — no webhooks, no delay guesswork, automatic zap halt on low scores.
Zapier task costs
Each webhook step is one task. Each delay is zero tasks. Each filter is zero tasks. So a placement-guarded zap costs exactly two extra tasks per run versus an unguarded one. For most plans this is negligible.
If the zap fires 50 times a day, that is 100 extra tasks per day, 3,000 per month — well inside the Professional plan. If your volume is higher and Zapier tasks become a cost center, graduate to Make or n8n where operations are 10x cheaper.
Common mistakes we see
Sending with Gmail from a free @gmail.com address
Free Gmail addresses cannot be customised with SPF / DKIM / DMARC beyond Google's defaults. Deliverability to Outlook and Yahoo is poor for anything that looks like bulk. Use a Workspace domain or switch to an ESP.
No Filter step — just "soft warning"
Some users add the placement test but skip the filter, on the assumption "it is just a warning." This is the same as not testing at all. The value is in blocking the send. Be strict: placement below threshold, halt.
Testing with different content than the real send
If you test with a generic subject line and send a campaign with an emoji and three exclamation marks, you tested nothing. Pass the exact content through the test.