{"id":320769,"date":"2026-06-01T13:01:46","date_gmt":"2026-06-01T13:01:46","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/lindymoq-moq-settings-for-products-in-surecart\/"},"modified":"2026-06-01T12:45:26","modified_gmt":"2026-06-01T12:45:26","slug":"lindymoq","status":"publish","type":"plugin","link":"https:\/\/yor.wordpress.org\/plugins\/lindymoq\/","author":17741788,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"trunk","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"LindyMOQ: MOQ Settings for Products in SureCart","header_author":"aurefau","header_description":"Set a minimum order quantity per SureCart product or variant. Enforces it on the product page, blocks checkout server-side, and disables purchasing when stock falls below the MOQ (unless SureCart's \"continue selling when out of stock\" is on).","assets_banners_color":"","last_updated":"2026-06-01 12:45:26","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/wordpress.org\/plugins\/lindymoq\/","header_author_uri":"https:\/\/profiles.wordpress.org\/aurefau\/","rating":5,"author_block_rating":0,"active_installs":0,"downloads":23,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":[],"upgrade_notice":[],"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3556766,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3556766,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":[],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[282,177616,265335,218637],"plugin_category":[45],"plugin_contributors":[264509],"plugin_business_model":[],"class_list":["post-320769","plugin","type-plugin","status-publish","hentry","plugin_tags-ecommerce","plugin_tags-minimum-order-quantity","plugin_tags-moq","plugin_tags-surecart","plugin_category-ecommerce","plugin_contributors-aurefau","plugin_committers-aurefau"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/lindymoq\/assets\/icon-128x128.png?rev=3556766","icon_2x":"https:\/\/ps.w.org\/lindymoq\/assets\/icon-256x256.png?rev=3556766","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>LindyMOQ<\/strong> lets you set a minimum order quantity (MOQ) per SureCart product or per variant. Customers can order the minimum or more \u2014 but checkout is blocked if they try to go below it.<\/p>\n\n<p>MOQ values are managed from a dedicated settings page in WordPress admin (Settings \u2192 LindyMOQ), independent of SureCart's product editor.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Set an MOQ per product, or per individual variant<\/li>\n<li>Product-page quantity selector is locked to the MOQ \u2014 no flicker, no client-side bypass<\/li>\n<li>Checkout is blocked server-side when the quantity is below the MOQ<\/li>\n<li>Clear error message shown at checkout when the minimum is not met<\/li>\n<li>Quantities are aggregated across all line items before comparing to the MOQ<\/li>\n<li>Stock-aware: current stock is shown next to each MOQ in the settings page, with a red \"below MOQ\" flag when stock is insufficient<\/li>\n<li>Strict stock gate on the product page: when stock is below the MOQ, the buy button is disabled and an \"understocked \u2014 please check back soon\" message is shown<\/li>\n<li>Honours SureCart's \"continue selling when out of stock\" setting \u2014 when enabled, the stock gate is bypassed so backorders go through normally<\/li>\n<li>Simple settings page \u2014 no complicated configuration<\/li>\n<\/ul>\n\n<h4>Requirements<\/h4>\n\n<p><a href=\"https:\/\/wordpress.org\/plugins\/surecart\/\">SureCart<\/a> must be installed, active, and connected to the SureCart API.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>lindymoq<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin in <strong>WordPress \u2192 Plugins<\/strong><\/li>\n<li>Go to <strong>Settings \u2192 LindyMOQ<\/strong><\/li>\n<li>Enter the minimum quantity for each product and click <strong>Save MOQ settings<\/strong><\/li>\n<\/ol>\n\n<p>SureCart must be installed, active, and connected before the settings page can list your products.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20this%20work%20with%20surecart%20product%20variants%3F\"><h3>Does this work with SureCart product variants?<\/h3><\/dt>\n<dd><p>Yes. Products with variants show one MOQ input per variant. The minimum applies to that specific variant's quantity.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20a%20customer%20orders%20below%20the%20minimum%3F\"><h3>What happens when a customer orders below the minimum?<\/h3><\/dt>\n<dd><p>The product-page quantity selector starts at the MOQ and physically cannot go below it. If a customer somehow reaches checkout with fewer units, checkout is blocked server-side and they see a clear error message.<\/p><\/dd>\n<dt id=\"does%20the%20moq%20apply%20across%20multiple%20line%20items%3F\"><h3>Does the MOQ apply across multiple line items?<\/h3><\/dt>\n<dd><p>Yes. Quantities are summed per product (and per variant) across all line items before comparing to the MOQ.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20have%20less%20stock%20than%20the%20moq%3F\"><h3>What happens if I have less stock than the MOQ?<\/h3><\/dt>\n<dd><p>By default, the buy button is disabled on the product page and a short \"minimum order is X units, currently understocked\" message is shown, so customers can't add an order you can't fulfil. In the settings page, the affected MOQ row shows a red \"below MOQ\" flag next to the stock count so you can spot the conflict.<\/p>\n\n<p>If SureCart's \"continue selling when out of stock\" is enabled for the product, the stock gate is bypassed entirely \u2014 the customer can still buy and you handle the backorder.<\/p><\/dd>\n<dt id=\"my%20product%20list%20is%20empty%20%E2%80%94%20why%3F\"><h3>My product list is empty \u2014 why?<\/h3><\/dt>\n<dd><p>Make sure SureCart is active and connected to its API. The settings page fetches products via SureCart's PHP SDK, which requires an active API connection.<\/p><\/dd>\n<dt id=\"what%20is%20the%20maximum%20number%20of%20products%20supported%3F\"><h3>What is the maximum number of products supported?<\/h3><\/dt>\n<dd><p>The settings page fetches all non-archived products in a single request. If you have a very large catalog and products are missing, contact the plugin author.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: stock-aware admin display \u2014 current stock shown next to each MOQ, flagged red when below MOQ<\/li>\n<li>New: product-page buy button is disabled with a clear \"understocked\" message when stock is below the MOQ<\/li>\n<li>New: respects SureCart's \"continue selling when out of stock\" setting (gate is bypassed when on)<\/li>\n<li>Fix: quantity input value-trap is now re-applied on every render cycle, so the Interactivity API can no longer swap in an un-trapped input<\/li>\n<li>Fix: value-trap no longer attaches to non-input web components (avoids an \"Illegal invocation\" landmine)<\/li>\n<li>Fix: plugin action link no longer depends on the folder being named <code>lindymoq<\/code><\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Set a minimum order quantity per SureCart product or variant. Enforced on product page, blocked at checkout, gated when stock is too low.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/320769","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=320769"}],"author":[{"embeddable":true,"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/aurefau"}],"wp:attachment":[{"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=320769"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=320769"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=320769"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=320769"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=320769"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/yor.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=320769"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}