Sync Squarespace Orders to QuickBooks Online Sales Receipts (Make.com)

Automate e-commerce accounting by mapping Squarespace Commerce triggers to QuickBooks ledger entries using Make.com's advanced logic.

Tools: SquarespaceQuickBooks

Platform: Make.com

Short Answer

A fully automated sync that triggers every time a new order is placed. The scenario performs a duplicate check, creates or updates the customer, and generates a Sales Receipt with correct line items and tax mapping automatically.

The Problem

Manual entry of Squarespace orders into QuickBooks is time-consuming and prone to human error, leading to mismatched tax records and inventory discrepancies. Businesses often struggle to reconcile Squarespace sales with specific Income Accounts in their Chart of Accounts.

The Outcome

A fully automated sync that triggers every time a new order is placed. The scenario performs a duplicate check, creates or updates the customer, and generates a Sales Receipt with correct line items and tax mapping automatically.

Step-by-Step Guide

1. **Initialize Squarespace Trigger**: Create a new Scenario. Add the **Squarespace** module and select the 'Watch Orders' trigger. Create a connection using your Squarespace API Key. 2. **Configure Webhook**: Set the 'Order Status' to 'Pending' or 'Fulfilled' depending on your revenue recognition policy. 3. **Search for Customer**: Add a **QuickBooks Online** 'Search Customers' module. Use the filter `PrimaryEmailAddr = {{1.customerEmail}}` to check if the user already exists. 4. **Add a Router**: Place a Router after the search module to handle 'New' vs 'Existing' customers. 5. **Customer Path A (New)**: Set a filter for the top path: `Total number of bundles EQUAL TO 0`. Add a 'Create a Customer' module mapping name and email from Squarespace. 6. **Customer Path B (Existing)**: Set a filter for the bottom path: `Total number of bundles GREATER THAN 0`. Use the 'Update a Customer' module to ensure billing addresses are current. 7. **Map Line Items**: Add the 'Create a Sales Receipt' module. Since Squarespace orders may contain multiple items, use the **Iterator** module if you have complex orders, or map the first line item using the `map()` function for simple sales. 8. **Select Income Account**: In the Sales Receipt module, manually select the 'Deposit To Account' (e.g., Undeposited Funds) and the 'Income Account' based on your Chart of Accounts. 9. **Handle Taxes**: Map the `taxTotal` from Squarespace to the QuickBooks `TaxCodeRef` field. Note: You may need a **Switch** function to map Squarespace tax names to QuickBooks internal IDs. 10. **Error Handling**: Right-click the QuickBooks module and select 'Add error handler'. Choose the **Break** directive to store the execution and retry later if the QuickBooks API is temporarily down.

Data Mapping

| Squarespace Field | QuickBooks Field | Make.com Transformation/Syntax | Requirement | | :--- | :--- | :--- | :--- | | `customerEmail` | `PrimaryEmailAddr` | `{{lower(1.customerEmail)}}` | Required | | `lineItems[].productName` | `Line: Description` | `{{1.lineItems[].productName}}` | Required | | `grandTotal` | `TotalAmt` | `{{1.grandTotal / 100}}` (if cents) | Required | | `billingAddress.address1` | `BillAddr: Line1` | `{{1.billingAddress.address1}}` | Optional | | `orderNumber` | `DocNumber` | `SQ-{{1.orderNumber}}` | Optional | | `createdOn` | `TxnDate` | `{{formatDate(1.createdOn; "YYYY-MM-DD")}}` | Required |

Gotchas & Failure Modes

- **Currency Multipliers**: Squarespace may pass values in cents (e.g., 1000 for $10.00). Use the `{{divide(value; 100)}}` math function in Make to avoid inflated revenue. - **Rate Limiting**: QuickBooks Online API has a limit of 100 requests per minute. Use the 'Number of Bundles' setting in your Squarespace module to throttle large historical syncs. - **Tax Mapping**: QuickBooks requires specific internal IDs for Tax Codes, not just strings like 'Sales Tax'. Use a **Lookup Table** (using the `switch` function) to map Squarespace tax names to QuickBooks IDs. - **Bundle Execution**: If an order has 5 items but you don't use an Iterator, only the first item will sync. Always use an **Iterator** --> **Aggregator** pattern for multi-item orders.

Verification Checklist

- [ ] Run the Squarespace module once using 'Choose manual' to select a past order for testing. - [ ] Check the 'Search Customers' output to ensure the filter logic identifies existing records. - [ ] Verify the Sales Receipt in QuickBooks contains the correct 'SQ-' prefix in the DocNumber. - [ ] Confirm the 'Income Account' selected in the module matches your CPA's preferred ledger. - [ ] Review the 'Execution History' in Make.com to ensure no operations failed due to data type mismatches (Strings vs. Numbers).

Ready to Automate?

Build this automation with Make.com in minutes.