

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
scheduledUse case type
enrichmentReal-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.
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
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.
Field Mapping
Map these fields between your apps.
| Field | API Name | |
|---|---|---|
| Required | ||
| Customer Email | email_address | |
| Win-back Tag | tags | |
| Last Purchase Date | ||
| Subscription Status | status | |
3 optional fields▸ show
| Customer Name | merge_fields.FNAME |
| Total Spent | merge_fields.TOTAL_SPENT |
| Last Product Category | merge_fields.LAST_CATEGORY |
Step-by-Step Setup
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.
- 1Click 'New Workflow' in the dashboard
- 2Click 'Select a trigger' in the workflow canvas
- 3Choose 'Schedule' from the trigger options
- 4Set frequency to 'Daily' at your preferred time
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.
- 1Click the + button to add a new step
- 2Search for and select 'WooCommerce'
- 3Choose 'List Orders' from the actions list
- 4Click 'Connect Account' and enter your store details
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.
- 1Set 'Status' to 'completed'
- 2Set 'Per Page' to 100
- 3Leave 'After' blank for now - we'll calculate this in code
- 4Set 'Order' to 'date' and 'Order By' to 'desc'
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.
- 1Click + to add a new step
- 2Select 'Run Node.js Code' from the options
- 3Clear the default code in the editor
- 4Paste the customer filtering logic
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;
}
});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.
- 1Click + to add a new step
- 2Search for and select 'Mailchimp'
- 3Choose 'Update List Member' from actions
- 4Connect your Mailchimp account
- 5Select your main audience from the dropdown
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.
- 1Click in the 'Email Address' field
- 2Select the email from your code step output
- 3Set 'Status' to 'subscribed'
- 4Leave other fields as default for now
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.
- 1Scroll to the 'Tags' section
- 2Click 'Add Tag'
- 3Enter 'win-back-90d' as the tag name
- 4Confirm the tag will be added to the contact
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.
- 1Click the gear icon on the Mailchimp step
- 2Find the 'Loop' or 'Iterate' option
- 3Select your code step's customer array as the loop source
- 4Enable 'Run for each item'
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.
- 1Click 'Test' in the workflow header
- 2Watch each step execute in sequence
- 3Check the logs for any error messages
- 4Verify customers were tagged in Mailchimp
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.
- 1Click 'Deploy' in the workflow header
- 2Confirm the deployment in the modal
- 3Check the status shows as 'Active'
- 4Review the next scheduled run time
Scaling Beyond 500+ inactive customers per day+ Records
If your volume exceeds 500+ inactive customers per day records, apply these adjustments.
Implement batch processing
Split large customer lists into chunks of 100 and process them sequentially to avoid API timeouts and rate limits.
Use pagination for WooCommerce queries
Add multiple WooCommerce steps with different page parameters instead of trying to fetch all orders in one request.
Cache recent customer data
Store recently processed customers in a Google Sheet or database to avoid re-checking the same customers daily.
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
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.
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.
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 segmentation — Split 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 sequence — Tag customers at 60, 90, and 120 days inactive with different tags to trigger escalating offers and urgency in your campaigns.
- →Track campaign performance — Add a reverse sync to remove win-back tags when customers make new purchases and measure conversion rates from your campaigns.
Related guides
How to Share Notion Meeting Notes to Slack with Pipedream
~15 min setup
How to Share Notion Meeting Notes to Slack with Power Automate
~15 min setup
How to Share Notion Meeting Notes to Slack with n8n
~20 min setup
How to Send Notion Meeting Notes to Slack with Zapier
~8 min setup
How to Share Notion Meeting Notes to Slack with Make
~12 min setup
How to Create Notion Tasks from Slack with Pipedream
~15 min setup