3D Print Manager User Manual: Setup, Filament and Printers
Your all-in-one tool for managing filament inventory, tracking print costs, and running a 3D print farm. Works in the browser, on Android, and on Windows — all synced in real time.
FREE = available on all accounts | PRO = paid feature | FARM Core = farm features (manual orders, scheduler, analytics) | FARM Connect = FARM Core + Integrations (inbound shop, outbound quotes/invoices)1. Getting Started
Language & Units
- Language: Open the Language item at the bottom of the left rail → choose English, Croatian, or German.
- Units: Toggle between g and kg using the unit button inside the Add Spool modal. Your preference is remembered across sessions.
2. Dashboard Overview
- The main screen shows all your filament spools as rows. Each row displays: Brand, Type, Color, Weight remaining, Price/kg, and Storage location.
- Color coding: 🔴 Red = critical (<200g) — 🟡 Yellow = low (200–400g) — 🟢 Green = ok.
- Search: Type anything in the search box to filter by brand, type, color, or SKU.
- Sort: Use the sort buttons to order by last updated or by critical stock first.
- Multiple spools of the same type are grouped into an expandable row (accordion). Click the row to expand and see each individual spool with its own weight bar. Its three-dot menu → Print label gives you the QR label.
Dashboard Header
- Above the filament list, a KPI row shows the total filament in stock, how many printers are busy out of the total, and how many jobs are queued.
- Fleet strip: once you have at least one printer, each printer gets a card with a live progress bar and the time remaining, or an idle marker.
- FARM owners additionally get a Needs reorder KPI, the Smart Reorder card, and the Today strip (idle printers, overdue jobs, high failure rate).
System Activation Checklist
When you create a new account, a System activation checklist appears between the page title and the filament table. It guides you through the minimum setup steps for your plan tier. The goal you pick in the short questions after sign-up comes first, and its first action opens right after the questions.
- FREE: Add filament · Log a print (its grams come off the spool) · Calculate print cost.
- PRO: Add filament · Log a print from its G-code or print time (timeline and cost go live) · Add a printer · Load filament into printer · Install 3DPM Agent (or connect Home Assistant). With printer tracking as the goal, the printer comes first; with cost calculation as the goal, the calculator comes first.
- FARM: The PRO steps, plus Add another printer. With work orders as the goal, Create your first order comes first.
- Log print on the toolbar above the filament list asks which spool the print used, then opens Update Weight.
- Each step is marked as done automatically as soon as you perform the corresponding action — no manual ticking required.
- The checklist updates in real time — steps turn green within seconds of completing them, without a page reload.
- Clicking an incomplete step opens the relevant modal or scrolls to the relevant section instantly.
- The checklist header is orange while steps remain, and turns green with the message "System is live." when all steps are complete.
- Click the accordion header to collapse or expand the checklist at any time. Your preference is remembered.
- Click the × button to permanently dismiss the checklist. It will not reappear after dismissal or after all steps are completed.
- If you upgrade your plan tier, the checklist resets to show the steps relevant to your new tier.
3. Managing Filaments
Adding a New Spool
Large Spools & Auto-Split
- By default, spools entered over 1000g are automatically split into multiple 1000g spools (e.g. 2500g → 2× 1000g + 1× 500g). Each spool gets a unique QR code.
- If you have a genuine large spool (e.g. 2.5 kg, 4.5 kg, 5 kg), tick the "Single large spool — do not split" checkbox that appears above the Save button once you enter a weight over 1000g. The spool is then saved as-is, without splitting.
- CSV import (Settings → Import/Export) never auto-splits — every row is imported as one spool exactly as entered.
Display Name
- Go to Settings → Preferences and enter your name or alias in the Display name field, then click Save.
- Once set, your name appears in the top-right corner of the app instead of your email address. Your email is still shown below it in a smaller font.
- Leave the field empty (or click Clear) to go back to showing only your email.
- If you purchased a PRO or FARM plan, the name you entered during checkout is automatically saved as your display name — you can change it any time in Preferences.
Schedule Working Hours FARM Core
- Go to Settings → Preferences and find the Schedule working hours card (visible to FARM account owners only).
- Set your From and to hours to define your daily work window. The scheduler will never place a job outside these hours — jobs that would fall into off-hours are automatically pushed to the next working slot.
- Check Skip weekends to prevent jobs from being scheduled on Saturday and Sunday. When checked, any job that lands on a weekend is moved to Monday morning.
- Default values: 06:00 – 20:00, skip weekends on. These are the same as the original built-in behaviour — existing schedules are not affected.
- Changes take effect for all new jobs scheduled after saving. Previously queued jobs are not rescheduled.
- Note: Manual overrides ("Start Now" or a custom time for the first copy) always bypass working-hours rules.
Calculator Defaults PRO
- Go to Settings → Preferences and find the Calculator defaults card (visible to PRO and FARM users).
- Pre-set four values: Energy (€/kWh), Labor (€/hr), Markup (%), and Printer power (W).
- Once saved, these values are automatically pre-filled every time you open the cost calculator — no need to enter them manually each time.
- Leave any field empty to skip that default. The calculator will show an empty input for that field, as usual.
- Click Save to apply. Your defaults are stored in your account and persist across sessions and devices.
- Note: Team members cannot change calculator defaults — this is an account-owner setting.
Filament Shipping Time PRO
- Go to Settings → Preferences and find the Filament shipping time field.
- Enter the number of days your filament orders typically take to arrive. Default: 7 days.
- If you order from suppliers with longer delivery times (e.g. China), set this to 21 days or more.
- This value is used by Smart Reorder to calculate when to alert you — the longer your shipping time, the earlier WATCH/SOON/CRITICAL warnings appear.
Weight Unit & Default Weight
- Toggle between g and kg using the unit button inside the Add Spool modal. Your preference is remembered automatically — it persists after logout and across sessions.
- To pre-fill the weight field every time you open the Add modal: go to Settings → Preferences, enter your typical spool weight, and click Save. Clear the value any time to go back to an empty field.
Editing, Duplicating & Moving PRO
- Correcting the details: Brand, Type, Color and Price are fixed once a spool is saved — there is no Edit action. To correct them, delete the spool and add it again. Weight, storage location and print settings can be changed at any time from the three-dot menu.
- Duplicate: Instantly creates a second spool with the same Brand/Type/Color but a new unique QR code — perfect when you buy a new roll of the same material.
- Move: Transfer a spool (or part of it) to a different storage location. A full move changes the storage location of the existing spool; a partial move always creates a new, separate spool at the destination with its own QR code — identical spools are never merged and prices are never averaged.
- Split large spools: Use Move with a partial amount (e.g. 1000g from a 3000g merged spool) to create separate physical spools, each with its own QR code — ideal for assigning individual rolls to AMS slots.
Deleting & Archiving
- Soft delete (Archive): Sets the weight to 0g and marks the spool as archived. It disappears from the main list but can be restored.
- Hard delete: Permanently removes the spool and all its history.
- Archive view PRO: Open Settings → Archive to see all archived spools. You can restock them (bring them back) or permanently delete. Large archives load 50 spools at a time — click Load more to see additional pages.
Print Settings per Spool
- Each spool can store material-specific print settings: Nozzle °C, Bed °C, Flow Rate, K-Factor (Pressure Advance), and free-text Notes (e.g. "Dry 4h before use", "Use glue stick").
- Access via the three-dot menu → Print Settings.
4. Tracking Usage
Updating Weight
- Open the three-dot menu on a spool row → Update Weight.
- Log Usage: Enter the grams used (deducted from stock). Or enter the new total remaining weight directly.
- Restock: Add grams back (e.g. you received a new roll).
- Copies multiplier FARM Core: Printed 5 identical parts? Enter the weight of one copy and set Copies = 5 — the total is deducted in one click.
- Undo History: The recent deductions dropdown lets you revert the last few entries instantly.
- Weight correction mode: When using "Set total weight" mode, a checkbox appears: "Weight correction — don't log to statistics". Check this when correcting the spool weight from a physical scale measurement — the weight is updated but the change is excluded from Consumption Trend and Financial Overview statistics. Use Subtract mode for normal usage tracking (this checkbox is not available there).
Auto-fill from G-code File PRO
- In the Update Weight window, drag and drop your
.gcodeor.bgcodefile into the dashed box. - The app reads the exact filament usage in grams automatically.
- Job Scheduler panel: once a print time is detected, a scheduling panel opens below the file box.
- Pick the printer, assign the slot(s), then choose the Start Time: Start Now, Start immediately after current job, or Schedule for later (Custom).
- Grams are deducted the moment you submit — in every case, whether the job starts now or waits in the queue.
- Submit without picking a printer and the file's usage is simply logged against the spool.
5. Printer & AMS Management PRO
Adding a Printer
Mounting Spools to AMS Slots
- Click an empty slot card on the printer widget.
- Search for the spool by brand, color, or SKU — or scan its QR code with the scanner.
- The app warns you if the spool is already mounted on another printer.
- Click Unmount on a loaded slot to free it up and keep inventory in sync.
Maintenance Tracking FARM Core
- Each printer has a configurable Maintenance Interval (in hours). Set it when adding or editing a printer.
- The printer card shows a service progress bar. When the printer exceeds the interval, the bar turns red.
- A yellow maintenance banner appears at the top of the dashboard listing all printers that need service.
- Click the banner to open the Maintenance Modal — a list of all overdue printers with the number of hours overdue.
- Click Reset Service next to a printer to reset its maintenance counter (sets last service = current total hours).
- When the last printer is reset, the modal closes and the banner disappears automatically.
- You can also click × on the banner to dismiss it without resetting (the data remains unchanged).
6. Job Scheduling & Timeline PRO
- Farm Timeline: A visual timeline showing all active and queued print jobs across all your printers at once. See exactly when each printer will be free.
- Job Queue layout: Each job card has a coloured left border indicating its status (green = printing, amber = queued or paused, grey = completed) and a sequential position number, making it easy to see the order at a glance. The date and time are displayed at the top of each card, with the job name below.
- Adding a job: Drop a G-code file into the Update Weight window and use the Job Scheduler panel that appears, OR click the schedule button on the printer widget directly.
- Queue logic: If a printer is busy, new jobs are automatically pushed to the end of its queue. All subsequent job ETAs update automatically (ripple effect).
- Smart scheduling: The scheduler automatically respects your configured working hours and weekend setting (default: 06:00–20:00, skip weekends). FARM owners can customise these in Settings → Preferences → Schedule working hours.
- Duplicate protection: If you try to add a G-code file already in the queue or currently printing anywhere on the farm, you get a clear warning.
- Live sync: The queue refreshes in the background. If a colleague adds a job, you see it instantly without refreshing the page.
- Stuck jobs auto-cleanup: Scheduled jobs whose finish time has passed are automatically completed on the next page load — no manual intervention needed. Jobs booked by Home Assistant or 3DPM Agent are handled separately and are not affected.
Reserve Spool & Filament Debt FARM Core
- When scheduling a print job, the app checks if the mounted spool has enough filament to complete the job.
- If the spool is insufficient, a yellow warning appears showing exactly how many grams are missing.
- You must select a Reserve Spool before the job can be submitted. The reserve spool must:
- Have the same Brand, Type, and Color as the primary spool.
- Have enough weight to cover the deficit (the missing grams).
- Not be currently mounted on any other printer.
- If no valid reserve spool exists, the Submit button is blocked — you cannot start the print until you add a matching spool to your inventory.
- When the job runs: the deficit is automatically deducted from the reserve spool and it is mounted to the same slot as the primary spool.
- Existing debts (Filament Debt): If a previous job left a debt on a printer slot, the scheduler automatically settles it using a matching spool before starting the new job.
Failed Prints & Auto-Refund
- If a print fails mid-way, click the Fail button on the active print widget.
- The app calculates how much filament was actually used (proportional to elapsed time), deducts only that amount, and refunds the rest back to the spool.
- You can immediately re-queue a cloned copy of the job with one click (Retry FARM Core).
7. Home Assistant Integration PRO
Connect 3D Print Manager to Home Assistant (HA) so prints are booked without manual entry. HA reports when a print starts, finishes, pauses or fails; 3DPM books the job's planned filament and, when a print fails, returns the part that was not used. For Bambu Lab, Prusa and Klipper printers there is also 3DPM Agent, which books prints without Home Assistant.
| Scenario | What to do in the app | What HA does |
|---|---|---|
| Single-color print | Nothing! Keep the Automatic booking button green. | Detects the active slot, calculates print time, deducts grams when the print starts. |
| Multi-color print (your own G-code) | Drop G-code in the Update Weight window → in the Job Scheduler panel pick the printer and Schedule for later (or queue it). Then click ⚡ Arm on the queued job just before starting the printer. | Detects the armed job first (ignores filename) and takes it over. Each color already came off its slot when you scheduled the job, so nothing is deducted twice. |
| MakerWorld / Bambu Handy app | Drop G-code → UNCHECK queue → deduct grams now. Then click the 🔗🚫 red pause icon on the printer card. | Ignores this specific print to avoid double deduction. Automatically resumes tracking for the next print. |
| Scheduled job (Bambu / any printer) | Schedule the job as usual (filament is reserved automatically). Just before starting the printer, click ⚡ Arm on that job card. | Ignores the print filename entirely. Picks up the armed job, marks it as printing, deducts nothing extra (already done at schedule time). |
Arm Button — How It Works
- The ⚡ Arm button appears on each queued job card (greyed out if the printer is currently printing).
- Click it just before you start the physical printer. The button turns green and the job shows an ARMED badge.
- Auto-arm: if you don't click Arm manually, the app arms the job automatically when its scheduled start time arrives — as long as the printer is idle and no other job is already armed.
- Only one job per printer can be armed at a time — arming a second job disarms the first automatically.
- The arm remains valid until the job's scheduled end time. If that time passes without HA sending a start trigger, the arm expires and the system falls back to filename matching.
- Filament is never deducted twice — it was already reserved when you scheduled the job. The Arm just tells HA "this is the one."
Cancelling a Job
- Queued job: click the ✕ cancel button — a warning toast appears and the button turns yellow. Click again within 3 seconds to confirm.
- Printing job (not started yet): if a job shows as printing but the physical printer was never actually started, a 🚫 cancel button appears on the job card. Tap ⓘ next to it to see what it does. Double-tap to confirm — returns all reserved filament.
- For prints that genuinely failed mid-way, use the Fail button on the printer widget instead — it calculates proportional filament usage.
- Automatically booked jobs (source = HA, also those from 3DPM Agent) cannot be cancelled here — they close automatically when the print finishes.
7b. 3DPM Agent PRO
3DPM Agent is a small program for your Windows computer that books your Bambu Lab prints in 3D Print Manager without Home Assistant. It reads your printers through the Bambu Lab cloud, the same way the Bambu Handy app does, so your printers stay available in Bambu Studio and Handy. Every start, pause, finish and failure lands in 3DPM, with the filament of each AMS slot. It also reads Prusa and Klipper printers directly on your local network (see Printers on the local network below). An agent that is already set up can be moved by export to a Linux server, where it runs as a command-line program (3dpm-agent); see Moving the agent to another computer below.
What you need
- A running PRO or FARM plan. On a farm, the owner or a manager signs in (not an operator or a viewer).
- A Windows 10 or 11 computer that is switched on while you print. The agent runs in the background. On a farm, use a computer that stays on, or Home Assistant. The agent starts when someone signs in to Windows: a PC that restarts for an update and waits at the sign-in screen books nothing, so set it to sign in by itself or use Home Assistant.
- For Bambu Lab printers: a Bambu Lab account. Accounts with two-factor sign-in (2FA) are not supported yet. A farm with network printers only needs no Bambu Lab account.
- Each printer added in 3DPM, with its spools mounted on the right slots.
Setup in five steps
- Install 3DPM Agent from the Microsoft Store and start it. Leave Start with the computer ticked: prints are booked only while the agent runs.
- 3DPM account (tab 3DPM): enter the e-mail and password you use on 3dprintmanager.eu and click Sign in. With Remember me ticked the computer stays signed in until you remove it; without it the sign-in lasts 24 hours. The password is sent once and not stored.
- Bambu Lab account (tab Connections): enter your Bambu Lab e-mail and password. Bambu Lab e-mails you a code; enter it in the agent and click Confirm. Printers on the local network are added on the same tab (see below).
- Printers (tab Printers): your Bambu printers and the network printers you added appear in the list. Next to each one, choose the 3DPM printer it feeds. The same choice is in 3DPM under Settings → API & Integrations → 3DPM Agent.
- Done. Both accounts show ✓ Signed in, the top of the window shows Connected and the next print appears on the Activity tab.
What the agent books
| On the printer | In 3DPM |
|---|---|
| A print starts | The agent waits until the printer really prints (after heating, nozzle cleaning and bed levelling), then books the job and deducts the slicer's grams from the spool in each AMS slot. Activity shows Print started: … ✓ 3DPM. |
| A job you scheduled or armed | Taken over exactly as with Home Assistant (⚡ Arm works the same). The filament was reserved when you scheduled the job, so nothing is deducted twice. |
| MakerWorld / Bambu Handy print you deducted by hand | As with HA: click the 🔗🚫 red pause icon on the printer card, and the next start is skipped once. |
| Pause and resume | The job is paused and its timeline moves by the pause. |
| Finish | The job is completed. |
| Failure or cancel while printing | The unprinted part of the filament is returned, in proportion to the last progress the agent saw. |
| Cancel during preparation | Nothing is booked. |
| A Bambu Lab spool goes into an AMS slot | Only original Bambu Lab spools carry an RFID tag the AMS can read. The chip names the product and colour, and 3D Print Manager decides without asking: a spool of the same product you mounted in that slot by hand, or a free one from your inventory (the fullest), gets the tag; otherwise a new spool is added with the barcode, price and storage of your last spool of that product. For a product with no price in your inventory, a window on any tab of the app asks once for its price and storage; the answer goes to every waiting spool of that product and size (Later leaves an Enter price badge in the inventory). Only a spool 3D Print Manager cannot place by itself (a product or colour Bambu’s colour list does not know yet) is asked on the Printers tab. After that the spool is mounted in that slot by itself (taken off the slot or printer it was on) and taken off when the slot is empty. Spools of other brands have no tag: the agent never mounts or removes them, so mount them by hand or with a barcode scan. A mounted Bambu spool shows a on its slot. |
When the computer is off
- A print that starts and finishes while the agent is not running is not booked. Deduct it by hand in Update Weight.
- If the agent starts while a print is running, it picks that print up then. If a print it had already booked finished while the agent was off, the finish is sent when the agent is back.
- If a printer goes quiet during a print (power or network loss), Activity says so and nothing is booked, because the print may still resume.
- If a print the agent had booked ended without the agent seeing how (the printer is idle again, or a different print is running), the agent reads the outcome from the Bambu cloud: finished, or stopped at the last progress it saw. When the cloud cannot tell, the job is closed as stopped at that progress and Activity asks you to check it in 3DPM.
Printers on the local network (Prusa, Klipper)
Besides Bambu Lab, the agent reads printers directly on your local network, without a cloud: PrusaLink (Prusa MK4, MK4S, XL, CORE One, MINI; MK3S with a Raspberry Pi) and Moonraker (Klipper printers such as Voron, RatRig, Sovol, Qidi). The computer running the agent must be on the same network as the printers. Each printer is added by hand, by its IP address.
Adding a printer
- Tab Connections, card Printers on the local network (Prusa, Klipper): click + Add printer.
- Choose the Type, PrusaLink (Prusa) or Moonraker (Klipper), and enter the Printer IP address.
- Password or API key. PrusaLink: on the printer, Settings → Network → PrusaLink, the password for the user maker; an MK3S with a Raspberry Pi uses the API key from PrusaLink. Moonraker: leave it empty if Moonraker trusts this computer (
trusted_clients), otherwise the API key from Mainsail or Fluidd. - Name is optional; without it the agent uses the printer's own name. Click Add printer. The agent contacts the printer at once, so a wrong address or key is refused right there, with the reason.
- Tab Printers (or Show in Printers): the printer is a row with its address. Choose the 3DPM printer it feeds, as for a Bambu printer.
Editing a printer
In the Printers tab each network printer has an Edit button. There you change the address (for example when the router gave the printer a new one), the password or key, or the name; the type stays as it is. Leave the password field empty to keep the saved password or key. If a different printer answers at the new address, the change is refused, so that printer cannot take over this one's link and history; add it as a new printer instead. The other way round, + Add printer refuses a printer that answers with the identity of one already added (This printer answers with the same identity as a printer already added…): if it is the same printer at a new address, use Edit on it. In the same window, Remove deletes the printer from the agent together with its link to a 3DPM printer, so it goes back to Home Assistant if you use it.
What the agent books for a network printer
| On the printer | In 3DPM |
|---|---|
| A print starts | The agent reads each printer about every 5 seconds and books the job once the printer reports progress above 0 %, not while it still heats or levels the bed. The grams come from the slicer's data in the print file and are deducted at the start, all from the spool on slot 0 of the linked 3DPM printer (for now also on a printer with several tools, such as the XL). |
| The file has no grams | If the file carries no grams, or the printer does not give them within 2 minutes, the job is booked without deducting filament and Activity says Print started without grams from the file…. Deduct it by hand in Update Weight. |
| Pause and resume | The job is paused and resumed. A Prusa in the ATTENTION state during a print counts as paused. |
| Finish | The job is completed. Nothing more is deducted: the grams went at the start. |
| Stop or error while printing | The unprinted part of the filament is returned, in proportion to the last progress the agent saw. |
| Cancel before the progress passes 0 % | Nothing is booked. |
| The printer is idle again without a finish or a stop the agent saw | The agent closes the job before it books anything new. Moonraker: it reads the outcome from the printer's job history, completed is booked as finished, anything else as stopped at the last progress it saw. PrusaLink keeps no history, so the job is closed as stopped at the highest progress the agent saw. The unprinted part of the filament is returned as for any stop. Activity says A print ended without the agent seeing how… and then how it was closed; when the outcome could not be read it adds Check it in 3DPM. |
“Not answering”
- 1 not answering on the Connections card (with the names of up to three printers), next to Connected at the top of the window (while the Bambu cloud is still connecting the top shows only Connecting…; without a Bambu sign-in the count is always there), and offline in the Printers table mean the agent could not read that printer on its last try: it is switched off, off the network, has a new address, or refuses the password or key.
- While a printer does not answer, nothing is booked for it. A print is not marked as failed because of that.
- After 15 minutes Activity says A network printer has not answered for 15 minutes, and if a printer linked to a 3DPM printer went quiet while printing or paused, the agent also shows a notification. A printer switched off while idle (a farm at night) shows only as offline in the window, with no notification.
- When the printer answers again, the agent goes on from what the printer then reports: a print still running is followed further, a finish or a stop is booked as above, and a printer already idle again books nothing (last row of the table).
- A new IP address: correct it with Edit.
Moving the agent to another computer
You can move the agent, for example from a Windows PC to a small Linux server next to the printers. The export puts everything in one encrypted file: settings, the sign-ins, the network printers with their passwords or keys, the state of running prints and events not yet sent to 3DPM. The other computer takes over the same device, so the printer links in 3DPM stay.
- Tab 3DPM, card Move the agent to another computer: click Export and import, then Export settings, and confirm.
- The file (
.3dpm) is saved in your Downloads folder; Show file shows where. The Import code is shown only now: write it down, the file cannot be imported without it. - Copy the file to the other computer. In the agent window there: tab 3DPM → Export and import, choose the Export file (.3dpm), enter the Code shown at export and click Import. If that agent is already set up, the import is refused and the box Replace this agent's settings (sign-ins and printers) appears: tick it and click Import again. The program restarts.
- On a Linux server without a window:
3dpm-agent import <file>; it asks for the code. If the agent there is already set up (signed in or has printers), add--force. Stop the running agent there first: the import refuses while another agent uses the same folder. Afterwards the command prints what it took over, the data directory it wrote to, and start it: 3dpm-agent run (or the systemd service, with this --data): a service must start with that same--data, otherwise it starts empty.
- Wrong code, or the file was changed. The code must be the one shown at this export.
- The old computer then says This agent was exported on … and offers Bring the agent back to this computer. Use it only if the agent on the other computer no longer runs. The events that were waiting at the export went into the file and are booked by the computer that imports it; bringing the agent back does not send them again.
- The network printers must be reachable from the new computer (the same network).
Sign-ins and privacy
- Neither the 3DPM nor the Bambu Lab password is stored. The agent keeps its sign-ins, and the passwords or API keys of network printers, in the Windows Credential Manager on your computer (the command-line agent on a Linux server keeps them in files in the agent's folder that only its user can read).
- The Bambu Lab sign-in and the network printers' passwords and keys never reach 3DPM. 3DPM receives only the print events and the list of your printers (name, model, serial number or ID) with the date your Bambu Lab sign-in expires.
- A Bambu Lab sign-in lasts 90 days and Bambu Lab offers no way to extend it. Two weeks before it runs out, the agent and the 3DPM Settings card warn you; sign in to Bambu Lab again in the agent.
- To disconnect a computer, click Sign out under 3DPM account in the agent, or Remove device in 3DPM Settings. Its printers go back to Home Assistant.
Window and tray
- Closing the window keeps the agent running in the tray, next to the clock. Click the icon to open it again; right-click it and choose Quit to stop the agent.
- The language (HR / EN / DE) is chosen at the top right of the window; Guide next to it opens this chapter.
- Under every tab: Start with the computer, the version and whether everything has been sent to 3DPM.
Troubleshooting
| The agent says | What to do |
|---|---|
| 3DPM Agent needs an active PRO or FARM plan. | Start or renew a plan in 3DPM under Account & Plans, then sign in again. |
| Only the account owner or a farm manager can connect the agent. | Sign in with the farm owner's or a manager's account. |
| Wrong e-mail or password. | Use the same details as on 3dprintmanager.eu (or, in the Bambu Lab section, as in Bambu Handy). |
| This Bambu account uses two-factor sign-in (2FA)… | Not supported yet. Use Home Assistant for this account for now. |
| Print started without roll data… | Bambu Lab did not report the grams per roll within 15 minutes, so no filament was deducted for this print. Deduct it by hand in Update Weight. |
| 3DPM unreachable, retrying… | Nothing. The events wait on your computer and are sent in order once 3DPM answers. |
| Bambu sign-in has expired. | Sign in to Bambu Lab again in the agent. |
| Your PRO/FARM plan has expired: new prints are not booked… | Renew the plan in 3DPM under Account & Plans. Booking resumes by itself and the printer links stay. A print started before the plan ran out still closes normally. |
| A printer is missing from the list | Click Refresh. The printer must be on the Bambu Lab account you signed in with. |
| The printer refused the sign-in… | Check the password or API key, and that the chosen type (PrusaLink or Moonraker) is right for that printer. |
| No printer answers at that address… | Check the IP address, and that the printer is on and on the same network as this computer. |
| A different printer answers at that address… | The address now belongs to another printer. Add it with + Add printer, and find the right address for the printer you edited. |
Agent on a Linux server
For a farm that wants the agent to run without a Windows computer, for example on a small PC next to the printers that is always on. On Linux the agent has no window: it is one program, 3dpm-agent, run from the command line and as a service. The usual way: set the agent up on Windows (sign-ins, printers, links), export it and import it on the server (see Moving the agent to another computer above). Windows with the Microsoft Store remains the main way to use the agent.
The program
- One file,
3dpm-agent, for 64-bit Linux (x86_64); nothing else to install. Put it in a folder of its own, for example/home/<user>/3dpm-agent/, and make it executable (chmod +x 3dpm-agent). - A new version: stop the service, replace the file, start the service. Settings, sign-ins and the state of running prints stay in the data folder.
Import on the server
- Copy the export file (
.3dpm) to the server. - Run
3dpm-agent --data /home/<user>/3dpm-agent/data import <file>and enter the code shown at export. The agent then tells you what it took over: the 3DPM and Bambu Lab accounts, the number of network printers and the events still waiting for 3DPM. - If the agent in that folder is already set up (signed in or with printers), the import refuses;
--forcereplaces all of it. The import also refuses while a running agent uses the same folder: stop the service first. - Start the service (below). The computer you exported from stopped at the export; do not bring the agent back there while the server runs it.
Running as a service
3dpm-agent run reads the printers and books prints for as long as it runs. To have it start by itself after a restart or a power cut, run it as a systemd service. Example of a user service, file ~/.config/systemd/user/3dpm-agent.service:
[Unit] Description=3DPM Agent [Service] ExecStart=/home/<user>/3dpm-agent/3dpm-agent --data /home/<user>/3dpm-agent/data run Restart=always RestartSec=60 MemoryMax=200M [Install] WantedBy=default.target
- Turn it on:
systemctl --user daemon-reload, thensystemctl --user enable --now 3dpm-agent. sudo loginctl enable-linger <user>: without it a user service runs only while that user is signed in; with it the service starts when the server boots.- State:
systemctl --user status 3dpm-agent. Stop and start:systemctl --user stop 3dpm-agent,systemctl --user start 3dpm-agent. - As a system service instead: put the file in
/etc/systemd/system/, addUser=<user>under[Service], addWants=network-online.targetandAfter=network-online.targetunder[Unit], useWantedBy=multi-user.targetandsystemctlwithout--user. - A user service cannot wait for the network, so after a boot the agent may start before it is up. It waits by itself: the journal shows
waiting_networkonce and it connects as soon as the network is there. - If the agent stops unexpectedly,
Restart=alwaysstarts it again after 60 seconds.
dry-run. The running agent keeps its settings in memory, so a change made beside it may go unseen or be written over. Each of these commands refuses by itself while the agent runs. Give every command the same --data as the service, otherwise it works on a different, empty agent.Commands
Every command takes --data <folder>; 3dpm-agent --help and 3dpm-agent <command> --help list the options.
| Command | What it does |
|---|---|
status | Sign-ins, printers and events waiting for 3DPM. |
login3dpm | Sign in to 3DPM. The e-mail and password are asked in the terminal; the password is not shown and not stored. The sign-in stays until the device is removed; with --no-remember it lasts 24 hours. --device-name sets the name shown in 3DPM (default: the server's host name). |
logout3dpm | Removes this device in 3DPM; its printers go back to Home Assistant. |
login-bambu | Sign in to Bambu Lab: e-mail, password, then the code Bambu Lab sends by e-mail. Also the way to sign in again after 90 days. Accounts with 2FA are not supported yet. |
logout-bambu | Forgets the Bambu Lab sign-in on this agent. |
printers | The 3DPM printers and which printer of the agent feeds which. |
link <serial> <printer_id> | Links a printer of the agent (Bambu serial number, or prusa:… / klipper:… from lan-printers) to a 3DPM printer; none instead of the id unlinks it. |
add-printer <prusalink|moonraker> <address> | Adds a printer on the local network by IP address or host name, optionally with :port (Moonraker uses 7125 by default). The password or API key is asked (empty = none) or read from a file with --key-file; --user is the PrusaLink user (default maker), --name the name to show. The agent checks that the printer answers before saving it. |
edit-printer <serial> | Changes a network printer's address (--host), password or key (--key-file) or name (--name); what you leave out stays. The link to 3DPM stays. |
remove-printer <serial> | Forgets a network printer and unlinks it in 3DPM. |
lan-printers | The network printers of this agent, with their serials and addresses. |
export <file> | Writes the encrypted export file and shows the import code once. This agent stops reading and booking. Asks for confirmation (type yes) unless --yes is given. |
import <file> | Takes over an exported agent (asks for the code); --force replaces an agent already set up here. |
run | Runs the agent in the foreground and prints what happens; Ctrl+C stops it. This is what the service runs. |
log [N] | The last N records of the activity (default 30). |
dry-run on / dry-run off | For trying out only: the agent decides everything but sends nothing to 3DPM. Prints in that time are not booked, not even later. Turn it off with dry-run off. |
Data and logs
- Everything is in the folder given by
--data(without it:~/.local/share/3dpm-agent): settings and network printers (config.json), the state of running prints (state.json,lan_state.json), events waiting for 3DPM, sent in order (outbox.json), the activity thatlogshows (events.jsonl, moved toevents.1.jsonlat 2 MB) and events 3DPM refused, set aside for a person to look at (outbox_failed.jsonl). - The sign-ins and the passwords or keys of network printers are in
secrets/inside that folder, one file each, readable only by the agent's user (mode 0600). They never go to 3DPM. - What
runprints goes to the systemd journal, which rotates it by itself:journalctl --user -u 3dpm-agent -f(for a system service without--user). - Do not copy the data folder to another computer: use export and import, which stop the old place. Two agents with the same sign-in get the Bambu account blocked.
What is different from Windows
- No window, no tray and no notifications. What the window would show is in
3dpm-agent logand the journal (journalctl). - The e-mails come from 3DPM, not from the agent, so they arrive the same: when the agent has been quiet for 30 minutes while a linked printer has a job running (and again when it is back), when it has been quiet for a day (at most once every 7 days), and 14 days and 3 days before the Bambu Lab sign-in expires and when it has expired. They go to the account owner, for an agent linked to at least one 3DPM printer. With Telegram linked they arrive there too, along with a printer that stops responding mid-print (7c).
- No automatic updates (see above).
- The server must run whenever you print. For Bambu Lab printers it needs the internet; for network printers it must be on the same network as the printers.
7c. Notifications (Telegram) PRO
3DPM tells you when something happens to your prints: by e-mail as before, and on Telegram, to your own chat or to a group of the farm. Settings → Notifications. PRO and FARM; the account owner and managers set it up, operators and viewers do not see it.
Linking Telegram
- Link your Telegram: 3DPM shows Open Telegram. Open it on a device with Telegram and press Start; the bot answers Linked to the account …. The link works once, for 10 minutes.
- Link a group: the same link lets you pick a group and adds the bot to it. Everyone in the group sees the notifications.
- A manager links their own chat too; it receives while they are a manager. The list shows every linked chat and who linked it. Remove unlinks a chat; so does
/stopin the chat (in a group, from a group admin), blocking the bot or removing it from the group.
What 3DPM tells you
| Event | By default |
|---|---|
| A printer stops responding in the middle of a print (after 15 minutes), when it is back, and a reminder after 2 hours. The job stays open and is closed when the printer reports again. | Telegram |
| 3DPM Agent is not reporting (30 minutes while printing, or a day) and when it is back | E-mail and Telegram |
| 3DPM Agent on a Linux server restarted (a power cut, a restart of the server); a Windows PC switched on is not reported | Telegram |
| Print paused (filament ran out or stuck, colour change) | Telegram |
| The spool will not be enough: the print plans more grams than the spool in that slot has | Telegram |
| Bambu Lab sign-in in the agent expires (14 and 3 days before, and on the day) | E-mail and Telegram |
| Your plan expires in 3 days (the subscription reminder e-mail about it is separate, unless you unsubscribed from reminders) | Telegram |
| Print finished, print stopped or cancelled | Telegram |
| A new Bambu spool is waiting for you to say which spool it is | Telegram |
Every row has its own e-mail and Telegram switch. Finished, stopped and paused prints and a short spool can also be switched off per printer (Per printer, folded; its head says how many printers have something off). One row per printer; the tick in the All printers row switches that event for every printer. Telegram messages are in the language of the account and name the printer and the job, with a link to 3DPM. Without a linked Telegram nothing changes: the e-mails come as before.
Working hours
With Notifications follow working hours ticked, Telegram notifications outside working hours arrive without sound; nothing is held back. FARM only: on PRO the box is locked. While it is ticked, the card shows the working hours of Settings → Preferences read-only; they are changed there. The hours are counted in the account's time zone (Settings → Preferences → Time zone, taken from the browser at sign-up).
8. Cost Calculator
- Click the Calculator icon in the left rail — it opens from any tab and is not tied to one spool.
- Basic (Free): Enter weight (g), print time, and power draw (W) to get material + electricity cost.
- G-code auto-fill PRO: Drag & drop a G-code file — weight and print time are filled in automatically.
- Labor cost PRO: Enter your hourly rate to include labor in the price.
- Profit margin PRO: Set a margin percentage to get a final selling price recommendation.
- The calculator shows: material cost + electricity + labor + margin = total price.
9. Analytics & Usage Charts
Consumption Trend
- The usage chart at the bottom of the dashboard shows total filament weight deducted from spools over time.
- Includes both job-based deductions and manual weight updates. Weight corrections (checkbox in Set mode) are excluded.
- Free: Monthly overview.
- Week / Month / 3 months PRO: Click the tabs above the chart to switch periods — this is the shared range filter every Analytics card uses. (Week and 3 months are PRO; Month is available on all plans. There is no Day, Year or custom date range.)
- Donut chart: Shows the breakdown by color and material type. PRO users can filter by specific material.
9b. Print Quality / Failure Cost FARM Core
A combined card with two tabs. The shared range filter (Week / Month / 3 months) and the printer filter apply to both tabs. The Month button covers the last 30 days.
Print Quality tab
- A grouped bar chart showing Completed vs. Failed print jobs over time.
- Count mode: Number of successful and failed jobs per time period.
- Weight mode: Filament consumed in successful vs. failed prints (grams).
- Time mode: Print time split between completed and failed jobs — shows how much machine time is lost to failures.
- Quality Rate: Completed / total × 100%. Green ≥90%, yellow ≥70%, red below 70%.
- Filament Yield (Weight mode): weight_completed / (weight_completed + weight_failed) × 100%.
Failure Cost tab FARM Core owner
- Shows the financial impact of failed prints: money lost, filament wasted, and machine time lost.
- Money Lost: Calculated as wasted grams × average filament price per kg from your inventory. Requires at least one spool with a price set.
- For failed prints, only the proportional filament weight is counted — based on actual print time elapsed vs. the planned total time, not the full G-code estimate. An info icon (ⓘ) on the card header shows a tooltip explaining this on tap.
- Failure Reasons breakdown: Bar chart showing which failure categories (Adhesion, Spaghetti, Filament Runout, Hardware, Other) caused the most failures — shown when failure reasons have been recorded.
- When marking a job as failed on the printer widget, you can optionally select a failure reason from the dropdown (operators and above).
9c. Financial Overview FARM Core
- Inventory Value: Current stock weight × purchase price per kg (where set) for each spool, summed across all spools. Archived spools are excluded.
- Filament Cost: Net filament consumption cost in the selected period — full deductions minus any refunds for failed prints. Previously this could overcount failed print weight; this is now fixed. An info icon (ⓘ) on the card header shows a tooltip on tap explaining the data source.
- Print Hours: Sum of all completed job durations in the selected period, shown in hours — failed prints are not counted here.
- Cost / Hour: Filament cost divided by total print hours — gives a rough operating cost rate for the farm.
- Printer Utilization: For each printer, shows what percentage of total available time in the period was spent actively printing completed jobs. Color-coded: green ≥50%, amber ≥20%, gray below 20%.
- Period filter: Switch between Week / Month / 3 months — the Month button covers the last 30 days.
9d. Critical Today Strip FARM Core owner
- A row of colored badges at the top of the dashboard, showing Idle Printers, Overdue Jobs and High Failure Rate. Critical Stock and reorder warnings are separate elements — the low-stock banner above it and the "Needs reorder" KPI card.
- Idle Printers: Printers with no active or queued jobs right now.
- Overdue Jobs: Print jobs still in printing status more than 2 hours past their calculated end time.
- Critical Stock: Filament groups below your alarm threshold (or below 100g if no alarm is set).
- High Failure Rate: Printers with >25% failure rate in the last 30 days (minimum 5 jobs).
- Needs reorder (KPI card, not part of this strip): counts the filaments Smart Reorder has flagged as CRITICAL or SOON. Click it to jump to the low-stock items.
- The strip is hidden automatically when all counts are zero — it only appears when there is something that needs attention.
9e. Smart Reorder FARM Core owner
- Predicts which filament groups need reordering based on your actual burn rate — not a simple average. Only actively used filaments appear.
- Stock column shows effective remaining stock: total weight minus filament reserved by queued jobs and a small buffer (20 g) per currently mounted spool. This may differ from the weight shown in the filament table — hover the column header for a reminder.
- avg/day column shows your real burn rate in grams per day.
- The badge on each row shows days remaining and the alert level:
| Level | Badge colour | Meaning |
|---|---|---|
| CRITICAL | 🔴 Red | Order immediately — stock will run out before your order arrives |
| SOON | 🟡 Yellow | Order within the next few days |
| WATCH | 🔵 Blue | Keep an eye on this — still time, but stock is low |
- The alert thresholds are calculated using your configured filament shipping time (set in Settings → Preferences). The longer your delivery lead time, the earlier the warnings fire.
- Each row includes a direct Reorder button that uses the same partner link lookup as the standard reorder button in the filament table.
- On mobile: the avg/day column is hidden. The badge shows the status on two lines (days + level).
"Needs reorder" KPI card FARM Core
- The Needs reorder card in the KPI row above the filament list counts the materials that are low on stock or flagged by Smart Reorder.
- Click the card to jump straight to the low-stock items in the filament list.
Alert cooldown
- After a farm stops printing, CRITICAL and SOON alerts automatically downgrade to WATCH (or disappear) once no filament has been consumed in the last 12 hours and no jobs are queued or currently printing for that filament group.
- This prevents stale red alerts from persisting hours after the last print. When new jobs start or filament is consumed again, full alert levels return immediately.
Auto-refresh
- Adding a job or confirming a weight update reloads the page, and Smart Reorder is recalculated with it. Marking a job as failed does not refresh the card — reopen the Inventory tab to see the updated forecast.
Open work orders need
Under the forecast, Open work orders need adds up the filament that confirmed work orders will still use, against your stock: for example PETG Black: 3.20 kg need · 2.10 kg in stock · 1.10 kg short · 2 work orders. It also counts work orders nobody has scheduled yet, so you can order material before production starts.
- A work order with plates counts every run still to print (planned, scheduled, printing, or failed and offered again) times the grams per slot from its G-code. Without plates it counts the pieces still to make times the weight per piece.
- Drafts, completed and cancelled work orders are not counted. A run that is printing counts in full.
- Colours are matched by their colour value to the nearest stock colour of the same type, so two slightly different blacks from two G-code files count as one.
- Types are matched by family: a G-code that says PLA is covered by every PLA spool (PLA Matte, PLA-Matte, PLA+, Silk PLA, PLA Wood…). A filled type such as PLA-CF or PA6-GF counts only as itself. Spools whose name holds no type (Silk, Bamboo) are not counted; a row that is not covered mentions them.
- Work orders without weight, type or colour, and older multi-material plates whose slots carry no type, are shown as a count instead of being guessed.
9f. "What changed?" Activity Digest FARM Core owner
- Available in Settings → Team tab for farm owners. Shows a 24-hour summary of all activity on the farm.
- Summarizes: failed print jobs (with printer name), spools added, spools deleted, weight updates, mount and unmount actions, jobs created, jobs deleted, new team members added, and reorder clicks.
- Designed for farm owners who need a quick daily briefing without reading through the full activity log.
10. QR Label Printing
- Click the ⧉ Print labels button in the toolbar above the filament list to enter Bulk Print selection mode.
- Tap/click the spools you want to label — a checkmark appears on each selected row.
- Click Print Selected to generate a single PDF with all QR labels.
- Each label contains the unique QR code for that physical spool. Scanning it later opens that exact spool's management window instantly.
- You can also print or download a single QR via the three-dot menu → Print label on any spool.
11. Storage Locations & Drying Tracker PRO
Storage Locations
- Go to Settings → Storage to create locations (e.g. "Desk", "Dry Box A", "Shelf 2").
- Each location has a Protection Factor that multiplies the safe storage window for each material:
| Location Type | Factor | Example (PETG safe window = 30 days) |
|---|---|---|
| Open shelf | ×1 | 30 days |
| Sealed box with silica gel | ×5 | 150 days |
| Active dryer / AMS | ×50 | 1500 days |
Drying Tracker
- When a spool needs drying, its row shows a drying icon. Click it, then click again within 3 seconds to confirm — the drying date is logged with no page reload.
- The system calculates the next due date automatically based on material type and storage protection factor.
- Custom drying profiles PRO: Settings → Drying — set the safe number of days before drying is due, per material type.
12. Stock Alarms PRO
- Go to Settings → Alarms to create a threshold for a specific Brand + Type + Color combination.
- Set the minimum weight (g). When your total stock of that material falls below the threshold, a red warning appears on the dashboard.
- Example: "Warn me when I have less than 500g of Bambu PLA Basic Black."
- You can set multiple alarms for different materials.
Reorder Button
- When a filament row is critically low, a Reorder button automatically appears on that row.
- All tiers: if no custom alarm is set, the button triggers at the default 100g threshold.
- PRO / FARM: the button appears when your custom alarm threshold is reached.
- Clicking the button opens the supplier's page directly — either the exact product page (if configured) or the partner shop homepage.
- If multiple partner shops are available, a selection dialog appears so you can choose where to order from.
13. CSV Import / Export
Export (every plan)
- Settings → Import/Export → Export CSV.
- Downloads all your spools as a spreadsheet. Columns, in this order: Brand, Type, Color, Weight (g), Price (€), SKU, Storage Location.
- Large numeric SKU barcodes are preserved exactly (no scientific notation in Excel).
Import PRO
- Prepare a CSV with columns: Brand, Type, Color, Weight (required), then Price, SKU, Storage — the columns are read by position, so that exact order matters.
- Upload via Settings → Import/Export → Import CSV.
- Check "Auto-print QR after import" to automatically queue QR label printing for all newly imported spools.
- Rows without Brand, Type, Color or Weight are skipped silently — you get the number of spools imported, not a list of the rows that failed. An unknown storage name is created automatically, and a blank SKU gets an auto-generated barcode.
14. Advanced Features
Public Stock Page
- The public page is off until you turn it on: Inventory → Public Link creates a private link you can copy, replace with a new one, or switch off again at any moment. Share it so customers or colleagues can see your filament colors without logging in.
- The public page shows the material colors you have in stock, grouped by Brand+Type+Color with color swatches — no quantities, prices or personal data are shown.
Split Spools
- If you have multiple rolls merged into one entry (e.g. 3000g), use Move → partial amount to split them into individual 1000g spools with unique QR codes.
- Usage statistics are preserved on the original entry. The split creates new independent spools.
Promo Codes
- Settings → Subscription → enter your code in the Promo Code field. Activates a free PRO trial without a credit card.
- A code cannot be used again once you have activated it — a different code can still be applied afterwards.
API Key
- Settings → API & Integrations → Generate API Key. Use this key in your Home Assistant configuration to authorize the integration.
- You can regenerate the key at any time (the old key stops working immediately).
15. Account & Plans
Four tiers: FREE · PRO · FARM Core (€19.99/mo) · FARM Connect (€39.99/mo). FARM Connect is FARM Core plus the Integrations module (inbound webshop + outbound quotes/invoices).
| Feature | Free | PRO | FARM Core | FARM Connect |
|---|---|---|---|---|
| Filament inventory | ✅ up to 50 spools, 10 material types | ✅ unlimited | ✅ unlimited | ✅ unlimited |
| Barcode scanning | ✅ | ✅ | ✅ | ✅ |
| Storage locations | — | ✅ | ✅ | ✅ |
| Custom drying profiles | — | ✅ | ✅ | ✅ |
| Stock alarms | — | ✅ | ✅ | ✅ |
| Archive & restore spools | — | ✅ | ✅ | ✅ |
| CSV import/export | export | ✅ | ✅ | ✅ |
| G-code analysis & drag-drop | — | ✅ | ✅ | ✅ |
| Usage charts (day/week/custom) | — | ✅ | ✅ | ✅ |
| Bulk QR label printing | — | ✅ | ✅ | ✅ |
| Printer & AMS management | — | ✅ up to 5 printers, 1 AMS each | ✅ 6–20 printers, up to 4 AMS each | ✅ 6–20 printers, up to 4 AMS each |
| Job Scheduler & Farm Timeline | — | ✅ | ✅ | ✅ |
| Home Assistant integration | — | ✅ | ✅ | ✅ |
| 3DPM Agent (Windows): Bambu Lab, Prusa, Klipper | — | ✅ | ✅ | ✅ |
| Copies multiplier | — | — | ✅ | ✅ |
| Reserve Spool & Filament Debt | — | — | ✅ | ✅ |
| Maintenance banner & modal | — | — | ✅ | ✅ |
| Print Quality chart + Filament Yield | — | — | ✅ | ✅ |
| Reorder button (low stock) | ✅ auto 100g | ✅ | ✅ | ✅ |
| Bulk print management | — | — | ✅ | ✅ |
| Manual Orders & Work Orders | — | — | ✅ | ✅ |
| Team Management (multi-user) | — | — | ✅ | ✅ |
| Outbound: Minimax (fiscal quote + invoice) | — | — | — | ✅ |
| Outbound: Generic PDF (quote + EU bank QR) | — | — | — | ✅ |
| Inbound: PrestaShop, WooCommerce, Shopify (orders → Work Orders) | — | — | — | ✅ |
| Print Specs middle layer (auto weight/time learning) | — | — | — | ✅ |
| Issue Quote / Issue Invoice from Work Order | — | — | — | ✅ |
- FARM Core vs FARM Connect: if you only need internal production management (scheduler, analytics, manual Work Orders), Core is enough. Pick Connect when you want orders to flow into 3DPM from your webshop or quotes/invoices to flow out to your accounting / as PDF.
- Running a larger farm? Both FARM tiers are designed for 6–20 printers. Need more? Contact us for a custom plan.
- Customer Portal: Settings → Subscription Management → Customer Portal. Update payment method, view invoices, or cancel anytime in the Stripe Customer Portal (web app only, not in the Android app). Older PayPal subscriptions are cancelled in PayPal, following the instructions the same button opens.
- Payment methods: New subscriptions are paid by credit/debit card via Stripe (Visa, Mastercard, Apple Pay, Google Pay).
- Trial: every paid plan (PRO, FARM Core, FARM Connect) starts with 14 free days. The card is entered when ordering and the first month is charged when the trial ends, unless you cancel before that. A subscription is ordered for an existing account, with the email of that account.
- Invoices: Sent automatically by email after each successful charge, with the PDF attached whenever invoice generation succeeds.
- Delete Account: Settings → Danger Zone → Delete my account. An active Stripe subscription is cancelled as part of the deletion; an older PayPal subscription blocks deletion until its paid period ends; cancel it in PayPal so it does not renew. Account data is then deleted immediately, including PDF quotes and invoices, and disappears from backups within 14 days. A member of someone else's team asks for deletion at info@ddtech.hr.
- Withdraw from contract (14 days): Settings → Subscription Management → Withdraw from contract. Stripe subscribers can withdraw within 14 days of the subscription start date; the subscription is cancelled immediately, access ends, and a confirmation email is sent. The option is shown in the web app only (not in the Android app) and disappears once the 14 days have passed, once the subscription has been cancelled, or once a request has been filed. If the first payment has already been charged, it is refunded within 14 days.
16. Apps & Support
Questions or issues? Contact us:
hello@3dprintmanager.eu
17. Team Management FARM Core
FARM plan allows you to invite multiple users to your farm. Each member gets their own login and operates within the permissions defined by their role.
Roles & Permissions
| Permission | Owner | Manager | Operator | Viewer |
|---|---|---|---|---|
| View filament inventory | ✅ | ✅ | ✅ | ✅ |
| Add / edit / delete filaments | ✅ | ✅ | ✅ | — |
| Update filament weight | ✅ | ✅ | ✅ | — |
| Mount / unmount spools | ✅ | ✅ | ✅ | — |
| Scanner (barcode) | ✅ | ✅ | ✅ | — |
| Calculator | ✅ | ✅ | ✅ | — |
| Create print jobs | ✅ | ✅ | ✅ | — |
| Farm Timeline / Job Queue | ✅ | ✅ | ✅ | — |
| Bulk Print | ✅ | ✅ | ✅ | — |
| Delete / cancel print jobs | ✅ | ✅ | — | — |
| Add / edit / delete printers | ✅ | ✅ | — | — |
| Reset maintenance counter | ✅ | ✅ | — | — |
| View archived spools | ✅ | ✅ | — | — |
| Settings (storage, alarms, import) | ✅ | ✅ | — | — |
| Charts & analytics | ✅ | — | — | — |
| Subscription & billing | ✅ | — | — | — |
| Manage team members | ✅ | — | — | — |
Inviting a Team Member
Managing Members
- Change role: Use the role dropdown next to the member in the Team list.
- Suspend: Temporarily blocks access without deleting the member.
- Remove: Permanently removes access. The member's own account is not deleted.
Activity Log
Below the member list, the Activity Log shows the last 100 actions performed by your team. Entries are kept for 90 days (maximum 500 per farm).
- Action icons — hover over any icon to see a description of what was done (e.g. "Mounted spool", "Job created", "Printer deleted").
- Mount / unmount entries — show the spool name and the exact printer and slot, e.g. Prusament PLA Red @ Ender 3 #1. The printer name is highlighted in blue.
- Filter by date — narrow the log to Today, Last 7 days, or Last 30 days.
- Filter by action — show only a specific type of activity (e.g. only weight updates).
- Filter by user — show actions by a specific team member.
- Filter by printer — show only mount/unmount events for a specific printer. This filter appears automatically when the log contains printer-related entries.
17b. Orders & Work Orders FARM Core
The Orders module turns a price calculation into a production workflow. Save each calculation as an Order with a customer attached, schedule it onto your printers, and track the status from request to delivered. Click Orders in the left rail to open the page.
Customers Tab
- Switch to Customers in the page head (the Orders | Customers switch) to maintain your customer list. Each entry stores name, email, company, VAT number, and country.
- Click + New Customer to add one manually, or create one on-the-fly when you save a new order from the calculator.
- A customer with orders attached cannot be deleted at all — cancelling or completing those orders does not change that, because the order history stays linked to the customer.
The Orders page
- Navigation: the left rail is the same as on the dashboard (Filaments, Printers, Calculator, Analytics, Orders, Settings). The page head shows the title Orders and, on the right, the Orders | Customers switch, then Farm Timeline, Export CSV and + New Order. On a phone these three show as icons only.
- Views: tabs with counts above the list. Open (the default: everything not completed or cancelled), Draft (shown only when there is a draft), Pending payment, Ready, In production (scheduled and printing), Completed and Cancelled. The counts follow the filters.
- Filters: search (customer, company, the shop's order number, model, WO number, SKU and the buyer's personalisation text), Source (Manual / Shopify / WooCommerce / PrestaShop) and Customer.
- Sort: Newest, Oldest, By due date (orders without a due date come last) or By amount.
- Layout: the List | Board switch in the toolbar. Your browser remembers the choice; on a phone the page starts on the list.
- The page address keeps the view, filters and sort, so a reload or a shared link shows the same list.
Creating an Order
List
The list is a table with one row per order. On a phone the same rows show as cards.
- Order: a round source badge (the shop's logo in the shop's colour, or a pen for an order you made by hand), the shop's order number (for example Shopify
#1042) and the date the order was created. - Customer: name, company or country, and the Missing print data flag when a work order still has no print data.
- Production: a bar (green: done, cyan: printing, purple: scheduled) with a line such as 3/5 pcs done · 2 work orders.
- Payment: Paid when you confirmed the payment (Confirm payment) or the shop reported it; Unpaid while the order is Pending payment; — when nothing is known (for example a manual order on FARM Core that went from Draft straight to scheduled).
- Phase, Due (see Due date below) and Amount (items plus shipping; cancelled work orders are not counted).
- ⋯ menu at the end of each row: Confirm payment (when the order is Pending payment), Issue Quote / Issue Invoice (orders made in 3DPM only; for a shop order a greyed line says Quote and invoice are issued by the shop), Export CSV, then Cancel Order and Delete Order. Cancel, Delete and Confirm payment ask for a second click on the same item before they act.
- Deleting an order: possible only when the order is Cancelled, or when it is a Draft made by hand with no quote or invoice issued. Otherwise the menu shows a greyed Delete: cancel it first, and the server refuses with Cancel the order first, then delete it. A draft with no documents issued can be deleted right away.
- Bulk actions (Owner / Manager): tick rows and a bar appears with Confirm payment (N) for the ticked unpaid orders (click a second time to confirm), Export selected (CSV) and Clear selection.
Board
- Switch the toolbar to Board to see the orders in columns by phase: Draft (only when there is one), Pending payment, Ready, Scheduled, In production and Completed (last 30 days). Each column has its own colour. Cancelled orders are not on the board.
- An order with something printing is in In production; an order that is only scheduled is in Scheduled.
- Each card shows the source badge, customer, items, personalisation, the production bar, payment, due date and amount.
- Drag and drop works for one move only: Pending payment → Ready, which is Confirm payment. When you drop the card, a question Confirm payment for …? appears with Confirm payment and Cancel; only Confirm payment confirms it.
- Scheduled, In production and Completed are set by scheduling and printing, never by dragging. Those columns say so.
Order detail
- Click a row in the list or a card on the board to open the order. On a wide screen (1280 px and up) it slides in as a panel over the right side of the list: ↑ / ↓ move to the previous or next order, Esc or a click beside the panel closes it, and Open as page opens it as a full page. On a narrower screen it always opens as a page with ← Orders / #number at the top.
- The page address carries
?order=…, so the browser's Back button closes the detail and a link opens that order directly. - Header: source, order number, customer, payment and phase, the due date chip, the main action for the order's state (Confirm payment, Issue Quote or Issue Invoice), + Add model (attaches another WO to the same order, e.g. a second model for the same customer) and the ⋯ menu.
- Work orders: one line per WO with WO number, model, filament type and colour, grams and time, personalisation, plates P1…Pn coloured by their state, and done/quantity.
- Click a work order to open its Work Order window: a header with WO number, model and status plus an ⋯ Actions menu (Edit / Cancel / Export CSV), an Overview card (customer, quantity, unit price, per-piece weight/time estimate and a Calculate price button), and two tabs, Production and Documents. Close it with the ✕.
- Below the work orders: Note and History (see below).
- Side column: Customer (contact details and All orders of this customer (N) →, which filters the list to that customer), Payment (items, shipping, total and the issued documents with their PDF; for a shop order: Quote and invoice are issued by the shop) and Filament for this order (grams needed per type and colour against your stock).
Due date
- A due date is optional. Set it in + New Order (Due date (optional)) or in the order detail by clicking the due date chip: pick a date and click Save, or click Remove due date. Enter saves, Esc cancels.
- Shops do not send a due date, so a shop order has none until you set it.
- In the list, while the order is open, an overdue date shows in red (2 d overdue) and a date within two days in amber (in 1 d, today).
History and notes
- History in the order detail lists what happened to the order, newest first: the order arrived (made by hand or from the shop), payment confirmed (and by whom) or reported by the shop, phase changes, quote or invoice issued, due date set, moved or removed, work order added, internal notes, and the prints of its work orders (started, finished or failed, and on which printer). A queued job that has not started yet is not shown.
- Orders that existed before the history was recorded show what is known: arrival, documents and prints.
- Prints older than 90 days are not kept, and the history says so.
- Internal note: a field at the top of History. Ctrl+Enter saves it, a note can be up to 2000 characters, and it shows who wrote it. Only your team sees it. A team member with the Viewer role does not see the field.
Work Order Status Lifecycle
- Draft — initial state after creation.
- Pending payment: waiting on customer payment. The Payment column shows Unpaid until an Owner or Manager clicks Confirm payment (order detail, ⋯ menu or bulk bar) or drags the card to Ready on the board.
- Ready / Scheduled — payment confirmed or no payment required; ready to be scheduled.
- In production — print jobs are running. The progress bar fills as each copy completes.
- Completed — all copies printed.
- Cancelled — Owner / Manager action. Blocked if any of the WO's print jobs are still active or scheduled — cancel those manually first.
How to Advance the Status
Status changes on the Work Order and its production runs, not on the Order itself.
- Draft → Scheduled: open the WO, go to the Production tab, add your plate(s) and schedule their runs onto printers (see 17c. Production). The WO flips to Scheduled automatically once the first run is queued.
- Pending payment → Ready: click Confirm payment in the order detail, in the order's ⋯ menu or in the bulk bar, or drag the card from Pending payment to Ready on the board (Owner / Manager). Then schedule as above.
- Scheduled → In production: automatic — happens as soon as the first linked print job starts (status
printing). - In production → Completed: automatic — happens when the last run finishes (when
completed_quantityequalsquantity). Failed prints do not advance the status — they just leave the completed counter unchanged. - Any status → Cancelled: ⋯ Actions → Cancel in the WO window (Owner / Manager). Blocked while there are active or queued print jobs linked to the WO — cancel those individually first.
Scheduling production
- Scheduling happens per plate inside the WO's Production tab — there is no single WO-level Schedule button. Add a plate, then schedule its runs (Start now / After current job / Schedule for later, or spread several runs across printers). Full walkthrough in 17c. Production.
- Each run becomes a regular Print Job linked back to the WO via
work_order_id— so the Timeline, Financial Overview, and Print Quality charts all stay in sync. - When a run completes (or fails), the WO's completed quantity updates automatically.
Where actions live
Order-level actions (payment, documents, cancel, delete) are in the order detail header and the order's ⋯ menu; editing and production are in the Work Order window. Which ones show depends on status, your role, and your plan:
| Action | Where | Role | Plan |
|---|---|---|---|
| Edit | WO window ⋯ menu (until Completed) | Owner / Manager / Operator | FARM Core |
| Add plate / Schedule runs | WO window → Production tab | Owner / Manager / Operator | FARM Core |
| Calculate price | WO window → Overview card | Owner / Manager / Operator | FARM Core |
| Cancel | WO window ⋯ menu; blocked while active/queued jobs exist | Owner / Manager | FARM Core |
| Cancel Order | Order ⋯ menu; cancels every unfinished WO in the order at once, same block on active/queued jobs; click twice to confirm | Owner / Manager | FARM Core |
| Delete Order | Order ⋯ menu; permanent, click twice to confirm. Only for a Cancelled order, or a Draft made by hand with no quote or invoice issued; otherwise the item reads Delete: cancel it first | Owner / Manager | FARM Core |
| Export CSV | Order ⋯ menu (one order) · toolbar (the view on screen) · bulk bar (ticked orders) · WO window ⋯ menu (single WO) | Any | FARM Core |
| Confirm Payment | Order ⋯ menu, order detail header, bulk bar, or drag Pending payment → Ready on the board; status = Pending payment | Owner / Manager | FARM Core |
| Add print data | WO window → Production tab (inbound WO without specs) | Owner / Manager / Operator | FARM Connect |
| Issue Quote | Order detail header or order ⋯ menu; orders made in 3DPM only; any status except Cancelled or Completed, no quote yet, outbound provider configured | Owner / Manager | FARM Connect |
| Issue Invoice | Order detail header or order ⋯ menu; orders made in 3DPM only; after a quote is paid; only Minimax | Owner / Manager | FARM Connect |
| Download PDF | Order detail → Payment (documents) · WO window → Documents tab, once issued | Any | FARM Connect |
Where Work Orders come from
- Manual — Orders page toolbar → + New Order (this is the FARM Core path described above).
- Inbound from your webshop FARM Connect: when a customer places an order in your PrestaShop, WooCommerce or Shopify store, 3DPM creates the customer (or matches by email) and one Work Order per shop line item, automatically. An unpaid order arrives as Pending payment (not Draft) and moves on when the shop reports the payment. A toast appears in 3DPM in real time as new orders arrive. See 19.3 Inbound: PrestaShop, 19.4 Inbound: WooCommerce or 19.4a Inbound: Shopify.
Issuing Quote → Invoice FARM Connect
On FARM Connect with an outbound provider configured, you can turn any WO of an order made in 3DPM into a PDF document delivered to the customer:
The full lifecycle is documented in 19.7 Quote-to-Invoice Flow; outbound provider setup is in 19.1 Minimax / 19.2 Generic PDF.
Permissions
- Owner / Manager: full access — create, edit, schedule, cancel, confirm payment, issue quotes/invoices.
- Operator: can create and edit WOs, add plates and schedule production runs, but not cancel or confirm payment.
- Viewer: read-only; does not see the internal note field.
- Cancel, Delete, Confirm Payment, bulk actions and Issue Quote / Invoice require Owner or Manager.
17c. Production: Plates & Runs FARM Core
When a Work Order is for many identical pieces, a single print job is rarely a single piece — one plate on your printer usually makes several at once (e.g. 25 keychains per plate). The Production section breaks a Work Order down into plates (your G-code files) and runs (each physical print of a plate), so the progress bar tracks real production instead of guessing. You will find it in the Production tab of the Work Order window.
- Calculate price — once a plate is added, the WO header shows Calculate price: it takes the per-piece weight & time from your plates and your material/energy/labour/markup rates and suggests a unit price (which you can override). It writes the WO's unit price used on quotes/invoices.
- Schedule one or many — the per-plate Schedule button offers Next run (pick a printer + Start now / After current job / Schedule for later) or Multiple runs — pick how many and tick several printers, and 3DPM spreads them across the chosen printers, queued so nothing overlaps. "Start now" is blocked on a printer that's already printing (busy).
- Farm Timeline — the toolbar button opens a live timeline of every printer so you can see what's running and where there's free time before scheduling.
- Edit / cancel — the pencil on a plate edits units-per-plate (runs adjust automatically); under View runs a ✕ cancels a scheduled/printing run (returns its filament).
- Product recipes (webshop) FARM Connect — when you add a plate to a webshop order, tick Save as recipe. The next order of that same product arrives with its plate(s) and runs already set up — nothing to do but schedule.
1. Add a plate (your G-code)
.gcode / .bgcode file. 3DPM reads its weight, print time, colors and the filament type of each slot right in your browser. For each slot it then offers the colours of that type you have in stock, nearest first: pick the one you will really print with, because the slicer does not always know it. The palette icon on a saved plate changes them later. Multi-color plates show a small colored swatch per slot.2. How runs are generated
3DPM divides the WO quantity by the units per plate and rounds up, because a plate always prints in full:
- 500 pieces ÷ 25 per plate = 20 runs (exact).
- 500 pieces ÷ 30 per plate = 17 runs — the 17th run still prints a full plate (510 pieces), so you see a small overproduction note. The 10 extra simply go to stock; your filament figures stay honest because they are taken from the actual prints, not the plan.
3. Multi-part products (more than one plate)
If a product is made of several parts, add one plate per part — each with its own units-per-plate. A "Base" plate might make 4 per run while a "Lid" plate makes 6. The Work Order is considered complete only when every part has enough finished pieces: progress is gated by the slowest part, so you can never accidentally ship 100 bases with 60 lids.
4. Schedule a run onto a printer
- On a plate row, click the calendar icon to schedule its next run.
- Pick a printer and a start time: Start now, After the current job (queues behind whatever that printer is doing), or Schedule for later (pick a date/time).
- Click Schedule. A regular Print Job appears on your Timeline, and the filament for that plate is deducted up front (if a spool is short, the missing grams are recorded as a debt — exactly like a normal job).
- Repeat to spread runs across several printers — each printer keeps its own independent queue.
5. Track progress
Each plate shows a green progress bar (share of runs completed) plus a count badge per run status: green = completed, blue = printing, amber = scheduled, red = failed, grey = still planned. As runs complete, the Work Order's overall progress bar fills, and the WO moves to In production and then Completed on its own.
6. A run failed — how to retry
A plate is all-or-nothing, so a failed run is retried as a whole. There are two ways:
- From the fail dialog — when you mark a print failed, tick Requeue. A fresh attempt of the same run is queued automatically (and the queue behind it ripples to make room). Unused filament is refunded proportionally to how far the print got.
- From the Production section — the schedule button also offers failed runs, so you can simply schedule it again on any printer.
Once any attempt of a run succeeds, that run counts as done — earlier failed attempts don't subtract from your progress.
7. Changing the quantity later
- Increase the WO quantity → extra planned runs are added.
- Decrease it → only runs that haven't started yet are removed; anything printing or already finished is kept untouched.
8. Removing a plate
Use the trash icon on a plate row. Deletion is blocked if the plate already has runs that are printing or completed — those represent real production and are protected.
Permissions
- Owner / Manager / Operator — can add plates and schedule runs.
- Viewer — read-only.
18. Live Demo
Not ready to create an account yet? Try the PRO + FARM Core experience instantly with the Live Demo — no registration, no password. (Integrations / FARM Connect are not part of the demo.)
How to Access
- From the homepage: Click the Live Demo button in the navbar, the hero section, or the bottom CTA on the welcome page.
- From inside the app (FREE accounts): A floating LIVE / DEMO button appears in the bottom-right corner. Click it to enter the demo instantly.
What You Can Explore
- Full filament inventory with real spool data (brands, weights, storage locations)
- PRO features: barcode lookup, storage locations, drying tracking, stock alarms, cost calculator
- FARM features: printer management with AMS slots, job scheduler, Farm Timeline with active + queued print jobs, print quality charts, financial overview
- Analytics charts — all time periods
Exiting the Demo
- Click the Exit button in the red DEMO badge in the left rail.
- If you were already logged in before entering the demo, you are returned to your own account automatically.
- If you were not logged in, you are redirected to the welcome page.
19. Integrations FARM Connect
Integrations connect 3DPM to your accounting software and to your webshop, so quotes/invoices flow out automatically and orders flow in without copy/pasting. Two outbound providers are available — Minimax (HR) (full quote + real fiscal invoice) and Generic PDF (local PDF with EU bank QR, no external API) — plus three inbound providers: PrestaShop and WooCommerce (through our module and plugin) and Shopify (through a webhook from the Shopify admin, nothing to install).
19.1 Outbound: Minimax FARM Connect
Use Minimax when you need fiscal invoices (R-type), numbered per your accounting numbering, with proper bookkeeping. Best for HR businesses already running Minimax.
Setting up Minimax (Outbound)
Client ID and Client Secret.- Authentication: Client ID, Client Secret, Username (your Minimax login email), Password.
- Organisation: Organisation ID (visible in the Minimax URL after login), Employee ID (the user that signs documents), Default Customer ID — use a generic entity like "Ostali kupci" / "Other customers" so 3DPM doesn't create a new Minimax entity for every quote. The actual customer name is added to each line item.
- Default item: Item ID + display name per language (e.g. "3D Printing Services", "3D ispis", "3D-Druck"). All Work Order lines will be created on top of this item.
- Numbering & Templates: Quote numbering ID, HR/EN invoice numbering, HR/EN quote template IDs, HR/EN invoice template IDs. These match the numbering rules and PDF layouts you configured in Minimax → Settings → Templates.
- Document footer: Optional per-language free text that appears below the items on the PDF.
- Email body: Optional per-language email text and a custom sender display name (overrides the default).
- Debug log: Toggle for verbose API logging.
Issuing a Quote from a Work Order
- Payment terms (days): defaults to 7. Sets the due date on the document.
- Due date: computed automatically from issue date + payment terms.
- Shipping (optional): courier (free text, e.g. "DPD") + price. Added as a second line item on the document.
- Send email to customer: toggle (ON by default). Shows the recipient address: "PDF will be sent to: customer@example.com".
15-1-1), saves the PDF locally (downloadable later from the WO window's Documents tab), and emails the customer with the PDF attached (if the toggle was ON).noreply@3dprintmanager.eu for deliverability, but the Reply-To header is set to your email. When the customer replies, the reply lands in your inbox.Customer Requirements
- Each customer needs Name, Email (with format validation) and Country — all three are required before a quote can be issued.
- Country is selected from an EU dropdown (Croatia, Slovenia, Germany, Austria, …, or "Other").
- Customer language for the PDF and email is auto-detected from the country:
HR→ Croatian,DE/AT→ German, anything else → English. This picks the matching numbering, template, item name, footer and email body. - Company and VAT are optional, but show on the document if provided.
Tips & Gotchas
- Currency on the document is auto-resolved from the organisation (EUR for HR).
- The quote PDF inherits your Minimax template — design and tweak it in Minimax → Settings → Templates.
- Debug log: when enabled, every API call is logged to
logs/integrations/{user_id}/minimax.log. Useful for troubleshooting; turn it OFF in production to keep logs small. - For multi-WO orders, all WOs of the same Order appear as separate line items on a single Minimax document.
- Shipping is added as a second line item with a hardcoded localised label ("Shipping" / "Dostava" / "Versand") + the courier name.
- The customer name is included in each item's description because 3DPM uses one generic Minimax customer entity per integration — this prevents your Minimax customer list from being flooded with one-off entries.
19.2 Outbound: Generic PDF FARM Connect
The simpler alternative — no external accounting account required. 3DPM generates the quote PDF locally and embeds a European payment QR code on the document. The customer scans the QR with their banking app and the transfer form auto-fills with IBAN, amount and payment reference. Perfect for HR / SI / EU markets where customers pay via bank transfer.
Setting up Generic PDF
PON). Numbering format: PON-2026-0001, PON-2026-0002, … The year is always the current calendar year and the counter restarts every 1 January — there is no separate "starting year" setting.Issuing a Quote with Generic PDF
uploads/quotes/{user_id}/, and emails the customer with the PDF attached.19.3 Inbound: PrestaShop FARM Connect
3DPM can receive orders automatically from your PrestaShop store. When a customer places a paid order in your shop, 3DPM instantly creates a draft Work Order on your production list — ready to schedule, no manual data entry.
What happens on each order
- PrestaShop sends a webhook to 3DPM with an HMAC SHA-256 signature (secure — the signature proves the payload came from your shop).
- 3DPM creates the customer (or matches an existing customer by email).
- 3DPM creates the Order and one Work Order per shop line item.
- If 3DPM already has saved print data for that product (see 19.5 Print Specs Layer below), the Work Order has weight and time auto-filled — it can be scheduled immediately.
- If no saved data exists yet, the Work Order shows an orange "Missing print data" badge — the Schedule button is disabled until you add estimates (see 19.5).
Setting up PrestaShop (3 steps)
https://3dprintmanager.eu/inbound_webhook.php?id=<uuid>). Click the copy icon next to each to copy them.Customer matching, status promotion, real-time notifications
- Customer matching: by email only (within your account). If a customer with the same email already exists, the new order attaches to them — no duplicate is created. A new email creates a new customer record.
- Status promotion: PrestaShop sends two webhooks per order — one when the order is placed (often unpaid), one when payment confirms. 3DPM handles duplicates safely and promotes the order from Pending payment (an order not paid yet) to whatever you picked under Status when paid in the Configure form — Ready by default, or Pending payment / Draft if you would rather confirm by hand.
- Real-time toast: while you are working in 3DPM, every new inbound order pops a small toast ("New order (PrestaShop)") so you do not need to refresh the page. The check runs every 30 seconds in the background and pauses when the tab is hidden.
- Email notification: besides the toast, a new-order email is sent to you whenever an inbound order arrives (ON by default). It goes to your registered 3DPM email unless you set a different Notification email in the integration settings — or you can turn the notification off entirely there.
19.4 Inbound: WooCommerce FARM Connect
3DPM can receive orders automatically from your WooCommerce store too. The flow is identical to PrestaShop — same auto-created Work Orders, same "missing print data" handling, same real-time toast — only the install is different (a WordPress plugin instead of a PrestaShop module).
What happens on each order
- WooCommerce sends a webhook to 3DPM with an HMAC SHA-256 signature — the same protocol the PrestaShop module uses, so you can trust it the same way.
- 3DPM creates the customer (or matches an existing one by email), creates the Order and one Work Order per shop line item.
- Print data lookup, "Missing print data" badge and Schedule-disabled behaviour work identically to PrestaShop — see 19.5 Print Specs Layer.
Setting up WooCommerce (3 steps)
threedpm-woo-orderforward.zip.Configuration options inside the plugin
- Send events — by default the plugin fires on both order placed (paid=false) and payment complete (paid=true). 3DPM handles both — the order is first created as Pending payment and promoted to the status set under Status when paid (default Ready) when payment confirms. You can disable either one if you prefer to only see paid orders.
- Paid statuses — for offline payments (bank transfer, cash on delivery) where WooCommerce never fires payment_complete, the plugin also fires the paid event when you manually move an order to Processing or Completed (configurable).
- Diagnostics page — the plugin admin shows Last delivery (success/failure, HTTP code, response time) and the Retry queue for any failed sends. Failed deliveries are retried automatically with 1/5/15/30 min backoff (4 attempts).
- Debug log — optional, writes every send attempt to
wp-content/uploads/3dpm-orderforward/debug.logfor troubleshooting.
19.4a Inbound: Shopify FARM Connect
Orders from your Shopify store arrive in 3DPM the same way as from PrestaShop and WooCommerce: the customer, the Order and one Work Order per line item. There is nothing to install: Shopify itself sends the order through a webhook you create in the Shopify admin.
Setting up Shopify (3 steps)
- A paid order arrives in the status set under Status when paid (default Ready). An order not paid yet (only with Order creation) arrives as Pending payment and moves on when Shopify reports the payment. A refunded or partly paid order is not treated as paid.
- Every delivery is checked against Shopify's signature; a wrong secret is refused and creates nothing.
- An order without the buyer's e-mail is refused, because customers are matched by e-mail.
- An order 3DPM refuses (no e-mail, or FARM Connect has lapsed) creates nothing, and the Shopify integration under Settings → Integrations shows Error with the reason. Shopify still gets a success answer, so the webhook stays in place for the next order.
- If orders stop arriving, check in Shopify that both webhooks are still listed under Settings → Notifications → Webhooks. Shopify deletes a webhook whose deliveries keep failing (for example after a wrong secret), and a deleted one has to be created again.
- Send test notification in Shopify sends an example order, which 3DPM imports like a real one; delete it afterwards.
19.5 Print Specs Middle Layer FARM Connect
Webshops like PrestaShop, WooCommerce and Shopify only know what the customer ordered — product name, ID, quantity. They cannot send print weight and print time, but 3DPM needs both to schedule production. The Print Specs layer bridges that gap by learning print data product-by-product as orders come in — no upfront catalog mapping required. The same flow works for all three inbound providers.
How it works
Result and variant awareness
- First order for a new product: one extra click to add estimates.
- All future orders for that product: auto-filled instantly — no clicks needed.
- Variants: if a product has variants (size, colour), specs are saved per variant. The S-size weight is not automatically applied to M-size — each variant learns its own data.
- Source tracking: each saved spec is marked as
gcode(extracted from G-code),manual(typed in), orlearned_from_actual(reserved for a future feature — Home Assistant tracking actual print results).
19.6 Configure Form: Multilang Fields FARM Connect
For text fields that vary by document language (the email body and the document footer), the Configure form shows one textarea with HR / EN / DE radio buttons above it. Click a language to swap the content. All three versions are saved together when you click Save.
- The default selected language is EN when you open Configure.
- If you already had legacy single-language email body content, it is migrated automatically to the new per-language fields on first open.
- Each customer receives the email and the document in their own language, auto-detected from their country (HR / Croatia → HR; DE / AT / Germany → DE; everything else → EN). You set HR/EN/DE once and 3DPM picks the right one per customer.
19.7 Quote-to-Invoice Flow FARM Connect
The full lifecycle after you issue a quote:
external_documents table — so for any invoice you can always trace back which quote it came from.