Intermediate~15 min setupMarketing & E-commerceVerified April 2026
Mailchimp logo
WooCommerce logo

How to run win-back campaigns with Power Automate

Automatically tag customers in Mailchimp when they haven't purchased from WooCommerce in 90 days to trigger re-engagement campaigns.

Steps and UI details are based on platform versions at time of writing — check each platform for the latest interface.

Best for

WooCommerce stores with 1,000+ customers who want automated win-back email campaigns without manual list management

Not ideal for

Stores with under 500 customers where manual segmentation takes less than 30 minutes monthly

Sync type

scheduled

Use case type

notification

Real-World Example

💡

A 25-person online retail company processes 200 orders monthly but struggles with customer retention. Their marketing manager spent 3 hours weekly identifying inactive customers and manually tagging them in Mailchimp. This automation runs daily, tags 15-30 customers automatically, and increased their win-back campaign open rates from 12% to 28%.

What Will This Cost?

Drag the slider to your expected monthly volume.

/mo
505005K50K

Each platform counts differently — Zapier: 1 task per trigger. Make: 1 operation per module per record. n8n: 1 execution per run.

Prices shown for annual billing. Based on published pricing as of April 2026.

Estimated ROI

1000

min saved/mo

$583

labor value/mo

Free

no platform cost

Based on ~2 min manual effort per operation at $35/hr fully loaded labor cost.

Implementation

Skip the setup

Import this workflow directly into Power Automate

Copy the pre-built Power Automate blueprint and paste it straight into Power Automate. All modules, filters, and field mappings are already configured — you just need to connect your accounts.

Before You Start

Make sure you have everything ready.

WooCommerce store with REST API enabled and consumer key/secret generated
Mailchimp account with at least one audience containing customer email addresses
Microsoft Power Automate license (included with most Office 365 plans)
Admin access to both WooCommerce and Mailchimp accounts for API authentication

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Customer Emailemail_address
Order Datedate_created
Order Statusstatus
Win-back Tagtags
4 optional fields▸ show
Customer IDcustomer_id
First NameFNAME
Last NameLNAME
Total Spenttotal

Step-by-Step Setup

1

My flows > New flow > Scheduled cloud flow

Create new scheduled cloud flow

Navigate to make.powerautomate.com and sign in with your Microsoft account. Click 'My flows' in the left sidebar, then 'New flow' at the top. Select 'Scheduled cloud flow' from the dropdown menu. Name your flow 'WooCommerce Win-back Tagger' and set it to run daily at 8 AM.

  1. 1Click 'My flows' in the left navigation
  2. 2Click the 'New flow' button at the top
  3. 3Select 'Scheduled cloud flow' from the options
  4. 4Enter 'WooCommerce Win-back Tagger' as the flow name
  5. 5Set repeat interval to 'Daily' at 8:00 AM
What you should see: You'll see the flow designer with a 'Recurrence' trigger configured to run daily at 8 AM.
Common mistake — Confirm your workflow timezone matches your business timezone — n8n uses the instance timezone by default. Also verify the workflow is saved and set to Active, since Schedule Triggers won't fire on inactive workflows.
2

Flow designer > New step > HTTP

Add WooCommerce connection

Click 'New step' below the recurrence trigger. Search for 'HTTP' in the connector search box and select 'HTTP'. Choose the 'HTTP - HTTP' action since WooCommerce uses REST API calls. You'll configure the actual API call in the next step.

  1. 1Click the 'New step' button below the trigger
  2. 2Type 'HTTP' in the search box
  3. 3Select 'HTTP' from the connector list
  4. 4Choose 'HTTP - HTTP' action
What you should see: An HTTP action box appears with fields for Method, URI, Headers, and Body.
Common mistake — Power Automate doesn't have a native WooCommerce connector, so we use HTTP requests to access the WooCommerce REST API.
3

HTTP action configuration

Configure WooCommerce API call

Set Method to 'GET' and URI to your WooCommerce orders endpoint. The URL format is 'https://yourstore.com/wp-json/wc/v3/orders'. In Headers, add 'Authorization' with value 'Basic [base64-encoded-credentials]'. Add another header 'Content-Type' with value 'application/json'. In the URI parameters, add 'per_page=100' to fetch more orders per call.

  1. 1Select 'GET' from the Method dropdown
  2. 2Enter your WooCommerce REST API URL in URI field
  3. 3Click 'Add new parameter' and select 'Headers'
  4. 4Add Authorization header with your API credentials
  5. 5Add Content-Type header set to 'application/json'
What you should see: The HTTP action shows GET method, your store URL, and two headers configured.
Common mistake — Generate WooCommerce API keys from WooCommerce > Settings > Advanced > REST API before configuring this step.
4

New step > Data Operations > Parse JSON

Parse WooCommerce response

Add a new step and search for 'Parse JSON'. Select 'Data Operations - Parse JSON' action. Click in the Content field and select 'body' from the dynamic content (HTTP response). You'll need to generate the schema by running a test call first, or manually create it based on WooCommerce order structure.

  1. 1Click 'New step' below the HTTP action
  2. 2Search for and select 'Parse JSON'
  3. 3Click in Content field and select 'body' from dynamic content
  4. 4Click 'Generate from sample' or paste WooCommerce order JSON schema
What you should see: Parse JSON action shows the HTTP body as input and a schema definition box.
Common mistake — Test your WooCommerce API call manually first to get sample JSON for schema generation.
5

New step > Control > Apply to each

Filter customers by last purchase date

Add a new step and select 'Control - Apply to each'. Set the input to the parsed JSON array from WooCommerce orders. Inside the loop, add a 'Control - Condition' action. Configure it to check if the order date is older than 90 days using the expression 'sub(utcnow(),90)' compared to the order date field.

  1. 1Add 'Apply to each' action
  2. 2Select the orders array from Parse JSON output
  3. 3Inside the loop, add a 'Condition' control
  4. 4Set left side to order date from current item
  5. 5Set condition to 'is less than'
  6. 6Set right side to expression: sub(utcnow(),90)
What you should see: An Apply to each loop containing a condition that compares order dates to 90 days ago.
Common mistake — WooCommerce date formats vary by version - you may need formatDateTime() function to parse dates correctly.
Mailchimp
MA
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
WooCommerce
WO
notified
6

Condition > Yes branch > New step > Mailchimp

Connect to Mailchimp

In the 'Yes' branch of your condition, add a new action and search for 'Mailchimp'. Select the Mailchimp connector and choose 'Add or update member' action. Click 'Sign in' when prompted and authenticate with your Mailchimp account. Grant Power Automate permission to access your Mailchimp lists and audience data.

  1. 1Click 'Add an action' in the Yes branch
  2. 2Search for 'Mailchimp' and select the connector
  3. 3Choose 'Add or update member' action
  4. 4Click 'Sign in' and authenticate with Mailchimp
  5. 5Grant requested permissions
What you should see: Mailchimp action appears with List, Email, and Status fields ready to configure.
7

Mailchimp action configuration

Configure Mailchimp member update

Select your target audience from the List dropdown. Map the customer email from WooCommerce order data to the Email field. Set Status to 'subscribed' to ensure the contact remains active. In the Tags field, click 'Add new parameter' and add 'win-back' as a tag value. This tag will trigger your email campaign in Mailchimp.

  1. 1Select your Mailchimp audience from List dropdown
  2. 2Map customer email from WooCommerce data to Email field
  3. 3Set Status to 'subscribed'
  4. 4Click 'Show advanced options'
  5. 5Add 'win-back' to the Tags field
What you should see: Mailchimp action configured with audience, email mapping, and win-back tag specified.
Common mistake — If the customer email doesn't exist in Mailchimp, this action will create a new subscriber rather than just adding the tag.
8

HTTP action > Settings > Configure run after

Add error handling

Click the three dots on your HTTP action and select 'Settings'. Enable 'Configure run after' and check both 'is successful' and 'has failed' boxes. Add a parallel branch for failure handling with a 'Compose' action to log errors. This prevents the entire flow from stopping when individual API calls fail.

  1. 1Click three dots menu on HTTP action
  2. 2Select 'Settings' then 'Configure run after'
  3. 3Check 'is successful' and 'has failed' boxes
  4. 4Add a parallel branch after HTTP action
  5. 5Add 'Compose' action in failure branch to log errors
What you should see: Your flow shows error handling paths and won't stop completely if one customer update fails.
Common mistake — Without error handling, a single failed API call will stop the entire batch from processing.
9

Flow designer > Save > Test

Test and activate flow

Click 'Save' at the top right of the flow designer. Then click 'Test' and select 'I'll perform the trigger action'. Since this is a scheduled flow, click 'Run flow' to test immediately. Monitor the run history to verify customers are being tagged correctly in Mailchimp. Check your Mailchimp audience for new win-back tags.

  1. 1Click 'Save' button at top right
  2. 2Click 'Test' next to the Save button
  3. 3Select 'I'll perform the trigger action'
  4. 4Click 'Run flow' to test immediately
  5. 5Monitor the run in the flow history
What you should see: Flow runs successfully and you can see win-back tags applied to inactive customers in your Mailchimp audience.

Use this expression in your condition to handle different WooCommerce date formats and ensure accurate 90-day calculations regardless of timezone.

JavaScript — Code Step// In your condition, use this expression for reliable date comparison
▸ Show code
// In your condition, use this expression for reliable date comparison
formatDateTime(
  addDays(utcnow(), -90),

... expand to see full code

// In your condition, use this expression for reliable date comparison
formatDateTime(
  addDays(utcnow(), -90),
  'yyyy-MM-ddTHH:mm:ss'
)

// For parsing WooCommerce dates that might include timezone info
formatDateTime(
  items('Apply_to_each')?['date_created'],
  'yyyy-MM-dd'
)

// Check if customer already has win-back tag to prevent duplicates
if(
  contains(body('Get_member_info')?['tags'], 'win-back'),
  false,
  true
)
Power Automate
▶ Test flow
executed
Mailchimp
WooCommerce
WooCommerce
🔔 notification
received

Scaling Beyond 1000+ customers per day+ Records

If your volume exceeds 1000+ customers per day records, apply these adjustments.

1

Batch processing with delays

Process customers in groups of 50 with 30-second delays between batches. This prevents API rate limiting on both WooCommerce and Mailchimp sides.

2

Implement checkpoint logic

Store the last processed order ID in a SharePoint list or variable. Resume from that point if the flow fails, preventing duplicate processing.

3

Split by customer segments

Create separate flows for different customer tiers or regions. This allows parallel processing and reduces individual flow execution time.

4

Use premium connectors

Upgrade to Power Automate per-flow licensing for higher API limits and faster execution times when processing large customer databases.

Going live

Production Checklist

Before you turn this on for real, confirm each item.

Troubleshooting

Common errors and how to fix them.

Frequently Asked Questions

Common questions about this workflow.

Analysis

VerdictWhy n8n for this workflow

Use Power Automate for this if your business already uses Microsoft 365 and you need reliable scheduled processing. The native Mailchimp connector simplifies authentication and the scheduled trigger runs consistently without manual intervention. Power Automate handles JSON parsing and date calculations well through built-in expressions. Skip this platform if you need real-time processing or complex data transformations - Zapier's filters work better for immediate tagging when orders complete.

Cost

This costs roughly $15/month on a Power Automate per-user plan. At 2,000 customers checked daily, you'll use about 60,000 actions monthly (customer lookup + Mailchimp update). The Mailchimp API calls don't count toward Power Automate limits but watch your Mailchimp plan - 1,000 tags daily can push you into higher pricing tiers quickly.

Tradeoffs

Zapier handles WooCommerce webhooks better and triggers instantly when purchase patterns change. Make offers more flexible date arithmetic and better error handling for failed API calls. n8n processes larger batches faster with its bulk operations. Pipedream gives you custom retry logic when Mailchimp rate limits kick in. Power Automate wins on enterprise integration - it connects seamlessly with SharePoint for customer data storage and Teams for failure notifications.

You'll hit Mailchimp's API rate limits at 10 requests per second if you process customers too quickly. WooCommerce pagination breaks when you fetch more than 100 orders at once. Power Automate's 90-day date calculations get messy with timezone differences - customers in different regions get tagged inconsistently. The biggest gotcha: Mailchimp creates new subscribers instead of just adding tags if the email doesn't exist, inflating your contact count unexpectedly.

Ideas for what to build next

  • Create segmented win-back campaignsUse the win-back tags to trigger different email sequences based on customer lifetime value or product categories purchased.
  • Add purchase behavior trackingExtend the flow to remove win-back tags automatically when customers make new purchases, preventing irrelevant emails.
  • Implement multi-tier win-back timingCreate separate tags for 60-day, 90-day, and 120-day inactive customers to run increasingly aggressive campaigns.

Related guides

Was this guide helpful?
Mailchimp + WooCommerce overviewPower Automate profile →