By A.R. Hashir • Last reviewed: 30 October 2026 • Educational implementation guide, not legal advice
Short answer: An SBOM (software bill of materials) is the machine-readable inventory of components and dependency relationships in one exact product version. The Cyber Resilience Act legal floor is a commonly used, machine-readable SBOM covering at least the top-level dependencies. The defensible operational target is stronger: one signed, release-bound SPDX 3.0.1+ or CycloneDX 1.6+ record for every variant/version, full in-scope transitive coverage, stable identifiers, hashes, generation context and explicit unknowns. The Annex I SBOM duty applies with the main regime from 11 December 2027, while Article 14 reporting has been live since 11 September 2026 and already depends on fast component-to-release answers.
October 2026 update: This guide now incorporates ENISA’s 22 October 2026 Technical Advisory, the July 2026 international Minimum Elements, BSI TR-03183-2 and the current SPDX/CycloneDX lifecycle/tooling landscape.
When a security advisory names an open-source library, the first operational question is simple: Which shipped product versions contain it? If the answer depends on searching old repositories, asking individual engineers or opening a spreadsheet last updated two releases ago, the manufacturer does not yet have an SBOM system. It has an archaeological project.
This rebuilt guide separates three things that are often blended together: what Regulation (EU) 2024/2847 legally says, what the 2026 ENISA/CISA/BSI implementation baselines recommend, and what an engineering organisation should actually operate. It includes an SBOM example, format decision matrix, tool stack, quality scorecard, supplier-intake workflow and incident-response drill. For the wider date sequence, read EU Cyber Resilience Act Deadlines: 2026–2027 Timeline & Compliance Checklist.
On this page
- What is an SBOM?
- What the Cyber Resilience Act legally requires
- What changed in 2026
- Legal floor versus operational target
- Recommended CRA SBOM profile
- The 17 minimum data fields
- SPDX vs CycloneDX
- SBOM types and lifecycle
- How to create a CRA-ready SBOM
- SBOM tools
- Quality scorecard
- Supplier SBOM acceptance
- Vulnerability response and 2026 reporting
- Protecting the SBOM system
- Product-specific playbooks
- 30–90–180 day action plan
- CRA SBOM readiness checklist
- Frequently asked questions
What is an SBOM (software bill of materials)?
CISA describes an SBOM as a nested inventory—the list of ingredients that make up software applications and systems. The Cyber Resilience Act’s own definition is equally practical: a formal record containing details and supply-chain relationships of components included in the software elements of a product with digital elements.
An SBOM is therefore more than a flat list of package names. It should identify the product version at the root, the direct components it contains, the transitive components pulled in by those components, and enough metadata to match each item against vulnerability, license, supplier and support-status information.
Three distinctions matter:
- An SBOM is not the source code. It is structured metadata about components.
- An SBOM is not a vulnerability scan. It records what is present; vulnerability conclusions require matching that inventory to current advisories and analysing exploitability in the product context.
- An SBOM is version-specific. Firmware 4.2.0 and firmware 4.2.1 do not share one SBOM merely because they belong to the same product family.
A small SBOM example
The component names above are illustrative. A production SBOM would encode the equivalent records and full dependency graph in a standard format such as CycloneDX or SPDX.
What the example looks like in CycloneDX JSON
The shortened excerpt below shows the same idea in a machine-processable structure: a release root, an accountable author, a build-time generation context, a component with a Package URL and SHA-512 hash, and an explicit dependency edge. A production SBOM would contain the complete in-scope graph and pass schema/profile validation; illustrative hashes and identifiers must never be copied into evidence.
What the Cyber Resilience Act legally requires
Annex I, Part II, point (1) of the Cyber Resilience Act requires manufacturers to:
“identify and document vulnerabilities and components contained in products with digital elements, including by drawing up a software bill of materials in a commonly used and machine-readable format covering at the very least the top-level dependencies of the products”.
The important planning conclusion is that December 2027 is the legal application date, not a sensible start date. A manufacturer that cannot map components to supported product versions will struggle to triage an actively exploited vulnerability, prepare user information and evidence its decisions under time pressure.
What changed in 2026: the SBOM guidance stack is now much clearer
The Regulation still leaves the detailed SBOM profile open, but manufacturers no longer have to invent one from a blank page. Three 2026 publications now sit between the legal text and engineering practice. None of them changes the CRA by itself; together they show what a defensible implementation looks like.
The practical conclusion is that the question has shifted from “Can we produce an SBOM file?” to “Can we repeatedly produce an accurate, signed, queryable, release-bound SBOM and use it during an incident?” That is the standard the rest of this guide applies.
CRA legal floor versus a useful operational SBOM
The phrase “at the very least the top-level dependencies” is often misread as permission to stop at direct dependencies. Legally, it states a minimum. Operationally, stopping there can hide exactly the component that created the incident: a vulnerable library introduced transitively by a framework, operating-system package or supplier module.
A defensible manufacturer target is therefore: meet the Cyber Resilience Act wording, but engineer for the fuller resolved graph and explicitly mark unknown or withheld information instead of silently leaving gaps. Before freezing the company profile, check for any Article 13(24) implementing act, applicable harmonised standard and customer-specific SBOM clause.
A defensible CRA SBOM profile to adopt now
Until an Article 13(24) implementing act or cited harmonised standard supplies a more specific EU profile, the lowest-regret approach is a written company profile that satisfies the CRA wording and deliberately incorporates the stricter compatible parts of BSI TR-03183-2 and the 2026 Minimum Elements. The profile below is an implementation recommendation, not a claim that every row is written in the Regulation.
Profile rule: If a customer, market-surveillance authority or future EU act requests a different version, generate that view from the controlled source data through a tested process. Do not maintain handwritten SPDX and CycloneDX files that can silently diverge.
The 17 minimum data fields to aim for
On 29 July 2026, CISA and international partner agencies published the 2026 Minimum Elements for a Software Bill of Materials, updating and replacing the 2021 NTIA baseline. The Cyber Resilience Act itself does not list these 17 fields today. They are nevertheless a practical starting profile because they address identity, integrity, provenance and machine processing—the qualities that make an SBOM useful after release.
Nine SBOM-document fields
Eight component fields
The 2026 baseline also expects six operating practices: accommodate corrections, pursue full coverage, distribute promptly to authorised recipients, identify unknown information explicitly, create an SBOM for each software version or update, and use machine-processable data. Those practices matter as much as the fields. A perfectly formatted SBOM for the wrong release is still wrong evidence.
What BSI TR-03183-2 adds to the 17 fields
BSI TR-03183-2 v2.1.0 is not binding EU law and gives no presumption of conformity; BSI itself says it will be replaced by harmonised European standards when available. It is nevertheless the most concrete Europe-focused technical profile currently available. Its field model overlaps with CISA’s, but it is not identical.
The two baselines also pull in different directions: CISA adds an author signature and generation context that BSI’s minimum field list does not make central, while BSI adds filename and artifact-shape properties that CISA does not require. A union profile can satisfy both sets of data expectations, but only if the generator and manual-enrichment process are tested against both checklists.
SPDX vs CycloneDX: which SBOM format should you choose?
The Cyber Resilience Act does not currently force a winner. As reviewed on 30 October 2026, CycloneDX’s current specification version is 1.7 and SPDX’s is 3.0.1; BSI’s profile floor is CycloneDX 1.6+ or SPDX 3.0.1+ in JSON or XML using officially released versions. CISA identifies SPDX and CycloneDX as the two data formats widely used to generate and consume SBOMs. Using the newest version is sensible only when your generators, validators and consumers support it correctly.
Choose by product and consumer, not by fashion
The format name is less important than valid output, complete identity data and repeatable generation. Choose according to the authoritative build pipeline, downstream consumers, notified-body/customer expectations and validation tooling. Do not maintain two hand-edited SBOMs in parallel; generate one canonical record and convert only through a tested process.
SBOM types: when you generate it changes what it can prove
Two valid SBOM files for the same release can disagree because they were created at different lifecycle points. Record the generation context so a consumer does not mistake a design intention for shipped evidence.
Recommended evidence pattern: use Source SBOMs during development, make the Build SBOM the controlled release record, and reconcile high-risk artifacts with an Analysed SBOM. Deployed/runtime views are valuable operational overlays, not substitutes for the SBOM of the version placed on the market.
The SBOM lifecycle: from build record to operational system
ENISA’s October 2026 advisory describes a lifecycle of build, generation, validation, signing, storage, consumption and maintenance. In pipeline terms:
- Collect authoritative inputs: source repositories, lockfiles, package-manager manifests, build logs/link maps, OS package databases, container layers, firmware images, binaries and supplier SBOMs.
- Generate and normalise: discover direct/transitive components, construct relationships, normalise names/versions and resolve multiple instances without collapsing different artifacts.
- Validate in layers: schema syntax, company profile fields, identifier/reference integrity, license expressions, completeness indicators and agreement with the shipped artifact.
- Sign and bind: authenticate the SBOM author and associate the document with the exact release artifact digest.
- Store and index: use immutable/versioned storage and make product, version, component, identifier and hash searchable across the portfolio.
- Consume continuously: vulnerability matching, license governance, procurement risk, asset inventory, customer/authority response and support-period monitoring.
- Maintain by trigger: new build/release, dependency or base-image change, supplier substitution, build-configuration change, metadata correction and referenced-BOM update.
How to create a CRA-ready SBOM
- Define the release unit. Identify the exact product, variant, firmware/software version, delivery scope, support period and components supplied by third parties.
- Freeze an SBOM profile. Select CycloneDX or SPDX, the minimum specification version, required data fields, identifier policy, depth rule, signing method and acceptance tests.
- Generate from authoritative evidence. Integrate generation into the build or release pipeline. Depending on the product, combine source, build and analysed-artifact views instead of assuming one scan sees everything. Common generator categories include build-system plug-ins, container/filesystem analysers and supplier-provided SBOMs.
- Resolve the graph. Merge direct and transitive dependencies, referenced supplier SBOMs, copied code, forks and commercial components. Record multiple instances separately where their metadata differs.
- Normalise identity. Clean producer, name and version values; add PURL/CPE or other identifiers where appropriate; record hashes and machine-processable license identifiers; remove accidental duplicates without collapsing genuinely different instances.
- Validate before release. Check schema validity, profile fields, dependency completeness, unknown values and agreement with the shipped artifact. Generate a new SBOM version, timestamp and signature where the profile requires them.
- File it as controlled evidence. Store the immutable SBOM with the release record and technical documentation, protect access, and make historical versions retrievable for the required retention period.
- Operationalise it. Continuously correlate component identifiers with advisories and vulnerability data, assess exploitability in product context, and communicate status through the coordinated vulnerability disclosure, security advisory, VEX or CSAF process as appropriate.
- Run a retrieval drill. Pick one component and time the team while it identifies every supported product version containing it, the update path, affected variants, responsible owner and draft user/regulator decision record. This is the test that exposes a decorative SBOM.
Keep the SBOM and vulnerability status conceptually separate. The SBOM for a fixed software version is a stable composition record. Vulnerability knowledge changes daily. BSI TR-03183-2 goes as far as stating that an SBOM conforming to that guideline must not contain vulnerability information; the analysis belongs in separate advisory or VEX data linked to the product and component identity.
SBOM tools: build a stack, not a single magic scanner
No one tool sees every source file, linked binary, operating-system package, container layer and supplier module equally well. Select tools by lifecycle job and test them against a release artifact whose contents you already know.
Treat vendor claims of “CRA-compliant SBOM” as a starting question: compliant with which named profile, which format version, which fields, what coverage rule, and with what validation evidence? The manufacturer remains responsible for the result.
SBOM quality scorecard: test the data before an incident tests you
Schema validity only proves the file can be parsed. Use release gates for identity, coverage and retrievability. The scorecard below is an internal quality framework, not an EU scoring system.
Track the underlying rates rather than celebrating a total: unknown-version rate, missing-identifier rate, missing-hash rate, duplicate/inconsistent component instances, orphaned graph nodes, supplier-SBOM rejection rate and median component-to-release query time. A small SBOM can score well while covering the wrong product; a huge SBOM can still be low-quality noise.
Supplier SBOMs: intake, referenced BOMs and contract controls
A supplier’s SBOM is evidence entering your technical file, not an email attachment to file unread. Put it through the same trust process as a binary component.
Five-step supplier SBOM intake
- Authenticate: verify the supplier identity, signature/attestation and delivery channel.
- Validate: check schema, format version, company profile, identifiers, graph references and license expressions.
- Bind: confirm the SBOM describes the exact component version and artifact digest received—not the supplier’s latest release.
- Merge or reference deliberately: merged data becomes part of your SBOM; referenced data must remain available and resolvable. Preserve creator, name and version in the referencing record in case the reference fails.
- Quarantine exceptions: issue a correction request for silent unknowns, missing transitive paths or artifact mismatches. Binary-only components may need an analysed SBOM plus a supplier declaration of scope and known gaps.
Clauses to put in purchasing and component agreements
- Named format/version, serialisation, data fields, graph-depth/scope rule and identifier policy.
- One SBOM for every delivered component version/update, delivered no later than the artifact or release note.
- Correction and reissue process when metadata or component content is wrong.
- Referenced SBOM availability, confidentiality/access rules and permission to disclose to conformity/market-surveillance bodies where legally required.
- Component end-of-life/end-of-support notice aligned with your product support period.
- Vulnerability notification, fixed-version data and separate VEX/CSAF or advisory information.
- Sub-supplier flow-down for components inside the supplier’s delivery scope.
Using the SBOM during vulnerability response and 2026 reporting
The SBOM’s highest-value moment is not an audit. It is the first hour after a credible advisory says a component is being exploited. Build this query path before you need it:
- Normalise the advisory identifiers: CVE/GHSA/OSV records may use CPE or ecosystem package names that do not match your PURL exactly. Maintain aliases and test matching rules.
- Find candidate releases: query exact component/version, artifact hashes and dependency paths across supported and still-deployed product versions.
- Assess product context: determine whether the vulnerable function is present, reachable and exposed; record the result as affected, not affected, fixed or under investigation in a linked VEX/CSAF/advisory workflow.
- Prioritise by evidence: active exploitation, exposure, product criticality, mitigations and patch availability—not CVSS score alone.
- Escalate the legal decision: if the event may be an actively exploited vulnerability or severe incident, start the Article 14 awareness record and PSIRT/legal review. The SBOM supplies evidence; it does not make the regulatory determination.
- Communicate and preserve: user mitigation, fixed versions, timestamps, query results and decision rationale should be linked to the release SBOM, not buried in chat.
For the wider legal sequence and the 24-hour/72-hour filing workflow, use the companion EU Cyber Resilience Act Deadlines: 2026–2027 Timeline & Compliance Checklist. Remember the legal distinction: reporting has applied since 11 September 2026, while the Annex I SBOM duty belongs to the main regime applying from 11 December 2027.
Protect the SBOM system itself
An SBOM is both defensive evidence and sensitive architecture information. ENISA’s threat model highlights spoofed authors/tools, tampered component data, uncontrolled disclosure of versions and supplier relationships, repository denial of service and privilege escalation in CI/CD or signing infrastructure.
- Apply MFA, least privilege and branch/pipeline protection to generators, signing services and repositories.
- Protect signing keys in managed key services or hardware-backed storage; keep revocation and key-rotation evidence.
- Use access-controlled, tamper-evident storage with audit logs, backups and tested recovery.
- Harden parsers against oversized/deeply nested supplier files and validate external references before automated lookup.
- Decide which customers receive a full SBOM, a redacted/authorised view or only vulnerability advisories. Fair, reasonable and control access without making legitimate security use impossible.
Product-specific SBOM playbooks
A 30–90–180 day SBOM implementation plan
First 30 days: make one release trustworthy
- Choose one representative supported product, freeze the SBOM profile and generate its Build SBOM in CI.
- Validate schema/fields, bind it to the artifact digest and archive it immutably.
- Run a timed component-to-product-version query for the PSIRT.
By 90 days: make it repeatable
- Roll the profile to priority products, reconcile shipped artifacts and add supplier-SBOM intake.
- Connect vulnerability/license consumption and VEX/advisory decisions.
- Measure unknown, identifier, hash and graph-quality rates at every release gate.
By 180 days: make it portfolio-ready
- Cover supported legacy releases needed for Article 14 response, not only the newest version.
- Contractually align suppliers and referenced-BOM retention with product support periods.
- Rehearse authority/customer retrieval, correction/reissue and a 24-hour reporting tabletop using real SBOM data.
Six SBOM mistakes that create CRA friction
- One SBOM for the whole product family. Variants and releases diverge; evidence must follow the version actually placed on the market.
- Names without identifiers. “OpenSSL” without an exact version, producer, identifier and relationship is difficult to correlate at machine speed.
- Top-level-only thinking. The legal floor can miss the transitive component that drives the vulnerability decision.
- Spreadsheet archaeology. A list reconstructed from repositories months after shipment may not match the binary, firmware image or supplier module users received.
- Embedding today’s CVE conclusion forever. A component can become vulnerable tomorrow; keep composition, assessment and disclosure records connected but distinct.
- No retrieval owner. If nobody can produce the signed SBOM for a five-year-old supported release, the SBOM is not functioning as technical-documentation evidence.
CRA SBOM readiness checklist
- ☐ Product, variant, version, scope of delivery and support period are defined.
- ☐ SPDX or CycloneDX profile and minimum specification version are selected and documented.
- ☐ Direct and transitive coverage rules go beyond a flat top-level list where feasible.
- ☐ All 17 target data fields are mapped to the chosen format or an explicit exception process.
- ☐ Unknown or withheld values are identified rather than left silently blank.
- ☐ SBOM generation is automated in the build/release pipeline and tied to the shipped artifact.
- ☐ Supplier SBOM intake, confidentiality, correction and referenced-BOM availability are contractually and technically managed.
- ☐ Schema/profile validation, SBOM versioning, timestamping and signing occur before release.
- ☐ The SBOM is filed with the technical documentation and historical releases remain retrievable.
- ☐ Vulnerability correlation, exploitability analysis, user communication and Article 14 escalation have named owners.
- ☐ A timed component-to-product-version drill has been completed and the evidence retained.
- ☐ The build SBOM has been reconciled with the shipped artifact or an analysed SBOM where feasible.
- ☐ The SBOM is signed/attested and cryptographically bound to the exact artifact digest.
- ☐ A supplier SBOM intake gate validates signature, schema/profile, artifact binding and correction status.
- ☐ Referenced supplier BOMs are retrievable for the full product evidence-retention period.
- ☐ SBOM repository access, audit logs, backup/recovery and parser limits are controlled.
- ☐ Component identifiers can be matched across PURL, CPE and advisory aliases without manual spreadsheet work.
- ☐ VEX/CSAF or advisory status is linked to the SBOM but does not overwrite the static release inventory.
- ☐ Supported legacy product versions needed for Article 14 response are included in the query index.
- ☐ Unknown, withheld and incomplete dependency data have named owners and correction deadlines.
- ☐ Generation/validation failures can quarantine a release or trigger a documented risk acceptance.
Need the complete CRA operating system?
From Code to CE Mark places SBOM creation inside the wider manufacturer workflow: product scope, cybersecurity risk assessment, secure-by-design evidence, coordinated vulnerability disclosure, Article 14 reporting, conformity assessment and the Annex VII technical file. It is a 253-page practitioner guide with 22 chapters, 12 worksheets and 13 figures. You can also compare formats through the Books by A.R. Hashir on Amazon catalogue.
Read the Sample / Buy on Amazon →
Frequently asked questions
Is an SBOM mandatory under the Cyber Resilience Act?
Yes, for manufacturers of in-scope products with digital elements. Annex I, Part II, point (1) requires components and vulnerabilities to be identified and documented, including by drawing up an SBOM. The main regime applies from 11 December 2027.
Is an SBOM legally required from 11 September 2026?
The Annex I SBOM duty is part of the main 2027 regime, but Article 14 reporting has applied since 11 September 2026. Manufacturers therefore need a reliable component-to-product-version inventory now to assess and report qualifying vulnerabilities and incidents.
Does the CRA require SPDX or CycloneDX?
The Regulation requires a commonly used, machine-readable format but does not itself name a format. SPDX and CycloneDX are the two widely used options identified by CISA. The Commission may specify format and elements later under Article 13(24).
Are transitive dependencies required?
The Cyber Resilience Act text says “at the very least the top-level dependencies”. The 2026 Minimum Elements target all components including transitive dependencies, and BSI TR-03183-2 requires recursive resolution to the first component outside the scope of delivery. Treat top-level-only as a floor, not the operational goal.
Must an SBOM be published to customers or the public?
The Cyber Resilience Act places SBOM information in the technical documentation and provides market-surveillance access routes. Annex II, point 9 only requires user-access information if the manufacturer decides to make the SBOM available to users. Customer contracts may separately require disclosure.
Should vulnerabilities be listed inside the SBOM?
The SBOM inventories components. Vulnerability status changes over time and should be handled through correlation, product-context analysis, advisories and, where appropriate, VEX or CSAF records. BSI TR-03183-2 expressly keeps vulnerability information out of a conforming SBOM.
How often should an SBOM be updated?
Create an SBOM for each software version or update and issue a revised SBOM when underlying component information is corrected or becomes known. Do not overwrite the evidence for an older shipped release.
How long should the SBOM be retained?
Keep it with the technical documentation under the manufacturer’s retention process. Article 13(13) requires the technical documentation and EU declaration of conformity to remain at the disposal of market surveillance authorities for at least 10 years after the product is placed on the market or for the support period, whichever is longer.
Are the CISA 2026 Minimum Elements EU law?
No. The document itself says the minimum elements do not create new requirements. They are a current international implementation baseline that can inform a manufacturer’s Cyber Resilience Act SBOM profile, subject to EU implementing acts, standards and customer obligations.
Is this article legal advice?
No. This is an educational implementation summary. Product scope, category, conformity route and final SBOM profile should be confirmed against the official Regulation and qualified legal or regulatory advice where needed.
Are hashes, licenses and signatures expressly required by the CRA text?
The CRA text requires an SBOM in a commonly used machine-readable format covering at least top-level dependencies, but it does not publish a field-by-field list naming every hash, license or signature element. BSI TR-03183-2 and the 2026 Minimum Elements supply those implementation details. Treat them as profile requirements where adopted, not as quotations from the Regulation.
Is an Excel spreadsheet or PDF an SBOM?
A PDF report is a human-readable view, not a dependable machine-processable SBOM. A spreadsheet can be a working inventory, but it is a weak canonical record for dependency graphs, identifiers, validation and exchange. Use CycloneDX or SPDX as the controlled record and generate human views from it.
Should a CRA SBOM be signed?
Signing is not spelled out as a stand-alone field requirement in the CRA SBOM sentence. It is nevertheless part of the 2026 Minimum Elements and ENISA’s recommended lifecycle because recipients need authenticity, integrity and a strong SBOM-to-artifact binding. For a defensible profile, sign or attest the release SBOM and verify it on intake/retrieval.
What is the difference between an SBOM and VEX?
An SBOM states which components are in a specific software version. VEX communicates whether a known vulnerability affects that product in context—for example affected, not affected, fixed or under investigation. Vulnerability knowledge changes; the composition record for an immutable release should not be rewritten every time a CVE database changes.
Can I reference a supplier’s SBOM instead of merging it?
Yes, if your profile controls the reference. Preserve the referenced component’s creator, name and version, validate the supplier document and keep it available for as long as your product evidence must be retained. If the link can disappear or describe a different artifact digest, reference-only is not adequate evidence.
What should I do when a component version or producer is unknown?
Record it explicitly as unknown or withheld under your format/profile convention, preserve any filename/hash/URI evidence available and create a correction task. Do not invent a version to make the file look complete. Repeated unknown identity for security-relevant components should fail the release or supplier-acceptance gate.
Does generating an SBOM make a product CRA-compliant?
No. The SBOM is one Annex I vulnerability-handling artefact inside the wider duties for risk assessment, secure product properties, vulnerability remediation, disclosure, updates, technical documentation, conformity assessment and CE marking. A polished SBOM cannot compensate for an insecure or unsupported product.
Official sources
- EUR-Lex: Regulation (EU) 2024/2847, the Cyber Resilience Act
- CISA and partner agencies: 2026 Minimum Elements for a Software Bill of Materials
- CISA: Software Bill of Materials
- BSI: Technical Guideline TR-03183, including Part 2 on SBOMs
- SPDX: Overview
- OWASP: CycloneDX
- ENISA: Technical Advisory for Software Bill of Materials, 22 October 2026
- ENISA: SBOM Adoption State of Play — 2026
- CISA: Types of Software Bill of Materials (SBOM)
- CycloneDX: Specification Overview
- SPDX: Specification version 3.0.1
Disclosure: I am the author of From Code to CE Mark. Amazon controls final pricing, availability and delivery. Read the site Privacy, Disclosure & Terms.


Comments
Post a Comment
Thanks for joining the discussion. Please keep comments helpful and relevant. Comments are moderated, and promotional spam links will be removed.