Need to way to more easily create phone orders, or manually add new orders?
WooCommerce Phone Orders & Manual Orders lets you do that, quick and easy. Use the smart search box to search for products by name or SKU, click to add them to the order, select an customer or add a new customer, choose the shipping method if shipping is required, select a payment method, enter the payment details, and place the order. You’re done.
For selecting customers, you can add new orders for a “Guest” shopper ( shoppers that don’t already have, or don’t need, a user account on your site ), or optionally add a new customer and register a user account at the time the order is placed.
For selecting products to add to the cart, the plugin works for simple, variable, grouped products, composite products, bundled products, subscription products, and many others. And for product pricing, WooCommerce Phone Orders & Manual Orders works with our Dynamic Discounts, Wholesale Pricing, Tiered Pricing, Checkout Fields Editor Pro, Donations Pro, Gift Certificates Pro, and many more. ( Many of our other plugins are also supported, feel free to contact us to ask about support specific features ).
For highly specialized products that require extra data input or selections when ordering, the plugin lets you do that too. So it works great for products that require custom input from forms created by our Product Add-on Forms plugin, or other third party plugins such as Gravity Forms, and many others.
You can place orders on hold and resume processing the order at a later time. And you can load any existing order and use it as a starting point for a new order, which is great if you have customers that routinely place orders for the same items.
You can also apply coupons, if you want to, when placing orders for your customers.
You can optionally manually adjust product prices for most normal types of products on the fly when you want to ( note that this is not shown in the video demo ).
You can optionally add arbitrary products to an order even when those products don’t exist in your store catalog.
And, you can optionally set a custom shipping price for the order ( note that this is not shown in the video demo ).
Add cart fees using any label and fee amount that you need.
Works with most payment gateways, such as Check Payments, Bank Transfers, PayPal, Stripe, Authorize.net, FirstData, Simplify Commerce, and more than a hundred others.
Works with all your shipping gateways, including USPS, Fedex, UPS, Canada Post, Australia Post, our Table Rate Shipping Pro, and many more!
Need to ship orders to multiple address? Use our Ship to Multiple Addresses extension.
See the Screenshot tab above to view images of the simple settings and an example of what the manual order entry page looks like.
Compatibility: WooCommerce 2.4.12 or newer
Comes with great support via email and phone!
We keep all of our software up to date with the latest versions of WooCommerce and WordPress.
If you don't see any recent changes below it's because none have become necessary!
Version 3.1.15 - March 17, 2020
Ensure user context is checked properly, helps with Ajax requests to search for products
Version 3.1.14 - March 11, 2020
Updated to support WC 4.0
Version 3.1.13 - March 3, 2020
When loading an order allow option to load coupons associated with the order
Version 3.1.12 - December 20, 2019
Added fields for tax class and tax status to the "add arbitrary product" form
Version 3.1.11 - July 10, 2019
Better support for bundled products in relation to changing quantities and prices - all items are now references by cart item ID
Add filter to prevent WC Google Analytics Pro plugin from injecting JS code into the phone/manual order page.
Updated "search company names" feature
Adjusted order search for sites using Sequential Orrder Numbers
Remove variation if parent variable product is not published
Version 3.1.10 - June 24, 2019
IMPORTANT: AUTOMATIC DELETION OF ARBITRARY PRODUCTS HAS BEEN RE-ENABLED
Allow zero price for arbitrary products
Ensure payment instructions (for the check payment gateway, etc) do not appear twice. Only initialize WC payment gateways if they are not set yet.
Ensure tax exempt checkbox settings carries over when checked, after a customer is selected and added to the order
Make customer search work based on 2 character minimum instead of 3
Updated order items template to show price change box (if enabled) when the price is zero (0).
Added CSS styles into the billing field template (inline styles) to ensure the state field boxes for billing/shipping remain at 100% width
Fixed default country setting so that if the country has no states/provinces/counties then default to "*"
Do not default to "US" / "TX" if no default country set yet
Added new column to the list of orders in the admin area that shows if the order was placed with via phone/manual order and if so which user placed it (column is labeled "Via" by default, changeable by a filter)
Added new setting to enable searching by company name. This is optional, on sites with a huge number of customers the search might be very slow.
Added new setting to enable showing the order date and/or the order total in the results when searching for an existing order
Always enqueue WP dashicons for help tip display
Prevent the page from scrolling to the top after Ajax for quantity or price change
Ensure product price in the items table is not crossed out unless the price is discounted or changed
Version 3.1.9 - May 3, 2019
Remove the previously added "company" search capability, causes significant performance problems on some sites. To be re-implemented in a future version.
Version 3.1.8 - April 25, 2019
Ensure payment gateways are always intialized when the order page loads
Improved existing order search speed by ~300%
Version 3.1.7 - April 23, 2019
Search company name when searching for a customer - WC 3.x and newer
Added setting to configure the ordering of categories
in the product category dropdown list (by name, term order, or ID)
Changed product category dropdown list to be hierarchical
Set customer ID before saving the customer account (even though the account exists already) to avoid a rare edge case where WC may get confused as to the actual customer ID number in the customer object.
Run a hook for "template_redirect" early to see if the order page is being loaded and if so remove all other actions for that hook to prevent 3rd party plugins from intercepting and redirecting away from the page
Changed items table template to call wc_get_price_including_tax() or wc_get_price_excluding_tax() directly instead of running it through a WC filter
Version 3.1.6 - March 11, 2019
When loading an order store the order ID in the user session so that the order notes can be loaded if any exist
Version 3.1.5 - February 5, 2019
Add the customer's note to the order form when loading existing orders, if a note exists in the order
Adjusted the CSS for the product search to allow it to expand when more than one product is selected from the results list
Ensure that any products in the order have have a price of zero do not display "Product has no price, cannot be purchased"
Added new setting for sites that use an extentions to enforce min/max/step/increment rules for quantity input fields, when this new setting is enabled the rules are enforced, otherwise they are not.
Adjust the items table template to better handle decimal and thousands separators for the hidden price fields
Version 3.1.4 - January 8, 2019
Updated the do_action() call to "woocommerce_after_checkout_validation" to pass a second parameter for errors
Correct the new user creation to ensure that it always writes the new user's address info into the account when necessary
Version 3.1.3 - January 4, 2019
For WC 3.5.x - ensure billing address becomes the shipping address if the cart needs shipping and "Ship to a different address" is not selected at checkout
Removed the hooked "wc_ajax_checkout" and replace with the correct action in this plugin, helps on some sites that use the "wc-ajax" endpoint
Return from process_customer() without processing if the order is being placed as a guest order and Create Account is not selected for the order.
Version 3.1.2 - January 3, 2019
Adjusted the insertion for the "configure" product window so that it isn't removed after its first use
Adjusted the code so that when an item is updated (qty or price change) and it's already in the cart then leave it and update the properties
Adjust the items table template show show the price if it is altered
Version 3.1.1 - December 31, 2018
Switch user context when checking if the custom payment gateways should be loaded
Version 3.1 - December 7, 2018
Restructured class files and directories, removed deprecated code
Changed the way user switching is handled to provide better support for 3rd party plugins
Changed the start up timing for user switching to provide better support for payment gateways that use stored cards for customers
Removed prettyPhoto JS script in favor of the "Simple Popup" already included in the plugin JS code
Added new filter "ignitewoo_opc_json_search_found_customers" to filter search for customers
Added new filter "ignitewoo_opc_search_post_types" to filter search for products by post type (default = product, product_variation)
Added new filter "ignitewoo_opc_search_post_statuses" to filter search for products by post status (default = publish, private)
Updated all references to the deprecated "posted" property in the checkout routines
Minor CSS adjustments for button sizes and alignments, box styling, and price input field
Adjusted account creation to avoid overwritting logged-in user details
Ensure shipping fields are empty if no customer is assigned to the order when the page page loads
Version 3.0.39 - December 10, 2018
Temporarily re-added prettyPhoto for use the Configure Product popup box
Version 3.0.38 - December 5, 2018
Refined SQL query for finding the manual order page URL for the admin menu
Removed unnecessary prettyPhoto and Chosen scripts
Removed the cart.js script and added the coupon functions to ignitewoo-opc.js, helps avoid shipping selection not staying selected
Removed the "ign_compat" functions file, no longer necessary
Version 3.0.37 - November 12, 2018
Added span wrapper around the text "Load and Overwrite" in the template file so that it can be hidden with custom CSS
Pass the quantity when applying the filter for add_cart_item_data
Version 3.0.36 - October 25, 2018
Adjusted JS code so that all functions are contained within a single "document ready" function
Unhook the update_shipping_method binding in the WC cart script since it causes timing issues when used in conjunction with this plugin
Version 3.0.35 - October 14, 2018
Ensure "validate_fields" method is called if the chosen payment gateway has that method available
Version 3.0.34 - September 28, 2018
Ensure cart script is enqueued, necessary to remove items from the order
Version 3.0.33 - September 25, 2018
Ensure checkout script is enqueued.
Version 3.0.32 - September 24, 2018
Added filter to allow 3rd party software to intercept order searches
Pass the order object to the woocommerce_checkout_order_processed filter call
Version 3.0.31 - September 13, 2018
Do not enqueue the cart script for WC 3.2 and newer, no longer necessary. This corrects and issue where sometimes the selected shipping method didn't always stay selected.
Version 3.0.30 - September 4, 2018
Ensure allowed users (based on role or user account) that are not admins or shop managers can search for customers to add to an order
Version 3.0.29 - September 3, 2018
Declare a global variable in a class method to prevent a fatal error
Ensure proper user context during the "update_order_review" process to avoid an ajax security error.
Version 3.0.28 - August 24, 2018
Rename the "quantity" parameter to "qty" to avoid conflicts with sites that use "Quantity" as a variable product attribute
Ensure altered prices are only returned when viewing the phone/manual order page
Ensure correct user context when writing the clerk's name into the order
Version 3.0.27 - August 17, 2018
Ensure the code is running the OPC user's context when localizing scripts to ensure the nonce is correct for the user
Version 3.0.26 - June 19, 2018
Added experimental full page view (see the new setting)
Corrected an issue where an invoice isn't sent if that option is checked for the Invoice Payment gateway at checkout
Version 3.0.25 - June 16, 2018
Remove thousands separator in add_item_to_cart() to avoid number truncation problems in some versions of PHP that occure when a comma is present in a floating point number
Version 3.0.24 - May 31, 2018
Change WC version check from 3.1 to 3.2 and lower when creating an order for WC 3.x, this stops 500 errors when creating a new order on WC 3.0.x through 3.1.x
Version 3.0.23 - May 30, 2018
Attempt to allow payment gateways to retrieve cards stored for a customer by setting the proper customer ID during the retrieval of gateways by WC.
Version 3.0.22 - May 24, 2018
Tweaked user context switching to always show correct prices in the order review and to correct invalid checkout nonce due to wrong user context introduced with WC 3.4.
Version 3.0.21 - May 22, 2018
Updated to support the new checkout nonce field in WC 3.4
Version 3.0.20 - May 17, 2018
Backward compatibility tweak for sites running PHP 5.3.x
Version 3.0.19 - May 4, 2018
Added backward compatibility when saving orders for WooCommerce version 3.0.x but less than 3.1
Ensure customer info is populated from the order data if the customer is a guest (no user account exists)
Version 3.0.18 - April 25, 2018
Attempt to cause is_checkout() to return true during order review Ajax requests
Ensure user context is set to the logged in user when the custom shipping cost gateway is loaded
Version 3.0.17 - April 23, 2018
Adjusted JS to find specfic table scrope for setting the opc_price value, prevents incorrect pricing calculations
Version 3.0.16 - April 3, 2018
Convert attribute value to array if it is an object
Version 3.0.15 - April 2, 2018
Modified the JS tied to the "Update cart totals" button to get price changes from the newer price edit field
Version 3.0.14 - March 29, 2018
In the items table template ensure that "get_attributes" returns an array otherwise set the var to an empty array.
Version 3.0.13 - March 29, 2018
Ensure variation ID is sent in Ajax when removing a cart item
Send cart item key with requests to change quantities and prices, help find the exact item in the cart in the event other software (Product Bundles, etc) have the same item in the cart in a package or bundle etc.
Version 3.0.12 - March 19, 2018
Updated the items template to address deprecated functions in WC 3.3.x
Added a time parameter to the plugin's JS file enqueuing to ensure the latest version is always loaded
Version 3.0.11 - March 6, 2018
Corrected issue with variation attributes not being detected if the attribute is part of the attribute taxonomy
Version 3.0.10 - February 15, 2018
Corrected user context when getting the selected shipping method, inadvertantly flipped to wrong user in v3.0.9
Version 3.0.9 - February 14, 2018
Correct condition where custom shipping not carried over into order after placed
Adjust for taxonomy-based attributes for variations that were populated after loading an existing order
Modified cart items table to show regular price and adjusted price if plugins modify the price
NOTE: If you're using a customized phone/manual order template you may need to update it!
Version 3.0.8 - February 6, 2018
Moved the changeable price field in the one_page_searchable items_table.php template to be its own field independent of the product's regular price. So now it's no longer used for calculations unless it has a value in it. NOTE: If you're using a customized phone/manual order template you may need to update it!
Added CSS for the modified changeable price field
Clear the shipping rate calculation cache for WC 3.3.x when using the custom shipping rate module
Version 3.0.7 - January 24, 2018
Added new setting to define the default country / state for new orders
Fixed issue where reloading and overwriting an existing order didn't overwrite the order but instead created a new order
Added subscriptions support to the payments gateway for Invoice, Hold Order, and Paid in Person
Updated tax exempt processing to work with IgniteWoo's WooCommerce Wholesale Pro Suite