Mailchimp Re-Engagement and Sunset Workflow
On a schedule, the flow finds Mailchimp subscribers with no opens/clicks over a window, enrolls them in a re-engagement campaign, and sunsets (archives/unsubscribes) those who stay inactive after the attempt — updating the CRM. Protects deliverability and list health by re-engaging or retiring dormant contacts.
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 protects Mailchimp deliverability and list health by running a disciplined re-engage-then-sunset lifecycle against dormant subscribers. On a daily schedule it scans the audience, finds low-engagement subscribers, enrols the newly-dormant ones in a re-engagement campaign (by stamping a merge field that triggers a Mailchimp customer journey), and sunsets (unsubscribes/archives) those who were enrolled earlier and stayed inactive past a grace window. Every action is logged to Microsoft Dataverse for CRM visibility and a summary email is sent to marketing ops.
Why it matters: Dead weight on a list hurts sender reputation and inflates send costs. Automating the re-engage then wait then sunset cycle keeps the audience healthy without manual list curation.
Status: Built via the FlowLibs API-first pipeline. Ships Off - going live requires only authorising the three connections and setting the environment-variable values.
Use Case
Marketing/Operations wants automatic re-engagement of dormant subscribers and removal of those who don't respond, with the outcome reflected in the CRM. The flow implements a two-stage state machine using a Mailchimp merge field as the per-member state marker: Stage 1 (Enrol) stamps the re-engagement merge field with today's date for a dormant subscriber not yet in the programme; Stage 2 (Sunset) sets the sunset status for a subscriber enrolled more than N days ago who is still dormant.
Flow Architecture
Scheduled Dormancy Scan
Recurrence (Daily, 06:00 EST)Hygiene cadence.
Initialize Correlation Id
Initialize Variable (guid())Run-wide trace id stamped on every log row.
Initialize Audience Id
Initialize VariableMailchimp list id from flowlibs_AudienceId.
Initialize Rating Threshold
Initialize Variable (Integer)Dormancy member_rating cutoff.
Initialize Reengage Field
Initialize VariableMerge-field tag (e.g. REENGAGE).
Initialize Sunset Status
Initialize VariableStatus applied on sunset.
Initialize Sunset Wait Days
Initialize Variable (Integer)Grace period before sunset.
Initialize Report Recipient
Initialize VariableSummary email recipient.
Initialize Today
Initialize Variableyyyy-MM-dd enrolment stamp.
Initialize Sunset Cutoff
Initialize Variabletoday minus grace days (sunset boundary).
Get Audience Members
Mailchimp — GetListMembersPull all members (up to 1000) with stats + merge fields.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_AudienceId | String | REPLACE_WITH_AUDIENCE_ID | Target Mailchimp audience (list) id (reused across FlowLibs Mailchimp flows). |
| flowlibs_DormancyRatingThreshold | String | 2 | member_rating <= this = dormant. |
| flowlibs_ReengageMergeField | String | REENGAGE | Merge-field tag used to stamp/read the enrolment date. |
| flowlibs_SunsetWaitDays | String | 30 | Grace days after enrolment before sunset. |
| flowlibs_SunsetStatus | String | unsubscribed | Mailchimp status applied on sunset (unsubscribed/cleaned). |
| flowlibs_ReengagementReportRecipient | String | marketing-ops@yourcompany.com | Summary report recipient. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Mailchimp | shared_mailchimp | GetListMembers updatemember_v2 |
| Microsoft Dataverse | shared_commondataserviceforapps | 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.
- Cadence
- Change the Scheduled Dormancy Scan recurrence (e.g. weekly/monthly). Daily makes the grace-window arithmetic responsive.
- Dormancy definition
- Replace the member_rating <= threshold filter with stats/avg_open_rate and stats/avg_click_rate checks for activity-rate-based dormancy.
- Win-back offer
- Drive the re-engagement content from the Mailchimp journey that the REENGAGE merge field triggers; pass extra merge fields (e.g. OFFER) when stamping.
- Tiered sunset
- Branch on member value/tag to choose unsubscribed vs cleaned vs removemember_v2 (archive).
- CRM writeback
- Extend Log Sunset Action (or add a Dataverse UpdateRecord) to flip a contact's consent/contactability flag in your real CRM table.
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.01Sunset cutoff date
today minus grace days.
EXPR.02Dormant filter (where)
Subscribed and below the rating cutoff.
EXPR.03To-enrol filter (where)
Dormant members not yet enrolled.
EXPR.04To-sunset filter (where)
Enrolled past the cutoff and still dormant.
EXPR.05Enrolment stamp (merge_fields)
Stamps the enrolment date into the merge field.
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.