Skip to content

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

  1. Trigger: your app's "new paid order" (or a form submission, a new spreadsheet row, …).
  2. 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/json
      • Idempotency-Key → the trigger's order id (e.g. order- + Order ID)
  3. 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

Request content
{
  "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 empty address2, company, phone or email (a trigger without a customer email) is fine, and postal_code may be empty for countries without postal codes. Two fields must not be empty strings: state_code (rejected with parameter_invalid — for countries without states, remove that line from the body) and external_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 items array; Make: use an Iterator + Array aggregator (or map()) to build it.
  • Errors — a 4xx response stops the run with the error body; error.code and error.message tell you what to fix (error reference). Turn on autoreplay/retries for 429 and 5xx. Replaying a run after a 4xx sends the same Idempotency-Key, which can return the stored error for 24 hours — even when you fixed the cause outside the request (for example added credits after 402 insufficient_funds). Change the key for that replay (for example order- + Order ID + -2); external_id still 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.