Birthday emails are a recurring automation that sends a yearly email to each subscriber on their birthday (or a configurable number of days before or after). They are perfect for sending a discount code, a coupon, or a heartfelt message to keep your audience engaged.
Requirements
- A paid MailPoet plan with the MailPoet Premium plugin installed and activated.
- A date custom field on your subscribers that holds their birthday (year/month/day).
Step 1 – Add a “Birthday” custom field
Go to MailPoet → Subscribers → Custom Fields and create a new custom field of type Date. Choose the Year, month, day format so MailPoet can match the day of the year correctly.
Make sure your subscribers have a value set for this custom field. You can collect it through a subscription form, the WordPress profile page, or by importing a CSV with the birthday column mapped to your custom field.
Step 2 – Create the automation
Go to MailPoet → Automations and click + New automation. The fastest way to get started is to pick the ready-made template:
- Click Start with a template.
- Open the Celebrations tab.
- Select the Birthday email template.

The template comes with the Birthday trigger and a pre-configured “Happy birthday!” email. You can also start from a blank automation and add the Birthday trigger manually – see the full list in the Automation Triggers article.
Step 3 – Configure the trigger
Click the Birthday step in the editor. The right-hand sidebar lets you fine-tune when the email goes out:
- Date field – pick the date custom field you created in Step 1. Only year/month/day custom fields appear in the dropdown.
- Timing – send the email before, on, or after the birthday, with a configurable number of days offset (for example, “3 days before” for an early-bird coupon).
- Send time – the hour of the day the automation fires (0–23), in your site’s timezone. Defaults to midnight.

Step 4 – Personalize the email
You can include the subscriber’s name and birthday in the email body using shortcodes. To print the formatted birthday (for example “April 20” instead of the raw 2010-04-20 00:00:00), use the new format parameter on the date custom-field shortcode:
[subscriber:cf_123 | format:F j]
Replace 123 with the ID of your birthday custom field. The format value accepts any PHP date format string and is automatically translated into the site language.

If you prefer a ready-made design, the legacy newsletter editor ships with a Birthday Celebration template (Emails → Add New → Newsletter) that already includes a celebration banner, a coral CTA button, and a [subscriber:firstname] greeting.
Targeting only subscribers with a birthday set
Subscribers without a birthday value simply won’t enter the automation. If you want to clean up your list and contact subscribers whose birthday is missing, create a dynamic segment:
- Go to MailPoet → Lists → Segments and click + New segment.
- Choose MailPoet Custom Field.
- Pick your birthday date field, then select is blank (or is not blank).
The is blank and is not blank operators now correctly match both empty values and never-set values for date and checkbox custom fields.
Notes & FAQ
- February 29 – in non-leap years, subscribers born on February 29 receive their email on February 28.
- One email per subscriber per year – the trigger uses the target date as part of its deduplication key, so the same subscriber will not be entered twice for the same birthday, even if you reactivate the automation.
- Timezone – the Send time is interpreted in the WordPress site timezone (Settings → General).
- Deactivating the automation stops future runs immediately. Subscribers already in flight finish the steps they are scheduled for.
- Multiple birthday automations – you can run several Birthday automations in parallel (for example, one with a coupon for VIPs and a generic one for everyone else), each with its own date field, timing, and send time.
You must be logged in to post a comment.