Event-triggered emails

Fire emails from any product event.

Transactional and marketing email from the same event stream. Schema-validated, version-controlled, webhook-friendly.

event.ts TypeScript
 // fire an event → workflow + email both run
await mailazy.events.send({
  user_id: "u_42",
  name: "cart.abandoned",
  properties: {
    items: 3,
    total_cents: 4900,
    currency: "USD"
  }
}); 
Sub-features

API, webhooks, schemas.

Event API

One POST per event. Idempotent. Batched up to 1k per request.

Webhooks

Subscribe to delivery, open, click, bounce, complaint, unsub.

Schemas

Versioned payloads. Strict typing. Reject malformed before workflow.

Schemas

Schemas you can lint in CI.

Define event payloads up front. Mailazy validates incoming events against your schema and rejects malformed payloads before they reach a workflow.

  • JSON Schema or TypeScript types. Export from your codebase, import to Mailazy.
  • Version pinning per event. Roll out v2 without breaking v1 consumers.
  • Replay rejected events. Fix payload, re-fire — no data loss.
cart.abandoned.schema.ts TypeScript
 // v2 — versioned, typed
export type CartAbandoned = {
  user_id: string;
  name: "cart.abandoned@v2";
  properties: {
    items: number;
    total_cents: number;
    currency: "USD" | "EUR";
  };
}; 
Use cases

Emails firing from product events.

Order receipts

order.placed → receipt with itemized total + shipping ETA.

Auth flows

user.signup, password.reset, magic-link — sub-second delivery.

Notifications

comment.posted, task.due, shipment.delivered, deal.closed.

Fire from anywhere

Works with your event stack.

REST API · Webhook · Segment · Stripe · Shopify · GitHub Actions · Temporal

Fire your first event-triggered email.

Free for 1,000 contacts. POST request in under 10 lines.