Firetool

Home / Docs / Scheduled exports

Docs

Schedule Firestore exports

Export a collection or a filtered query to CSV or JSON every hour, day or week, even when Firetool is closed. Your computer's own scheduler starts each run, and every file gets a SHA-256 checksum. You need Firetool Pro.

Create a scheduled export

The quickest way is from a query you have already set up:

  1. Open the collection, add your filters and sort, and choose Run.
  2. Choose Export ▾, then Schedule this export….
  3. The New scheduled export dialog opens with the project, collection path and filters filled in. The sort, the Group setting and Match any filter are kept too.
  4. Choose how often, the format and the folder (see Every option), then choose Save schedule.

Or start from the list of schedules:

  1. Choose Tools → Scheduled exports (Ctrl+Shift+E, or Cmd+Shift+E on a Mac). It's also in the sidebar's Settings menu.
  2. Choose New scheduled export and fill in the dialog.
  3. Choose Save schedule.

Firetool saves the schedule and registers it with your system's scheduler. A message confirms it, for example Scheduled "orders": Daily at 02:00. If the system scheduler refuses, the schedule is still saved and the message shows what the scheduler said.

Scheduled exports need Firetool Pro, both to save one and for every run. Each run is an export like any other: if policy turns exports off for the project (Allow exports (CSV/JSON) in Tools → Policy and roles), the run fails.

Every option

OptionWhat it does
NameShown in the list and used at the start of each file name. It defaults to the collection path.
Project, DatabaseWhere to read from. The project list includes the account it's reached through. The database defaults to (default).
Collection pathThe collection to export, such as orders or users/alice/orders. Required.
FiltersThe query's filters as JSON. Leave [] to export every document. Filling it from Schedule this export… is easier than typing it.
How oftenDaily, Weekly or Hourly.
TimeFor daily and weekly runs, in your computer's time. The default is 02:00. Not used for hourly runs.
DayFor weekly runs only: Monday to Sunday. The default is Monday.
FormatCSV (Excel) or JSON, the same formats as a normal export.
Keep files for (days, 0 = forever)After each successful run, this schedule's files older than that many days are deleted. The default is 90.
Flatten nested fields in CSVMaps become columns such as address.city. On by default.
Save files inThe folder for the files. Choose… picks one. If you leave it empty, Firetool uses Documents/Firetool exports in your home folder. The folder is created if it doesn't exist.

A filter in the JSON list looks like this. op is the operator's name (EQUAL, NOT_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, GREATER_THAN, GREATER_THAN_OR_EQUAL, ARRAY_CONTAINS, ARRAY_CONTAINS_ANY, IN, NOT_IN, IS_NULL, IS_NOT_NULL):

[{"field":"status","op":"EQUAL","value":"Active","type":"string"}]

A scheduled export writes CSV or JSON files only. It isn't a Firetool backup and doesn't include subcollections. For that, see Backup and restore.

The files it writes

Each run writes two files into the folder:

  • The export, named after the schedule and the start time in UTC: orders_2026-10-01_0200.csv (or .json). Characters other than letters, digits, _, - and . in the name become _.
  • A checksum next to it, with .sha256 added: orders_2026-10-01_0200.csv.sha256. It holds the file's SHA-256 hash and its name, in the format sha256sum uses.

Each run also adds an entry to the audit log with the schedule's name, the collection, the filters, the format and the number of documents.

Retention removes only files whose names match this schedule (its name, a date and time, and .csv, .json or .sha256). A schedule named orders never deletes the files of one named orders_daily, and other files in the folder are left alone.

Run, pause, edit or delete

Tools → Scheduled exports lists every schedule with its source (project, path and number of filters), when it runs, the format, the folder and the last run. Each row has:

  • Run now: runs it straight away and offers Show in folder. Handy to test a new schedule.
  • Edit: opens Edit scheduled export with the same options.
  • Pause and Resume: a paused schedule is taken out of the system scheduler and shows a Paused badge.
  • Delete: stops the schedule. Files it already wrote are kept.

How it runs when Firetool is closed

Firetool registers each schedule with the scheduler built into your system. At the chosen time, the scheduler starts Firetool in the background with:

<path to Firetool> --run-export <schedule id>

That run opens no window and asks no questions. It reads the documents, writes the files and closes. It uses the system proxy settings if there are any.

SystemWhere the schedule lives
WindowsWindows Task Scheduler: a task named Firetool export <id> in the Firetool folder. It runs as you, with normal (not administrator) rights.
macOSlaunchd: a launch agent at ~/Library/LaunchAgents/app.firetool.export.<id>.plist.
Linuxcron: a line in your crontab ending in # firetool-export:<id>. cron has to be installed.

What has to be true at that time, as the app itself says:

  • Windows: your PC has to be on and you have to be signed in to Windows. Firetool doesn't store your Windows password, so the task can't run while you're signed out.
  • macOS: your Mac has to be awake and you have to be logged in.
  • Linux: the computer has to be on, cron has to be running and you have to be logged in, so the run can reach your keyring for the saved sign-in.

If the computer is off or nobody is signed in at that time, that run doesn't happen. The next one runs at its usual time. Use Run now if you need the missing file.

The schedule uses the account it was saved with, and reads with that account's access. Keep that account in Firetool: if it's no longer there, the run fails with The account for this export isn't available on this computer any more. If you move Firetool to another folder, it registers your schedules again with the new location the next time it starts.

A scheduled run doesn't ask before reading a lot of documents. Firestore bills one read per document exported, on every run. An hourly export of a large collection adds up quickly.

Check a file with its checksum

The .sha256 file lets you prove an export hasn't been changed since it was written. Open a terminal in the export folder.

Windows (PowerShell): prints True when the file matches.

$f = "orders_2026-10-01_0200.csv"
(Get-FileHash $f -Algorithm SHA256).Hash -eq (Get-Content "$f.sha256").Split(" ")[0]

macOS: prints OK after the file name when it matches.

shasum -a 256 -c orders_2026-10-01_0200.csv.sha256

Linux: prints OK after the file name when it matches.

sha256sum -c orders_2026-10-01_0200.csv.sha256

To make tampering harder to hide, copy the .sha256 files somewhere separate from the exports.

When a run fails

  • The last run column shows OK with the time and number of rows, or Failed with the time and the error.
  • A failed run is also recorded in the audit log.
  • Background runs add lines starting with scheduled export to studio.log in the .firetool folder in your home folder. Open it with Open settings folder in the sidebar's Settings menu.
  • Common causes: the account was removed, Pro has ended, policy turned exports off, the folder can't be written to, or the network was down.

Questions

Does Firetool have to be open for a scheduled export to run?

No. Windows Task Scheduler, launchd or cron starts it in the background. You only have to be signed in to the computer.

Can a scheduled export make a full backup with subcollections?

No. It writes CSV or JSON for one collection or query, without subcollections. Use Back up collection… for an exact copy.

At what minute does an hourly export run?

On macOS and Linux, on the hour. On Windows, Task Scheduler counts each hour from when you saved the schedule.