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.

CapabilityStatus
Parses the Etsy Orders CSV export -- tolerates reordered headers and extra/unrecognized columnsShipped & 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 numberShipped & 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 failsShipped & tested
Applies staged totals into the Etsy Seller Financial OS dashboard's cells, only after an explicit Yes confirmation showing exactly what will changeShipped & tested (planning logic; see limitations for what "tested" does and doesn't cover here)
Verified against a real Etsy CSV exportNot yet done (test data is synthetic -- see limitations)
Order Items CSV / Shop Stats CSV supportNot 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

  1. Download your Orders CSV export from Etsy's Shop Manager (a self-serve export Etsy already provides -- no API key or app authorization involved).
  2. Open the AutoSync menu inside your Google Sheet and paste the CSV text into the prompt it shows you.
  3. 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.
  4. 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.
  5. 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.