Transactional API + SMTP relay · Developer-first · LatAm-based, USD pricing

When the password reset doesn't arrive, nothing else matters.

Transactional infrastructure separated from marketing pool by default. REST API with idempotency keys following Stripe conventions, exponential backoff retries on transient failures, HMAC-SHA256 webhook signatures for event delivery, granular event timeline (queued, sent, delivered, opened, clicked, bounced, complained). P50 latency 28 milliseconds, P95 156 milliseconds, P99 312 milliseconds measured continuously across active client base. SMTP relay available on ports 587 and 465 for legacy frameworks. Development environment 290 dollars one-time setup with isolated test endpoint, production from 99 dollars monthly USD. Built for B2B SaaS, fintech, marketplaces, and e-commerce platforms in the 50K to 5M monthly transactional volume range that need reliable infrastructure without marketing-first ESP overhead.

P95 latency156ms
Inbox target97%
Dev setup$290
Production from$99/mo
Why marketing-first ESPs fail at transactional

Separation of concerns is not optional once volume scales.

The standard mistake among SaaS founders managing email infrastructure is treating transactional and marketing as the same problem with different content. They are structurally different operational domains with conflicting reputation requirements. Mixing them on the same IP pool was acceptable when monthly volume was low and ISP filters were less sophisticated. In 2026 with Gmail, Yahoo, and Microsoft enforcing bulk sender requirements automatically and reputation scoring running in real time, the mixed-pool approach becomes a structural liability.

Marketing emails generate spam complaints at higher rates by nature. Newsletters, promotions, lifecycle nurture sequences, win-back campaigns all carry inherent complaint risk because some recipients consider any commercial email unwanted regardless of opt-in status. Industry baseline complaint rate for marketing programs is 0.05 to 0.15 percent. For high-volume e-commerce promotional sends, complaint rates routinely peak at 0.20 to 0.30 percent during sale events.

Transactional emails generate near-zero complaints when properly classified. Password reset, OTP, order confirmation, payment receipt are user-initiated communications where the recipient is actively expecting the email and rarely flags it as spam. Industry baseline transactional complaint rate is 0.001 to 0.01 percent, two orders of magnitude lower than marketing.

When both traffic types share the same IP pool, the marketing complaint rate dominates the IP reputation. The aggregate spam complaint rate seen by Gmail Postmaster Tools and Microsoft SNDS reflects the marketing baseline of 0.10 percent rather than the transactional baseline of 0.005 percent. ISPs respond to that aggregate reputation by applying filtering decisions to all traffic from that IP, including critical transactional flows. The user clicks "forgot password," the email gets filtered to spam folder because the IP pool has marketing-grade reputation, the user cannot complete login, support tickets spike, customer churn follows.

Postmark and Mailgun built their products around this separation principle from launch. Postmark explicitly forbids marketing email on their transactional product. SendGrid offers separation via dedicated IP pools but requires manual configuration that most teams skip. AWS SES requires running two separate accounts with two separate verified identities. EMP separates by default on every production tier with no configuration required from the client team.

PATH A · MIXED POOL · STRUCTURAL RISK

Marketing + transactional same IP

Common in: SendGrid default config, Mailchimp transactional add-on, AWS SES single account, in-house SMTP without separation. Cost saving short term, reputation cost compounds over time.

  • Marketing complaint rate (0.10%) drags down transactional reputation
  • Password reset deliverability depends on newsletter complaint behavior
  • Sale event complaint spike kills login emails for 48-72 hours
  • Cannot warm transactional independently when launching new product
  • ISPs cannot evaluate transactional pattern in isolation
  • Single point of failure on shared reputation
PATH B · SEPARATED POOLS · INDUSTRY STANDARD

Dedicated transactional pool

Default in: Postmark, Mailgun, EMP Production Pro and Enterprise. Industry best practice since 2020. Slightly higher cost short term, structural protection long term.

  • Transactional reputation isolated from marketing volatility
  • OTP and password reset deliver consistently regardless of marketing activity
  • Sale event complaint spike contained to marketing pool
  • Independent warmup for new transactional flows possible
  • ISPs evaluate transactional behavior on its own merits
  • Resilient to single-pool failure scenarios
28ms · P50 API to SMTP initiated
Median latency from API request received to delivery initiated · measured continuously across active client base
156ms · P95 latency target
95th percentile latency · alert fires if exceeds 250ms for 15+ minutes · industry-competitive vs Postmark, Mailgun
97% inbox target
Target inbox placement on dedicated transactional pool · matches Postmark claim · enforced via continuous seed monitoring
99.95% uptime SLA
Written SLA on Enterprise tier · approximately 22 minutes monthly downtime maximum · auto credits if exceeded
Transactional Stack Calculator · interactive

Compare EMP against the stack your team is evaluating.

Filter by current provider plus monthly volume plus critical features plus deployment type. Calculator shows estimated monthly cost across providers and surfaces tradeoffs the documentation pages do not. Pricing data current as of April 2026 across SendGrid, Postmark, Resend, AWS SES, and EMP. For exact pricing on your specific volume and feature set, the diagnostic call returns a personalized comparison in 24 hours.

Your stack vs alternatives

Pricing public 2026. Estimated monthly cost. Real numbers vary by feature mix.

Live calculation
Monthly volume Total transactional emails
Use case profile Volume distribution
Critical features Multi-select
Latency priority P95 target

SendGrid

$19.95/mo

Essentials plan. Shared pool. Volume scales tier pricing.

Postmark

$60.50/mo

Pro plan. Built-in separation. Best deliverability claim.

AWS SES

$5/mo

$0.10/1K. Cheapest at volume. AWS overhead required for production.

EMP Pro

$390/mo

Pro tier. Separation default. Dedicated IP available. P95 156ms target.

Tradeoff summary for your scenario

SendGrid wins on price for SaaS B2B 50K starter scenarios. EMP wins when separation matters and you need predictable USD pricing without AWS overhead. Postmark wins on absolute deliverability if budget allows premium. AWS SES wins on raw cost if your team has AWS expertise. The right answer depends on which tradeoff your team values most.

Pricing public reference April 2026. SendGrid Essentials $19.95/mo (50K). Postmark $15/mo (15K) to $138/mo (125K). AWS SES $0.10/1K. Resend free 3K/mo, $20/mo (50K). Tradeoffs simplified for readability. Diagnostic call returns exact comparison personalized for your stack within 24 hours.

Latency benchmarks 2026 · what actually matters

P50, P95, P99 measured against alternatives at the API layer.

Latency in transactional email has two distinct measurement points that get confused in marketing material. API to SMTP initiated measures the delay between your application sending the request and the EMP infrastructure beginning SMTP delivery to the recipient mailbox provider. Time to inbox measures the additional delay until the message actually appears in the recipient's inbox. The first metric is fully under EMP control, the second depends on recipient mailbox provider response time which varies between providers and is outside any vendor control.

EMP measured P50, P95, P99 latency continuously across the active client base for the API to SMTP initiated metric. P50 28 milliseconds means half of all requests deliver into SMTP within 28ms of API receipt. P95 156 milliseconds means 95 percent of requests are within 156ms. P99 312 milliseconds means 99 percent are within 312ms. The remaining 1 percent of requests exceed 312ms typically due to recipient mailbox provider rate limiting (Microsoft applies temporary deferrals on bursty traffic) or downstream queue saturation during traffic spikes. Alert fires automatically if P95 exceeds 250 milliseconds for more than 15 minutes, allowing infrastructure team to intervene before degradation becomes user-visible.

Time to inbox depends on the recipient mailbox provider. Median observations across active client base: Gmail 1.2 seconds, Apple Mail 1.8 seconds, Yahoo 2.4 seconds, Microsoft 3.1 seconds. Tail latency (P99 time to inbox) reaches 8 to 14 seconds during peak hours when ISP queues experience load. For OTP and password reset flows where industry consensus targets time to inbox under 5 seconds, EMP delivers within target on Gmail and Apple Mail in 95 percent of sends, within target on Yahoo in 88 percent of sends, within target on Microsoft in 72 percent of sends due to Microsoft's stricter filtering pipeline. Microsoft is the structurally hardest target across all providers, not specific to EMP.

Postmark publishes a P50 of 25 milliseconds API to SMTP and claims 97 percent inbox placement, slightly faster than EMP at the median but with similar P95 distribution. SendGrid publishes a P50 of 60 to 120 milliseconds depending on plan tier, with P95 typically 300 to 500 milliseconds. AWS SES publishes API response under 100 milliseconds for the SendEmail call but does not document time to inbox separately because that depends on additional configuration the customer manages. Resend publishes P50 around 40 milliseconds with strong P95 distribution.

The honest comparison: EMP, Postmark, and Resend operate in the same low-latency tier with differences below the noise floor for typical SaaS use cases. SendGrid is acceptable for non-time-critical transactional but not optimized for OTP. AWS SES requires careful configuration to achieve competitive latency. Choosing a provider on latency alone is rarely the right framework, the differentiator is the combination of latency plus deliverability plus separation plus pricing structure plus support quality.

4 service tiers

Development setup $290 · production from $99.

Start with the development environment for integration testing at 290 dollars one-time, isolated test endpoint with full API access. Move to production when traffic justifies it. All production tiers include separation between transactional and marketing pools by default. Idempotency keys, HMAC webhooks, and exponential retries on every tier including development environment.

Development Setup

Isolated test environment for integration.

$290 one-time USD
  • 1,000 test emails for integration
  • Dedicated test endpoint isolated from production
  • Full API access · HMAC webhooks
  • Idempotency keys · retry logic
  • Integration code review session
  • Onboarding session 60 min
  • Credit applied if upgrading to production within 60 days
Provision dev environment

Production Starter

For SaaS B2B in early production.

$99 / month USD
  • 50,000 emails per month included
  • P95 156ms target latency
  • Separation transactional + marketing
  • Domain verification
  • Email support 12h response
  • Webhook events
  • Bounce auto-cleanup
Activate Starter

Enterprise

Fintech, e-commerce high volume.

$1,200 / month USD
  • 5M emails per month included
  • Dedicated IP pool default
  • Written SLA 99.95% uptime
  • 24/7 priority + WhatsApp
  • Account Manager dedicated
  • Custom retention policies
  • HIPAA BAA available
Talk to sales
Volume overage: Starter overage $1.80 per 1,000 additional emails (matches Postmark Pro overage pricing for direct comparability). Pro overage $1.20 per 1,000. Enterprise overage negotiated per contract typically $0.80 per 1,000. Annual upfront discount: 10 percent applied if year paid in advance, equivalent to one month free. Migration assistance: moving from SendGrid, Postmark, Mailgun, AWS SES is supported with mapping guides and free engineering hours included on Pro and Enterprise tiers.
Developer experience · API contract

What integration looks like in 4 lines of code.

The API surface follows REST conventions consistent with Stripe and Anthropic patterns familiar to most engineering teams. Authentication via API key in Authorization header. JSON request and response bodies. Standard HTTP status codes. Idempotency-Key header on all POST endpoints to prevent duplicate sends on client retries. SDK packages available in Node.js, Python, Ruby, Go, PHP, Java with consistent interface across languages. SMTP relay endpoint for legacy frameworks that prefer SMTP over REST.

REST API · cURL
curl https://api.emailmarketingpanama.com/v1/messages \
  -H "Authorization: Bearer $EMP_API_KEY" \
  -H "Idempotency-Key: pwd-reset-user-7821" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "no-reply@yourapp.com",
    "to": "user@example.com",
    "subject": "Reset your password",
    "html": "<p>Click <a href=\"...\">here</a> to reset.</p>",
    "text": "Reset your password: ..."
  }'
Node.js SDK
import { EMP } from '@emailmarketingpanama/sdk';

const emp = new EMP(process.env.EMP_API_KEY);

await emp.messages.send({
  from: 'no-reply@yourapp.com',
  to: 'user@example.com',
  subject: 'Reset your password',
  html: resetTemplate.render({ user, token }),
  idempotencyKey: `pwd-reset-${user.id}-${Date.now()}`,
});
Webhook verification · Node.js
import crypto from 'crypto';

function verifyWebhook(req, secret) {
  const signature = req.headers['x-webhook-signature'];
  const timestamp = req.headers['x-webhook-timestamp'];
  const payload = `${timestamp}.${JSON.stringify(req.body)}`;

  const expected = crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex');

  // Reject if outside 5min window or signature mismatch
  if (Math.abs(Date.now() / 1000 - timestamp) > 300) return false;
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}
SMTP relay · environment
SMTP_HOST=smtp.emailmarketingpanama.com
SMTP_PORT=587  # STARTTLS · or 465 for TLS
SMTP_USER=apikey
SMTP_PASS=$EMP_API_KEY  # same key as REST API

# Works with Rails ActionMailer, Django send_mail,
# Laravel Mail, Spring JavaMailSender, nodemailer,
# any framework that speaks SMTP.
The honest objections

What CTOs ask before signing the contract.

"Why not just use AWS SES at $0.10 per 1,000?"

SES is the right answer if your team has deep AWS expertise and your operational priorities are raw cost over everything else. The hidden cost is overhead: SES requires running Lambda functions for event processing, SNS or SQS for retry logic, DynamoDB for idempotency tracking, CloudWatch for monitoring, and an ops engineer who understands the SES sandbox-to-production approval flow plus IP warmup plus complaint handling (this is AWS terminology referring to their account approval gate, not an EMP product). Time investment: typical SaaS team spends 4-8 engineering weeks getting SES into production with proper retry logic, webhook dispatch, and bounce handling. Ongoing operations: 5-10 hours monthly maintaining the integration, debugging delivery issues, and managing reputation. Realistic total cost of ownership at 500K monthly volume: SES infrastructure $50/mo plus engineering operations $400-800/mo plus tooling for monitoring $100-200/mo equals approximately $550-1,050/mo. EMP Pro at $390/mo includes all of that plus dedicated team for deliverability questions, predictable monthly cost without AWS variability. SES wins decisively at 10M+ monthly volume where the per-email cost difference compounds. EMP wins at 50K-5M where engineering operations cost dominates.

"Postmark has 97% inbox claim and we trust their brand. Why switch?"

Postmark is genuinely good and we recommend it for clients whose primary need is best-in-class deliverability and budget for premium pricing. The economic case: Postmark scales linearly with volume so 100K monthly costs approximately $85, 500K costs approximately $375, 1M costs approximately $700. EMP at equivalent volumes is competitive ($99-$390-$1,200) without significant deliverability gap (we target 97% inbox same as Postmark, achieve 95-96% in active client base). The operational case: Postmark was acquired by ActiveCampaign in 2022 and product roadmap now reflects ActiveCampaign priorities (lifecycle marketing integrations, CRM bundle features) rather than pure transactional optimization. EMP remains independent with founder-led product decisions. The geographic case: Postmark is US-based with US-based support team. For LatAm SaaS with cross-border operations, EMP cross-jurisdictional flexibility plus Spanish-language operational support matters. Honest answer: if you are US-only with budget for premium and zero compliance complexity, Postmark is fine. If LatAm presence or USD pricing predictability or independent vendor matters, EMP is structurally better fit.

"SendGrid is the standard. Why look elsewhere?"

SendGrid is the largest by volume (70+ billion monthly emails) and adequate for most use cases. The structural concerns: SendGrid was acquired by Twilio in 2019 and email is now a secondary product line within Twilio's communications portfolio that prioritizes voice, SMS, and WhatsApp. Product investment in email-specific innovation has slowed since acquisition. The deliverability concerns: shared IP pools at SendGrid serve heterogeneous senders with varying behavior, occasionally degrading reputation through neighbor effect. Fixing requires upgrading to dedicated IP at additional cost. The latency concerns: SendGrid P95 typically 300-500ms vs Postmark/EMP/Resend P95 under 200ms. For OTP and password reset flows the difference is user-perceptible. The scaling concerns: SendGrid pricing tiers create cost cliffs at volume thresholds that surprise teams during growth phases. Honest answer: SendGrid is the safe enterprise choice and rarely a wrong decision. EMP is a better operational fit for SaaS scale-ups in the 50K-5M range that value predictable pricing, lower latency, and independent vendor relationship over largest-vendor reputation.

"Resend has the best DX and we love it. Why migrate?"

Resend has genuinely excellent developer experience and React Email integration that we openly admire. The case to stay with Resend: if your team is happy and your volume fits their pricing tiers cleanly, no reason to migrate. The case to consider EMP: Resend is YC-backed startup founded 2023, currently profitable but younger company with shorter operational track record. EMP operates since 2010 with 16-year track record on email infrastructure specifically. The geographic case: Resend is US-based with US-focused product. EMP is LatAm-based with cross-border experience that matters for SaaS expanding into LatAm or operating from LatAm into US. The pricing case: at 50K monthly Resend costs $20/mo vs EMP $99/mo, Resend wins on price for early-stage. At 500K Resend costs $90/mo vs EMP $390/mo, Resend still wins on price. EMP wins when: separation matters more (Resend mixes pools below dedicated IP threshold), compliance flexibility matters (cross-border DPA, Panama jurisdiction), or vendor track record matters (longer operational history). Honest answer: Resend is the modern best-DX choice for greenfield SaaS in early stages. EMP is the operational maturity choice for SaaS scale-ups that prioritize structural separation and longer vendor track record.

"You're based in Panama. What about US data residency?"

Three scenarios depending on compliance posture. (1) US-only clients with no cross-border concerns: operational location functionally invisible. API endpoints route via global CDN, alerts arrive in your Slack on your timezone, monthly reports in English. We can structure data flows so message logs and aggregate reputation data are stored in US-based infrastructure if required by your compliance framework. (2) LatAm SaaS with US customers: Panama-based operations is sometimes an advantage because data not subject to US CLOUD Act, particularly for clients with European customers or sensitive verticals. Panama Data Protection Law (Law 81 of 2019) aligns conceptually with GDPR principles. (3) EU customers with GDPR concerns: we sign DPA as data processor with sub-processor disclosure documented, including specific clauses on international transfers. HIPAA: BAA available on Enterprise tier for healthcare clients, infrastructure controls SOC2-aligned. This can be discussed honestly during diagnostic call based on your specific compliance officer's framework. We are not a US-based vendor, which is sometimes an advantage and sometimes a friction point.

"What happens if your API is down during a critical send?"

Three layers of resilience. (1) Infrastructure: API runs across two geographic regions with active-active failover, automatic routing to healthy region within 30 seconds of regional incident. SMTP relay independent infrastructure path so REST API outage does not affect SMTP. Documented uptime over 24 months: 99.96 percent measured externally. (2) SLA written: Production Pro tier SLA 99.9 percent uptime, Enterprise SLA 99.95 percent uptime with auto credits if exceeded. (3) Client-side resilience pattern: we recommend SDK includes built-in retry with exponential backoff (3 attempts over 30 seconds), client application implements queue with persistence (Redis, SQS, or similar) for emails that fail synchronous send, fallback provider (typically AWS SES) configured as emergency relay for password reset and OTP flows. Honest reality: no email vendor offers 100 percent uptime including AWS, SendGrid, Postmark. Engineering for resilience client-side is industry standard practice for any email infrastructure. We document the recommended pattern in onboarding and SDK includes the retry helpers by default.

Frequently asked questions

What surfaces in the technical review.

How does this compare to SendGrid, Postmark, Resend, AWS SES?

Each tool optimizes differently:

  • SendGrid: highest volume, lowest per-email cost, 70B+ monthly emails
  • Postmark: fastest time-to-inbox, 97% inbox claim, expensive at scale ($85-700/mo)
  • Resend: best DX, React Email integration, free 3K/mo
  • AWS SES: $0.10/1K, requires AWS overhead
  • EMP: separated pools default, USD pricing predictable, LatAm-based with cross-border flexibility

Strong fit for SaaS scale-ups in 50K-5M monthly range.

What latency can we expect in production?

API to SMTP initiated:

  • P50: 28ms
  • P95: 156ms (alert if exceeds 250ms 15+ min)
  • P99: 312ms

Time to inbox by ISP (median):

  • Gmail 1.2s · Apple 1.8s · Yahoo 2.4s · Microsoft 3.1s

OTP under 5s target met: Gmail 95% · Apple 95% · Yahoo 88% · Microsoft 72%.

Can we use SMTP relay instead of REST API?

Yes, both transports identical SLA and pricing.

  • Endpoint: smtp.emailmarketingpanama.com
  • Ports: 587 (STARTTLS) or 465 (TLS)
  • Auth: username "apikey" + API key as password
  • Compatible: Rails ActionMailer, Django send_mail, Laravel Mail, Spring JavaMailSender, nodemailer, any SMTP-speaking framework

Same dedicated transactional pool. Sub-accounts available for separating staging/production credentials.

Why should transactional be separate from marketing?

Mixing creates structural reputation risk:

  • Marketing complaint baseline: 0.05-0.15% (peaks 0.30% sales)
  • Transactional complaint baseline: 0.001-0.01% (two orders magnitude lower)
  • Mixed pool reputation: dragged down to marketing average
  • Result: password reset filtered to spam during sale event

Industry best practice since 2020 is structural separation. Postmark/Mailgun built around this. EMP separates by default on production tiers.

Do you support webhooks with HMAC signatures?

Yes, all webhooks signed HMAC-SHA256:

  • Headers: X-Webhook-Signature + X-Webhook-Timestamp
  • Window: 5 min default (configurable)
  • SDKs: Node.js, Python, Ruby, Go, PHP with verification helpers
  • Events: queued, sent, delivered, opened, clicked, bounced, complained, unsubscribed
  • Retry: exponential backoff 24h, 8 attempts, dead letter queue
What about idempotency for retries?

All POST endpoints support Idempotency-Key header:

  • Format: any string up to 256 characters
  • Window: 24 hours during which key remains valid
  • Behavior: replay returns cached response without duplicate send
  • Convention: follows Stripe and Anthropic API patterns exactly
  • Critical for: OTP, password reset, payment confirmation flows
Can we get a dedicated IP?

Yes:

  • Pro tier: $200/mo per IP add-on
  • Enterprise tier: dedicated pool included default
  • Recommended threshold: 100K-200K monthly volume
  • Warmup: 14-21 days following Gmail/Microsoft patterns
  • Configuration: PTR record, SPF/DKIM/DMARC alignment validated

Below 100K monthly, shared pool reputation typically better than fresh dedicated IP.

How do invoicing and currency work?

Pricing in USD, invoicing flexible:

  • USD invoicing: default for US, EU, international with USD accounts
  • Local currency: available for LatAm clients (PAB, CRC, COP, MXN)
  • Payment methods: ACH, wire, business credit card (Visa/MC/Amex), PayPal Business, USDC (Ethereum/Polygon)
  • Terms: NET 15 with established history, prepaid first invoice for new clients

Cross-border tax compliance handled per client jurisdiction.

Development environment provisioned in 24 hours same-day API key after setup.

Development environment setup at 290 dollars one-time covers integration testing for your engineering team. Provisioning typically completes within one business day after contract signing. You receive isolated test endpoint with full API access via curl or any SDK in your stack, plus 60-minute onboarding session and integration code review with engineering team. Production upgrade requires domain verification (DNS records take 5-30 minutes to propagate) plus brief account review (typically same business day for SaaS clients with established product). The 290 dollars credits 100 percent toward first month production within 60 days of development setup. For Pro and Enterprise tier evaluation, free 30-minute architecture call with engineering team returns personalized comparison against your current stack within 24 hours.

Dev setup $290 one-time · Same-day API key after setup · Pro and Enterprise: free 24h personalized quote