Documentation Index
Fetch the complete documentation index at: https://mintlify.com/programforrever/ecom/llms.txt
Use this file to discover all available pages before exploring further.
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