Sending Emails

Sending emails is the core purpose of Omnivery. To facilitate sending, Omnivery provides multiple submission API interfaces as well as SMTP submission. You are free to choose the method of submission or even combine multiple methods based on your systems.

  • SMTP submission - recommended for legacy systems that do not support API submissions. It can be easily used for message relay from on-premises MTA to leverage the security, deliverability, and tracking features of Omnivery.

  • Mailgun API - an API mimicking the Mailgun API is the perfect choice for systems that have a Mailgun integration or programmers familiar with this API. This is our most complete API implementation, allowing for complete control and account management.

  • Sendgrid API - an API mimicking the Sendgrid API is the perfect choice for systems that have a Sendgrid integration or programmers familiar with this API. This API currently only supports sending messages and email validation.

  • Sparkpost API - an API mimicking the Sparkpost API is the perfect choice for systems that have a Sparkpost, aka MessageBird, aka Bird integration or programmers familiar with this API. This API currently supports sending messages, email validation, and domain management.

All of the submission methods listed above will give you access to the full suite of Omnivery features, given your sending domain is correctly set up.

Message Headers

Omnivery automatically adds a number of required headers to messages. In some cases, we will overwrite the supplied header for technical or compliance reasons. Headers shown in bold can be supplied during message submission.

Header Description
X-OV-Callback-URL URL of a webhook endpoint to pass status information to
X-OV-Callback-Format Format of the webhook call (bloomreach, bloomevents, mailgun, sendgrid, sparkpost, etc.)
X-OV-Tag Message tag
X-OV-Variables Message variables
X-OV-Track true/false - enable/disable message tracking
X-OV-tracking_click true/false - enable/disable click tracking
X-OV-tracking_open true/false - enable/disable open tracking
X-OV-Require-TLS true/false - enforce TLS for message delivery
X-OV-testmode true/false - enable/disable test mode; messages in test mode are silently dropped
X-OV-Template Template filename to be used for templating
X-OV-Template-Variables Template-specific variables
X-Campaign-ID Campaign identifier (for reporting)
Message-Category This header allows you to set the category of your email campaign. It is set to bulk/newsletter by default for marketing messages and transaction/commercial for transactional messages.
List-Unsubscribe This header is set automatically for marketing messages. If this header is provided at the time of submission, we will replace the header with our unsubscribe URL and redirect users to the URL provided in case of GET requests. This way, all messages sent are always compliant with the bulk sender guidelines of all major mailbox providers, unsubscribes are always honored, and the user experience is retained.
List-Unsubscribe-Post Omnivery supports one-click unsubscribe according to RFC8058, and this header is set accordingly to List-Unsubscribe=One-Click
List-Help This header is set automatically for transactional messages instead of List-Unsubscribe headers
Precedence This header is set automatically to bulk for marketing messages
X-CSA-Complaints This header is set automatically to csa-complaints@eco.de
X-Complaints-To This header is set automatically to abuse@omnivery.com
Abuse-Reports-To This header is set automatically to abuse@omnivery.com
X-Auto-Response-Suppress This header is set automatically to AutoReply, OOF, RN, NRN
CFBL-Address Omnivery supports RFC9477 Feedback-Loop reports, and this header is set automatically to cfbl@omnivery.net; report=arf

Merge Tags

Omnivery supports % enclosed recipient merge tags. These can be used in message body as well as templates to be replaced with recipient-specific data. For example, the following message code:

<strong>%recipient.first_name%</strong>

When combined with a submission variable first_name with a value of Jack, will result in:

<strong>Jack</strong>

In addition, there are specific merge tags to place an unsubscribe URL into the message body. You can use %unsubscribe_url%, [unsubscribe_url], [unsubscribe], or [signout] to be replaced with the actual unsubscribe link specific to the recipient of the message.

Sample unsubscribe code:
<a href="[unsubscribe]">Unsubscribe</a>

Variables

Each of the submission APIs supports the use of variables. These can either be used to drive the message content or just to pass variables that will be returned via webhooks.