Automate Squarespace Orders to Xero Invoices & Payments (Make.com)

Eliminate manual bookkeeping by automatically syncing Squarespace sales data to Xero via Make.com.

Tools: SquarespaceXero

Platform: Make.com

Short Answer

A seamless, real-time workflow where every Squarespace order generates a matched contact, a detailed invoice with multiple line items, and an applied payment in Xero, ensuring your books are always up-to-date.

The Problem

Manual entry of Squarespace orders into Xero is time-consuming and prone to human error, specially when dealing with multiple line items, tax adjustments, and payment reconciliation. Without automation, real-time financial reporting is impossible.

The Outcome

A seamless, real-time workflow where every Squarespace order generates a matched contact, a detailed invoice with multiple line items, and an applied payment in Xero, ensuring your books are always up-to-date.

Step-by-Step Guide

1. **Create New Scenario**: Log into Make.com, click 'Create a new scenario', and name it 'Squarespace to Xero Financial Sync'. 2. **Configure Squarespace Trigger**: Add the **Squarespace** module and select the 'Watch Orders' trigger. Click 'Add' to create a Webhook. You must copy the URL and paste it into Squarespace under Settings > Advanced > Developer Tools > Webhooks. 3. **Search for Existing Xero Contact**: Add a **Xero** 'Search Contacts' module. Map the Squarespace `customerEmail` to the 'Email' filter. This prevents duplicate contacts. 4. **Add a Router**: Add a **Router** module. If the search returns a result, use the `ContactID`. If not, add a 'Create a Contact' module using the `fullName` and `email` from Squarespace. 5. **Handle Multiple Line Items**: Add an **Iterator** module. Map the `lineItems` array from the Squarespace trigger so Make.com can process each product in the order individually. 6. **Map Line Items to Array**: Use an **Array Aggregator** after the iterator. Set the 'Target Structure' to the Xero 'Line Items' format. Map `description`, `quantity`, and `unitPrice` from the Iterator. 7. **Create Xero Invoice**: Add the **Xero** 'Create an Invoice' module. Map the `ContactID` from step 4 and use the aggregated array from step 6 for the line items. Set the status to 'AUTHORISED' or 'DRAFT'. 8. **Apply Payment (Optional)**: If the order is paid, add a **Xero** 'Create a Payment' module. Map the newly created `InvoiceID`, the total amount, and the specific Xero 'Bank Account' ID where the funds are deposited (e.g., Stripe Clearing Account). 9. **Configure Error Handling**: Right-click the Xero modules and select 'Add error handler'. Use a 'Break' or 'Ignore' directive to ensure the scenario doesn't stop if a single order has a data validation issue.

Data Mapping

| Squarespace Field | Xero Field | Make.com Transformation/Syntax | Required | | :--- | :--- | :--- | :--- | | `customerEmail` | `EmailAddress` | `{{1.customerEmail}}` | Yes | | `lineItems[].productName` | `Description` | `{{5.productName}}` | Yes | | `lineItems[].unitPrice` | `UnitAmount` | `{{5.unitPrice / 100}}` (if in cents) | Yes | | `orderId` | `Reference` | `{{1.orderNumber}}` | Yes | | `shippingAddress` | `PostalAddress` | `{{join(flatten(1.shippingAddress); ", ")}}` | No | | `taxTotal` | `TaxAmount` | `{{1.taxTotal}}` | Yes |

Gotchas & Failure Modes

* **Operation Quotas**: Iterating through line items consumes more 'Operations' in Make.com. If you have high volume, ensure your plan accommodates the Iterator/Aggregator logic. * **Price Formats**: Squarespace may provide amounts in cents (e.g., 1000 for $10.00). Use the `formatNumber` or basic math functions `{{val/100}}` in Make.com to ensure Xero receives decimal values. * **Tax Discrepancies**: Xero calculates tax based on line items, while Squarespace may provide a single tax total. Use 'Tax Inclusive' or 'Tax Exclusive' settings in the Xero module carefully to avoid rounding errors. * **Connection Expiry**: Xero's OAuth connection in Make.com may occasionally need re-authorization. Set up a 'Scenario Monitoring' alert to notify you if the scenario runs into a 401 Unauthorised error.

Verification Checklist

- [ ] **Run Once**: Use the 'Run once' button in the Scenario builder. - [ ] **Webhook Verification**: Confirm the 'Watch Orders' module receives a green checkmark when a test order is placed in Squarespace. - [ ] **Contact Deduplication**: Verify that if the same email orders twice, no new contact is created in Xero. - [ ] **Line Item Precision**: Check the Xero Invoice to ensure products, quantities, and prices match the Squarespace checkout screen exactly. - [ ] **Payment Status**: Ensure the Xero Invoice status moves from 'Draft' to 'Authorised' and 'Paid' (if configured).

Ready to Automate?

Build this automation with Make.com in minutes.