Sending

Connect Postmark

Postmark is the fastest transactional email provider for delivery-critical messages. One server token, and you are sending.

Overview

Postmark separates transactional and broadcast streams at the server level. Every Postmark server has a message stream— transactional streams get priority delivery infrastructure; broadcast streams are for newsletters and marketing. Nudgel defaults to the server's default transactional stream, but you can point it at any stream you've created.

Get your credentials

  1. Log in to account.postmarkapp.com
  2. Go to Servers and select the server you want to use (or create a new one)
  3. Click API Tokens in the server's left nav
  4. Copy the Server API token — it starts with a long hex string
  5. Decide on a from address: it must use a verified sender signature or a verified domain

SENDER SIGNATURES

Postmark requires the from address to match a verified sender signature or a verified sending domain. Go to Sender Signatures in your Postmark account to verify your from address before you try to send. Unverified from addresses get a 401 from Postmark.

Add the provider in Nudgel

  1. Go to Settings → Providers
  2. Click Add a provider
  3. Pick Postmark
  4. Fill in the fields:
FieldRequiredNotes
from_emailYesThe verified from address, e.g. noreply@mail.acme.co.ke
from_nameYesDisplay name, e.g. Acme Payments
message_streamNoDefaults to outbound (the server's default transactional stream). Set to a broadcast stream ID for newsletters.
server_tokenYesFrom Postmark → Server → API Tokens. Encrypted before it leaves the form.

ENCRYPTED ON SUBMIT

Your server token is encrypted with a per-tenant key before it hits our database. We cannot read it; nobody else on your account sees the plaintext.

Test the connection

After saving, send a test message from the Nudgel dashboard (Compose → Email) or via the API. Use your own email as the recipient so you can confirm delivery.

curl
curl -X POST https://api-raven-cloud.autotribes.app/v1/messages \
  -H "X-Raven-Key: rk_live_a3f7b2c1_..." \
  -H "Content-Type: application/json" \
  -d '{
    "channel": "email",
    "to": "you@example.com",
    "from": "noreply@mail.acme.co.ke",
    "subject": "Nudgel test — Postmark",
    "bodyHtml": "<p>If you can read this, Postmark is wired up.</p>",
    "bodyText": "If you can read this, Postmark is wired up."
  }'

Check your Postmark server's activity log — you should see the message appear within seconds.

Set up webhooks

Postmark can POST delivery events back to Nudgel so your message timeline updates automatically (delivered, bounced, spam complaint, unsubscribed). Configure this in Postmark under Server → Message Streams → [your stream] → Webhooks.

Point each event type at:

text
https://api-raven-cloud.autotribes.app/v1/webhooks/email/postmark/{YOUR_TENANT_ID}

Enable at minimum: Delivery, Bounce, Spam Complaint. Hard bounces and spam complaints are automatically added to your suppression list. See the webhooks guide for full details.

Verify your sending domain at Postmark

To send from your own domain (e.g. mail.example.co.ke) through Postmark, publish DKIM records Postmark generates for you. Nudgel orchestrates this from one dashboard.

  1. In Nudgel dashboard, go to Settings → Sending domains → Add domain, enter your domain.
  2. On the next screen, select Postmark. Nudgel calls Postmark's domain registration API using your credentials and shows you the DNS records to publish.
  3. Publish the records at your DNS host (Cloudflare, Route 53, etc.).
  4. Nudgel polls every 30 seconds for the first 10 minutes, then hourly. Verification surfaces in the dashboard automatically.

Add this to your SPF record

Append include:spf.mtasv.net to your existing SPF record (or create a new v=spf1 include:spf.mtasv.net -allif you don't have one).

Postmark-specific notes

  • Verification typically completes within minutes once the DKIM TXT record propagates.
  • Postmark also generates a Return-Path CNAME for bounce processing — publish both the DKIM TXT and the Return-Path CNAME for full deliverability.

Full setup walkthrough: Sending domains setup

Troubleshooting

SymptomMost likely cause
failed — "Sender signature not found"The from address is not verified in Postmark. Add it under Sender Signatures.
failed — "Invalid API token"Server token is wrong. Regenerate in Postmark → Server → API Tokens and update the provider.
failed — "Message stream not found"The message_stream ID you set does not exist in this Postmark server. Leave blank to use the default.
Message stuck at queuedWorker is not running. Check Redis connectivity.
Emails land in spamVerify your sending domain (DKIM + SPF). See sending domains.