Delivery Events & Forensic Telemetry
Every activity logged in Emalc originates from an immutable EmailDeliveryEvent. This reference catalog documents all event strings, their triggers, the metadata collected during execution, and how to interpret raw SMTP response codes.
Event Naming Convention#
Emalc utilizes standard dot-notation prefixes for all system logs and webhook dispatches:
email.<lifecycle_state>For example, when an email is accepted into a recipient's mailbox, the event string is email.delivered. When a recipient opens an email, the event string is email.opened.
Complete Event Catalog#
Standard Outbound Progression#
The standard lifecycle of a successfully dispatched and placed message:
| Event String | Trigger Point | Forensic Data Collected | System Action |
|---|---|---|---|
email.queued | Message accepted by Emalc dispatch pipeline | Queue priority, scheduled dispatch window | Holds email until MTA worker picks up job |
email.sent | Handed off to global upstream MTAs | Outbound MTA host, TLS encryption handshake | Actively transmits payload toward recipient MX server |
email.delivered | Destination mail server accepts email payload | Remote server response (SMTP 250 2.0.0 OK), latency ms | Marks delivery as successful |
Understanding SMTP Status Codes#
When inspecting the Response Body in the Log Detail Sheet, destination servers return standardized three-digit SMTP response codes:
| Code Range | Meaning | Example String | Recommended Action |
|---|---|---|---|
250 | Success | 250 2.0.0 OK Message accepted for delivery | None. Message successfully reached destination server. |
421 | Service Unavailable | 421 4.7.0 Try again later, closing transmission | No action required. Emalc retries connection automatically. |
451 | Local Processing Error | 451 4.3.0 Mail server busy or greylisting active | Emalc will automatically retry dispatch with backoff. |
452 | Insufficient Storage | 452 4.2.2 Mailbox is full / quota exceeded | Retried for 72 hours. If unresolved, marked as soft bounce. |
550 | Mailbox Unavailable | 550 5.1.1 User unknown / recipient does not exist | Hard bounce. Emalc automatically suppresses recipient. |
554 | Transaction Failed / Policy | 554 5.7.1 Relay access denied or IP blocked | Verify domain SPF/DKIM authentication and IP reputation. |
Correlating Logs with Webhooks#
Emalc dispatches real-time webhooks for every recorded delivery event. You can correlate incoming webhook payloads directly with the Logs dashboard:
{
"event": "email.delivered",
"eventId": "a1b2c3d4-e5f6-7a8b-9c0d-1e2f3a4b5c6d",
"emailId": "f9e8d7c6-b5a4-3210-fedc-ba9876543210",
"recipient": "alex@customer.com",
"timestamp": "2026-09-17T08:12:05.000Z",
"smtpResponse": "250 2.0.0 OK Message accepted for delivery"
}eventId: Matches the unique ID shown in the Log Detail Sheet.emailId: Corresponds to the master message record visible in the Emails dashboard.
Automated Webhook Alerting
Use eventId to deduplicate incoming webhook streams and immediately correlate failed delivery logs with external telemetry systems like Datadog, Grafana, or Sentry.