Quay lại Blog
2026-07-0513 phút đọc

Giới hạn đơn hàng mặc định của Shopify: làm được gì và không làm được gì

Shopify cho phép đặt một số quy tắc đơn hàng ngay từ đầu. Dưới đây là những gì làm được không cần app, những gì cần can thiệp thêm, và khoảng trống thực tế các merchant thường gặp.

Giới hạn đơn hàng mặc định của Shopify: làm được gì và không làm được gì

Shopify luôn là một nền tảng, chứ không phải sản phẩm hoàn chỉnh cho mọi mô hình kinh doanh. Các tính năng giới hạn đơn hàng mặc định chỉ bao phủ những nhu cầu cơ bản — nhưng cơ bản thì không đủ cho hầu hết cửa hàng chạy bán sỉ, bán theo thùng, hoặc có quy tắc riêng theo từng khách.

Bài này phân tích Shopify làm được gì ở dạng mặc định hiện tại, đâu là chỗ cần sửa theme hoặc code tùy chỉnh, và đâu là chỗ mà app hay Shopify Functions trở thành lựa chọn thực tế. Không quảng cáo sản phẩm. Chỉ là ranh giới đúng như nó tồn tại giữa năm 2026.

Những gì Shopify admin làm được sẵn

Quy tắc số lượng trên variant (catalog B2B)

Shopify hỗ trợ quy tắc số lượng theo từng variant — mức tối thiểu, tối đa và bội số cho số đơn vị mà một người mua có thể đặt. Trên storefront, nó hiển thị dưới dạng ô chọn số lượng bị giới hạn, nên người mua không thể nhập hay chọn ra ngoài khoảng cho phép.

Điểm cần lưu ý là những quy tắc này đến từ đâu. Quy tắc số lượng được đặt trên một catalog B2B, mà catalog B2B thì cần Shopify Plus có bật B2B. Trên gói tiêu chuẩn, không có thiết lập admin mặc định nào để giới hạn số đơn vị của một sản phẩm mà khách được mua — ô chọn số lượng mặc định là tối thiểu 1 và không có tối đa.

Ngay cả ở nơi chúng áp dụng được, quy tắc số lượng vẫn có giới hạn:

  • Chúng được đặt theo từng variant và từng catalog, không theo họ sản phẩm hay collection
  • Ô chọn trên storefront chỉ là gợi ý, không phải bảo đảm — cart API, draft orders và các checkout bên thứ ba vẫn có thể gửi số lượng ngoài khoảng đó
  • Không có mức tối thiểu hay tối đa ở cấp giỏ hàng (tổng số món, tổng giá trị)

Tối thiểu/tối đa đơn hàng qua Shopify Scripts (nay đã ngừng)

Trước đây, các merchant Shopify Plus dùng Shopify Scripts (Ruby) trong checkout để thực thi quy tắc cấp giỏ — giá trị đơn tối thiểu, giá trị đơn tối đa, hoặc giới hạn số dòng hàng. Scripts chạy phía máy chủ, nên thật sự chặn được đơn.

Nhưng Scripts đã bị ngừng. Việc chỉnh sửa Scripts dừng lại từ tháng 4 năm 2026, và chúng ngừng thực thi hoàn toàn vào ngày 30 tháng 6 năm 2026. Nếu bạn gặp một bài hướng dẫn cũ chỉ tới Script Editor, thì con đường đó không còn nữa. Shopify Functions là bản thay thế.

Tính năng B2B (chỉ Shopify Plus)

Nếu bạn dùng Plus và đã bật B2B, bạn có một số công cụ kiểm soát bán sỉ mặc định:

  • Company locations kèm payment terms và catalog
  • Quy tắc số lượng theo từng catalog (tối thiểu/tối đa/bội số cho mỗi variant)
  • Các hạn chế checkout như giá trị đơn tối thiểu theo từng company location

Đây là những quy tắc thật, được thực thi tại checkout, và gắn với hồ sơ công ty. Nhưng chúng yêu cầu Plus kèm thiết lập B2B, và các quy tắc vẫn nằm ở cấp variant/catalog — không phải toàn bộ collection, không phải toàn giỏ hàng, và không có logic tùy chỉnh kiểu "khách có tag X chỉ được mua tối đa 2 sản phẩm này."

Những gì cần code theme hoặc sửa storefront

Hiển thị thông báo giới hạn trên trang sản phẩm

Bạn có thể sửa main-product.liquid (hoặc section tương đương) để hiển thị mức tối thiểu/tối đa của variant ngay cạnh ô chọn số lượng. Đây chỉ là hiển thị — nó không thực thi bất cứ điều gì. Nếu bạn chỉ cần thông báo quy tắc thì cách này ổn. Nếu bạn cần chặn đơn thì không đủ.

Ẩn nút thêm vào giỏ khi số lượng ngoài khoảng

Một số theme cho phép vô hiệu hóa nút thêm vào giỏ khi ô chọn số lượng nằm ngoài khoảng cho phép. Lần nữa, đây là một lớp chặn ở storefront. Cart API, buy buttons và các checkout headless đều đi vòng qua nó.

Kiểm tra ở trang giỏ hàng (JavaScript)

Bạn có thể thêm một script trên /cart để đọc số lượng các dòng hàng và báo lỗi nếu giỏ vi phạm quy tắc. Cách này chặn được những người mua bình thường. Nó không chặn được:

  • Các checkout tăng tốc (Shop Pay, Apple Pay, Google Pay)
  • Draft orders do nhân viên tạo
  • Checkout qua API từ app hoặc storefront headless
  • Người mua đã tắt JavaScript

Những gì cần Shopify Functions

Vì Scripts không còn nữa, Shopify Functions là cách được hỗ trợ để chạy logic tùy chỉnh tại checkout. Với giới hạn đơn hàng, cái liên quan là Cart and Checkout Validation API. Functions có thể thực thi:

  • Số lượng tối thiểu/tối đa ở cấp giỏ hàng
  • Giá trị tối thiểu/tối đa ở cấp giỏ hàng
  • Quy tắc theo từng khách hoặc theo tag (qua customer metafields)
  • Quy tắc bán theo thùng / bội số số lượng
  • Quy tắc kết hợp sản phẩm (ví dụ: "sản phẩm A yêu cầu sản phẩm B")

Functions chạy trên hạ tầng của Shopify, thực thi tại checkout, và không thể bị đi vòng từ storefront — kể cả các checkout tăng tốc như Shop Pay. Nhưng:

  • Chuyện gói dịch vụ có một điểm đáng hiểu rõ. Functions chạy được trên mọi gói khi chúng đi kèm trong một app công khai trên Shopify App Store. Còn để tự xây và triển khai một Function riêng thì cần Shopify Plus.
  • Viết một Function nghĩa là phải xây (bằng Rust hoặc JavaScript biên dịch sang Wasm) rồi triển khai, hoặc cài một app đã có sẵn Function
  • Debug khó hơn code theme — bạn có log, chứ không có console trình duyệt
  • Mỗi Function có giới hạn số lệnh; logic phức tạp trên nhiều dòng hàng có thể chạm ngưỡng

Những gì cần app (mọi gói)

Nếu bạn không dùng Plus, hoặc bạn cần các quy tắc dễ cấu hình hơn so với viết code, thì một app giới hạn đơn hàng là con đường thực tế. Những khả năng app thường có:

Loại quy tắcMặc định (không Plus)Mặc định (Plus)Shopify FunctionsApp
Tối thiểu/tối đa theo sản phẩm✓ (B2B)
Tối thiểu/tối đa theo collection✓*
Tối thiểu/tối đa số lượng giỏ hàng
Tối thiểu/tối đa giá trị giỏ hàng
Điều kiện customer tag✓*
Bán theo thùng / bội số✓ (catalog B2B)
Giới hạn theo từng khách✓*
Thực thi tại checkoutChỉ B2B✓**
  • Functions có thể đọc customer metafields để làm logic kiểu tag, nhưng tốn công bảo trì hơn. ** App dùng checkout UI extensions hoặc Functions thì thực thi tại checkout. App chỉ chỉnh sửa storefront thì không.

Cột Shopify Functions giả định là đã có một Function được triển khai. Tự xây Function thì cần Plus, nhưng cũng khả năng đó nằm trong một app công khai trên App Store lại chạy được trên mọi gói trừ Starter — đó là lý do một app là con đường thực tế cho hầu hết cửa hàng không dùng Plus.

Nơi các khoảng trống thật sự gây đau đầu

"Chúng tôi chỉ cần tối thiểu $100 cho khách wholesale"

Không có Plus: bạn cần một app, vì tự xây Function đòi hỏi Plus. JavaScript theme trên trang giỏ hàng không phải là thực thi.

Có Plus nhưng không có B2B: bạn có thể viết một Function kiểm tra cart.attributes hoặc một customer metafield "wholesale" rồi thực thi mức subtotal tối thiểu. Hoặc cài một app.

Có Plus kèm B2B: catalog hỗ trợ quy tắc số lượng theo từng variant, nhưng không hỗ trợ một mức tối thiểu chung cho cả giỏ hàng. Bạn vẫn cần một Function hoặc một app cho mức giá trị tối thiểu ở cấp giỏ.

"Khách chỉ được mua 1 sản phẩm giới hạn này"

Một ô chọn số lượng bị giới hạn ở mức 1 vẫn cho phép người mua:

  • Thêm 1, vào giỏ, đổi số lượng thành 5
  • Dùng buy button / thêm nhanh để thêm nhiều lần
  • Thanh toán qua Shop Pay với một giỏ đã lưu

Để thật sự thực thi tối đa 1 mỗi khách mỗi đơn (hoặc theo từng khoảng thời gian), bạn cần thực thi ở cấp checkout — Functions hoặc một app có checkout UI extension.

"Khách sỉ mua theo thùng 12, khách lẻ mua 1"

Catalog B2B có thể đặt bội số bằng 12 cho một catalog wholesale, nhưng:

  • Chỉ trên Plus có B2B
  • Chỉ áp dụng cho những khách được gán vào catalog đó qua company locations
  • Khách lẻ trên cùng một storefront không bị ảnh hưởng — không có cách mặc định nào để buộc họ theo một quy tắc khác

Với trường hợp bán lẻ và bán sỉ lẫn lộn trên cùng một storefront mà không có Plus B2B, bạn cần logic theo customer tag tại checkout — một Function kiểm tra hoặc một app.

"Chặn đơn trên $5.000 để review gian lận"

Giá trị giỏ tối đa tại checkout: một Function kiểm tra (tự xây trên Plus, hoặc một app công khai trên mọi gói). Không có thiết lập mặc định nào cho việc này.

Một checklist quyết định

Tình huống của bạnCon đường thực tế
Tối thiểu/tối đa sản phẩm đơn giản, chỉ bán lẻApp giới hạn đơn hàng (quy tắc số lượng mặc định cần Plus + B2B)
Cần tối thiểu/tối đa giỏ hàng, có Plus, có nguồn lực devShopify Function
Cần tối thiểu/tối đa giỏ hàng, không có PlusApp giới hạn đơn hàng
Bán sỉ + bán lẻ quy tắc khác nhau, có Plus + B2BCatalog + Functions cho các khoảng trống
Bán sỉ + bán lẻ quy tắc khác nhau, không có PlusApp giới hạn đơn hàng có điều kiện customer tag
Bán theo thùng / bội số, có Plus + B2BQuy tắc số lượng của catalog
Bán theo thùng / bội số, không có PlusApp giới hạn đơn hàng
Giới hạn theo thời gian (tối đa 3 mỗi khách mỗi tháng)App có theo dõi lịch sử mua
Cần xong trong tuần này, không có nguồn lực devApp giới hạn đơn hàng

Cần hỏi gì trước khi quyết định

  1. Quy tắc cần chặn checkout, hay chỉ cần hiển thị thông báo? Nếu phải chặn thì các giải pháp chỉ nằm ở storefront là không đủ.
  2. Bạn có dùng Shopify Plus không? Các tính năng B2B chỉ có trên Plus, và việc tự xây Function cũng vậy. Một app công khai đã tích hợp sẵn Function thì chạy được trên mọi gói trừ Starter.
  3. Quy tắc có khác nhau theo nhóm khách không? Các gói tiêu chuẩn không có cách mặc định nào để thay đổi giới hạn theo nhóm khách. Catalog B2B thì có (Plus). Functions làm được qua metafields. App xử lý ngay trong phần cấu hình.
  4. Bạn có cần quy tắc cấp collection hoặc cấp giỏ hàng không? Quy tắc số lượng mặc định nằm ở cấp variant và chỉ dành cho B2B. Mọi thứ khác đều cần một Function hoặc một app.
  5. Bạn có duy trì được code tùy chỉnh không? Functions là code. App là cấu hình. Nếu bạn không có dev thường trực, về lâu dài một app thường rẻ hơn.

FAQ

Có đặt được giá trị đơn tối thiểu trên Shopify mà không cần app không?

Không có cách mặc định trên bất kỳ gói nào. Trên Plus, bạn có thể tự xây một Function kiểm tra; trên mọi gói, một app công khai có thực thi tại checkout (mà bản thân nó cũng dùng một Function) là con đường thực tế.

Shopify có thiết lập mặc định "tối đa 1 mỗi khách" không?

Không có thiết lập nào cho việc này trên gói tiêu chuẩn. Trên Plus có B2B, một quy tắc số lượng của catalog có thể đặt tối đa cho một variant là 1, và điều đó giới hạn ô chọn số lượng. Dù cách nào, một giới hạn ở ô chọn cũng không ngăn được người mua thêm sản phẩm nhiều lần qua việc cập nhật giỏ, buy buttons, hay các checkout tăng tốc. Để thực thi thật sự theo từng khách, bạn cần logic ở cấp checkout (một Function hoặc một app).

Khác biệt giữa Shopify Scripts và Shopify Functions là gì?

Scripts là cách tùy chỉnh checkout đời cũ dựa trên Ruby dành cho các merchant Plus. Chúng đã ngừng thực thi vào ngày 30 tháng 6 năm 2026. Functions là bản thay thế — dựa trên Wasm và có hiệu năng cao hơn. Chúng chạy được trên mọi gói trừ Starter khi được cung cấp qua một app công khai; còn tự xây thì cần Plus.

Có dùng được customer tag trong Shopify Functions không?

Có, qua customer metafields. Bạn có thể ghi một tag vào một metafield (qua Flow, app, hoặc admin) rồi đọc nó trong Function. Cách này chạy được nhưng tốn thêm công bảo trì so với một app xử lý điều kiện tag ngay trong giao diện.

Các app giới hạn đơn hàng có hoạt động với Shop Pay và các checkout tăng tốc không?

Các app dùng checkout UI extensions hoặc Shopify Functions thì thực thi quy tắc ở cấp checkout của Shopify, và điều đó bao gồm cả Shop Pay. Các app chỉ chỉnh sửa theme storefront hoặc trang giỏ hàng thì không.

Có tính năng bán theo bội số (bán theo thùng) mặc định không?

Trên Plus có B2B, catalog hỗ trợ bội số số lượng theo từng variant. Trên các gói tiêu chuẩn hoặc không có B2B thì không. Bạn cần một Function hoặc một app.