Automatically Tag Mailchimp Contacts When QuickBooks Invoice Is Paid
When a QuickBooks invoice is marked as paid, this workflow instantly adds a tag to the matching contact in Mailchimp. Accountants save time and marketing stays perfectly in sync with billing status.
- 1
Poll QuickBooks for newly paid invoices
Add an
n8n-nodes-base.quickbooksnode set to theInvoiceresource andGet Alloperation. InFilters, setStatustoPaid. Enable thePolloption and set the schedule to every 15 minutes. Connect your QuickBooks OAuth2 credential in the node'sCredentialfield. This node returns all invoices whose status changed to Paid since the last poll. - 2
Extract the customer email from the invoice
Add an
n8n-nodes-base.setnode namedExtract Email. Create one field: setemailto the expression{{ $json.BillEmail.Address }}. This isolates the payer's email so the next node can look up the correct Mailchimp contact. - 3
Check whether the invoice is truly paid
Add an
n8n-nodes-base.ifnode namedIs Paid?. Set the condition:{{ $json.Balance }}(Number) equals0. Connect theTRUEbranch to the next step and leave theFALSEbranch unconnected. This guards against processing partial payments or open invoices that slipped through the filter. - 4
Find the subscriber in Mailchimp by email
Add an
n8n-nodes-base.mailchimpnode namedGet Mailchimp Member. SetResourcetoMember,OperationtoGet,List IDto your Mailchimp audience ID, andEmailto{{ $json.email }}. Connect your Mailchimp API credential. This retrieves the subscriber record so n8n can add a tag. - 5
Add the Invoice Paid tag in Mailchimp
Add a second
n8n-nodes-base.mailchimpnode namedTag Contact. SetResourcetoMember Tag,OperationtoAdd,List IDto your Mailchimp audience ID,Emailto{{ $('Extract Email').item.json.email }}, andTagstoInvoice Paid. This applies the tag immediately, making the contact available for any Mailchimp automation triggered by that tag.
Frequently asked questions
What if the customer's email in QuickBooks does not exist in Mailchimp?
The 'Get Mailchimp Member' node will return an error for unknown emails. You can handle this by enabling the node's 'Continue on Fail' toggle so the workflow skips missing contacts gracefully without stopping entirely.
How often does the workflow check for new paid invoices?
By default the QuickBooks poll node is set to every 15 minutes. You can change the schedule in the node's trigger interval setting to match your business needs, such as every 5 minutes or once per hour.
Can I add more than one tag, for example including the invoice amount tier?
Yes. In the 'Tag Contact' node you can add multiple values to the `Tags` field separated by commas, or you can use an expression like `{{ 'Invoice Paid, ' + ($json.TotalAmt > 1000 ? 'High Value' : 'Standard') }}` to dynamically build the tag list based on invoice data.