No-code (Zapier, Make)
Connect any app without writing a server — send orders with an HTTP request step in Zapier or Make, and react to order updates safely.
Automation platforms can call the API with their generic HTTP step. That is enough to forward orders from almost any app (stores, forms, spreadsheets, CRMs).
Send an order
Zapier
- Trigger: your app's "new paid order" (or a form submission, a new spreadsheet row, …).
- Action: Webhooks by Zapier → Custom Request.
- Method:
POST - URL:
https://swaglists.com/api/v1/orders - Data pass-through: off
- Data: the JSON body below, with fields from the trigger mapped in.
- Headers:
Authorization→Bearer sk_live_…(store it in the step; anyone with access to the Zap can see it)Content-Type→application/jsonIdempotency-Key→ the trigger's order id (e.g.order-+ Order ID)
- Method:
- Test the step with a test key first (
sk_test_…) and check the order in the dashboard (test mode).
Make
Use HTTP → Make a request: URL https://swaglists.com/api/v1/orders, method POST, headers as above, Body type Raw, Content type JSON (application/json), Request content the JSON body below, and Parse response on.
The body
{
"external_id": "{{order id from the trigger}}",
"recipient": {
"name": "{{shipping name}}",
"address1": "{{shipping address line 1}}",
"address2": "{{shipping address line 2}}",
"city": "{{shipping city}}",
"state_code": "{{shipping state code, e.g. CA}}",
"postal_code": "{{shipping zip}}",
"country_code": "{{shipping country code, e.g. US}}",
"email": "{{customer email}}"
},
"shipping_method": "standard",
"items": [
{ "sku": "{{line item SKU}}", "quantity": {{line item quantity}} }
]
}The {{…}} parts are the fields you map from the trigger in the editor. Things to get right:
- Country and state must be codes (
US,CA), not names. Most store triggers offer a "country code" field; otherwise add a lookup/formatter step. - Empty optional fields — leave them out, send
null, or send an empty string: an emptyaddress2,company,phoneoremail(a trigger without a customer email) is fine, andpostal_codemay be empty for countries without postal codes. Two fields must not be empty strings:state_code(rejected withparameter_invalid— for countries without states, remove that line from the body) andexternal_id(map an id that every order has: it is what prevents duplicate orders). - Several line items — Zapier: use Code by Zapier (or the line-item fields of your trigger) to build the
itemsarray; Make: use an Iterator + Array aggregator (ormap()) to build it. - Errors — a
4xxresponse stops the run with the error body;error.codeanderror.messagetell you what to fix (error reference). Turn on autoreplay/retries for429and5xx. Replaying a run after a4xxsends the sameIdempotency-Key, which can return the stored error for 24 hours — even when you fixed the cause outside the request (for example added credits after402 insufficient_funds). Change the key for that replay (for exampleorder-+ Order ID +-2);external_idstill prevents a duplicate order.
React to order updates
Create a "catch hook" in Zapier (Webhooks by Zapier → Catch Raw Hook) or Make (Webhooks → Custom webhook) and register its URL as a webhook endpoint subscribed to the events you need (e.g. shipment.created).
Warning
No-code webhook steps cannot verify our signatures, so anyone who learns the hook URL could send fake events. Use the incoming event only as a trigger: take data.object.id (or data.object.order_id for shipments) and fetch the real object with an HTTP step — GET https://swaglists.com/api/v1/orders/<id> with your key — before acting on it. Keep the hook URL private.
Typical follow-ups: update the order in your store with the tracking number, send a Slack message when an order is on hold, add a row to a spreadsheet when an order is delivered.
When to graduate to code
No-code is great for low volume. Move to a small server (see Custom checkout, Shopify) when you need signature verification, reliable retries, multi-item mapping with SKU filtering, or more than a few hundred orders a day.