MessageEvents: Every message event in one API call

In July, we added Delivery Confirmations to the details activity screen of email messages. This allowed users to see, with certainty, that messages were actually being delivered to recipient email servers. The task we were trying to accomplish was to give even more transparency to the life-cycle of the message. Even if the message was marked as “Sent” in Postmark, it may not have reached the recipient immediately for a variety of reasons.

Delivery confirmation

We got a lot of great feedback from this update. Users were able to see for themselves whether or not a message was successfully delivered for their own peace of mind. All of these details were great, but we realized you might want to take this a step further and programmatically verify message delivery for your applications. Doing this gives your team a fast way to follow up on support requests and reduce the time it takes you to report on message delivery. With this in mind, we set out to integrate Delivery Confirmations into the Postmark API.

Today we’re launching an update to the Messages API message details call that includes new data for Delivery Events; when they’re sent, when they’re opened, or when and if they bounce. The array will contain a list of all the things that happen to the message as it’s delivered to its destination and anything that happens after the fact. All of this data was available through separate API calls before, but now we’ve bundled up a summary of the events right into the Messages API to get this information to users as fast as possible without having to make separate calls. The list will contain brief summaries of the events including delivery confirmations, open tracking events, and bounces.

"MessageEvents": [
  {
    "Recipient": "john.doe@yahoo.com",
    "Type": "Delivered",
    "ReceivedAt": "2014-02-14T11:13:10.8054242-05:00",
    "Details": {
      "DeliveryMessage": "smtp;250 2.0.0 OK l10si21599969igu.63 - gsmtp",
      "DestinationServer": "yahoo-smtp-in.l.yahoo.com (433.899.888.26)",
      "DestinationIP": "173.194.74.256"
    }
  },
  {
    "Recipient": "john.doe@yahoo.com",
    "Type": "Opened",
    "ReceivedAt": "2014-02-14T11:20:10.8054242-05:00",
    "Details": {
      "Summary": "Email opened with Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)"
    }
  },
  {
    "Recipient": "badrecipient@example.com",
    "Type": "Bounced",
    "ReceivedAt": "2014-02-14T11:20:15.8054242-05:00",
    "Details": {
      "Summary": "smtp;550 5.1.1 The email account that you tried to reach does not exist. Please try double-checking the recipient's email address for typos or unnecessary spaces.",
      "BounceID": "374814878"
    }
  }
]

The summaries don’t contain all the detailed information available in the respective bounce or opens API calls, but they can give an indication of what happened to the message and will allow users to decide if they need to get more details for that event.

For example, when you send an email message through the Postmark email API, a MessageID is returned. You can setup a routine to check to make sure the message is delivered by using the Messages API and the MessageID. This will give you the best possible insight into the status of the message and let you know the message was safely delivered to its recipient.

We’ll continue adding new data to the activity detail screen and API calls to give you the most up-to-date insights into the status of your emails. We think each message is important and we want you to have all the same insights we do when looking at the status of a message.