Not connected 💾 Not saved yet
Order Intake
Today:
Starting a new day? Clear yesterday's session first so old orders don't mix with the new pull.
🔗 Shopify Connection
Store URL
Access Token
Last session: Not set
Pulling after: All orders
Override #:
Orders Pulled
0
After Filter
0
Flagged
0
Ready to Dispatch
0
📋 Processing Summary
Pull orders to see summary here.
Triage
Review and action flagged orders before processing
Order # Date Name Phone City SKUs COD Tag Action
📭
No Texnity cancellations
Pull orders first
0 orders
Order # Date Name Phone City Address SKUs # SKU COD Payment Courier Remarks Actions
📋
No orders loaded
Go to Intake tab and pull orders from Shopify
0 selected
Manual booking
For parcels that came back or got stuck and the customer wants another courier. Add the order numbers, check the details, pick a courier and download that courier’s booking file. Each export is written to the order’s journey.
OrderDateNamePhoneCityCity checkAddressItemsCollectionCourierOn ShopifyEarlier journey
Type or paste order numbers above and press “Fetch from Shopify”.
Click any cell to correct it before exporting. Orders that are already fulfilled or cancelled on Shopify are allowed here (that is the point of re-booking) but are marked so you notice. The Collection amount starts as the order total — change it if the customer paid something in advance.
Records

Master ledger

Every order OSM has processed, one row per order (SKUs joined), in the same layout as the Master File sheet.
Process dateOrderCourierOrder dateNameContactSKUCODCityAction by softwareRemarks
Holds
Orders parked outside Main Orders. Resolve one and it comes back to Main Orders — fully re-checked (city, address, NSA) — instead of skipping straight to Pre-Clear.
🔍
0 selected
Loading…
0 selected
People & rights
Who can sign in and what each person may do. A change works on the person's very next click.
Activity
WhenWhoWhatOrderFieldBeforeAfter / note
Find an order
Type an order number: where it is now, what was said, who handled it and its journey.
Nothing is switched on for you yet
You are signed in, but your account has no rights. Ask the admin to give you a role.
Owner payments
Payments customers say they sent to your account. Look at the screenshot, check your account, then press Received (with the exact amount) or Not received.
Close Day
One click replaces the daily copy-paste: parks CBC / Bank / Exchange orders in Holds and writes the Master ledger.
📒 Master ledger
Loading…
What will happen
Pending Inbox
Tick orders where Kabir has written "confirmed" — then pull them into today's dispatch.
✓ Pull Order # Date Name Phone City SKUs COD Rameez Note Kabir Remarks CN Status
📋
CBC sheet not loaded
Configure Google Sheets in Settings
Courier Dispatch
Generate upload files per courier
📦 Courier Priority (drag to reorder)
1
TRAX
— orders
⠿
2
POSTEX
— orders
⠿
3
LEOPARDS
— orders
⠿
4
TCS
— orders
⠿
🔧 Dispatch Filters (auto-excluded from dispatch)
Orders with these remarks are held back. Remove a tag from an order in Main Orders to include it.
Bank Deposit ×
CBC ×
Complete address required ×
Previous Returns — Advance Payment Required ×
Incorrect city ×
Pre-Clear ×

📏 Address Word Threshold
Flag if ≤ words → "Complete address required"
📁 Generate Courier Files
Clean orders will be split by courier and sorted by SKU. Files will be ready to upload directly.
Trax
Not generated yet
Postex
Not generated yet
Leopards
Not generated yet
TCS
Not generated yet

🔍 Unbooked / On-Hold Orders
These orders were not dispatched this session — held back by their remarks. Use this as your cross-check.
Order #NamePhoneCity SKUsCODReason (Remarks)
✅
Click "Refresh List" after generating files

After uploading files to couriers, push pending orders to Google Sheets:
Batch Log
📅 Select Session
🔍 Find Order — Full Journey
Search any order number to see its complete history across all sessions.
Settings
Google Sheets
Both sheets must be Share → Anyone with the link → Viewer.
Exact tab name at the bottom of your sheet

Apps Script URL (optional — for direct push)
🚫 Blacklisted (Returns + Emails)
Upload returns file — system counts repeat phone numbers. Add blacklisted emails below.
Checking for returns file...
Place your returns Excel file in blackbeiger_data/returns/ folder next to server.py.
System loads it automatically on startup. Replace the file anytime — restart server to reload.
Or upload manually for this session only:

Blacklisted Emails from File:
Upload an Excel/CSV with an "Email" column — flagged same as repeat returners.
Not loaded

Add Emails Manually:
Exchange Discount Codes
Orders with these discount codes are treated as exchanges (zero COD exchange).
Manual ×
EXCHANGE-MANUAL ×
Exchanges
How the Exchange step suggests the COD and which warnings it shows. Staff can always change the COD on the screen.
Thresholds
Returns flag at or more returns
Suspicious discount COD ≤ this amount triggers verify
CBC flag at or more SKUs (COD orders only — prepaid orders skip this)
CBC value flag above Rs COD collection → CBC with "Partial Adv Pay Required" (0 = off; prepaid orders skip this)
Address flag at words or fewer
High-profile customer or more delivered (shipdash) — listed in the High profile step whatever else is flagged; you press Bypass or Hold
City NSA flag at or more NSA shipments in a city (last 90 days, Trax) and % or more of that city's Trax parcels
TCS city list
TCS opens and closes cities from time to time. Import the current list from the TCS portal (Excel, CSV or text — one city per row) so Validate cities can check TCS orders.
Remote Cities (go to TCS / Leopards)
Orders to these cities skip Trax and Postex.
Kark ×
Chitral ×
Miran Shah ×
Gilgit ×
Bunner ×
Hub Chowki ×
Lakki Marwat ×
Courier file details
The fixed values that are the same on every row of each courier's Excel file (pickup address, shipper details, service type...). Change them here whenever the courier asks you to; the next file you download uses the new values. Orders' own details (name, address, COD...) are not affected.
🗄 Data Maintenance
Order and session logs never auto-delete, so they build up over time. This zips everything older than the chosen age into blackbeiger_data/archive/ and only removes the originals after the zip is verified — nothing is ever deleted without a working backup being created first. Nothing runs automatically; this only happens when you click the button.
Blackbeiger OMS
Sign in
Forgot your password? Ask the admin to set a new one.