Sunday, December 21, 2008

Users calling API method SendMassEmail for single recipient campaigns now auto-converted to SendTransactionalEmail

The following email message was sent out this evening to users calling SendMassEmail to send out a large number of single-recipient email messages:


Today we made a change to your account involving how your email campaigns to single recipients are sent via the API. You are currently calling our API method SendMassEmail in succession to send a high volume of single-recipient "transactional" type email messages. Several days ago we launched a new API method, called SendTransactionalEmail, which is specifically designed for sending single-recipient messages. The change we made to your account, forces any calls to SendMassEmail to be converted to SendTransactionalEmail method calls, when the call to SendMassEmail is for a single email recipient only.

There are several reasons why we made this change to your account:

1. The SendMassEmail method has always been designed for sending email campaigns to a group of recipients at once. When calling this method, the system treats the campaign as a campaign going to a group of recipients and does processing involving de-duping the final recipient list, deleting invalid email addresses, assigning sending servers based on internal rule sets, and other steps to generate the final recipient list and personalize each email message. Even single recipient campaigns sent via this method take 30-60 seconds to send due to the pre-processing steps that take place with each email campaign. Additionally, when SendMassEmail is called, all campaign data is stored in your account, including the Subject, HTML Message, and Plain Text Message. Calling SendMassEmail thousands of times takes up a lot of space in our database.

2. The new SendTransactionalEmail method sends messages out over SMTP immediately upon the method call. Now emails will be sent 1-2 seconds after the method call rather than 30-60 seconds after.

3. The new SendTransactionalEmail method doesn't store the full message body in our database, since it sends the emails out right away over SMTP. Therefore overall system performance is greater and less storage is taken when single recipient emails go through this new method.

4. You'll now be able to see better reporting and statistics on single-recipient messages. With each individual call to SendMassEmail, each message shows as its own campaign in Reporting, making it difficult to assess what's happening across all of the messages together. Soon we will have an interface for Reporting on just transactional messages generated via SendTransactionalEmail. You'll be able to group different types of messages (Order confirmations, Welcome messages, Internal notifications, etc.), and see open-tracking and click-tracking statistics per Transactional Message Group.


The technical specification on the new method is here:

Here's a brief FAQ on the change:

1. Why did you set my account to convert calls to SendMassEmail to SendTransactionalEmail instead of letting me make the change in code myself?

We figured it would take our customers a while to make the code change on their own. And we didn't see any disadvantages of forcing the conversion to the new method. Furthermore, for our own benefit, we gain a lot of system preformance and database storage back by having single recipient emails go through SendTransactionalEmail rather than SendMassEmail.

2. What if I'm using SendMassEmail to send to Groups or recipients from a live web database?

Calls to SendMassEmail with Groups or live datasets as the recipients will not be altered. Only calls to SendMassEmail where a single recipient is specified are converted to SendTransactionalEmail.

3. Even though you're converting my method calls for me, should I still make the change in my code to SendTransactionalEmail?

Yes, you should. If you call this method directly, you'll be able to take advantage of Grouping and other features specific to this method.

4. Do I lose any tracking by using SendTransactionalEmail?

No, messages sent with SendTransactionalEmail still have open tracking and click tracking capabilities. The recipient is still checked against the unsubscribe and bounce lists before the email is sent. And the messages are still signed with DomainKeys and DKIM, provided your account has been setup to sign messages.

5. What if I want you to undo the change on my account and let me use SendMassEmail as before?

Sure, just let us know. We can't think of any benefit to doing so, but there are so many subtleties and different ways our customers use JangoMail, that it's possible we didn't think of everything. Just reply to this email or get in touch with us if you have a reason why you don't want us to force the SendTransactionalEmail method on you.

6. I don't see any of my messages in Reporting. How do I know my messages are being sent?

The reporting interface for transactional messages is still being built. It should be live under the "Reporting" tab by mid-this week. If you need reporting statistics beforehand, just let us know and we can manually query our database to show you what has been sent/opened/clicked.

7. I'm in the Sender Score Certified program. Will email messages sent via SendTransactionalEmail be sent through SSC-approved senders?

If you are in the SSC program, then yes, just like a regular email campaign, transactional email messages will also be sent through SSC approved senders.

One important difference with unsubscribes/bounces:

When calling SendMassEmail, if sending to an email address on your account's unsubscribe or bounce list, the method call is successful and during pre-processing that email address is removed from your final recipient list. When using SendMassEmail to send to single recipients, this would result in a campaign with 0 recipients.

When calling SendTransactionalEmail, an exception is thrown if you send to an email address on your account's unsubscribe or bounce list. Please be aware of this when writing your code or modifying your code to use SendTransactionalEmail instead of SendMassEmail. This change also is in effect for the accounts which we've put in the auto-conversion from SendMassEmail to SendTransactionalEmail.