Misc. Technical Notes about SMTP & ESP Vendor Connections

Table of Contents:

Amazon SES

Sender email addresses, that you'll be using in Ongage need to be verified here: https://console.aws.amazon.com/ses/home#verified-senders:email
In order for your Amazon SES account to work properly in Ongage, the following functions in Amazon SES need to be enabled:

  1. GetSendQuota
  2. ListIdentities
  3. ListVerifiedEmailAddresses
  4. SendRawEmail
  5. VerifyEmailAddress

(info) If you don't enable these, you'll get a "Credentials are not verified" message when setting up the account in Ongage even if the credentials are correct. By default these functions are enabled, and only if you actively disabled them, will you need to re-enable them.

  • (warning)Note: Amazon SES does not allow the usage of background-image: url("data:image/png;base64… ,  attempting to do so will result in a failed campaign, in Ongage the error message you'll see is "Illegal content".
     

(info)  How to Move Out of the Amazon SES Sandbox

Bounce Processing with Amazon SES and sesbounce1@mxprocessor.ongage.net 

  • In the case of Amazon SES, Ongage uses the following email address for bounce processing sesbounce1@mxprocessor.ongage.net .
  • Ongage automatically adds this email address to your verified senders, in your Amazon SES account, when you setup it up in Ongage.
  • It is used for the processing of hard bounces, soft bounces, and complaints.

(question) Note: this email address does not appear in your Return-Path, and your Return-Path in the case of Amazon SES will look something like this:

Return-Path:
 000014f7dba4d4-71c6f9a2-92ad-45c5-803b-f6dc17f27687-000000@amazonses.com 

About Amazon SES Stats

For campaigns sent via Amazon SES, the stats for Sent and Success, will initially appear as if all were sent successfully. That is because Amazon is a unique SMTP that does not provide Sent and Success stats. As time goes by after the campaign completed, the Success stats will start to drop, as hard bounces and soft bounces start returning to the bounce processing mailbox noted above. Ongage then subtracts these bounces (soft and hard) from the success count. Most bounces are returned within the first few hours after the campaign completed, but as the outbound ESP/SMTP may attempt to deliver to some trailing emails for up to 72 hours, only after that will one have the final success and failed count.

Oracle/Dyn

Dyn System Status Page

https://www.dynstatus.com/

Custom X-Headers

Dyn has a place in its UI to define Custom X-Headers: Email Delivery > "Integration" tab > Scroll down to "Custom X-Headers":
X-CONTENT-ID - this X-Header is used by Ongage and shouldn't be removed.
X-UNSUB-ID - this X-Header refers to Dyn's list unsubscribe and if in place also shouldn't be removed.

Mailgun 

  • There could be Complaint Discrepancies when comparing between the Ongage platform vs. Mailgun platform. The reason for that is Ongage only counts unique complaints, while Mailgun numbers are raw, i.e., they includes multiple complaints from the same email address.
  • If on a campaign you get an error "Business verification is required" – this typically means that your Mailgun account was closed/shutoff for some reason and you should contact Mailgun ASAP as to what is the issue with your Mailgun account.

Audit Copy of Email Message 

  • Mailgun stores the content of all email messages for 72 hours max after they have been submitted to their service. It's possible to retrieve this content via the Mailgun control panel or via their API.

Mailgun Status Page

Mailgun Status Page

SendGrid 

When setting up SendGrid in Ongage if you get the following warning message: "Unable to set the 'Event notification' on SendGrid... " That means: 

  1. Your SendGrid account does not support 'Event notification'.
  2. Which means your SendGrid account can only supports 1 Ongage List.
  3. If you use this SendGrid account with multiple Ongage Lists it will not work correctly.
  4. You need to upgrade your SendGrid account to a level that supports 'Event notification' on if you're using multiple lists in Ongage.

When setting up SendGrid in Ongage if you get the following warning message: "API Credentials Invalid"  you may need to do the following:

  1. Go to https://app.sendgrid.com/settings/credentials/create

  2. Create a new user with both options checked

  3. Integrate the credentials of this new user in Ongage

About SendGrid Webhooks and Ongage

  • Ongage uses SendGrid Webhook's in order to retrieve beahavioral data from SendGrid, namely hard bounces, soft bounces, complaints, list-unsbuscribes. Regular unsubscribes, opens and clicks, Ongage tracks on its own, so this info is not retrieved. 
  • Ongage automatically sets up these webhooks when you save a SendGrid connection in Ongage.
  • These webhooks must point to Ongage, otherwise the above noted behavioral data will not get retrieved correctly.
  • If for any reason you disable them, then typically all the above will be propagated to all your Ongage lists.
  • You can see if SendGrid Webhooks are pointing to Ongage if you go into your SendGrid Account: https://app.sendgrid.com/settings/mail_settings
  • Finally, for technical users, with their own in-place CRM, and want/need SendGrid webhooks to push data directly to their system, you can call http://trkpnt.ongage.net/send.grid.receiver.php manually from your CRM, with the exact data that SendGrid provided, and thus propagate this delivery data back to your Ongage account. If you'd like to go this route then:
    • Notify Ongage Support to coordinate this back-end change.
    • Ongage on the back-end will set the created_notifciation to value 0 and set the account sendgrid_ignore_notifications flag to on, so it Ongage won't change the notifications URL back to Ongage, whenever the ESP connection is saved again.
    • Important for all these changes to be coordinated tightly, so that no delivery data is lost in the switch.
    • Here you can see an example template PHP code for posting the data back to Ongage: ESP/SMTP/SMS Vendors Knowledge Base

About SendGrid Tracking Domains 

(warning) You should not set the exact same tracking domain in SendGrid as the one you setup in Ongage as your links will stop working!

(info) In general we recommend not to have double tracking and best practice is to only use the Ongage tracking.

Technical Details About Ongage Sending via SendGrid

The sending speed using SendGrid depends on the content which is being sent:

  • Ongage sends one-by-one: if the content includes something like ocx_feed_dynamic_html or other tags which produces dynamic content.

  • Ongage Sends 25 contacts in single call - if the content contains only Dynamic Fields and the Ongage inhouse servers are being used.

  • Ongage Sends 500 contacts in single call - if the content contains only dynamic fields and inhouse servers are not being.

SMTP.com 

SMTP.com Bounce Classifications

http://api.smtp.com/doc/file.BOUNCE_CLASSIFICATIONS.html

  • SMTP.com determines the HB status of an email address (not Ongage)
  • In the above classification, in the case of codes: 10, 13, 21, 30, 40 the are marked as hard bounces in Ongage.

SMTP.com Credentials Status and Service Status API Call Check

This is the command used behind the ESP setup page to check if the credentials of that given SMTP.com connection is valid: https://api.smtp.com/v1/account/senders.json?api_key=

The key value to use in the command is the value entered in the 'Access Key' field of the ESP setup for SMTP.com.

Example of invalid credentials: https://api.smtp.com/v1/account/senders.json?api_key=8d6f933b2a8babe3728754f2e4b86

{"message":"Unauthorized access: keys are invalid","code":1403}

Example of valid credentials: https://api.smtp.com/v1/account/senders.json?api_key=enter here a valid key

{"senders":[],"message":"OK","code":0}

This command can also be used to see if SMTP.com servers are up, here's a response you might get if their servers are down (as happened once when their system was under a DDOS attack ):

{"message":"Internal server error","code":1500}

(info) For a full list of SMTP.com error codes and explanations please see the following: https://www.smtp.com/developers/documentation/error-codes/

Emails arrive after 24 hours for non-warmed up SMTP.com IPs

  • Some emails sent to SMTP.com can get queued in their servers, if ISPs are not accepting these emails for a first delivery attempt (i.e., new IP address, lack of warm up, limitation on ISP side, etc).
  • If emails are not delivered on a first attempt, then they are queued for delivery on SMTP.com's server for 24 hours.
  • In this case SMTP.com accepts all emails for sending from Ongage, but Stats for Delivered/Bounce emails cannot be updated so long as they are still queued.
  • Which is why customers may wait up to 24 hours to see completed delivery and stats for such campaigns.

SparkPost

Ongage SparkPost Integration

There are three different SparkPost products can be setup in Ongage:

  1. SparkPost
  2. SparkPost Enterprise 
  3. Momentum. Please speak to support for more about this option.
  • Link to SparkPost's Ongage Integration help: Partner Integration › OnGage Integration > Support Center
  • See the Ongage SparkPost Setup Tutorial
  • (warning) If you try to send a campaign from Ongage, and your sending domain in SparkPost was not yet setup then: (1) the emails will not get sent (2) the snapshot report will show that all sent emails were hard-bounced (though these emails will not actually be marked as hard-bounced in Ongage or SparkPost. It just shows like that in the campaign report, till you setup your sending domain correctly in SparkPost).

Ongage-SparkPost Sending Rates

  • Ongage is currently setup to send ~200 emails/sec via the SparkPost plug-in

Ongage Custom X-Headers in Messages Sent via SparkPost

The following custom X-Headers are injected into all email messages sent from Ongage via a SparkPost connection:

X-Custom-Campaign-ID: <ongage campaign id>
X-Campaign_ID: <ongage campaign id>-<ongage sub-campaign id>
X-JOB-ID: <ongage campaign id>

  • Campaign ID is stored in the Ongage System variable: {{ocx_campaign_name}}
  • Sub Campaign ID is stored in the Ongage System variable: {{ocx_child_id}}

For example:

X-Custom-Campaign-ID: 1208503334
X-Campaign_ID: 1208503333-1208503334
X-JOB-ID: 1208503334

How are bounces from SparkPost mapped in Ongage

See also SparkPost link: https://support.sparkpost.com/customer/en/portal/articles/1929896-bounce-classification-codes?b_id=7411

We followed their instructions and in our system:

Hard Bounces:

1- Undetermined: The response text could not be identified
10- hard The recipient is invalid.
30- hard No recipient could be determined for the message
90- hard The message is an unsubscribe request

Soft Bounces:

20- soft:The message soft bounced.
21- soft The message bounced due to a DNS failure.
22- soft The message bounced due to the remote mailbox being over quota
23- soft The message bounced because it was too large for the recipient
24-soft The message timed out
25- admin The message was failed by Momentum's configured policies
40- soft The message failed for unspecified reasons
50-block The message was blocked by the receiver.
51-block The message was blocked by the receiver as coming from a known spam source
52-block The message was blocked by the receiver as spam
53-block The message was blocked by the receiver because it contained an attachment
54-block The message was blocked by the receiver because relaying is not allowed.
60- soft The message is an auto-reply/vacation mail
70- soft Message transmission has been temporarily delayed
80- admin Message transmission has been temporarily delayed
100- soft The message is a challenge-response probe

SparkPost Extended Codes: 

https://support.sparkpost.com/customer/en/portal/articles/2140916-extended-error-codes

Status page for all ESPs

Following are the status pages for ESPs/ SMS Vendors where you can check the status of their services. You can also subscribe to updates for that particular ESP that you are using to get an email notification whenever there is an issue at the respective vendor end. 

You can use the following services as well for checking status of ESP/SMS Vendors you are using.

https://statusgator.com/services/

https://statusticker.com/

https://www.saashub.com/

No Longer Supported Vendors

Teradata 

  • List field length limitation: Field names length in Teradata can not be longer than 25 characters. If in Ongage you have any field names that are longer than 25 characters, Teradata will fail the campaign.
  • Slow test campaigns: test email sent via Teradata are known to be slower in general, and certinaly are slower than the top tier SMTP vendors such as Amazon SES, Dyn, SparkPost, SendGrid.

TotalSend (bt AMS) 

  • Draft Mode: If a campaign gets rejected (typically due to poor quality list) then in TotalSend it will be set to draft mode.
  • Sending Stats: can take several hours to get retrieved. This is something on the side of TotalSend (and not Ongage).

Constant Contact

Please make sure to setup the following in Constant Contact:

  1. Login to your Constant Contact account: from the Home page, go to "My settings" -> Organization Address -> Edit Address and fill in your details
    1. If you don't do this, then the campaign you send from Ongage will fail due to an error 

Regarding Dynamic Fields and Field Mapping with Ongage:

  1. This plug-in currently only supports 11 dynamic fields
  2. 5 pre-set ones: Email, Address, Country, First Name, Last Name
  3. That leaves you with 6 custom fields on their side, that you can map any additional dynamic fields from your Ongage list to them. For example phone, gender, product_id, etc.

Misc. Other 

  1. Uploading segments to Constant Contact can take a long time (hours) for large campaigns 
  2. HTML comments in your HTML email may cause problems and specifically a comment with 3 dashes like this: <!--- ... ---> as we well as HTML comment blocks  that may contain malformed tables or links
  3. Some clients prefer to shutoff Ongage chunking in the case of Constant Contact, as their deliverability is optimized to send all contacts in one chunk.

SmartFocus

In the case of SmartFocus the following fields are mapped automatically

OngageSmartFocus
address EMVADMIN1
country EMVADMIN2
first_name FIRSTNAME
last_name LASTNAME
gender EMVADMIN3

(info) For any other fields you'd like to use as dynamic fields in the email message that will be sent via SmartFocus,  please contact Ongage Support, to map those additional fields.

GetResponse

GetResponse has some technicalities that are unique to it:

  1. In GetResponse: a From NameFrom Email Address and Reply Address make-up what is referred to in GetResponse a campaign!
    1. So long as in Ongage you're using the same From Name, From Email Address and Reply Address, from multiple Ongage campaigns, they will go through the same GetResponse campaign!
  2. Another way to set the GetResponse campaign in Ongage, is to ask Ongage Support to set the campaign on the ESP connection, so that every email sent from that particular ESP connection will get associated with the GetResponse campaign associated to that connection.
  3. Every new GetResponse campaign requires a Double-Optin, i.e. the recipients in that campaign need to 1st confirm that they want to get emails from that campaign before the emails from that campaign will be sent to them.
  4. GeReponse help and tutorials

    1. How can I disable double opt-in?

    2. https://support.getresponse.com/faq/how-i-disable-confirmation-message

BlueHornet

Known issue: Complaint stats are marked as unsubscribes in the Ongage aggregate reports. Having said that on the behavioral level, the contact's status is marked correctly as complaint, as it should be.