Shipments
The core module of Deprixa Plus. Manages every package from creation through final delivery — including tracking, status management, labels, exceptions, and activity logs.
Overview
The Shipments module is the operational heart of Deprixa Plus. Every package handled by your company exists as a shipment record — from the moment it is booked until it is delivered (or returned/disposed). The module supports the full courier workflow with wizard-driven creation, automatic tracking number assignment, PDF label generation, barcode scanning, courier assignment, status transitions with notes, and a complete activity log.
Navigate to Shipments using the left sidebar or pressing S from anywhere in the app.
Shipment Lifecycle
Every shipment progresses through a defined set of statuses. The primary path is linear from creation to delivery, with optional exception and hold branches.
Additional status branches that can occur at any point after pickup:
Exception
Delivery failed. Could not reach recipient, address not found, recipient refused. Requires resolution action: re-attempt delivery, hold at depot, or return to sender.
On Hold
Shipment intentionally paused — awaiting payment, customs clearance, client instruction, or damaged goods assessment. Must be manually released from hold.
Returned
Package has been physically returned to the sender or warehouse after a failed delivery or client cancellation.
Shipment Statuses Reference
| Status | Code | Color | Meaning | Next Allowed States |
|---|---|---|---|---|
| Created | created |
Gray | Shipment record created, not yet physically received | Picked Up, Cancelled |
| Picked Up | picked_up |
Blue | Package physically collected from sender | In Transit, On Hold, Exception |
| In Transit | in_transit |
Amber | Package moving through the network toward destination | Out for Delivery, On Hold, Exception |
| Out for Delivery | out_for_delivery |
Purple | Assigned to a courier for final delivery today | Delivered, Exception |
| Delivered | delivered |
Green | Package successfully received by recipient | Terminal state — no further transitions (admin can force if needed) |
| Exception | exception |
Red | Delivery attempt failed or problem encountered | Out for Delivery (reattempt), On Hold, Returned |
| On Hold | on_hold |
Yellow | Deliberately paused — awaiting instruction or action | In Transit, Out for Delivery, Returned, Exception |
| Returned | returned |
Orange | Package returned to sender or warehouse | Terminal state |
Creating a Shipment
Shipments are created through a 4-step wizard accessible from the + New Shipment button in the navigation bar or the Shipments module.
-
1
Step 1: Sender & Receiver
Enter contact and address information for both the sender (origin) and the receiver (destination).
Sender fields: Name, Company (optional), Phone, Email, Address Line 1, Address Line 2 (optional), City, State/Province, Postal Code, Country.
Receiver fields: Same as sender.
Tip: If the sender or receiver is a registered Client in the CRM, start typing their name in the search field and select them to auto-fill all address fields.
-
2
Step 2: Package Details
Describe the physical package contents:
- Description — what is inside (e.g., "Documents", "Electronics - 1 laptop")
- Weight — in the configured unit (kg or lb)
- Dimensions — length × width × height in the configured unit (cm or in)
- Declared Value — for insurance and customs purposes
- Number of Pieces — for multi-piece shipments
- Special Handling — flags: Fragile, Temperature Controlled, Hazardous, Signature Required
- Notes — delivery instructions, access codes, etc.
-
3
Step 3: Service Selection
Select the service type for this shipment. Available options are defined in Settings > Services:
- Standard — 3–5 business day delivery at regular pricing
- Express — Next-day delivery with priority handling
- Same-Day — Collection and delivery on the same calendar day
- Freight — For heavy or oversized items requiring special handling
Also on this step:
- Assign to Branch — which branch is responsible for this shipment
- Assign Courier (optional) — pre-assign to a specific courier; can be changed later
- Billing — select the client to invoice, or "COD" (Cash on Delivery), or prepaid
-
4
Step 4: Review & Confirm
A summary of all entered data. Review sender, receiver, package details, service, and billing. Correct any errors by navigating back through the steps. Click Create Shipment to finalize.
On creation:
- A tracking number is auto-generated (format:
TRK+ 8 digits, e.g.,TRK00814726) - Status is set to Created
- A notification is sent to the receiver if email notifications are enabled
- The shipment label PDF is available immediately for printing
- A tracking number is auto-generated (format:
Tracking Number Format
Tracking numbers are auto-generated at creation time. The default format is:
[PREFIX][8-DIGIT-SEQUENTIAL-NUMBER]
Default: TRK00814726
Custom: MYDCO00814726 (if prefix is changed to "MYDCO")
Examples:
TRK00000001 ← first shipment
TRK00814726
TRK99999999 ← maximum with 8 digits (99,999,999 shipments)
The prefix can be changed in Settings > Shipping Config > Auto-Tracking Number Prefix. Changing the prefix only affects new shipments; existing tracking numbers are not modified. The numeric part is zero-padded to 8 digits and auto-increments.
Changing Shipment Status
Status changes can be made from two places: the Shipment List (bulk or individual) or the Shipment Detail page.
From the Shipment Detail Page
- Open a shipment by clicking its tracking number
- Click the Change Status button in the action bar (top-right)
- Select the new status from the dropdown (only valid next states are shown based on workflow rules)
- Optionally add a Note explaining the status change (e.g., "Recipient not home — left notice")
- Click Update Status
From the Shipment List (Quick Status)
- In the Shipments list, find the row for the shipment
- Click the status badge — a quick dropdown appears with valid next states
- Select the new status (a note field appears for Exception status)
- Click Confirm
Bulk Status Change
- In the Shipments list, check the checkboxes for multiple shipments
- Click Bulk Actions → Change Status
- Select the target status (only states valid for ALL selected shipments are offered)
- Add an optional note (applies to all selected shipments)
- Confirm the action
Every Status Change Is Logged
Each status transition creates an activity log entry with the timestamp, the user who made the change, the old status, the new status, and any note provided. This creates a complete, tamper-evident delivery history for every shipment.
Exception Handling
Exceptions are delivery failures or problems that require human intervention to resolve. When a shipment enters Exception status, an alert is shown on the Dashboard and the responsible dispatcher/manager is notified.
Common Exception Reasons
| Exception Code | Description | Typical Next Action |
|---|---|---|
not_home | Recipient was not present at delivery address | Schedule re-delivery attempt, leave notice |
address_not_found | Address does not exist or courier could not locate it | Contact client for corrected address |
refused | Recipient refused to accept the package | Return to sender, notify client |
damaged | Package is visibly damaged in transit | Photograph, hold at depot, initiate claim |
wrong_address | Package was sent to incorrect branch or zone | Transfer to correct branch |
payment_required | COD amount not paid by recipient | Contact client, hold until payment |
id_required | Recipient could not provide required ID for delivery | Schedule re-delivery with ID requirement noted |
access_denied | Courier could not access building, gated community, etc. | Get access code from client, reattempt |
other | Reason not covered above | Enter free-text description in note field |
Recording an Exception
- From the Shipment Detail page or list, click Change Status
- Select Exception
- In the form, select the Exception Reason from the dropdown
- Add a detailed Note (required for Exception status)
- Optionally, upload a Photo (evidence of condition, damage, etc.)
- Click Record Exception
Search & Filtering
The Shipments list provides a powerful filter panel accessible by clicking Filters in the top-right of the list view.
| Filter | Type | Description |
|---|---|---|
| Tracking Number | Text search | Full or partial tracking number (e.g., "TRK008") |
| Sender/Receiver Name | Text search | Searches both sender and receiver name fields |
| Status | Multi-select | Show only shipments in selected statuses |
| Service Type | Multi-select | Filter by Standard, Express, Same-Day, Freight |
| Branch | Single-select | Filter by originating branch (admins only) |
| Assigned Courier | Single-select | Show shipments assigned to a specific courier |
| Client | Search + select | Show all shipments for a specific client |
| Date Range | Date picker | Filter by creation date or last update date |
| Has Exception | Toggle | Show only shipments that have had at least one exception |
| Overdue | Toggle | Shipments that have exceeded their estimated delivery date |
Active filters are shown as dismissible badges above the list. Filters are preserved when navigating away and returning within the same session. The URL is updated with filter parameters for bookmarking and sharing.
Shipment Labels
PDF labels can be generated for any shipment. Labels include:
- Company logo and contact information
- Tracking number as both human-readable text and Code 128 barcode
- QR code linking to the public tracking page
- Sender and receiver addresses
- Service type indicator
- Package description and weight
- Creation date and declared number of pieces
- Special handling icons (Fragile, This Side Up, etc.)
Label Formats
| Format | Size | Use Case |
|---|---|---|
| A4 Full | 210 × 297 mm | One label per page. Print on standard paper and fold/attach. |
| A4 Half | 210 × 148 mm | Two labels per A4 page. For higher volume printing. |
| Thermal 4×6 | 4 × 6 inches (102 × 152 mm) | Standard thermal label size. Compatible with Zebra, Dymo, and similar label printers. |
| Thermal 4×4 | 4 × 4 inches (102 × 102 mm) | Compact thermal label for smaller packages. |
Default label format is set in Settings > Shipping Config > Label Format. Individual labels can be generated in any format from the Shipment Detail page → Print Label dropdown.
Bulk Label Printing
From the Shipments list: check multiple shipments → Bulk Actions > Print Labels. A single PDF is generated with all selected labels, ready for batch printing.
Shipment Activity Log
Every action on a shipment is automatically logged and displayed in the Activity tab of the Shipment Detail page. The log cannot be edited or deleted (by any role).
Events captured in the activity log:
- Shipment created (includes full shipment data snapshot)
- Any field edited (old value → new value for each changed field)
- Status changed (from status, to status, note, user)
- Courier assigned or reassigned
- Invoice linked or unlinked
- Label printed (by whom, when)
- Notification sent to recipient (email, timestamp)
- Exception recorded (reason code, note)
- Photo uploaded (filename, uploader)
Each log entry shows: the action description, the full name of the user who performed it, and the exact timestamp (in the configured timezone). The log is displayed as a chronological timeline in the Shipment Detail UI.
Bulk Operations
Select multiple shipments using the checkboxes in the list, then access bulk actions from the Bulk Actions dropdown that appears.
| Action | Description | Roles Allowed |
|---|---|---|
| Change Status | Set all selected shipments to the same new status | Dispatcher, Manager, Admin, Super Admin |
| Assign Courier | Assign all selected shipments to one courier | Dispatcher, Manager, Admin, Super Admin |
| Print Labels | Generate a batch PDF with all labels | Dispatcher, Manager, Admin, Super Admin |
| Export CSV | Export selected shipments as a CSV file | Manager, Admin, Super Admin, Accountant |
| Export Excel | Export selected shipments as an Excel file | Manager, Admin, Super Admin, Accountant |
| Delete | Soft-delete selected shipments (recoverable) | Admin, Super Admin only |
Service Types
Service types define the delivery speed and pricing tier. They are configured in Settings > Services. Default service types:
| Service | Code | Transit Time | Use Case | Default Price |
|---|---|---|---|---|
| Standard | standard | 3–5 business days | Regular parcels, non-urgent | Configurable base rate |
| Express | express | Next business day | Time-sensitive documents and packages | 2× Standard rate |
| Same-Day | same_day | Same calendar day | Urgent local deliveries | 3× Standard rate |
| Freight | freight | Variable | Heavy or oversized cargo | Weight-based pricing |
Additional service types can be created. Each service type has: Name, Code, Description, Base Price, Active/Inactive toggle, and estimated delivery days (used for calculating overdue status).
Integration with Invoicing
Each shipment can be linked to one or more invoices:
- Manual Invoicing: From the Shipment Detail page → Billing tab → Create Invoice. This creates a new invoice in Draft state with the shipment as a line item at the configured service price.
- Batch Invoicing: From the Invoicing module, you can select multiple delivered shipments for a client and generate a single consolidated invoice covering all of them.
- Auto-Invoice on Delivery: If enabled in Settings, the system automatically creates an invoice draft when a shipment is marked Delivered. Requires the shipment to have a linked Client.
The Shipment Detail page always shows the linked invoice status (Draft, Sent, Paid, Overdue) and a quick link to view the invoice.