Publishing a Product
Module: ChemIQ For: Admin, Manager
Publishing a product is the moment your Public SDS Portal goes from a configured-but-empty catalog to something a customer can actually use. It's a single toggle on the product detail page — but Tellus runs a handful of pre-flight checks before the toggle becomes available, and one of them stops you in your tracks when the SDS has been flagged for review.
This page walks through where the toggle lives, every pre-flight gate (hard and soft), what auto-slug generation does, and how slug collisions get handled inside your catalog.
Where to Publish
- Open ChemIQ from the main navigation
- Go to Product Catalog
- Click a product to open its detail page
- Scroll to the Public SDS Portal section
- Flip the
Publish to Public SDS Portaltoggle
If the toggle is disabled or the product detail page shows a yellow banner, one of the pre-flight gates is blocking you. The most common reasons are below.
Pre-Flight Gates
Before a product can be published, Tellus checks four things in order. The first three are simple readiness checks; the fourth is the SDS review-status check that has both a hard and a soft variant.
Gate 1: Portal Is Enabled
The portal must be enabled at the company level — meaning a slug has been claimed (see Claiming Your Slug).
| Symptom | What it means | Fix |
|---|---|---|
| Banner: "Public SDS Portal not enabled" | No slug claimed yet | Go to ChemIQ > Public SDS Portal and claim a slug |
This is a one-time setup. Once you've claimed your slug, every product in your catalog is eligible.
Gate 2: Product Has a Current SDS
The product must have at least one SDS document on file. Tellus serves the most recent active SDS automatically.
| Symptom | What it means | Fix |
|---|---|---|
| Banner: "No SDS on file for this product" | Product was added but no SDS uploaded yet | Upload an SDS — Quick Import, SDS Library, or manual upload all work |
Gate 3: Emergency Contact Exists
A valid 4-field emergency contact record must exist at either the company level or the site level (see Setting Up Your Emergency Contact).
| Symptom | What it means | Fix |
|---|---|---|
| Banner: "Emergency contact missing" | Neither company nor site has a complete 4-field contact record | Configure the contact in ChemIQ > Public SDS Portal > Emergency Contact panel |
Gate 4: SDS Review Status
This is the most consequential gate. Tellus checks the SDS's review_status and behaves three different ways depending on what it finds.
| Status | Behavior | What you see |
|---|---|---|
approved or reviewed | Publishes cleanly — no friction | Toggle flips and the URL goes live |
pending | Soft block — override required | A confirmation dialog asks you to check I have reviewed this SDS and accept the responsibility of publishing it. A free-text reason field is required. Submitting logs the override in the audit trail with your user ID, timestamp, and the reason. |
flagged | Hard block — cannot publish | The toggle is disabled. A banner explains why the SDS was flagged (e.g., "Parser low confidence on Section 2 hazards" or "Manual review flag: missing pictograms"). Publish is impossible until the flag is resolved. |
Why the Hard Block on Flagged
A flagged SDS is one Tellus or your team has explicitly marked as wrong, incomplete, or untrustworthy. Publishing it would mean serving content you already know is suspect — directly to the workers and customers who depend on it during exposures and emergencies. There is no override path for flagged SDSs. The fix is to address the flag (re-parse, replace the document, manually correct the parsed data) and clear the flagged status. Then the toggle becomes available.
Why the Soft Block on Pending
pending means the SDS has been uploaded and parsed but no one has reviewed it yet. It might be fine — most are. But Tellus wants you to make that decision consciously, not by clicking the wrong toggle. The override is the conscious-decision moment, and the audit-trail log is what protects you (and us) if anything goes sideways downstream.
A useful soft-block reason looks like: "Reviewed Section 2 hazard classification — pictograms and signal word match the SDS PDF. Publishing while formal review queue catches up."
A bad soft-block reason looks like: "ok" or "approved". Tellus accepts it, but the audit trail is also what a downstream auditor or your own internal review queue is going to look at. Write the reason like you mean it.
Auto-Slug Generation
The first time you publish a product, Tellus auto-generates a URL slug for it based on the product name plus CAS number (where present). The generated slug:
- Uses lowercase, kebab-case (
a-z,0-9, hyphen only) - Combines the product name with the CAS number when CAS is on file
- Strips characters that aren't allowed in URLs
| Product name | CAS | Generated slug |
|---|---|---|
| Acetone | 67-64-1 | acetone-67-64-1 |
| EHP High Performance Waterborne Basecoat | (none) | ehp-high-performance-waterborne-basecoat |
| Krylon ColorMaster Primer (Gray) | (none) | krylon-colormaster-primer-gray |
| Methyl Ethyl Ketone | 78-93-3 | methyl-ethyl-ketone-78-93-3 |
You can override the auto-generated slug from the product detail page before publishing. Same character rules apply as the company slug (see Claiming Your Slug for the character rules). The only reserved words at the product level are URL route segments — search, api, download — because those would collide with paths inside your portal. The full federal-regulator reserved list does not apply at the product level.
Slug Collision Within Your Portal
Product slugs are unique per company, not globally. Two different Tellus customers can each have a product called acetone-67-64-1 — those are different URLs because the company slug is different (acme-chemicals/acetone-67-64-1 versus cleanpro/acetone-67-64-1).
Within your own portal, slug collisions can happen if you publish a second product with the same auto-generated slug. The most common case is two product variants — a 5-gallon and a 55-gallon SKU for the same chemical. Tellus handles this in three ways:
- Auto-suffix on first publish — if Tellus detects a slug collision, it appends a numeric suffix automatically:
acetone-67-64-1, thenacetone-67-64-1-2, thenacetone-67-64-1-3. - Manual edit before publishing — if you want a more meaningful disambiguator, override the slug before you click publish.
acetone-67-64-1-5galandacetone-67-64-1-55galis clearer thanacetone-67-64-1versusacetone-67-64-1-2. - Slug history is preserved — once a product slug has been public for 7 days, that slug is locked. You cannot reuse it for another product in your catalog even after unpublishing the original. See Renaming Your Slug for the 7-day activation rule and why it applies to product slugs too.
What Happens When You Publish
The moment the toggle flips:
- The product URL goes live at
sds.tellusehs.com/{your-slug}/{product-slug}— see Per-Product SDS Page for what visitors see - The product appears in your branded catalog at
sds.tellusehs.com/{your-slug}— see Company Catalog Page - The 7-day activation clock starts for both the company slug (if it hasn't already activated) and this product's slug
- A
publishedevent is logged in your audit trail with your user ID, timestamp, and (if you used the soft-block override) the override reason - The product becomes eligible to appear on a site poster — see Site Access Posters
There's no manual sync, no cache flush, no waiting period. The URL works in seconds.
Unpublishing
Flipping the toggle back to off removes the product from your public catalog immediately. The product URL returns a branded "no longer available" page (not a 404 — that would imply the URL was wrong). Visitors who land on it via a stale link see your branding and a message pointing them back to your catalog.
Unpublishing does not:
- Delete the SDS from your library — the SDS stays in ChemIQ for internal use
- Remove the product from your site posters — site posters are catalog-driven and pull from inventory, not from public-publish state
- Delete the audit trail or access log — past access events are preserved for compliance review
- Free up the product slug — if the slug has activated (7 days public), it remains locked even after unpublishing
If you accidentally publish a product and unpublish within the 7-day window, the slug is released back to your portal's namespace. After 7 days, it's locked.
Bulk Publishing
Publishing one product at a time is the default Phase 1 flow. Bulk publishing — flipping many products to public from a checklist — is on the Phase 2 roadmap. For now, the per-product flow is the only path; if you're seeding a catalog with a few dozen products, plan an afternoon and work through them.
Permissions
| Role | Can publish | Can override pending SDS | Can resolve flagged SDS |
|---|---|---|---|
| Admin | ✓ | ✓ | ✓ |
| Manager | ✓ | ✓ | — |
| Program Coordinator | ✓ | — | — |
| Employee | — | — | — |
Resolving a flagged SDS requires Admin-level access because it changes underlying SDS metadata that drives compliance reporting.
Related
- Public SDS Portal — Overall feature overview
- Claiming Your Slug — Required first step before any product can publish
- Setting Up Your Emergency Contact — Required gate before publishing
- Per-Product SDS Page — What customers see at the live URL after you publish
- Renaming Your Slug — Why product slugs lock after 7 days
- SDS Library — Where SDS review statuses (
approved,pending,flagged) come from