Tags for Batch and Scheduled Emails

Add tags to batch and scheduled emails.

The Resend API has supported tags to help you associate emails with your application.

curl -X POST 'https://api.resend.com/emails' \
-H 'Authorization: Bearer re_xxxxxxxxx' \
-H 'Content-Type: application/json' \
-d $'{
"from": "Acme <onboarding@resend.dev>",
"to": ["delivered@resend.dev"],
"subject": "hello world",
"html": "<p>it works!</p>",
"tags": [
{
"name": "category",
"value": "confirm_email"
}
]
}'

Some examples of when to use a tag:

  • Associate the email a “customer ID” from your application
  • Add a label from your database like “free” or “enterprise”
  • Note the category of email sent, like “welcome” or “password reset”

Tags can include ASCII letters, numbers, underscores, or dashes. After the email is sent, the tag is included in the webhook event.

Previous limitations

In the past, tags were not supported when:

  • Scheduling an email
  • Using the emails/batch endpoint

Schedule with tags

You can now add tags to scheduled emails. Both the Resend API and all SDKs support tags in scheduled emails, but here is a quick example using the Resend API.

curl -X POST 'https://api.resend.com/emails' \
-H 'Authorization: Bearer re_xxxxxxxxx' \
-H 'Content-Type: application/json' \
-d $'{
"from": "Acme <onboarding@resend.dev>",
"to": ["delivered@resend.dev"],
"subject": "hello world",
"html": "<p>it works!</p>",
"scheduled_at": "2025-09-25T11:52:01.858Z",
"tags": [
{
"name": "category",
"value": "confirm_email"
}
]
}'

Send batch with tags

You can now also send batch emails with tags. All SDKs support this improvement.

import { Resend } from 'resend';
const resend = new Resend('re_xxxxxxxxx');
const { data, error } = await resend.batch.send([
{
from: 'Acme <onboarding@resend.dev>',
to: ['foo@gmail.com'],
subject: 'hello world',
html: '<h1>it works!</h1>',
tags: [
{
name: 'category',
value: 'confirm_email',
},
],
},
{
from: 'Acme <onboarding@resend.dev>',
to: ['bar@outlook.com'],
subject: 'world hello',
html: '<p>it works!</p>',
tags: [
{
name: 'category',
value: 'confirm_email',
},
],
},
]);

For more help, see the documentation on tags.

Conclusion

We hope this expansion of tags improves your experience and makes it easier for you to track emails in your app.

We're working on additional improvements across the Resend API to bring feature parity across endpoints.