KTools 3.0 — Owner's Manual
Complete feature reference for owners, managers, and employees | Current as of August 4, 2026
Worker Visible/used by floor workers
Admin Admin panel only
Auto Runs automatically in the background
API External system integration
New Added or refreshed in the current KTools 3.0 cycle
System Overview
What KTools Does
KTools is the internal warehouse management and tracking system for GRTC. It connects floor workers submitting prep entries with a full admin panel where managers track inventory flow, worker productivity, orders, shipments, attendance, supplies, and more.
- Workers scan or type FNSKUs on the mobile prep form to log what they've prepped and packaged.
- Admins review that inventory, send it to the 2D system, track problems, manage orders and shipments, run reports, and oversee the whole operation.
- Integrations connect KTools to Slack for alerts, an external GRTC REST API for inventory lookups, and an external API for other systems to pull data.
Warehouse Data Flow
A typical item moves through the system like this:
Worker scans FNSKU
→
Entry saved to Box Inventory
→
Admin reviews Send to 2D
→
Submitted to 2D system (Draft)
→
Confirmed & becomes Sent Item
→
Attached to Order / Shipment
→
Order/Shipment Completed
Items that don't match expectations become Problem Items. Items found without a record become Misfit Items.
Worker-Facing Pages
The main page workers use. Accessible at the root KTools URL. Optimized for mobile and barcode scanners.
- FNSKU Entry: Scan or type an FNSKU. The system looks it up in the local database and the external GRTC API to fill in SKU name, hazmat status, and case pack info automatically.
- Case Pack Mode: If the SKU has a saved case pack template, the worker picks the template and enters how many boxes — total units are calculated automatically.
- Individual Mode: Worker enters units manually without a template.
- Prep Listed Supply: Workers can select what packing supply was used. Case-pack templates and saved SKU preferences can pre-fill this dropdown.
- Master Carton Matching: Case-pack dimensions are compared to supply catalog dimensions. When a matching carton is found, KTools can log that master carton usage by number of boxes.
- Back in Box: If the worker is putting items back into the original incoming master carton, this option skips master-carton usage logging so reused cartons are not counted as consumed supplies.
- Bag Size: For bagger pack types without a saved bag size, workers are prompted to select one. That selection is saved and pre-filled next time.
- Expiration Date: Food and supplement items have an expiration date field. When a SKU is marked as requiring an expiration date, this field becomes required before the prep entry can be saved.
- Shortages / Overages: A notes field for when the prepped quantity doesn't match the prep list. Example: "-12 units short" or "+3 extra units found."
- Confirmation Modal: Before submitting, a popup shows a full summary — SKU, units per box, number of boxes, and total. The thumbnail shows a red warning tile if the SKU lookup or product image is missing. Workers confirm or go back to edit.
- Prepper Name: Stored in a cookie so workers don't have to type their name every time.
- Left Over for FBA: Workers can flag a quantity as left-over to be handled separately outside the current order.
- Location: Workers enter a warehouse location code (e.g. shelf/bay) for the box.
- Order Type: FBA: Amazon, FBA: Hazmat, AWD, WFS, eBay, or Pre-Prep.
When a worker submits an entry, the system simultaneously saves to box_inventory, attempts to enrich sku_info from the GRTC API, stores the selected prep supply, logs supply_usage rows when supplies are selected or matched, flags expiration-date requirements when needed, and queues a SKU Hazmat Flags review when an FBA: Hazmat submission is not marked hazmat in local SKU Info.
Prep List Worker New
A mobile-optimized page that pulls the current prep list live from the GRTC system. Workers can view exactly what needs to be prepped, sorted and searchable, without needing access to the GRTC site.
- Live data: Items are fetched in real time from the GRTC prep list system via a secure server-side proxy. No worker credentials needed — the connection is handled server-side.
- Product image: Each prep item shows a product thumbnail. If no image is available or the image cannot load, a red warning tile is shown.
- Badges per item: List name, priority level, quantity required (or "ALL" if zero), HAZMAT flag, and bag type — all shown as colored chips at the top of the card.
- Quantity: ALL: When a prep item has no specific quantity set in GRTC, the badge reads "Qty: ALL" to signal prep as much stock as possible.
- Copy chips: Tap FNSKU, SKU, or ASIN chips to copy them to the clipboard instantly.
- UPC bundle items: Items that contain sub-components (UPC bundles) list each component below the main item, indented with its own thumbnail, UPC code, quantity per unit, and warehouse location.
- Notes: Any prep notes from GRTC appear in an amber callout below the item.
- Barcode scanner: The 📷 camera button next to the search field launches a live barcode scanner (Quagga.js). Scanning a UPC automatically fills the search field and filters the list.
- Sort: Priority (default), Qty High→Low, Qty Low→High.
- Refresh: Pulls a fresh copy from GRTC. The proxy caches the GRTC session so repeated refreshes don't re-login each time.
- Per-item print: Each card has a 🖨 button that prints only that one item (all other cards are hidden during print).
- Chip nav: The top chip bar links to all other worker pages.
Days Off / Call In (Worker Page) Worker New
Accessible from the chip navigation on the prep form. Workers submit their own time-off requests without going through a manager first.
- Day Off: Worker picks a date range (start and end) and adds optional notes. Used for planned absences.
- Call In: Automatically locks to today's date only. The date fields become read-only so call-in dates can't be backdated or future-dated, even if the form is manipulated.
- My History: Workers can see their own recent posts. Open (unreviewed) posts can be edited or deleted. Once an admin acknowledges or resolves a post, it's locked.
- Conflict Warning: If another worker has already submitted for overlapping dates, a warning is shown — but the request still saves. The admin sees both.
- Automatic Notifications: Every submission sends a bell notification to all admin users and optionally a Slack message if the Slack attendance rule is enabled.
Prepper Reports & Real-Time Leaderboard Worker New
Accessible directly from the workstation chip navigation (📊 Reports) or standalone at reports.php. Displays warehouse-wide prep velocity, shift leaderboards, personal productivity, and cumulative pace against annual targets.
- Prepper Identification & Personal KPIs: Automatically matches the worker's device cookie or allows choosing any prepper from the dropdown. Highlights personal units prepped Today, This Week, and This Month, plus real-time Units Per Hour (UPH) calculated from verified prep times.
- Warehouse Volume KPI Grid: Live 4-tile summary showing Team Output Today, Team Output This Week, Staged Queue volume (waiting for 2D barcode), and boxes currently on 2D draft.
- Weekly Leaderboard: Real-time rankings of preppers since Monday with podium awards (👑 #1, 🥈 #2, 🥉 #3), box counts, SKU variety, and animated progress bars measuring volume share relative to the shift leader.
- Top SKUs This Week: Visual card grid of the highest volume prepped SKUs with live Amazon ASIN thumbnails, FNSKU identifiers, units, and box counts.
- Interactive Charts (Chart.js):
- Daily Output This Week: Dual-series bar chart breaking down daily output Monday through Sunday, comparing team total against personal prepper output.
- YTD Goal Curve: Smooth cumulative volume progression curve plotted directly against annual benchmark paces (50,000 units/mo [600k/yr] and 1,000,000 unit stretch pace) with real-time pace delta readout.
- Live Activity Feed: Streaming audit of the last 12 prepped box saves across all workstations with elapsed time, order type badges (FBA / MFN), pack styles, and unit counts.
Message Admin (Prepper Station) Worker New
Accessible directly from the workstation chip navigation (💬 Message) or standalone at message.php (and message_admin.php). Allows floor preppers to send real-time questions, equipment updates, shortage alerts, or box corrections directly to warehouse administrators.
- Worker Identity Auto-Detection: Pulls the worker's name directly from the device's prepper identity cookie. On shared workstations where name changing is allowed, workers can edit or specify their name; on locked scanner guns/tablets, their profile name is preserved.
- Admin Recipient Selector: Dropdown populated with all active system administrators, super admins, and managers.
- Live Character Counter: Clean text area supporting messages up to 2,000 characters with interactive warning color indicators (amber at 1,600+ characters, red at 2,000 characters).
- Instant Bell Notifications: Submitting a message immediately creates an unread notification in the recipient admin's topbar notification bell (type
worker_message, icon 💬) linking directly to the message in their admin mailbox.
- Recent Sent History: Once submitted, the workstation presents a confirmation screen and lists the recent messages sent from that station with delivery and read receipt status badges (✓ Read by admin / ✉️ Delivered).
Admin Panel — Navigation
Dashboard Admin
The default landing page after login. Shows a live overview of current inventory across three sections.
- Box Inventory (Active): All items currently in the prep queue waiting to be sent to 2D. Filterable by search, order type, and owner/prepper. Sortable by total units, boxes, or date. Paginated.
- Completed Box Inventory: Items that have been processed out of the main queue. Filterable by search.
- Sent Items: Items that have been fully sent. Filterable by search, order type, and owner/prepper. Sortable by total, date, or type.
- Prep Notes Indicator: When a prep entry has a Shortages/Overages note, the Details button changes from 📋 to 📝 (solid blue) so admins can see at a glance which items need attention.
- Detail Rows: Clicking the Details button on any row expands an inline detail panel showing all fields including any prep note in an amber callout box.
- All counts ignore soft-deleted rows — restored items reappear and deleted items disappear automatically.
Global Search Admin
Search bar in the top navigation. Searches across the entire database simultaneously and returns results organized in tabs.
- Sources searched: Box Inventory (active), Sent Items, SKU Info, Problem Items, Misfit Items, Orders, Shipments, and recoverable deleted records.
- Fields searched per source: FNSKU, SKU name, prepper name, location, ASIN, order type, box dimensions (L/W/H), left-over quantity, UPC, description.
- Results tabs: Each source gets its own tab — only tabs with matches appear. Recoverable deleted records get their own restore tabs.
- Details modal: Click the eye (👁) button on any result to open a full detail panel. Shows all fields, a product thumbnail image or red warning tile, copyable FNSKU/ASIN chips, and quick-links to KTools and Amazon.
- Restore from search: Deleted records can be restored directly from the search results without navigating to the Data Audit page.
Notifications Admin
The bell icon in the top navigation. Shows a count of unread notifications. Polls every 15 seconds.
- Types of notifications: Problem Items, Problem Type 7 (FNSKU/Prep Change), Non-Boxed Prep (Misfit Items ready for review), Supply Requests, Attendance Requests, Manual Override resolutions, and custom external notifications via API.
- Marking read: Click the checkmark (✓) on a notification, click the notification text, or click the link it points to — all three paths mark it read. Works for both internal and external (off-site) links.
- Mark All Read: Button at the bottom of the notification dropdown clears all at once.
- Broadcast vs. per-user: Some notifications go to all admin users (attendance, supply requests). Others are targeted to specific users (problem_type_7 changes).
- Duplicate prevention: The system cleans up identical duplicate notifications for the same user/link automatically.
- Notification history: Full notification history visible at
index.php?view=notifications.
Admin Panel — Orders
Send to 2D Admin
The main working queue. Shows all prep entries currently waiting to be sent to the 2D system. This is where most daily admin work happens.
- Filter bar: Filter by search keyword, order type, or owner/prepper simultaneously. Filters stack — all three apply at once. The filter bar is a single-row gradient strip that stays compact.
- Filter totals: When a filter is active, the totals row shows both the grand total and a breakdown badge (e.g. "FBA: Amazon: 42 units") so you can see what's in the filtered view.
- Item Notes: If an FNSKU has saved notes, a sticky-note icon (📝) appears next to it. Hover the icon for a tooltip summary. Click it to open the full notes modal with all notes listed.
- SKU image warnings: Hover previews show a product image when available. If the SKU lookup, ASIN, or image file is missing, the preview shows a red warning tile instead of a blank space.
- Add Internal Note: From the notes modal, admins with edit permissions can add a new internal note tied to the FNSKU. These notes travel with the SKU across all admin views.
- Prep Notes: If the worker left a Shortage/Overage note, the Details button shows as 📝 (solid). The note appears in an amber callout box inside the expanded detail row.
- Send to 2D action: Submitting a row moves it to the "On 2D Draft" queue and records the send time.
- Sidebar badge: The "Send To 2D" sidebar link shows a live count that updates every time the Orders accordion is expanded.
Re-Labels Admin
Tracks items where the FNSKU has changed and a new label needs to be printed before sending.
- Lists all items in the
fnsku_changes table — items flagged when a Problem Type 7 (FNSKU/Prep Change) is resolved via API.
- Shows the SKU, old and new FNSKU, quantity, prepper, and location.
- Admins can delete a re-label row once the item has been physically relabeled. Deletions are soft-deleted and recoverable from Data Audit.
- Sidebar badge: Shows a live count of pending re-labels.
On 2D Draft Admin
Items that have been sent to the 2D system but not yet confirmed as fully processed.
- Shows all rows currently "in transit" between KTools and the 2D processing system.
- Filterable by search, order type, and sort options (total units, date).
- Prep notes indicator follows the same 📝 pattern as Send to 2D.
- Sidebar badge: Shows live count of items currently on 2D draft.
Sent Items Admin
The complete history of all items that have been fully processed and sent.
- Filterable by search, order type, and owner/prepper. Sortable by total units, date, or type.
- Item Notes badge: Same 📝 icon as Send to 2D — notes attached to an FNSKU are visible here too.
- Soft-deleted rows are hidden; restoring them from Data Audit makes them reappear here.
- Sidebar badge: Shows total count of sent items.
Problem Items Admin
Items flagged as having a problem that prevents normal processing. Every problem is categorized with a Problem Type.
- Filterable by search. Shows problem type label and description alongside the item.
- Resolve: Marking a problem item resolved moves it to box_inventory and removes it from this list. Admins can add a note when resolving.
- Problem Type 7 (FNSKU/Prep Change): Special case — resolution does NOT move the item to inventory. Instead it creates a Re-Label row and sends notifications to designated users. The item is removed from problem_items.
- Item Notes: Same 📝 indicator. Notes can be added when resolving a problem.
- Sidebar badge: Shows live count of open problem items. A Slack notification fires when a new problem item is submitted (if the rule is enabled).
Active Orders Admin
Tracks FBA orders that are currently open and being worked.
- Admins can create new orders, edit existing ones, and complete them when all items have shipped.
- Completing an order moves it to Sent Orders history and optionally fires a Slack notification.
- Sidebar badge: Shows count of open (not-yet-sent) orders.
Active Shipments Admin
Tracks individual FBA shipments within orders. A single order can have multiple shipments.
- Admins can create shipments, add/edit pallets, update shipment details, and complete shipments.
- Completing a shipment records the end date and moves it to Sent Shipments history. Optionally fires a Slack notification.
- Sidebar badge: Shows count of open shipments.
Admin Panel — History
Sent Orders Admin
- Complete history of all completed FBA orders. Filterable by search and date range.
- Soft-deleted orders are hidden but recoverable from Data Audit & Restore.
Sent Shipments Admin
- Complete history of all completed shipments. Filterable by search and date range.
- Soft-deleted shipments are hidden but recoverable from Data Audit & Restore.
Admin Panel — Stats / Reports
Worker Productivity Dashboard Admin New
A full analytics dashboard showing how much each worker has prepped and how efficiently over any time period.
- Period selector: This Week, This Month, Last Month, Last 30 Days, Year to Date.
- Summary cards: Total Units Prepped, Team Average UPH (units per hour), Top Performer (minimum 3 sessions required), Total Sessions.
- UPH Bar Chart: Horizontal bar per worker showing their average units per hour for the selected period.
- Total Units Bar Chart: Horizontal bar per worker showing total units prepped.
- Daily Trend Line Chart: Multi-line chart showing daily unit output per worker over time. Only shown when the period spans more than one date.
- Worker Summary Table: One row per worker — sessions, total units, average UPH. Color-coded UPH: green = 60+, yellow = 35–59, red = below 35. Footer row shows team totals.
- Recent Sessions Table: Every individual prep session with FNSKU, worker, units, minutes, UPH, and a Prep/Bagger badge. Searchable and paginated.
Prep Time Data Admin
Raw prep session data. Two tables: regular prep sessions and bagger-specific sessions.
- Both tables filterable by search and date range.
- Admins can delete individual prep time rows. Deletions are soft-deleted and recoverable.
- Data feeds into the Worker Productivity Dashboard and Daily Ops Summary Slack report.
Supply Usage Admin New
Tracks supplies consumed during prep submissions so managers can see what packing materials are actually being used.
- Usage source: The front prep form writes rows to
supply_usage when a prep-listed packing supply is selected or when a master carton is matched from case-pack dimensions.
- Packing supplies: Counted by total item quantity entered on the prep form.
- Master cartons: Counted by number of boxes entered. If no matching master carton is found, no master carton usage is logged.
- Back in Box: Prevents master carton usage from being counted when items are placed back in the carton they came from.
- Charts: Daily, monthly, and yearly usage charts plus top packing supplies, top master cartons, usage by prepper, top SKUs, and recent usage log.
- Rollup tables: Month, year, role, supply type, per-item, prepper, and SKU breakdowns show when supplies were used and how many were consumed.
- Printable usage reports: Dedicated toolbar action buttons open printable usage-by-month and usage-by-year reports with period pickers, printable summary charts, and instant print buttons.
- Breakdown table: Shows every active supply item with current month, YTD, last 12 months, and all-time counts, equipped with quick search, supply type and role filters, a used-only toggle, a reset button, interactive column sorting headers, and responsive pagination controls.
- Supply Requests integration: Supply Requests includes usage overlays so ordered/requested quantities can be compared against actual consumption.
Sent Reports By Month Admin
Monthly reporting on units sent to Amazon. Includes a year-to-date chart and per-month details.
- YTD Cumulative Chart: Line chart showing cumulative units sent for the year with a goal pace line (50,000 units ÷ working days) and a monthly bar overlay showing per-month volumes side-by-side.
- Monthly Detail Table: One row per FNSKU with total units sent that month, last sent date, and order type. Searchable and sortable.
- Footer shows YTD total, annual goal, and whether you're ahead or behind pace.
Printable Reports Admin
Three printable report views designed for printing or saving as PDF.
- Printable Month: All units sent grouped and sorted by FNSKU for a selected month. Filterable, sortable by total or last-sent date.
- Printable Year: Full year summary across four sections — Shipments, FBA Orders, Sent Items, and Problem Items. Each section is independently filterable and sortable.
- Shipment Times: Shipment duration data by year. Useful for tracking how long shipments take from creation to completion.
Custom Reports Admin
- Build ad-hoc reports by selecting date ranges, order types, and workers across the historical data.
- Charts and tables update based on selected filters.
Admin Panel — Operations
Ops Command Center Admin New
The real-time operations hub. Shows a live snapshot of everything happening in the warehouse right now. Auto-refreshes every 60 seconds.
- Today's Activity: Units prepped today, units sent today, active workers today, and a per-worker breakdown table showing each worker's contribution.
- Pipeline Queue Cards: 8 color-coded cards — Send to 2D, On 2D Draft, Re-Labels, Problem Items, Active Orders, Active Shipments, Supply Requests, Misfit Items. Each shows a live count. Border color shifts green/yellow/red based on configurable thresholds.
- Oldest Problem Items: Shows the oldest unresolved problem items so nothing gets forgotten.
- Open Supply Requests: Quick view of pending supply requests without navigating to the Supply Requests page.
- Active Shipments/Orders: Quick status of what's currently open.
- Stale 2D Queue Watch: Flags any items that have been sitting in the 2D draft queue for an unusually long time.
- Attendance Calendar: Monthly calendar showing all day-off and call-in entries above the standard attendance table.
- Open Attendance Posts: Cards for all open/acknowledged attendance requests from this view.
Misfit Items Admin
Items found in the warehouse that don't match any expected prep record. Tracked here until identified and handled.
- Filterable by search and date range.
- Each misfit can have a photo, UPC, description, quantity, and location.
- When the external prep list system calls the API to pull misfit items, all returned rows are marked as "pulled" so they don't re-appear on the next pull.
- A bell notification is created when misfits are pulled (at most once per hour — not spammed on every API call).
- Sidebar badge: Shows count of misfit items that haven't been pulled yet.
Problem Types Admin
Admin-managed list of problem categories used when flagging problem items.
- Admins can create, edit, and delete problem types. Each type has a display name and description.
- Type 7 is special: Marks an FNSKU/prep change event. Resolution sends notifications to designated users and creates a Re-Label row instead of moving the item to inventory.
Supply Catalog Admin
A catalog of all supplies used in the warehouse (boxes, tape, poly bags, labels, etc.).
- Each item has a name, type, description, and UPC. UPCs can be printed directly from the catalog.
- Prep Listed: Toggle whether a supply appears in the front prep form's prep supply dropdown.
- Role label: Optional grouping label such as box, bag, master carton, unit packaging, or label. The table groups and filters by role.
- Dimensions: Length, width, and height can be saved for box supplies. KTools uses these dimensions to match master cartons from case-pack templates and prep-form entries.
- Filterable by search, supply type, and role. Paginated.
- Admins with catalog permissions can add, edit, toggle prep-listed status, and remove items.
Supply Requests Admin
Tracks requests to restock supplies. Workers or admins submit requests; managers fulfill them.
- Main table shows all requests. Filterable by search, type, and status (open/fulfilled).
- Per-Item Metrics table: Shows how many times each supply item has been requested and how frequently, so you can spot what runs out most often.
- Usage overlays: Charts and item metrics compare units ordered/requested against units used from
supply_usage.
- YTD Orders by Item chart: Visual breakdown of supply demand over the current year.
- Sidebar badge: Shows count of open (unfulfilled) supply requests. A Slack notification fires when a new request is submitted (if enabled).
Days Off / Call In (Admin) Admin New
Full admin view of all employee attendance requests. Managers review, acknowledge, and resolve requests here.
- Filter chips: Filter by status (open/acknowledged/resolved) and type (day off/call in). Also filter by time range (today, this week, upcoming, all). All filters work client-side without a page reload.
- Acknowledge: Marks that a manager has seen the request. The worker's post moves from Open to Acknowledged status. Doesn't resolve it — just confirms it was received.
- Resolve: Marks the request as fully handled. Moves it to the resolved list.
- Delete: Admin-only hard delete for removing erroneous posts.
- Attendance Calendar: Monthly grid calendar at the top of the page showing all day-offs (amber) and call-ins (red) as colored pills on each day. Navigate month-by-month. Multi-day requests appear across all covered days.
- Auto-Resolve: Any request whose end date has already passed is automatically marked "resolved" when you load the page. No cron job needed — happens on every page load.
- Conflict detection: If two workers submit overlapping dates, both appear and neither is blocked — admins can see both and make a judgment call.
- Sidebar badge: A yellow count badge on the "Days Off / Call In" link shows how many upcoming requests are still open or acknowledged.
Add Items to Completed Order Admin
- Allows admins to manually add items to an order that was already marked completed — for catching items that were prepped and sent but not recorded before order close.
Edit SKU Info Admin
View and edit the database record for any FNSKU. Used to correct or enrich SKU data that the API didn't fill in.
- Load by FNSKU: Type or scan an FNSKU and tab out or click "Load SKU" to fetch the record. If no record exists, one will be created on save.
- Editable fields: FNSKU, ASIN, 2D Error SKU (Jon's DB), SKU Name/Description, Hazmat flag, Gated flag, Meltable flag.
- Date Added: Read-only — shows when the record was first created.
- Expiration Date Required badge: If the SKU has been flagged as requiring an expiration date, a yellow "EXP DATE REQUIRED" badge appears with the date the flag was first set and a link to the management page.
- GRTC API sync: When you save a SKU name, the system also pushes the updated name to the external GRTC REST API automatically so both systems stay in sync.
- All edits are logged in the audit trail (visible in Data Audit & Restore).
Edit Case Pack Templates Admin
Manage the templates that pre-fill units-per-box and dimensions on the prep form.
- Each template is tied to an FNSKU and stores: units per box, box weight, length, width, height, and template name.
- Packing Supply: Optional default prep-listed supply saved with the template. It auto-selects on the front prep form when that template is loaded.
- Master Carton: Optional supply catalog box saved with the template. If left on auto, KTools attempts to match by dimensions.
- Shrinker defaults: Case-pack templates can store oven temp, conveyor speed, film size, and notes. The front prep form auto-fills these when a worker selects Shrinker Case Pack and loads the template.
- Template supply records: Packing and master-carton defaults are stored in
box_template_supplies so the same template can drive prep-form defaults and supply usage tracking.
- When a worker enters an FNSKU that has a saved template, the form can auto-fill case-pack values. Shrinker Individual uses SKU-level shrinker defaults instead of a case-pack template.
- Admins can create, edit, and delete templates. Templates can be grouped — deleting a group removes all templates in that group.
- Soft-deleted templates are recoverable from Data Audit.
SKU Expiration Requirements Admin New
Tracks which SKUs must always have an expiration date entered when prepped. Flags are set automatically; only admins can remove them.
- How a SKU gets flagged: The first time a worker enters an expiration date for an FNSKU on the prep form, the system automatically adds that FNSKU to this list with a timestamp of when it was first flagged.
- API-required SKUs: If the front prep form lookup receives a GRTC response showing the SKU requires expiration tracking, KTools also treats the expiration date as required and stores the local flag.
- Sync to GRTC: Admins with SKU permissions can set
requires_expiration = 1 through the GRTC SKU field update API from this page.
- The flag never re-sets the timestamp: If an exp date is entered again later, the "flagged since" date stays at the original date. This is intentional — it records when exp date tracking started for that SKU.
- The flag is never auto-cleared: Submitting the prep form without an exp date for a flagged SKU does NOT remove the flag. Removal must be done manually on this page.
- Removing a flag: Admins with SKU permissions can click "Mark Not Required" to remove the flag. The action is instant — the row fades out without a page reload.
- Search: Filter the list by FNSKU or SKU name.
- Sidebar badge: The Operations navigation shows a count of SKUs currently marked as requiring expiration dates.
- Edit SKU Info link: Each row has a pencil icon linking directly to that SKU's edit page.
SKU Hazmat Flags Admin New
Review queue for SKUs submitted as FBA: Hazmat when local SKU Info is not already marked hazmat.
- How a SKU gets flagged: When the prep form successfully saves an FBA: Hazmat entry and the linked SKU Info row is not marked hazmat, KTools adds the SKU to this review queue.
- Mark Hazmat: Updates local SKU Info, pushes the hazmat value to GRTC, and removes the row from the queue after the remote update succeeds.
- Not Hazmat: Dismisses the review row without changing SKU Info.
- Sidebar badge: The Operations navigation shows a pending count when review rows are waiting.
Prep List Admin New
The same live GRTC prep list available to workers, presented in the admin panel with additional filtering options and a print-all button.
- Same live data source: Items are pulled from GRTC via the server-side proxy, same as the worker page. The admin session is shared — if the worker page already fetched the list, the proxy reuses the cached GRTC session.
- List filter: A dropdown lets admins filter by a specific prep list (e.g. one list vs. all lists combined).
- Search: Filter by SKU name, FNSKU, SKU, ASIN, list name, or UPC of any sub-component.
- Sort: Priority, Qty High→Low, Qty Low→High.
- UPC bundle items: Sub-components appear indented under their parent item, each with a thumbnail, UPC, quantity per unit, and warehouse location.
- Per-item print: Each card has a 🖨 button that prints only that one card. All other cards, the sidebar, and navbar are hidden during that print.
- Print All: The Print button at the top prints the full filtered list. Sidebar and filters are hidden in print view.
- Sidebar badge: The Prep List link in the Operations section shows a live count badge. The count is loaded in the background when you first log in (so it's ready before you visit the page), and updates live whenever the prep list is viewed. The last known count is cached in the browser so it persists across page navigations without extra server calls.
- Favorites badge: If Prep List is pinned to the Favorites section, the count badge mirrors there as well — same for any other badged page in Favorites.
Operations Manuals Admin
A built-in PDF viewer for operational documents such as Estes trailer pickup instructions.
- PDFs are stored in the admin assets folder and selectable from a dropdown.
- Estes Trailer Pickup Auto-Sync: When the Estes PDF is selected, the system automatically fetches the linked Google Doc, extracts the current quote number, and downloads a fresh PDF export if the quote number has changed. A status banner shows whether the PDF is current, was just updated, or couldn't be refreshed.
- No manual PDF re-upload needed when the quote number changes — it updates itself.
Warehouse Legends / Prep Game New
KTools4 status, 2026-10-04: Warehouse Legends 3 admin management is available under Warehouse Legends. Open Rules & Scoring → Core Settings and keep Game enabled OFF until the full scoring engine and prepper Game Hub/HUD are tested. Game Manual documents current definitions/settings. Daily engine code is locally verified for warehouse-date Titan targets, inactive-day team streaks, random roles, shipment penalties and retry-safe counter-attacks/Titan rewards; held work is excluded. Inventory saves, edits, deletions and problem transitions now use a retry-safe scoring queue. Audit Ledger → Points Ledger shows queued/held/failed work. After fixing the underlying error, an administrator with legends.audit.reverse can click Retry on a failed event; the original work snapshot and rules are preserved and Change History records the retry. Game OFF leaves retried work queued. Daily scan coin caps use the original day’s net ledger total. Older releases preserve today’s coin display. Unrecoverable spent or transferred rewards from deleted records appear as reward_recovery Integrity Flags for supervisor review. Prep minutes are optional: blank or 0 saves normally, and productivity speed includes only positive timed sessions. The legacy API retains untimed history for compatibility. Prep-time reports now retain separate saved sessions for repeated SKUs; schema0094 and a fresh legacy import are needed to recover previously omitted history. Scalar quest, track and metric-reward totals now reconcile record edits/deletions in their original period, including removal and later re-earning of rewards. Career level, badge-count and thousands-of-units counters now recalculate from surviving ledger totals, including downward corrections and re-earned rewards. Attendance now distinguishes acknowledged days off from automatically closed requests; call-ins with no work break streaks. Explicit Freeze use is built in the domain; its Game Hub button is still pending. Late work edits/deletions and held releases now recalculate closed Clean Run days and original-period clean-day quest rewards; ordered streak totals rebuild without double counting. Attendance acknowledgement/removal now queues automatic recalculation of affected closed days. Titan crew/Breaker coins and win metrics now reconcile target invalidation, restoration and contributor ranking. Corrected Titan outcomes also rebuild later cached team-streak displays, preserving inactive days and resetting after worked losses. Titan automatic badges and unspent loot now reconcile win invalidation/restoration using recorded outcomes, without chance rerolls. Weekly Titan boxes now reconcile whole-week wins and three surviving work days, preserving the original loot outcome. Historical season rewards now use the matching season date range, preserving newer-season badges during old corrections. Inventory event badges now preserve other qualifying records, while edited/deleted-record loot reconciles per source. First-daily eligibility now moves to the earliest surviving scored record after edits/deletions, without duplicate items. Hidden targets now fill and replace from fresh cached Prep List entries with remaining quantity, without repeating a SKU in the round or making GRTC calls; stale or exhausted caches leave a smaller pool. Corrected Hidden SKU work now retires invalid claims and restores only the original finder when the original SKU returns; deleted or zero-quantity work cannot keep the discovery reward. Boss victory rewards now reconcile corrected work against the original defeat roster and award period, restoring original outcomes without chance rerolls. Corrected boss damage now updates closed round win/loss status and reconciles the following started round’s loss penalty; restored victories reuse original outcomes. Mystery guessing is built in the domain with opening-time checks, hashed answer validation, retry-safe rewards and escalating wrong-answer costs; consumable clue-power items now have retry-safe domain use, consuming one item and adding clue power without XP or damage. Mind Reader now contributes separate clue power on positive work. Actual saved-work tests verify clue contributions disappear on zero edits/deletions, retain original strength on restoration and remain zero after repeated deletion. Quality Guardian’s drawn partner now has a one-use Momentum correction shield; Clean Run and ability-pause consequences still apply. Actual correction-queue tests confirm first-use Momentum protection, retained Clean Run/pause consequences, one audit row and normal reset on the second correction. Categorized Misfits Send to Prep now queues Misfit Medic damage once for an unambiguously matched worker; marks/imported history do not count as resolutions. Actual partial/full Send to Prep saves now pass reward queue tests, including no repeat for an already removed row. Attribution prefers the login account’s linked prepper identity and falls back to one exact normalized name. API prep batches now collect reward audit IDs and queue only after commit; rollbacks cannot award game damage. The full API dispatcher batch create/stage/commit/replay flow now passes game-reward checks while preserving success/idempotent replay responses. Satchel equip/unequip is now built in the domain: one owned enabled ability at a time, no stock consumption, and stale retries preserve newer choices. Gifting now transfers only duplicates, keeps one sender copy, rejects self/excluded recipients and records retry-safe transfer history. Daily Mystery and Weekly Ability box claims now use enabled weighted drops, fixed warehouse periods and recorded outcomes so retries cannot reroll or grant twice. XP and boss-damage consumables now apply configured effects and consume one copy transactionally, with retry-safe results. Word Find now reveals matching FNSKU letters, pays the planned word-length bonus and records replay-safe replacement; saved FNSKU snapshots preserve original letters and Skeleton Key consumes once to reveal one position. Correction reconstruction and player UI remain pending. Calendar claims now require positive surviving scored work today, use the configured day-of-month reward and pay only once. Calendar edits/deletions now revoke the original reward when qualifying work is removed and restore it once when work returns. Spent rewards require supervisor review through recovery flags. Item-specific correction verification, authenticated Rewards UI and multi-step tracks remain pending. Kiosk purchases now verify unlock level, coins and stock, deliver configured in-game items once, and reserve gift-card budget in FIFO order with the monthly player limit. Supervisor Deliver/Refund actions on Kiosk & Rewards → Claim Queue recheck waiting reservations; refunds restore coins once. Month rollover and reduced budgets reallocate unfulfilled cards. Electronic cards must be sent manually. Player Kiosk forms, cosmetics and notifications remain pending. Legends notification choices are now registered in Settings → Notification preferences. New gift-card claims notify authorized supervisors; active accounts linked to a prepper receive that prepper’s card status, Kiosk unlock, badge and gift notices when enabled. Reward rollback and replay do not leave duplicate success notices. Personal Game Hub links and the remaining supervisor event producers are pending. Tier-box odds and remaining effects are still pending. Hosted HTTP acceptance, undo handling, other action hooks, shield browser/player identity checks and authenticated Game Hub/Satchel forms are pending. Historical rounds without defeat snapshots, other shared awards, player celebrations, Season Pass interactions and recovery debts remain in progress. Full game acceptance checks and prepper screens remain in progress. Older gameplay descriptions below do not establish KTools4 runtime readiness.
Warehouse Legends is the KTools game layer. It celebrates verified warehouse work without replacing the warehouse workflow. Ordinary productivity, XP, quests, boss damage, badges, and role effects come from accepted KTools activity.
Prep Game Admin Admin
- The original Prep Game admin page still handles legacy game controls such as rounds, hidden SKUs, clues, Word Find, bonus windows, boss targets, scoring exclusions, and original event history.
- Use it when you need the older round/quest controls that existed before the current tabbed control center.
Prep Game 2 Control Center Admin New
- Overview: Live game KPI cards, current round status, quick settings, Season Leaderboard, and All-Time Leaderboard.
- Profiles: Admin-friendly profile panels for each prepper, including stats, personal goal levels, today's quest, level completion history, badges, weekly crowns, Word Find, recent scans, recent guesses, and the points/XP ledger.
- Leaderboard: Current-round and all-time standings with points, units, scans, XP, level, rank, badges, Word Find wins, clue guesses, and current daily role icons.
- Rounds: Round history with enable/disable controls.
- Players: Scoring inclusion/exclusion controls for prepper names.
- Badges: Badge catalog and recent award log.
- Hidden SKUs: Hidden SKU pool review with active/found/retired status, finder, and bonus points.
- Settings: Grouped tabs for core settings, seasons/events, scoring rules, goals/achievements, roles/ranks, badges, items/quests, activity stats, rewards, and player inventory totals. Simple key/value settings are editable here.
Warehouse Legends Editor Admin New
- The full editor at
admin/legends.php contains the complex builders that Prep Game 2 intentionally keeps read-only or summary-focused.
- Admins can manage warehouse scoring rules, seasons, timed live events, badge definitions, badge earning rules, mystery box items, item award rules, quest definitions, personal goal levels, career achievements, daily role rules, career ranks, hidden SKU side missions, boss/mystery settings, and admin prepper testing.
- Use Prep Game 2 for fast review and simple setting changes. Use the WHL Editor for definition builders and game economy configuration.
Admin Panel — Labels
Box Labels / Item Labels / Custom Labels Admin
- Box Labels: Generate printable box labels for a selected box inventory entry. Includes FNSKU, quantity, location, and prep date.
- Item Labels: Generate individual item labels by FNSKU for physical printing.
- Custom Labels: Build custom label formats with configurable fields and sizes.
- All label pages open in a print-ready layout. Use browser print (Ctrl+P) to send to a label printer.
Admin Panel — Mailbox
GRTC Email Admin
A built-in email client connected to the GRTC business mailbox. Two modes: compact (embedded in the admin panel) and full-screen (standalone app).
- Compact Mailbox: Accessible at
index.php?view=mailbox. Split-pane layout — folder/message list on the left, message reader on the right. Supports reading, replying, and composing.
- Full-Screen Mail: Opens in its own standalone layout. Better for longer email sessions.
- Normal Compose: Send to any address with CC, subject, and message body. Sends through the Bluehost mail server via authenticated SMTP.
- Trailer Pickup Template: A pre-built Estes trailer pickup email. Recipients and subject are locked in. Enter only the PRO number and your sender name. A live preview shows the final email before sending.
- Sent Folder: Successfully sent emails are copied to the INBOX.Sent folder on the mail server.
- Unread Badge: The GRTC Email sidebar section shows a red badge with the unread message count. Refreshes every 60 seconds.
Worker Messages Inbox Admin New
Located in the admin sidebar under Mailbox → Worker Messages (worker-messages.php). Provides administrators and managers with a centralized inbox to review, filter, acknowledge, and resolve direct communications from floor preppers.
- Permission Control: Guarded by the
mailbox.manage permission.
- Folder Tabs:
- To Me: Displays messages directed specifically to the logged-in administrator with an unread badge counter.
- All Prepper Messages: Available to administrators to oversee warehouse-wide worker communications and team inquiries.
- Message Management & Status:
- Unread Tracking: Unread messages display with an accent border and blue indicator dot. Topbar header displays active unread counter badge.
- Mark Read: Click "✓ Mark Read" on individual cards to acknowledge messages. Marking a message read automatically resolves the corresponding bell notification.
- Mark All Read: Quick one-click action to acknowledge all unread messages in the active view.
- Delete: Remove obsolete messages with confirmation protection.
- Search & Filters: Instant search filtering by worker name, recipient admin name, or message text, plus a toggle for "Unread" messages.
Admin Panel — Admin Tools
Pull SKU Info Admin
- Fetches the latest SKU metadata (name, ASIN, hazmat status, etc.) from the external GRTC REST API for one or more FNSKUs and saves it to the local
sku_info table.
- Useful for pre-populating SKU data before workers start scanning, or for refreshing stale records.
External API Docs Admin
Documentation for the KTools outbound/external API — the endpoints that external systems (like the GRTC prep list server) call into KTools.
- get_problem_items: Returns all open problem items with their type information.
- resolve_problem: Resolves a problem item. Moves it to inventory or creates an FNSKU change depending on type. Accepts an optional note.
- get_total_prepped: Returns the total prepped unit count across all active inventory.
- get_misfit_items: Returns all unpulled misfit items and marks them as pulled.
- external_notification: Allows external systems to push a notification into KTools for one or more users.
- get_sent_report: Returns full sent history for a SKU including order and shipment details.
- skus_requiring_exp_date: Returns a JSON list of all SKUs currently flagged as requiring an expiration date, with FNSKU, SKU name, and the date the flag was set, then clears the returned local flags.
- All endpoints require an
api_key query parameter. Key is configured in api2/api.php.
GRTC REST API Docs Admin
- Documentation for the inbound GRTC REST API — the API that KTools calls to fetch SKU data, task info, orders, reports, restocks, and notes from the GRTC server.
- Includes authentication details (X-API-Key header), all endpoints, parameter tables, and example requests/responses.
Cron Job Docs Admin
- Reference page listing all scheduled cron jobs that run automatically on the server.
- Includes the schedule (time/frequency), the cPanel command to set it up, a browser test URL, and notes on what each job does.
- Currently documented: Daily Ops Summary Slack report.
Slack Integration Admin New
Connect KTools to a Slack workspace to receive automatic alerts when important events happen.
- Setup: Enter the Slack Incoming Webhook URL, an optional bot token, default channel, and workspace label. Send a test message to verify the connection.
- Notification Rules: Each event type can be toggled on/off independently and can have its own Slack channel override.
- New Supply Request — Fires when anyone submits a new supply request.
- New Problem Item — Fires when a problem item is submitted.
- Shipment Completed — Fires when an admin completes a shipment.
- Order Completed — Fires when an admin completes an order.
- Attendance Request — Fires when a worker submits a day off or call-in.
- Daily Ops Summary — A scheduled report (runs via cron) summarizing the day's units, workers, and queue counts. Tracks run history so it doesn't post the same date twice.
- Slack messages include a direct link back to the relevant KTools admin page for quick navigation.
- All rules respect the global Slack enabled/disabled toggle — if Slack is disabled, no messages are sent regardless of rule settings.
Error Logs Admin
- Shows the PHP error log tails for the KTools application and admin area.
- Accessible only to admins and super-admins.
- Useful for diagnosing issues without needing server access.
Data Optimization Admin New
- Orphan Row Finder: Scans cleanup-scope tables for records pointing to missing orders, shipments, SKU info, or parent records.
- Possible Test Data: Searches cleanup-scope text fields for configured test terms while excluding product title/SKU-name fields.
- Data relationship flow: Interactive map of cleanup/audit tables and key relationships, including supply usage links between box inventory, SKU info, case-pack templates, template supplies, supply items, and supply usage.
- The flow supports zoom in/out, click-drag panning on the grid background, table expansion, and row-focused highlighting from the cleanup result tiles.
Data Audit & Restore Admin New
A safety net for the entire system. Soft-deleted records are never permanently deleted immediately — they can be restored here.
- Recoverable record types: Attendance Requests, Supply Requests, Problem Items, Misfit Items, Notifications, Re-Labels, Box Inventory (2D Draft), Sent Items, Active Orders, Active Shipments, Prep Time rows.
- Summary tiles: Color-coded count tiles at the top show how many recoverable records exist per type at a glance.
- Restore: Click Restore on any deleted record to bring it back. Attendance restores write a new audit event logging who restored it and when.
- Audit Trail: A searchable log of all create, edit, and delete actions across SKU Info changes, data recoveries, and other tracked actions. Shows old and new values.
- SKU Info auditing: Every create and edit of a SKU Info record is logged here, including which fields changed and who made the change.
User Management Admin
Manage who can log in and what they can do.
- Admins with
manage_users permission can add, edit, and delete user accounts.
- Roles:
user, admin, and super_admin. Roles control which admin tools and menu sections are visible.
- Permissions: Granular permission flags control specific actions — e.g.
manage_sku_info, delete_items, manage_orders, manage_attendance_requests, manage_data_recovery. Each permission can be granted or denied per user independently of their role.
Admin Panel — Settings & Help
Settings Admin
Per-user preferences. Changes here only affect the logged-in user.
- Theme: Choose from 14 color themes. Each theme changes the gradient colors used across table headers, filter bars, the top navigation, and sidebar active links.
- Light themes: Default (blue/teal), Lavender
- Dark themes: Dark, Forest Dark, Ocean, Sunset, Slate, Rose, Bailey, Midnight, Mocha, Crimson, Cyber, Nord, Mint, Copper
- Default Home Page: Choose which page loads when you first log in.
- Favorites Navigation: Pin up to 28 pages as favorites. Drag to reorder. Favorites appear as a collapsible "★ Favorites" section at the top of the sidebar — above all other navigation. Per-user: your favorites don't affect anyone else's sidebar.
Help Guide & Live Help Admin New
- Feature Guide: A built-in summary of current KTools workflows organized by area: Help pages, daily warehouse work, operations, Warehouse Legends / Prep Game, reports, search/recovery, admin tools, labels, mail, settings, and users. Good starting point for new employees and admins.
- Owner's Manual: The embedded long-form reference for owners and maintainers. Use it when the Feature Guide is too short.
- Operations Manuals: The PDF/manual viewer for process documents such as trailer pickup and other warehouse references.
- Warehouse Legends note: Current game administration is split between Prep Game, Prep Game 2, and the full WHL Editor. Prep Game 2 is the fast tabbed control center; the WHL Editor handles complex definition builders and economy configuration.
- Live Help: An AI assistant chat specifically trained on KTools usage. Ask it how to do something, what a page does, or what a field means. It cannot make any changes to data, create records, or perform admin actions — it only answers questions.
Admin Panel — Navigation Features
Sidebar Navigation
- Accordion sections: Orders, History, Stats/Reports, Operations, Admin Tools, Labels, GRTC Email, and Help all expand/collapse independently. Only one section is open at a time.
- Active state: The current page link is highlighted, and the correct accordion section auto-expands when you load any page.
- Live badges: Sidebar item counts (Send to 2D, On 2D, Re-Labels, Problem Items, Orders, Shipments, Misfit Items, Supply Requests, Attendance, Mail unread) update automatically — badges refresh when you expand an accordion section, and mail refreshes every 60 seconds.
- Prep List badge: Shows the current total item count from the GRTC prep list. Fetched in the background immediately after login so the count is visible before you visit the page. Cached in browser localStorage — badge shows the last known count instantly on every page load, no extra API call needed.
- Favorites badges: Any page pinned to the Favorites section that has a count badge (e.g. Prep List, Send to 2D, Problem Items) will also show that count badge in the Favorites list — no setup required.
- Sidebar scroll: If the sidebar list is taller than the screen, a scrollbar appears inside the sidebar so all links are reachable without scrolling the page.
- Sidebar toggle: The ☰ hamburger button in the top-left collapses or expands the sidebar. Preference is remembered between sessions via local storage.
- Bottom padding: A gap below the Help section prevents the last link from sitting flush against the bottom of the screen when scrolled down.
Top Navigation Bar
- Quick Links: Searchable dropdown of common external links (GRTC tools, external references). Type to filter. Keyboard-navigable.
- Quick Operations: Searchable dropdown of embedded tools and shortcuts. Selecting an item opens it in a modal overlay inside the admin panel — no new tab needed for most operations.
- Add Box Contents — Embeds the legacy KTools prep form
- Upload 2D Box Info — Embeds the GRTC 2D import tool
- Print Labels — Opens the print dividers tool in a modal
- KTools Prep List — Embeds the GRTC prep list
- Daily shift progress bar: Shows units sent today vs. the daily target (50,000 ÷ number of working Mon–Fri days in the current month). Provides an at-a-glance view of whether today's pace is on track.
- Notification bell (🔔): Shows unread count. Drops down to show recent notifications. Polls every 15 seconds.
- Terminal Status (⚡): Live floor preppers, latest inventory scan activity, connected zebra/dymo label printers, QZ Tray local connection switch, Print Queue telemetry, and Live Help assistant connection.
- Device Status (📱): Real-time connected station tablets/scanners health, 24h active sessions, and hardware error logs.
- Warehouse Legends Snapshot (🏆): Real-time snapshot of the game layer: Game enabled/disabled status and season, preppers active and scoring today, pending mission/claim queues, active boss round with live HP damage meter and top hitters, daily titan target units progress, and past round results with victory/defeat status, damage totals, and round MVPs.
- User menu: Shows the logged-in username and provides a logout option.
- Refresh button: Reloads the current page.
Mobile Admin Panel New
A separate mobile-optimized interface at /ktools/admin/madmin/. Uses the exact same pages and data as the desktop admin — no separate codebase.
- Sticky top bar: Shows page title and navigation controls.
- Slide-in drawer: Full navigation — all sections, all links, all badges — slides in from the left via a hamburger tap.
- Bottom tab bar: Quick-access tabs for Home, Orders, Reports, Operations, and the drawer menu.
- Scrollable tables: All tables automatically become horizontally scrollable on small screens — nothing is cut off.
- Live badges: Same live counts as desktop, loaded on first render and refreshed every 90 seconds.
- Auth shared: Uses the same login session as the desktop admin. Already logged into
/admin/? You're automatically in on /madmin/ too.
Background & Automatic Features Auto
These features run without any user action. Understanding them helps explain why certain things happen automatically.
Real-Time Counts
- Sidebar badge refresh: Every time you expand an accordion section in the sidebar, the badge counts (Send to 2D, Problem Items, Supply Requests, etc.) are silently refreshed from the server. You always see current numbers without reloading the page.
- Mail unread badge: Refreshes every 60 seconds so you know when new email arrives.
- Notification bell: Polls every 15 seconds. New notifications appear without a page reload.
- Ops Command Center: The entire page auto-reloads every 60 seconds with a countdown timer shown on screen.
Notification Intelligence
- Misfit notification throttle: The external prep list calls the KTools API to pull misfit items. Each pull would normally create a new notification — but the system now creates at most one "non-boxed prep" notification per hour. After that, it re-uses the existing one until it's been more than an hour.
- Auto-mark-read: Notification links embed their notification ID. When you navigate to the linked page, the notification is marked read automatically — even if you click the text link instead of the checkmark button.
- Duplicate cleanup: If the same notification was somehow created more than once for the same user and link, the extras are cleaned up silently.
SKU Data Enrichment
- On every prep submission: The system calls the GRTC REST API to fetch the latest metadata (name, ASIN, hazmat status, sell price) for the submitted FNSKU. If the API returns valid data, it's saved to
sku_info automatically.
- COALESCE timestamp protection: The
requires_exp_date_since field on SKU info is protected with SQL COALESCE — once the "first flagged" timestamp is set, it never gets overwritten by later submissions, even if the same exp date requirement is triggered again.
- SKU name sync to GRTC: When an admin saves a SKU name on the Edit SKU Info page, the updated name is pushed to the external GRTC REST API via a background PUT request. Both systems stay in sync.
Supply Usage Tracking
- Selected packing supplies: The prep form logs the chosen prep-listed supply to
supply_usage using the total item quantity entered.
- Template defaults: Case-pack templates can auto-select a packing supply and master carton through
box_template_supplies.
- SKU defaults: Individual SKU submissions can save a preferred prep supply to
sku_info.pref_supply_item_id so the dropdown can auto-select it later.
- Master carton matching: Box dimensions are matched against active supply catalog dimensions. Matched cartons are logged by box count; no match means no master carton usage is counted.
- Back in Box: Skips master carton usage when the product is packed back into the carton it arrived in.
Attendance Auto-Resolve
- Every time the Attendance Requests or Ops Command Center page loads, the system automatically marks any attendance request whose end date is in the past as "resolved." No cron job — this runs on every page load, keeping the open/upcoming list clean without manual intervention.
Estes PDF Auto-Sync
- When the Estes Trailer Pickup PDF is opened in the Operations Manuals viewer, the system fetches the linked Google Doc in the background, parses out the current quote number, compares it to the cached value, and downloads a fresh PDF export from Google Docs if the number has changed. The cached state is stored in
.estes_state.json.
Daily Ops Summary (Cron)
- A scheduled cron job runs once per day and posts a Slack message summarizing: total units prepped, total units sent, number of prep sessions, active workers, top performers, and current queue counts (orders, shipments, problem items, supply requests).
- Run history is tracked — the same date is never posted twice (unless forced).
- Schedule and setup instructions are documented on the Cron Job Docs page in Admin Tools.
Soft Delete & Recovery
- When admins delete most records (attendance, supply requests, problem items, misfits, notifications, re-labels, inventory rows, sent items, orders, shipments, prep times), the records are not immediately erased. Instead a
deleted_at timestamp is set.
- All queries throughout the system automatically filter out soft-deleted rows so they're invisible in normal operation.
- Deleted records can be restored from the Data Audit & Restore page at any time. Restoring removes the
deleted_at timestamp and the record reappears everywhere instantly.
Audit Trail
- Every significant create, edit, and delete action is logged to the
data_recovery_audit table with a timestamp, user ID, username, action type, old values, and new values.
- This log is searchable from the Data Audit & Restore page and is also surfaced in the Global Search (Audit Log tab).
- SKU Info creates and edits are always audited — both the before and after state are recorded.
External API API
The KTools external API allows other systems (like the GRTC prep list server) to interact with KTools data programmatically.
Authentication
- Every request requires an
api_key query parameter. Requests with an invalid or missing key receive a 401 Unauthorized response.
- Keys are configured directly in
api2/api.php in the $valid_keys array.
- All endpoints live at
/ktools/api2/api.php on the live server.
Available Endpoints
- get_problem_items — Returns all open problem items including their type display name and description. Used by the GRTC prep system to show problem alerts.
- resolve_problem — Resolves a problem item by ID. Moves it to inventory or creates an FNSKU change event depending on the problem type. Optional
notes parameter saves a note against the item's FNSKU.
- get_total_prepped — Returns the sum of
total_quantity across all active box inventory. Quick metric for external dashboards.
- get_shrinker_settings — Returns shrinker defaults and case-pack template context for a valid SKU/FNSKU.
- save_shrinker_settings — Saves explicit shrinker defaults for Shrinker Case Pack or Shrinker Individual workflows.
- get_misfit_items — Returns all misfit items not yet pulled by an external system. As a side effect, marks all returned rows as pulled and creates a "non-boxed prep" notification (throttled to once per hour).
- external_notification — POST or GET. Sends a notification to one or more KTools users from an external system. Requires a valid
sender that matches a type in the notification_types table. Supports optional links and external URLs.
- get_sent_report — Returns full sent history for a specific SKU including all associated order and shipment details.
- skus_requiring_exp_date — Returns all SKUs flagged as requiring an expiration date on every prep submission, then clears the returned local flags so the next call only receives newly flagged SKUs. Response includes FNSKU, SKU name, the timestamp when the flag was first set, and clear counts. Results ordered oldest-first.
Deployment note: The June 26 supply tracking release uses four database migrations on the live server: 2026_06_26_supply_items_prep_listed.sql, 2026_06_26_box_inventory_prep_supply_item.sql, 2026_06_26_supply_usage_foundation.sql, and 2026_06_26_sku_info_pref_supply.sql. Runtime schema guards also exist in the front form and admin entry point, but the SQL files remain the formal migration record.
KTools 3.0 Owner's Manual | Updated June 27, 2026
KTools 4 Data Optimization and Data Audit & Restore
Admin Tools → Data Optimization retains the original separate Orphan Row Finder and Possible Test Data scans. Select a table or scan all operational tables; set a maximum of 10–500 results. Test terms are comma separated; product title fields are excluded. Review matching fields, row data and deletion mode before cleanup. Results have independent pagination.
Data Relationship Flow displays the current database schema, including tables outside cleanup scope. Click tables to expand columns, search for a table, zoom, drag to pan or use fullscreen. Focus a cleanup row to inspect its relationship values and matching related records. Arrows point toward parents.
Separate Damage Out and Misfit image galleries support previews, refresh, individual cleanup, select all eligible and bulk cleanup. Damage-out images linked to active records are protected. Images from deleted items must pass the selected grace period; misfit cleanup lists only unreferenced files. Removed images go to protected recovery storage.
Data Audit & Restore has table count tiles, Audit Trail and Restore Data tabs. Recoverable Data Audit shows actor, date, action and before/after values, including existing deleted rows without maintenance history. Attendance Workflow Audit shows the latest 80 request events. Restore Data groups records by table with independent pagination. Original IDs are preserved; attendance status is recovered from its deletion audit when available.
Cleanup requires a reason and confirmation, records a recoverable snapshot and blocks stale rows and referenced hard deletions. Restore dependencies first. Hard-deleted records without a snapshot require Backup & Restore. Separate permissions control viewing, cleanup and restoration. These pages act only on the current KTools 4 installation. Scans show at most 500 results; restore lists show up to 500 per table, and audit shows the newest 200 matches.
On 2D Draft
Move a box to another order (2026-10-08): on On 2D Draft, open a box's Edit window. Under SKU / Order Type, the Order dropdown shows the box's current order (marked "current") and every active (open) order; orders of a different order type are labelled "different order type". Pick another order and Save Changes to move the box; leaving the current order selected changes nothing. The target order is checked to be still open before anything is saved, and the move is recorded in the box's edit history. Needs permission on_2d_draft.move_order (admin, manager) in addition to on_2d_draft.edit; without it the field is not shown.
Walmart UPC lookup
Walmart-only items found by UPC (2026-10-08): GRTC's search does not search Walmart UPCs, so an item that exists in GRTC only as a Walmart listing (for example 0687748833994, "2oz. Bottle Plastic Weld") used to show "Item name unavailable" on Send To 2D / On 2D Draft and did not link on the prepper scan page. KTools now keeps a small private index of every GRTC Walmart UPC and uses it when a numeric code finds nothing, then loads that item by its GRTC id. Leading zeros do not matter (UPC-A, EAN-13 and GTIN-14 spellings match). The index refreshes itself when a code is missing and it is more than 15 minutes old; that one lookup takes about 5 seconds longer. An item added to GRTC moments ago is found on the next lookup after a refresh. Nothing to set up.
Ship Walmart (boxes, pallets & temp labels)
Ship Walmart (2026-10-11): packs the Walmart (WFS) rows of an order on On 2D Draft into boxes and pallets, prints a temp label for every box, and gives the numbers Walmart's Shipping step asks for. Admin: Orders → Ship Walmart (under Active Shipments). Preppers: the 🚚 Ship Walmart chip, only for preppers picked in Ship Walmart → Settings.
- Start: Orders tab → + Start build on a Walmart order (or the 📦 Ship Walmart link on On 2D Draft / Active Orders). Rows with no order must be moved to an order on On 2D Draft first.
- Case packs: each case has a checkbox. Checking it creates a closed single-SKU box with the next number (S1, S2…) on the active pallet, weighed with the draft row's box weight. If the draft has no case weight, type it once; it is saved on that draft row.
- Loose units: enter a quantity → Add to box. One SKU in the open box makes an S box, two or more make an M box. Enter the box weight → Close box & add to pallet. A box cannot be closed without a weight. Mixed boxes are labelled M1 (wfs-sku, wfs-sku).
- Boxes table: label, WFS SKU, GTIN and quantity per box, weight, pallet, 🖨 print, ↩ Reopen (loose boxes), 🗑 delete. Numbers are never reused: a deleted or unchecked box keeps its number as void.
- Pallets: pallet weight = box weights + empty pallet weight (default 40 lb in Settings, editable per pallet). Enter height and stackable per pallet; + Add pallet makes the new pallet active.
- Walmart numbers: the summary strip shows Items / Units, Single SKU cases, Mixed SKU cases, Pallets and Total weight; 📋 Copy for Walmart gives one pallet row per pallet. Item details check uses the same columns as Walmart's Item details pop-up.
- Finish: locks the build and keeps it in Box History. It does not change the On 2D Draft rows. Units left, missing pallet heights or no boxes block finishing; an admin with Finish permission can override with a reason. An open box with items always blocks.
- Box History: search by order #, Walmart plan ID, WFS SKU, GTIN, item name, box label (S3, M2) or the scanned temp-label barcode (WM<build>-<label>). Boxes and box contents also appear in the top-bar search.
- Permissions: ship_walmart.view, .pack, .finish, .reopen_finished, .box.delete, .labels.print, .history.view, .settings (admin and manager by default). Station access is the Settings allowlist; preppers can finish only when Settings allows it and never with an override.
Troubleshooting: "No case weight on the draft" → type the case weight. "Only N loose units left" → the rest are case packs or already boxed. "Ship Walmart is not turned on for you" (station) → add the prepper in Settings. A row removed from the draft after packing shows a warning; its boxes are kept.
Mailbox: GRTC Email & Worker Messages
Admin → Mailbox → GRTC Email uses the same mailbox account as the old system. Folders show unread counts. Search sender, subject and message text, filter unread mail and page through results. Choose a message to read it below or beside the list; fullscreen and the reader layout controls help on smaller screens. Opening a message marks it read when you have email-management permission.
Select messages to mark read/unread, star/unstar, move to a folder or move to Trash. New folder creates a subfolder under the selected parent. Permanent Trash deletion is not offered. Incoming attachments download from the reader. Email previews block remote images and active content.
Compose, Reply, Reply all and Forward open a centered message dialog. Enter comma-separated To/CC addresses, a subject and message; review and confirm before Send email. Trailer Pickup fills the same Estes recipient, CC, quote and signature as the old template after you enter PRO number and sender name. Text forwarding does not attach original files. A retry of the same submitted message uses its send token to avoid a second delivery in the current session; if delivery succeeded but the Sent copy failed, do not resend.
Mailbox → Worker Messages lists messages from preppers with search, unread filtering, paging, full-message preview, read/unread controls and selected-message removal. My messages is the default. All administrators requires a separate permission. Removed messages retain a recovery snapshot under Data Audit & Restore. Global search includes worker messages addressed to your own account.
The email page requires PHP IMAP on the hosting server and SMTP access. Connection settings live in protected app/config/mail.php (copied from the old mail_config.php); the old installation is a read-only configuration fallback if that file is absent. Credentials are never displayed in the browser or stored in database backups. Email view, sending, management and viewing other administrators’ worker messages have separate permissions. Reading and changing email acts on the shared mailbox used by both versions.
Live Help
Live Help uses restricted Iron Bot agent ktools-help for read-only support. Open Help → Live Help and ask a question. Optional page name/path, SKU and error reference accompany your account and general help snippets; no record lookup or automatic admin actions occur. Each account sees only its own saved conversations. Waiting means the Windows bridge has not claimed the question; answering means it has. Failed questions may be sent again. Start a new conversation after 100 messages; limit 30 questions per hour. Do not include passwords, keys or personal information. The bridge must be running; server-only settings and a shared key enable it. The OpenClaw gateway stays private. History is preserved through legacy reset/import. Setup: docs/LIVE_HELP.md. Connection status also appears next to Send question. Check connection again retries loading. Requests time out after 15 seconds and retain your typed question. If website configuration is off or missing its bridge key, sending stays disabled and the status explains the missing setting. Configuring Iron Bot on its PC does not enable the website. Page context has help tips: hover over or focus the question-mark buttons or fields. Page name is the screen heading (for example On 2D Draft); page path is its admin filename (admin/on-2d-draft.php). A full URL is accepted but reduced to an existing admin filename without query values. SKU and ADM error reference are optional identifiers only: they do not fetch item records or logs. General questions can leave the default Live Help context unchanged. Live Help includes verified order-creation instructions: Orders → Active Orders → New Order; enter Order Name, choose Order Type, optional Notes, then Create Order. The New Order button requires orders.create. Send To 2D can assign completed rows to the new order. Answers are requested as plain text for the chat display. Live Help now uses shared system and game knowledge in app/knowledge plus the full online manual topic catalog. Each question receives relevant current excerpts so replies can explain prerequisites, detailed steps and troubleshooting. In-progress game features are labeled separately from verified behavior. This is static guidance, not live record access; undocumented questions require clarification. Every agent must update shared knowledge and both manuals when features or game rules change. Failed questions display an LH reference; accounts with Error Logs permission can use View error details. Error Logs has a Live Help bridge errors source covering authentication/configuration rejection, unclaimed questions, answer timeouts and reported bridge failures. Earlier failed questions appear as historical failures with the original cause unavailable. Keys, claim tokens and question text are not logged. The bot receives your question, account name/role, recent conversation history and general help snippets along with these clues.