Prestashop Module: Canada Post: Rates, Bulk Labels, Returns, Tracking, Estimator

hero image

Offer real-time rates to customers, create bulk order labels 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.

Easy Setup

Simply click “Sign into Canada Post” to connect your Canada Post account, add your address, and you’re ready to go.


Offer real-time Canada Post rates at checkout.

  • Your negotiated/discounted Canada Post rates will be used if available.
  • 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 Canada Post in real-time. e.g. “2 Business days.”

Bulk Order Labels

Create unlimited Canada Post 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.

  • Map your custom PrestaShop carriers to Canada Post shipping methods and set default label values so that you don’t have to configure label settings for each order.
  • 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.
  • You can 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 postal 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 Canada Post 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 “Shipped” email template.


Create Canada Post 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.
  • Create custom labels not associated with an order.
  • View, re-print, or void/refund previously created labels.
  • View the rate for a label before creating it to see how much it will cost.
  • Choose to create an associated Return label to be printed at the same time (contract Canada Post customers only).

Note: regular Canada Post customers will only be able to print 8.5×11” labels, whereas commercial Canada Post customers with a parcel agreement can choose between 4×6” and 8.5×11” labels.

Return Labels

Create Canada Post return labels for individual orders.

  • The module automatically populates the Receiver fields with your address and the Returner fields with the customer’s address.
  • 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 postal/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.


  • Free Shipping for Xpresspost on orders over $100
  • $5.00 off Expedited on orders over $75
  • 50% off Priority on all orders

Box Packing

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

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.


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

  • 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
  • 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.

Auto-Update Order Status on Delivery

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

The module tracks all shipped orders every hour – you can choose which order statuses you want to track and what status you want to update them to on delivery.

This feature requires that you have the free “Cron tasks manager” module made by PrestaShop installed – instructions on setting up the cron task are found in the module documentation.

Manifests / Transmitting Shipments

Canada Post customers with a parcel agreement must transmit their batches of shipments to create a manifest that they must present to the post office on pickup/drop-off. The module allows you to easily transmit custom groups of shipments to print a manifest of all the shipments in the group.

View and re-print previously created manifests.

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.

  1. A Canada Post account.
  2. Your website’s PHP version should be at least 5.4.0
  1. Go to the Modules page.
  2. Click Upload a Module and upload the module .zip file.

The module must be configured with your Canada Post account, an origin address, and at least one box.

To configure the module:

  1. Go to Modules page.
  2. Find the Canada Post module and click Configure.
  3. Click Sign in with Canada Post
  4. You’ll be redirected to the Canada Post website where it will prompt you to login to your account and authorize the module to create shipments on your behalf. You can revoke these permissions at any time from the Canada Post website.
  • 4.2.3 (2024/01/10)
    • Add compatibility with PS 8.1
    • FIX: Estimator incorrectly showing carriers that are group-restricted
    • FIX: Add backticks to MySQL query for syntax compatibility
    • Change _PS_OS_SHIPPING_ constant to use Configuration::get
  • 4.2.2 (2023/03/29)
    • NEW: Fetch rates using a product’s dimensions when it doesn’t fit in any of your configured boxes.
  • 4.2.0 (2023/01/01)
    • NEW: Compatibility with PS 8.0+ and PHP 8.0+
    • Removed unused hooks
    • Fix PHP 8.0 errors to be backwards compatible
    • Changed FDPI each() function to foreach()
    • Fix FDPI library warnings in older PHP versions
    • Fix translation bug where some strings were translated before module construction
    • Fixed “tableExists” check preventing install/uninstall
    • Fix modal.tpl warning in Canada Post backoffice pages
    • Fix deprecation notice in Cache when checking if cart was updated
    • Fix label currency default value check operator from == to ===
  • 4.1.2 (2022/07/09)
    • Fix rare non-numeric error for business-day estimate
    • Fix removed hyphens in 9 digit USA zip codes
    • Fix fatal error on language change
    • Fix weight conversion bug on Live Rate when store rate is set to “g”
  •  4.1.1
    • Update cacert.pem bundle
  • 4.1.0
    • Fix max length bug on label error messages
  •  4.0.9
    • Fix missing tab JS in configuration pages in PS
  • 4.0.8 (07/01/2021)
    • Fix bug where product attribute weight was ignored
  • 4.0.7 (12/12/2020)
    •  Fix bug where Estimator would display carriers as “free” when no carriers were available
    • Add box packing optimization to help speed it up when it requires many boxes
    • Fix bug where customs product details only showed one product when customers ordered multiple combinations of the same product
    • Fix bug where tab “name” field doesn’t exist for all languages
    • 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
    • Add secure token to front controller
    • Abstract HTML tags in PHP files with render methods
    • Fix icon.tpl template vars conflicting with list_action_button.tpl template vars
    • Add HTML var escaping format
  • 4.0.6 (05/26/2020)
    • Fix bugs for non-contract users using contract services on certain orders
    • Fix Refund button for non-contract users using contract services
    • Enable JS in configuration page when module is disabled
  • 4.0.5 (05/14/2020)
    • NEW: Added support for new order page in PS 1.7.7
    • NEW: Ability for non-contract Canada Post customers to use contract services (e.g. 4×6 labels) — they have to change their account type to “Commercial Contract” in the module preferences to use these services
    • Fix issue where multi-select options in configuration page were deselecting (tracking order statuses, excluding bulk statuses)
    • Add ability for PS 1.6 users to send tracking emails
    • Add default “output-format”, “requested-shipping-point”, and “intended-method-of-payment” values upon initial configuration
    • Fix certain return labels for orders not showing up in their respective order page
    • Fix bug where editing an address makes it inactive
    • Fix bug when toggling origin address via checkmark
  • 4.0.4 (04/16/2020)
    • Fix missing empty box weight when Default Box is configured
    • Fix errors not displaying when registering to the platform
    • Improve backend JS to prevent conflicts between modules
    • Add jQuery to module configuration page in PS 1.7.7+
    • Fix Strip spaces from return label postal codes
    • Change Shipment “name” length from 32 to 255
    • Fix “Address” namespace issue in Cache.php
  •  4.0.3
    • NEW: Option to send tracking emails on label creation
    • Fix error on orders containing only virtual products
    • Fix: save tracking number before changing order status
    • Fix styling on estimator
    • Prevent user from removing all Groups
  • 4.0.2
    • Fix Rate Discount rule error when discount value is empty
    • Fix styling on estimator
    • Add HS Tariff in label form
    • Fix double div closing tag in development template
    • Fix return label error on intl shipments
    • Fix unit weight on intl shipments
  • 4.0.1
    • Fix estimator showing as Free on out-of-stock products
  • 4.0.0
    • Module completely re-built from the ground up with new features and better performance.
    • NEW: Create Bulk Order Labels in one click
    • NEW: Re-designed label interface with dozens of new label options
    • NEW: Front-office Shipping Estimator on Product/Cart pages
    • NEW: Front-office Order Tracking
    • NEW: Create Return Labels
    • NEW: Custom Rate Discount Rules
    • NEW: Auto-Update Order Status when Delivered
    • NEW: Box Packing Algorithm
    • NEW: Powerful bulk-shipping workflow optimization options
    • NEW: Smart Rate Caching to speed up the front-office
    • NEW: Re-designed Shipment/Manifest History
    • NEW: Bulk-re-print and bulk-void/refund labels
    • NEW: Track parcels from the back-office
    • NEW: Get rates with tax included OR excluded
    • NEW: Upload your own carrier logo
    • Added metrics for storage space used by module
    • Rewritten documentation
    • Contract/Non-Contract Modules are now consolidated into one module
    • Numerous bug fixes and improvements
    • Add Hook.php override for backwards compatibility (namespace issue)
    • Fix carrier logo not updating during upgrades from v3
    • Change download ID
  • 3.0.4
    • FIX delivery estimate bug
  • 3.0.3
    • FIX uninstall bug in Prestashop
  • 3.0.2
    • FIX Bug with creating manual orders.
  • 3.0.1
    • Updated for Prestashop 1.7
    • Added more documentation
    • Added manual workaround for delivery times
    • Fixed cookie->exists
  • 2.2.8
    • FIX Bug with adding package weight to total weight.
    • FIX Bug with creating custom orders.
  • 2.2.7
    • FIX Some rate services not appearing for certain addresses.
  • 2.2.6
    • FIX DC option code enabled on addresses that don’t support it.
    • FIX Add conversion rate from CAD for International shipments.
    • FIX Bug preventing from deleting a box on some servers.
    • NEW Added two new International shipping methods (parcel air, parcel surface).
  • 2.2.5
    • Fixed rate not updating for Shipping Estimator module.
    • Added $delay_times smarty variable.
  • 2.2.4
    • IMPROVED: Rate volume calculation
    • FIX: Admin order page now correctly pre-selects the optimal package size
  • 2.2.3
    • FIX: Syntax for select form fields in latest PS version on older PHP versions.
    • FIX: CSS and JS selectors for new select form fields in latest PS version.
  • 2.2.2
    • NEW: Rate algorithm improvement with long edges
    • FIX: Syntax for select form fields in latest PS version
    • FIX: Bug with commercial invoices


Admin Pages

Configuration Settings