Custom webhook integration

Generic POST endpoint with bearer auth. Map any event to actions: send template, upsert contact, apply tags, enroll sequence.

Use this for

  • Zapier / n8n / Make.com
  • Your own backend posting events on signup, plan change, cancellation, etc.
  • Anything that can speak HTTP POST

Setup

Brand → Integrations → Connect Custom webhook. Maillayer mints an integration row + a webhook URL + a bearer secret. The Setup tab gives you:

curl -X POST https://<your-app>/api/hooks/<integrationId> \
  -H "Authorization: Bearer <secret>" \
  -H "Content-Type: application/json" \
  -d '{
    "event": "user.signup",
    "data": {
      "email": "[email protected]",
      "first_name": "Alice"
    }
  }'

Event resolution

Maillayer figures out the event name in this order:

  • Query parameter: ?event=user.signup
  • Body field: "event": "user.signup"
  • Body field: "type": "user.signup" (Stripe-style)
  • Falls back to * (matches any wildcard action)

Configure actions

The Actions tab is where you map events → actions. Each action has:

  • Event filter: user.signup exact match,customer.* prefix, or * for any.
  • Action type: send_template / upsert_contact / apply_tags / enroll_sequence.
  • Action config: field mappings using {{data.email}} syntax.

Example: signup → welcome + sequence enrollment

Three actions on event user.signup:

  • upsert_contact — email {{data.email}}, first_name {{data.first_name}}, tags ['signup', 'free-trial'].
  • send_templatetpl_welcome, to {{data.email}}.
  • enroll_sequence — onboarding, by {{data.email}}.
Inspect everything in Logs
The integration's Logs tab shows every inbound POST: payload, actions run, per-action status. Click a row to expand and see exactly what fired and what errored.