Overview
Ecom’s carrier system enables flexible shipping cost calculation based on weight, price, or zones. You can configure multiple carriers with different pricing structures and delivery timeframes.Carrier Features
- Multiple carrier support
- Zone-based pricing
- Weight or price-based billing
- Free shipping option
- Transit time configuration
- Custom carrier logos
- Enable/disable carriers
Configuration
Accessing Carrier Management
Controller Location
Database Model
Model Relationships
app/Models/Carrier.php
Creating a Carrier
Basic Information
app/Http/Controllers/CarrierController.php
Carrier Fields
- Name: Carrier name (e.g., “FedEx”, “DHL”, “Local Delivery”)
- Transit Time: Expected delivery time (e.g., “2-3 days”, “Same day”)
- Logo: Upload carrier logo
- Free Shipping: Enable/disable free shipping
Shipping Pricing
Free Shipping
If free shipping is enabled, no pricing ranges are needed:Paid Shipping Configuration
For paid shipping, configure ranges and zone-based pricing:Billing Types
- By Weight: Calculate shipping based on order weight
- By Price: Calculate shipping based on order total
Range Configuration
app/Http/Controllers/CarrierController.php
Example: Weight-Based Pricing
| Weight Range | Zone 1 | Zone 2 | Zone 3 |
|---|---|---|---|
| 0 - 1 kg | $5 | $7 | $10 |
| 1 - 5 kg | $10 | $15 | $20 |
| 5 - 10 kg | $20 | $30 | $40 |
| 10+ kg | $30 | $45 | $60 |
Example: Price-Based Shipping
| Order Total | Zone 1 | Zone 2 | Zone 3 |
|---|---|---|---|
| 50 | $8 | $10 | $15 |
| 100 | $6 | $8 | $12 |
| 200 | $4 | $6 | $10 |
| $200+ | Free | Free | $5 |
Zones Setup
Before configuring carriers, you must set up shipping zones:Updating a Carrier
When updating, existing ranges are deleted and recreated:app/Http/Controllers/CarrierController.php
Carrier Status
Enable or disable carriers without deleting:app/Http/Controllers/CarrierController.php
Deleting a Carrier
app/Http/Controllers/CarrierController.php
Retrieving Active Carriers
Use theActive scope to get enabled carriers:
Frontend Implementation
At checkout, customers select from available carriers based on:- Delivery Zone: Determined by shipping address
- Order Weight/Total: Used to find applicable range
- Carrier Status: Only active carriers shown
Shipping Cost Calculation
Best Practices
Common Carrier Examples
Local Delivery Service
- Name: Local Same-Day Delivery
- Transit Time: Same day (orders before 2 PM)
- Billing Type: By Price
- Zone: Local zone only
- Pricing: Flat rate or tiered by order value
National Courier
- Name: National Express
- Transit Time: 2-3 business days
- Billing Type: By Weight
- Zones: Multiple national zones
- Pricing: Weight-based with zone multipliers
International Shipping
- Name: International DHL
- Transit Time: 5-7 business days
- Billing Type: By Weight
- Zones: International regions
- Pricing: Higher rates for international zones
Free Shipping Promotion
- Name: Free Standard Shipping
- Transit Time: 5-7 business days
- Free Shipping: Enabled
- Conditions: Minimum order value (set in business rules)
Permissions
Carrier management requires themanage_carriers permission:
app/Http/Controllers/CarrierController.php
API Integration
For mobile apps or custom integrations:Troubleshooting
Shipping Cost Not Calculating
Shipping Cost Not Calculating
Check:
- Zone is properly configured
- Carrier has pricing for the zone
- Weight/price falls within defined ranges
- Carrier status is active
Carrier Not Showing at Checkout
Carrier Not Showing at Checkout
Check:
- Carrier status is enabled
- Zone covers customer’s shipping address
- Applicable ranges exist for order weight/total
Wrong Shipping Price
Wrong Shipping Price
Check:
- Correct billing type (weight vs price)
- Range delimiters are correct
- Zone pricing is configured
- No overlapping ranges
Database Tables
carriers
- id
- name
- transit_time
- logo
- free_shipping
- status
- created_at
- updated_at
carrier_ranges
- id
- carrier_id
- billing_type (by_weight/by_price)
- delimiter1 (range start)
- delimiter2 (range end)
- created_at
- updated_at
carrier_range_prices
- id
- carrier_id
- carrier_range_id
- zone_id
- price
- created_at
- updated_at
Related Documentation
Pickup Points
Configure pickup point locations
Delivery Boys
Manage delivery personnel