Transactional email service By the authors of React Email; Amazon SES sits in the delivery path
Resend logo

Resend features: what you get on each plan

Last verified Aug 27, 2026
Feature TL;DR (August 2026)
Resend covers 27 of the 32 features we test, and the surprise is how little the plan ladder gates: templates, React Email, SMTP, batch sending, webhooks, broadcasts, segments and automations all run on the free tier. The two real walls are inbound email, which needs Pro, and dedicated IPs, which need Scale plus an add-on. Free is capped at 100 emails a day inside 3,000 emails / mo. Sourced from resend.com/pricing and resend.com/docs, both consulted 27 August 2026.

Feature matrix

FeatureIncludedFrom planVerdict
Email templatesYesFreeStored server-side, variables capped
React EmailYesFreeFirst-party library, not a lock-in
RESTful APIYesFreeThe product, not an upsell
SMTP relayYesFreeAvailable without touching the API
Official SDKsYesFreeEvery tier, no gating
Batch sendingYesFreeIncluded from the first day
Scheduled sendsYesFreeFuture-dated dispatch, no tier
Idempotency keysYesFreeDocumented, prevents duplicate sends
Open trackingYesFreeUngated across all plans
Link trackingYesFreeUngated across all plans
WebhooksYesFreeOne endpoint only on Free
Signed webhook endpointsYesFreeSvix headers, dedupe by id
Inbound emailYesProThe clearest wall on Free
AutomationsYesFree10,000 runs, real branching steps
Audiences and contactsYesFreeCustom properties on contacts
BroadcastsYesFreeMarketing sends, unsubscribes handled
SegmentsYesFreeContact groups for targeting
Topics preference centreYesFreeScoped consent, rare at this tier
Automatic suppression listYesFreeManaged for you, no config
Bounce detailsYesFreeReason exposed, not just status
Deliverability insightsYesFreeSuggestions attached to the data
Multi-region sendingYesFreeUngated, unusual on a free tier
Custom domainsYesFree3, then 10, then 1,000
Additional domainsPartialProPaid add-on beyond the quota
Dedicated IPsPartialScaleAdd-on, and only from Scale
Dedicated IP warmingYesScaleFollows the IP, same wall
Data retentionYesFreeFlat 30 days until Enterprise
DKIM, SPF, DMARC authYesFreeStandard setup, all tiers
API key permissionsYesFreeScoped keys from the start
Multi-factor authenticationYesFreeAccount security, no tier
Single sign-onPartialScaleAdd-on on Scale, included Enterprise
AI creditsYesFree5 a month, then 100, then 500
Landing pagesNoNoneNot a product surface here
Hosted signup formsNoNoneBring your own capture
A/B testingNoNoneAbsent from broadcasts entirely
SMSNoNoneEmail only, by design
CRMNoNoneContacts are a list, not a CRM

Feature by feature

Resend templates

Templates exist, they are free, and they are server-side. You create one from the Templates dashboard, by cloning a Broadcast, by importing an HTML or React Email file, or through the template creation endpoint. Sending then means passing a template id plus a set of variable values, and Resend renders the final message before dispatch. Nothing about this is gated: the docs describe no plan requirement, and the pricing comparison table does not list templates as a tiered row.

The limits are in the templating language, not in the billing. Variables use triple-brace syntax, {{{VARIABLE_NAME}}}, and a template accepts at most 20 variables. Only two types are supported, string and number, each with an optional fallback used when no value is supplied at send time. Six names are reserved and cannot be reused: FIRST_NAME, LAST_NAME, EMAIL, RESEND_UNSUBSCRIBE_URL, contact and this.

That is a deliberately thin templating layer. There are no loops, no conditionals and no helpers of any kind, so a receipt with a variable number of line items cannot be built from a stored template alone. Mailgun’s Handlebars subset gives you each and if; SendGrid’s dynamic templates give you both plus formatting helpers. Resend’s answer to that gap is not a richer template language, it is React Email, which is why the two features have to be read together rather than compared.

Free on every plan, but 20 variables, strings and numbers only, and no loops or conditionals in a stored template.

Resend React Email

React Email is the reason a repeating block is not a problem. It is a component framework for building emails in React and TypeScript, published by Resend under the MIT licence, and it appears as an ungated row on every pricing tier. Components cover the structural pieces you would otherwise hand-write as nested tables, and they are tested against Gmail, Apple Mail, Outlook, Yahoo Mail, HEY and Superhuman.

The mechanics matter for where the logic lives. React Email compiles to an HTML string through a render utility, and that string is what reaches the sending API. Your loops, conditionals and formatting run in your application at render time, not on Resend’s servers. That is the opposite trade from a stored dynamic template: full expressive power, no cap on variables, but a code deploy is needed to change the wording, and non-developers cannot edit anything.

It is also not a lock-in. The framework documents adapters for Nodemailer, Mailgun, SendGrid, Postmark, AWS SES, Azure Communication Email, MailerSend, Scaleway and Plunk alongside Resend itself, and adoption is incremental inside an existing JavaScript or TypeScript project. The practical read: React Email is a genuine reason to pick Resend, but it is not a reason you cannot take with you.

Ungated on all tiers, MIT licensed, and portable to nine other providers: the templating power sits in your codebase, not in the account.

Notes and gotchas

Inbound is the one feature Free genuinely lacks. The pricing comparison marks inbound emails with a dash on Free and a check on Pro, Scale and Enterprise. Every other row in the sending section is available on Free. If you are evaluating Resend for a reply-handling flow, the free tier will not show you the feature at all.

Webhook endpoints are the quiet quota. Free allows 1 endpoint, Pro 5, Scale 10. All event types are available at every tier, so the constraint is fan-out, not visibility: one endpoint means you cannot feed a warehouse, an alerting path and your application separately without a router of your own. Retries run at 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours and 10 hours, delivery is at-least-once, and ordering is not guaranteed, so deduplicate on the svix-id header and sequence on created_at.

Retention does not improve with the plan. Free, Pro and Scale all hold data for 30 days; only Enterprise is flexible. Paying more buys volume, domains and endpoints, not a longer forensic window.

The API rate limit is per team, not per key. The documented default is 10 requests per second across all API keys on a team, raised for trusted senders on request. Splitting traffic across keys does not raise the ceiling.

Continue reading

See the Resend pricing tab for what each tier costs and how overage is billed, the Resend review for the overall verdict, and Resend alternatives for how it compares against other developer-first senders.

AAlaa Touil RRabeb How we test →

This review follows our email infrastructure testing methodology. We disclose affiliate relationships in our editorial independence policy.