Prestashop Module: USPS: Rates, Bulk Labels, Returns, Tracking, Estimator

hero image

Offer real-time United States Postal Service (USPS) rates to customers, create bulk labels for all your orders in one click, allow customers to track their orders, and provide shipping quotes on the product and cart pages.

  • Save time and money by heavily optimizing your shipping workflow with unlimited bulk labels – the Bulk Order Labels feature rivals other shipping services that are costly ($50-$100+/mo) and have limits on the amount of labels you can create per month.
  • Increase conversion and reduce abandoned carts with shipping quotes on the product and cart pages without requiring the customer to make an account.
  • Increase customer satisfaction and reduce tracking inquiries with tracking details on the customer’s order page.

This module uses USPS Web Tools for rates and EasyPost for labels. USPS Web Tools is 100% free; EasyPost labels are free for up to 50,000 packages per year* (you only pay the USPS postage) — consult their support for pricing information past 50,000.

Easy Setup

Simply enter your USPS Web Tools API username, your EasyPost API keys, your address, and you’re ready to go.


Rates

Offer real-time USPS rates at checkout.

  • Choose to offer Regular rates or discounted Commercial/Commercial Plus rates.
  • Offer USPS Flat & Regional Rates when applicable.
  • Select the carriers you want to use and the module installs them for you in your back-office automatically.
  • Display delivery times retrieved directly from USPS in real-time. e.g. “2 Business days.”

Bulk Order Labels

Create unlimited USPS shipping labels for all your orders in one click.

Powerful customization options to optimize your shipping workflow saving you countless hours in order fulfillment – the Bulk Order Labels feature rivals other shipping services that are costly ($50-$100+/mo) and have limits on the amount of labels you can create per month.

  • Customer information (address, products) is automatically populated for each label.
  • Dimensions are automatically populated based off each order’s products and the boxes you’ve added in the module.
  • Ability to tweak label settings for individual orders before creating bulk labels.
  • Filter orders by Order Status, Country, Carrier, etc, to easily create labels for all orders of a certain filter.
  • View and re-print previously created batches of labels.
  • Intuitive error handling: if an error occurs for an order during bulk label creation (e.g. invalid zip code), the rest of the labels are unaffected and can be printed. Orders with label errors will have an associated error message – simply fix the error and create the label again.
  • Easily fetch rates from EasyPost for each order directly in the orders list. This allows you to see how much each label will cost before creating them.
  • Automatically set each order to a custom order status on label creation.
  • Automatically set each order’s tracking number on label creation – the tracking link will appear in your store’s “In Transit” email template.

Default Label Settings by Zone

Default label settings are used to pre-populate an order’s label form based on the zone of its shipping address so you don’t have to configure them for each label.

  • Configure default label settings for each of your store’s shipping zones.
  • Add more zones in your store to refine your default label settings; you can create zones for specific countries or states.

Example: You can set “Signature Required” for all orders with a North American shipping address.

Carrier Mapping

Map your custom PrestaShop carriers to associated USPS shipping methods to save time when creating labels.

Example: If you map “My Custom Carrier” to “USPS Priority Mail” — any orders that chose “My Custom Carrier” as their shipping method will have “USPS Priority Mail” pre-selected as the label’s shipping method.


Labels

Create USPS shipping labels for individual orders in one click.

The module automatically populates the label creation form with the order’s information (shipping address, products, dimensions, etc) saving you countless hours spent entering customer information or dimensions.

  • Order status and tracking number are automatically updated on label creation.
  • Ability to create custom labels not associated with an order.
  • View, re-print, or cancel/refund previously created labels.
  • View the rate for a label before creating it to see how much it will cost.
  • Choose between a label size of 4×6″ or 8.5×11″.

Return Labels

Create USPS return labels for individual orders in one click.

  • The module automatically swaps the “To” and “From” addresses.
  • Ability to create an associated return label to be printed at the same time as the shipping label (useful for clothing stores with high return rates).
  • You can choose a different return address for an order’s return label.
  • Ability to create custom return labels not associated with an order.
  • View and re-print previously created return labels.

Shipping Estimator

Increase conversion by displaying shipping quotes on the product & cart pages.

The shipping estimator allows guests to enter a country and zip code to fetch quotes without making an account.

  • Prevent “shipping fee shock” and reduce abandoned carts by displaying the shipping costs upfront.
  • Existing customers will see rates based on their account’s shipping addresses.
  • Customers with multiple addresses can select a different address from the estimator’s drop-down menu to see different rates.
  • The estimator will show all applicable carriers for the cart including custom carriers and carriers added by most other modules*.
  • Customers that have a product added to their cart can change their cart’s selected shipping method from the estimator.
  • The estimator takes into account the product that the customer is currently viewing – any carrier restrictions or carrier discounts for that product will apply even if they haven’t added it to their cart yet.

* Not all third-party shipping modules will show rates in the estimator – all modules are created differently and they may not follow the same standards as this module.


Rate Discount Rules

Configure custom discount rules for each carrier.

Examples:

  • Free Shipping for Priority on orders over $100
  • $5.00 off Priority Express on orders over $75
  • 50% off First Class on all orders

Box Packing

Increase conversion and save money by offering accurate rates based on the products in the cart.

The module uses your custom box dimensions to calculate shipping rates in the front-office. Add all the box dimensions that you ship in the module configuration page.

When calculating rates, the module uses a sophisticated box packing algorithm to determine the smallest of your box(es) that will fit all the products in the customer’s cart; it can split the products into multiple boxes when the cart has more products than your largest box can fit.

  • Choose if you want to charge customers for each box or if you only want to charge for one box.
  • Add unlimited boxes into the module from the configuration page – the more boxes you add, the more accurate the rates will be.
  • Avoid overcharging/undercharging customers for shipping.
  • When creating labels, the module automatically populates the box/dimensions for each order’s label based on the products in the order. This can save you countless hours spent entering dimensions for each order when creating labels.
  • For an order, you can view the exact breakdown of how the module calculated the box packing when calculating rates—you can view all the boxes that were used and which products were packed inside them.

USPS Flat Rates

Offer flat & regional USPS rates at checkout and purchase flat rate labels using USPS Flat & Regional Rate boxes/envelopes.

  • When a cart’s products fit inside a USPS Flat Rate box/envelope, the module will fetch flat rates for that cart if available.
  • You can disable individual USPS Flat Rate boxes/envelopes.
  • Ability to choose a flat rate box when creating labels—if no flat rate is available, a regular label will be created.

Tracking

Allow customers to see their order’s tracking progress from the front-office Order Details page.

  • Automatically updates when a tracking event occurs.
  • Displays a green progress bar in the order details page.
  • Provides brief information about the last tracking event for their parcel (event description, current location, event time).
  • Provides a direct tracking link to USPS.com
  • Tracking exceptions (e.g. delays, return-to-senders, incomplete addresses) will be displayed along with a yellow progress bar indicating an issue with the delivery.
  • Orders with multiple associated labels will have multiple progress bars, one for each label.

* Only order labels created by the module will be tracked; custom labels and manually entered tracking numbers will not be tracked.


Auto-Update Order Status on Delivery

Automatically update orders to a custom order status when the USPS tracking says it has been delivered.

  • You can choose which order statuses you want to track and what status you want to update them to on delivery.
  • The module automatically receives tracking updates from EasyPost and updates the order status as soon as it receives a “Delivered” update.

* Only order labels created by the module will be tracked; custom labels and manually entered tracking numbers will not be tracked.


Scan Forms / Manifests

Scan Form is a document/manifest that can be scanned to mark all included tracking codes as “Accepted for Shipment” by USPS instead of having to scan them one at a time on pick-up/drop-off.

Scan Forms are not mandatory and each shipping label can already be scanned individually without a Scan Form, they are purely for convenience, organization, and saving time.

  • Ability to add all or selected shipments to a scan form.
  • View and re-print previously created scan forms.

Smart Caching

The module stores rates for each cart in the database to speed up your website. It will only retrieve new rates if the customer changes their zip/postal code, the products in their cart, or the quantities for products already in their cart

 

Before installing the module, you will need:

  1. A “USPS Web Tools API” account: https://www.usps.com/business/web-tools-apis/welcome.htm
  2. An EasyPost account with a payment method on file: https://www.easypost.com/signup
  3. A US zip code to use as your origin address.
  4. Your website’s PHP version must be at least 5.4.0

This module uses the USPS Web Tools API to fetch front-office rates, and the EasyPost service to purchase and print USPS labels.

Installation

  1. Go to the Modules page.
  2. Find the “USPS” module and click Install
  3. If you don’t see the module, click Upload a Module and upload the module .zip file that you were provided with.

The module must then be configured with your USPS Web Tools API username, your EasyPost Production and Test API keys, and your US origin address.

Your EasyPost account must have a payment method on file in order to be able to purchase USPS labels from them, it’s recommended to load your EasyPost wallet via ACH to avoid the 3% credit card processing fee: https://www.easypost.com/account/billing

You may have to add the free tier of the “Shipping API” subscription plan to your EasyPost account: https://www.easypost.com/account/billing

Notice for PrestaShop 1.6.0.0 to 1.7.0.5 users: There’s a small chance that another module on your store might conflict with this one and prevent installation — if this happens, you’ll see a “hook” related error upon installation indicating which module is conflicting. To fix it, you’ll have to follow the module instructions to add one line of code to a file in your PrestaShop folder (or uninstall the conflicting module). If you are using PrestaShop 1.6 to 1.7.0.5, as a precaution, ensure that you or someone on your team is able to add this line of code prior to purchasing this module.


Configuration

  1. Go to Modules page.
  2. Find the “USPS” module and click Configure.
  3. Enter your USPS Web Tools API username.
  4. Enter your EasyPost Production and API keys (found here: https://www.easypost.com/account/api-keys)
  5. Go to the “Addresses” tab of the module configuration and edit the default address to your own.

It’s strongly recommended to go through the configuration page and read what each setting does to ensure the module works exactly how you want it to.

It’s also recommended to configure default label values in the Default Label Values by Zone tab so that you don’t have to set them for every single label you create.

  • 2.2.3 (2023/11/22)
    • IMPORTANT: In 2024, USPS will start requiring a user’s WebTools API password to fetch rates. This update adds a “WebTools API Password” field to the configuration page in preparation for this change, it must be configured immediately.
    • Change \_PS_OS_SHIPPING_ constant to use Configuration::get.
    • FIX: Convert 9 digit zip codes to 5 digits because the USPS API does not support 9 digit codes for rates.
  •  2.2.2 (2023/06/13)
    • CHANGE: “Retail Ground” has been updated to “Ground Advantage” as per the new USPS changes. USPS Ground Advantage combines Retail Ground, First-Class Package, and Parcel Select Ground services. Please disable First-Class carriers as they will no longer return any rates.
    • FIX: Estimator incorrectly showing carriers that are group-restricted
    • FIX: Add backticks to MySQL query for syntax compatibility
  • 2.2.0 (2023/01/11)
    • NEW: Compatibility with PS 8.0 and PHP 8
    • Remove unused hooks
    • Fixed issue with tableExists() preventing install/uninstall in PS 8.0
    • Fixed PHP 8 error with call_user_func_array()
    • Fix PHP 8 error in FPDI library
  • 2.1.0 (2022/08/15)
    • Fix id_state being required on international labels
    • Fix fatal error on language change
    • Fix First-Class Package Service error on bulk-label creation
  • 2.0.9 (2022/02/07)
    • Fix blank page error in sidebar pages (View Shipments, View Batches, etc)
    • Restrict tab.js to module pages only
  • 2.0.8 (2021/12/07)
    • Fix issue occurring when users rapidly change quantities
  • 2.0.7 (2021/10/17)
    • Update cacert.pem bundle
  • 2.0.6 (2021/08/19)
    • Fix missing return type declaration in DbQuery child class for PS 1.7.8.0
    • Fix missing tab JS in configuration pages in PS 1.7.8.0
  • 2.0.5 (2021/04/19)
    • Update API endpoints to HTTPS
  • 2.0.4 (2021/01/07)
    • Fix bug where attribute weight was ignored
  • 2.0.3 (2020/12/08)
    • Fix uninstallCarriers and submitRates method to check if carrier exists before updating/deleting.
    • Fix CartPackedBox unit measurement notice if store is set to unusual units.
    • Fix output buffer notice in PrintableObjectModel
    • Remove underscores from controller class names to fix role permissions not saving
    • Fix PHP errors on strict configurations
    • Remove extra Jquery import from PS 1.7.7 pages
    • Fix tooltip/popovers missing in PS 1.7.7
    • Fix URI length error when fetching rates or creating a label for an order containing lots of products
  • 2.0.2 (2020/08/13)
    • Enable JS in configuration page when module is disabled
    • Fix bug where Estimator would display carriers as “free” when no carriers were available
    • Add “USPS Parcel Select” shipping method
    • Add “displayProductActions” hook
    • Remove label fee when order qualifies for free shipping
  • 2.0.0 (2020/05/11)
    • Initial release of “USPS: Rates, Bulk Labels, Returns, Tracking, Estimator” module.

Previous rates-only version (“zh_uspsshipping” module):

  •  1.0.5
    • FIX add jQuery in configuration page
  • 1.0.4
    • FIX added more acceptable unit of measurement spellings
    • FIX autoload bug on some PHP versions.
  • 1.0.3
    • FIX “empty() bug.
  • 1.0.2
    • Remove unused tab
  • 1.0.1
    • FIX database constant in older PHP versions
    • FIX Conversion of ValueOfContents for international rates

Screenshots

Admin Pages

Configuration Settings

Disclaimer: The developer of this module is not affiliated in any way with EasyPost; the EasyPost service was chosen due to its pricing and ease of integration. The developer of this module is not responsible for any issues or changes with your EasyPost account, pricing, or policy. Changes made by EasyPost may affect your EasyPost billing or module usage and are out of the control of the developer. You are responsible for your EasyPost account, their fees (if any), and ensuring that you are being billed the correct prices.