VibeFox EasyPost for WooCommerce — Help
Requirements
WordPress: 5.8 or later.
WooCommerce: 7.0 or later, installed and active. The plugin refuses to activate without it.
PHP: 8.0 or later.
EasyPost account (for live rates only): create an account on the EasyPost website, connect your carrier accounts (USPS, UPS, FedEx and others) in the EasyPost dashboard and copy the API key from EasyPost Dashboard > Account Settings > API Keys. EasyPost charges for purchased labels, not for rate requests. If you only use fallback prices, you do not need an EasyPost account.
Products: products need a weight, and better also dimensions.
VibeFox license key: bought on vibefox.net. One key works on one domain.
Installation
1. In WordPress go to Plugins > Add New > Upload Plugin, choose the plugin ZIP file and click Install Now. You can also upload the vfd_easypost folder to /wp-content/plugins/ by FTP.
2. Click Activate.
3. Open the settings: WooCommerce > Settings > Shipping > VibeFox EasyPost, or click Settings under the plugin name on the Plugins page.
4. Enter your VibeFox license key in the license block at the top of the page and click Activate.
5. Paste your EasyPost API key and fill in the Ship from address. The ZIP code is required for live rates.
6. If your store currency is not USD, enter the USD exchange rate. Optionally enter fallback prices (see Configuration).
7. Add VibeFox EasyPost to a shipping zone in WooCommerce > Settings > Shipping > Shipping zones, or turn on Ignore shipping zones and choose countries.
Configuration
All settings are on one page: WooCommerce > Settings > Shipping > VibeFox EasyPost. They apply to every shipping zone. When you add the method to a zone, the zone window has only one field:
Title (zone): the shipping method name customers see for this zone. Leave it empty to use the global Name.
At the top of the page the plugin shows warnings when live rates cannot be used: no API key, no ship-from ZIP code or country, or a store currency other than USD without an exchange rate. A note also appears when a test API key is set. Every time you save the settings, the cached EasyPost rates are cleared.
General
Enable/Disable: turns the method on or off in all zones at once. Default: on.
Name: the shipping method name shown in the cart and at checkout. A zone can override it with its own Title. Default: EasyPost Shipping.
EasyPost account
API key: your EasyPost API key from EasyPost Dashboard > Account Settings > API Keys. A production key (starts with EZAK) returns real rates. A test key (starts with EZTK) returns EasyPost test rates; use it only for testing.
Allowed carriers / services: optional, comma separated. Enter a carrier (USPS) or a carrier and service (USPS:Priority, UPS:Ground) as EasyPost names them. The cheapest allowed rate is shown. Leave it empty to show the cheapest rate of any carrier.
Ship from
The address your parcels are sent from. If the Country is your store country, empty fields are taken from the store address in WooCommerce > Settings > General (and the sender name from the site title).
Sender name / company: the sender name or company.
Street address: the street of the ship-from address.
City: the ship-from city.
State: the two-letter state code, for example CA or NY.
ZIP code: the ship-from ZIP or postcode. Required for live rates.
Country: the country you ship from. Default: United States.
Rates
Parcels: how the cart is sent to EasyPost.
Weights are converted from your store unit to ounces (minimum 1 oz) and dimensions to inches. If any product has no dimensions, the parcel is rated by weight only.
USD exchange rate: EasyPost rates are in USD. Enter the price of 1 USD in your store currency, for example 0.92. Without it live rates are not used, only fallback prices. Not needed when the store currency is USD. USD and CAD stores ask EasyPost to quote in their own currency. Both a point and a comma are accepted as the decimal separator.
Tax status: Taxable lets WooCommerce add tax on shipping by your tax rules, None does not. EasyPost rates do not include sales tax. Default: Taxable.
Fallback prices
Used when there is no live rate: no API key, EasyPost cannot be reached, the key is rejected, or no carrier has a rate for the address. Prices are in your store currency. Leave both fields empty to hide the method in that case.
Country prices: one line per country: two-letter country code, a colon and the price, for example US:9.99. Lines in another format are ignored and listed in an error message when you save.
Other countries: the price for countries that are not in the list above. Leave it empty to hide the method for them.
Conditions
Free shipping from: the cart subtotal from which shipping is free. No EasyPost request is made in that case. Leave it empty to turn it off.
Minimum subtotal: show the method only if the cart subtotal is at least this amount. Leave it empty to always show it.
Minimum weight: hide the method when the cart weighs less, in your store weight unit. 0 means no limit.
Maximum weight: hide the method when the cart weighs more, in your store weight unit. 0 means no limit.
Disabled shipping classes: hide the method when the cart contains a product from any of these WooCommerce shipping classes.
Availability without shipping zones
Ignore shipping zones: offer the method for the countries below, whether or not it is added to a zone.
Countries: the destination countries for that mode. Leave empty to use all countries your store ships to. This field is used only when Ignore shipping zones is on.
Advanced
Debug log: writes EasyPost requests to WooCommerce > Status > Logs, source vfd-easypost. API errors are always logged, even when this option is off. The API key and customer addresses are never logged.
Remove data on uninstall: when on, deleting the plugin removes its settings and zone methods. Deactivating the plugin never deletes settings.
How it works at checkout
When the customer enters a delivery address, WooCommerce asks the plugin for a rate. The plugin first checks the conditions: delivery country, cart weight, minimum subtotal and disabled shipping classes. If free shipping applies, the method is shown with a zero price and no request goes to EasyPost.
Otherwise the plugin sends EasyPost the ship-from address, the delivery address and the parcel, and receives the rates of all your carrier accounts. It picks the cheapest allowed rate, converts it to your store currency and shows it under your method name. For countries that need a postcode, the request is made only after the customer has entered one.
Each answer is cached for 1 hour for the same address and parcel. An address without usable rates is remembered for 10 minutes. After a timeout, a rejected key, a rate limit or an EasyPost server error, no requests are made for 5 minutes. The API timeout is 10 seconds. In all these cases the customer sees no error: the fallback price is used, or the method is hidden if there is no fallback price.
The chosen carrier and service, and in the one-parcel mode the estimated delivery days, are saved with the shipping line of the order. You see them on the admin order screen.
The method works on the classic checkout and on the Cart and Checkout blocks. It is compatible with WooCommerce High-Performance Order Storage (HPOS).
The plugin calculates rates only. It does not buy labels, track parcels, validate addresses, offer pickup or drop-off locations, or add insurance or signature options. It shows one option (the cheapest allowed rate), not a list of services. There is no box packing beyond stacking the items into one parcel, and no rate markup or handling fee.
License key
The plugin works with a VibeFox license key from vibefox.net. The license block is at the top of WooCommerce > Settings > Shipping > VibeFox EasyPost. Paste the key into License key and click Activate. The block shows the status, for example the date the license is active until and your domain. Use Check now to check the status again, Change key to enter another key and Remove key to remove it from this site. The link Manage licenses and domains in your account opens your vibefox.net account.
One key works on one domain. Removing the key from a site does not free its domain slot. Free the slot in your vibefox.net account.
Without an active key, EasyPost is not shown to customers at checkout. Logged-in store managers still see it, marked (unlicensed — visible to admins only), so you can set up and test the plugin before you buy a key. A reminder appears on the Plugins page and on WooCommerce pages. Existing orders are not affected.
When a license expires, the plugin keeps working, but updates and support need a renewal. The status is checked again automatically in the background.
Troubleshooting
EasyPost does not appear at checkout: check that the license is active, Enable/Disable is on, and the method is added to the zone of the customer's country (or Ignore shipping zones is on and the country is allowed). Check the weight limits, Minimum subtotal and Disabled shipping classes. Without a live rate the method needs a fallback price for the country or for Other countries.
Live rates do not appear: read the warnings at the top of the settings page, then turn on Debug log, reload the checkout and open WooCommerce > Status > Logs, source vfd-easypost. Common reasons: no API key or ship-from ZIP code, a non-USD store without the USD exchange rate, the customer has not entered a ZIP code yet, no carrier of your EasyPost account serves the address, or Allowed carriers / services filters out all rates.
Rates look like test prices: a test key (EZTK...) is set. Use a production key (EZAK...) on the live store.
Rates stopped for a few minutes: after a timeout, a rejected key or an EasyPost server error, the plugin pauses requests for 5 minutes and uses fallback prices. Check the API key and the log.
Is tax included? EasyPost rates do not include sales tax. With Tax status Taxable, WooCommerce adds tax on shipping according to your tax settings.
Rates look outdated after a change: save the settings page. This clears the cached EasyPost rates.
Developer hooks: the filters vfd_ep_shipment_request (request body), vfd_ep_selected_rate (chosen rate), vfd_ep_api_url (API base URL) and woocommerce_shipping_vfd_easypost_is_available adjust the plugin.
The license block shows an error: follow the message in the block. For example, if the key is already used on another domain, free a slot in your vibefox.net account and click Check now. If the site address changed, click Check now to activate the key for the new domain. If the license server cannot be reached, the plugin keeps working on the last known status.
Uninstall
Deactivating the plugin keeps all settings and only clears the cached rates. To remove it, deactivate and delete it on the Plugins page. The license key and license status of this plugin, cached rates and old log files are always removed. Settings and zone methods are removed only if Remove data on uninstall was on. Otherwise they stay for a later re-install. Existing orders keep their shipping lines.
EasyPost is a trademark of its respective owner. This plugin is not affiliated with or endorsed by EasyPost.
