Industry Context — Common BS Fingerprints in Software, SaaS & Tech Products
Postmark
(https://postmarkapp.com) 📸 Data Snapshot: May 24, 2026Analyze the raw signals below. How would a machine score this business’s credibility?
Here are the exact signals captured from up to six pages of the site — the same raw inputs the evaluation engine analyzed. They are grouped by signal type so you can weigh each the way the machine does.
🏗️ Semantic Structure — heading hierarchy & page identity (Info Density · Commodity Fingerprint)
HOMEPAGE Postmark: Fast, Reliable Email Delivery Service | SMTP | API (https://postmarkapp.com)
Postmark: Fast, Reliable Email Delivery Service | SMTP | API
Send transactional and marketing emails and get them to the inbox on time, every time. Postmark is a fast and reliable email delivery service for developers.
NAV_HEADING_REPEATED_BODY Official Postmark libraries | Postmark Developer Documentation (https://postmarkapp.com/developer/integration/official-libraries/)
Official Postmark libraries | Postmark Developer Documentation
Get information about the official Postmark API client libraries for Rails, Ruby, .Net, PHP, Node.js, Wordpress, and Grunt.
NAV_HEADER_HEADING_REPEATED_BODY_FOOTER Powerful & Reliable Email API Service | Postmark (https://postmarkapp.com/email-api/)
Powerful & Reliable Email API Service | Postmark
Easy integration, reliable delivery, great documentation: integrate with the email API that developers love and start sending in minutes.
NAV_HEADER_HEADING_REPEATED_BODY_FOOTER SMTP Service | Postmark (https://postmarkapp.com/smtp-service/)
SMTP Service | Postmark
A simple but powerful SMTP service for sending transactional email from your web application.
📝 The Narrative — clean text per page (Info Density · Semantic Coherence)
HOMEPAGE (https://postmarkapp.com) Postmark: Fast, Reliable Email Delivery Service | SMTP | API
[IMG: Dan Foster]
Spent the weekend shifting @SeshMysteries across from SendGrid to @postmarkapp and couldn't be happier with the experience so far ✨?
– Dan Foster
[IMG: Tyson Lawrie]
I’ve had great success with @postmarkapp and the API is solid as gold.
– Tyson Lawrie
[IMG: Steven Tey]
Just tried out @postmarkapp and boy is it blazing fast. Transactional emails that previously took 5-10s to reach my inbox with Mailgun are now hitting my inbox in less than 1s.11/10 would recommend.
– Steven Tey
[IMG: Lola]
I just implemented @postmarkapp in like 5 minutes. Email received in Yahoo in seconds. I am sold.
– Lola
[IMG: Anna Maste]
I have nothing but huge love for Postmark, one of my heroes in the bootstrapped world.
– Anna Maste
[IMG: Harvey Carpenter]
Ripped out Sendgrid and moved Growform's transactional emails over to @postmarkapp today.
Their app is ridiculously easy to use, they have a clear focus on deliverability and great docs. Highly recommend so far.
– Harvey Carpenter
[IMG: Kieran Masterton]
I’ve been so impressed with @postmarkapp since migrating almost all Smart Order Notifications transactional email to them last month. The peace of mind is amazing and the responsiveness of their support team is next level.
– Kieran Masterton
[IMG: Mike Verbruggen]
Sendgrid = FrustrationPostmark = ?
– Mike Verbruggen
[IMG: Ben Webster]
Been a postmark customer for a veeeerry long time. Stability and deliverability is so good I sometimes go months without thinking about it… just works(tm).
– Ben Webster
[IMG: Dan Foster]
Spent the weekend shifting @SeshMysteries across from SendGrid to @postmarkapp and couldn't be happier with the experience so far ✨?
– Dan Foster
[IMG: Tyson Lawrie]
I’ve had great success with @postmarkapp and the API is solid as gold.
– Tyson Lawrie
[IMG: Steven Tey]
Just tried out @postmarkapp and boy is it blazing fast. Transactional emails that previously took 5-10s to reach my inbox with Mailgun are now hitting my inbox in less than 1s.11/10 would recommend.
– Steven Tey
[IMG: Lola]
I just implemented @postmarkapp in like 5 minutes. Email received in Yahoo in seconds. I am sold.
– Lola
[IMG: Anna Maste]
I have nothing but huge love for Postmark, one of my heroes in the bootstrapped world.
– Anna Maste
[IMG: Harvey Carpenter]
Ripped out Sendgrid and moved Growform's transactional emails over to @postmarkapp today.
Their app is ridiculously easy to use, they have a clear focus on deliverability and great docs. Highly recommend so far.
– Harvey Carpenter
[IMG: Kieran Masterton]
I’ve been so impressed with @postmarkapp since migrating almost all Smart Order Notifications transactional email to them last month. The peace of mind is amazing and the responsiveness of their support team is next level.
– Kieran Masterton
[IMG: Mike Verbruggen]
Sendgrid = FrustrationPostmark = ?
– Mike Verbruggen
[IMG: Ben Webster]
Been a postmark customer for a veeeerry long time. Stability and deliverability is so good I sometimes go months without thinking about it… just works(tm).
– Ben Webster
[H1] The email delivery service that people actually like
Stop worrying if your emails made it to the inbox, and get back to focusing on what matters—building great products.
Start free trial
API documentation →
Since 2010, we've delivered billions of emails for companies of all sizes
Paddle
Indie Hackers
Faire.com
IKEA
litmus
desk
minecraft
livestream
UNICEF
Asana
Moz
Code Climate
LiveChat
1Password
Wistia
Betterment
Webflow
InVision
[H2] Start sending in minutes
With API libraries for pretty much every programming language you can think of, Postmark fits seamlessly into any stack.
# Send an email with curl
# Copy and paste this into terminal
curl "https://api.postmarkapp.com/email" \
-X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Postmark-Server-Token: server token" \
-d '{
"From": "sender@example.com",
"To": "receiver@example.com",
"Subject": "Postmark test",
"TextBody": "Hello dear Postmark user.",
"HtmlBody": "<html><body><strong>Hello</strong> dear Postmark user.</body></html>",
"MessageStream": "outbound"
}'
# Send an email with the Postmark Rails Gem
# Learn more -> https://postmarkapp.com/developer/integration/official-libraries#rails-gem
# Add this to your gemfile
gem 'postmark-rails'
# Add this to your config/application.rb file:
config.action_mailer.delivery_method = :postmark
config.action_mailer.postmark_settings = { :api_token => "POSTMARK_API_TEST" }
# Send the email
class TestMailer < ActionMailer::Base
def hello
mail(
:subject => 'Hello from Postmark',
:to => 'receiver@example.com',
:from => 'sender@example.com',
:html_body => '<strong>Hello</strong> dear Postmark user.',
:track_opens => 'true'
)
end
end
# Send an email with the Postmark Ruby Gem
# Learn more -> https://postmarkapp.com/developer/integration/official-libraries#ruby-gem
# Add the Postmark Ruby Gem to your Gemfile
gem 'postmark'
# Require gem
require 'postmark'
# Create an instance of Postmark::ApiClient
client = Postmark::ApiClient.new('POSTMARK_API_TEST')
# Example request
client.deliver(
from: 'sender@example.com',
to: 'receiver@example.com',
subject: 'Hello from Postmark',
html_body: '<strong>Hello</strong> dear Postmark user.',
track_opens: true
)
// Send an email with the Postmark .NET library
// Learn more -> https://postmarkapp.com/developer/integration/official-libraries#dot-net
// Install with NuGet
PM> Install-Package Postmark
// Import
using PostmarkDotNet;
// Example request
PostmarkMessage message = new PostmarkMessage {
From = "sender@example.com",
To = "receiver@example.com",
Subject = "Hello from Postmark",
HtmlBody = "<strong>Hello</strong> dear Postmark user.",
TextBody = "Hello dear postmark user.",
ReplyTo = "reply@example.com",
TrackOpens = true,
Headers = new NameValueCollection {{ "CUSTOM-HEADER", "value" }}
};
PostmarkClient client = new PostmarkClient("POSTMARK_API_TEST");
PostmarkResponse response = client.SendMessage(message);
if(response.Status != PostmarkStatus.Success) {
Console.WriteLine("Response was: " + response.Message);
}
// Send an email with the Postmark-PHP library
// Learn more -> https://postmarkapp.com/developer/integration/official-libraries#php
// Install with composer
composer require wildbit/postmark-php
// Import
use Postmark\PostmarkClient;
// Example request
$client = new PostmarkClient("server token");
$sendResult = $client->sendEmail(
"sender@example.com",
"receiver@example.com",
"Hello from Postmark!",
"This is just a friendly 'hello' from your friends at Postmark."
);
// Send an email with the Postmark.js library
// Learn more -> https://postmarkapp.com/developer/integration/official-libraries#node-js
// Install with npm
npm install postmark --save
// Require
var postmark = require("postmark");
// Example request
var client = new postmark.ServerClient("server token");
client.sendEmail({
"From": "sender@example.com",
"To": "receiver@example.com",
"Subject": "Test",
"TextBody": "Hello from Postmark!"
});
# Install with: pip install postmark-python
# Then import as: postmark (the PyPI package and import names differ)
import asyncio
import os
import postmark
async def main():
async with postmark.ServerClient(os.environ["POSTMARK_SERVER_TOKEN"]) as client:
response = await client.outbound.send({
"sender": "sender@example.com",
"to": "recipient@example.com",
"subject": "Hello from Postmark",
"text_body": "Sent with the Postmark Python SDK.",
})
print(f"Sent: {response.message_id}")
asyncio.run(main())
[H2] Switching to Postmark?
Check out our handy migration guides
[IMG: Stellar deliverability]
[H2] Stellar deliverability (without paying for a dedicated IP)
You might say that Postmark has serious street cred with inbox providers. That's because we vet every new sender carefully, help you follow deliverability best practices, and never, ever let spammers use Postmark.
Learn more →
[IMG: Promotional and transactional emails never mix]
[H2] Promotional and transactional emails never mix
Our API and SMTP service help you send your emails with ease, whether that's password reset emails, notifications, newsletters, or anything in between. To protect the deliverability of your crucial transactional emails—and make sure they arrive lightning fast—we route promotional messages like newsletters through a parallel but separate sending infrastructure.
Learn more about Message Streams →
[IMG: Great support as a standard]
95%
Customer Happiness Rating
? Great (95%)
? Okay (3%)
? Not Good (2%)
Customer feedback gathered over the past 60 days.
[H2] Great support as a standard
It's not just our email delivery that's fast and reliable. Our knowledgeable customer success team is here for you should you need us (and we never make you pay extra for premium support.)
Paddle
Indie Hackers
Faire.com
IKEA
litmus
desk
minecraft
livestream
UNICEF
Asana
Moz
Code Climate
LiveChat
1Password
Wistia
Betterment
Webflow
InVision
Since 2010 we've delivered billions of emails for companies of all sizes →
[H3] Ready to get started?
Join thousands of businesses that already trust their email delivery to Postmark.
Try Postmark free
No Credit Card Required
SUB-PAGE (https://postmarkapp.com/developer/integration/official-libraries/) Official Postmark libraries | Postmark Developer Documentation
Search docs...
⌘K
[H3] Overview
Introduction
[H3] Integration
Official libraries
Python SDK
Rails gem
Ruby gem
.NET
Java
PHP
Craft plugin
Node.js
CLI
WordPress plugin
Grunt plugin
Zapier Actions
Community libraries
Tools and Integrations
AI Prompts
[H3] User guide
Sending email with API
Sending email with SMTP
Processing email
Tracking opens
Tracking links
Managing your account
Sandbox mode
[H3] API reference
Overview
Email
Bulk
Bounce
Templates
Server
Servers
Message Streams
Messages
Domains
Sender signatures
Stats
Triggers: Inbound rules
Webhooks
Suppressions
Data Removal
[H3] Webhooks
Webhooks overview
Bounce webhook
Inbound webhook
Open tracking webhook
Delivery webhook
Click webhook
Spam complaint webhook
Subscription change webhook
SMTP API Error
Search docs...
[H1] Official Postmark libraries
These libraries are maintained by the developers at Postmark and are the easiest way to integrate Postmark with your application.
[H4] Don’t see the library you’re looking for?
If you can’t find the right library, check out our Community Libraries. If you’re looking for code to use with Postmark Inbound try our email parse code examples.
We’re building a wishlist of Postmark plugins, libraries, and integrations. If you have something you’d like to see, or would like to contribute, let us know!
[H3] Python SDK #
[H4] New!
Quick Start
RequirementsPython 3.10+InstallationInstall from PyPI as postmark-python (the Python package you import is still postmark):pip install postmark-pythonThe SDK is fully async. All API calls must be awaited.
[H4] Install from PyPI as postmark-python (the Python package you import is still postmark):
pip install postmark-python
[H4] The SDK is fully async. All API calls must be awaited.
import asyncio
import os
import postmark
# Tokens are read from the environment here. Optionally: pip install python-dotenv,
# then use load_dotenv() to populate os.environ from a .env file.
async def main():
async with postmark.ServerClient(os.environ["POSTMARK_SERVER_TOKEN"]) as client:
response = await client.outbound.send({
"sender": "sender@example.com",
"to": "recipient@example.com",
"subject": "Hello from Postmark",
"text_body": "Sent with the Postmark Python SDK.",
})
print(f"Sent: {response.message_id}")
asyncio.run(main())
[H4] New!
Two client types
ClientTokenUse forServerClientServer API tokenSending email, bounces, templates, stats, webhooks, streamsAccountClientAccount API tokenDomains, sender signatures, managing servers, data removals
[H4] Example
import postmark
# Use as async context managers to ensure connections are closed
async with postmark.ServerClient(os.environ["POSTMARK_SERVER_TOKEN"]) as client:
...
async with postmark.AccountClient(os.environ["POSTMARK_ACCOUNT_TOKEN"]) as account:
...
# Or call close() explicitly when done
client = postmark.ServerClient(os.environ["POSTMARK_SERVER_TOKEN"])
await client.close()
[H4] New!
Development
[H4] Repository
git clone https://github.com/ActiveCampaign/postmark-python.git
cd postmark-python
poetry install
poetry run pre-commit install
[H4] Testing
# Run tests
poetry run pytest
# Lint and type-check
poetry run pre-commit run --all-files
ContributingFork the repositoryCreate a feature branchAdd tests for your changesEnsure all checks pass (poetry run pre-commit run --all-files)Open a Pull RequestSupportIssues: GitHub IssuesPostmark Support: support@postmarkapp.comLicenseMIT — see LICENSE.
[H3] Postmark Rails gem #
[H4] Configuring your Rails application
You will need the Postmark Rails gem for drop-in integration with ActionMailer.
Don’t forget to run the bundle install command every time you change something in your Gemfile.
The postmark_settings hash can contain all options supported by Postmark::ApiClient.
[H4] Add the postmark-rails gem to your Gemfile.
gem 'postmark-rails'
[H4] Save your Postmark Server API token to config/secrets.yml.
postmark_api_token: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
[H4] Set Postmark as your preferred mail delivery method via config/application.rb:
config.action_mailer.delivery_method = :postmark
config.action_mailer.postmark_settings = { :api_token => Rails.application.secrets.postmark_api_token }
[H4] Send an email
Here’s a simple example of how to send a single HTML email with open tracking enabled. Take a look at the README for more examples.
[H4] Example request
class TestMailer < ActionMailer::Base
def hello
mail(
:subject => 'hello',
:to => 'receiver@example.com',
:from => 'sender@example.com',
:html_body => '<strong>Hello from Postmark!<strong>',
:track_opens => 'true'
)
end
end
[H3] Postmark Ruby gem #
[H4] Configuring your ruby application
You will need the Postmark gem to get started.
If you’re using Bundler, don't forget to run the bundle install command every time you change something in your Gemfile.
[H4] Install with Bundler
gem 'postmark'
[H4] Create an instance of Postmark::ApiClient
client = Postmark::ApiClient.new('server token')
[H4] Send an email
Here’s a simple example of how to send a single HTML email with open tracking enabled. Take a look at the README for more examples.
[H4] Example request
client.deliver(
from: 'sender@example.com',
to: 'receiver@example.com',
subject: 'hello',
html_body: '<strong>Hello from Postmark!<strong>',
track_opens: true
)
[H3] Postmark .NET #
[H4] Installation
The Postmark.NET NuGet package makes it easier to use the Postmark API from your .NET projects without having to build your own API calls.
If you need a strongly-named/signed .NET dll, you can use the Postmark-Strong .NET Nuget package which includes the JSON.NET dependancy built-in to avoid versioning conflicts.
[H4] Install with NuGet
PM> Install-Package Postmark
[H4] Import
using PostmarkDotNet;
[H4] Send an email
Here’s a simple example of how to send a single HTML email with open tracking enabled. Take a look at the wiki for more examples.
[H4] Example request
var message = new PostmarkMessage()
{
To = "recipient@example.com",
From = "sender@example.com",
TrackOpens = true,
Subject = "A complex email",
TextBody = "Plain Text Body",
HtmlBody = "<html><body><img src=\"cid:embed_name.jpg\"/></body></html>",
Tag = "business-message",
Headers = new HeaderCollection{
{"X-CUSTOM-HEADER", "Header content"}
}
};
var imageContent = File.ReadAllBytes("test.jpg");
message.AddAttachment(imageContent, "test.jpg", "image/jpg", "cid:embed_name.jpg");
var client = new PostmarkClient("server token");
var sendResult = await client.SendMessageAsync(message);
[H3] Postmark Java #
[H4] Installation
The Postmark Java library makes it easier to use the Postmark API from your Java 8+ projects without having to build your own API calls.
[H4] Install with Maven
<dependency>
<groupId>com.postmarkapp</groupId>
<artifactId>postmark</artifactId>
<version>{version}</version>
</dependency>
[H4] Send an email
Here’s a simple example of how to send a single email. Take a look at the wiki for more examples.
[H4] Example request
Message message = new Message("from@example.com", "john@example.com", "Hello from Postmark!", "Hello body");
ApiClient client = Postmark.getApiClient("server token");
MessageResponse response = client.deliverMessage(message);
[H3] Postmark PHP #
[H4] Installation
The Postmark PHP library is available as a Composer package on Packagist.org.
[H4] Install with composer
composer require wildbit/postmark-php
[H4] Import
require_once('./vendor/autoload.php');
use Postmark\PostmarkClient;
[H4] Send an email
Here’s a simple example of how to send a single email. Take a look at the wiki for more examples.
[H4] Example request
$client = new PostmarkClient("server token");
$sendResult = $client->sendEmail(
"sender@example.com",
"receiver@example.com",
"Test",
"Hello from Postmark!");
[H3] Postmark Craft plugin #
[H4] Installation
The Postmark Craft plugin library is available as a Composer package on Packagist.org.You can also install the plugin via the Craft Plugin Store.
[H4] Go to the project directory
cd /path/to/my-project.test
[H4] Install with composer
composer require craftcms/postmark
[H4] Tell Craft to install the plugin
./craft install/plugin postmark
ConfigurationOnce the Postmark Craft plugin is installed, go to Settings → Email in the Craft admin area, and change the Transport Type setting to Postmark.Then enter your Postmark Server Token. This can be found on the Server → API Tokens page within your Postmark account.If you wish to send email using a custom Message Stream, set the Message Stream ID. (The default transactional Message Stream will be used if this is left blank.) When you’re done, hit Save. Tip! Your Postmark Server Token and Message Stream ID can also be set using environment variables. See Environmental Configuration in the Craft docs to learn more about that.
[H3] Postmark Node.js #
[H4] Installation
The Postmark Node.js library is available as an npm package.
[H4] Install with npm
npm install postmark --save
[H4] Require
var postmark = require("postmark");
[H4] Send an email
Here’s a simple example of how to send a single email. Take a look at the documentation for more examples.
[H4] Example request
var serverToken = "xxxx-xxxxx-xxxx-xxxxx-xxxxxx";
var client = new postmark.ServerClient(serverToken);
client.sendEmail({
"From": "sender@example.com",
"To": "receiver@example.com",
"Subject": "Test",
"TextBody": "Hello from Postmark!"
});
[H4] Nodemailer
You can optionally use nodemailer to send transactional emails through Postmark.
[H3] Postmark CLI #
Installation
Before you get started, install Node.js and make sure that your Postmark server and account tokens are handy.
From the command line, run:
npm i postmark-cli -g
Once npm does its thing, run the postmark command and you will see some high-level usage details. You’re all set!
Pro tip: You’ll be asked to authenticate by entering your server or account token each time you run a command. If you prefer, you can bypass this step by supplying tokens as environment variables.
Usage
After installation, type postmark in your command line to see a list of available commands. Check out the wiki for instructions on how to send emails, manage templates, or list servers.
$ postmark
Commands:
postmark email <command></command> [options] Send an email
postmark servers <command></command> [options] Manage your servers
postmark templates <command></command> [options] Pull and push your templates
Options:
--version Show version number
--help Show help
Further documentation
GitHub repositoryDetailed instructionsManaging your Postmark templates with Github using Travis CI or CircleCI
[H3] Postmark for WordPress #
Postmark for WordPress (fork on Github)
[H4] Installation
Download the Postmark for WordPress PluginUpload postmark directory to your /wp-content/plugins directoryActivate the plugin in your WordPress adminIn the WordPress admin, go to Settings > Postmark. You will then want to insert your Postmark details.Verify sending by entering a recipient email address you have access to and pressing the “Send Test Email” button.Once verified, then check “Enable” to override wp_mail and send using Postmark instead.
See the FAQ for answers to common questions.
[H3] Postmark Grunt #
[H4] Installation
The Postmark Grunt plugin is available as an npm package.
[H4] Install with npm
npm install grunt-postmark --save
[H4] Load task in Gruntfile
grunt.loadNpmTasks("grunt-postmark");
[H4] Send an email
Here’s a simple example of how to send an email. Take a look at the documentation for more examples.
[H4] Example task
grunt.initConfig({
postmark: {
options: {
serverToken: "server token",
from: "sender@example.com",
to: "receiver@example.com",
}
email: {
subject: "Test",
src: ["email-content.html"]
}
}
});
[H3] Postmark Zapier Actions #
[H4] Installation
The Postmark Zapier Actions are available on Zapier.
[H4] Configuration
Our Zapier Actions support both Send an Email and Send an Email With Template. When integrating with a Zapier Trigger, set the data into the respective fields when Zapier prompts, like To, From, Subject, etc.
If you wish to send email using a custom Message Stream, set the Message Stream ID. (The default transactional Message Stream will be used if this is left blank.)
SUB-PAGE (https://postmarkapp.com/email-api/) Powerful & Reliable Email API Service | Postmark
[H2] Start sending with Postmark’s email API in minutes
Integrating email into your product doesn’t have to be a pain. With our powerful RESTful email APIs and robust libraries in pretty much every programming language, integrating email is fast and easy—whether you’re sending transactional or bulk email.
Simpler applications can also use our reliable SMTP service.
# Send an email with curl
# Copy and paste this into terminal
curl "https://api.postmarkapp.com/email" \
-X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Postmark-Server-Token: server token" \
-d '{
"From": "sender@example.com",
"To": "receiver@example.com",
"Subject": "Postmark test",
"TextBody": "Hello dear Postmark user.",
"HtmlBody": "<html><body><strong>Hello</strong> dear Postmark user.</body></html>",
"MessageStream": "outbound"
}'
# Send an email with the Postmark Rails Gem
# Learn more -> https://postmarkapp.com/developer/integration/official-libraries#rails-gem
# Add this to your gemfile
gem 'postmark-rails'
# Add this to your config/application.rb file:
config.action_mailer.delivery_method = :postmark
config.action_mailer.postmark_settings = { :api_token => "POSTMARK_API_TEST" }
# Send the email
class TestMailer < ActionMailer::Base
def hello
mail(
:subject => 'Hello from Postmark',
:to => 'receiver@example.com',
:from => 'sender@example.com',
:html_body => '<strong>Hello</strong> dear Postmark user.',
:track_opens => 'true'
)
end
end
# Send an email with the Postmark Ruby Gem
# Learn more -> https://postmarkapp.com/developer/integration/official-libraries#ruby-gem
# Add the Postmark Ruby Gem to your Gemfile
gem 'postmark'
# Require gem
require 'postmark'
# Create an instance of Postmark::ApiClient
client = Postmark::ApiClient.new('POSTMARK_API_TEST')
# Example request
client.deliver(
from: 'sender@example.com',
to: 'receiver@example.com',
subject: 'Hello from Postmark',
html_body: '<strong>Hello</strong> dear Postmark user.',
track_opens: true
)
// Send an email with the Postmark .NET library
// Learn more -> https://postmarkapp.com/developer/integration/official-libraries#dot-net
// Install with NuGet
PM> Install-Package Postmark
// Import
using PostmarkDotNet;
// Example request
PostmarkMessage message = new PostmarkMessage {
From = "sender@example.com",
To = "receiver@example.com",
Subject = "Hello from Postmark",
HtmlBody = "<strong>Hello</strong> dear Postmark user.",
TextBody = "Hello dear postmark user.",
ReplyTo = "reply@example.com",
TrackOpens = true,
Headers = new NameValueCollection {{ "CUSTOM-HEADER", "value" }}
};
PostmarkClient client = new PostmarkClient("POSTMARK_API_TEST");
PostmarkResponse response = client.SendMessage(message);
if(response.Status != PostmarkStatus.Success) {
Console.WriteLine("Response was: " + response.Message);
}
// Send an email with the Postmark-PHP library
// Learn more -> https://postmarkapp.com/developer/integration/official-libraries#php
// Install with composer
composer require wildbit/postmark-php
// Import
use Postmark\PostmarkClient;
// Example request
$client = new PostmarkClient("server token");
$sendResult = $client->sendEmail(
"sender@example.com",
"receiver@example.com",
"Hello from Postmark!",
"This is just a friendly 'hello' from your friends at Postmark."
);
// Send an email with the Postmark.js library
// Learn more -> https://postmarkapp.com/developer/integration/official-libraries#node-js
// Install with npm
npm install postmark --save
// Require
var postmark = require("postmark");
// Example request
var client = new postmark.ServerClient("server token");
client.sendEmail({
"From": "sender@example.com",
"To": "receiver@example.com",
"Subject": "Test",
"TextBody": "Hello from Postmark!"
});
# Install with: pip install postmark-python
# Then import as: postmark (the PyPI package and import names differ)
import asyncio
import os
import postmark
async def main():
async with postmark.ServerClient(os.environ["POSTMARK_SERVER_TOKEN"]) as client:
response = await client.outbound.send({
"sender": "sender@example.com",
"to": "recipient@example.com",
"subject": "Hello from Postmark",
"text_body": "Sent with the Postmark Python SDK.",
})
print(f"Sent: {response.message_id}")
asyncio.run(main())
It was incredibly easy to setup Postmark. In under 10 minutes I had the first test working and rolling it out to production was just as easy.
[H2] Say goodbye to email deliverability issues.
People always say “don’t set it and forget it” but we actually strive to help you do just that. Once you integrate with Postmark, you can count on us to get your emails delivered fast and reliably—so you can go back to building great products.
Been a Postmark customer for a very long time. Stability and deliverability is so good I sometimes go months without thinking about it. It just works.
[H2] Developer-friendly email API documentation
We take great care of our API documentation so that you have the information you need to easily integrate with Postmark. Plus, our handy API Explorer lets you test-drive API calls against your account and returns real data.
[IMG: Screenshot of the Postmark API documentation]
[H2] Great support as standard
Our knowledgeable support team is always on hand to help, whether it’s through 1-on-1 calls, webinars, email, live-chat or one of our many help docs and guides.
95%
Customer Happiness Rating
? Great (95%)
? Okay (3%)
? Not Good (2%)
Customer feedback gathered over the past 60 days.
[H2] Email API features: Do more than just send email
With our flexible email APIs you can manage domains and templates, retrieve stats, process inbound email, and so much more. For many email providers, APIs are an afterthought. Here at Postmark, we think API-first.
Read the API docs →
[H2] More reasons to love Postmark’s email API service
[IMG: Sandbox Mode]
[H3] A safe space to test and experiment
With Sandbox Mode you can test and experiment with our API without the risk of accidentally sending email to real recipients.
[IMG: Email authentication]
[H3] Email authentication made easy
We guide you through setting up DMARC and SPF to help protect your domain from spoofing.
[IMG: Webhooks]
[H3] Modular webhooks
Notify your application every time an email is delivered, opened, bounces, or a link is clicked with webhooks.
[H2] Ready to get started?
Join thousands of businesses that already trust their email delivery to Postmark.
Start free trial
No credit card required
Paddle
Indie Hackers
Faire.com
IKEA
litmus
desk
minecraft
livestream
UNICEF
Asana
Moz
Code Climate
LiveChat
1Password
Wistia
Betterment
Webflow
InVision
[H2] Email best practices and industry news. Delivered monthly.
Follow @postmarkapp
[H2] Still have questions?
[IMG: Ignacio Roig]
Ignacio
Ask us anything! We’re eager to help you with any problem or question you have…
Contact us
SUB-PAGE (https://postmarkapp.com/smtp-service/) SMTP Service | Postmark
[H2] What is SMTP?
Simple Mail Transfer Protocol (SMTP) is a widely supported standard for sending email. Most development frameworks support SMTP without the need for any extra libraries, making SMTP the quickest way to start sending transactional email from your web application.
[H2] Sending emails using SMTP.
Setting up your web application to send emails using SMTP couldn’t be easier. It’s as simple as copying some credentials into a config file and you’re ready to send.
Postmark supports TLS to secure data sent between your application and our servers.
Not sure whether to send using our API or SMTP service? Check out the guide →
Laravel
// Update the mail settings in your .env file.
MAIL_DRIVER=smtp
MAIL_HOST=smtp.postmarkapp.com
MAIL_PORT=587
MAIL_USERNAME=YOUR_POSTMARK_SERVER_API_TOKEN
MAIL_PASSWORD=YOUR_POSTMARK_SERVER_API_TOKEN
MAIL_ENCRYPTION=tls
Rails
# Save your Postmark Server API token to config/secrets.yml.
postmark_api_token: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
# Set Action Mailer to use SMTP in your config/application.rb file.
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.postmarkapp.com',
port: 587,
domain: 'yourdomain.com',
user_name: Rails.application.secrets.postmark_api_token,
password: Rails.application.secrets.postmark_api_token,
authentication: :plain,
enable_starttls_auto: true
}
Express
// Install express-mailer (https://www.npmjs.com/package/express-mailer)
npm install express-mailer
// Add the SMTP credentials in your app.js file.
var app = require('express')(),
mailer = require('express-mailer');
mailer.extend(app, {
from: 'you@yourdomain.com',
host: 'smtp.postmarkapp.com',
secureConnection: true,
port: 587,
transportMethod: 'SMTP',
auth: {
user: 'YOUR_POSTMARK_SERVER_API_TOKEN',
pass: 'YOUR_POSTMARK_SERVER_API_TOKEN'
}
});
Django
# Add the SMTP credentials to your settings.py file.
EMAIL_HOST = 'smtp.postmarkapp.com'
EMAIL_HOST_USER = 'YOUR_POSTMARK_SERVER_API_TOKEN'
EMAIL_HOST_PASSWORD = 'YOUR_POSTMARK_SERVER_API_TOKEN'
EMAIL_PORT = 587
EMAIL_USE_TLS = True
# Send an email using the send_mail() function.
from django.core.mail import send_mail
send_mail('You email subject', 'Super awesome email content.', 'you@yourdomain.com', ['recipient@example.com'], fail_silently=False)
Craft CMS
1. Log into the Craft admin area and go to "Settings" then "Email".
2. Set the "Transport Type" field to "SMTP".
3. Set the "Host Name" field to "smtp.postmarkapp.com".
4. Set the "Port" to "587".
5. Tick the "Use Authentication" checkbox.
6. Set both the "Username" and "Password" fields to your Postmark Server API Token.
7. Set the "Encryption Method" field to "TLS".
8. Test and save your changes.
[H2] Globally distributed SMTP service.
We maintain endpoints in several AWS Regions around the world. Depending on your location you will be routed to the closest endpoints to your servers for the fastest response times possible, resulting in very low latency.
[H2] Track messages through their entire lifecycle with custom metadata.
Specify metadata like invoice and customer IDs to identify messages at any point in their lifecycle. This information then becomes accessible through the Postmark API, webhooks, and web app.
You just need to add some custom headers when sending email using SMTP.
X-PM-Metadata-invoice-id: 123
X-PM-Metadata-customer-id: 4011
X-PM-Metadata-due-date: 2021-07-03
[H2] Group common message types using tags.
Use tags to easily identify similar messages using the Postmark web app or API. For example, you might use a welcome-email tag for all welcome emails sent by your application.
Access this feature by adding an X-PM-Tag header when sending email using SMTP.
X-PM-Tag: welcome-email
[H2] Developer friendly SMTP documentation.
Postmark’s clear and concise documentation makes it easy to start sending using SMTP. We cover advanced features like tags and custom metadata, as well as common pitfalls so you can troubleshoot any issues.
Postmark has a reputation for high quality. Even though there are several good companies, we were convinced by Postmark’s clear documentation and transparent roadmap. Further, building email infrastructure is really a partnership — we wanted to invest in a platform that would continue to grow along with our needs, not one that was fairly static and falling behind the technology curve.
[H2] Email best practices and industry news. Delivered monthly.
Follow @postmarkapp
[H2] Still have questions?
[IMG: Ignacio Roig]
Ignacio
Ask us anything! We’re eager to help you with any problem or question you have…
Contact us
🛡️ Trust Signals — reviews, proof links, trust-theatre flag (Trust & Proof)
| Page | Reviews | Proof links |
|---|---|---|
| / (home) | 12 | 0 |
| /developer/integration/official-libraries/ | 3 | 0 |
| /email-api/ | 12 | 0 |
| /smtp-service/ | 9 | 0 |
🔗 Identity & Technical Layer — schema JSON-LD: identity chains, entity gaps (Identity & Authority)
Homepage schema
[
{
"@context": "http://schema.org",
"@type": "Organization",
"url": "https://postmarkapp.com",
"logo": "https://postmarkapp.com/images/logo-stamp-social.png",
"name": "Postmark",
"founder": [
{
"@type": "Person",
"name": "Jason VandeBoom",
"jobTitle": "CEO"
}
],
"foundingLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "1 North Dearborn St, 5th Floor",
"addressLocality": "Chicago",
"addressRegion": "IL",
"postalCode": "60602",
"addressCountry": "US"
}
},
"location": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "1 North Dearborn St, 5th Floor",
"addressLocality": "Chicago",
"addressRegion": "IL",
"postalCode": "60602",
"addressCountry": "US"
}
},
"sameAs": [
"https://twitter.com/postmarkapp"
]
},
{
"@context": "http://schema.org",
"@type": "WebSite",
"name": "Postmark",
"url": "https://postmarkapp.com"
},
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Postmark",
"applicationCategory": "WebApplication",
"operatingSystem": "Web-based",
"description": "Postmark is a fast and reliable transactional email service that delivers your application's emails on time, every time. Send and track transactional emails with industry-leading deliverability.",
"url": "https://postmarkapp.com",
"offers": {
"@type": "Offer",
"price": "15",
"priceCurrency": "USD",
"description": "$15/month for 10,000 emails"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"ratingCount": "500",
"bestRating": "5",
"worstRating": "1"
}
}
]
/developer/integration/official-libraries/
[
{
"@context": "http://schema.org",
"@type": "Organization",
"url": "https://postmarkapp.com",
"logo": "https://postmarkapp.com/images/logo-stamp-social.png",
"name": "Postmark",
"founder": [
{
"@type": "Person",
"name": "Jason VandeBoom",
"jobTitle": "CEO"
}
],
"foundingLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "1 North Dearborn St, 5th Floor",
"addressLocality": "Chicago",
"addressRegion": "IL",
"postalCode": "60602",
"addressCountry": "US"
}
},
"location": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "1 North Dearborn St, 5th Floor",
"addressLocality": "Chicago",
"addressRegion": "IL",
"postalCode": "60602",
"addressCountry": "US"
}
},
"sameAs": [
"https://twitter.com/postmarkapp"
]
},
{
"@context": "http://schema.org",
"@type": "WebSite",
"name": "Postmark",
"url": "https://postmarkapp.com"
}
]
/email-api/
[
{
"@context": "http://schema.org",
"@type": "Organization",
"url": "https://postmarkapp.com",
"logo": "https://postmarkapp.com/images/logo-stamp-social.png",
"name": "Postmark",
"founder": [
{
"@type": "Person",
"name": "Jason VandeBoom",
"jobTitle": "CEO"
}
],
"foundingLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "1 North Dearborn St, 5th Floor",
"addressLocality": "Chicago",
"addressRegion": "IL",
"postalCode": "60602",
"addressCountry": "US"
}
},
"location": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "1 North Dearborn St, 5th Floor",
"addressLocality": "Chicago",
"addressRegion": "IL",
"postalCode": "60602",
"addressCountry": "US"
}
},
"sameAs": [
"https://twitter.com/postmarkapp"
]
},
{
"@context": "http://schema.org",
"@type": "WebSite",
"name": "Postmark",
"url": "https://postmarkapp.com"
},
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Postmark",
"applicationCategory": "WebApplication",
"operatingSystem": "Web-based",
"description": "Postmark is a fast and reliable transactional email service that delivers your application's emails on time, every time. Send and track transactional emails with industry-leading deliverability.",
"url": "https://postmarkapp.com",
"offers": {
"@type": "Offer",
"price": "15",
"priceCurrency": "USD",
"description": "$15/month for 10,000 emails"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"ratingCount": "500",
"bestRating": "5",
"worstRating": "1"
}
}
]
/smtp-service/
[
{
"@context": "http://schema.org",
"@type": "Organization",
"url": "https://postmarkapp.com",
"logo": "https://postmarkapp.com/images/logo-stamp-social.png",
"name": "Postmark",
"founder": [
{
"@type": "Person",
"name": "Jason VandeBoom",
"jobTitle": "CEO"
}
],
"foundingLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "1 North Dearborn St, 5th Floor",
"addressLocality": "Chicago",
"addressRegion": "IL",
"postalCode": "60602",
"addressCountry": "US"
}
},
"location": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"streetAddress": "1 North Dearborn St, 5th Floor",
"addressLocality": "Chicago",
"addressRegion": "IL",
"postalCode": "60602",
"addressCountry": "US"
}
},
"sameAs": [
"https://twitter.com/postmarkapp"
]
},
{
"@context": "http://schema.org",
"@type": "WebSite",
"name": "Postmark",
"url": "https://postmarkapp.com"
},
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Postmark",
"applicationCategory": "WebApplication",
"operatingSystem": "Web-based",
"description": "Postmark is a fast and reliable transactional email service that delivers your application's emails on time, every time. Send and track transactional emails with industry-leading deliverability.",
"url": "https://postmarkapp.com",
"offers": {
"@type": "Offer",
"price": "15",
"priceCurrency": "USD",
"description": "$15/month for 10,000 emails"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.8",
"ratingCount": "500",
"bestRating": "5",
"worstRating": "1"
}
}
]
Your Diagnosis
Before revealing the machine’s verdict, predict the BS score for each signal. Higher = more BS (more fluff, less verifiable substance). Drag each slider, then submit to compare your judgment against the engine.
Stuck? Reveal the heuristic lens — how the deterministic page-auditor reads each signal (no AI, pure pattern rules)
These are the structural rules a local, deterministic auditor applies — the same lens you can use to judge each signal. They describe what to look for, not this company’s result.
Classify each sentence as substantive or hollow. Grounding markers — numbers, currencies, dates, technical units, named entities — outweigh marketing adjectives. When fluff sits right next to hard evidence, the fluff is forgiven.
Pull the main entities out of the H1, then check whether they actually recur through the body. A page that announces one thing and then talks about another drifts. Headings with no real sentences underneath read as pseudo-substance.
Count trust words (review, testimonial, rating, verified) against real outbound proof links (Google, Trustpilot, Clutch, G2, Yelp). Lots of trust language with zero verification links is trust theatre. Unlinked logo galleries count against it.
Look at how much sentence length varies. Natural writing varies its rhythm; templated or mass-produced copy is statistically uniform. Very low variation reads as commodity content — unless unique named entities break the pattern.
Inspect the JSON-LD. Is there an Organization or Person schema, and does it carry sameAs links to real external profiles (LinkedIn, socials)? Missing schema or no identity declaration signals an anonymous entity.
Want to apply this lens yourself? The free BS Indicator Chrome extension runs these heuristic checks live on any page. Bear in mind it is a single-page, deterministic tool — it relies only on pattern rules for the page in front of it and does not perform the cross-page semantic correlation this audit uses, so its readout is a starting lens, not the full verdict.
Based on 830 businesses audited.
Postmark has 8.5 points less BS than the average for Software, SaaS & Tech Products.
Software, SaaS & Tech Products BS: Postmark (postmarkapp.com)
Postmark is the rare SaaS that actually shows the car’s engine instead of just photos of the leather seats. It is an infrastructure tool that speaks fluent Code, even if its headings occasionally slip into marketing-speak. Its high proof density in the documentation makes it an outlier in a category typically filled with hot air.
Replace generic H2 navigation headings like ‘Explore our features’ with more descriptive, noun-heavy alternatives. Provide outbound proof links to third-party review platforms to substantiate the ‘Customer Happiness’ and aggregate rating claims found in the schema. Hyperlink the ‘billions of emails’ claim to a public-facing transparency report or status page. Add SOC 2 or other security audit dates directly to the ‘Email authentication’ section to provide institutional verification of the ‘street cred’ claim.
The website is a perfect fit for the Software & SaaS category. The content is explicitly infrastructure-focused, providing technical specifications for RESTful email APIs and SMTP protocols aimed at developers at companies such as IKEA, Asana, and 1Password.
“The score of 24 is driven almost entirely by Trust Theatre flags and generic heading structures. The site earned 8 points for displaying reviews across multiple pages without verification links and 9 points for repetitive, marketing-heavy headings. However, the extreme technical substance in the body text prevents the score from rising into a more critical range.”
This training module utilizes a snapshot of public data from Postmark, captured on May 24, 2026, to demonstrate how machine logic evaluates different types of business narratives.
Purpose: This data is presented under “Fair Use” / “Educational Exception” for the purpose of forensic semantic analysis, allowing users to compare human intuition against machine-generated evaluations.
Notice to Postmark: This analysis is part of a non-adversarial audit conducted by 1 Euro SEO. The results provided by 1EuroSEO are intended as professional feedback to help improve any website’s machine-readability and authority signals. The 1EuroSEO BS Detection Tool is a free tool, and anyone can test any company to see how their content is interpreted by AI models.
Any company can use the insights for free and improve its voice by comparing it to industry clichés or competitors. When a company has updated its content, it can always submit a new audit request, which will be reflected in a new current score.
To all users: You are encouraged to visit the live site at https://postmarkapp.com to view the most current version of its content and learn from the source what this company is about and what it offers.