Title: Teamzlab Shipping Rates for FedEx
Author: Teamz Lab
Published: <strong>November 10, 2026</strong>
Last modified: November 10, 2026

---

Search plugins

![](https://ps.w.org/teamzlab-shipping-rates-for-fedex/assets/banner-772x250.png?
rev=3794269)

![](https://ps.w.org/teamzlab-shipping-rates-for-fedex/assets/icon-256x256.png?rev
=3794269)

# Teamzlab Shipping Rates for FedEx

 By [Teamz Lab](https://profiles.wordpress.org/teamzlab/)

[Download](https://downloads.wordpress.org/plugin/teamzlab-shipping-rates-for-fedex.1.2.9.zip)

 * [Details](https://wordpress.org/plugins/teamzlab-shipping-rates-for-fedex/#description)
 * [Reviews](https://wordpress.org/plugins/teamzlab-shipping-rates-for-fedex/#reviews)
 *  [Installation](https://wordpress.org/plugins/teamzlab-shipping-rates-for-fedex/#installation)
 * [Development](https://wordpress.org/plugins/teamzlab-shipping-rates-for-fedex/#developers)

 [Support](https://wordpress.org/support/plugin/teamzlab-shipping-rates-for-fedex/)

## Description

**Teamzlab Shipping Rates for FedEx** wires 14 FedEx REST APIs into WooCommerce —
rates, labels, tracking, customs and returns. Built REST-native, so the 2026 SOAP
shutdown never touches your store.

#### Feature highlights

 * **Real-time tracking webhooks** — FedEx AIV events (pickup, transit, delivery,
   customs holds) are pushed to your store via HMAC-signed webhooks. One-time setup:
   create the webhook subscription in the FedEx portal and paste the shared secret
   under **Fedex  Settings  Tracking**. No polling for status.
 * **Self-serve Return Tag portal** — drop the `[fshipping_return_portal]` shortcode
   on the My-Account page. Customers pick items, get a FedEx-compliant return label
   in their email, and the three nearest drop-off counters on the confirmation page.
 * **Paperless ETD customs** — one-click electronic trade documents upload for international
   shipments, plus commercial-invoice auto-generation from WooCommerce line items.
   No printing, no stapling.

#### FedEx APIs wired

OAuth, Ship, Rates + Transit Times, Basic Track, Address Validation, Postal Code
Validation, Service Availability, Pickup Request, Locations Search, Tracking webhooks(
AIV receiver), Open Ship, Global Trade, Trade Documents Upload, Return Tag — 14 
APIs, 1 plugin. A Freight LTL client class is included for developers, but it is
not yet wired into checkout or the admin UI, so freight rates and BOLs are not available
out of the box.

#### Customer-facing features

 * Dimensional-weight calculator shortcode `[fshipping_dim_weight]` — pure client-
   side, embed on any page.
 * Embeddable live-rate calculator `[fshipping_rate_widget]` — merchants can drop
   a `<script>` on any site to show live FedEx rates there.
 * Drop-off finder `[fshipping_locations]` — the nearest FedEx drop-off locations
   for any postcode (10 by default, configurable with the `limit` attribute).
 * Live tracking timeline `[fshipping_tracking_timeline]` — the order-status timeline
   customers ask for, fed by AIV webhook events.
 * Hold-at-Location suggestion — when a delivery-exception AIV event arrives, the
   customer is automatically emailed the nearest FedEx counters with directions (
   requires tracking webhooks + shared secret).
 * Residential address classification — the Address Validation API can classify 
   residential vs. commercial addresses; the `fshipping_address_classified` hook
   and the savings meter let developers record and display avoided residential surcharges.(
   Automatic checkout reclassification is not enabled by default.)

#### Admin features

 * Per-order special services — Saturday delivery, signature options, dry ice, COD
   and Hold-at-Location are honored from order meta when set (by custom code or 
   the bundled meta-box classes).
 * Dangerous goods flags — hazmat, alcohol and dry-ice markers per order are spliced
   into the label payload’s special-services block.
 * Shipment dashboard — every shipment with tracking ID, service, charges, label
   actions, pickup, returns, trade documents, status badges and SPOD.

#### Built for production

 * REST-native. Zero SOAP. The 2026 FedEx SOAP retirement is a non-event.
 * Checkout Safety Net — if the FedEx rate lookup returns nothing, the `fshipping_safety_net_fallback`
   filter lets developers serve a configured fallback rate so checkout still renders.
   No fallback is applied unless you register one.
 * Staging Mode — set the `fshipping_staging_mode` option to log every rate call(
   destination, item count, method) to the staging debug log for review.
 * HPOS (High-Performance Order Storage) compatible.

#### External services

This plugin connects to the following third-party services to do its job:

 * **FedEx REST APIs (production)** (`apis.fedex.com`) — used for OAuth access tokens,
   live rate quotes, label creation (Ship and Open Ship), pickup scheduling and 
   cancellation, shipment tracking, address and postal-code validation, service-
   availability lookups, Global Trade (customs) data, Return Tag generation, and
   AIV tracking webhooks (webhook events are received _from_ FedEx, not sent). The
   plugin sends your FedEx API credentials (Client ID / Client Secret for the OAuth
   token request) and account number, plus the data needed for the requested operation:
   shipper and recipient names, addresses and phone numbers, package dimensions 
   and weight, order totals, and customs descriptions for international shipments.
   Data is sent only when you (or your customer’s checkout) trigger a FedEx operation—
   a rate lookup at checkout, a label purchase, a pickup request, a tracking query,
   or an address validation. An account at [developer.fedex.com](https://developer.fedex.com)
   is required. [Terms of use](https://www.fedex.com/en-us/terms-of-use.html) · 
   [Privacy policy](https://www.fedex.com/en-us/trust-center/privacy.html)
 * **FedEx REST APIs (sandbox)** (`apis-sandbox.fedex.com`) — the same endpoints
   against FedEx’s test environment, used only when you set **Fedex  Settings  Environment**
   to “sandbox”. Identical data is sent as above, against test credentials and test
   orders. [Terms of use](https://www.fedex.com/en-us/terms-of-use.html) · [Privacy policy](https://www.fedex.com/en-us/trust-center/privacy.html)
 * **FedEx Trade Documents API** (`documentapi.prod.fedex.com`, `documentapitest.
   prod.fedex.com`) — used for electronic trade documents (paperless customs invoices
   uploaded with an international shipment). When ETD is enabled, the plugin uploads
   the generated commercial invoice (or your custom document PDF) to these endpoints;
   the upload contains the customs document content and shipment/tracking references.
   Only runs when you create an international shipment with ETD enabled. [Terms of use](https://www.fedex.com/en-us/terms-of-use.html)·
   [Privacy policy](https://www.fedex.com/en-us/trust-center/privacy.html)

## Screenshots

[⌊Fedex → Settings, Authorization tab — enter your FedEx REST API credentials (core
scope).⌉⌊Fedex → Settings, Authorization tab — enter your FedEx REST API credentials(
core scope).⌉[

Fedex  Settings, Authorization tab — enter your FedEx REST API credentials (core
scope).

[⌊Fedex → Settings, Account tab — FedEx account number, ship-from origin, and sandbox/
production environment.⌉⌊Fedex → Settings, Account tab — FedEx account number, ship-
from origin, and sandbox/production environment.⌉[

Fedex  Settings, Account tab — FedEx account number, ship-from origin, and sandbox/
production environment.

[⌊FedEx Pickup History — schedule one consolidated global pickup and audit which
pickup covered which shipments.⌉⌊FedEx Pickup History — schedule one consolidated
global pickup and audit which pickup covered which shipments.⌉[

FedEx Pickup History — schedule one consolidated global pickup and audit which pickup
covered which shipments.

[⌊Shipments & Labeling — every shipment with tracking ID, service, total charge,
label actions, pickup, return, trade documents, status, and SPOD.⌉⌊Shipments & Labeling—
every shipment with tracking ID, service, total charge, label actions, pickup, return,
trade documents, status, and SPOD.⌉[

Shipments & Labeling — every shipment with tracking ID, service, total charge, label
actions, pickup, return, trade documents, status, and SPOD.

## Installation

 1. Upload the `teamzlab-shipping-rates-for-fedex` folder to `/wp-content/plugins/`(
    or install via **Plugins  Add New  Upload Plugin**).
 2. Activate the plugin through the **Plugins** screen.
 3. Go to **WooCommerce  Settings  Shipping  Zones** and enable **FedEx Shipping** 
    on the zones that need it.
 4. Open **Fedex  Settings** and enter:
 5.  * Client ID + Client Secret (core scope) — from [developer.fedex.com](https://developer.fedex.com).
     * Account number — your FedEx billing account.
     * Environment — sandbox to start, production when ready.
 6. (Optional) **Fedex  Settings** (tracking section) — add your separate tracking-
    scope Client ID + Secret (FedEx issues them as two separate projects).

## FAQ

### Will this break when FedEx SOAP retires?

No. This plugin has always been REST-native; there is no SOAP code to retire. If
you’re coming from a SOAP-based plugin whose store broke after 2026-06-01, enter
FedEx sandbox credentials under **Fedex  Settings** and switch the environment to
sandbox to verify your flows before going back to production.

### Is there a free tier?

Yes — and it is not a trial. The WordPress.org version of this plugin is 100% free
and fully functional: every feature listed above is included and unlocked, with 
no daily limits and no feature locks. Your store’s checkout is never throttled.

### Is paid support available?

Optional priority support and agency services are offered separately at teamzlab.
com. The plugin itself has no paid tier, no licence key and no locked features.

### Does it work with Dokan / WCFM multi-vendor?

The plugin uses one store origin from **Fedex  Settings** for FedEx rate calls. 
Multi-vendor marketplaces can still vary ship-from per package by attaching `_fshipping_origin`(`
postal_code`, `country`, `state`) in custom code on the `woocommerce_cart_shipping_packages`
filter; the rate client reads that when building the FedEx payload.

### Does it support HPOS (High-Performance Order Storage)?

Yes. The plugin declares HPOS compatibility in its header and uses `\WC_Order` APIs
exclusively — never direct post-meta for order fields that HPOS migrated to `wc_orders_*`.

### What happens if FedEx returns a 500?

FedEx rates simply don’t render for that recalculation — the plugin logs the failure
and checkout continues with any other configured shipping methods; it never blocks
the order. If you want a fallback price instead, register one with the `fshipping_safety_net_fallback`
filter (no fallback is applied unless you do — there is no settings field for it).

### Do I need two FedEx developer accounts?

Technically FedEx issues OAuth credentials as **two separate projects** — one covering
Ship + Rates + Address (the “core” scope), one covering Tracking + AIV webhooks.
They’re free to create on the same FedEx developer account. Enter both pairs in 
the plugin settings; otherwise tracking calls return 401.

### Is there a live demo?

Install the plugin on a WordPress sandbox — every feature works with FedEx’s public
sandbox credentials. Enter them under **Fedex  Settings** and switch the environment
to sandbox.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Teamzlab Shipping Rates for FedEx” is open source software. The following people
have contributed to this plugin.

Contributors

 *   [ Teamz Lab ](https://profiles.wordpress.org/teamzlab/)

[Translate “Teamzlab Shipping Rates for FedEx” into your language.](https://translate.wordpress.org/projects/wp-plugins/teamzlab-shipping-rates-for-fedex)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/teamzlab-shipping-rates-for-fedex/),
check out the [SVN repository](https://plugins.svn.wordpress.org/teamzlab-shipping-rates-for-fedex/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/teamzlab-shipping-rates-for-fedex/)
by [RSS](https://plugins.trac.wordpress.org/log/teamzlab-shipping-rates-for-fedex/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.2.9

 * Packaging: removed build-only files (development templates and a build marker)
   from the plugin zip.

#### 1.2.8

 * Fixed: No longer fatals when WooCommerce is inactive — the plugin now shows an
   admin notice pointing to the plugins screen instead of calling WooCommerce-dependent
   code (guards old WordPress cores where the “Requires Plugins” header is not enforced).
 * Changed: Dropped the bundled Select2 library; admin dropdowns now use the SelectWoo
   library that ships with WooCommerce (wc-enhanced-select handle + admin styles),
   so the plugin no longer loads a duplicate select2 copy.

#### 1.2.7

 * Fixed: Replaced the privacy-policy link (readme “External services” section) 
   with our own privacy policy at teamzlab.com — the FedEx privacy-policy page intermittently
   returns 404 to automated crawlers.
 * Changed: Bundled Select2 library updated to 4.1.0 (latest stable).
 * Fixed: Simplified the namespace autoloader (plain prefix/str_replace mapping 
   instead of a regex) to avoid ambiguity in namespace-to-path resolution.

#### 1.2.6

 * Security: Hardened input sanitization in AJAX and settings handlers.
 * Fixed: Admin and frontend scripts are now properly enqueued and load with the
   defer strategy (WP 6.3+ script loading strategies; safely ignored on older versions).
 * Changed: Bundled Select2 library updated to the latest stable release (4.0.13),
   replacing a beta build.
 * Changed: Expanded External services documentation with per-service data, timing,
   and FedEx terms/privacy links.

#### 1.2.5

 * Changed: Fully functional — no daily checkout quota, no locked features, no licensing
   code. Every capability ships unlocked.
 * Removed: Bundled third-party licensing SDK. The plugin now talks only to the 
   FedEx REST APIs.

#### 1.2.4

 * Added: **FedEx packaging presets on Product Box** — box cards can auto-fill dimensions(
   and name) from FedEx Envelope/Pak/Tube/Box supplies.
 * Changed: Human-readable dropdown labels everywhere — settings selects and the
   shipments Service column no longer show raw FedEx API enums.
 * Changed: Admin tables scroll cleanly on narrow screens; the shipments list keeps
   its **Download SPOD** action pinned while scrolling.
 * Fixed: Invisible labels on **Schedule pickup** / **Save Product Box** primary
   buttons.
 * Fixed: Select2 multi-select chip overlap and collapsed search field.
 * Fixed: **Remove box** / **Remove** buttons rendered as raw browser chrome.
 * Fixed: Ghost controls bleeding through the sticky Settings save bar.
 * Fixed: Open Ship weight-normalization fatal (`Class "FSHIPPING\OpenShip\Helper"
   not found`) on the affected code path.

#### 1.2.3

 * Fixed: **WooCommerce Block Checkout is fully supported** — rates render for the
   entered address, address and cart changes re-quote through the Store API, the
   placed order keeps the correct destination and shipping amount, and instant labels
   use the final saved order data. A FedEx error during post-checkout label creation
   no longer breaks checkout with an HTTP 500 (orders can no longer be stranded 
   at pending by label errors).
 * Fixed: Deactivating and reactivating the plugin no longer removes the FedEx method
   from your shipping zones.
 * Fixed: Rate caching rebuilt — no per-request FedEx hammering, no stale UI rates,
   no re-quote on rate selection; a settings change forces exactly one recalculation.
 * Fixed: Shipment-confirmation emails can no longer repeat when WP-Cron re-delivers
   a scheduled event.
 * Fixed: Uninstall cleanup now removes all plugin options (including staging mode
   and savings events) and scheduled email events.
 * Security: Label, return-label, and SPOD PDFs now live in randomized per-install
   storage directories (old guessable URLs stop resolving); existing shipments keep
   working.
 * Security: Full request/response payloads (customer PII) are no longer written
   to logs unless WP_DEBUG is enabled.
 * Security: AIV webhook deliveries are deduplicated (body hash + event id) with
   a staleness window.
 * Security: Public tracking / address-validation / postal-validation AJAX endpoints
   are rate-limited per IP.
 * Security: Order deletion is HPOS-aware (no orphaned order stubs left behind).
 * Added: Shipped mocked regression tests (`php tests/regression.php hpos|legacy`—
   no WordPress needed).
 * Changed: wp-admin screens and public shortcodes redesigned with a FedEx-branded
   design system.
 * Changed: Removed **Webhook** and **Freight** tabs from **Fedex  Settings** (`
   admin.php?page=fedex_shipping`).
 * Removed: **Fedex  Warehouses** admin page (`fshipping_warehouses`), `Origin\WarehouseRouter`,
   and automatic multi-warehouse cart splitting. Package `_fshipping_origin` is 
   still honored when set by custom code (see FAQ: Dokan / WCFM).
 * Removed: **Fedex  Migration Doctor** admin page (`fshipping_migration_doctor`)
   and its staging-mode POST handler. Staging mode remains via the `fshipping_staging_mode`
   option.

#### 1.2.2

 * Security: AIV webhook receiver now **fails closed** — with no shared secret configured
   every delivery is rejected instead of trusted.
 * Security: Cancel-shipment AJAX requires shop-manager capability and is no longer
   reachable by logged-out visitors.
 * Security: Shipment records are no longer publicly queryable (REST / permalinks
   disabled).
 * Security: Return Tag portal and the tracking-timeline shortcode now require the
   order’s billing email as proof of ownership.
 * Security: Rate-quote rate limiting no longer trusts spoofable forwarding headers;
   the label PDF folder is hardened against direct browsing.
 * Fixed: Orders placed through **block checkout** now create instant FedEx shipments(
   the Store API hook was never wired, so block-checkout orders silently got no 
   label).
 * Fixed: Multi-quantity orders no longer fail label purchase with `DIMENSIONS.EXCEEDS.
   LIMITS` — package dimensions are now stacked along the smallest dimension instead
   of multiplying every axis by quantity.
 * Fixed: LBKG weight conversion silently no-opped (Woo expects the `lbs` slug),
   so labels could declare the wrong weight.
 * Fixed: Duplicate checkout events can no longer purchase duplicate labels for 
   one order (per-order guard + order note).
 * Fixed: Locations asset versioning referenced an undefined constant.

#### 1.2.1

 * Removed: **FedEx  Box library** admin submenu and the built-in box packer (`Packing\
   BoxLibrary`, `Packing\BoxPicker`, `Admin\BoxLibraryPage`). The `fshipping_rates_package_line_items`
   filter in rate requests is unchanged for custom code.

#### 1.2.0

 * New: Commercial invoice auto-generator — FedEx now produces the customs invoice
   PDF from your WooCommerce line items. `TradeDocuments` upload remains the escape
   hatch for custom templates.
 * New: FedEx One Rate comparator — surfaces flat-rate pricing alongside standard
   rates at checkout with “save $X” badge when cheaper.
 * New: Dimensional-weight calculator shortcode `[fshipping_dim_weight]` — pure 
   client-side, embed on any page.
 * New: Box picker — rate calls now use the smallest merchant-registered box that
   fits the cart.
 * New: Multi-warehouse cart split — Dokan / WCFM stores get per-warehouse sub-packages
   automatically.
 * New: Staging Mode dry-run logging + Checkout Safety Net runtime wiring.
 * New: `Trade\CommercialInvoiceBuilder`, `Shipping\OneRateComparator`, `Packing\
   BoxPicker`, `Events\RuntimeIntegrator`, `Widget\DimensionalWeightCalculator`,
   plus Migration Doctor / Warehouses / Box Library admin pages.
 * Fixed: Residential-surcharge savings are now recorded whenever Address Validation
   reclassifies residential  business. Dashboard widget previously always showed
   $0.
 * Security: internal secret-scanning patterns tightened — now require value-looking
   literals after the key.

#### 1.1.0

 * Added shortcodes: `[fshipping_track]`, `[fshipping_locations]`, `[fshipping_tracking_timeline]`,`[
   fshipping_return_portal]`, `[fshipping_rate_widget]`.
 * Added AIV tracking-webhook receiver + HMAC-SHA256 signature verification.
 * Added REST `/fshipping/v1/rate-quote` endpoint for the embeddable widget.
 * Added admin meta-boxes: Special Services, ETD Invoice, Close Day page.

#### 1.0.0

 * Initial release — 15 FedEx REST APIs, WooCommerce shipping method, tracking +
   labels.

## Meta

 *  Version **1.2.9**
 *  Last updated **1 day ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [fedex](https://wordpress.org/plugins/tags/fedex/)[freight](https://wordpress.org/plugins/tags/freight/)
   [shipping](https://wordpress.org/plugins/tags/shipping/)[tracking](https://wordpress.org/plugins/tags/tracking/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/teamzlab-shipping-rates-for-fedex/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/teamzlab-shipping-rates-for-fedex/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/teamzlab-shipping-rates-for-fedex/reviews/)

## Contributors

 *   [ Teamz Lab ](https://profiles.wordpress.org/teamzlab/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/teamzlab-shipping-rates-for-fedex/)