Checked

Sendtier vs Resend: message storage and sending features

Compare Sendtier's public preview with Resend on message storage, sending features, limits, and pricing.

Resend offers published SDKs, hosted templates, attachments, SMTP, and production sending with no approval step. Sendtier is a public preview that stores message data in AWS Frankfurt, sends through Amazon SES, and still limits live delivery.

Live sending is limited during the public preview. Checked 7 October 2026. If a linked page has changed, send a correction to hello@sendtier.com.

Data location

Resend can send from North Virginia (us-east-1), Ireland (eu-west-1), São Paulo (sa-east-1), or Tokyo (ap-northeast-1). The regions page says to "select the region you want to send your emails". Resend recommends a separate subdomain for each sending region. Changing an existing domain's region requires deleting and recreating it, then updating its DNS records.

Resend distinguishes sending location from storage location. Its GDPR page states that customer data, including message content, is stored in the United States. Selecting Ireland as the sending region does not change that.

On Free, Pro, and Scale, Resend keeps email and log data for 30 days while the account is active. Enterprise retention is flexible. After the account ends, remaining customer data is deleted within 90 days, and backups last 7 days.

The terms name Plus Five Five, Inc. and choose California law. The DPA says the company's primary processing operations take place in the United States. It names Module Two and Module Three of the EU Standard Contractual Clauses, the UK Addendum, and Swiss transfers through those clauses. The DPA also states participation in the EU-US Data Privacy Framework and its UK Extension.

MB Tobuli operates Sendtier, and production runs in AWS eu-central-1 (Frankfurt). The API, workers, Postgres database, automated backups, and queues stay in that region. Email is sent through Amazon SES in eu-central-1. AWS is a subprocessor, and the subprocessor list is still a draft.

The database stores the sender, recipients, subject, HTML and text bodies, tags, status, and delivery events. Raw MIME is not stored. Emails, events, and webhook deliveries are kept 30 days by default, in daily partitions, then removed. Organization owners can export the data and delete the organization, with a 30-day restore window. See retention.

Resend's subprocessor list names Amazon Web Services, Inc. (USA) as the third-party hosting and sending provider. A troubleshooting page shows DNS aimed at feedback-smtp.eu-west-1.amazonses.com. Sendtier uses MAIL FROM host send.<domain>, MX 10 feedback-smtp.eu-central-1.amazonses.com, and TXT v=spf1 include:amazonses.com ~all. The other records are on the domains page.

Comparison

Resend's self-serve plans are billed monthly. The pricing guide says annual subscriptions are available for Enterprise. Resend's published billing example adds taxes and fees to the listed charges. Sendtier's Pro and Scale plans are planned and not on sale. See pricing.

Both services count outgoing recipients toward their quotas. The pricing guide says Resend counts each To, Cc, and Bcc recipient separately, and that received emails also count. Sendtier counts recipients, not messages. The daily allowance resets at 00:00 UTC. The monthly allowance resets at 00:00 UTC on the first day of each month.

FeatureResendSendtier (public preview)
Data storage locationUnited States, including message content. The sending region does not move it. GDPR page.AWS eu-central-1 (Frankfurt). Sender, recipients, subject, HTML, text, tags, status, and delivery events. Raw MIME is not stored. Backups stay in the region.
Sending regionsus-east-1, eu-west-1, sa-east-1, and ap-northeast-1, chosen per domain. Regions.eu-central-1 only, through Amazon SES.
Free tier$0/month for 3,000 emails and 100 emails a day. The pricing page calls this a free-forever plan. The terms allow Resend to change or end it.3 000 recipients a month and 100 a day.
Paid plansPro is $20/month for 50,000 emails. Overage is $0.90 per 1,000, in buckets of 1,000, only if pay-as-you-go is enabled. The next Pro tier is $35/month for 100,000 emails. Pricing.Pro and Scale are planned and not on sale.
Recipient countingEach To, Cc, and Bcc recipient counts separately. Received emails also count. Pricing guide.Each recipient counts, not each message.
Testing before DNS verificationDocuments resend.dev addresses that simulate delivered, bounced, complained, and suppressed events. Those sends count against quota. onboarding@resend.dev can mail only the account address. Other ordinary recipients need a verified domain. No production-approval step. Test emails.A test key accepts a send from a domain you have added, before DNS is verified. The email is never delivered. Cap: 1 000 recipients a day. A live key needs a verified domain. Live delivery is limited.
Bounce details exposedThe documented bounce object contains message, type, and subType. Bounced webhook.Shows the bounce type and the receiving server's reply when Amazon SES reports one.
Automatic suppressionsHard bounces and spam complaints, for the whole team and every domain. Suppressions.Permanent bounces and complaints add the address. Transient and undetermined bounces do not. A later send returns 422 recipient_suppressed.
Webhook signingsvix-id, svix-timestamp, and svix-signature. The receiver verifies the raw body. Verify guide.The receiver verifies Sendtier-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256> over the timestamp, a period, and the raw body. Tolerance is 5 minutes.
Cc, Bcc, and Reply-Tocc, bcc, and reply_to on the send API. A template send can override the template reply-to.Not supported.
AttachmentsContent and a filename, or a hosted path, on a single send. The maximum size is 40 MB after attachments are Base64-encoded. The batch API does not support attachments yet.Not supported.
Custom headersSupported through headers on the send API.Not supported.
Hosted templatesA template id or alias, plus variables, on the send API.Not supported.
SMTP relaysmtp.resend.com, ports 25, 465, 587, 2465, and 2587. Username resend. The password is the API key. Every plan.Not supported.
Published SDKsNode.js, PHP, Laravel, Python, Ruby, Go, Java, Rust, and .NET, plus community Elixir, NestJS, and Dart libraries. SDKs.Not supported. TypeScript, Go, and PHP source exists in the repository, but the packages are not published. Use HTTP.
Scheduling windowUp to 30 days, in natural language or ISO 8601, with reschedule and cancel. Schedule.scheduled_at, up to 72 hours ahead.
Batch sizeUp to 100 emails in one request, as a JSON array. Batch API.1 to 100 messages. Body cap 10 MiB.
Dedicated IPs$30/month as an eligible-plan add-on, on Scale above 3,000 emails a day, with automatic warmup and autoscaling. Marketing Pro can use them. The pool is per region. Pricing, guide.Not supported.

Bounce details

The published example describes a suppressed recipient, with type Permanent and subtype Suppressed. It does not establish what every bounce message contains.

Sendtier shows the bounce type and the receiving server's reply when Amazon SES reports one. It stores Permanent, Transient, or Undetermined, plus the subtype. When Amazon SES reports them, it also stores the action, a status such as 5.1.1, and the diagnostic code. SES omits that code on some bounces.

smtp; 550 5.1.1 ... user unknown

The reporting MTA and the remote MTA IP are kept when SES includes them. A delivery event keeps the receiving server's SMTP response and the remote MTA. Classification follows the SES bounce type, not the SMTP digits. Permanent bounces and complaints automatically add the recipient to the suppression list. You can also add addresses through the API. See suppressions and errors.

The suppressions page says "Any address added to the suppression list will be skipped across all your domains".

Webhook signatures

The verify guide says "Make sure that you're using the raw request body when verifying webhooks." Subprocessors name Svix Inc. for webhooks. The retry guide gives this schedule. Resend attempts delivery immediately, then retries after 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours, and two successive 10-hour waits. Each delay follows the preceding failure, and a persistently failing endpoint is disabled. The pricing page includes 5 webhook endpoints on Pro and 10 on Scale.

Your webhook receiver must reject timestamps more than five minutes before or after its current time. Rotation keeps the old secret valid for 24 hours and sends two v1 values. Retries wait 30 seconds, 1 minute, 5 minutes, 15 minutes, 30 minutes, 1 hour, 2 hours, 4 hours, and 8 hours. They stop after 24 hours, and you can inspect a delivery and send it again. See webhooks.

Sendtier delivers webhooks for email.delivered, email.bounced, email.complained, email.delayed, and provider failures. The Resend event list also documents sent, scheduled, failed, suppressed, and received events, plus domain, contact, suppression, and topic events.

Where Resend is the better choice

Resend is the better choice when you need production sending now, or a feature Sendtier does not support.

Where Sendtier fits

Sendtier fits when the stored message must be in AWS Frankfurt and a public preview is enough.

You can add, list, and remove suppressions through the API. A test key accepts a send from a domain on the account before DNS is verified, and those emails are never delivered. Free is 3 000 recipients a month and 100 a day, so ten recipients on one message count as 10. See pricing. Each key allows 10 requests a second, with a burst of 20, then the API returns 429 rate_limited and Retry-After. See rate limits.

Hosted templates, attachments, SMTP, cc, bcc, reply_to, custom headers, dedicated IPs, and published SDKs are not supported.

Switching from Resend

See the migration guide. DNS records for the new sending domain are on the domains page.

Change the host and the key

The API introduction shows Authorization: Bearer re_xxxxxxxxx. It says "All API requests must include a User-Agent header." Requests go to POST https://api.resend.com/emails.

Sendtier uses POST https://api.sendtier.com/emails with Authorization: Bearer st_live_… or st_test_…. First add your sending domain to the organization. Replace the example sender with an address on that domain and supply your own test key. DNS verification can remain pending; the message will not be delivered.

Change the body

The send API allows up to 50 addresses in to. Sendtier to is an array of 1 to 50 addresses. Sendtier does not support cc, bcc, reply_to, attachments, headers, or template. Applications that depend on those fields need changes before migration. Convert Resend's array of tag objects into Sendtier's string map, and supply rendered HTML, text, or both. See sending.

scheduled_at allows at most 72 hours. Resend allows 30 days, plus reschedule and cancel. An Idempotency-Key replays the stored response for the same request. A changed body returns 409 idempotency_conflict.

Resend's batch call sends up to 100 emails as a JSON array. Sendtier's POST /emails/batch takes 1 to 100 messages, and the body cap is 10 MiB.

await fetch("https://api.sendtier.com/emails", {  method: "POST",  headers: {    Authorization: "Bearer st_test_replace_me",    "Content-Type": "application/json",    "Idempotency-Key": "receipt-123",  },  body: JSON.stringify({    from: "hello@your-domain.example",    to: ["user@example.net"],    subject: "Your receipt",    text: "Thanks for your order.",    tags: { category: "receipt" },  }),});

Change the webhook check

Update your receiver to verify Sendtier-Signature using the webhook secret, timestamp, and raw body. Compare the HMAC-SHA256 signature in constant time and enforce the five-minute tolerance. Follow the verification guide. An unchanged Svix verifier is incompatible.

How these facts were checked

This comparison uses public Resend documentation checked on 7 October 2026 and Sendtier product facts checked against the code that day. We did not test performance, inbox placement, or uptime. Resend's compliance statements are attributed to its publications; we did not inspect its audit reports or the Data Privacy Framework registry.

Start free with a test key: test messages are not delivered, and the quickstart shows the request.

Sources