Skip to main content
Custom SMTP events use the CS prefix and specific event type IDs in SendPost, so you can distinguish them from native SendPost and other TPSP events.

Custom SMTP Event Types

Event TypeIDTrigger
CSProcessed58SendPost accepted the message and queued it for relay to your SMTP server
CSSent59Your MTA returned 2xx on relay (message accepted by your server for delivery)
CSDelivered60Agent reports MTA status=sent (delivered to recipient’s mail server)
CSDeferred61Agent may send deferred; accepted by API but not stored (not shown in UI)
CSDropped62Relay to your SMTP failed after all retries; or non-retryable pre-send failure (e.g. no verified return path domain, suppression, validation)
CSHardBounced63Agent bounced/soft_bounced classified as hard (by SMTP description); or bounce processor (async DSN)
CSSoftBounced64Agent bounced/soft_bounced classified as soft (by SMTP description); or bounce processor
CSOpen65Recipient loaded the tracking pixel
CSClick66Recipient clicked a tracked link
CSSpamReport67FBL complaint (out of scope for initial release)
CSUnsubscribe68Recipient used the unsubscribe link/header

Event Flow

CSSent = Your MTA accepted the message from SendPost (synchronous SMTP 2xx response). CSDelivered = Your MTA successfully delivered to the recipient’s mail server (reported by the event agent from your MTA logs). This mirrors SendPost’s native model: Sent = accepted by sending infrastructure; Delivered = accepted by recipient’s mail server.
Emitted when SendPost could not relay to your SMTP server after all retries (connection failure, timeout, or 4xx/5xx from your server). This is a relay failure, not a recipient bounce. CSHardBounced is only from the agent (MTA status=bounced) or the bounce processor (async DSN).
Agent: Sends bounced or soft_bounced; SendPost classifies each to CSHardBounced or CSSoftBounced using the SMTP description (keyword-based). Bounce processor: Receives async DSNs to sp-bounce.{domain} and emits CSHardBounced or CSSoftBounced when the original message was sent via Custom SMTP.
The agent may send deferred events. SendPost accepts them but does not store deferred events (by design). CSDeferred (61) will not appear in the Events page or analytics.

Event Sources Summary

SourceEvents
SendPost queueCSProcessed
Synchronous SMTP response from your MTACSSent (2xx), CSDropped (after retries exhausted)
Event reporting agent (MTA logs)CSDelivered, CSHardBounced, CSSoftBounced (deferred accepted but not stored)
SendPost trackingCSOpen, CSClick, CSUnsubscribe
Bounce processorCSHardBounced, CSSoftBounced

Next Steps