The problem this solves
Etsy's own Orders CSV export is the most complete record of a shop's sales, but getting it into a seller-run financial spreadsheet usually means hand-copying or re-typing rows -- a slow habit that also fails silently: a mis-copied cell doesn't announce itself, it just quietly understates revenue until something looks off weeks later. A script that reads the export directly removes the re-typing step, but only if it's built to refuse a bad or ambiguous row instead of guessing at it and moving on, since a script that "succeeds" on a corrupted file is worse than one that never existed.
What's shipped today, checked against a real test suite
Everything below is either running code with a passing automated test, or explicitly marked as not yet built. Nothing here is aspirational.
| Capability | Status |
|---|---|
| Parses the Etsy Orders CSV export -- tolerates reordered headers and extra/unrecognized columns | Shipped & tested |
| Refuses to guess: malformed currency, ambiguous (slash-separated) dates, mixed currencies in one file, and missing required columns all throw a specific error instead of producing a number | Shipped & tested |
| Aggregates monthly and total revenue, order count, refunded/cancelled counts, fees, and sales tax (where present in the export) | Shipped & tested |
| Writes results to a separate, non-destructive staging sheet inside the same spreadsheet -- your existing tabs are never touched, and nothing is written at all if validation fails | Shipped & tested |
| Applies staged totals into the Etsy Seller Financial OS dashboard's cells, only after an explicit Yes confirmation showing exactly what will change | Shipped & tested (planning logic; see limitations for what "tested" does and doesn't cover here) |
| Verified against a real Etsy CSV export | Not yet done (test data is synthetic -- see limitations) |
| Order Items CSV / Shop Stats CSV support | Not yet built (Orders CSV only) |
The parsing and aggregation logic is 14 automated test fixtures deep -- happy-path orders, an empty export, reordered and extra columns, a missing required column, malformed currency, multiple currencies in one file, refunded and cancelled orders, an unrecognized status value, an ambiguous date, a 5,000-row file, and three deliberately adversarial quote-handling cases (a bare quote mid-field, a field starting with whitespace before a quote, and a file that ends mid-quote) -- all currently passing. A separate "positive control" check deliberately corrupts a known-good result and confirms the test suite actually catches it, so a green run means the checks can fail, not just that they always pass. The dashboard-apply planning logic (label lookup, cell-plan building, the single-calendar-year refusal, the confirmation message) has its own 20 passing assertions, run the same way -- under plain Node.js, with no Google account involved. The full apply-to-dashboard function is separately exercised end-to-end (13 more passing assertions, including the partial-write scenario below) against a fake, in-memory stand-in for Google Sheets -- a closer simulation than the pure-logic tests, but still not a real Google Sheet.
The design rule behind all of it
The single worst outcome for a script like this is writing a wrong number into a seller's own revenue tracker without saying so. AutoSync's parser never returns a partial result and never guesses on anything ambiguous -- an unrecognized status value, an unparsable currency string, or a file mixing more than one currency all stop the import with a specific error rather than silently producing a smaller (or larger) number than reality.
How it works, step by step
- Download your Orders CSV export from Etsy's Shop Manager (a self-serve export Etsy already provides -- no API key or app authorization involved).
- Open the AutoSync menu inside your Google Sheet and paste the CSV text into the prompt it shows you.
- AutoSync checks the file's structure and required columns, then parses every row. If anything is missing, malformed, or ambiguous, it stops and tells you exactly what -- nothing is written to your sheet.
- If the file parses cleanly, AutoSync writes the monthly and total figures (revenue, order count, refunds, cancellations, fees, sales tax) to a separate staging sheet inside the same spreadsheet, so you can check the numbers before they go anywhere else.
- Applying those staged numbers into the dashboard's cells is a separate, explicit confirmation step: AutoSync shows exactly which cells and values are about to change and waits for a Yes before writing anything -- any other answer leaves both tabs untouched (see "Honest limitations" below for what this step does and doesn't yet cover).
Built to stay inside your own spreadsheet
AutoSync is a Google Apps Script -- the same scripting layer Google Sheets itself exposes, not a separate app or a hosted service. There is no OAuth connection to authorize, no Google Cloud project to create, and no network call anywhere in the code: the script reads the CSV text you paste and writes back to sheets inside the same spreadsheet, and nothing else. Your Etsy data never leaves your own Google account.
Honest limitations
What this page will not overclaim
Never run against a real Etsy export. Every one of the 14 test files is synthetic. Etsy's own help pages returned an error to every automated attempt to fetch their documented column names, so the exact header wording this parser expects is sourced from third-party integration guides -- and those two sources only agree with each other on one of the five required columns (Order ID). If a real export uses different header wording than expected, the fail-loud design means it will be rejected outright with a clear error, not silently misread -- but it may need a follow-up fix to actually import.
"Apply to your dashboard" is built, but only for our own workbook's tab names, and
never proven against a real Google Sheet. It looks for tabs named exactly
Master Dashboard and Monthly Bookkeeping Ledger (our Etsy Seller
Financial OS spreadsheet's own tabs) and refuses with a clear message if either is missing, or if
the staged data spans more than one calendar year. It never writes without an explicit Yes on a
dialog naming the exact cells and values first. Two automated test suites cover it (33 passing
assertions total under Node.js): 20 test the pure planning logic in isolation, and 13 more run
the full function end-to-end -- including the confirm dialog, the tab lookups, and the
partial-write scenario below -- against a fake, in-memory stand-in for Google Sheets. That's a
closer simulation than pure-logic tests alone, but it is still not a real Google Sheet: like the
rest of this file's Apps Script wrapper, this function has never been run against a live Google
account by us, and a fake object cannot fully stand in for the real API's quirks. Google Sheets
also has no all-cells-at-once write, so if a write fails partway through, cells already written
stay written while the rest do not; the tool tells you this happened rather than hiding it, but
the risk window itself isn't eliminated.
A narrow CSV-parsing edge case remains, by design choice, not oversight. Earlier test rounds found and fixed two ways a single stray quote character in a cell could cause the parser to misread the rest of a row without raising an error. Both are fixed and covered by tests. One narrower shape is still open: a stray quote that later gets "closed" by an unrelated quote elsewhere in the same file can still cause a field to run on longer than it should. This is a known, narrowed edge case, not a hidden one.
The Apps Script wrapper itself hasn't run against a real Google Sheet. The parsing and aggregation logic is tested directly under Node.js. The thin wrapper that actually reads a menu prompt and writes to a spreadsheet has been reviewed but not executed against a live Google account.
How this relates to the Etsy Seller Financial OS spreadsheet
AutoSync is being built as the import engine for a seller-run financial dashboard -- the kind of workbook our Etsy Seller Financial OS spreadsheet already provides for manual entry. The two are not wired together yet: buying that spreadsheet today does not include AutoSync, and AutoSync does not currently write into that workbook's cells automatically (see "What's shipped today" above). This page describes AutoSync on its own, current terms.