← Al Davies, 250 High Street

Chemical inventory log in SharePoint: location, amount, SDS link

Short answer: keep one SharePoint list where each row is one product you keep on site. Use the Title column for the product name. Add the storage location, the amount, a link to the safety data sheet file, the date that sheet was last checked and the date the next check is due. Then save a view of rows whose check is due. This guide is about keeping a record. It does not tell you what is safe, how to store a product, what labels you need or what rules apply to your site. Follow your organization's own safety program and the safety data sheets for each product, and ask your safety lead what applies. The exact names of menus and buttons may differ on your screen, because Microsoft changes them from time to time.

What one row has to answer

Picture a person holding a bottle of glass cleaner and asking four things: where does this belong, how much is there, which sheet describes it, and when did anyone last look at that sheet? One row answers all four. The record falls apart when those answers live in different places, such as a clipboard sheet, a binder and someone's inbox. A list puts them side by side and lets a view pull out only the rows that need attention.

You will end with a list called "Chemical inventory log" and three views: "On site now" for everyday lookups, "Sheets to check" for whoever keeps the log, and "Shelf walk" for comparing the list with the shelves.

Related guides cover neighbors of this one: "How to set up an asset register in SharePoint" for tools and equipment, and "Inventory tracking for a small team without new software" for stock that gets used up.

Files first, then the list

Gather the safety data sheet files into one document library on your SharePoint site before touching the list, one file per product. Each row will hold a link to its file, so the link has to exist first. Our advice, not a Microsoft rule: name each file with the product name followed by the supplier name. Keep the supplier's originals. The list points at them and never replaces them.

Then open the team's SharePoint site from https://www.microsoft365.com and create the list. Microsoft's help page says: "Or, you can create a new list from your SharePoint site home page or the Site contents page, select + New > List." Pick "Blank list: Choose to start a list from scratch." Name it "Chemical inventory log". Exact names may differ.

Columns, grouped by what they do

Every list has a Title column, and it is required by default. Use it for the product name, such as "Glass cleaner". Rename it "Product" in the column settings, or turn off Require. See "Rename or hide the Title column in a SharePoint list". Add the rest with "Add column", thinking of them in four groups.

Identity. Title (Single line of text) renamed "Product", plus Supplier (Single line of text) for the company you buy from.

Place and quantity. Location is a Choice column with numbered values: 1 Supply room, 2 Workshop, 3 Back shelf, 4 Vehicle. Swap in the places your site really has. Amount is a Number column for how many containers are on hand. Unit is a Choice column: 1 Bottle, 2 Can, 3 Box, 4 Drum, 5 Other.

The sheet. Data sheet is a Hyperlink column that holds the link to the file from the library. Sheet checked is a Date and Time column, date only, for the day someone confirmed the file is the current one. Next check is a second date-only column for the day the next confirmation is due. Check due is a Yes/No column; give it a default value when you create it so a new row is not left blank.

Lifecycle. Status is a Choice column: 1 Active, 2 Used up, 3 Removed, with 1 Active as the default. Notes is a Multiple lines of text column for anything the next person should know.

Our advice, not a Microsoft rule: a Choice column sorts by its text, so the number in front holds your order. The number is there to preserve the sequence, not because SharePoint sorts by the position of a choice.

Choice columns beat free text for Location, Unit and Status because the wording stays identical when you filter, so a typo such as "Suply room" cannot slip in. A default Status also matters: a blank Status would hide the row from any view that filters on Status.

A worked example: Vendor 12 delivers a new product

A delivery from Vendor 12 brings a case of degreaser. Open the list, select "+ New", and fill in the row the same day: Product reads "Degreaser" exactly as the label does, Supplier reads "Vendor 12", Location is 2 Workshop, Amount is 6, Unit is 3 Box if it came as a case. Paste the link to the degreaser's data sheet file into Data sheet. Set Sheet checked to today and Next check to the date your own program calls for. Leave Status on 1 Active.

Months later the last container is gone. Change Status to 2 Used up. Do not delete the row; the row is the record, and the views will hide it without help. If the product is hauled away unused, 3 Removed says so.

Two notes from that example. Type the product name from the label every time, so one product does not turn into three spellings. And add the row when the product arrives, because a row added later is a row added from memory.

Three views, one classic editor

All three views are built the same way. Open the view menu and choose "Edit current view" to open the classic view editor, or create a new view and then edit it there. Under "Filters", choose "Show items only when the following is true". Microsoft's help page on filtering a view says: "Scroll down to the Filters section, and select Show items only when the following is true."

On site now. Filter Status "is equal to" 1 Active. Show Product, Location, Amount, Unit, Data sheet and Next check. Sort by Product, A to Z. Rows marked 2 or 3 drop out of this view yet stay in the list.

Shelf walk. Copy On site now, rename the copy, group it by Location and sort by Product inside each group. A person standing at the back shelf can read down one group and compare it to what is physically there. If a product sits on a shelf with no row, add the row. If a row has no product on the shelf, look around before changing its Status.

Sheets to check. Filter Status "is equal to" 1 Active, add a second filter, Next check "is less than or equal to" [Today], show Product, Location, Data sheet, Sheet checked and Next check, and sort by Next check with the oldest on top. Microsoft's page on filtering says: "There are two keywords that you can use to filter based on the current day [Today], or the current user [Me]." It also says: "You must use the classic view editor to filter columns using these keywords." That is why this filter is set in the classic editor. Our advice, not a Microsoft rule: set any blank or "is not equal to" filter there too.

When a person confirms the sheet for Vendor 12's degreaser, they enter the new Sheet checked date and push Next check out. The row leaves Sheets to check without further action.

Why the due date lives in a filter

A natural idea is a calculated column that counts the days until the next check. It does not work. Microsoft's page on formulas says: "The TODAY and ME functions are not supported in calculated columns but are supported in the default value setting of a column." So the comparison against today happens in the view filter above, not in a column.

The Check due Yes/No column is a manual helper. Someone can set it by hand, or a scheduled flow can, for anyone who wants a Yes next to rows needing attention. See "Send a reminder before a due date in a SharePoint list".

Who sees the rows

A view changes what is displayed and locks nothing. Anyone with access to the list can open a different view and read every row. Since this log shows what you hold and where it sits, decide who needs access. Set permissions on the list itself, and ask your admin which groups suit your site. For one private column, see "Keep one column private (like pay or notes) in a shared list".

Where a list stops

A list cannot see a shelf. A product nobody entered, a sheet the supplier replaced, or a container moved to the vehicle stays wrong until the Shelf walk catches it. Email when a check comes due is a separate flow: see "Late tasks nobody notices: setting up late alerts".

This guide does not set what you must record, how long you keep it or how often a sheet gets checked. Treat the dates here as stand-ins for the schedule in your own program, and ask your safety lead what applies at your site.

Mistakes that break the record

When to get help

You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: $5,000 for one, built in 2 weeks. See "What a SharePoint tracker costs to build". Bring one example of the problem to a free call.

Tell me what's still manual

I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.

See trackers I built: Tools I built

FAQ

Why is the product name in the Title column?

Every list has a Title column and it is required by default. Using it for the product name means no column goes unused. You can rename it to "Product", or turn off Require.

Why does my [Today] filter not work from the column header?

Microsoft says you must use the classic view editor to filter columns using the [Today] and [Me] keywords. Use Edit current view, then Filters.

Can I show a "days until check" number in a column?

Not with a calculated column. Microsoft says the TODAY and ME functions are not supported in calculated columns. Use a view filter on Next check instead.

Can the view hide the log from some people?

No. A view only changes what is shown. Anyone who can open the list can switch views. Use permissions to control who sees the list.

Does this log meet my site's rules for chemical records?

This guide cannot say. It tracks records only. Follow your organization's own safety program and the safety data sheets, and ask your safety lead what you must keep and for how long.

Sources