How to Use Stock Forge

A complete guide for new users — covering the web app and Android APK.

Contents

1. Getting Started

Signing in on the web

Open stock-forge.co.uk in any modern browser. Click Sign in, enter your company ID, username, and password, then click Sign In.

If you have forgotten your password, click Forgot password? on the login screen. You will receive a reset link by email.

Installing the Android APK

Download the latest Stock Forge APK from the link provided by your admin. On your Android device, open the downloaded file and tap Install. You may need to allow installation from unknown sources in your device settings (Settings → Security → Install unknown apps).

Once installed, open Stock Forge, enter the same company ID, username, and password you use on the web. Your data is shared in real time between the web and the app.

The onboarding wizard (Admins only)

When a new company account is first activated, the admin is walked through a short setup wizard:

  • Categories — confirm which material types you stock (beams, channels, angles, sheet).
  • Scrap rules — set the minimum lengths below which an off-cut is automatically flagged as scrap.
  • Low-stock thresholds — set the quantity at which a category triggers a low-stock alert.
  • Invite team members — add your first users with their roles.

You can re-run the wizard at any time from Settings → Re-run onboarding wizard.

2. Roles & Permissions

Every user in Stock Forge has one of four roles. Roles control which tabs and actions are visible. Admins assign roles when creating or editing users.

RoleWhat they can do
AdminFull access — stock, reservations, cuts, suppliers, purchase orders, customers, quotations, sales orders, settings, user management, audit log, automation.
OfficeStock viewing, creating and releasing reservations, searching, purchase orders, customers (full CRUD), quotations (full CRUD), sales orders (full CRUD).
WorkshopRecording cuts, viewing stock, sending collect requests, scanning QR/barcodes on the APK, sales order picking & dispatch.
ForkliftStock viewing, off-cuts, search, locations, and workshop map (when enabled). No sales, reorder, or admin access. Also available on the Android APK for collect-request actioning.
Tip: Workshop and Forklift users are primarily designed for the Android APK, though they can also access the web app with their limited permissions.

3. Stock Management

The Stock tab is the central inventory view. It is split into four sub-tabs: Beams, Channels, Angles, and Sheet. Each sub-tab shows all full-length items in that category.

Adding a stock item

Click Add item (or the + button on the APK). Fill in the size, quantity, location, and any notes. For beams, channels, and angles, size is entered as a standard designation (e.g. 152 UB 30). For sheet, enter length × width × thickness in millimetres.

When you save a new item, it appears immediately in the relevant sub-tab and is visible to all users in real time.

Editing and removing stock

Tap or click any row to open the item detail panel. From there you can edit the quantity, location, notes, or size. To remove an item entirely, use the Delete option in the item menu. All edits are recorded in the audit log.

Locations and QR codes

Each stock item can be assigned a location (e.g. Rack A3, Bay 2). Locations are managed in the Locations tab. Each location has a unique QR code that you can print as an A4 label and attach to the physical rack or bay.

Scanning a location QR code on the APK shows everything currently stored there and lets you reassign items to a different location in bulk.

Auto-cut handling

Bulk import from CSV or Excel

To quickly populate your inventory with existing stock, use the Import Stock button in the Stock tab (Admin only). This lets you upload a CSV or Excel file with multiple items at once.

How to import:

  • Click Import Stock in the Stock tab toolbar.
  • Click Download CSV Template to get the column headers and example rows.
  • Fill in your items: category (beams, channels, angles, sheet), size, length, quantity, and optional fields like grade, location, and notes.
  • Upload your file and review the preview table.
  • Click Validate Rows to check for errors. Fix any issues in your spreadsheet and re-upload.
  • Once valid, click Import to add all items in one go.

Auto-create locations: If you check the "Auto-create missing locations" option, any location names in your file that don't already exist will be created automatically.

Tip: The same bulk import feature is available for Off-Cuts in the Off-Cuts tab. You can also access import during the initial onboarding wizard.

Bulk import from CSV or Excel

To quickly populate your inventory with existing stock, use the Import Stock button in the Stock tab (Admin only). This lets you upload a CSV or Excel file with multiple items at once.

How to import:

  • Click Import Stock in the Stock tab toolbar.
  • Click Download CSV Template to get the column headers and example rows.
  • Fill in your items: category (beams, channels, angles, sheet), size, length, quantity, and optional fields like grade, location, and notes.
  • Upload your file and review the preview table.
  • Click Validate Rows to check for errors. Fix any issues in your spreadsheet and re-upload.
  • Once valid, click Import to add all items in one go.

Auto-create locations: If you check the "Auto-create missing locations" option, any location names in your file that don't already exist will be created automatically.

Tip: The same bulk import feature is available for Off-Cuts in the Off-Cuts tab. You can also access import during the initial onboarding wizard.
When a cut is recorded against a full-length item, Stock Forge automatically reduces the

Bulk import from CSV or Excel

To quickly populate your inventory with existing stock, use the Import Stock button in the Stock tab (Admin only). This lets you upload a CSV or Excel file with multiple items at once.

How to import:

  • Click Import Stock in the Stock tab toolbar.
  • Click Download CSV Template to get the column headers and example rows.
  • Fill in your items: category (beams, channels, angles, sheet), size, length, quantity, and optional fields like grade, location, and notes.
  • Upload your file and review the preview table.
  • Click Validate Rows to check for errors. Fix any issues in your spreadsheet and re-upload.
  • Once valid, click Import to add all items in one go.

Auto-create locations: If you check the "Auto-create missing locations" option, any location names in your file that don't already exist will be created automatically.

Tip: The same bulk import feature is available for Off-Cuts in the Off-Cuts tab. You can also access import during the initial onboarding wizard.
quantity and — if a remainder is left — creates an off-cut entry. The off-cut is flagged as

Bulk import from CSV or Excel

To quickly populate your inventory with existing stock, use the Import Stock button in the Stock tab (Admin only). This lets you upload a CSV or Excel file with multiple items at once.

How to import:

  • Click Import Stock in the Stock tab toolbar.
  • Click Download CSV Template to get the column headers and example rows.
  • Fill in your items: category (beams, channels, angles, sheet), size, length, quantity, and optional fields like grade, location, and notes.
  • Upload your file and review the preview table.
  • Click Validate Rows to check for errors. Fix any issues in your spreadsheet and re-upload.
  • Once valid, click Import to add all items in one go.

Auto-create locations: If you check the "Auto-create missing locations" option, any location names in your file that don't already exist will be created automatically.

Tip: The same bulk import feature is available for Off-Cuts in the Off-Cuts tab. You can also access import during the initial onboarding wizard.
scrap if it falls below the scrap threshold set in Settings.

Bulk import from CSV or Excel

To quickly populate your inventory with existing stock, use the Import Stock button in the Stock tab (Admin only). This lets you upload a CSV or Excel file with multiple items at once.

How to import:

  • Click Import Stock in the Stock tab toolbar.
  • Click Download CSV Template to get the column headers and example rows.
  • Fill in your items: category (beams, channels, angles, sheet), size, length, quantity, and optional fields like grade, location, and notes.
  • Upload your file and review the preview table.
  • Click Validate Rows to check for errors. Fix any issues in your spreadsheet and re-upload.
  • Once valid, click Import to add all items in one go.

Auto-create locations: If you check the "Auto-create missing locations" option, any location names in your file that don't already exist will be created automatically.

Tip: The same bulk import feature is available for Off-Cuts in the Off-Cuts tab. You can also access import during the initial onboarding wizard.

Bulk import from CSV or Excel

To quickly populate your inventory with existing stock, use the Import Stock button in the Stock tab (Admin only). This lets you upload a CSV or Excel file with multiple items at once.

How to import:

  • Click Import Stock in the Stock tab toolbar.
  • Click Download CSV Template to get the column headers and example rows.
  • Fill in your items: category (beams, channels, angles, sheet), size, length, quantity, and optional fields like grade, location, and notes.
  • Upload your file and review the preview table.
  • Click Validate Rows to check for errors. Fix any issues in your spreadsheet and re-upload.
  • Once valid, click Import to add all items in one go.

Auto-create locations: If you check the "Auto-create missing locations" option, any location names in your file that don't already exist will be created automatically.

Tip: The same bulk import feature is available for Off-Cuts in the Off-Cuts tab. You can also access import during the initial onboarding wizard.

Bulk import from CSV or Excel

To quickly populate your inventory with existing stock, use the Import Stock button in the Stock tab (Admin only). This lets you upload a CSV or Excel file with multiple items at once.

How to import:

  • Click Import Stock in the Stock tab toolbar.
  • Click Download CSV Template to get the column headers and example rows.
  • Fill in your items: category (beams, channels, angles, sheet), size, length, quantity, and optional fields like grade, location, and notes.
  • Upload your file and review the preview table.
  • Click Validate Rows to check for errors. Fix any issues in your spreadsheet and re-upload.
  • Once valid, click Import to add all items in one go.

Auto-create locations: If you check the "Auto-create missing locations" option, any location names in your file that don't already exist will be created automatically.

Tip: The same bulk import feature is available for Off-Cuts in the Off-Cuts tab. You can also access import during the initial onboarding wizard.

4. Reservations

Reservations let Office and Admin users hold stock against a specific job or customer before it is physically cut or dispatched. Reserved stock is visually flagged in the inventory so Workshop users know not to use it for other jobs.

Creating a reservation

From the Stock tab, open an item and click Reserve. Enter the quantity, job reference, customer name, and any notes. The reservation expires automatically after 7 days unless released or fulfilled.

Bulk reserve from search

Use the Search tab to find all items matching a size or description. From the search results you can select multiple items and reserve them all in one action — useful when a job requires several different sections.

Releasing a reservation

Open the reserved item and click Release. The stock returns to available status. You can also release your own reservations from the user menu → My reservations.

Reservations are visible to all users. The job reference and customer name appear on the item row so the workshop knows which job the stock is held for.

5. Cuts & Off-Cuts

Recording a cut

Workshop users open an item (or scan its QR code on the APK) and tap Record cut. Enter the length cut and the quantity. If the item had a reservation, the reservation is automatically cleared when the cut is saved.

The cut is logged in the Cuts tab with the user's name, date, and item details.

Off-cut handling

After a cut, if there is a remainder that is worth keeping, Stock Forge creates an off-cut entry automatically. Off-cuts appear in the Off-Cuts tab. If the remainder is below the scrap threshold (set in Settings), it is flagged as scrap and shown with a warning indicator.

Off-cuts can be reserved, cut further, or manually marked as scrapped. Scrapped items are removed from active stock but remain in the audit log.

Cuts tracker

The Cuts tab shows a history of all cuts with per-user and per-day breakdowns. Admins can filter by date range, user, or category, and export the full history as a CSV.

6. Search & Scanning (APK)

Searching for stock

The Search tab (web and APK) lets you search across all categories by size, description, or location. Results show availability, reservation status, and location at a glance.

Scanning a barcode or QR code (APK)

Tap the scan icon in the top bar of the APK. Point the camera at a barcode or QR code on a stock item or location label. Stock Forge will:

  • Open the item detail if you scan an item barcode.
  • Show everything stored at a location if you scan a location QR code.

From the scan result you can record a cut, create a reservation, or reassign the item to a different location — all without navigating through menus.

7. Suppliers & Purchase Orders

Adding a supplier

Admins manage suppliers from Settings → Suppliers. Each supplier has a name, contact email, and can be set as the default supplier for one or more material categories. You can also set per-item supplier overrides if a specific section always comes from a particular supplier.

Creating a purchase order

The Reorder tab shows all items that are at or below their low-stock threshold. Select the items you want to reorder, adjust quantities, and click Generate PO. Stock Forge produces a purchase order that can be downloaded as CSV or PDF.

Sending a PO by email

From the PO view, click Send by email. The PO is sent as a PDF attachment to the supplier's email address. A copy is saved in the PO history with a "sent" status.

Auto-ordering

Admins can enable Auto-ordering in Settings. When enabled, Stock Forge monitors stock levels and raises purchase orders automatically when items drop below their reorder threshold. The automation engine runs every minute in the background — no external scheduler or setup is required. Two modes are available:

  • Approval queue — orders are drafted and wait for admin approval before sending.
  • Fully automatic — orders are sent directly to suppliers without manual approval.

Safety caps (maximum lines per order, maximum POs per day, cool-down period) prevent runaway ordering. Per-supplier opt-in means you can enable auto-ordering for some suppliers and not others.

8. Collect Requests

Collect Requests are a workflow between the workshop and the forklift driver. The workshop identifies stock that needs to be moved or collected, and the forklift driver actions the request using the APK.

Sending a collect request (Workshop)

On the APK, open the item you need collected and tap Request collect. Add any notes (e.g. destination bay, urgency). The request is sent instantly to the forklift driver's inbox.

The forklift inbox (APK)

Forklift users see a Collect Requests tab on the APK showing all pending requests. Each request shows the item, location, and any notes from the workshop. Tap a request to view the full details.

Marking a request as collected

Once the forklift driver has collected the item, they tap Mark as collectedon the request. The status updates in real time — the workshop user sees the change immediately on their own device.

9. Audit Log & CSV Exports

Every action in Stock Forge — reservations, releases, edits, deletes, cuts, POs, user changes — is recorded in the Audit Log with the user's name, timestamp, and source (web or phone).

Viewing the audit log

Admins access the audit log from the user menu → Audit log. Filter by date range, user, action type, or item. Each entry shows a before/after diff so you can see exactly what changed.

Exporting CSVs

The audit log, cuts tracker, and purchase order history all have an Export CSVbutton. The exported file can be opened in Excel or any spreadsheet application.

10. Demo Workspace

Not ready to sign up? The Try the demo button on the home page opens a pre-populated demo workspace with sample stock, reservations, and purchase orders. You can explore all features without creating an account.

The demo workspace resets periodically so any changes you make will not persist. To get a permanent account, click Sign up on the home page and follow the sign-up process — your account will be activated once payment is arranged.

The demo is read-only for some destructive actions (deleting all stock, bulk imports) to protect the shared demo data for other visitors.

11. Settings & User Management

Adding users

Admins go to Settings → Users and click Add user. Enter the new user's display name, username, and role. A temporary password is set — the user can change it after their first sign-in, or use Forgot password? on the login screen.

Resetting a password

Admins can reset any user's password from Settings → Users → Reset password. Users can also reset their own password by clicking Forgot password? on the login screen — a reset link is sent to the email address on their account.

Scrap rules

In Settings → Scrap rules, set the minimum lengths below which an off-cut is automatically flagged as scrap:

  • Beams / channels / angles — minimum length in metres (default 2.3 m).
  • Sheet — minimum longest side in millimetres (default 600 mm).

Low-stock thresholds

In Settings → Low-stock alerts, set the quantity at which each category triggers an alert banner. This applies to full-length items only — off-cuts are not counted against the threshold.

Email settings

In Settings → Email, admins can configure a custom from-name and reply-to address for outgoing purchase order emails. If left blank, Stock Forge uses the default sender address.

Audit Log Archive (v2.20.0)

The audit log now archives entries older than 90 days every night at 03:30 UTC. Archived entries are compressed into NDJSON files stored in the same secure cloud storage as your backups, keyed by company and quarter (e.g. audit_2026-Q1.ndjson.gz). This keeps the live audit log fast and lean while preserving a full historical record.

Accessing archived entries

Super Admins can view and download archive files from Super Admin → Audit Archive. The tab lists every archive run (status, duration, documents archived) and provides signed download links for each quarterly file per company.

In the regular Audit Log tab, if you set the date filter earlier than 90 days ago, a banner will appear prompting you to download the relevant archive from the Super Admin panel.

The archive job runs automatically — no manual action is required. A Firestore lock prevents duplicate runs if the server restarts mid-job.

Low-Stock Dashboard Widget (v2.20.0)

The top of the main dashboard now shows a Low Stock widget for Admin, Manager, and Office roles. It lists every item currently at or below its reorder threshold, grouped by storage location, so you can see at a glance what needs ordering.

Reading the widget

Each row shows the item name, current quantity, reorder threshold, and the default supplier (if configured). If all stock is above thresholds the widget shows a green confirmation message instead.

Reordering directly from the widget

Click the Reorder button on any row to jump straight to the Reorder tab with that item pre-filled in a new purchase order draft. The widget updates in real time via the existing Firestore listener — no page refresh needed.

The widget is hidden for the Forklift / Workshop role so their dashboard stays focused on cuts and collect requests.

Supplier Price History (v2.20.0)

Each supplier's detail view now includes a Price History section. Every time a purchase order is marked as received, the unit price for each line item is recorded in a supplier_price_history subcollection. This builds an automatic price audit trail without any extra data entry.

Viewing price history

Open Settings → Suppliers, find a supplier, and click the chart icon (↗) on their row to expand the Price History panel. The panel shows a stats table (min / avg / max / last price and a 90-day trend arrow) and an area chart of price over time, one line per item.

Trend indicators

A rising arrow (↑) means the average price over the last 90 days is more than 2 % higher than the previous 90 days. A falling arrow (↓) means it has dropped by more than 2 %. A flat arrow (→) means prices have been stable.

Backfill for existing POs

To seed price history from your existing closed POs, run the backfill script once from the server console: node server/auditArchive/backfillPriceHistory.mjs. The script is idempotent — running it multiple times will not create duplicate entries.

Subscription Tiers (v2.21.0)

Stock Forge now ships in four subscription tiers — Starter (£149/mo, up to 3 users), Standard (£349/mo, up to 10 users), Pro (£799/mo, up to 50 users) and Enterprise (custom pricing, unlimited users). Each tier unlocks a different feature set: Starter covers the core stock + reservations + POs workflow on the web; Standard adds the Android APK, barcode scanning, off-cut tracking, multi-location and the standard automation pack; Pro layers on advanced automation, REST API access, audit archive export and priority support; Enterprise adds SSO, white-label, on-premise deployment and a dedicated success manager. The full side-by-side comparison lives at /pricing.

Admins can see their current plan in Settings → Your subscription — it shows the monthly cost, the current user count vs the seat cap, and which features are included. The top navigation bar always carries a small grey "Plan" pill next to the company name as a quick reminder. Super Admins can change a customer's tier or grant individual feature flags off-tier from Super Admin → Subscriptions; every change is audit-logged. Existing companies were auto-migrated to the Standard tier on first server boot, and pricing is display-only — invoicing is still handled offline so no payment integration is required.

Off-Cut Combine / Uncombine (v2.20.0)

The Off-Cuts tab now supports bundling multiple compatible off-cuts into a single bundle record. This is useful when several short remnants of the same material are stored together and you want to track them as one logical group without physically joining them.

Combining off-cuts

Tick the checkboxes on two or more off-cuts that share the same material, grade, and profile. A Combine button appears in the toolbar. Click it to open the Combine modal, which shows a manifest of the selected pieces and their individual lengths. Optionally enter a bundle label (e.g. "Job 1042 remnants"), then click Combine N pieces. A new bundle record is created and the originals are hidden from the main list (preserved in the bundle manifest).

Viewing bundle contents

Bundle rows are marked with an orange BUNDLE badge. Click the chevron (▶) on the left of the row to expand the manifest and see the individual piece lengths.

Uncombining a bundle

Click the Uncombine link next to the BUNDLE badge to open the Uncombine modal. Confirm, and the bundle is deleted while all original off-cut entries are restored to the list with their original lengths.

Both combine and uncombine actions are recorded in the audit log with action codes offcut.combined and offcut.uncombined, including the source IDs and lengths.

Material Traceability

Material traceability lets you record the full origin of every piece of steel in your inventory — heat number, cast number, mill, specification, country of origin, and an attached mill certificate PDF. This is essential for structural, automotive, and pressure applications where full traceability to the original cast is a contractual or regulatory requirement.

Material traceability is a per-company feature that must be enabled by your Super Admin. If you do not see the Material Traceability section in the Add / Edit Stock form, ask your Super Admin to enable it for your company in the Subscriptions management screen.

Enabling traceability (Super Admin)

In the Super Admin portal, open the Subscriptions tab. Each company row has a Traceability toggle. Flip it on to activate heat number tracking and cert upload for that company. Flipping it off hides all traceability UI for that company without deleting any stored data.

Recording heat numbers when adding stock

When traceability is enabled, the Add / Edit Stock dialog shows a collapsible Material Traceability section. You can record:

  • Heat number — the primary identifier for the cast (e.g. H-2026-0042).
  • Cast number — optional secondary cast reference.
  • Mill — the steel mill that produced the material (e.g. ArcelorMittal Differdange).
  • Specification — the material standard (e.g. EN 10025 S355JR).
  • Country of origin — where the steel was produced.
  • Mill certificate PDF — upload the 3.1 / 3.2 test certificate (Pro+ only, max 10 MB).

Heat badge on the stock list

When a stock item or off-cut has a heat number recorded, a small orange HEAT: [number] badge appears on its row. A dot (•) inside the badge means a mill certificate PDF is attached. Clicking the badge opens the Traceability Panel, which shows all traceability fields and a download link for the certificate.

Traceability through cuts

When you cut a beam or off-cut, the resulting off-cut automatically inherits the parent’s heat number, cast number, mill, specification, and certificate URL. This means traceability follows the steel through every transformation — you never lose the chain of custody, even after multiple cuts.

Searching by heat number

In the Search tab, a Heat number field appears when traceability is enabled. Enter a partial or full heat number to find any stock item or off-cut that matches. The search is case-insensitive and matches substrings, so searching for 0042 will find H-2026-0042.

Requesting mill certificates on purchase orders

When generating a purchase order in the Reorder tab, a Request mill certificate from supplier checkbox appears (when traceability is enabled). Tick it to include a prominent notice in the PO PDF and email body asking the supplier to provide the mill certificate with delivery.

When you mark the PO as received, a dialog prompts you to upload the certificate PDF at that point. You can skip this step if the cert arrives separately.

Bulk import

The downloadable CSV template includes columns for all traceability fields: heat_number, cast_number, mill,spec, and country_of_origin. These columns are optional — leave them blank if you don’t have the data. When traceability is disabled for a company, these columns are silently ignored during import so existing import files continue to work.

Mandatory heat numbers (company admin)

Company admins can require a heat number on every new stock item. In Settings, a Material Traceability card appears (only when traceability is enabled). Toggle Require heat number on new stock to on. The Add Stock form will then reject submissions that have no heat number entered.

Tier requirements

Heat number recording and the traceability panel are available on Standard tier and above (when enabled by Super Admin). Mill certificate PDF upload and storage require Pro tier or a manual feature override granted by Super Admin.

Customers

The Customers tab lets you maintain a central directory of all your business customers. Store contact details, billing and delivery addresses, payment terms, credit limits, and notes for each customer.

Adding a customer

Click Add customer in the Customers tab. Fill in the customer name, contact name and email, phone number, billing address, delivery address, VAT number (if applicable), default payment terms (e.g. Net 30), credit limit, and any internal notes. Click Save to add the customer to your directory.

Editing and archiving customers

Click any customer row to edit their details. To archive a customer (hide them from the active list without deleting), click the Archive button. Archived customers can be restored from the Archived filter.

Permissions

Office and Admin roles can create, edit, and archive customers. Workshop and Forklift roles cannot access the Customers tab.

Quotations

Quotations let you create formal price proposals for customers. Each quote includes line items (stock items, off-cuts, or custom to-order items), unit prices, discounts, and automatic VAT calculation. Quotes flow through a status lifecycle: Draft → Sent → Accepted → Converted to Sales Order.

Creating a quotation

In the Quotations tab, click Create quote. Select a customer, then add line items by picking stock items or off-cuts from your inventory, or entering a free-text to-order item. Set the quantity and unit price for each line (prices auto-suggest from recent supplier costs plus a margin). Add a discount if needed, and any internal notes. The totals (subtotal, VAT, total) auto-calculate.

Quote header fields

Each quote has an auto-generated quote number (Q-YYYY-NNNN), date, and valid-until date (default +30 days). You can add a customer reference and your internal reference. The quote header also includes your company logo and details.

Quote status flow

Quotes start in Draft status. Click Send to email the quote to the customer and move it to Sent. Once the customer accepts, click Mark accepted. From there, you can click Convert to Sales Order to create a sales order and start picking and dispatch. Quotes can also be marked as Rejected or Expired.

Downloading and emailing quotes

Click the PDF button to download a formatted quote PDF with your company branding. Click Email to send the quote directly to the customer's email address (the email address from the customer record is used).

Permissions

Office and Admin roles can create, edit, and send quotations. Workshop and Forklift roles cannot access the Quotations tab.

Tier requirements

Quotations are available on Standard tier and above. Customer-facing sales invoice PDFs with company branding are a Pro+ feature.

Sales Orders

Sales Orders are the fulfillment stage after a quote is accepted. They track picking, dispatch, proof of delivery (POD), and invoicing. Each sales order has a status flow: Confirmed → Picked → Dispatched → Invoiced → Paid.

Converting a quote to a sales order

From the Quotations tab, open an accepted quote and click Convert to Sales Order. A sales order is created with the same line items and customer. The sales order number is auto-generated (SO-YYYY-NNNN).

Picking and dispatch

In the Sales Orders tab, click a confirmed sales order to open the picking screen. Each line item shows the stock location and quantity needed. Workshop staff can mark items as picked. Once all items are picked, click Dispatch to generate a delivery note PDF, capture proof of delivery (POD) signature or photo, and decrement the stock from your inventory.

Delivery notes and POD

When dispatching, a delivery note PDF is generated with your company details, customer address, line items, and a signature/POD capture area. The delivery note is emailed to the customer and can be downloaded for printing or mobile capture.

Invoicing

Once a sales order is dispatched, click Create Invoice to generate a sales invoice PDF (Pro+ feature with company branding) and email it to the customer. Mark the invoice as Paid once payment is received.

Permissions

Office and Admin roles can create, edit, and invoice sales orders. Workshop role can pick and dispatch sales orders (limited view). Forklift role cannot access sales orders.

Tier requirements

Sales Orders are available on Standard tier and above. Delivery notes and invoices with company branding are a Pro+ feature. Sales reports (conversion rate, top customers, monthly trend) are also Pro+.

Yard Map (v2.24.0)

The Workshop Map tab gives a visual overview of your entire workshop or warehouse. It is a Pro+ feature and must be enabled by a Super Admin for your company before the tab appears.

2D layout editor

The layout editor lets you drag and drop bays, racks,aisles, and gates onto a grid canvas. Each tile can be labelled (e.g. “Bay A”, “Rack 3”). The layout is saved per company and is visible to all users with access to the Workshop Map tab.

To edit the layout, click Edit Layout. Drag tiles from the palette on the left onto the canvas, reposition them by dragging, and click Save Layoutwhen done. All layout changes are recorded in the audit log.

Heatmap colouring

Each location tile is automatically coloured based on how full it is relative to its configured capacity:

  • Grey — empty (no stock assigned to this location).
  • Green — partial (1–74% of capacity used).
  • Amber — full (75–99% of capacity used).
  • Red — overstocked (100%+ of capacity used).

Location drawer

Click any location tile to open a side drawer showing all stock items currently stored there. Each item has a quick link to its full stock record. You can also use the Search bar at the top of the Workshop Map to find a specific heat number or serial number — the matching location will be highlighted on the map.

3D rack view

For tall racking locations, click the 3D View button on the location tile to open an interactive three-dimensional view of the rack. Each beam/bay level is coloured by occupancy using the same heatmap scale. Rotate and zoom with your mouse or touch gestures.

Print-friendly layout

Click Print Map to open a print-optimised view of the current workshop layout. This is suitable for laminating and posting in the workshop office or on a warehouse wall.

Permissions

Admin and Office roles can edit the layout. Workshop and Forklift roles can view the map and open location drawers but cannot edit the layout.

Tier requirements

Workshop Map is a Pro+ feature. It must also be enabled per-company by a Super Admin via Super Admin → Subscriptions → Workshop Map toggle.

Device Ingestion (v2.24.0)

The Device Ingestion feature allows weighbridges, cutting machines, and other serial or network-connected equipment to send readings directly into Stock Forge. It is a Pro+ feature and must be enabled by a Super Admin.

Registering a device

Go to Settings → Devices (visible to Admins only). Click Add Device, give it a name and slug (e.g. WB-01 for Weighbridge 1), and choose a device type. Stock Forge generates a device ID and a 64-character secret key. Copy both — the secret is only shown once. If you lose it, click Regenerate Key.

Sending readings

Devices send readings to:

POST /api/devices/ingest

Each request must include three headers:

  • X-Device-Id — the device slug (e.g. WB-01).
  • X-Company-Id — your Firestore company ID.
  • X-Device-Signature — HMAC-SHA256 hex of the JSON body using the device secret as the key.

The JSON body may contain any combination of: weightKg, lengthMm,thicknessMm, serialOrHeat, machineId,ts (Unix ms timestamp), and raw (original raw string).

Mapping rules

Mapping rules define what action Stock Forge takes when a reading arrives. Go to Settings → Devices → Mapping Rules and click Add Rule. Each rule specifies:

  • Device — which device this rule applies to (or “Any”).
  • Condition — a field and value that the reading must match (e.g. machineId = SAW-02).
  • Action — what to do when the condition is met:
    • tag_stock_weight — update the weight field on the matching stock item.
    • tag_stock_heat — tag the matching stock item with the heat/serial number.
    • log_cut — record a cut event with the given length.
    • update_po_received — increment the received quantity on a purchase order line.
    • log_only — store the reading without taking any further action.

Test console

Before connecting real hardware, use the Test Console in the Devices screen to send a simulated reading and see which rule (if any) would be triggered and what action would be taken. No data is written during a test — it is a dry-run preview.

Serial-to-HTTP bridge (Python)

For equipment that only supports RS-232 serial output (older weighbridges, legacy cutting machines), download the Device Bridge utility from Settings → Devices → Download Bridge. It is a small Python script that reads lines from a serial port and forwards them to the ingest endpoint with the correct HMAC signature.

Requirements: Python 3.8+, pip install pyserial requests. Copy config.example.json to config.json, fill in your endpoint, company ID, device ID, and secret, then run:

python3 devicebridge.py

The bridge supports five line parsers (weight_kg, length_mm,heat_number, csv, json) and can be run as a systemd service on Linux for 24/7 operation.

Permissions

Only Admin users can access the Devices screen, register devices, manage mapping rules, and view the readings feed. Device Ingestion is not visible to Office, Workshop, or Forklift roles.

Tier requirements

Device Ingestion is a Pro+ feature. It must also be enabled per-company by a Super Admin via Super Admin → Subscriptions → Devices toggle.