Mailchimp Birthday and Anniversary Campaign
Each morning the flow finds contacts whose birthday or customer anniversary is today (from Dataverse), sets the personalization merge fields, and triggers a celebratory Mailchimp email (optionally with an offer), logging the send. A simple, high-impact loyalty touch automated from CRM dates.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This flow runs every morning, finds Microsoft Dataverse loyalty contacts whose birthday or customer anniversary is today, writes Mailchimp personalization merge fields onto each member (which triggers a celebratory Mailchimp journey email, optionally with an offer code), logs every send to a Dataverse audit table, and emails the marketing team a daily summary.
Why it matters: Timely, personal birthday/anniversary touches build loyalty and consistently outperform generic sends. Driving them automatically from CRM date fields makes the gesture effortless, reliable, and fully audited.
Build status: Built via the FlowLibs API-first method. Ships Off (Stopped). Flow Checker: 0 errors (only the intentional "this flow is off" warning). All three connections bound and valid.
Use Case
Marketing and Customer Success want automatic birthday and anniversary emails sourced from CRM date fields, with personalization (first name, offer code) and an auditable record of every send, without anyone manually building a daily list.
Flow Architecture
Daily Recurrence
Recurrence (Day/1, 08:00)Runs once each morning.
Initialize Today Month-Day
Initialize Variable (String)Today as MM-dd for date matching: formatDateTime(utcNow(),'MM-dd').
Initialize Mailchimp List Id
Initialize Variable (String)Mailchimp audience id from env var.
Initialize Notify Recipient
Initialize Variable (String)Summary-email recipient from env var.
Initialize Offer Code
Initialize Variable (String)Offer/promo code merged into the email, from env var.
Initialize Correlation Id
Initialize Variable (String)guid() stamped on every log row for tracing.
Initialize Celebration Count
Initialize Variable (Integer)Running count for the summary.
Initialize Summary Rows
Initialize Variable (String)Accumulates HTML rows for the summary email.
List Loyalty Contacts
Microsoft Dataverse — ListRecordsReads contacts where birthday OR anniversary month-day = today.
Apply to each Contact
ForeachProcesses each celebrating contact.
Determine Celebration Type
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_MailchimpAudienceListId | String | REPLACE_WITH_AUDIENCE_ID | Mailchimp audience (list) id whose members receive the celebration email. |
| flowlibs_CelebrationNotifyRecipient | String | marketing@yourcompany.com | Recipient of the daily summary email. |
| flowlibs_CelebrationOfferCode | String | CELEBRATE15 | Promo/offer code merged into the celebratory email (blank to omit). |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Mailchimp | shared_mailchimp | updatemember_v2 |
| Microsoft Dataverse | shared_commondataserviceforapps | ListRecords CreateRecord |
| Office 365 Outlook | shared_office365 | SendEmailV2 |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Offer logic
- Set the offer code per audience, or branch the offer by celebration type (a bigger reward for anniversaries).
- Mailchimp journey
- Build a Customer Journey in Mailchimp that starts when the CTYPE / merge fields change. This flow sets the data; the journey sends the actual creative.
- Owner touch
- On key accounts, add a branch that emails the account owner to send a personal note before the automated send.
- Timezone
- Change the Recurrence startTime (or add per-region runs) to land in the contact's local morning.
- Consent
- Extend the ListRecords $filter with a consent/contactability flag so only opted-in contacts are processed.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Today as MM-dd
Computes today's month-day for date matching.
EXPR.02ListRecords $filter (birthday OR anniversary today)
OData filter matching either celebration date today.
EXPR.03Celebration type
Labels the matched celebration.
EXPR.04Merge fields object
Builds the Mailchimp merge-field object.
Customize & download
Generate a ready-to-import copy of this solution with your environment-variable values baked in — available on Base, Pro, or Team.
Upgrade to customize
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.