{"id":371358,"date":"2026-09-23T16:55:47","date_gmt":"2026-09-23T16:55:47","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/print-trail-for-woocommerce\/"},"modified":"2026-09-23T22:25:48","modified_gmt":"2026-09-23T22:25:48","slug":"print-trail-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/print-trail-for-woocommerce\/","author":15435117,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.6","stable_tag":"1.0.6","tested":"7.1.2","requires":"6.4","requires_php":"8.1","requires_plugins":null,"header_name":"Print Trail for WooCommerce","header_author":"Consilience Media Limited","header_description":"Integrates WooCommerce with the Print Trail API: order fulfilment, stock sync, tracking and webhooks. Requires an active Print Trail account.","assets_banners_color":"485865","last_updated":"2026-09-23 22:25:48","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/docs.printtrail.com\/channels\/woocommerce\/","header_author_uri":"https:\/\/printtrail.com\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":72,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.4":{"tag":"1.0.4","author":"consiliencemedia","date":"2026-09-23 16:55:30","revision":3709796},"1.0.5":{"tag":"1.0.5","author":"consiliencemedia","date":"2026-09-23 20:02:15","revision":3710112},"1.0.6":{"tag":"1.0.6","author":"consiliencemedia","date":"2026-09-23 22:25:48","revision":3710233}},"upgrade_notice":{"1.0.1":"<p>Stops a replayed or late-delivered stock webhook overwriting current stock, and clears the unrecognised-SKU notice as soon as a product is fixed. No settings changes.<\/p>","1.0.0":"<p>First WordPress.org release. Requires WooCommerce 8 or later and PHP 8.1 or later. The plugin folder is now print-trail-for-woocommerce. If you installed an earlier build, activate this version, deactivate the old entry and remove its folder over SFTP\/SSH rather than deleting it (see the FAQ).<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3709796,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3709796,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3710112,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3710112,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250},"banner.svg":{"filename":"banner.svg","revision":3710112,"resolution":false,"location":"assets","locale":false}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.4","1.0.5","1.0.6"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3709796,"resolution":"1","location":"assets","locale":"","width":1440,"height":1143},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3709796,"resolution":"2","location":"assets","locale":"","width":1440,"height":414},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3709796,"resolution":"3","location":"assets","locale":"","width":1440,"height":725},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3709796,"resolution":"4","location":"assets","locale":"","width":1440,"height":580},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3709796,"resolution":"5","location":"assets","locale":"","width":600,"height":1180}},"screenshots":{"1":"WooCommerce \u2192 Settings \u2192 Print Trail: paste your credentials and test the connection in one click.","2":"The settings tab shows the connected channel and team, and which shipping methods map to Print Trail.","3":"Products flagged \"Fulfilled by Print Trail\" are checked against the Print Trail catalogue the moment you flag them.","4":"The Print Trail panel on the order screen: Print Trail order number, status and per-fulfilment tracking.","5":"Tracking is added to the order as a customer-visible note as soon as each fulfilment dispatches."}},"plugin_section":[],"plugin_tags":[1556,2658,39071,13906,16281],"plugin_category":[],"plugin_contributors":[282319],"plugin_business_model":[],"class_list":["post-371358","plugin","type-plugin","status-publish","hentry","plugin_tags-api","plugin_tags-book","plugin_tags-dropshipping","plugin_tags-fulfillment","plugin_tags-orders","plugin_contributors-consiliencemedia","plugin_committers-consiliencemedia"],"banners":{"banner":"https:\/\/ps.w.org\/print-trail-for-woocommerce\/assets\/banner-772x250.png?rev=3710112","banner_2x":"https:\/\/ps.w.org\/print-trail-for-woocommerce\/assets\/banner-1544x500.png?rev=3710112","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/print-trail-for-woocommerce\/assets\/icon-128x128.png?rev=3709796","icon_2x":"https:\/\/ps.w.org\/print-trail-for-woocommerce\/assets\/icon-256x256.png?rev=3709796","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/print-trail-for-woocommerce\/assets\/screenshot-1.png?rev=3709796","caption":"WooCommerce \u2192 Settings \u2192 Print Trail: paste your credentials and test the connection in one click."},{"src":"https:\/\/ps.w.org\/print-trail-for-woocommerce\/assets\/screenshot-2.png?rev=3709796","caption":"The settings tab shows the connected channel and team, and which shipping methods map to Print Trail."},{"src":"https:\/\/ps.w.org\/print-trail-for-woocommerce\/assets\/screenshot-3.png?rev=3709796","caption":"Products flagged \"Fulfilled by Print Trail\" are checked against the Print Trail catalogue the moment you flag them."},{"src":"https:\/\/ps.w.org\/print-trail-for-woocommerce\/assets\/screenshot-4.png?rev=3709796","caption":"The Print Trail panel on the order screen: Print Trail order number, status and per-fulfilment tracking."},{"src":"https:\/\/ps.w.org\/print-trail-for-woocommerce\/assets\/screenshot-5.png?rev=3709796","caption":"Tracking is added to the order as a customer-visible note as soon as each fulfilment dispatches."}],"raw_content":"<!--section=description-->\n<p>Print Trail for WooCommerce connects your store to <a href=\"https:\/\/printtrail.com\/\">Print Trail<\/a>, so orders containing Print Trail products are produced and shipped to your customers automatically.<\/p>\n\n<p><strong>An active Print Trail account is required.<\/strong> The plugin does nothing until you connect it to a Print Trail channel. Visit <a href=\"https:\/\/printtrail.com\/\">printtrail.com<\/a> to find out more and open an account.<\/p>\n\n<ul>\n<li><strong>Draft on checkout<\/strong> \u2014 when a customer checks out, the Print Trail lines of the order are submitted as a draft order.<\/li>\n<li><strong>Confirm on payment<\/strong> \u2014 once the order is paid (or enters processing\/completed), the draft is confirmed and production begins.<\/li>\n<li><strong>Webhooks and polling<\/strong> \u2014 order, fulfilment and tracking updates from Print Trail arrive by signed webhook, backed by a reconciliation poll so nothing is missed.<\/li>\n<li><strong>Stock sync<\/strong> \u2014 stock levels for Print Trail products are synchronised into WooCommerce on a recurring schedule.<\/li>\n<li><strong>Tracking to your customer<\/strong> \u2014 carrier, tracking number and tracking link are added to the order as a customer-visible note as soon as they are available, per fulfilment.<\/li>\n<li><strong>Mixed baskets<\/strong> \u2014 orders can combine Print Trail and non-Print Trail products; only the Print Trail lines are sent for fulfilment.<\/li>\n<li><strong>Merchant audit trail<\/strong> \u2014 every remote state change lands as a WooCommerce order note, and an order screen panel shows the Print Trail order number, status and per-fulfilment tracking.<\/li>\n<\/ul>\n\n<p>Print-on-demand products will be supported in a future version; this version handles stock-managed Print Trail products.<\/p>\n\n<p>The plugin is compatible with WooCommerce High-Performance Order Storage (HPOS) \u2014 all order data is accessed through the WooCommerce CRUD API.<\/p>\n\n<p>Read the Print Trail documentation at <a href=\"https:\/\/docs.printtrail.com\/channels\/woocommerce\/\">docs.printtrail.com<\/a>.<\/p>\n\n<p>Print Trail is a service of Consilience Media Limited (registered in England and Wales, company number 04214205), which publishes and maintains this plugin as the official WooCommerce integration for its own platform. WooCommerce is a trademark of Automattic Inc.; this plugin is an independent integration and is not affiliated with or endorsed by Automattic.<\/p>\n\n<h3>External service (Print Trail)<\/h3>\n\n<p>Print Trail returns order, fulfilment and tracking status to your store by signed webhook. For orders you send, Print Trail acts as a data processor on your behalf.<\/p>\n\n<p>Your use of Print Trail is governed by its Terms and Privacy Policy:<\/p>\n\n<ul>\n<li><a href=\"https:\/\/printtrail.com\/terms-and-conditions\">Terms and Conditions<\/a><\/li>\n<li><a href=\"https:\/\/printtrail.com\/privacy-policy\">Privacy Policy<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce (version 8 or later).<\/li>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/print-trail-for-woocommerce\/<\/code>, or install it through the WordPress plugins screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>In your Print Trail admin, create a channel and issue API credentials.<\/li>\n<li>Go to WooCommerce \u2192 Settings \u2192 Print Trail, paste in your channel ID, API token and webhook secret, and save. The webhook is registered with your channel automatically when you save or use \"Test connection\"; the Connection section shows where Print Trail is sending.<\/li>\n<li>Flag the products (or variations) that Print Trail fulfils on the product inventory tab.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20do%20i%20install%20and%20configure%20the%20print%20trail%20plugin%3F\"><h3>How do I install and configure the Print Trail plugin?<\/h3><\/dt>\n<dd><p>Click the Installation link on this page.<\/p><\/dd>\n<dt id=\"can%20an%20order%20mix%20print%20trail%20and%20non-print%20trail%20products%3F\"><h3>Can an order mix Print Trail and non-Print Trail products?<\/h3><\/dt>\n<dd><p>Yes. Only the lines flagged as fulfilled by Print Trail are sent to Print Trail; you fulfil the rest as usual. The WooCommerce order completes independently of the non-Print Trail part.<\/p><\/dd>\n<dt id=\"why%20does%20one%20order%20show%20more%20than%20one%20fulfilment%3F\"><h3>Why does one order show more than one fulfilment?<\/h3><\/dt>\n<dd><p>Print Trail may split an order across production locations. Each fulfilment ships separately with its own tracking, and the order screen shows a row per fulfilment. Tracking notes are added as each fulfilment dispatches.<\/p><\/dd>\n<dt id=\"what%20if%20i%20cancel%20an%20order%20that%20has%20already%20been%20dispatched%3F\"><h3>What if I cancel an order that has already been dispatched?<\/h3><\/dt>\n<dd><p>If Print Trail has already started on the order, changing its status to Cancelled (or Refunded) on the WooCommerce order screen opens a confirmation dialog first, naming the fulfilments involved and what cancelling will and will not undo. You can back out or continue.<\/p>\n\n<p>If you continue, the plugin still asks Print Trail to cancel, and cancels everything it can. Any fulfilment that has already left the warehouse cannot be pulled back, so the order gets a note naming those fulfilments and their status, telling you the items are still on their way.<\/p><\/dd>\n<dt id=\"how%20do%20partial%20refunds%20work%3F\"><h3>How do partial refunds work?<\/h3><\/dt>\n<dd><p>Print Trail has no per-line cancellation, so a partial refund in WooCommerce adds an order note for your records but does not change the Print Trail order. Handle partial cancellations manually in your Print Trail admin.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20product%20sku%20is%20not%20recognised%20by%20print%20trail%3F\"><h3>What happens if a product SKU is not recognised by Print Trail?<\/h3><\/dt>\n<dd><p>The plugin flags the order with the unmatched SKUs and blocks confirmation until it is resolved, so an order is never shipped short.<\/p><\/dd>\n<dt id=\"what%20if%20my%20products%20don%27t%20track%20stock%3F\"><h3>What if my products don't track stock?<\/h3><\/dt>\n<dd><p>That's fine. If a product has \"Manage stock?\" switched off (or stock management is disabled site-wide), the stock sync simply skips it \u2014 it never forces stock management on and never writes a quantity. Order fulfilment still works normally. Bear in mind that the shopper is not told about Print Trail stock at any point: WooCommerce's own stock figure is what gates the basket and checkout, so with stock management off a shopper can buy and pay for a product Print Trail has run out of. Print Trail checks its actual stock when the paid order is confirmed; if it is short, the order is placed on hold with a note naming the shortfall, and you decide whether to wait for a restock or refund.<\/p>\n\n<p>Stock sync also only ever writes a product\/variation that manages its own stock; a variation whose stock is managed by its parent is left alone so two variations never overwrite the parent's shared quantity.<\/p><\/dd>\n<dt id=\"is%20high-performance%20order%20storage%20%28hpos%29%20supported%3F\"><h3>Is High-Performance Order Storage (HPOS) supported?<\/h3><\/dt>\n<dd><p>Yes. The plugin declares HPOS compatibility and uses only the WooCommerce CRUD API for order data.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>FAQ: replaced \"I installed the plugin before it was on WordPress.org\" with a general \"How do I install and configure the Print Trail plugin?\" pointing to the Installation section.<\/li>\n<li>FAQ: clarified \"the order screen\" as \"the WooCommerce order screen\" in the cancellation answer, and trimmed a redundant sentence about contacting Print Trail for returns.<\/li>\n<\/ul>\n\n<h4>1.0.5<\/h4>\n\n<ul>\n<li>Listing text: moved the Consilience Media Limited \/ WooCommerce-trademark note to the end of the description, and trimmed the \"External service (Print Trail)\" section to just what isn't said elsewhere.<\/li>\n<li>Refreshed the plugin banner artwork.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Every name the plugin registers in WordPress now carries the <code>print_trail_woo<\/code> prefix, as required by the WordPress.org plugin review: options, transients, scheduled actions, filters, AJAX actions and constants were <code>pt_woo_*<\/code> \/ <code>PT_WOO_*<\/code>; order and product meta keys were <code>_pt_*<\/code> and are now <code>_print_trail_woo_*<\/code>.<\/li>\n<li>If you defined <code>PT_WOO_BASE_URL<\/code> in <code>wp-config.php<\/code>, rename it to <code>PRINT_TRAIL_WOO_BASE_URL<\/code>. The <code>pt_woo_app_url<\/code>, <code>pt_woo_reconcile_interval<\/code> and <code>pt_woo_stock_sync_interval<\/code> filters are now <code>print_trail_woo_app_url<\/code>, <code>print_trail_woo_reconcile_interval<\/code> and <code>print_trail_woo_stock_sync_interval<\/code>.<\/li>\n<li>Data stored by earlier versions is not migrated automatically. After updating, re-enter the channel ID, API token and webhook secret under WooCommerce \u2192 Settings \u2192 Print Trail and re-tick \"Fulfilled by Print Trail\" on your products, or contact Print Trail support for a one-off rename of the stored data.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<ul>\n<li>Admin styles and scripts (settings tab, order panel, cancel warning) are now loaded as files through WordPress's enqueue system instead of being printed inline, and only on the screens that use them.<\/li>\n<li>The \"connection failed\" and \"SKUs not recognised\" notices now appear only on WooCommerce screens (orders, products, settings) rather than across the whole admin.<\/li>\n<li>Plugin author details and readme now state that Print Trail is operated by Consilience Media Limited, the publisher of this plugin.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Each order sent to Print Trail now carries a link to its WooCommerce edit screen, so the order's source in Print Trail links straight back to the order in your shop.<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Stock updates arriving by webhook are now applied only when newer than the last one applied, so a replayed or late-delivered update can no longer overwrite current stock with an older figure.<\/li>\n<li>The \"SKUs not recognised by Print Trail\" admin notice now clears for a product as soon as you save it with a matching SKU, or turn off \"Fulfilled by Print Trail\", instead of waiting for the next daily stock sync.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<p>First release on WordPress.org.<\/p>\n\n<ul>\n<li>Orders containing Print Trail products are submitted as a draft at checkout and confirmed for production when paid.<\/li>\n<li>Order, fulfilment and tracking updates arrive by signed webhook, backed by a six-hourly reconciliation sweep.<\/li>\n<li>Stock for Print Trail products is kept in step by webhook, with a daily full sync as a safety net.<\/li>\n<li>Carrier, tracking number and tracking link are added to the order as a customer-visible note for each fulfilment.<\/li>\n<li>An order screen panel shows the Print Trail order number, status and per-fulfilment tracking; fully compatible with WooCommerce High-Performance Order Storage (HPOS).<\/li>\n<li>Plugin folder and text domain are now <code>print-trail-for-woocommerce<\/code>, matching the WordPress.org slug; see the FAQ if you installed an earlier build.<\/li>\n<\/ul>\n\n<h4>0.1.6<\/h4>\n\n<ul>\n<li>Flagging a product now checks its SKU with Print Trail immediately and, when matched, writes the current Print Trail stock straight away instead of waiting for the daily sync.<\/li>\n<li>A status line under \"Fulfilled by Print Trail\" (products and variations) shows the outcome of the last check: matched with stock, not found, not currently sellable, or could not be checked.<\/li>\n<\/ul>\n\n<h4>0.1.5<\/h4>\n\n<ul>\n<li>The settings tab now reminds you that only products flagged \u201cFulfilled by Print Trail\u201d are sent, with the path to the flag and a link to the user guide.<\/li>\n<li>FAQ corrected: Print Trail's stock is checked when the paid order is confirmed, not shown to the shopper at checkout.<\/li>\n<\/ul>\n\n<h4>0.1.4<\/h4>\n\n<ul>\n<li>Stock changes now arrive by webhook: Print Trail sends a <code>stock-level-updated<\/code> event (at most one every ten minutes, listing every product whose stock moved) and the plugin applies it straight to WooCommerce stock. Requires the Print Trail API from 2026-09-16 or later.<\/li>\n<li>The full stock sync runs daily (was hourly) as a safety net and to refresh the unmatched-SKU notice.<\/li>\n<\/ul>\n\n<h4>0.1.3<\/h4>\n\n<ul>\n<li>Background polling is lighter. Order, fulfilment and tracking updates arrive by webhook; the reconciliation sweep that backs them up now runs every 6 hours (was 10 minutes). The stock sync, which has no webhook equivalent, runs hourly (was every 15 minutes); a stock shortfall at confirm still refreshes stock immediately.<\/li>\n<li>New <code>pt_woo_reconcile_interval<\/code> and <code>pt_woo_stock_sync_interval<\/code> filters (seconds) let a host tune either cadence; a changed interval takes effect on the next page load without deactivating the plugin.<\/li>\n<\/ul>\n\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Test connection now distinguishes an endpoint that does not serve the Print Trail API from an unknown Channel ID, instead of blaming the Channel ID for both.<\/li>\n<li>Plugin URI and documentation links point at the WooCommerce guide on docs.printtrail.com.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Plugin URI now points at printtrail.com.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<li>Draft order creation on checkout; confirmation on payment or processing\/completed status.<\/li>\n<li>Cancellation on order cancel\/refund, with a confirmation dialog on the order screen when Print Trail has already started; fulfilments that can no longer be cancelled are named in an order note; partial refunds noted for manual handling.<\/li>\n<li>Signed webhook receiver plus reconciliation polling for order, fulfilment and tracking updates.<\/li>\n<li>Recurring stock synchronisation for Print Trail products.<\/li>\n<li>Customer-visible tracking notes per fulfilment.<\/li>\n<li>Order screen panel below the order items, with the Print Trail order number and each fulfilment number linking into the Print Trail app, status, per-fulfilment rows and a refresh button that reports whether anything changed.<\/li>\n<li>Product and variation \"Fulfilled by Print Trail\" flag with optional SKU override.<\/li>\n<li>Settings tab with test connection, automatic webhook registration and shipping-method mapping from the methods your channel offers.<\/li>\n<li>WooCommerce HPOS compatible.<\/li>\n<\/ul>","raw_excerpt":"Automatically fulfil WooCommerce orders through Print Trail: draft on checkout, confirm on payment, with stock sync and per-parcel tracking.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/371358","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=371358"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/consiliencemedia"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=371358"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=371358"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=371358"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=371358"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=371358"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=371358"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}