Mailmodo · AsyncAPI Specification

Mailmodo Webhooks

Version

View Spec View on GitHub EmailInteractive EmailAMP for EmailMarketing AutomationTransactional EmailCampaignsJourneysCustomer EngagementAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-13'
method: searched
source: >-
  https://www.npmjs.com/package/@mailmodo/cli (README, read verbatim 2026-08-13) —
  `settings.webhookUrl` on each product and the `report --event` / `logs` event vocabulary.
name: Mailmodo Webhooks
description: >-
  Mailmodo emits outbound delivery events to a customer-configured webhook URL, but publishes no
  payload schema, no signature/verification scheme, no retry policy and no AsyncAPI document. The
  event NAMES below are published — they are the filter values Mailmodo's own CLI accepts on
  `report --event` and reports back in `logs` — so the catalog is real; the message contract is not.
  NOTHING here is invented: where Mailmodo publishes no payload, this file says so rather than
  modelling one.
asyncapi_published: false
asyncapi_probed:
  - url: https://api.mailmodo.com/asyncapi.yaml
    status: 404
  - url: https://developers.mailmodo.com/asyncapi.json
    status: 404
    note: Returns the Stoplight SPA HTML shell.
transport: https
direction: outbound
configuration:
  surface: mailmodo.dev (the @mailmodo/cli + @mailmodo/sdk lifecycle-email product)
  field: settings/products[].webhookUrl in mailmodo.yaml
  command: mailmodo settings --set webhook_url=<url>
  note: >-
    Configured per product. The api.mailmodo.com REST API documented in openapi/ has NO outbound
    webhook surface of its own — its "webhook" documentation is INBOUND (third-party webhooks
    triggering a Mailmodo campaign), which is the opposite direction.
events:
  - name: sent
    description: The message was handed to the sending infrastructure.
  - name: delivered
    description: The receiving mail server accepted the message.
  - name: opened
    description: The recipient opened the message.
  - name: clicked
    description: The recipient clicked a link in the message.
  - name: bounced
    description: Delivery failed at the receiving server.
  - name: complained
    description: The recipient marked the message as spam.
  - name: skipped
    description: >-
      The send was suppressed — e.g. a conditional rule on the sequence evaluated false, or the
      contact is on the suppression list.
  - name: unsubscribed
    description: The recipient unsubscribed.
event_record_shape:
  source: '`mailmodo logs --json` output documented in the CLI README'
  fields:
    - timestamp (ISO 8601)
    - emailId
    - status (one of the event names above)
    - contact (email address)
    - reason (nullable — populated on failure/bounce)
  caveat: >-
    This is the shape of a log ENTRY returned by the CLI's own read API. Mailmodo does not state that
    the outbound webhook payload uses the same shape, so it must not be relied on as the message
    schema. Confirm against a live delivery before coding to it.
gaps:
  - No payload schema published for the outbound webhook.
  - No signature header, shared secret or verification procedure published.
  - No retry, backoff or dead-letter policy published.
  - No event-catalog page on mailmodo.com; the vocabulary is only discoverable via the CLI README.
  - No AsyncAPI document, so no machine-readable event contract exists.
pointer: >-
  type Webhooks only. No AsyncAPI pointer is emitted — there is no AsyncAPI document to point at, and
  emitting one would credit Mailmodo with an event contract it has not published.