=== Parcel2Go Shipping === Contributors: parcel2go Tags: shipping, woocommerce, labels, courier, parcel2go Requires at least: 6.6 Tested up to: 7.0 Stable tag: 2.3.0 Requires PHP: 7.4 License: GPLv3 or later License URI: https://www.gnu.org/licenses/gpl-3.0.html Create shipments from WooCommerce admin via the Parcel2Go API: get quotes, book services, and pay with prepay or card. == Description == Parcel2Go Shipping is a WooCommerce admin extension that connects your store to the Parcel2Go API. From the WooCommerce admin you can: * Get shipping quotes for orders * Book shipping service and pay via card * Download shipping labels (multiple sizes) after booking * Manage shipping and monitor progress till fulfillment * Configure store settings * Link your Parcel2Go account to import settings and access better rates * Ship multiple orders in bulk * Prepay payment and top up account balance * Onboarding screen for initial setup and configuration The plugin registers under **WooCommerce → Parcel2Go Shipping** and works with WooCommerce Admin. It requires WooCommerce to be installed and active. New to the plugin? The Installation section lists the store and product details you need before your first shipment, and the FAQ covers the most common booking issues. This plugin uses third-party external services (Parcel2Go API, Braintree, and Sentry). See the "External services" section below for what data is sent, when, and links to each service's terms and privacy policy. == External services == This plugin connects to the following third-party services. Use of each is required for the stated features. * **Parcel2Go API** — Used to get shipping quotes, validate addresses, find dropshop locations, create bookings, and manage labels. The plugin sends order and shipment details (addresses, postcodes, package dimensions, and related data) to Parcel2Go when you request quotes, validate an address, search for dropshops, or complete a booking. This service is provided by Parcel2Go.com Limited. Terms and conditions: https://parcel2go.com/terms-and-conditions | Privacy policy: https://parcel2go.com/privacy-policy * **Braintree (PayPal)** — Used to process card payments when you pay for a shipment at checkout. Payment card data is sent to Braintree only when you choose "Pay by card" and submit payment; the plugin does not store card details. This service is provided by Braintree (a division of PayPal). Terms: https://www.braintreepayments.com/legal | Privacy policy: https://www.braintreepayments.com/legal/braintree-privacy-policy * **Sentry** — Used for error reporting and performance monitoring and to collect feedback you submit in the plugin. When the plugin runs, Sentry may receive error details, performance metrics, and optional feedback messages; we do not collect personal data without consent. This service is provided by Sentry. Terms: https://sentry.io/terms/ | Privacy policy: https://sentry.io/privacy/ == Source code for built assets == The JavaScript and CSS in the build/ directory are generated from human-readable source code. The source is included in this plugin in the **src/** directory so the code can be reviewed, studied, and adapted in line with open source guidelines. **Prerequisites:** Node.js (and npm) for the front-end build; Composer for PHP dependencies (optional, if working on the backend). **To rebuild the front-end:** This plugin includes a package.json with the required dependencies. From the plugin directory, run: npm install npm run build The build output is written to the build/ directory. For PHP dependencies (e.g. when developing the includes/ code), run `composer install` (or `composer install --no-dev` for production); see composer.json in the plugin directory. == Installation == = Requirements = * WordPress 6.6 or later, WooCommerce 8.0 or later and PHP 7.4 or later. * A store address in the United Kingdom. You can ship to UK and international destinations, but the store itself must be in the UK. * A Parcel2Go account is optional. You can quote, book and pay by card as a guest. = Install the plugin = 1. Install and activate WooCommerce if you have not already. 2. Upload the plugin zip via **Plugins → Add New → Upload Plugin**, or install from the WordPress.org plugin directory. 3. Activate **Parcel2Go Shipping**. = Set up your store = Go to **WooCommerce → Settings → General** and fill in: * **Store Address**: address line 1, city, postcode and country. This is your collection address. * **Shop phone number** (in the Store Address section): required for booking. * **Shop contact name** (in the Store Address section): the name on your labels. If empty, your site title is used. If you ship outside the UK, also fill in: * **Company status** and **EORI number** (in the General options section). * **Tax number** (in the Taxes and coupons section): your VAT or tax registration number. If you link a Parcel2Go account, the default settings from your account, such as your collection address and tax numbers, are imported, and you can change them in the plugin's own Settings page (see the FAQ). = Set up your products = Edit each product you sell and check these fields before you ship: * **Weight** (Product data → Shipping): required on every product. You cannot book an order until every item has a weight. * **Length, Width and Height** (Product data → Shipping): recommended. If they are missing, your default package is used, or 10 x 10 x 10 cm if you have none. For shipments outside the UK, also fill in (Product data → Shipping): * **Tariff code (HS)**: at least 6 characters. * **Country of manufacture**: if you never set it, the product is treated as made in China, so check it is correct. For shipments to customers in the EU, customs also needs product codes: * **SKU** (Product data → Inventory). * **Manufacturer ID** (Product data → Shipping): the model or part number from the manufacturer or your supplier. Up to 32 characters; | and : are not allowed. * **GTIN, UPC, EAN or ISBN** (Product data → Inventory): only if the product has a barcode. If any of these are missing when you book, the plugin asks for them in the booking window. Codes entered there apply to that booking only, so add them to the product to avoid entering them again. Variations use the parent product's tariff code, country of manufacture and Manufacturer ID when their own are empty. A variation's SKU is not inherited. = Ship an order = 1. Make sure the order status is **Processing**. Only Processing orders can be shipped. 2. Go to **WooCommerce → Parcel2Go Shipping** and click **Ship Now** next to the order, or open the order and click **Ship with Parcel2Go**. 3. Check the store address, shipping address and packaging. To change the parcel size or weight for this shipment, open **Packaging**, enter the dimensions and click **Apply**. 4. Under **Choose a service**, compare quotes and filter by Drop off, Collection or DDP. For drop off services you can view the nearest dropshops. 5. Click **Book** and confirm the options, such as the collection date, proof of delivery, Delivery Duty Paid (DDP) or an IOSS number for EU parcels. 6. Pay by card, or with your PrePay balance if your account is linked. 7. When the booking is confirmed, the WooCommerce order is marked **Completed** and an order note records the courier, Parcel2Go order number and tracking number. 8. Download your label as **A4 (1 per page)**, **A4 (4 per page)** or **4×6**. You can download labels again later from **WooCommerce → Parcel2Go Shipping → Previous Shipments**. == Frequently Asked Questions == = Do I need WooCommerce? = Yes. Parcel2Go Shipping requires WooCommerce to be installed and active. You can install this plugin first; once WooCommerce is activated, the extension will work. = Do I need a Parcel2Go account? = No. As a guest you can get quotes, book orders one at a time and pay by card. Linking a free Parcel2Go account adds: * **PrePay**: pay from an account balance instead of entering card details for each booking. * **Bulk shipping**: ship several orders in one go. * **Your default settings**: the default settings saved in your Parcel2Go account are imported automatically, and you can change them from the plugin's Settings page. They include your collection address, package sizes, tax numbers, default weight, tariff code and country of manufacture for products without their own, and a default courier service for each WooCommerce shipping method. * Your Parcel2Go account rates. To link an account, click **Login to Parcel2Go** or **Link P2G Account** on the **WooCommerce → Parcel2Go Shipping** page and sign in on parcel2go.com. To unlink it, click **Log out** on the PrePay balance card. = Where are the plugin settings? = Go to **WooCommerce → Parcel2Go Shipping** and click **Parcel2Go Settings**, or click **Settings** under the plugin on the Plugins screen. The settings page needs a linked Parcel2Go account. When you link your account, its default settings are imported into the plugin, and any changes you make on the settings page are saved back to your Parcel2Go account. Without an account, the plugin uses your WooCommerce store settings. = My store is outside the UK. Can I use the plugin? = Not at the moment. Parcel2Go Shipping only supports stores with a United Kingdom address. = Why is an order missing from the list? = Only orders with the **Processing** status appear. Change the order status in WooCommerce and click **Refresh orders**. = Why can't I book an order? = The plugin shows "Complete the following before booking" with what is missing and a link to fix it. The usual causes are: * **Store details**: the store address or shop phone number is missing. * **Customer shipping address**: the order is missing an address line, city, postcode, country, recipient name, phone or email. * **Item weights**: a product on the order has no weight. * **Tariff code or Country of manufacture**: needed for orders going outside the UK. * **Product codes for EU customs**: needed for some EU shipments; enter them in the booking window. = Why are no quotes showing? = Check that your store address and the order's shipping address both have a country and postcode, and that the parcel weight and dimensions are realistic. Packages must be between 1 cm and 150 cm on each side. You can adjust the size in **Packaging** and click **Apply** to get new quotes. If quotes still do not appear, contact us (see below). = What does "Could not process checkout" mean? = Parcel2Go checked the shipment and found a problem, for example an invalid postcode, phone number or customs detail. The message says which field to fix and where, with a link to the store settings or the order. = What do I need for international shipments? = * A tariff code and country of manufacture on each product, or defaults set in the plugin Settings page if your account is linked. * Your EORI number and tax number in your store settings. You can get an EORI number from HMRC: https://www.gov.uk/eori * For EU customers: product codes (SKU, Manufacturer ID and barcode where one exists) on some services. * Optionally, choose **Delivery Duty Paid (DDP)** so your customer pays no charges on delivery, or enter your IOSS number for eligible EU parcels. An IOSS number is "IM" followed by 10 digits. = How do I ship several orders at once? = Bulk shipping needs a linked Parcel2Go account. 1. In the plugin Settings page, open **Default services** and choose a courier service for each WooCommerce shipping method. You can also set one from the order list. 2. On **WooCommerce → Parcel2Go Shipping**, select the orders and click **Ship now**. 3. Review the orders by service and the total, then pay. An order cannot be bulk shipped if its items have no weight, it has no default service for its shipping method, none of its default services are available, or it is missing customs data for an international destination. You can still ship it on its own. = How does PrePay work? = With a linked account, top up your balance from the PrePay card on **WooCommerce → Parcel2Go Shipping**, or while booking. The minimum top-up is £20. When your balance covers the total, choose **Pay with PrePay** at booking. = Can I track shipments in the plugin? = The tracking number is added to the WooCommerce order note when the booking is confirmed. Tracking inside the plugin is not available yet. = How do I get help? = Use **Contact Us** on the **WooCommerce → Parcel2Go Shipping** page, or our live chat, available 24 hours a day, 7 days a week: https://www.parcel2go.com/help-centre/parcels/question/general/how-do-i-contact-parcel2go = Does the plugin collect user data? = We do not collect user data without consent. The plugin uses Sentry for error and performance monitoring and optional feedback; see the "External services" section above for what data is sent and links to Sentry's privacy policy. == Upgrade Notice == = 2.3.0 = Security update for the plugin's JavaScript dependencies. Now requires WordPress 6.6 or later. = 2.2.0 = Adds the EU customs product identifiers required from 1 November 2026. Add a Manufacturer ID to your products' Shipping tab. Also fixes the recipient phone and the IOSS limit. = 2.1.2 = Metadata update and developer tooling improvements. == Screenshots == 1. Parcel2Go Shipping in the WooCommerce admin menu 2. Order ship flow: get quotes and book a service 3. Order Process: Select a courier and ship parcel 4. Complete screen: Successfully shipped order via Parcel2go 5. Settings: extended woocomerce settings to show required fields 6. Settings: fields for tax and eori number 7. Product shipping tarrifcode and country of manufacture == Changelog == = 2.3.0 = 02/11/2026 * Security: updated the plugin's JavaScript dependencies to fix known vulnerabilities, including all critical and high severity advisories. * Changed: the minimum WordPress version is now 6.6, as the updated WordPress and WooCommerce components need it. * Changed: field sizing and translatable range messages updated to match the latest WordPress components. * Docs: expanded the setup guide and FAQ with the store and product details needed before shipping, account linking, PrePay, bulk shipping and common booking issues. = 2.2.0 = 23/10/2026 * Added: EU customs product identifiers. From 1 November 2026 EU customs needs an Item SKU, a Manufacturer ID and, where one exists, a barcode for each item sent to a consumer in the EU. The plugin reads them from the product (the SKU, a new Manufacturer ID field in the Shipping tab, and WooCommerce's GTIN/UPC/EAN/ISBN field) and asks for any that are missing when you book. * Changed: the IOSS number is now offered, and sent, only for parcels under the EU limit as calculated by Parcel2Go, instead of a fixed 150. * Fixed: the recipient phone now uses the order's shipping phone, falling back to the billing phone. * Fixed: an IOSS number is checked against the format Parcel2Go expects (IM followed by 10 digits). = 2.1.2 = 09/06/2026 * Metadata update: tested up to WordPress 7.0. * Added PHP unit tests and CI pipeline for automated test runs. = 2.1.1 = 21/05/2026 * Added support for store dimension units: users can use any WooCommerce store dimension unit and values are normalized for Parcel2Go API requests. * Metadata update: tested up to WordPress 7. = 2.1.0 = 07/05/2026 * Link your Parcel2Go account to import settings and access better rates. * Bulk shipping: ship multiple orders in a single operation. * Prepay payment: prepay for shipments and top up your account balance. * Onboarding screen: simplified initial setup and configuration flow. * Enhanced settings page for default preferences. = 2.0.4 = 13/04/2026 * Allow users to login to Parcel2Go to access better rates. * Default Parcel2Go API environment to production for all WordPress installations; use `P2G_FORCE_DEVELOPMENT` constant only to override. = 2.0.3 = 31/03/2026 * Add manual release workflow with guardrails for version parity, stable tag format, changelog presence, and existing-SVN-tag checks. * Generate two downloadable artifacts per release run: SVN payload zip and WooCommerce production zip (from wp-scripts plugin-zip). * Move WordPress.org deploy to manual-only and use the recommended 10up deployment action. = 2.0.2 = 18/03/2026 * Download shipping labels from the order complete screen and from **Previous Shipments** (label size: A4 and 4x6). * Label availability after booking without a full page reload when the booking response includes a label hash. * For completed orders that are missing a stored label hash, the plugin can sync the hash from Parcel2Go once so labels become available. * Shipment cards show courier branding consistently with the quotes flow (courier slug). * Label URLs are cached server-side for faster repeat downloads. = 2.0.1 = 05/03/2026 * WordPress.org directory compliance: include composer.json and src/ in distribution. * Document external services (Parcel2Go API, Braintree, Sentry) in readme with data usage and ToS/Privacy links. * Document source code for built assets (src/) and build instructions in readme. = 2.0.0 = 03/03/2026 * Major update: rebuilt codebase with React and WooCommerce Admin. * HPOS (High-Performance Order Storage) compatible. * Product fields: tariff code and country of manufacture for international customs. * Improved booking flow, prerequisite notices, and order/shipment pages. * Courier and tracking details on orders and Previous Shipments. = 1.0.4 = 11/11/2019 * Bug fix for parcel protection quotes * API performance improvements. = 1.0.3 = 08/07/2019 * Option to choose Parcel2Go shipping label sizes. * Testing with latest WordPress and WooCommerce. * API performance improvements. = 1.0.2 = 07/05/2019 * API performance improvements. * Updates to images. * Tested with latest WordPress and WooCommerce. = 1.0.1 = 05/02/2019 * Added all quotes to the final quote page, instead of only the top results. * Various bug fixes. = 1.0 = 11/07/2018 * First release of the Parcel2Go WordPress plugin.