How Real-Time Rates Work
On the/checkout/review page, Site Store Pro performs the following steps to present shipping options:
1
Calculate cart weight
Sums
item_qty × item_weight for all shippable items in the cart.2
Fetch shipping options
Calls
buildShippingOptions(), which queries all active shipping plugins in parallel for flat-rate and real-time API rates.3
Merge and sort
Combines all returned rates and sorts them low-to-high by price.
4
Display as radio buttons
The merged rate list is rendered as selectable radio buttons at checkout review.
5
Write to order record
The selected option’s amount and name are written to the order record when the order is placed.
Graceful degradation: If a carrier API is unreachable, the plugin silently returns an empty array and logs the error to
storage/logs/laravel.log. Checkout is never blocked by a carrier API failure.FedEx Plugin
Slug:fedex-api | API: FedEx REST API v1 (OAuth2 client credentials)
Setup
1
Create a FedEx REST API project
Go to developer.fedex.com → My Projects → Create a Project → Shipping → Rate API. Copy your Client ID and Client Secret.
2
Find your FedEx Account Number
Your 9-digit FedEx Account Number appears on any FedEx invoice or in your FedEx account profile.
3
Configure in Admin
Go to Admin → Plugins → Shipping Rates - FedEx REST API → Settings. Enter your Account Number, Client ID, Client Secret, Origin ZIP, and Rate Markup. Enable the service checkboxes for the services you want to offer. Click Save Settings.
4
Activate the plugin
Switch to the Activation tab and click Activate Plugin.
5
Test at checkout
Add a shippable product to the cart and proceed to
/checkout/review. If no rates appear, check storage/logs/laravel.log for FedEx Auth Error.Settings Reference
Service Toggles
Enable individual services to control which options appear at checkout: Domestic:FedEx_Ground, FedEx_Ground_Home_Delivery, FedEx_Express_Saver, FedEx_2_Day_Air, FedEx_2_Day_Air_AM, FedEx_Priority_Overnight, FedEx_Standard_Overnight, FedEx_First_Overnight
International: FedEx_International_Priority, FedEx_International_Economy, FedEx_International_First
Freight: FedEx_1_Day_Freight, FedEx_2_Day_Freight, FedEx_3_Day_Freight
UPS Plugin
Slug:ups-api | API: UPS REST Rating API v2205 (OAuth2)
Setup
1
Create a UPS REST API app
Go to developer.ups.com → My Apps → Add App and select Rating. Copy your Client ID and Client Secret.
2
Configure in Admin
Go to Admin → Plugins → UPS → Settings. Enter your Client ID, Client Secret, Account Number (optional, for negotiated rates), Origin ZIP, Origin Country Code, and Rate Markup. Enable the services you want to offer.
3
Activate the plugin
Switch to the Activation tab and click Activate Plugin.
4
Test at checkout
Proceed to
/checkout/review. If no rates appear, check storage/logs/laravel.log for UPS Auth Error or UPS Rate API Error.Settings Reference
Service Toggles
Domestic:UPS_Ground, UPS_Ground_Saver, UPS_3_Day_Select, UPS_2nd_Day_Air, UPS_2nd_Day_Air_AM, UPS_Next_Day_Air_Saver, UPS_Next_Day_Air, UPS_Next_Day_Air_Early
International: UPS_International_Economy, UPS_International_Expedited, UPS_Worldwide_Express, UPS_Worldwide_Express_Plus, UPS_Worldwide_Saver
USPS Plugin
Slug:usps-api | API: USPS REST API v3 (OAuth2)
Setup
1
Create a USPS REST API app
Go to developer.usps.com → My Apps → Add App and select Prices and International Prices. Copy your Consumer Key (Client ID) and Consumer Secret.
2
Configure in Admin
Go to Admin → Plugins → USPS → Settings. Enter your Client ID, Client Secret, Origin ZIP (US addresses only), and Rate Markup. Enable the services you want to offer.Recommended starting set: Priority Mail + Priority Mail Express + Ground Advantage.
3
Activate the plugin
Switch to the Activation tab and click Activate Plugin.
4
Test at checkout
Proceed to
/checkout/review. If no rates appear, check storage/logs/laravel.log for USPS Auth Error or USPS Plugin Exception.Service Toggles
Domestic:
International:
Performance Note
Related
Plugin System
Plugin discovery, the Admin Panel, and PluginManager API.
Custom Plugins
Build your own shipping plugin using the drop-in plugin system.
