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.

01
Created
02
Picked Up
03
In Transit
04
Out for Delivery
05
Delivered

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

StatusCodeColorMeaningNext 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. 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. 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. 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. 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

Tracking Number Format

Tracking numbers are auto-generated at creation time. The default format is:

format
[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

  1. Open a shipment by clicking its tracking number
  2. Click the Change Status button in the action bar (top-right)
  3. Select the new status from the dropdown (only valid next states are shown based on workflow rules)
  4. Optionally add a Note explaining the status change (e.g., "Recipient not home — left notice")
  5. Click Update Status

From the Shipment List (Quick Status)

  1. In the Shipments list, find the row for the shipment
  2. Click the status badge — a quick dropdown appears with valid next states
  3. Select the new status (a note field appears for Exception status)
  4. Click Confirm

Bulk Status Change

  1. In the Shipments list, check the checkboxes for multiple shipments
  2. Click Bulk Actions → Change Status
  3. Select the target status (only states valid for ALL selected shipments are offered)
  4. Add an optional note (applies to all selected shipments)
  5. 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 CodeDescriptionTypical Next Action
not_homeRecipient was not present at delivery addressSchedule re-delivery attempt, leave notice
address_not_foundAddress does not exist or courier could not locate itContact client for corrected address
refusedRecipient refused to accept the packageReturn to sender, notify client
damagedPackage is visibly damaged in transitPhotograph, hold at depot, initiate claim
wrong_addressPackage was sent to incorrect branch or zoneTransfer to correct branch
payment_requiredCOD amount not paid by recipientContact client, hold until payment
id_requiredRecipient could not provide required ID for deliverySchedule re-delivery with ID requirement noted
access_deniedCourier could not access building, gated community, etc.Get access code from client, reattempt
otherReason not covered aboveEnter free-text description in note field

Recording an Exception

  1. From the Shipment Detail page or list, click Change Status
  2. Select Exception
  3. In the form, select the Exception Reason from the dropdown
  4. Add a detailed Note (required for Exception status)
  5. Optionally, upload a Photo (evidence of condition, damage, etc.)
  6. 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.

FilterTypeDescription
Tracking NumberText searchFull or partial tracking number (e.g., "TRK008")
Sender/Receiver NameText searchSearches both sender and receiver name fields
StatusMulti-selectShow only shipments in selected statuses
Service TypeMulti-selectFilter by Standard, Express, Same-Day, Freight
BranchSingle-selectFilter by originating branch (admins only)
Assigned CourierSingle-selectShow shipments assigned to a specific courier
ClientSearch + selectShow all shipments for a specific client
Date RangeDate pickerFilter by creation date or last update date
Has ExceptionToggleShow only shipments that have had at least one exception
OverdueToggleShipments 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:

Label Formats

FormatSizeUse Case
A4 Full210 × 297 mmOne label per page. Print on standard paper and fold/attach.
A4 Half210 × 148 mmTwo labels per A4 page. For higher volume printing.
Thermal 4×64 × 6 inches (102 × 152 mm)Standard thermal label size. Compatible with Zebra, Dymo, and similar label printers.
Thermal 4×44 × 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:

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.

ActionDescriptionRoles Allowed
Change StatusSet all selected shipments to the same new statusDispatcher, Manager, Admin, Super Admin
Assign CourierAssign all selected shipments to one courierDispatcher, Manager, Admin, Super Admin
Print LabelsGenerate a batch PDF with all labelsDispatcher, Manager, Admin, Super Admin
Export CSVExport selected shipments as a CSV fileManager, Admin, Super Admin, Accountant
Export ExcelExport selected shipments as an Excel fileManager, Admin, Super Admin, Accountant
DeleteSoft-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:

ServiceCodeTransit TimeUse CaseDefault Price
Standardstandard3–5 business daysRegular parcels, non-urgentConfigurable base rate
ExpressexpressNext business dayTime-sensitive documents and packages2× Standard rate
Same-Daysame_daySame calendar dayUrgent local deliveries3× Standard rate
FreightfreightVariableHeavy or oversized cargoWeight-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:

The Shipment Detail page always shows the linked invoice status (Draft, Sent, Paid, Overdue) and a quick link to view the invoice.