Pull live order data from your Squarespace store into a WhatsApp chatbot. When a customer sends their order ID, your bot calls the Squarespace Commerce Orders API, fetches the current payment and fulfilment status, and replies without any manual effort.
Before following this guide, read the External API Request step foundation guide. It explains every field in the step interface so this guide can stay focused on Squarespace-specific values.
The Squarespace Commerce API is only available on Business and Commerce plans. If you do not see API Keys under Settings > Advanced, your plan does not include API access.
Squarespace uses a site-level API key for Commerce API access. You generate it from within your site's dashboard settings.
sq-api-xxxxxxxxxxxxxxxxxxxx.Squarespace displays the key exactly once. If you miss it, delete the key and generate a new one from the same screen.
Squarespace Commerce API authentication: developers.squarespace.com/commerce-apis/authentication-and-permissions
In your WA.Expert chatbot flow, collect the customer's Squarespace order ID and store it as {{order_id}}. Then add an External API Request step:
| Field | Value | Notes |
|---|---|---|
| Select Method | GET | Reading an existing order. |
| Request URL | https://api.squarespace.com/1.0/commerce/orders/{{{order_id}}} | Fixed Squarespace API base URL. Note: the version is 1.0, not v1 or v2. {{{order_id}}} is the variable from the previous chatbot step. |
| Select Auth Type | No Auth | The Bearer token goes in the Authorization header below. |
| Authorization | Bearer sq-api-xxx... | Include the word 'Bearer' followed by a space, then your API key. Required on every request. |
| User-Agent | WA.Expert WhatsApp Bot | Required by Squarespace. Any short descriptive string works. Omitting it causes a 400 error. |
| Select Body Type | None | GET requests carry no body. |
| Choose Response Type | JSON | Squarespace returns structured JSON. |
Squarespace requires a User-Agent header on every request. Most APIs do not. If you see a 400 Bad Request without a clear reason, check that User-Agent is present. Paste any short string describing your integration.
A successful Squarespace order response looks like this:
{
"id": "585d498fdee9f31a60284a37",
"orderNumber": "1023",
"fulfillmentStatus": "PENDING",
"paymentState": "PAID",
"createdOn": "2026-06-20T10:30:00.187Z",
"customerEmail": "priya@example.com",
"grandTotal": {
"currency": "INR",
"value": 1299.00
},
"billingAddress": {
"firstName": "Priya",
"lastName": "Sharma",
"city": "Mumbai"
},
"lineItems": [
{
"productName": "Classic Cotton Kurta",
"quantity": 2,
"unitPricePaid": {
"currency": "INR",
"value": 649.50
},
"variantOptions": [
{ "optionName": "Size", "value": "M" }
]
}
]
}Unlike Webflow (which uses paise), Squarespace grandTotal.value is already a standard decimal (1299.00 = Rs. 1,299.00). Display it directly in your WhatsApp reply.
Map these response paths to variables in the External API Request step:
| Variable name | Response path | Example value |
|---|---|---|
| order_number | orderNumber | 1023 |
| payment_status | paymentState | PAID |
| fulfilment_status | fulfillmentStatus | PENDING |
| order_total | grandTotal.value | 1299.00 |
| customer_name | billingAddress.firstName | Priya |
| customer_email | customerEmail | priya@example.com |
| item_name | lineItems[0].productName | Classic Cotton Kurta |
| item_qty | lineItems[0].quantity | 2 |
fulfillmentStatus: PENDING (not yet dispatched), FULFILLED, CANCELED. paymentState: PAID, AUTHORIZED, NOT_CHARGED, REFUNDED, PARTIALLY_PAID, FAILED.
If the customer messaged you first within the last 24 hours, your reply is a free service conversation. If initiating a proactive update, use an approved Utility template at Rs. 0.115 per message.
1. Bot: "Please send your Squarespace order ID.
You will find it in your confirmation email. It is a long
alphanumeric string like 585d498fdee9f31a60284a37."
2. Customer replies: 585d498fdee9f31a60284a37
3. Bot stores value as {{order_id}}
4. External API Request step fires:
GET https://api.squarespace.com/1.0/commerce/orders/585d498fdee9f31a60284a37
Authorization: Bearer sq-api-xxxxxxxxxxxxxxxxxxxx
User-Agent: WA.Expert WhatsApp Bot
5. Response mapped:
order_number = "1023"
payment_status = "PAID"
fulfilment_status = "PENDING"
order_total = "1299.00"
customer_name = "Priya"
item_name = "Classic Cotton Kurta"
6. Bot replies:
"Hi Priya, here is your order update:
Order #1023
Payment: Paid
Fulfilment: Preparing for dispatch
Item: Classic Cotton Kurta x2
Total: Rs. 1,299.00
You will receive a shipping notification
once your order is dispatched."| Symptom | Likely cause | Fix |
|---|---|---|
| 400 Bad Request with no clear reason | User-Agent header missing | Add User-Agent header with any short string. Squarespace requires this on every request. |
| 401 Unauthorized | Wrong key or missing Bearer prefix | Check the Authorization header reads exactly 'Bearer YOUR_KEY'. The key format should start with sq-api-. |
| 403 Forbidden | API key lacks Commerce permission | Delete the key, generate a new one with Commerce read permission enabled. |
| 404 Not Found | Order ID does not exist | Confirm the customer sent the correct hex order ID, not the order number (1023 vs 585d498f...). Add a fallback branch. |
| Plan error / no API Keys option | Personal plan does not include API access | Upgrade to Business or Commerce plan to access API Keys under Settings > Advanced. |
| 429 Too Many Requests | Rate limit hit | Squarespace does not publish exact rate limits. Add a short delay between bot retries and handle 429 gracefully. |
Free trial, no credit card required. And if you ever get stuck, we are the only platform in India that answers you live on WhatsApp.