Issue with Saving UPS Shipping Method item in WooCommerce
Prerequisites
- I have carried out troubleshooting steps and I believe I have found a bug.
- I have searched for similar bugs in both open and closed issues and cannot find a duplicate.
Describe the bug
When using the WooCommerce UPS Shipping Method extension on a fresh WordPress installation, there is an issue with saving the shipping method settings under Shipping zone setting.
Video recording:
- First part shows that you are able to save the setting with default shipping item (Free Shipping in this case) selected in addition to UPS shipping
- Second part shows that you are not able to save the setting only with UPS shipping method added as an item
https://github.com/user-attachments/assets/796fa2dc-bc47-4aca-abda-5692b14228e6
Expected behavior
The UPS shipping method item settings should be savable without needing to add another shipping option. The system should allow saving the settings upon selecting UPS as the shipping method, without requiring additional methods to be added.
Actual behavior
- The settings for the UPS shipping method do not save successfully as is.
- The issue persists unless another shipping method, such as WooCommerce's default "Free Shipping," is added to the shipping zone first. Only then does the system allow the settings to be saved.
Steps to reproduce
- Install WordPress and WooCommerce: Start with a clean installation of WordPress and install the WooCommerce plugin.
- Install UPS Shipping Method Extension: Ensure that the WooCommerce UPS Shipping Method extension is installed and activated.
- Create a Shipping Zone item:
- Navigate to WooCommerce settings.
- Go to the 'Shipping' tab and create a new shipping zone by specifying a name and region.
- Add a Shipping Method under Shipping zone Item:
- Within the newly created shipping zone, attempt to add a shipping method by selecting UPS from the available options.
- Attempt to Save Settings:
- You would not be able to save this.
- Once you get out of the screen, the Zone you selected becomes "Everywhere" and the name of the zone will be "Everywhere" but with UPS shipping method saved.
WordPress Environment
`
WordPress Environment
WordPress address (URL): https://thoughtfully-tasty-cormorant.jurassic.ninja Site address (URL): https://thoughtfully-tasty-cormorant.jurassic.ninja WC Version: 9.7.1 Legacy REST API Package Version: The Legacy REST API plugin is not installed on this site. Action Scheduler Version: ✔ 3.9.0 Log Directory Writable: ❌ To allow logging make /srv/htdocs/wp-content/uploads/wc-logs/ writable.
WP Version: 6.7.2 WP Multisite: – WP Memory Limit: 512 MB WP Debug Mode: ✔ WP Cron: ✔ Language: en_US External object cache: ✔
Server Environment
Server Info: nginx PHP Version: 8.3.19 PHP Post Max Size: 2 GB PHP Time Limit: 850 PHP Max Input Vars: 6144 cURL Version: 8.12.1 OpenSSL/3.0.15
SUHOSIN Installed: – MySQL Version: 10.11.10-MariaDB-log Max Upload Size: 2 GB Default Timezone is UTC: ✔ fsockopen/cURL: ✔ SoapClient: ✔ DOMDocument: ✔ GZip: ✔ Multibyte String: ✔ Remote Post: ✔ Remote Get: ✔
Database
WC Database Version: 9.7.1 WC Database Prefix: wp_ Total Database Size: 2.91MB Database Data Size: 1.22MB Database Index Size: 1.69MB wp_woocommerce_sessions: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_woocommerce_api_keys: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_woocommerce_attribute_taxonomies: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_woocommerce_downloadable_product_permissions: Data: 0.02MB + Index: 0.06MB + Engine InnoDB wp_woocommerce_order_items: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_woocommerce_order_itemmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_woocommerce_tax_rates: Data: 0.02MB + Index: 0.06MB + Engine InnoDB wp_woocommerce_tax_rate_locations: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_woocommerce_shipping_zones: Data: 0.02MB + Index: 0.00MB + Engine InnoDB wp_woocommerce_shipping_zone_locations: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_woocommerce_shipping_zone_methods: Data: 0.02MB + Index: 0.00MB + Engine InnoDB wp_woocommerce_payment_tokens: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_woocommerce_payment_tokenmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_woocommerce_log: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_actionscheduler_actions: Data: 0.02MB + Index: 0.11MB + Engine InnoDB wp_actionscheduler_claims: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_actionscheduler_groups: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_actionscheduler_logs: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_commentmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_comments: Data: 0.02MB + Index: 0.09MB + Engine InnoDB wp_links: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_options: Data: 0.11MB + Index: 0.03MB + Engine InnoDB wp_postmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_posts: Data: 0.08MB + Index: 0.06MB + Engine InnoDB wp_termmeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_terms: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_term_relationships: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_term_taxonomy: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_usermeta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_users: Data: 0.02MB + Index: 0.05MB + Engine InnoDB wp_wc_admin_notes: Data: 0.06MB + Index: 0.00MB + Engine InnoDB wp_wc_admin_note_actions: Data: 0.05MB + Index: 0.02MB + Engine InnoDB wp_wc_category_lookup: Data: 0.02MB + Index: 0.00MB + Engine InnoDB wp_wc_customer_lookup: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_download_log: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_orders: Data: 0.02MB + Index: 0.11MB + Engine InnoDB wp_wc_orders_meta: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_order_addresses: Data: 0.02MB + Index: 0.06MB + Engine InnoDB wp_wc_order_coupon_lookup: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_order_operational_data: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_order_product_lookup: Data: 0.02MB + Index: 0.06MB + Engine InnoDB wp_wc_order_stats: Data: 0.02MB + Index: 0.05MB + Engine InnoDB wp_wc_order_tax_lookup: Data: 0.02MB + Index: 0.03MB + Engine InnoDB wp_wc_product_attributes_lookup: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_wc_product_download_directories: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_wc_product_meta_lookup: Data: 0.02MB + Index: 0.11MB + Engine InnoDB wp_wc_rate_limits: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_wc_reserved_stock: Data: 0.02MB + Index: 0.00MB + Engine InnoDB wp_wc_tax_rate_classes: Data: 0.02MB + Index: 0.02MB + Engine InnoDB wp_wc_webhooks: Data: 0.02MB + Index: 0.02MB + Engine InnoDB
Post Type Counts
attachment: 1 page: 7 post: 2 revision: 1 wp_font_face: 36 wp_font_family: 12
Security
Secure connection (HTTPS): ✔ Hide errors from visitors: ✔
Active Plugins (4)
Akismet Anti-spam: Spam Protection: by Automattic - Anti-spam Team – 5.3.7 Jetpack: by Automattic – 14.5-a.9 WooCommerce UPS Shipping: by WooCommerce – 3.8.0 WooCommerce: by Automattic – 9.7.1
Inactive Plugins (0)
Dropin Plugins ()
advanced-cache.php: advanced-cache.php object-cache.php: Memcached
Must Use Plugins (1)
load.php: by –
Settings
Legacy API Enabled: – Force SSL: – Currency: USD ($) Currency Position: left Thousand Separator: , Decimal Separator: . Number of Decimals: 2 Taxonomies: Product Types: external (external) grouped (grouped) simple (simple) variable (variable)
Taxonomies: Product Visibility: exclude-from-catalog (exclude-from-catalog) exclude-from-search (exclude-from-search) featured (featured) outofstock (outofstock) rated-1 (rated-1) rated-2 (rated-2) rated-3 (rated-3) rated-4 (rated-4) rated-5 (rated-5)
Connected to WooCommerce.com: – Enforce Approved Product Download Directories: ✔ HPOS feature enabled: ✔ Order datastore: Automattic\WooCommerce\Internal\DataStores\Orders\OrdersTableDataStore HPOS data sync enabled: –
Logging
Enabled: ✔ Handler: Automattic\WooCommerce\Internal\Admin\Logging\LogHandlerFileV2 Retention period: 30 days Level threshold: – Log directory size: 0 B
WC Pages
Shop base: #6 - /shop/ Cart: #7 - /cart/ - Contains the woocommerce/cart block Checkout: #8 - /checkout/ - Contains the woocommerce/checkout block My account: #9 - /my-account/ - Contains the [woocommerce_my_account] shortcode Terms and conditions: ❌ Page not set
Theme
Name: Twenty Twenty-Four Version: 1.3 Author URL: https://wordpress.org Child Theme: ❌ – If you are modifying WooCommerce on a parent theme that you did not build personally we recommend using a child theme. See: How to create a child theme Theme type: Block theme WooCommerce Support: ❌ Not declared
Templates
Overrides: /srv/htdocs/wp-content/plugins/woocommerce/templates/block-notices/error.php /srv/htdocs/wp-content/plugins/woocommerce/templates/block-notices/notice.php /srv/htdocs/wp-content/plugins/woocommerce/templates/block-notices/success.php
Admin
Enabled Features: activity-panels analytics product-block-editor coupons core-profiler customize-store customer-effort-score-tracks import-products-task experimental-fashion-sample-products shipping-smart-defaults shipping-setting-tour homescreen marketing mobile-app-banner onboarding onboarding-tasks pattern-toolkit-full-composability product-custom-fields remote-inbox-notifications remote-free-extensions payment-gateway-suggestions printful shipping-label-banner subscriptions store-alerts transient-notices woo-mobile-welcome wc-pay-promotion wc-pay-welcome-page launch-your-store add-to-cart-with-options-stepper-layout
Disabled Features: product-data-views experimental-blocks coming-soon-newsletter-template minified-js product-pre-publish-modal settings async-product-editor-category-field product-editor-template-system blueprint reactify-classic-payments-settings use-wp-horizon blockified-add-to-cart
Daily Cron: ✔ Next scheduled: 2025-03-27 19:02:02 +00:00 Options: ✔ Notes: 59 Onboarding: skipped
Action Scheduler
Complete: 4 Oldest: 2025-03-26 19:03:10 +0000 Newest: 2025-03-26 19:03:12 +0000
Failed: 1 Oldest: 2025-03-26 19:04:21 +0000 Newest: 2025-03-26 19:04:21 +0000
Pending: 1 Oldest: 2025-03-27 19:03:10 +0000 Newest: 2025-03-27 19:03:10 +0000
Status report information
Generated at: 2025-03-26 19:30:20 +00:00 `
Isolating the problem
- I have deactivated other plugins and confirmed this bug occurs when only WooCommerce plugin is active.
- This bug happens with a default WordPress theme active, or Storefront.
- I can reproduce this bug consistently using the steps above.
Source: woocommerce/woocommerce