What happens during rollout product push
This is where the product list comes from, and what "refreshing the catalog from MOM" actually does today. It is a three-step flow, and only the last step touches HubSpot.
flowchart LR MOM[MOM warehouse database] -->|1. load| QBO[QuickBooks] QBO -->|2. export| CSV[Product sheet] CSV -->|3. apply| QBO2[QuickBooks] CSV -->|3. apply| HS[HubSpot]
Step 1: MOM into QuickBooks
The developer runs a load from the MOM database into the QuickBooks company. It is not on the Items page; it needs a live connection to MOM and runs from the developer's machine.
What it carries for each product: SKU, name, description, price and price tiers, unit cost, whether it is a service or a stocked item, stock on hand, the income, inventory and cost accounts, and how bundles and breakout kits are made up.
What it selects: only products MOM marks as active. MOM holds thousands of discontinued products; those never leave MOM. Measured at rollout, MOM held 6,868 stock records of which 371 were active, and 371 is what went into QuickBooks.
What it does not do: it never removes anything from QuickBooks. If a product was loaded once and later marked discontinued in MOM, it stays in QuickBooks as it was until someone deactivates it deliberately. This is recorded as issue SKU-1 on the issues page, and it is why the QuickBooks list can be a little longer than MOM's active count.
Step 2: QuickBooks into the sheet
On the Items page, Export Items from QBO reads the QuickBooks product list and writes the product sheet. This is the list everyone works from; see How to Get the Product List.
Two things happen to it on the way out: every row is stamped with an Export ID saying which company and which moment it came from, and the placeholder SKU -- (QuickBooks' stand-in for invoice lines with no product) is dropped so it can never be pushed into HubSpot as if it were a product. By default the export is active products only; there is an "Include inactive items" option.
Why export from QuickBooks and not straight from MOM: QuickBooks is the accounting record. Going through it means the sheet always reflects account assignments QuickBooks actually accepted.
Step 3: the sheet into QuickBooks and HubSpot
Apply on the Items page pushes the sheet to both companies from the same file, so they cannot disagree afterwards. Before writing, it compares every row with what each system holds right now and shows the differences for you to confirm. For the rollout push this is what put the catalog into HubSpot; for day-to-day changes it is the same button.
Rules that hold for every apply, rollout or not:
- A column in the sheet is written; a column left out is left alone; a blank cell is left alone.
- A row in the sheet is written; a row left out is left alone. Nothing is ever deleted.
- Taking a product out of use is a value,
Active = false, on a row you include; never an absence. - Only products actually in the sheet are touched in HubSpot. Products that exist only in HubSpot (for example from the web store) are not affected.
The one real rollout push so far
On 2026-08-26 the catalog, 371 active products, was applied to the Staging QuickBooks company and the production HubSpot portal. Every product already existed in QuickBooks, so that side was pure update; in HubSpot it also cleaned 265 descriptions that carried stray internal text. Afterwards, 16 products that MOM had discontinued were deactivated in QuickBooks by hand so that later exports match MOM's active set.
What is not part of this flow
- Refreshing does not remove discontinued products. That is a separate, deliberate step with the Active column, described in Updating the Product Catalog.
- Stock counts ride along in step 1, but on the Items page a sheet only changes counts when "Allow inventory count updates" is on. It is off unless someone is doing a stock count.
- The web store's products in HubSpot are not from this flow and are not touched by it.