ml-connector
Wave AccountingMailchimp

Wave Accounting and Mailchimp integration

Wave Accounting powers small business invoicing and accounting; Mailchimp powers email marketing. Connecting them brings your customer list from Wave into Mailchimp so you can market to the customers you invoice. New customers in Wave appear in Mailchimp audience segments, and you can track which customers have paid their invoices. The integration keeps your marketing list aligned with your accounting data without manual uploads or re-keying.

How Wave Accounting works

Wave Accounting exposes businesses, customers, invoices, products, accounts, transactions, and vendors through a GraphQL API at https://gql.waveapps.com/graphql/public. Access requires OAuth 2.0 Authorization Code Flow with 2-hour access tokens and refresh tokens. Wave sends webhooks for invoice lifecycle events (created, updated, paid), payment events, customer changes, and transaction events; return HTTP 200 to acknowledge receipt. The connected business must hold an active Wave Pro subscription.

How Mailchimp works

Mailchimp provides a REST API for managing email audiences and e-commerce data. It authenticates via HTTP Basic Auth with an API key or OAuth 2.0 Authorization Code flow. API calls route to a data center endpoint derived from the API key (e.g., https://us6.api.mailchimp.com/3.0/). Mailchimp supports webhooks for audience events (subscribe, unsubscribe, profile changes) and transactional API events, with HMAC-SHA1 signature verification for transactional webhooks and URL-based secret verification for marketing webhooks.

What moves between them

Wave customer and invoice records flow into Mailchimp. When a new customer is created or updated in Wave, ml-connector syncs them to a Mailchimp audience as a list member. When an invoice is paid, created, or updated in Wave, that event can trigger audience segmentation or tagging in Mailchimp so you can market selectively to paying customers. The flow is one-way from Wave into Mailchimp; Mailchimp audience events (subscribe, unsubscribe) can trigger webhooks back to Wave for logging but do not update Wave accounting records.

How ml-connector handles it

ml-connector stores Wave OAuth credentials and refreshes the access token every 2 hours before expiry. On the Wave side it listens for customer.created, customer.updated, invoice.created, and invoice.paid webhooks, validates signatures using HMAC-SHA256 against the wave-signature header, and extracts customer name, email, and invoice payment status. On the Mailchimp side it looks up or creates list members by email address, maps Wave customer data into Mailchimp merge fields, and can create or update tags based on invoice status (unpaid, paid, overdue). ml-connector extracts the data center prefix from the Mailchimp API key and routes all calls to the correct regional endpoint. Webhook retries use exponential backoff, and every record is logged for audit and replay if a Mailchimp call fails.

A real-world example

A small services business uses Wave Accounting for invoicing and expense tracking, and Mailchimp for monthly newsletters and customer promotions. Before the integration, the owner manually exported the customer list from Wave each month and uploaded it to Mailchimp, often missing recent sign-ups and unable to segment marketing by payment status. With the integration, every new customer in Wave automatically syncs to Mailchimp within minutes of invoice creation, and the owner can create segments for paid customers to send different offers than unpaid customers. The manual monthly export is gone, and the mailing list is always fresh.

What you can do

  • Automatically sync Wave customers into Mailchimp audiences as list members, with email and name from Wave.
  • Tag Mailchimp subscribers based on Wave invoice status so you can market differently to paid and unpaid customers.
  • Receive Wave invoice webhooks and trigger audience updates in Mailchimp within minutes.
  • Handle Wave OAuth token refresh and Mailchimp API key data center routing without manual intervention.
  • Audit every sync event with full webhook payloads and replay capability if a Mailchimp write fails.

Questions

Does ml-connector sync all Wave invoices or only certain types?
ml-connector syncs all invoices created or updated in Wave via webhooks. You can configure filtering by customer, amount, or date range in your flow rules. Invoice status (unpaid, paid, overdue) is tracked and can be used to create or update tags in Mailchimp.
What happens if a Wave customer email already exists in Mailchimp?
ml-connector looks up the list member by email address and updates the existing member with Wave customer data. If no member exists, ml-connector creates one. This prevents duplicate contacts and keeps customer information current across both systems.
Can we segment our Mailchimp audience by Wave invoice payment status?
Yes. ml-connector tracks invoice status in Wave and can apply tags or merge field updates in Mailchimp (e.g., 'paid_customer', 'unpaid_invoice'). You then use Mailchimp's segmentation feature to send different campaigns to paid vs unpaid customers.

Related integrations

Connect Wave Accounting and Mailchimp

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started