@koda-sl/baker-cli 0.375.0-dev.27cb53447 → 0.375.0-dev.7b550440d

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3683,7 +3683,7 @@ No write surface against HubSpot itself — a form's fields, redirect, or consen
3683
3683
 
3684
3684
  ---
3685
3685
 
3686
- ### `baker shopify store | products | product | collections | stock | sales | buyers | buyer | countries | best-sellers | cohorts | segments`
3686
+ ### `baker shopify store | products | product | collections | stock | sales | buyers | buyer | countries | best-sellers | cohorts | segments | promotions | stock-holds`
3687
3687
 
3688
3688
  Read-only view of the company's **connected Shopify store**, from **Baker's own copy** of its catalog and the store's own orders — never a live call to Shopify. Baker keeps the copy current from the store (a change usually shows within about a minute) and checks the whole catalog daily; product photos are already in the image library.
3689
3689
 
@@ -3707,6 +3707,8 @@ baker shopify countries --country DE # where buyers are: by countr
3707
3707
  baker shopify best-sellers --view repeat # what sells (--view products|variants|trend|together|repeat|momentum)
3708
3708
  baker shopify segments # best, loyal, at risk, new, one-time, with this store's own rules
3709
3709
  baker shopify cohorts --months 12 # buyers by first-order month: who came back, spend per buyer
3710
+ baker shopify promotions <id|handle|link> # what advertises a product: ads (via page, buy link, landing), landings, Shopping
3711
+ baker shopify stock-holds --product <id> # ads Baker paused because the product ran out, each with a resume verdict
3710
3712
  ```
3711
3713
 
3712
3714
  **`meta.store`** is on every answer: `connection` (`connected` · `needs_reconnect` · `disconnected`), `catalog` (`starting` · `importing` · `ready` · `failed`, with `importProgress` while importing), `unreadable` (products Baker couldn't read; `unreadableCapped` past 100), `checksFailing` (Baker couldn't check the store for changes lately), `storefront` (`online_store`, or `own` for a store that sells through its own site) and `lastActivity` (when Baker last heard from the store — not a promise the copy is current). `hints[]` turn each of these into what to tell the user.
@@ -3730,6 +3732,10 @@ baker shopify cohorts --months 12 # buyers by first-order month
3730
3732
  - **`cohorts`:** `--months <3-36>` (default 12); retention at months 1, 2, 3, 6, 12 and net per buyer by month 12 (`--full`: every month).
3731
3733
  - **`segments`:** each segment's buyers, share, net, average orders, days since the last order, top countries and first products, and its rule in this store's numbers.
3732
3734
 
3735
+ **`promotions`:** positional `<ref>` like `product`. Reads the product, scans this workspace's `src/pages/*` (import graph, ≤ 300 pages, files ≤ 256 KB) for its buy link, `/products/<handle>` or an option id, then `POST /api/shopify/promotions` with the linked landings. `data.ads[]` (`platform`, `level` ad|asset_group, `name`, `campaign`, `status` active|paused, `via` product_page|buy_link|landing), `data.landings[]` (`published`, `via` links_to_product|visitors_went_on), `data.shopping[]`, `data.catalog_ads`, `data.checked` (`not_checked` names a platform it could not read), `data.remembered` (the read was kept for this Session — only then is a pause staged from it undone when the product is back). `--full` adds ids, accounts, campaign / ad group / ad set ids, the Google `resource` and the URL.
3736
+
3737
+ **`stock-holds`:** `--product <ref>`, `--all` (resolved holds too). `data.holds[]` — one per paused entity and product, with `verdict` (`resumable` · `still_out_of_stock` · `changed_since` · `already_active` · `still_promotes_out_of_stock` · `cannot_confirm`) read live from the ad platform; `data.pending_sessions[]` — out-of-stock work still waiting for review that would pause this product's ads.
3738
+
3733
3739
  **Refusals:** `NO_SHOPIFY_CONNECTION` — no store is connected; `error.fix.action` is `request_connection` (`{ platform: "shopify" }`). `SHOPIFY_NOT_AVAILABLE` — Shopify can't be connected on this Baker yet; `error.fix.action` is `continue_without`. Both exit 1.
3734
3740
 
3735
3741
  ---