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

How to Tag Inactive Customers for Win-back Campaigns with Pipedream

Automatically tag customers in Mailchimp who 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

E-commerce stores with 1000+ customers who want to automatically identify inactive buyers for targeted win-back campaigns

Not ideal for

Stores with under 100 customers or those needing real-time tagging after individual orders

Sync type

scheduled

Use case type

enrichment

Real-World Example

💡

A WooCommerce jewelry store with 5,000 customers runs this daily to tag anyone who hasn't bought in 90 days. Before automation, they manually exported order data weekly and cross-referenced it with Mailchimp, missing 30-40% of inactive customers. Now they catch every dormant buyer within 24 hours.

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 Pipedream

Copy the pre-built Pipedream blueprint and paste it straight into Pipedream. 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 your WooCommerce customers
Active Pipedream account with sufficient credits for daily workflow execution
WooCommerce API permissions set to read orders and customer data
Mailchimp automation or campaign ready to trigger on your win-back tag

Field Mapping

Map these fields between your apps.

FieldAPI Name
Required
Customer Emailemail_address
Win-back Tagtags
Last Purchase Date
Subscription Statusstatus
3 optional fields▸ show
Customer Namemerge_fields.FNAME
Total Spentmerge_fields.TOTAL_SPENT
Last Product Categorymerge_fields.LAST_CATEGORY

Step-by-Step Setup

1

Pipedream > Workflows > New

Create new workflow in Pipedream

Go to pipedream.com and click 'New Workflow' in the top right. You'll land on the workflow builder with an empty canvas. Click the first box labeled 'Select a trigger' to open the app selector. This workflow will run on a schedule, not triggered by events.

  1. 1Click 'New Workflow' in the dashboard
  2. 2Click 'Select a trigger' in the workflow canvas
  3. 3Choose 'Schedule' from the trigger options
  4. 4Set frequency to 'Daily' at your preferred time
What you should see: You should see a schedule trigger configured with a daily frequency displayed in the first step.
Common mistake — Don't set this to run more than once daily - you'll hit WooCommerce API limits and create duplicate tags.
2

Workflow > Add Step > WooCommerce > List Orders

Add WooCommerce step to fetch orders

Click the + button below your schedule trigger to add a new step. Search for WooCommerce in the app list and select it. Choose the 'List Orders' action. You'll need to connect your WooCommerce store by entering your site URL and generating API credentials.

  1. 1Click the + button to add a new step
  2. 2Search for and select 'WooCommerce'
  3. 3Choose 'List Orders' from the actions list
  4. 4Click 'Connect Account' and enter your store details
What you should see: You should see WooCommerce connected with a green checkmark and the List Orders action configured.
Common mistake — Make sure your WooCommerce API has read permissions enabled - the default consumer key/secret won't work without proper scopes.
3

WooCommerce Step > Configuration

Configure order date filtering

In the WooCommerce step, set the 'after' parameter to filter orders. You need to calculate 90 days ago from today. Set per_page to 100 to handle larger batches efficiently. The status should be set to 'completed' to only count actual purchases, not pending orders.

  1. 1Set 'Status' to 'completed'
  2. 2Set 'Per Page' to 100
  3. 3Leave 'After' blank for now - we'll calculate this in code
  4. 4Set 'Order' to 'date' and 'Order By' to 'desc'
What you should see: The WooCommerce step should show parameters configured with completed status and 100 per page limit.
Common mistake — Filters are the most common place setups break. Double-check the field name and value exactly match what your app sends — a single capital letter difference will block everything.
Mailchimp
MA
trigger
filter
Condition
matches criteria?
yes — passes through
no — skipped
WooCommerce
WO
notified
4

Workflow > Add Step > Code > Run Node.js Code

Add code step to process order data

Click + to add another step and choose 'Run Node.js Code'. This step will filter orders older than 90 days and extract unique customer email addresses. You'll write JavaScript that loops through the WooCommerce response and builds a list of inactive customers.

  1. 1Click + to add a new step
  2. 2Select 'Run Node.js Code' from the options
  3. 3Clear the default code in the editor
  4. 4Paste the customer filtering logic
What you should see: You should see a code editor with your JavaScript logic and the step should execute without errors.
Common mistake — The code step will fail if WooCommerce returns no orders - add a check for empty results to prevent workflow errors.

Add this Node.js code to your processing step to calculate the 90-day cutoff and filter inactive customers while avoiding duplicates. Paste this in the 'Run Node.js Code' step after connecting WooCommerce.

JavaScript — Code Stepexport default defineComponent({
▸ Show code
export default defineComponent({
  async run({ steps, $ }) {
    const cutoffDate = new Date();

... expand to see full code

export default defineComponent({
  async run({ steps, $ }) {
    const cutoffDate = new Date();
    cutoffDate.setDate(cutoffDate.getDate() - 90);
    
    const orders = steps.woocommerce.$return_value || [];
    const customerEmails = new Set();
    const inactiveCustomers = [];
    
    // Get all customers who ordered in the last 90 days
    orders.forEach(order => {
      const orderDate = new Date(order.date_created);
      if (orderDate >= cutoffDate && order.status === 'completed') {
        customerEmails.add(order.billing.email.toLowerCase());
      }
    });
    
    // Now get ALL customers from older orders to find inactive ones
    const olderOrders = await $.send.http({
      method: 'GET',
      url: `${steps.woocommerce.$auth.url}/wp-json/wc/v3/orders`,
      params: {
        before: cutoffDate.toISOString(),
        status: 'completed',
        per_page: 100
      },
      auth: {
        username: steps.woocommerce.$auth.key,
        password: steps.woocommerce.$auth.secret
      }
    });
    
    // Find customers who ordered before but not recently
    olderOrders.data.forEach(order => {
      const email = order.billing.email.toLowerCase();
      if (!customerEmails.has(email)) {
        inactiveCustomers.push({
          email: email,
          last_order: order.date_created,
          total_spent: parseFloat(order.total),
          first_name: order.billing.first_name,
          last_name: order.billing.last_name
        });
      }
    });
    
    console.log(`Found ${inactiveCustomers.length} inactive customers`);
    return inactiveCustomers;
  }
});
5

Workflow > Add Step > Mailchimp > Update List Member

Add Mailchimp connection step

Add another step and search for Mailchimp. Select 'Update List Member' action since we'll be updating existing subscribers with tags. Click 'Connect Account' and authorize Pipedream to access your Mailchimp account. You'll need to select your audience/list from the dropdown.

  1. 1Click + to add a new step
  2. 2Search for and select 'Mailchimp'
  3. 3Choose 'Update List Member' from actions
  4. 4Connect your Mailchimp account
  5. 5Select your main audience from the dropdown
What you should see: Mailchimp should show as connected with your audience selected in the configuration.
Common mistake — If customers aren't already in your Mailchimp list, this step will fail - use 'Add or Update List Member' instead.
6

Mailchimp Step > Field Mapping

Configure customer email mapping

In the Mailchimp step, map the email address from your code step output to the 'Email Address' field. Set the status to 'subscribed' to ensure the contact remains active. You'll reference the previous step's data using the step picker that appears when you click in input fields.

  1. 1Click in the 'Email Address' field
  2. 2Select the email from your code step output
  3. 3Set 'Status' to 'subscribed'
  4. 4Leave other fields as default for now
What you should see: The Email Address field should show a reference to your code step output with the customer email.
Mailchimp fields
email_address
status
merge_fields.FNAME
merge_fields.LNAME
tags[0].name
available as variables:
1.props.email_address
1.props.status
1.props.merge_fields.FNAME
1.props.merge_fields.LNAME
1.props.tags[0].name
7

Mailchimp Step > Tags Section

Add win-back tag configuration

Scroll down to the Tags section in the Mailchimp step. Click 'Add Tag' and enter 'win-back-90d' or your preferred tag name. This tag will trigger your re-engagement campaign sequence. Make sure the tag name matches exactly what you've set up in your Mailchimp automation rules.

  1. 1Scroll to the 'Tags' section
  2. 2Click 'Add Tag'
  3. 3Enter 'win-back-90d' as the tag name
  4. 4Confirm the tag will be added to the contact
What you should see: You should see 'win-back-90d' listed as a tag that will be applied to the contact.
Common mistake — Tag names are case-sensitive in Mailchimp - make sure this matches your automation trigger exactly.
8

Mailchimp Step > Settings > Loop Options

Add loop logic for multiple customers

Your code step likely identified multiple inactive customers, but the Mailchimp step only processes one. Click the settings icon on the Mailchimp step and enable 'Run this step for each item' option. This tells Pipedream to execute the Mailchimp action once per customer email in your array.

  1. 1Click the gear icon on the Mailchimp step
  2. 2Find the 'Loop' or 'Iterate' option
  3. 3Select your code step's customer array as the loop source
  4. 4Enable 'Run for each item'
What you should see: The Mailchimp step should show a loop indicator and reference your customer array as the iteration source.
Common mistake — Without loop logic, only the first customer in your array gets tagged - the rest are ignored silently.
9

Workflow > Test Button

Test the workflow

Click 'Test' in the top right to run your workflow manually. Watch each step execute and check the logs for any errors. The WooCommerce step should return order data, your code should filter to inactive customers, and Mailchimp should confirm successful tagging.

  1. 1Click 'Test' in the workflow header
  2. 2Watch each step execute in sequence
  3. 3Check the logs for any error messages
  4. 4Verify customers were tagged in Mailchimp
What you should see: All steps should show green checkmarks and you should see tagged customers in your Mailchimp audience.
Pipedream
▶ Deploy & test
executed
Mailchimp
WooCommerce
WooCommerce
🔔 notification
received
10

Workflow > Deploy Button

Deploy the workflow

Once testing succeeds, click 'Deploy' to activate the scheduled workflow. It will now run daily at your specified time. You can monitor executions in the workflow history and adjust the schedule or logic as needed based on your campaign performance.

  1. 1Click 'Deploy' in the workflow header
  2. 2Confirm the deployment in the modal
  3. 3Check the status shows as 'Active'
  4. 4Review the next scheduled run time
What you should see: The workflow should show 'Active' status with the next scheduled execution time displayed.
Common mistake — Deployed workflows consume credits even if they find no inactive customers - monitor usage to avoid unexpected charges.

Scaling Beyond 500+ inactive customers per day+ Records

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

1

Implement batch processing

Split large customer lists into chunks of 100 and process them sequentially to avoid API timeouts and rate limits.

2

Use pagination for WooCommerce queries

Add multiple WooCommerce steps with different page parameters instead of trying to fetch all orders in one request.

3

Cache recent customer data

Store recently processed customers in a Google Sheet or database to avoid re-checking the same customers daily.

4

Monitor API rate limits

Both WooCommerce (100 requests/minute) and Mailchimp (10 requests/second) have limits. Add delays between batch operations if needed.

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 Pipedream for this if you need custom logic around customer segmentation or want to combine data from multiple WooCommerce stores. The Node.js code steps let you calculate complex customer lifetime values and apply different inactive thresholds based on purchase history. Unlike other platforms, Pipedream handles async API calls well when you need to cross-reference recent vs. historical orders. Skip Pipedream if you just want basic 90-day tagging without custom logic - Zapier's simpler interface works better for straightforward use cases.

Cost

This costs about 2 credits per execution on Pipedream's free tier. At daily runs with 100 inactive customers found, that's 60 credits monthly or $6 on the paid plan. Make handles the same workflow for $9/month minimum, while Zapier burns through 600+ tasks monthly at $20. Pipedream wins on cost until you hit 1000+ customers daily, where Make's unlimited operations become cheaper.

Tradeoffs

Make handles date calculations better with built-in formatDate() functions, while Zapier's Filter step is cleaner for the 90-day cutoff logic. n8n gives you more control over API pagination and error handling with its visual IF nodes. Power Automate integrates better if you're already using Dynamics. But Pipedream's async/await syntax makes the WooCommerce API calls much faster - you can fetch recent and historical orders simultaneously instead of waiting for sequential requests.

You'll hit WooCommerce's 100 requests per minute limit if you have 1000+ customers and don't batch properly. Mailchimp's API occasionally returns 500 errors during peak hours, breaking your workflow until the next day. The biggest gotcha: WooCommerce guest checkouts often have inconsistent email formatting (mixed case, extra spaces) that won't match your Mailchimp subscribers exactly. Add email normalization to your code or you'll miss 15-20% of inactive customers.

Ideas for what to build next

  • Add customer segmentationSplit inactive customers by purchase history or total spent to send different win-back offers to high-value vs. low-value customers.
  • Create staged win-back sequenceTag customers at 60, 90, and 120 days inactive with different tags to trigger escalating offers and urgency in your campaigns.
  • Track campaign performanceAdd a reverse sync to remove win-back tags when customers make new purchases and measure conversion rates from your campaigns.

Related guides

Was this guide helpful?
Mailchimp + WooCommerce overviewPipedream profile →