Safeguard
Supply Chain•

Tracking SBOMs in a spreadsheet: which columns do you need?

Tracking SBOMs in a spreadsheet? Keep the seven NTIA baseline fields plus release, source file, identifier and status columns so a later move is easy.

Safeguard Security Team
4 min read

If you must track SBOM data in a spreadsheet, include the seven NTIA baseline fields, then add four columns that make the sheet survivable: product and release, source file name, a stable identifier such as a package URL, and a status. These extra columns are what make a later import into any tool possible.

The seven baseline fields

The NTIA minimum elements document lists these data fields for each component:

ColumnMeaning in plain words
Supplier nameWho creates or defines the component
Component nameThe name the supplier gave it
VersionThe supplier's version identifier
Other unique identifiersLookup keys for databases, such as a package URL
Dependency relationshipWhich component includes which
Author of SBOM dataWho produced this record
TimestampWhen the record was made

Treat these as your floor. Dropping any of them means the sheet cannot be turned back into a standard SBOM later without guessing.

Four columns worth adding

Product and release. Without this, the sheet cannot answer "what shipped in version 4.2?" Record the product name and the build or release identifier on every row. One sheet per release is cleaner than one sheet with a date filter.

Source file. Note the file name of the generator output the row came from, and keep that file. If a row looks wrong, you can compare it with the original instead of arguing from memory.

Stable identifier. A package URL gives a name, an ecosystem and a version in one string. It is far easier to match against advisories than a free text name. The post on package URL or CPE compares the options.

Status. A short controlled vocabulary such as under investigation, affected, not affected and fixed. Free text turns into noise within a month.

Rules that save you later

  • One row per component per release. Do not merge releases into one row with a list of versions.
  • Relationships as parent and child columns. A parent identifier column keeps the dependency tree recoverable. Without it, you hold a flat list.
  • Dropdowns for status and scope. Validation rules cost nothing and prevent spelling drift.
  • Lock the header row and the identifier column. Accidental edits to identifiers break every later lookup.
  • Never overwrite. Copy the sheet for a new release. Overwriting destroys the history that a customer or auditor may ask about.
  • Add a change log tab. Date, person, what changed, why. It is a poor substitute for an audit log, but it is far better than nothing.

What a sheet still cannot do

Even a well built sheet will not validate a file against its format specification, refresh when a new advisory is published, or restrict access by product. If you notice you are building those features with macros, that is the signal to look at a platform. The ten warning signs in when does an SBOM spreadsheet stop working describe the point in more detail.

Keep an export path open

Keep the original generator output in a folder per release. If you can regenerate the SBOM, the sheet is a view, not the source of truth. That one habit lowers the cost of every future change.

Where Safeguard fits

If you want the same fields without the manual work, Safeguard generates an SBOM and dependency inventory from a scan, and the free scan at gold.safeguard.sh/scan shows what a complete component list looks like for your own code.

Quick check

Do I need every NTIA field for every row?

Aim for it. When a value is truly unknown, say so explicitly in the cell instead of leaving it blank, so a reader can tell unknown from forgotten.

Should I keep one sheet or many?

One sheet per product release is easiest to reason about and to archive. A single giant sheet invites overwrites and filters that hide data.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.