Hi
–Total products
–Units available
–Products out of stock
–Last stock change
Catalog
Every product in Shopify, and what is on
the shelf right now. Backfill brings in anything not here yet
— all of it, whatever the product type.
Customers
Everyone Shopify holds, mirrored here so the rest of
the portal can name and reach them.
Orders
Every Shopify order the portal holds, with what it
was worth and who placed it.
Revenue
Net of refunds, excluding cancelled
and test orders.
Channels
Where the money came in.
Product types
What is carrying the range. This is the one that
decides what gets bought next.
Top products
By revenue in the selected range.
Customer value
Lifetime, not the selected range — a lifetime
value measured over 30 days is not one.
Retention
Each row is everyone whose first order landed in
that month, and how many of them came back later.
The mirror
These reports read a local copy of Shopify orders,
refreshed nightly.
Launch allocations
Decide who gets a high-demand release: pick the launch’s
products from the catalog, prioritise by customer tags, narrow by store and
recent orders, and get one ranked list for everything on hand.
Promo loop
Trailers and promo images, played in this order on every screen
they are set for. Videos play muted, full length; images for the seconds set.
Upload 16:9 — 4K is best, and 1080p screens play a lighter copy.
Screens
Each TV runs its own link. Open it in the display's browser, full
screen. If a link gets out, give the screen a new one — the old one stops working.
What the screens show
The side panel and the ticker. Events come from each store's calendar.
A full-screen slide of the cards whose prices
went up most, built from the price tracker and slotted into the loop. It sits next to
the buylist QR, so a card going up points straight at selling it to you.
–Last fetched
BoardGameGeek
Board games carrying a
bgg.id metafield
get their rating, weight, player counts, mechanics and categories
filled in from BoardGameGeek. Link a game below or set the id in
Shopify; everything else arrives on its own. Runs every five
minutes, and refreshes ratings weekly.Product changes
Every mirrored field that moved, as the catalog sync
saw it. Metafields are not here — they change far more often
and would bury a price change; BoardGameGeek imports has the
bgg.* half.Decklist orders
Orders with at least one card added by the decklist
search. Each gets the order tag
decklist, plus one per
game (decklist-pokemon, decklist-mtg,
…), within five minutes of checkout. The cards themselves carry
a hidden _decklist property customers never see.Price changes
Every price that moved on a tracked product type,
per variant. Imported rows came across from the
old tracker’s metafields; everything else was recorded here.
Click a product for its chart, its full history and its recent
sales.
BoardGameGeek imports
Every fetch, including the ones that found nothing
to change. A week with no entries at all means the job is not
running – which looks the same as a quiet week until you look
here.
Store events
Each store’s upcoming events come from its
Google Calendar, linked from the location’s
custom.events_calendar metafield in Shopify
(Settings › Locations). Every calendar below is checked live
against Google. The website caches events for up to ten minutes,
so a fix here can take that long to show there.Backfills
The long imports, and where each has got to. They
walk one page at a time and survive being interrupted; a paused
one is waiting to be picked up, not broken.
Background jobs
Scheduled integrations, and what each last did.
–On Card Singles
–Waiting to assign
–Needs a look
Assign singles to the Card Singles profile
New singles are queued automatically by the Shopify webhook.
Backfill is for the ones that existed before that webhook did.
–Assigned, last 24h
–Assigned, last hour
–Last webhook
–Waiting
Recent activity
Queued and assigned variants, newest first.
Anything here that is not a single means the allowlist is wrong.
Profile tag backfill
Adds the profile-complete tag to every customer
whose account carries enough to reach them. Scanning changes nothing —
read the numbers, then apply.
An address record existing is not
enough on its own. Shop Pay and Login with Shop create addresses holding
only country and ZIP.
These arrive with real names and
real shipping addresses but relay emails at connectebay.com that cannot receive
marketing. They pass every check above. Leave both off for the first scan to see
how many there are.
Recent runs
Every scan and every apply, newest first.
–Last customer webhook
–Tagged, last 24h
–Untagged, last 24h
–Waiting to write
Keep the tag correct automatically
Shopify tells us whenever a customer is created or edited.
Each one is judged by the rules on the Backfill tab, and the
profile-complete tag is added or removed to match.
–
Judges that
customer against the rules above and does exactly what a webhook would.
The quickest way to prove this is wired up without editing a real account.
Webhook activity
Every tag this rule has moved, newest first.
–Changes, 24h
–From orders, 24h
–Still pairing
–Last change
All stock changes
Every change to available stock, for every product at
every store, with the order that caused it. Orders are matched from
the orders database: sales, and the restocks of cancellations and
refunds. Anything else — a hand correction, a transfer — shows as
unexplained: Shopify's API has no adjustment history to say who.
All stores
Revenue nets off refunds, the same
measure as the Reports page, so these rows add up to it.
Store
Top sellers
By units sold in this store.
Staff access
Each person gets exactly the permissions you tick.
Price tracker
Records every price change on the tracked
product types, and keeps the storefront’s price chart
(
custom.price_history) and recent sales
(custom.transaction_history) up to date.Refresh one product
Reads one product from Shopify now, imports its
existing history if that has not happened yet, logs any price that
moved, and rewrites both metafields. The safe way to try the whole
path on a single product before turning the tracker on — a
dry run shows what it would do without writing anything.
Tracked product types
One per line, spelled exactly as Shopify spells the
product type. A type added here is picked up by the next morning
read; a type removed stops being recorded but keeps its history.
Recent runs
Scheduled runs are the morning read,
which records a point for every product. Queue runs
publish what changed; one appears within five minutes of a price
edit or a sale.
Sales channel updates
Why a product was taken off, or put back on, its
marketplace sales channels — with the stock level and threshold
behind each decision. Search by name, or paste a Shopify product
ID.
Sales channel rules
Each rule takes some product types off some sales
channels when store stock reaches that product's in-store
threshold. The threshold itself lives on the product, in the
custom.instore_threshold metafield — a rule
decides which channels, not when.
Rules are matched top to bottom and the first one that covers a product's type wins. A product no rule covers is left alone.
Rules are matched top to bottom and the first one that covers a product's type wins. A product no rule covers is left alone.
Safety settings
Two settings that decide how the rules are applied,
rather than what they say. Both are saved with the rules.
This must match the In store Inventory Utility
channel. That channel hides the add-to-cart button on
the website from the same metafield. If it hides the button at
“at or below” and this gates at “below”,
there is a window where a marketplace still lists the product
and the page it links to cannot be bought from.
If a scheduled or manual run would change more products than
this, it stops and changes nothing — and
the run detail lists what it would have done. This is what
catches a threshold set wrong across the catalog before it
pulls everything off five channels.
A dry run ignores it on purpose, so a preview always shows you the real number. Raise this before a first baseline run if the dry run says more products would change than the limit, then put it back.
A dry run ignores it on purpose, so a preview always shows you the real number. Raise this before a first baseline run if the dry run says more products would change than the limit, then put it back.
Scripts
Automations that change the live Shopify store. A
dry run reads everything and writes nothing — take one and read
the action list before enabling anything.
Run history
Every execution, including the dry runs. Click a run
to see what it decided about each product.
–Products gated
–Waiting to be decided
–Gave up retrying
–Gate
Currently gated
Products the gate has taken off its marketplace
channels because store stock reached their threshold. All of them are
still on the Online Store, the till, and the in-store utility channel
— the product page works, the buy button is what the theme
hides.
Integrations
Checked live, every time you open this tab.

Wulf·Purchasing