Stop exporting CSVs from Magento every Monday. Magento Order Manager is a Google Apps Script that connects directly to your Magento 2 REST API and writes orders — with full line-item details, billing and shipping addresses, payment breakdowns, and any custom attribute you care about — straight into a Google Sheet you control.
Filter by date, status, customer, or amount. Pick exactly which fields you want. Open the built-in dashboard to see revenue trends, top products, and repeat-customer rate without ever logging into Magento. Turn on auto-sync and the Sheet stays fresh automatically.
Everything runs inside your Google account and your Magento store. No middleman, no monthly fees, no data leaving your infrastructure.
What You Get
- Line-item flattening engine — one row per product line, not a blob per order. SUMIFs, pivots, and fulfillment routing finally work.
- 50+ built-in fields — order, item, shipping, billing, and payment columns. Tick what you need, skip the rest.
- Custom attributes — read any Magento attribute by code (
po_number,gift_message, B2B fields, etc.) at order or line-item level. No code editing. - Two authentication methods — long-lived Integration Token (recommended) or Admin username + password.
- Scheduled auto-sync — hourly, every 6 hours, daily at 06:00, or weekly on Mondays.
- Live dashboard — total revenue, AOV, status breakdown, daily trend, top 10 products, repeat-customer rate.
- Multi-store view support — every store view on a single Magento installation.
- 100% unobfuscated source code — plain JavaScript, readable and modifiable.
- Lifetime updates — one-time purchase, free version upgrades forever.
- Runs in your workspace — your tokens, your sheet, your control. Zero data flows through us.
Magento Order Manager
Skip the manual setup. Get the complete script and start using it instantly in your Google Workspace.
Before You Start
- A Google account (free Gmail or Google Workspace — either works)
- Admin access to your Magento 2 store (so you can create a read-only API integration)
- Your two files from the purchase: Code.gs and Index.html
- About 10 minutes
You do not need to be a developer. Every step below is point-and-click.
Step 1: Create a Google Sheet
- Go to sheets.new to create a blank Google Sheet.
- Rename it to something memorable — for example
MageSheet Orders. - Copy the Sheet ID from the URL. It is the long string between
/d/and/edit:
https://docs.google.com/spreadsheets/d/1aBcDeFgHiJkLmNoPqRsTuVwXyZ/edit
└──────── Sheet ID ────────┘
Save this ID somewhere handy — you will paste it into MageSheet in Step 5. MageSheet will create an Orders tab inside this Sheet automatically; you don't need to set up any columns yourself.
Step 2: Create the Apps Script Project
- Go to script.google.com and click New project.
- Rename the project (top-left) to
MageSheet. - In the file tree on the left:
- Select the default
Code.gsand replace its entire contents with the contents of theCode.gsfile from your purchase. - Click the + next to Files → HTML → name it exactly
Index(no.htmlextension — Apps Script adds it). Replace its contents with theIndex.htmlfile from your purchase.
- Select the default
- Click the Save icon (💾).
That is every code file MageSheet needs — two of them.
Step 3: Deploy as a Web App
- Click Deploy → New deployment (top-right).
- Click the gear icon next to Select type → choose Web app.
- Fill in:
- Description:
MageSheet v1 - Execute as: Me (your email)
- Who has access: Only myself (recommended) or Anyone with a Google account if you want to share with teammates.
- Description:
- Click Deploy.
- On the first deploy, Google asks you to authorize the script:
- Click Authorize access → pick your Google account.
- You will see a "Google hasn't verified this app" warning. This is expected — you are the developer of your own copy of MageSheet. Click Advanced → Go to MageSheet (unsafe). Nothing is being sent to a third party; the warning simply means Google has not reviewed this personal script.
- Click Allow on the permissions screen.
- Copy the Web app URL shown after deployment. Bookmark it — this is how you will open MageSheet from now on.
Step 4: Create a Magento API Integration
This gives MageSheet a read-only, scoped token for your Magento store. It is the safest way to connect.
- In your Magento 2 admin panel, go to System → Extensions → Integrations.
- Click Add New Integration.
- Fill in:
- Name:
MageSheet - Email: your email
- Current User Identity Verification: your admin password
- Name:
- Go to the API tab:
- Resource Access: Custom
- Tick Sales → Operations → Orders (and any nested items it reveals)
- Click Save.
- On the Integrations list, click Activate next to MageSheet → Allow.
- You will see 4 tokens. Copy the Access Token — the long one. You will paste it into MageSheet in the next step.
Can't create an integration? MageSheet also supports Admin username + password authentication. Skip this step and jump to Step 5; we'll cover both options there.
Step 5: Connect MageSheet
- Open the Web app URL from Step 3.
- Click Settings in the left sidebar.
- Enter your Magento URL — for example
https://yourstore.com(the store root, not the admin path). - Choose one authentication method:
- Integration Token (recommended) — paste the Access Token from Step 4.
- Admin User — paste a Magento admin username and password. MageSheet exchanges them for a short-lived (~4h) token at each session. The admin account must not have 2FA enabled (Magento's admin-token endpoint cannot handle 2FA challenges).
- Paste the Google Sheet ID from Step 1.
- Click Save → Test Connection. You should see "Connection successful! N total orders found."
Either authentication method keeps your credentials inside your own Apps Script's Script Properties — the same security boundary as any Apps Script you write yourself.
First Fetch
Before pulling anything, decide what you want in your Sheet.
- Click Field Selection in the sidebar. Tick the order, item, and address columns you care about (defaults are sensible — you can come back and tune this any time).
- Click Fetch Orders, pick a small date range (e.g. the last 7 days), leave everything else as default, click Fetch & Write to Sheet.
- Open your Google Sheet. Orders appear on the
Orderstab. - Click Dashboard in MageSheet to see revenue, order status, top products.
Want to see the interface before you install? This is the actual MageSheet UI running on sample data — click any tab, tweak filters, open the dashboard:
Using MageSheet
MageSheet has a left-hand sidebar with four pages:
| Page | What it does |
|---|---|
| Fetch Orders | Pull orders from Magento with filters and write them to your Sheet. |
| Field Selection | Choose which order, item, and address columns to export. |
| Dashboard | Revenue, AOV, status mix, top products, repeat-customer rate. |
| Settings | Magento URL, authentication, Sheet ID, auto-sync, connection test. |
Fetch Orders
Set any combination of filters:
| Filter | Accepts | Example |
|---|---|---|
| Start / End Date | a date | 2026-04-01 |
| Order Status | Magento status name | processing |
| Order Number | exact increment_id | 100000123 |
| Customer Email | partial match | @gmail.com |
| Min / Max Amount | a number | 100 / 2000 |
| Page Size | 20–500 orders per request | 200 |
The three buttons:
- Preview — runs the query and shows the first few orders in a table without writing anything. Use it to sanity-check filters before a big fetch.
- Fetch & Write to Sheet — runs the query and overwrites the
Orderstab with the results. - Clear — resets the filter form.
Pagination: a single fetch returns up to 500 orders (Magento's API maximum). For large backlogs, split by date range — fetch month by month or week by week.
Every fetch writes to a tab called Orders in the Sheet configured in Settings. The tab is cleared and rewritten each time — MageSheet is a pull-on-demand tool, not an append-only log. If you need history, right-click the Orders tab in your Sheet → Duplicate after each fetch, or make a copy of the whole Sheet.
Field Selection
Three groups of checkboxes:
- Order fields — top-level order data (number, status, totals, customer).
- Product fields — line-item data. Toggle Include Product Details on to activate.
- Address fields — billing + shipping. Toggle Include Address Details on to activate.
Your selection is saved automatically and reused on every fetch (including scheduled ones).
Flat vs. flattened:
- Product fields OFF → one row per order. Fastest, cleanest for revenue pivots.
- Product fields ON → one row per order line. The same order appears multiple times (once per SKU) with line-item columns populated. Best for per-SKU analysis and fulfillment.
Custom Attributes
At the bottom of Field Selection you'll find the Custom Attributes panel. Use it to export any Magento attribute that isn't in the built-in field list — for example po_number, gift_message, or any customer_attribute_xxx your team defined.
For each custom attribute:
- Attribute Code — the exact code from Magento (e.g.
po_number). Alphanumeric and underscores only. - Column Label — the header shown in your Sheet (e.g. PO Number).
- Scope —
Orderfor order-level attributes,Itemfor per-line-item attributes.
Up to 20 custom attributes per export. MageSheet reads them from Magento's custom_attributes array, direct object keys, or extension_attributes depending on how your store exposes them — whichever works.
Dashboard
Open Dashboard after any fetch. It reads the current Orders sheet and shows:
- Total Revenue and Order Count for the data currently in the Sheet
- Average Order Value (AOV)
- Total Customers and Repeat-Customer Rate
- Status Distribution — pending / processing / complete / canceled / etc.
- Daily Revenue Trend — time series over the fetched date range
- Payment Method Breakdown
- Top 10 Products by Revenue (populated only when Product fields are enabled)
Refresh the dashboard after every new fetch.
Settings
- Magento URL — your store root (e.g.
https://yourstore.com) - Authentication — Integration Token or Admin User (see Step 5)
- Google Sheet ID — the Sheet MageSheet will write to; change any time to point at a different Sheet (e.g. monthly archives)
- Test Connection — always run this after changing any setting, to catch typos before a failed fetch
Auto-Sync (Scheduled Fetch)
If you want MageSheet to keep your Sheet fresh without clicking anything, open Settings → Auto-Sync:
| Setting | What it controls |
|---|---|
| Enable | Turns the time-driven trigger on or off. |
| Frequency | Hourly / every 6h / daily at 06:00 / weekly on Mondays at 06:00. |
| Lookback | How many past days of orders to pull on each run (default 7). |
| Status | Narrow to a single status, or leave as all. |
Each scheduled run uses your current Field Selection. The Orders tab is overwritten every run — duplicate the tab before each run if you need history.
Run Now — button to trigger a sync immediately, useful for testing your schedule after saving it.
The last run's timestamp and result appear under the Auto-Sync card.
Common Workflows
"Give me last week's orders as a flat list"
- Settings → confirm connection.
- Field Selection → order fields only, Product details OFF.
- Fetch Orders → date range = last Mon–Sun, Status =
complete, Page Size = 500. - Fetch & Write.
"Per-SKU sales report for the month"
- Field Selection → Product details ON. Include
SKU,Product Name,Qty Ordered,Row Total. - Fetch Orders → date range = last month, Status =
complete. - Fetch & Write → Dashboard to see Top 10 Products.
"Fulfillment export with shipping addresses"
- Field Selection → Order fields + Product fields + Address Details ON. Pick the shipping columns you need.
- Fetch Orders → Status =
processing. - Fetch & Write → open the Sheet and filter / print / hand to the warehouse.
"Keep the Sheet fresh automatically"
- Set up Field Selection once.
- Settings → Auto-Sync → Enable → pick a frequency and lookback.
- Forget about it. The Sheet refreshes on schedule.
Updating to a New Version
When a new version is released, you don't reinstall anything — just paste the new code into your existing project:
- Open your Apps Script project.
- Replace the contents of
Code.gsandIndex.htmlwith the new versions. - Deploy → Manage deployments → ✏️ Edit → New version → Deploy.
Your settings, credentials, and schedule are preserved across updates.
Troubleshooting
"Authentication failed (401)" — Your Access Token is wrong or expired. Re-copy it from Magento: System → Integrations → MageSheet → Access Token.
"Access denied (403)" — The integration doesn't have Sales → Orders permission. Edit it in Magento and grant that resource.
"Could not connect to Magento server" — Check the URL. Must start with https://. If your store uses a non-standard admin path, the URL is still the store root, not the admin URL.
"No Google Sheet is configured" — Paste your Sheet ID in Settings.
"Could not open Sheet with this ID" — Either the Sheet ID is wrong or the Google account running the script doesn't have access to that Sheet. Open the Sheet in your browser while signed in as the same Google account.
"No orders found matching the filters." — Loosen your filters. Try removing everything except a wide date range and Page Size = 20 to sanity-check.
Dashboard is empty after a fetch. — The Orders tab must include headers for Order Number (or Order ID) and Grand Total. Make sure those fields are ticked in Field Selection.
Admin-mode suddenly stops working. — The cached admin token expired and re-auth failed. Go to Settings → re-save your password → Test Connection. If it still fails, the admin user may have had its password rotated or 2FA switched on.
Fetch is slow. — Reduce Page Size, or narrow the date range. Magento's API is the bottleneck, not MageSheet.
"Magento API Error (500)" — Server-side issue on your store. Check your Magento logs. A retry usually works.
Frequently Asked Questions
Do I pay every month? No. One-time purchase. You own your copy forever and receive free version updates for life.
Where does my data go? Nowhere but your own Google account. The script runs inside your Google Apps Script environment and talks directly to your Magento store. We never see your orders, your Magento credentials, or your Google Sheet.
How many orders can it pull? Up to 500 orders per fetch (Magento's API maximum per call). For larger backlogs, fetch repeatedly with different date ranges — or turn on auto-sync and let it keep itself fresh.
What if my store is on-premise or behind a VPN?
Your Magento REST API needs to be reachable from Google's servers (script.google.com). Public stores work out of the box. Private-network stores require IP allowlisting or a reverse proxy.
Which Magento versions are supported?
Magento 2.3, 2.4+, Magento Open Source, and Adobe Commerce. MageSheet uses the stable /rest/V1/orders API, unchanged for years.
Will this break when Magento updates? Unlikely. MageSheet uses the stable REST API. If a breaking change ever ships, the patch is delivered free as part of lifetime updates.
Can I modify the code? Yes. The source is plain JavaScript, no obfuscation. Edit anything you like — and if you build something useful, let us know.
Can I run multiple MageSheet instances against different stores? Yes. Each Apps Script project is independent — create one MageSheet project per store. They don't share settings or credentials.
Can the whole team use the same MageSheet? Yes. Google Sheets handles concurrent reads natively — finance, fulfillment, and support can all work off the same live Sheet at the same time.
Refund policy? 14-day money-back guarantee, no questions asked, if MageSheet doesn't work for your store.