Automate Squarespace Orders to Xero Invoices & Payments (Make.com)
Eliminate manual bookkeeping by automatically syncing Squarespace sales data to Xero via Make.com.
Tools: Squarespace → Xero
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.