OSS-first docs
These docs teach the open system first: contracts, generated surfaces, runtimes, governance, and incremental adoption. Studio shows up as the operating layer on top, not as the source of truth.
Postmark
Postmark is a transactional email service with industry-leading deliverability. Use it to send order confirmations, password resets, notifications, and other critical emails.
Setup
Add your Postmark credentials to your environment variables:
# .env
POSTMARK_API_TOKEN=...
POSTMARK_FROM_EMAIL=noreply@example.com
POSTMARK_FROM_NAME="Your App Name"Get your API token from the Postmark Dashboard.
Sending emails
capabilityId: send-email
provider:
type: postmark
operation: sendEmail
inputs:
to:
type: string
description: "Recipient email address"
subject:
type: string
htmlBody:
type: string
optional: true
textBody:
type: string
optional: true
templateId:
type: string
optional: true
templateData:
type: object
optional: true
outputs:
messageId:
type: string
submittedAt:
type: timestampUsing templates
Postmark templates allow you to design emails in their dashboard and populate them with data:
capabilityId: send-welcome-email
provider:
type: postmark
operation: sendEmail
inputs:
to:
type: string
userName:
type: string
config:
templateId: "welcome-email"
templateData:
user_name: ${input.userName}
login_url: "https://app.example.com/login"Webhooks
Postmark can notify your app about delivery, bounces, and opens:
https://your-app.com/api/webhooks/postmarkContractSpec automatically processes these webhook events:
- Delivery – Email was successfully delivered
- Bounce – Email bounced (hard or soft)
- SpamComplaint – Recipient marked email as spam
- Open – Recipient opened the email
- Click – Recipient clicked a link
Best practices
Use templates for consistent branding
Always provide both HTML and plain text versions
Monitor bounce rates and remove invalid addresses
Use message streams to separate different email types
Test emails in the Postmark sandbox before going live
Set up DKIM and SPF records for your domain