Notification for email delivery status from Pinpoint Email or in SES

0

We are using pinpoint email for sending emails .Are there any way to know whether the email is delivered or not ? If the email is not delivered, does Pinpoint provide any way to identify this by sending some notifications for us to listen and act up on.

Are there any workaround for doing this ?

If pinpoint is not providing this functionality, does SES have this feature ?

1 Answer
0

Both Amazon SES and Amazon Pinpoint provide the functionality that you need. With Pinpoint, you need to enable event streaming. When you do that, you'll receive event notifications when emails are sent, delivered, clicked, bounced, etc. The delivery events will resemble the following example:

{
  "event_type": "_email.delivered",
  "event_timestamp": 1564618621380,
  "arrival_timestamp": 1564618622690,
  "event_version": "3.1",
  "application": {
    "app_id": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
    "sdk": {}
  },
  "client": {
    "client_id": "e9a3000d-daa2-40dc-ac47-1cd34example"
  },
  "device": {
    "platform": {}
  },
  "session": {},
  "attributes": {
    "feedback": "delivered"
  },
  "awsAccountId": "123456789012",
  "facets": {
    "email_channel": {
      "mail_event": {
        "mail": {
          "message_id": "0200000073rnbmd1-mbvdg3uo-q8ia-m3ku-ibd3-ms77kexample-000000",
          "message_send_timestamp": 1564618621380,
          "from_address": "sender@example.com",
          "destination": ["recipient@example.com"],
          "headers_truncated": false,
          "headers": [{
            "name": "From",
            "value": "sender@example.com"
          }, {
            "name": "To",
            "value": "recipient@example.com"
          }, {
            "name": "Subject",
            "value": "Amazon Pinpoint Test"
          }, {
            "name": "MIME-Version",
            "value": "1.0"
          }, {
            "name": "Content-Type",
            "value": "multipart/alternative;  boundary=\"----=_Part_314159_271828\""
          }],
          "common_headers": {
            "from": "sender@example.com",
            "to": ["recipient@example.com"],
            "subject": "Amazon Pinpoint Test"
          }
        },
        "delivery": {
          "smtp_response": "250 ok:  Message 82080542 accepted",
          "reporting_mta": "a8-53.smtp-out.amazonses.com",
          "recipients": ["recipient@example.com"],
          "processing_time_millis": 1310
        }
      }
    }
  }
}
EXPERT
answered a year ago
  • I think Enabling event stream will create kinesis streams. It will be bit costly I guess. (please correct me if i am wrong) Are there any other alternative cost effective solution ?

  • I think Enabling event stream will create kinesis streams. It will be bit costly I guess. (please correct me if i am wrong) Are there any other alternative cost effective solution ?

    You can use Kinesis Data Firehose to stream this data. In my opinion, this is a cost-effective option.

    The sample event record I showed in my previous post is about 2KB. Let's assume you send 1 million messages every day for a month, and each message generates three event records (send, delivery, open). That would be 180GB of data over the course of one month. The cost for Kinesis Data Firehose streaming is USD$0.029 per GB. Your total charge for streaming this data would be $5.22 per month. If you stored the data in S3, that would be an additional $4.14 per month ($0.023 * 180GB).

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions