Shipping Report Documentation¶
Menu Location: Reports > Shipping > Shipping Report
Access Level: Manager / Administrator
Last Updated: 2026-03-01
Overview¶
The Shipping Report tracks package delivery performance through integration with EasyPost shipping APIs. It identifies late or missing shipments, allows you to create claims or reship orders, and monitors carrier performance against delivery estimates.
Primary Functions:
- Track shipment delivery status and timing
- Identify late or missing packages
- Create resolution actions (reship, credit, refund, claim, ignore)
- Monitor actual vs estimated shipping times
- Generate reports for carrier performance analysis
- Export shipping data to CSV
Page Layout¶
Header Section¶
- Page Title: Shipping Report
- Update Arrival Date Button: Refreshes tracking data via API
- Sort Order Configuration: Drag-and-drop tiles to customize table sorting
Filter Controls¶
- Order or Tracking ID Search: Find specific shipment
- Week Selector: Choose weekly_cycle for analysis
- Delivery Time Filter: On Time / All / Late / Missing Data
- Build Shipping Report Button: Generates report with current settings
Main Content Area¶
- Report Table: Shows orders with shipping details and statuses
- Totals Summary: Breakdown by shipping days, status, origin scan dates
- Action Modals: Pop-up forms for handling problem shipments
- Deal With It System: Track resolution of shipping exceptions
Report Data & Columns¶
| Column | Description | Calculation/Source |
|---|---|---|
| Order ID | Customer order number | Links to order details, includes API refresh icon |
| Name | Customer name and tracking number | Last name, first name plus tracking code and last checked timestamp |
| Last Status | Most recent tracking status | From easypost_tracking_data table |
| Est. Shipping | Estimated delivery days | From EasyPost shipment data (ep_ship_days) |
| Shipped On | Origin scan date/time | From origin_scan field, may show "5am adjustment" |
| Arrived On | Delivery confirmation date/time | From arrival_date field |
| Shipping Days | Actual days in transit | DATEDIFF between origin scan and arrival |
| (Action Column) | Resolution status badge | Shows credit, reship, refund, claim, or ignore status |
| (Deal With It) | Action button or status | Button to resolve issue or status badge if already handled |
Delivery Time Filters¶
On Time (2 days or less)¶
What It Shows:
- Shipments delivered within 2 days
- arrival_date field populated
- Calculated shipping days ≤ 2
When to Use:
- Verify carrier performance
- Confirm majority of shipments on time
- Identify baseline performance
All¶
What It Shows:
- Every shipment regardless of status
- Includes on-time, late, in-transit, and missing data
- No filtering by delivery speed
When to Use:
- Complete shipment overview
- Export full dataset
- General monitoring
Late (3 days or more)¶
What It Shows:
- Shipments taking 3+ days to deliver
- arrival_date populated AND shipping_days ≥ 3
- OR origin_scan exists but arrival_date = 0 and 3+ days have passed
When to Use:
- Identify problem shipments
- Create claims or offer compensation
- Monitor carrier issues
- Focus on customer satisfaction risks
Missing Origin and/or Delivered Data¶
What It Shows:
- Orders where origin_scan = 0 OR arrival_date = 0
- Incomplete tracking information
- May indicate tracking not yet available or shipment issues
When to Use:
- Find shipments needing API refresh
- Identify tracking data gaps
- Investigate possible shipping errors
Deal With It Action System¶
Available Actions¶
Reship:
- Creates new replacement order
- Select delivery week for reship
- Original order remains in system
- Logs action to customer account
- Option to send email notification
Credit:
- Applies account credit for order amount
- Uses actual_total from order
- Creates cust_order_payment credit entry
- Logs to customer account
- Option to send email notification
Refund:
- Marks order as refunded
- Tracks refund status
- Logs to customer account
- Option to send email notification
Ignore:
- Marks shipment exception as reviewed
- No customer action taken
- Logs to customer account
- Useful for borderline cases
Claim:
- Creates UPS/carrier claim record
- Links to ups_claims table
- Tracks claim status and resolution
- Assigns claim number
Deal With It Workflow¶
Step 1: Identify Issue
- Report shows late or missing shipment
- "Deal With It" button appears for eligible orders
Step 2: Open Action Modal
- Click "Deal With It" button
- Modal shows order details and action options
- Note field for documentation
Step 3: Add Notes
- Enter explanation or customer communication details
- Notes saved to shipping_report_notes table
- Automatically added to customer account
Step 4: Select Action
- Choose resolution (reship, credit, refund, ignore)
- Configure action specifics (e.g., reship week)
- Confirm action
Step 5: Send Email (Optional)
- Review auto-populated email template
- Edit subject and body if needed
- Click "Send Email" to queue message
- Email links to customer account
Step 6: Completion
- Action badge replaces "Deal With It" button
- dealwithit_action and dealwithit_data updated in order record
- Status visible in table for future reference
Undoing/Changing Actions¶
How It Works:
- Clicking an action badge reopens modal
- Selecting new action reverses previous action
- Credit reversed: Creates offsetting debit
- Reship reversed: Cancels replacement order
- New action applied after reversal
Warning:
- Only one action can be active at a time
- Changing actions creates audit trail in logs
- Email notifications aren't automatically reversed
Filters & Search Options¶
Order or Tracking ID Search¶
What to Enter:
- Customer order ID number
- EasyPost tracking code
- Searches both fields with OR logic
Behavior:
- Overrides week filter when used
- Shows "Missing data" filter automatically
- Displays single order results
- Includes rocket icon to refresh just this order's tracking
Week Selector¶
Default: Current week (getWeekId()) Shows: All orders scheduled for selected week Filters: weekly_cycle_id field
Delivery Time Selector¶
Purpose: Focus on specific delivery performance categories Default: "On Time - 2 days or less" Options: See Delivery Time Filters section above
Sort Order Customization¶
Feature: Drag-and-drop sort priority
Available Sort Options:
- Status (last_status)
- Est. Shipping Time (ep_ship_days)
- Shipping Date (origin_scan)
- Arrival Date (arrival_date)
- Shipping Days (calculated shipping_days)
- Customer Name (last_name, first_name)
How to Use:
- Drag tiles to reorder priority
- Order automatically saved to config
- Report table sorts based on tile order (left to right = primary to tertiary)
- Persists across sessions
Default Order:
- Status
- Est. Shipping Time
- Shipping Date
- Arrival Date
- Shipping Days
- Customer Name
Common Use Cases¶
Use Case 1: Weekly Late Shipment Review¶
Goal: Identify and resolve all late shipments from previous week
Steps:
- Select previous week from dropdown
- Select "Late - 3 days or more" filter
- Click "Build Shipping Report"
- Review each late shipment
- For each: Click "Deal With It"
- Add notes explaining situation
- Choose action (typically credit or reship)
- Send customer notification email
- Export results to CSV for records
Example: Week of March 1-7 shows 8 late shipments. 5 receive credits, 2 get reships, 1 ignored (customer contacted directly).
Tips:
- Handle within 48 hours of delivery date
- Prioritize customers with repeated issues
- Track patterns by carrier or destination
Use Case 2: Monitor Carrier Performance¶
Goal: Track delivery performance against carrier promises
Steps:
- Select date range (use week selector multiple times)
- Run report with "All" filter
- Export to CSV
- Review "Totals" section at bottom
- Note percentages for on-time vs late
- Compare Est. Shipping vs Actual Shipping Days
- Document for carrier negotiations
Example: Carrier promised 95% on-time (2 days). Report shows only 78% meeting target. Use data for service credit request.
Tips:
- Run monthly for trend analysis
- Compare carriers if using multiple
- Use data in contract negotiations
- Track improvement after carrier changes
Use Case 3: Missing Tracking Data Investigation¶
Goal: Find and resolve orders without complete tracking info
Steps:
- Select current week
- Select "Missing Origin and/or Delivered data"
- Click "Build Shipping Report"
- For each order, click rocket icon to refresh API data
- Wait for API update (check "Last Checked" timestamp)
- Reload report to see if data now available
- For persistent missing data, contact carrier
Example: 10 orders show missing origin scan. API refresh updates 8, leaving 2 to investigate with carrier.
Tips:
- Try API refresh 2-3 times before escalating
- Some carriers delay tracking updates
- Missing data after 48 hours needs investigation
- Update Arrival Date button can batch process
Use Case 4: Customer Inquiry Response¶
Goal: Quickly find and explain specific shipment status
Steps:
- Enter order ID in search box
- Click "Build Shipping Report"
- Review Last Status column
- Click tracking code link to view full details
- Note Shipped On and Arrived On dates
- If late, explain and offer resolution
Example: Customer asks about order #12345. Search shows "in_transit" status, shipped 2 days ago, estimated delivery tomorrow. Inform customer and set expectation.
Tips:
- Use public tracking URL to share with customer
- Note Last Checked timestamp for data freshness
- Refresh tracking if data seems stale
- Document any special circumstances in notes
Use Case 5: Batch Resolution of Weather Delays¶
Goal: Handle multiple late shipments from same carrier issue
Steps:
- Select affected week
- Filter by "Late - 3 days or more"
- Identify common carrier or region
- For each affected order, open Deal With It
- Use consistent notes (e.g., "Weather delay in Midwest region")
- Apply same action to similar cases (e.g., $5 credit)
- Customize email template once, reuse
- Process all affected orders
Example: Snowstorm delayed 25 shipments to Northeast. Apply $10 credits to all, send apology email explaining weather, maintain customer goodwill.
Tips:
- Document external cause (weather, carrier strike, etc.)
- Apply consistent resolution to similar cases
- Communicate proactively before customer complains
- Track total impact for accounting
Actions & Operations¶
Update Arrival Date (API Refresh)¶
Purpose: Pulls latest tracking data from EasyPost API
Steps:
- Click "updateArrivalDate" button in header
- Confirm action in browser dialog
- System queries EasyPost for current week's shipments
- Updates origin_scan, arrival_date, status in database
- May need to run multiple times for complete data
- Session message confirms completion
Warning:
- Slow operation (API rate limits)
- May timeout on very large batches
- Run during off-peak hours if possible
- Multiple runs may be needed for all orders
Build Shipping Report¶
Purpose: Generate table with current filter settings
Steps:
- Configure week, delivery time, and search filters
- Click "Build Shipping Report"
- Table populates with matching orders
- Totals section calculates aggregates
- Use table sorting and searching features
Export to CSV¶
Purpose: Download complete shipping dataset
Steps:
- Configure filters for desired dataset
- Click "Build Shipping Report"
- Click CSV button in report area
- File downloads with comprehensive columns
- Includes tracking codes, customer IDs, dates, status, actions, amounts
CSV Contents:
- Order ID, Customer ID, Customer Name
- Tracking Code, Claim Number, Claim Status
- Public Tracking URL, Ship Method, EasyPost ID
- Origin Scan Date, Arrival Date, Shipping Days
- Action Taken (reship, credit, etc.), Dollar Total
File Naming:
ShippingReport_[WeekDate]_[DeliveryFilter]_[Company]_[Timestamp].csv
Troubleshooting¶
Origin Scan Shows "5am Adjustment"¶
Symptoms: Red text showing "5am adjustment" under shipping date
Explanation:
- EasyPost sometimes records pickup at midnight instead of actual time
- System checks if origin_scan is before 5am
- Subtracts 8 hours to adjust to likely actual pickup date
- Prevents artificial increase in shipping days
Example: Package picked up March 5 at 11pm, recorded as March 6 at 12:01am. System adjusts back to March 5 to avoid counting extra day.
No Action Needed: This is automatic correction for accurate shipping days calculation.
Shipping Days Shows Large Negative Number¶
Symptoms: Shipping Days column shows -30 or other large negative
Check:
- Verify arrival_date is populated
- Check origin_scan date
- Confirm dates aren't swapped
Solutions:
- Refresh tracking data via API
- If data is correct, may indicate timestamp issue
- Contact Kiva Logic support if persistent
Common Causes:
- Missing or corrupted date fields
- Timezone conversion errors
- Database migration issues
Deal With It Button Not Appearing¶
Symptoms: Expected "Deal With It" button missing for late shipment
Check:
- Verify shipment is actually late (3+ days)
- Check if action was already taken
- Confirm order meets eligibility criteria
Eligibility Criteria:
- Must be late (failure status OR shipping_days >= 3)
- Must have origin_scan and expected arrival
- Est shipping days must be less than actual
- OR must have failure status from carrier
If Eligible But Missing: Reload page, check browser console for errors, contact support.
Email Not Sending After Action¶
Symptoms: Clicked "Send Email" but customer didn't receive
Check:
- Email was queued, not sent immediately
- Check Email Queue (admin_email_pending.php)
- Verify email template exists
- Check customer email address is valid
Solutions:
- Review email queue for pending message
- Manually send from queue if needed
- Verify email templates configured
- Test email delivery system
Related Pages¶
- Order Details (
customer_order_info.php) - Full order and shipping information - Customer Info (
customer_info.php) - Customer account and shipping history - UPS Claims (
ups-claims.php) - Manage carrier claims for lost/damaged shipments - Email Queue (
admin_email_pending.php) - View and manage outgoing emails - Email Templates (
admin_email_edit.php) - Configure shipping notification templates
Typical Workflow:
- Shipping Report → Identify late shipment → Deal With It → Email customer
- Customer inquiry → Shipping Report search → View tracking → Explain status
- Shipping Report → Late shipment → Create claim → UPS Claims page
Permissions & Access¶
Required Access Level: View access (implied from code - no explicit permission check)
Access Level Capabilities:
- Customer Service: View shipment status, search specific orders
- Manager: View reports, take resolution actions, export data
- Administrator: Full access to all features and all weeks
- Kiva Admin: All features plus API refresh and advanced tools
Restricted Features:
- Update Arrival Date: Generally admin only (slow operation)
- API refresh for individual orders: All users
Best Practices¶
Regular Monitoring¶
- Review weekly report every Monday for previous week
- Handle late shipments within 48 hours
- Check missing data filter for tracking gaps
- Export monthly for carrier performance reviews
Customer Communication¶
- Proactively contact about late shipments before they ask
- Use consistent, professional email templates
- Explain carrier issues honestly
- Offer appropriate compensation (credit or reship)
- Document all communications in notes field
Data Management¶
- Refresh API data when shipments seem stale (48+ hours)
- Export reports before bulk API updates
- Document external events (weather, strikes) in notes
- Keep detailed records for accounting and carrier disputes
Things to Avoid¶
- ❌ Don't ignore late shipments hoping customer won't notice
- ❌ Don't run Update Arrival Date during peak business hours
- ❌ Don't change actions without documenting why
- ❌ Don't send generic emails - personalize for situation
Quick Reference Card¶
| Task | Action/Location |
|---|---|
| Find specific order | Enter ID in search box, build report |
| Check current week late | Week=current, Filter=Late, build |
| Refresh tracking data | Click updateArrivalDate button |
| Resolve late shipment | Click "Deal With It", select action |
| Send customer email | After action, review template, send |
| Export data | Build report, click CSV button |
| View full tracking | Click tracking code link |
| Undo action | Click action badge, select new action |
| Find missing tracking | Filter=Missing data, build |
| Customize sort order | Drag sort tiles in header area |
FAQs¶
How often is tracking data updated?¶
Tracking updates when you click the refresh icon for individual orders, when you run "updateArrivalDate" for the week, or when automated processes run (if configured). It's not real-time - you must manually refresh.
What's the difference between origin_scan and ship date?¶
origin_scan is when the carrier first scanned the package (actual pickup). Ship date might refer to when the label was created or when you marked it for shipping, which can be different.
Can I bulk-apply actions to multiple late shipments?¶
Not currently - each order must be individually processed through the Deal With It modal. This ensures appropriate action and notes for each situation.
What happens if I change my mind about an action?¶
Click the action badge to reopen the modal. Selecting a new action will reverse the previous one (credit reversed, reship cancelled) and apply the new action.
How do claims work with carriers?¶
The Claim action creates a record in the ups_claims table and assigns a claim number. You'll then need to go to the UPS Claims page to complete the claim filing process with the carrier.
Change Log¶
2026-03-01¶
- Initial documentation created
- All sections completed based on shipping-report.php code review
- Documented Deal With It action system
- Added EasyPost API integration details
- Included drag-and-drop sort configuration
- Explained 5am adjustment logic
End of Documentation
For additional help, contact your system administrator or Kiva Logic support.