Postmark lifecycle email automation with GetFluxly
Send behavior-triggered lifecycle email through Postmark, one of the most respected transactional ESPs in the industry. GetFluxly captures product events, builds unified customer profiles, and fires automations on the rules you define. Postmark handles delivery from the verified domain and Message Stream you control. Your sender reputation stays in your Postmark account.
When to use Postmark
Pick Postmark when deliverability is a first-class requirement and you want an ESP with a strong track record of protecting transactional sender reputation. Postmark is strict about the email it accepts, which is exactly why its inbox placement rates are consistently strong. For SaaS teams that cannot afford to have password resets or trial emails landing in spam, that strictness is a feature.
Postmark is also the right pick if you need hard separation between transactional (receipts, alerts, auth) and lifecycle (onboarding, upgrade nudges) sending. Message Streams give you distinct IP pools for each, so a dip in lifecycle engagement never touches transactional delivery. If you are already on AWS and want the lowest per-message cost instead, see the Amazon SES guide.
Requirements before connecting
A Postmark account on any plan, a domain you can publish DNS records on, and a Server Token from the server you want to send from. On the GetFluxly side: a project, a server token (gflux_secret_live_...), and access to Settings → Email providers.
Verify your sending domain
In the Postmark account dashboard, open Sender Signatures → Add Domain or Signature and enter the apex domain you want to send from (for example yourdomain.com). Postmark generates a DKIM TXT record and a Return-Path CNAME. Once you publish those at your DNS provider and Postmark verifies them, every address under the domain is approved for sending.
Verifying the apex covers all mailboxes under it, so hello@, noreply@, and billing@ are all covered by one domain entry. You do not need to verify individual addresses.
Add SPF, DKIM, and DMARC
These records live on your domain's DNS, not on GetFluxly. They tell receiving mailboxes that Postmark is allowed to send on your behalf and what to do if that alignment fails.
SPF
Add a TXT record at the apex that includes Postmark. If you already have an SPF record, merge the include: rather than publishing two SPF records on the same name (multiple SPF records fail validation).
Type: TXT
Host: yourdomain.com
Value: v=spf1 include:spf.mtasv.net -allDKIM
Postmark provides a single TXT record for DKIM. The exact host and value are shown in the Sender Signatures dashboard once you add your domain. The host typically looks like 20231123163444pm._domainkey.yourdomain.com.
Type: TXT
Host: <selector>._domainkey.yourdomain.com
Value: k=rsa; p=<public key from Postmark>DMARC
Start with p=none while you confirm legitimate mail passes, then ratchet up to quarantine and eventually reject.
Type: TXT
Host: _dmarc.yourdomain.com
Value: v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com; fo=1getfluxly.com. GetFluxly never appears in your From: header.Choose a Message Stream
Postmark separates sending into Message Streams, each with its own IP pool, reputation, and webhook configuration. There are three stream types:
- Transactional for receipts, password resets, auth codes, and any message the recipient explicitly requested. Every Postmark server has one default transactional stream (ID
outbound). - Broadcast for onboarding sequences, trial nudges, upgrade prompts, and any message you initiate based on behavior. Create one per environment.
- Inbound for receiving email. Not relevant for lifecycle sending.
Lifecycle email belongs in a Broadcast stream. Postmark routes Broadcast messages through a separate IP pool, so a dip in open rates on a nurture sequence never affects delivery of password-reset emails. In the Postmark server dashboard, open Message Streams → Create Message Stream, choose Broadcasts, give it a name like lifecycle-production, and note the stream ID.
Get your Server API token
Each Postmark server has its own Server Token, separate from your account-level token. In the Postmark dashboard, open the server you want to send from, navigate to API Tokens, and copy the Server API Token. It is visible at any time, but treat it like a password: it grants full send access on that server.
Connect Postmark through Custom SMTP in GetFluxly
Because a native Postmark connector is not yet live, connect Postmark through the Custom SMTP connector. In GetFluxly, open Settings → Email providers, click Add provider, choose Custom SMTP, and enter the following Postmark SMTP settings:
| Field | Value for Postmark | Notes |
|---|---|---|
smtp_host | smtp.postmarkapp.com | Postmark's SMTP relay host. |
smtp_port | 587 | Use 587 with STARTTLS. |
username | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | Your Server Token from the Postmark API Tokens tab. |
password | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | The same Server Token again. Postmark uses the token as both username and password over SMTP. |
from_email | hello@yourdomain.com | Must be on a verified Postmark domain. |
from_name | Acme | Optional. Wraps the from address. |
Or call the API directly:
curl -X POST https://api.getfluxly.com/v1/projects/PROJECT_ID/email-providers \
-H "Authorization: Bearer gflux_secret_live_REPLACE_ME" \
-H "Content-Type: application/json" \
-d '{
"provider": "smtp",
"display_name": "Postmark Production",
"from_email": "hello@yourdomain.com",
"from_name": "Acme",
"smtp_host": "smtp.postmarkapp.com",
"smtp_port": 587,
"smtp_secure": "starttls",
"username": "YOUR_SERVER_TOKEN",
"password": "YOUR_SERVER_TOKEN"
}'Bounces and complaints while on Custom SMTP
When you send through the Custom SMTP connector, bounce and spam complaint feedback comes from Postmark directly, not from GetFluxly. Manage suppressions in the Postmark dashboard → your server → Suppressions. Postmark will automatically suppress hard bounces and spam complaints on future sends through that server.
Automatic bounce and complaint sync into GetFluxly profiles and suppression lists, so that future segments naturally exclude affected contacts, arrives with the native Postmark connector when it ships. Until then, treat Postmark as the authoritative suppression store for this send path.
Test your first lifecycle email
The verify endpoint dispatches a one-shot message through your Postmark connection. Use it to confirm the wiring is good before pointing an automation at the provider.
curl -X POST https://api.getfluxly.com/v1/email-providers/PROVIDER_ID/test \
-H "Authorization: Bearer gflux_secret_live_REPLACE_ME" \
-H "Content-Type: application/json" \
-d '{ "to": "you@yourdomain.com" }'For an end-to-end behavior-triggered test, set up a one-step automation in GetFluxly: when user fires signed_up → send the welcome email through Postmark, then trigger the event from your staging app. The send appears in the GetFluxly send log and in the Postmark activity view within seconds.
Common errors
535 Authentication failed. The Server Token is wrong or has been rotated. Generate a fresh token from the Postmark API Tokens tab and update the GetFluxly Custom SMTP record. Remember: for Postmark SMTP the token goes in both the username and password fields.
Postmark rejects the from address. The address in from_email is not on a verified Postmark domain. Check the domain status in Sender Signatures and confirm the DKIM record is showing as verified.
Connection refused or timeout. Confirm the host is exactly smtp.postmarkapp.com and the port is 587 with STARTTLS. Some hosting platforms block outbound port 587 by default; contact your host if that applies.
Mail landing in spam despite DKIM passing. Check that DMARC is published on _dmarc.yourdomain.com and that you are sending lifecycle email through a Broadcast stream, not the default transactional stream. Mixing email types in one stream can hurt deliverability for both.
FAQ
Does GetFluxly charge extra to send through Postmark?
No. GetFluxly does not bill per email. Postmark pricing applies as if you were sending directly. GetFluxly handles segmentation, automation, profiles, and tracking on top of the Postmark send path at no per-message markup.
Which Postmark Message Stream should I use for lifecycle email?
Lifecycle email (onboarding sequences, trial nudges, churn recovery) is marketing email by nature, so it belongs in a Broadcast stream. Postmark routes Broadcast messages through a separate IP pool from Transactional, which keeps your transactional delivery unaffected by engagement rates on lifecycle sends. Create one Broadcast stream per product environment and point GetFluxly at its stream ID.
Is there a native Postmark connector in GetFluxly yet?
Not yet. A native Postmark connector is on the GetFluxly roadmap. Today you connect Postmark through the Custom SMTP connector using host smtp.postmarkapp.com, port 587 with STARTTLS, and your Server Token as both the username and the password. When the native connector ships, you migrate the provider record in place and your automations continue without rewiring.
Can I use multiple Postmark servers across GetFluxly projects?
Yes. Each Postmark server has its own Server Token. Create one GetFluxly email-provider record per server token. That way revoking or rotating a token in Postmark takes down exactly one environment in GetFluxly without touching the others.
How does GetFluxly handle Postmark bounces and spam complaints?
While sending through the Custom SMTP path, manage suppressions and bounce handling directly in the Postmark dashboard. Automatic bounce and complaint sync into GetFluxly profiles and suppression lists arrives with the native Postmark connector when it ships.
What is the difference between a Postmark Server Token and an Account Token?
Server Tokens grant permission to send and manage a single Postmark server. Account Tokens are admin-level and can manage all servers and billing. GetFluxly only needs a Server Token. Never use an Account Token for lifecycle sending.
Also on GetFluxly integrations: SendGrid, Brevo, Resend, and Amazon SES.
Learn more: Email deliverability for SaaS, lifecycle email automation for SaaS, and GetFluxly pricing.