{"id":240605,"date":"2025-07-30T21:53:03","date_gmt":"2025-07-30T21:53:03","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/simple-chronofresh-connection\/"},"modified":"2026-08-26T13:39:29","modified_gmt":"2026-08-26T13:39:29","slug":"simple-connection-for-chronofresh-woocommerce","status":"publish","type":"plugin","link":"https:\/\/fa.wordpress.org\/plugins\/simple-connection-for-chronofresh-woocommerce\/","author":22011295,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.3.2","stable_tag":"1.3.2","tested":"7.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"Simple Connection for ChronoFresh","header_author":"tlloancy","header_description":"Int\u00e9gration Chronopost pour WooCommerce (Ambient, Fresh, Freeze, Relais)","assets_banners_color":"669692","last_updated":"2026-08-26 13:39:29","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/donorbox.org\/wordpress-plugins","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":10,"downloads":999,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"tlloancy","date":"2025-07-30 21:52:35"},"1.0.1":{"tag":"1.0.1","author":"tlloancy","date":"2025-08-09 20:45:09"},"1.0.2":{"tag":"1.0.2","author":"tlloancy","date":"2025-08-22 05:56:12"},"1.0.3":{"tag":"1.0.3","author":"tlloancy","date":"2025-08-25 14:03:25"},"1.0.4":{"tag":"1.0.4","author":"tlloancy","date":"2026-05-08 18:04:26"},"1.1.0":{"tag":"1.1.0","author":"tlloancy","date":"2026-05-27 13:11:04"},"1.2.0":{"tag":"1.2.0","author":"tlloancy","date":"2026-07-22 14:46:09"},"1.2.1":{"tag":"1.2.1","author":"tlloancy","date":"2026-07-24 16:57:23"},"1.3.0":{"tag":"1.3.0","author":"tlloancy","date":"2026-08-25 13:53:21"},"1.3.1":{"tag":"1.3.1","author":"tlloancy","date":"2026-08-26 11:47:07"},"1.3.2":{"tag":"1.3.2","author":"tlloancy","date":"2026-08-26 13:39:29"}},"upgrade_notice":{"1.3.2":"<p>Display fixes: the chosen pickup point now also appears on the order confirmation page with themes that override WooCommerce&#039;s customer details template, and a point selected on the cart page stays visibly selected at checkout instead of asking the customer to choose again.<\/p>","1.3.1":"<p>Critical fix for pickup point orders: the point chosen at checkout is now reliably saved and displayed on the order (admin, customer page, emails), and labels can no longer be generated for a relay the customer did not choose. Update before processing new relay orders.<\/p>","1.3.0":"<p>Behavior change: the Chronopost sandbox credentials are no longer silent defaults. If you never entered your own credentials, the plugin now runs in visible Test mode (warning banner) \u2014 open WooCommerce \u2192 ChronoFresh, switch to Production and enter your contract credentials to ship real parcels. If your credentials were already configured, nothing changes.<\/p>","1.0.0":"<p>Secure, WordPress-compliant Chronofresh integration for WooCommerce.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3354292,"resolution":"256x256","location":"assets","locale":"","width":560,"height":560}},"assets_banners":{"banner-772x250.gif":{"filename":"banner-772x250.gif","revision":3354292,"resolution":"772x250","location":"assets","locale":"","width":752,"height":416}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.1.0","1.2.0","1.2.1","1.3.0","1.3.1","1.3.2"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[245639,127069,184916,3546],"plugin_category":[45],"plugin_contributors":[232640],"plugin_business_model":[],"class_list":["post-240605","plugin","type-plugin","status-publish","hentry","plugin_tags-chronofresh","plugin_tags-chronopost","plugin_tags-pickup-points","plugin_tags-shipping","plugin_category-ecommerce","plugin_contributors-tlloancy","plugin_committers-tlloancy"],"banners":{"banner":"https:\/\/ps.w.org\/simple-connection-for-chronofresh-woocommerce\/assets\/banner-772x250.gif?rev=3354292","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/simple-connection-for-chronofresh-woocommerce\/assets\/icon-256x256.gif?rev=3354292","icon_2x":"https:\/\/ps.w.org\/simple-connection-for-chronofresh-woocommerce\/assets\/icon-256x256.gif?rev=3354292","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>If you sell food (or anything that must travel <strong>ambient<\/strong>, <strong>fresh 0\u20138 \u00b0C<\/strong>, or <strong>frozen<\/strong>) with Chronopost Chronofresh, this plugin talks to the official SOAP APIs from WooCommerce: shipping methods at checkout, pickup-point map, PDF labels, tracking, and cancellation.<\/p>\n\n<p>You need an <strong>active Chronofresh contract<\/strong>. The plugin does not replace Chronopost: it uses the account number and password they give you. Out of the box the plugin runs in <strong>Test mode<\/strong> on the public Chronopost sandbox account so you can try everything without credentials \u2014 a warning banner stays visible in wp-admin, because sandbox labels look real but <strong>no parcel is ever picked up or shipped<\/strong>. Switch to <strong>Production mode<\/strong> and enter your own credentials before shipping.<\/p>\n\n<h3>Features<\/h3>\n\n<ul>\n<li>Supports Chrono Ambient Relais 13, Chrono Fresh 13, Chrono Fresh Relais 13, Chrono 13, Chrono Freeze 13, Chrono Relais 13.<\/li>\n<li><strong>Fresh pickup points (code 6S)<\/strong> \u2014 deliver fresh products (0\u00b0C \u2013 8\u00b0C) to Chronofresh pickup points (must be enabled on your contract).<\/li>\n<li>Dynamic pickup point map (Leaflet) with opening hours at checkout.<\/li>\n<li><strong>Live parcel tracking<\/strong> via Chronopost TrackingService (same shipping credentials).<\/li>\n<li><strong>Label cancellation<\/strong> directly from the order admin page.<\/li>\n<li><strong>Bulk label generation<\/strong> from the orders list.<\/li>\n<li><strong>Auto order status change<\/strong> after label generation (configurable).<\/li>\n<li><strong>Per-product DLC<\/strong> (expiration date) field \u2014 mandatory for ChronoFresh compliance.<\/li>\n<li><strong>Explicit Test \/ Production mode<\/strong> with a persistent admin banner while the sandbox account is in use.<\/li>\n<li><strong>Connection health check<\/strong> \u2014 per-service diagnostics (SOAP extension, server reachability, credentials, and which pickup point product codes 86 \/ 5Q \/ 6S your contract accepts), with Chronopost's own error messages.<\/li>\n<li>Debug logs in <code>\/wp-content\/uploads\/simple-connection-for-chronofresh-woocommerce\/scc-debug.log<\/code>.<\/li>\n<li>Built-in <strong>Getting Started<\/strong> tab under WooCommerce \u2192 ChronoFresh.<\/li>\n<li>Step-by-step guides in <code>docs\/USER-GUIDE.md<\/code> (English) and <code>docs\/MODE-DEMPLOI.md<\/code> (French).<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to Chronopost APIs to handle shipping calculations, pickup point searches, label generation, and tracking.\nIt sends customer shipping details (address, postcode, city, weight) when searching pickup points or generating labels.\nThis service is provided by Chronopost: <a href=\"https:\/\/www.chronopost.fr\/terms\">Terms of use<\/a>, <a href=\"https:\/\/www.chronopost.fr\/privacy\">Privacy policy<\/a>.<\/p>\n\n<h3>Support<\/h3>\n\n<ul>\n<li><a href=\"https:\/\/ws.chronopost.fr\">Chronopost Web Services<\/a><\/li>\n<li>WordPress.org forum<\/li>\n<li>Premium support: <a href=\"mailto:tlloancy@deter-mi.net\">tlloancy@deter-mi.net<\/a><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>simple-connection-for-chronofresh-woocommerce<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin via the WordPress 'Plugins' page.<\/li>\n<li>Open <strong>WooCommerce \u2192 ChronoFresh<\/strong> (not WooCommerce \u2192 Settings). Switch the Mode to <strong>Production<\/strong> and enter your Chronopost account number, password, and shipper phone. (Or keep <strong>Test mode<\/strong> to explore first \u2014 labels will not be real.)<\/li>\n<li>Run the <strong>connection health check<\/strong>, then add ChronoFresh methods in <strong>WooCommerce \u2192 Settings \u2192 Shipping<\/strong> for your zones.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20chronofresh%20account%20%2F%20contract%20do%20i%20need%3F\"><h3>What Chronofresh account \/ contract do I need?<\/h3><\/dt>\n<dd><p>A commercial Chronofresh contract from Chronopost (not a consumer Chronopost.fr login). Your sales rep gives you an <strong>account number<\/strong> and <strong>API password<\/strong>. Ask them to enable the product codes you will use (for example <code>2R<\/code> home fresh, <code>6S<\/code> fresh pickup points, <code>2S<\/code> freeze). Until a code is on the contract, Chronopost returns errors such as 33 \/ 35.<\/p><\/dd>\n<dt id=\"what%20is%20test%20mode%3F%20can%20i%20ship%20with%20it%3F\"><h3>What is Test mode? Can I ship with it?<\/h3><\/dt>\n<dd><p>No. Test mode signs every call with the <strong>official Chronopost sandbox<\/strong> pair from their Web Services documentation. It is only there so you can explore the plugin (map, labels, workflow) before you have a contract. Sandbox labels look real but <strong>no parcel is ever picked up<\/strong>. A warning banner stays visible in wp-admin until you switch to Production mode.<\/p><\/dd>\n<dt id=\"where%20do%20i%20enter%20the%20credentials%3F\"><h3>Where do I enter the credentials?<\/h3><\/dt>\n<dd><p>WooCommerce \u2192 <strong>ChronoFresh<\/strong> \u2192 Settings tab: switch the Mode to Production, then fill in the account number and password. Also set shipper phone (printed on the label), default DLC in days, max kg per parcel, and optional auto order status. Store address under WooCommerce \u2192 Settings \u2192 General is the shipper on the label.<\/p><\/dd>\n<dt id=\"the%20health%20check%20passes%20but%20label%20generation%20still%20fails.\"><h3>The health check passes but label generation still fails.<\/h3><\/dt>\n<dd><p>The health check runs real calls on the <strong>pickup-point<\/strong> service, which lets it verify authentication and whether product codes 86 \/ 5Q \/ 6S are on your contract. It deliberately does <strong>not<\/strong> call the label service, because the only way to test that is to create a real label \u2014 the check will never do that behind your back. Generate a label on a test order: Chronopost errors (e.g. a home-delivery product code missing from your contract) are shown on the order screen and in the debug logs.<\/p><\/dd>\n<dt id=\"php%20soap%3F\"><h3>PHP SOAP?<\/h3><\/dt>\n<dd><p>Required. If the plugin shows that the extension is missing, ask your host to enable <code>php-soap<\/code> (WooCommerce \u2192 Status).<\/p><\/dd>\n<dt id=\"where%20are%20debug%20logs%3F\"><h3>Where are debug logs?<\/h3><\/dt>\n<dd><p>\/wp-content\/uploads\/simple-connection-for-chronofresh-woocommerce\/scc-debug.log (enable Debug mode in the settings). Older docs mentioned <code>\/wp-content\/uploads\/chronofresh-logs\/<\/code> \u2014 use the path above.<\/p><\/dd>\n<dt id=\"i%20don%27t%20see%20the%20%22generate%20label%22%20button%20%2F%20chronofresh%20labels%20box%20on%20an%20order.%20why%3F\"><h3>I don't see the \"Generate label\" button \/ ChronoFresh Labels box on an order. Why?<\/h3><\/dt>\n<dd><p>The box appears on orders that use a ChronoFresh shipping method, or that contain at least one product with a <strong>Temperature type<\/strong> set (product page \u2192 Shipping tab). If neither applies \u2014 for example the order was shipped with another carrier and its products were created before the plugin was installed, so they have no temperature type yet \u2014 the box is hidden. Also check <strong>Screen Options<\/strong> (top right of the order screen): the \"ChronoFresh Labels\" panel may simply be unticked. Before 1.3.2 the box also stayed hidden when products had no temperature type even on ChronoFresh orders; that is fixed.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20a%20product%20has%20no%20temperature%20type%2C%20or%20%22no%20temperature%22%3F\"><h3>What happens if a product has no temperature type, or \"No temperature\"?<\/h3><\/dt>\n<dd><p>At label generation it ships as <strong>Ambient<\/strong> (codes 5M \/ 5N \/ 5Q depending on the method). The ChronoFresh Labels box shows a notice listing such products so you can set Fresh or Freeze on the product page before generating, if needed.<\/p><\/dd>\n<dt id=\"is%20it%20secure%3F\"><h3>Is it secure?<\/h3><\/dt>\n<dd><p>Admin and AJAX actions use nonces. Inputs are sanitized and outputs escaped. Chronopost still receives order addresses when you search pickup points or generate labels (see External services).<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.3.2<\/h4>\n\n<p>August 26, 2026:\n* Fixed: the pickup point block did not appear on the order confirmation (\"thank you\") page when the active theme overrides WooCommerce's <code>order-details-customer.php<\/code> template without the <code>woocommerce_order_details_after_customer_details<\/code> hook (common in custom themes). The block is now also attached to <code>woocommerce_order_details_after_order_table<\/code>, with a guard so standard themes never show it twice.\n* Fixed: a pickup point selected on the cart page appeared deselected on the checkout page (and after every checkout refresh), forcing the customer to pick it again. The widget now restores the point saved in the session \u2014 highlighted in the list, marked on the map, opening hours shown \u2014 as long as it is still among the points available for the current address.\n* Fixed: the \"Generate label\" button and the ChronoFresh Labels box were hidden on orders whose products had no temperature type saved yet (e.g. products created before the plugin), even though label generation ships those products as Ambient by default. The box now appears on any order using a ChronoFresh shipping method, and shows a notice listing products that will ship as Ambient so you can set Fresh\/Freeze first.\n* Docs: new FAQ entries explaining when the ChronoFresh Labels box appears and how products without a temperature type are shipped; troubleshooting rows added to both user guides.<\/p>\n\n<h4>1.3.1<\/h4>\n\n<p>August 26, 2026:\n* Fixed: <strong>the pickup point chosen at checkout was not saved on the order.<\/strong> The save ran on <code>woocommerce_checkout_create_order<\/code> with <code>update_post_meta()<\/code> before the order existed (ID 0), so the meta was silently lost; it now uses <code>update_meta_data()<\/code> on the order object. Blocks (Store API) checkout, which never fired that hook, is now supported too, including the \"please select a pickup point\" validation.\n* Fixed: when the pickup point meta was missing, label generation silently searched the <strong>nearest<\/strong> relay to the customer's address and shipped there \u2014 potentially not the chosen point. This fallback is removed: the label now fails with a clear, actionable error instead.\n* Added: the chosen pickup point (name, address, relay ID) is now visible on the admin order screen under the shipping address, on the customer's thank-you page and order view, and in order emails. Orders placed before 1.3.1 with a missing point show an explicit warning.\n* Fixed: the relay's own postcode\/city are now saved and used on the label (previously the customer's address city was sent for the relay block).\n* Fixed: the internal <code>chronofresh_code<\/code> shipping meta no longer appears in customer-facing order details and emails.<\/p>\n\n<h4>1.3.0<\/h4>\n\n<p>August 25, 2026:\n* Added: explicit <strong>Test \/ Production mode<\/strong> setting. Test mode uses the public Chronopost sandbox account (nothing to type) and shows a persistent wp-admin warning banner, because sandbox labels are never actually shipped.\n* Fixed: the sandbox credentials are no longer silent defaults. Installs that never configured real credentials used to generate sandbox labels that looked real; they now run in visible Test mode. In Production mode, missing credentials block label generation with a clear error instead of falling back to the sandbox.\n* Added: <strong>connection health check<\/strong> replacing the old single \"Test API connection\" button. Per-service rows with live status: PHP SOAP extension, Chronopost server reachability, credentials, and real contract checks for pickup point product codes 86 \/ 5Q \/ 6S (Chronopost's own error message is shown, e.g. when 6S is not on your contract). The label service is deliberately not simulated \u2014 the panel says so honestly.\n* Compat: Tested up to WordPress 7.1.\n* Docs: readme FAQ rewritten for Test\/Production mode and the health check; <code>docs\/USER-GUIDE.md<\/code>, <code>docs\/MODE-DEMPLOI.md<\/code> and the built-in Getting started tab updated to match.\n* Design: native WordPress admin CSS on WooCommerce \u2192 ChronoFresh (settings, Getting started table\/callout, health check panel).<\/p>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Released on July 24, 2026:<\/li>\n<li>Updated: All plugin UI source strings switched to English so WordPress.org translations (GlotPress) use English originals.<\/li>\n<li>Updated: French remains available via the fr_FR translation file \/ translate.wordpress.org.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Released on July 22, 2026:<\/li>\n<li>Added: New shipping method \"Chrono Fresh Relais 13H\" (product code 6S) \u2014 fresh delivery (0\u00b0C \u2013 8\u00b0C) to pickup points, available at Chronofresh since the beginning of 2026.<\/li>\n<li>Added: Pickup point map, opening hours and selection at checkout now fully support the fresh pickup point service.<\/li>\n<li>Updated: Label generation maps fresh products to code 6S when a pickup point is selected (DLC\/expiration date included as required by Chronofresh).<\/li>\n<li>Updated: Getting Started guide with the new 6S product code.<\/li>\n<li>Added: Bilingual user guide (English + French) shipped in the docs\/ folder.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Released on May 27, 2026:<\/li>\n<li>Added: Live parcel tracking via trackSkybillV2 (Chronopost TrackingService) directly in the order admin metabox.<\/li>\n<li>Added: Label cancellation via cancelListSkybill \u2014 cancel any label from the order page.<\/li>\n<li>Added: Bulk label generation from WooCommerce orders list.<\/li>\n<li>Added: Automatic order status change after label generation (configurable).<\/li>\n<li>Added: Per-product DLC (days until expiration) field \u2014 required by ChronoFresh for fresh\/freeze shipments.<\/li>\n<li>Added: Global default DLC setting under WooCommerce \u2192 ChronoFresh.<\/li>\n<li>Added: Built-in Getting Started guide tab with step-by-step onboarding.<\/li>\n<li>Fixed: Compliance with ChronoFresh requirements \u2014 expirationDate now respects per-product or global DLC setting.<\/li>\n<li>Updated: Tested up to WordPress 7.0.<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Released on May 8, 2026:<\/li>\n<li>Added: Interactive Leaflet map for pickup point selection.<\/li>\n<li>Fixed: Compatibility issues with WooCommerce fragments and Stripe refreshes.<\/li>\n<li>Improved: Performance and stability by removing legacy code and unused templates.<\/li>\n<li>Improved: Better handling of AJAX race conditions at checkout.<\/li>\n<\/ul>\n\n<h4>1.0.3<\/h4>\n\n<p>Released on August 25, 2025:\n* Added: Explicit select when no temperature is defined, which default to ambient for label generation, avoiding any unrecognized state for products linked to chronofresh via Expedition Class.<\/p>\n\n<h4>1.0.2<\/h4>\n\n<p>Released on August 22, 2025:\n* Enhanced: Added support for mixed orders (ambient, fresh, freeze) with any shipping method, including custom methods like alg_wc_shipping.\n* Fixed: Resolved fatal error when generating labels for orders with deleted or invalid products by safely handling null products.\n* Improved: Updated label generation to rely on product temperature types (_temperature_type) instead of shipping method, ensuring accurate Chronopost codes (5M, 5Q, 2R, 2S).\n* Updated: Default Chronopost test credentials to match provided API keys for seamless testing.\n* Enhanced: Improved logging for skipped items and parcel splitting for better debugging.\n* Boost your shipping with Premium features like real-time tracking and automated multi-label generation at <a href=\"https:\/\/deter-mi.net\">deter-mi.net<\/a>!<\/p>\n\n<h4>1.0.1<\/h4>\n\n<p>Released on August 9, 2025: Includes critical fix for nonce verification to ensure secure and pickup api call bug<\/p>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release with Chronofresh shipping and pickup point support.<\/li>\n<\/ul>","raw_excerpt":"Connect WooCommerce to your Chronopost Chronofresh contract: ambient, fresh and freeze labels, pickup points, and tracking.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/240605","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=240605"}],"author":[{"embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/tlloancy"}],"wp:attachment":[{"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=240605"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=240605"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=240605"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=240605"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=240605"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/fa.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=240605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}