Checkout is the easy half

Shops where an order is the beginning of real work rather than the end of it — assembly, personalisation, installation, fulfilment by hand — and where that work currently lives in a spreadsheet beside the admin.

  • Import orders, products and customers as separate tables
  • Orders arrive with the customer, email, financial and fulfilment status, total, currency and item count
  • Add the statuses your operation actually uses, which Shopify has no field for
  • An automation can adjust an inventory level at a location
  • ⚠ Shopify returns only the last 60 days of orders unless the app was granted the wider order scope
  • Connects with your own custom-app credentials, so it works today
Start free 30 days free · no credit card
WHAT IT DOES

Exactly what connecting Shopify gives you

Brings data in

Pull Shopify into RowFold tables you own — filter them, report on them, link them to everything else in the workspace.

And it stays current: importing again updates the same tables, adding new records and updating changed ones, so links from your other tables hold. Keep in sync does that for you hourly or daily.

Writes back

Automation steps that act on Shopify when something happens in RowFold:

  • Adjust stock level Adds to or subtracts from the available stock of one inventory item at one location. Use a negative number to reduce stock. Returns the stock level after the change, which the step can save onto the record or pass to the next step.

What it doesn't do: It has no say in what a booking page offers. An import only reads: nothing is written back to Shopify, a record deleted there stays here, and a sync runs hourly at most rather than the moment something changes. Anything else you have read about Shopify and RowFold, this page is the authority: it is generated from the connector's own code.

HOW TO DO IT

The jobs people connect Shopify for

I want the work after checkout tracked properly

The import gives you the orders; the value is in what you add next, because Shopify's statuses are about money and postage and your operation is about neither. Budget ten minutes for deciding your own statuses before importing anything.

  1. Create a custom app in your Shopify admin with read access to orders, products and customers It is your app rather than ours, so nothing needs approving at our end and the connection works as soon as you paste the credentials.
  2. ⚠ Grant the wider order scope if you need more than 60 days Shopify returns only the last 60 days of orders unless the app was granted read_all_orders. An import that looks short is almost always this rather than a failure, and the warning says so.
  3. Import Customers and Products before Orders Those are the records orders link to. Doing them first means the orders arrive with something to point at instead of a name in a text column.
  4. Add the statuses your operation actually has Cut, engraved, awaiting stock, ready for collection. This is the column the spreadsheet existed for, and it is what makes the table worth having.
  5. Link orders to whatever they depend on Components, purchase orders, suppliers, the bench they are on. A late part then tells you which customers are affected without anybody cross-reading two lists.

You'll know it worked: Compare the order count for a recent week against the Shopify admin for the same week. If a longer range comes up short, check the order scope before assuming the import dropped anything.

I want stock adjusted without typing it into Shopify

The step changes an inventory level by an amount at a specific location, so it wants two ids and a delta rather than a product name and a new total. Both ids come from Shopify and neither is the product id.

  1. Find the inventory item id and the location id in Shopify The inventory item is not the product or the variant, and the location matters in a multi-warehouse shop. Store both on the record rather than looking them up each time.
  2. Decide what the trigger genuinely is A build completing, a stocktake line being saved, a breakage recorded. Trigger on the event that changed the physical count.
  3. Give the step a change rather than a total It only ever adjusts, by the amount you give it: minus two for a breakage, plus fifty for a delivery. Pass a total by mistake and it is added on top rather than set, so a shelf of forty given fifty becomes ninety, and nothing anywhere says so.
  4. Add a guard so one event cannot adjust twice Nothing on the Shopify side refuses a repeat, and a stock level that silently drifts is much harder to spot than one that never moved.
  5. Record the new level on the record Choose a Number field under Save the result to. The step stores the level Shopify reports at that location after the change, so the record shows what Shopify now holds without anybody opening the admin.

You'll know it worked: Run it once with a change of one against a test product and compare the level in the Shopify admin with the one saved on the record. Then re-run the same record and confirm the level does not move again.

WHAT IT FIXES

The three things that actually go wrong

Shopify's order statuses describe payment and shipping, and nothing about your actual process. Cut, engraved, awaiting stock, with the framer, ready for collection: none of those exist, so the real status probably lives in a spreadsheet somebody updates twice a day.

Import orders and give them the statuses your operation really has. The spreadsheet becomes a table with the order beside it rather than a copy of it.

Nothing joins an order to the supplier purchase it depends on. When a component is late, working out which customer orders are affected means reading both lists side by side.

Link orders to purchase orders, components and suppliers. A late delivery then answers “who is waiting” as a filter rather than as an afternoon.

Stock adjustments that come from outside the shop — a stocktake, a breakage, a return to the supplier — get typed into Shopify by hand, which means they tend to happen late and sometimes not at all.

An automation adjusts the level from the record that caused it, so the count changes because the event was recorded rather than because somebody remembered.

One automation worth building

When a build is marked finished…

  1. Check the order has not already been fulfilled
  2. Adjust the Shopify inventory level for the components used
  3. Email the customer that their order is ready
QUESTIONS

Before you start

Why did only the last two months of orders come across?

Because Shopify limits order access to the last 60 days unless the app has been granted the wider order permission, which is a separate scope you request on the custom app. The import reports this in its warnings rather than leaving the short history looking like a fault. Grant the scope in Shopify and import again: the older orders join the same table, beside the ones already there.

Should I be replacing Shopify with this?

No, and nothing here would let you. Shopify runs the storefront, takes the money and handles checkout, all of which it does far better than a workspace builder would. What it has no opinion about is what happens between the order landing and the parcel leaving, which for a lot of merchants is arguably where the actual business is.

Does it keep up with new orders automatically?

Yes, on a schedule. Importing again adds new orders to the same table and updates changed ones, a fulfilment or a refund for instance, matched on the Shopify order ID, and Keep in sync runs that hourly or daily. Without the wider order permission each run sees only the last 60 days, so an older order stays as it was when it last fell inside that window. If you need to react within seconds of checkout, that is a webhook problem and a different mechanism from an import, so it is worth being clear before building a process that assumes it.

What does the stock step actually change?

The available quantity of one inventory item at one location, by an amount you give it. It does not set a total and it is not a product-level operation, which surprises people the first time: the inventory item id is a different number from the product and variant ids, and in a multi-location shop the location id decides which warehouse moved.

Does this work right now?

Yes. Shopify connects with credentials from a custom app you create in your own admin, so nothing depends on an application we registered with them and there is nothing pending at our end. Create the app, grant the read scopes you want, paste the values, and the resource list appears.

Describe yours and watch it build

There is no template to wait for. Type a sentence about what you run and RowFold assembles the tables, links, views and dashboard around it — then you change whatever does not fit.

Start free Free for 30 days. Then $29/month per editor, with unlimited free read-only viewers.