Skip to main content
Inventory

Stock Logs

Stock Logs is the per-product record of physical stock in Helm WMS: every change to a product's stock is written there with the quantity before and after, what caused it, and who did it. This article explains how to read an entry and use the page to answer the question it exists for: why did my stock change?

Why Did My Stock Change?

Whenever a product's physical stock changes in Helm, an entry is written to its Stock Logs as it happens. Booking in a delivery, picking, a shipment going out, a movement between locations, a stock count, a return and a manual adjustment all land in the same list, newest first, under Inventory > (open a product) > Stock Logs.

The page is a record rather than a workspace. Nothing on it edits or removes an entry, and that is the point: it is the evidence you fall back on when a stock figure is questioned. Two things outside the page can still change it, both covered under Best Practices.

Example scenario: available stock for a product reads 40 when you expected 45. You open the product's Stock Logs, find a Despatch entry for five units against a shipment from last night, click through to the shipment, and see the order that took them. Two minutes, no guesswork.

Before You Start

  • Open it from the product, not from Settings. Go to Inventory, open the product, then use its Stock Logs button. It sits on the card summarising the product's stock levels, titled Stock Control or, where stock control is switched on in a Basic warehouse, Stock Details. On Basic there is also a See physical stock logs button under the stock fields. The page itself is headed Inventory Stock Logging.

  • These are not the logs under Settings. User Logs, System Logs, Channel Logs and Request Logs sit under Settings > System Settings and cover different ground; Stock Logs covers only the physical stock of one product. The See Stock Logs action on a product's Channels section is the exception: it opens Channel Logs, which is about stock sync with your sales channels, not stock movement in your warehouse.

  • The product has to be one Helm holds stock for. A service product has no stock to log, and no Stock Logs button.

  • Some columns need advanced stock control. Location, Batch Number and Serials, and the Location and Batch ID filters, only appear when your warehouse's Stock Control Type is Full. On Basic everything else works as described.

  • You need access to Inventory. If you cannot open products under Inventory, ask whoever administers Helm to check your permission group.

How to Trace a Stock Change

  1. Go to Inventory and open the product you are questioning.

  2. Choose Stock Logs. Entries are newest first, so today's change is usually near the top.

  3. Narrow the list if the product is busy: use the Date and Time filter to bracket the period, or Activity Type if you know you are chasing a Despatch or a Count.

  4. Read the entry across: Activity Type says what kind of thing happened, Source which record it happened on, and Previous Quantity, Action Qty and New Qty what it did to the stock.

  5. Click the Source value to open the record behind the entry: Delivery-1482 opens that delivery, Shipment-90114 that shipment. Returned entries are the exception and do not link.

  6. For a change made by hand, read Reason for why and User for who.

What Each Column Tells You

Column

What it tells you

Ledger ID

The entry's own reference. Quote it when you raise a query.

Date & Time

When the entry was recorded.

Code

The product code, the same on every entry because the page covers one product.

Source

The record that caused the change, shown as its type and ID, and linked to it.

Activity Type

What kind of activity it was. See below.

Previous Quantity

The quantity held before the change.

Action Qty

How many units the entry moved.

New Qty

The quantity held after the change.

Entry Type

Positive where the entry added stock, Negative where it took it away. A flag written by whatever created the entry, not a sum of the quantities.

User

Who made the change. Reads System where no signed-in user was recorded.

Reason

The reason recorded against the change, where one was given.

Location

The location the quantity was counted at. Full stock control only.

Batch Number

The batch involved. Its tooltip, Batch Info, shows Expiry Date and Qty. Full stock control only.

Serials

How many serial numbers the entry covered. Serials Info lists each Serial Number and Used At. Full stock control only.

Unit Cost

What one unit cost at that moment: the product's rolling average cost where there is one, otherwise the primary supplier's Item Cost, otherwise the Cost Price on the product.

Transactional Currency

The currency the values on the entry were recorded in.

Unit Value

What one unit was worth, taken from the product's price.

Entry Value

The same per-unit figure carried onto the entry, negative where stock left. Not quantity multiplied by value, so do not read it as a line total.

Transactional Currency, Unit Value and Entry Value are off by default: switch them on in the View Manager when you are reconciling value rather than counting units. Entry Currency can be switched on too, but nothing writes to it, so it stays empty.

Entries also record where stock came from, but no column shows it: on a movement, the location it left is the Location on the negative entry.

Previous Quantity and New Qty are quantities at one location, not the product's total stock. A movement of ten units writes two entries: ten leaving the source location and ten arriving at the destination. The total has not changed and both entries are correct.

Activity Types & Sources

Activity Type is the quickest way to see what kind of thing happened, and it is one of the filters.

Activity Type

What happened

Usual Source

Delivery

Goods were booked in and published on a delivery.

Delivery

Movement

Stock was moved between locations. Written as a pair, one entry leaving and one arriving.

Movement

Pick

Stock was picked for an order and placed in a pick or staging location.

Pick

Despatch

A shipment went out and the stock left your warehouse.

Shipment

Count

A quantity was set rather than moved: an initial stock level, a manual adjustment, a pick shortfall written off, or a picked line moved to another location.

Inventory or Pick

Returned

A customer return was booked back into stock.

OrderReturnItem

Inventory Check

An inventory check corrected a counted quantity.

InventoryCheck

Cancelled

A shipment was cancelled and its stock put back.

Shipment

Reason is where the human detail sits. Helm fills it in itself on some entries, with values such as Stock Count, Initial Stock, Stock Damaged or Stock not in location; for a manual change it holds the reason the person chose.

Source is not a tidy label but the record's type and ID run together, and clicking it opens that record.

Source

The record behind the entry

Inventory-1180

The product itself: a change recorded against it rather than through an operation.

Delivery-1482

The delivery the goods were booked in on.

Pick-2043

The pick the stock was taken for.

Shipment-90114

The shipment the stock went out on.

Movement-771

The movement that shifted the stock.

InventoryCheck-336

The inventory check that corrected the count.

OrderReturnItem-45

The returned order line. The one source with no link behind it: the entry is right, the click goes nowhere, so open the order and its return instead.

The Source filter offers Inventory, Shipment, Pick and Delivery only. To isolate a movement, return or inventory check, filter on Activity Type.

Filtering, Sorting & Columns

The Filters are Date and Time, Code, Source, Activity Type, Qty, Entry Type, User, Location, Transactional Currency, Unit Value, Entry Value, Unit Cost and Batch ID. Qty filters on the quantity after the change, so it finds the point a location dropped below a level. A combination you use often can be saved with Save as New under Saved Filters, and Clear All Filters resets the list.

The search box matches the product Code and the text of reasons, so a phrase you use in your reasons pulls up every entry carrying it. It does not match the Ledger ID, so searching a ledger number comes back empty even though the page offers it as a quick result: bracket the entry with the Date and Time filter instead.

Clicking a column header sorts the list. Ledger ID, Date & Time, Code, Activity Type, New Qty, Entry Type, User, Transactional Currency, Unit Value and Entry Value sort; the rest do not.

Columns are set in the View Manager, using Add or Remove Columns and Drag to Arrange Columns. Reset to Default puts them back, and Save keeps your layout.

There is no export action here. To get the entries out of Helm, whoever looks after your integrations can read the same list through the public API: GET /companies/{company}/inventory/{inventory}/stocks/logs.

Best Practices & Notes

Set Up Job Reasons So Reason Is Worth Reading

A manual stock change asks for a Reason, and the list offered comes from Settings > Job Reasons: active reasons with a Job Type of Stock Change that are also linked to one of the product's channels. A reason linked to none of them will not appear, which is why a reason can show on one product and not another. Specific reasons such as damaged in transit or found in returns keep the column worth reading months later; one catch-all reason makes it useless.

  • Renaming a reason rewrites history. Editing a Stock Change reason with Apply changes to all identical reasons ticked updates that reason on entries already written, so old entries stop reading as they did when they happened. To change wording safely, add a new reason and deactivate the old one.

  • The visible reason and the searchable reason are stored separately. The Reason cell and its tooltip come from two copies of the text and the search matches either, so after a rename a search can return an entry whose visible Reason does not contain the words you searched.

  • A stock count taken on the mobile app records Stock Count. The reason chosen on the device is not carried onto the entry, so use the browser where you need a specific reason against a change.

Read the Quantities, Not Only the Direction

Entry Type describes what an entry did at one location, and whatever created the entry writes it. A few entries that reduce stock are written without it and fall back to Positive, so an entry can read Positive with a New Qty below its Previous Quantity. The quantities are what was actually recorded, so trust those.

Not Every Operation Writes a Pair

A movement writes two entries, one for the location the stock left and one for the location it arrived at. Picking does not: completing a pick logs the arrival at the picked location only, and the decrease at the source location is never written here. An increase with no matching decrease on a pick is normal, not a missing entry.

Batch-Tracked Products Have Their Own Log

Stock Logs records quantity at a location. Batch-level history lives in Batch Logs, opened from the Batch Logs action on a row in the product's Batch Stock Locations section. That section appears on Full stock control only, the action only on a batch-tracked product, and Batch Logs loads only the batches of the row it was opened from.

Correct Forwards, Never Backwards

If a quantity is wrong, put it right with a fresh Stock Count and a clear Reason. The wrong figure and the correction then both sit in the trail, which is what an auditor, or you in six months, will want to see.

One limit before you lean on the trail: deleting a product deletes its entries with it, and they cannot be recovered. Where the history matters, archive the product instead.

FAQ

Why Doesn't Previous Quantity Match My Total Stock?

Because those quantities belong to a location, not the product. On full stock control a product can hold stock in several locations, and each entry reports the one it affected.

Why Does the User Column Say System?

No signed-in user was recorded, usually because the entry came from a background process, an integration or the API. Some entries written during picking record no user either, so a pick shortfall can read System even though a picker triggered it.

Why Is the Reason Column Empty on Some Entries?

Not every change carries a reason. Manual adjustments, stock counts and pick shortfalls record one; a routine despatch or delivery does not need to.

Why Can't I See the Location, Batch Number or Serials Columns?

Your warehouse's Stock Control Type is Basic. Those three columns, and the Location and Batch ID filters, only appear on Full.

The Page Says No Stock Logs. Is Something Broken?

No. It means nothing has yet changed this product's physical stock, so there is nothing to show.

Can I Delete or Amend an Entry?

Not from this page: an entry has no edit or delete action, so correct the stock with a new entry. Deleting the product, or renaming a job reason across all identical reasons, are the two ways existing entries change.

If a stock figure still does not add up once you have read the entries, contact support with the entry's Ledger ID and the product Code. Between them they point straight at the record behind it.