prawnwire Developers

Migrate from Postmark

Move a supported sending integration while checking the differences explicitly.

Inventory your integration

List the endpoints and features your application uses. Compare them with the compatibility table. If you depend on templates, inbound processing, webhooks, or open/click events, plan a replacement before changing the send path.

Prepare the domain and key

Ask a Prawnwire organization admin to verify and host the From domain, publish its mail DNS records, and create a key. Request email:send for sending and email:read for activity.

MX changes affect incoming mail too. Coordinate the migration with whoever manages the domain rather than copying DNS records without review.

Change the client host

For postmark.js, set requestHost to the Prawnwire API host plus /v1, with no scheme. Use the environment-specific Postmark library example. Replace the Postmark token with a Prawnwire key.

If using the Prawnwire SDK later, change PascalCase wire fields to its camelCase API; do not pass the same object unchanged.

Check without sending

Use a pw_test_ key. Validate From, recipients, bodies, attachments, headers, metadata, scopes, and current allowance. Prawnwire does not accept POSTMARK_API_TEST.

A test response has a MessageID but no stored message. Test keys do not prove deliverability or reserve capacity for a future live batch.

Switch a controlled send

Send with a live key to an address you control. Check the receiving message’s SPF and DKIM results, then read message details. Keep old and new message IDs separate in your application’s records.

Differences checklist

  • Use only the outbound stream.
  • Render templates into HTML/text before calling the API.
  • Do not expect TrackOpens or TrackLinks to create tracking events.
  • Read activity for delivery events; this API does not deliver webhooks.
  • Interpret Sent as submission, not recipient delivery.
  • Read every result of a batch, even when HTTP status is 200.
  • Check the per-plan monthly allowance and daily cap, counted per recipient.
  • Review your suppression policy. The public API supports dump and deletion, not importing a suppression list.
  • Store anything you need beyond the 30-day message-retention window.
  • Avoid blind retries after ambiguous timeouts; no idempotency key is documented.

Search documentation

Type to search the documentation.