The Guide IndexThe Guide Index

Send Shopify orders to Google Sheets with one row per line item (Make)

Use Make’s Shopify trigger, an Iterator on line items and Add a Row so each item maps to its own spreadsheet row. Model polling, retries and bundle counts separately.

Sources readCoverage5 cited sources
Short answer

Build Shopify › Watch orders → Iterator (Array = the order’s line items) → Google Sheets › Add a Row. Map item fields from the Iterator and order fields from the trigger. Each item becomes a separate bundle and row. A separate batched-write design must be checked against the connector you actually use; this guide does not establish a named bulk module.

Set up the sheet first

Row 1 can identify each item with Order, Date, Customer email, Product, Variant, SKU, Qty, Unit price and Line key. An order ID plus line-item ID is an identifier, not an atomic concurrency lock.

Steps

  1. Connect Shopify. Add a Shopify module and click Create a connection. In Domain, enter just the store handle (for xyz.myshopify.com, enter xyz), then click Install in Shopify. Make's docs warn against making two connections for the same store and app, because the newest one overwrites the scopes of both.
  2. Add the trigger. Use Watch orders. If the module shows an instant tag in your editor, it runs on a webhook. For any scheduled polling version you choose, include scheduled checks in the credit estimate, even checks with no new data. Verify the selected module’s trigger mode rather than inferring it only from a missing badge.
  3. Add an Iterator. Tools → Iterator. In Array, map the order's line items array. Right-click the trigger → Run this module only with a real test order, so later modules can see the item fields.
  4. Option A, simple: Add a Row. Google Sheets → Add a Row. Map Order, Date, and Email from the trigger, and Product, Variant, SKU, Qty, and Unit price from the Iterator. Line key = order ID + "-" + line item ID.
  5. Optional aggregation is a separate design. An Array aggregator collects bundles. Verify the exact destination module or API operation before assuming it accepts that array in one billed call. Make’s aggregator documentation explains which fields remain available after aggregation.
  6. Test with a multi-item order. Place or edit a test order with 2–3 different products. Click the bubble above each module: the Iterator should output one bundle per item, and the Sheet should get that many rows.
  7. Schedule and turn on. For a polling trigger, pick an interval you can afford (the calculator shows the credit cost). Then switch the scenario on.

Estimate the credit cost

Make credit estimate for this scenario

Based on Make's documented rule: a trigger uses one operation per check, and every later module runs once per bundle it receives. Most actions cost 1 credit. Treat this as an estimate and compare it with the coin counts after a real run. Make's Free plan lists 1,000 credits a month.

What breaks

  • Polling eats the free plan. Checking every 15 minutes is about 2,900 checks a month on its own, before a single order.
  • Edited orders. Do not assume a new-order workflow reconciles later refunds or edits. Confirm the trigger’s current event scope and design a separate update path when needed.
  • Duplicates after a re-run. A line-key search and filter can identify existing rows, but search → filter → append is not atomic. Concurrent runs may both append. The zero-result route, concurrent events and partial failures need separate validation; no exactly-once guarantee is claimed.
  • Prices as text. Format the price columns as numbers in Sheets so totals work.
Building this in Make?

The free plan is enough to build and test. Check whether your volume fits its credits with the calculator above.

Open Make vendor link

The calculator’s aggregate branch is a hypothetical one-call writer, not a verified Google Sheets connector procedure or guaranteed saving. Confirm the actual module, bundle count and rate before using that branch in a budget.

A local check for this task

Model the item bundles, chargeable helper and polling checks before comparing plans.

Sources

Common checks

Why do I only get one row per order?

You mapped fields from the order, not from the line items. An order holds an array of line items. Put an Iterator on that array so each item becomes its own bundle, then map the item's title, SKU, quantity, and price from the Iterator.

Why can't I see the item fields after the Iterator?

Make's docs say the next modules only learn the array's structure after a run. Right-click the trigger and choose Run this module only (or run the scenario once with a test order), then the fields appear.

Published November 7, 2026. Sources last read November 7, 2026. Send a correction.