Track filament use with Spoolman and PrintStash
Connect Spoolman, import filament presets, select a spool for each job, and write measured Moonraker consumption back without counting it twice.
Spoolman is good at keeping an inventory of filament. PrintStash is good at tying a model and G-code revision to a print job. Connecting them puts the selected spool, material cost, and remaining inventory in the same workflow without maintaining two copies of the spool list.
The integration is optional and off by default. Spoolman remains the source of truth for vendors, filaments, and spools.
Connect the two containers
Open Settings -> Spoolman and enter a base URL that the PrintStash API container can reach. http://localhost:7912 usually fails because localhost inside the container refers to PrintStash itself.
When both applications share a Docker network, use the Spoolman service name and its internal port, for example:
http://spoolman:8000For Spoolman on another LAN host, use that host’s LAN address. An API key is only needed when an authenticating proxy in front of Spoolman expects one; Spoolman itself is normally keyless.
Save the configuration, test the connection, then enable the integration. An unreachable Spoolman instance does not block uploads or prints. Inventory reads return empty and consumption write-back is skipped until it recovers.
Import filament presets
Run Sync from Spoolman on the Profiles page. Each Spoolman filament becomes a PrintStash preset with its material, brand, density, diameter, and price per kilogram.
The sync is one way. Synced presets are read-only in PrintStash, so edit the filament in Spoolman and sync again. A matching local preset can be adopted during the first sync instead of duplicated. If a filament disappears from Spoolman, its PrintStash preset is unlinked and becomes editable rather than being deleted.
Select the spool used by a job
Choose a spool when sending a job or adding a manual print record. PrintStash saves that selection with the print history.
The selected spool improves the estimate because PrintStash can use its actual price, density, and diameter instead of a generic material profile. It also leaves a useful record when two spools contain the same material but have different brands or purchase prices.
Write measured use back
After a Moonraker job completes, PrintStash can send the measured grams to Spoolman’s /spool/{id}/use endpoint. The update happens after the job record is committed and does not block the print path.
Other providers do not return measured filament consumption to PrintStash. Their jobs can still record the chosen spool and an estimated cost, but PrintStash will not decrement inventory from a guessed measurement.
Avoid double counting
Moonraker can already update Spoolman through its own integration. If both systems subtract the same job, the remaining weight will be wrong.
Before writing consumption, PrintStash checks whether Spoolman reports an active spool, which indicates that Moonraker is handling the decrement. PrintStash then skips its own write and shows a warning. Use Write back anyway only when Moonraker’s hook is disabled and PrintStash should own the update.
After setup, test with one short print. Confirm the print history points to the expected spool and compare its remaining weight before and after the job. The full Spoolman guide has network examples and failure behavior.
For where PrintStash sits among everything else that talks to Spoolman, see which self-hosted tools connect to Spoolman.