Skip to content

Zapier and Make

Start a Zap or a Make scenario with each email an endpoint receives: the New email trigger (a REST hook that adds a JSON destination), the actions and the search, API key sign-in, and the catch hook to use while the apps are in review.

Updated Oct 2026

The webhooks.cc apps for Zapier and Make start a Zap or a scenario with each email an endpoint receives, with the fields and line items it read, and add actions and a search for endpoints and emails. They are the same apps on mailhooks.cc: one account, the same endpoints.

Both apps are in review with Zapier and Make, and are not listed in their directories yet. Until they are, use a catch hook: it receives the same signed email.received JSON the apps read.

Until the apps are listed

Any forwarding destination can post to a URL Zapier or Make gives you. Pointed at a catch hook, a JSON destination sends each email as the same email.received JSON the apps' trigger reads.

Zapier

  1. Create a Zap with Webhooks by Zapier as the trigger app and Catch Hook as its event, and copy the webhook URL Zapier shows (it starts with https://hooks.zapier.com/hooks/catch/).
  2. In webhooks.cc, open the endpoint's Settings, find Forwarding and add Your server with that URL. Under What it gets, leave only Emails ticked, so each email goes as Signed JSON. Click Add destination.
  3. Click Send test delivery on the destination, then test the trigger in Zapier so it picks up the sample.
  4. Map the values you need in the Zap's actions, such as data.subject, data.from.address, data.fields.order or data.parsed.lineItems, and turn the Zap on.

Make

  1. Add a Webhooks module with a Custom webhook trigger, create a webhook, and copy its URL.
  2. In webhooks.cc, add Your server with that URL under the endpoint's Forwarding, with only Emails ticked under What it gets, and click Add destination.
  3. While Make waits for data to work out the structure, click Send test delivery on the destination.
  4. Map the values in the next modules, such as data.subject or data.parsed.lineItems, and turn the scenario on.

Free accounts can do this too: destinations are on every plan, and a delivery does not use your quota, because each email already counted once when it arrived.

What the hook receives

One POST per email, shortened here:

{
  "type": "email.received",
  "timestamp": "2026-10-29T17:33:26.882Z",
  "data": {
    "id": "3f2a9c1e-0000-4000-8000-000000000000",
    "endpoint": { "slug": "orders-acme", "name": "Orders" },
    "address": "orders-acme@mailhooks.cc",
    "subject": "Order #1001 confirmed",
    "from": { "name": "Acme Store", "address": "orders@acme.example" },
    "fields": { "order": "1001" },
    "parsed": {
      "status": "matched",
      "layout": { "id": "orders", "name": "Acme orders" },
      "fields": { "order": "1001", "total": "37.50" },
      "lineItems": [
        { "sku": "ACME-TEE-M", "qty": "2", "price": "12.50" },
        { "sku": "ACME-MUG", "qty": "1", "price": "12.50" }
      ]
    }
  }
}

data.fields holds the endpoint's named fields and data.parsed what its layouts read; each is left out when the endpoint has none. Every key is listed under Signed JSON. Attachments arrive as signed download links unless the destination sends them inline or by name only (Attachments).

Each delivery carries Standard Webhooks headers (webhook-id, webhook-timestamp, webhook-signature) signed with the destination's secret, as every JSON destination does; see Verify the signature. Keep the hook's URL private all the same: anyone who has it can post to the Zap or scenario.

To send only some emails, add conditions under What it gets (Send only some captures); to send a smaller body of your own, pick Your own JSON instead (Your own JSON). The same works for n8n, Pipedream or any tool that gives you a webhook URL.

Connect the apps

Both apps sign in with an API key. Create one under Account > API keys on webhooks.cc or mailhooks.cc (keys start with whcc_) and paste it when Zapier or Make asks for the connection. The connection is checked by reading the account's usage, which any key may.

New email

The trigger is New Email in Zapier and Watch emails in Make, both instant. Pick the endpoint whose emails start the Zap or scenario.

It is a REST hook. Turning the Zap or scenario on adds a destination to that endpoint: format Signed JSON, emails only, sending to the hook Zapier or Make created, named Zapier (Zap 123) after the Zap or Make. Turning it off removes the destination again. While it runs you can see it in the endpoint's Forwarding list; deleting it there stops the emails, and each one uses one of the endpoint's 10 destinations.

Each record is the data of the email.received JSON above, so a Zap or scenario reads subject, from.address, fields.order or parsed.lineItems directly. When you set up the trigger, Zapier loads up to the three newest emails at the endpoint, built the way the hook will send them, so you can map real values.

When a hook is gone

When a Zap or scenario is removed, its destination is removed with it. If that fails and the destination stays behind, Zapier or Make answers 410 Gone for the old hook, and webhooks.cc turns the destination off instead of retrying it; the delivery log says why. Any destination whose URL answers 410 Gone is turned off the same way, so turn it on again only once its URL works.

Actions

ZapierMakeWhat it does
Create EndpointCreate an endpointCreates an endpoint, with an optional name, and returns its id, slug, webhook URL and email address
Send Test EmailSend a test emailDelivers a sample email to an endpoint, to an optional +tag, to try a Zap or scenario end to end; it counts as one request

Find Email in Zapier returns the newest email at an endpoint that contains the text you give, as the trigger would send it. Search emails in Make returns the endpoint's emails that contain the text, newest first, up to the limit you set (10 by default), with their sender, recipients, subject, text, HTML and attachments, but not their parsed fields.

Both use the search API, at most 60 searches per 10 minutes per account; when the limit is reached, the Zapier app asks Zapier to try again later. The routes the apps call count their rate limits per account rather than per address, because both platforms send every customer's calls from a few shared addresses.