Products
Connect Shopify credentials to load products.
Hand-built for bike shops
Connect Shopify credentials to load products.
Upload an invoice file
Drop it here or click to browse · PDF, Excel or CSV
No B2W orders yet. Click "New B2W Order" to start.
| Repair Job | Item | Supplier | Brand | Status | Reference | Claim Date | Age | |
|---|---|---|---|---|---|---|---|---|
| Loading⦠| ||||||||
| Make | Model | Year | Type | Subcategory | Components |
|---|---|---|---|---|---|
| Loading⦠| |||||
A CSV or XLSX supplier feed adds or updates records in bulk. Supports: scraper manifest, Chicken CycleKit, Bike Outlet, Bosch (MBPS).
Drop a CSV, XLSX or ZIP file here, or click to choose one
β
Loadingβ¦
| Photo | SKU | Supplier | Name | Vendor | Barcode | Stock | Status | Actions |
|---|---|---|---|---|---|---|---|---|
| Loading⦠| ||||||||
Keywords matched (case-insensitive) against product names to auto-assign Shopify collections when a product is created.
| Collection | Keywords (comma-separated) | |
|---|---|---|
| Loading… | ||
Built-in suppliers (linked to invoice parsers) are read-only. Add custom suppliers here to make them available in the Manual PO form.
Off until you tick it. Off, Purchase Orders is its POs: Still to come filters Recent PO uploads to the POs with units still to come. On, it also has the Still to come list, To review, Book these in, On order at the supplier and a note under each owed line saying whether the supplier's own list has it. Products βΊ Reorder List's On order column counts the suppliers' lists only while this is on. Only an admin can change it.
What every PO review starts with. Only an admin can change these.
Where a delivery's stock goes unless a line is sent elsewhere.
Ticked, a product made from an invoice is a Shopify draft until someone publishes it. Unticked, it goes live as soon as the PO syncs.
Unticked, a line already in Shopify is one short row (tap βΈ for its price, sale and not for resale) and so is a new line, with a card under its row for what the product needs: βΈ opens it, and it opens by itself when the line looks like a product already in Shopify.
Unticked, an invoice under review has the screen to itself, and the list of POs comes back when it is confirmed or discarded.
Unticked, every line opens going to the Stock to above, and Suggest split under the lines works a split out when pressed, showing what it would move first. Ticked, the split is put on the lines as the review opens.
Ticked, and with new products staying off the storefront, Confirm & Sync takes a new line with no retail price: the product is a Shopify draft with its stock booked in, listed under Needs a price on Purchase Orders, where typing the price publishes it. Unticked, Confirm refuses a new product with no price, as before 9 October 2026.
With the choices hidden, every PO syncs to Shopify, adds the delivered quantity, goes to the Stock to above, and starts its new products as set here. Blank prices are filled at each supplier's markup (set beside the supplier above; the Parts search markup where none is set). A split between the shops is only suggested unasked with its box above ticked. β© on a line puts a split back.
Both shops. The intake's Β½, 1, 2 and 3 hour options and the repair panel's Β½ hr and 1 hr labour cards are priced from it. Only an admin can change it.
Both shops. A bike left this many days after the Ready text is suggested one week's fee, then another each week. The Ready text quotes both. β¬0 turns it off. Only an admin can change it.
Both shops. Once the late fee starts (see above), a customer whose bike is still Ready is reminded that day and every week after, until it is collected. Each message says what the fee is so far. A text goes first; if there is no number or the text fails, it goes by email. In the message use {name} {bike} {shop} {fee_per_week} {amount}. Staff can pause a single job from its Details tab. Off until you tick it. Only an admin can change it.
Email isn't set up on this copy (SMTP_USER and SMTP_PASS), so reminders can only go by text.
Both shops. Off every labour and part line of a repair whose customer has the Club member tick (tagged club in Shopify). A job keeps the % it was given. 0 gives new jobs nothing off. Only an admin can change it.
Fixed prices for quick-add jobs on the repair intake form. Prices can differ per location β switch tabs below to edit Sligo or Boyle independently.
Loadingβ¦
When a supplier part on a repair's Parts tab has no published retail price, its price is the supplier's cost × this, raised to the next .99. At 1.83, a €10 cost shows €18.99.
Quick-add part buttons shown at the top of the Parts tab in repair tickets. Edit labels and prices here; changes appear immediately next time a ticket is opened.
Loadingβ¦
Pre-written messages used in the repair ticket Message tab. Use {customer_name} (full name), {first_name}, {bike}, {ref} and {shop} as placeholders. {lines} puts in the ticket's priced items and {total} the total, each best on a line of its own.
Loadingβ¦
Off unless it's set: trade-in enquiries are kept until someone deletes one on the Used Bikes page. When it's set, once a day the app deletes each enquiry that was accepted or declined that many days ago. The customer's name, contact details and photo go, and the log under Deleted trade-ins (log) keeps the date it came in, the bike and the outcome. Enquiries still waiting for a decision are never deleted this way. Leave it blank or 0 to keep them. Only an admin can change it.
Assign modules individually to each user. Dashboard is always accessible to everyone.
| Username | Modules | Admin | Location | Created | Last active | |
|---|---|---|---|---|---|---|
| Loading… | ||||||
Loading user guideβ¦
Loadingβ¦
What a new product gets when an invoice line has no setting of its own.
For stock with no invoice file: type the lines in, then review before it syncs.
| SKU | Name | Qty | Cost (€) | Retail (€) |
|---|