Shopify Scripts ngừng hoạt động 2026: Hai hạn chót âm thầm
Shopify Scripts ngừng hoạt động 2026 từ 30/06 mà không báo lỗi. Quy trình audit từng store tôi dùng bắt discount chết và tracking checkout hỏng trước Q4.
Điểm chính — AI tóm tắt
- Shopify Scripts đã ngừng thực thi từ 30/06/2026 — checkout vẫn chạy bình thường nên discount/phí hỏng một cách âm thầm, không báo lỗi
- Thực chất là hai hạn chót: Ruby Scripts (30/06, mọi gói) và nâng cấp trang Thank-you / Order-status cho non-Plus vào 26/08/2026 — lỡ hạn thì Shopify tự nâng cấp, xóa sạch Additional Scripts của bạn
- Audit từng store ngay: khuyến mãi, phí ship hay tag tracking checkout nào vừa chết mà không ai biết
- Logic discount/shipping chuyển sang Shopify Functions; tag tracking order status chuyển sang Web Pixels / Customer Events
AI tổng hợp từ chính nội dung bài viết; tác giả đã soát lại.
Trong bài này
- Cái gì thực sự chết ngày 30/06 (và tại sao không có gì báo bạn)
- Hạn chót từng bị dời — nên một nửa chúng ta không còn tin
- Cái bẫy thuật ngữ khiến seller đi audit nhầm store
- Hạn chót thứ hai: Additional Scripts trên store non-Plus
- Cái audit từng store tôi đang chạy tuần này
- Vì sao silent failure còn tệ hơn cái trang báo lỗi mà bạn mong có
Ngày 30/06/2026, Shopify Scripts đã ngừng chạy. Không có banner đỏ. Không có email báo checkout lỗi. Những đoạn Ruby script lo phần discount, phí ship và tùy chỉnh thanh toán mà một số store chúng tôi vận hành đã âm thầm dựa vào suốt nhiều năm, giờ đơn giản là ngừng thực thi — và mọi checkout vẫn chạy như chưa có chuyện gì. Đó mới là điểm đáng sợ: đơn vẫn được tạo, tiền vẫn về, và triệu chứng duy nhất nhìn thấy được là một khuyến mãi không còn áp dụng nữa. Changelog của chính Shopify nói thẳng: "June 30, 2026: All Shopify Scripts will cease to execute entirely" — sau khi quyền chỉnh sửa đã bị khóa từ 15/04.
Tuần này tôi đi soát lại từng store mình đang chạy — cả Plus lẫn non-Plus — và với mỗi store chỉ hỏi đúng một câu: khuyến mãi, phí, hay tag tracking nào vừa chết mà không hề báo cho ai? Bài viết này chính là cái audit đó, viết ra cho rõ ràng, bởi vì "Shopify Scripts ngừng hoạt động 2026" thực chất là hai hạn chót tách biệt mà seller cứ gộp làm một — và cái thứ hai sẽ đánh sập ad tracking trên cả một portfolio nhiều store ngay trước Q4.
Cái gì thực sự chết ngày 30/06 (và tại sao không có gì báo bạn)
Shopify Scripts là cái Script Editor cũ viết bằng Ruby: discount theo line-item, logic tính phí ship, và các tùy chỉnh thanh toán chạy tại checkout. Nếu bạn từng viết "giảm 10% khi giỏ có 3 sản phẩm trở lên", "free ship cho đơn trên $75", hay "ẩn COD với địa chỉ quốc tế" trong Script Editor, thì đó chính là phần logic đã ngừng vào 30/06.
Đây là kiểu hỏng mà tôi cứ nhắc đi nhắc lại, vì nó gói trọn cả vấn đề trong một câu: một Script chết không báo lỗi, nó chỉ lặng lẽ ngừng áp dụng. Giả sử một Script miễn phí ship cho đơn trên $75 — con số này tôi chỉ lấy làm ví dụ minh họa. Từ 30/06 quy tắc đó biến mất, nên một khách nhìn thấy "free ship cho đơn trên $75" trong quảng cáo của bạn thì tới checkout vẫn bị tính phí ship như thường. Nhẹ thì họ bỏ giỏ. Nặng hơn thì họ vẫn đặt đơn với cảm giác bị chặt chém rồi mở dispute. Store không mất margin vì một cái bug nhìn thấy được; nó mất niềm tin vì một lời hứa mà nó âm thầm ngừng giữ. Trong bảng xếp hạng rủi ro vận hành của tôi, kiểu silent failure này nằm trên gần như mọi thứ mà một lớp giám sát lẽ ra phải bắt được — vì ngay từ đầu đã chẳng có tín hiệu nào để mà bắt.
Bản thay thế của Shopify là Shopify Functions, và việc migrate là công việc thật, không phải bật một cái toggle. Với logic discount và ship đơn giản, nhiều merchant có thể dựng lại hành vi đó bằng một app trong hệ sinh thái, hoặc chuyển sang Functions theo hướng dẫn transition mà Shopify cung cấp. Tôi cố tình không đi vào chi tiết code trong bài này — đây là checklist của người vận hành, không phải tutorial về Functions. Trọng tâm ở đây là triage: tìm cái gì hỏng trước đã, rồi mới quyết dựng lại cái gì sau.
Hạn chót từng bị dời — nên một nửa chúng ta không còn tin
Nếu phản ứng của bạn khi nghe "Scripts hết chạy rồi" là "làm gì có, dời rồi mà", thì bạn không đơn độc — và chính bản năng đó là cái bẫy. Những merchant từng trải qua các đợt hạn chót checkout-extensibility trước đây đã chứng kiến hết mốc này đến mốc khác trôi qua, và có lý do để kết luận rằng lần này cũng sẽ trượt tiếp. Nhưng nó không trượt.
Tôi có một quan điểm về việc cái lịch sử đó đã làm gì với cộng đồng seller: mỗi hạn chót bị dời lại huấn luyện thêm một lớp người vận hành không tin vào cái hạn chót kế tiếp — và lần này họ trả giá cho sự không tin đó bằng margin rò rỉ không một tiếng động. Quy tắc tôi đang theo giờ rất nhàm chán và chưa bao giờ làm tôi bỏng tay: coi một hạn chót từng bị dời là cái hạn chót cuối cùng sẽ không dời nữa, và cứ làm migrate theo giả định sớm hơn. Cái giá của việc làm sớm là mất toi một buổi chiều. Cái giá của việc làm muộn thì đang diễn ra thật.
Cái bẫy thuật ngữ khiến seller đi audit nhầm store
Đây là chỗ mà mấy bài blog lá cải hại người ta nặng nhất. "Scripts", "checkout.liquid", và "Additional Scripts" là ba thứ khác nhau, và gộp chúng lại với nhau sẽ đẩy bạn đi audit nhầm store.
- Shopify Scripts — cái Script Editor viết bằng Ruby ở trên. Đã chết từ 30/06/2026, trên mọi gói từng có nó.
- checkout.liquid — template checkout tùy biến hoàn toàn. Thứ này chỉ từng tồn tại trên Shopify Plus. Nếu bạn đang dùng gói Basic, Grow hay Advanced thì bạn chưa bao giờ có nó, nên mấy tiêu đề kiểu "checkout.liquid bị khai tử" không nói về bạn.
- Additional Scripts — cái ô nằm trên trang Cảm ơn (Thank-you) và trang Trạng thái đơn (Order-status), nơi hầu hết store dán tag conversion của Google Ads, sự kiện purchase của Meta Pixel, và container Google Tag Manager. Thứ này có trên các gói non-Plus, và đây mới chính là cái sắp phá ad tracking của bạn.
Chính tôi suýt sập vào cái bẫy này khi ngồi suy luận: đọc thấy "checkout.liquid chỉ dành cho Plus", kết luận rằng mấy store non-Plus trong fleet không bị ảnh hưởng, rồi bỏ qua. Sai. Thứ đánh vào store non-Plus không phải checkout.liquid — mà là Additional Scripts. Nếu bạn chạy một portfolio pha trộn cả store Plus lẫn non-Plus, thì "mình có Plus đâu, nên chuyện này không liên quan" chính xác là câu nói khiến conversion tracking của bạn bị xóa sạch mà không hề báo trước.
Hạn chót thứ hai: Additional Scripts trên store non-Plus
Shopify đã tắt các tùy chỉnh trên trang Cảm ơn và Trạng thái đơn — bao gồm cả Additional Scripts — với các merchant Plus từ 28/08/2025. Với tất cả những người còn lại, changelog cố tình nói mập mờ: additional scripts và script tag trên các trang đó "sẽ bị tắt sau khi thông báo trước một năm".
Hồi mới viết bài này, changelog của Shopify mới chỉ nói "thông báo trước một năm" và tôi từ chối khẳng định một ngày cụ thể mà mình không dẫn được nguồn. Cái sự dè dặt đó giờ đã có thể bỏ đi: Shopify đã công bố một ngày cứng. Hướng dẫn nâng cấp trang Thank-you và Order-status của họ nói rõ rằng "ngày 26/08/2026 là hạn chót để các store dùng gói Shopify non-Plus nâng cấp trang Thank you và Order status hiện tại lên phiên bản mới của các trang đó". Lỡ hạn thì không có thời gian ân hạn nào cả — chính hướng dẫn đó nói nếu bạn không nâng cấp trước ngày này, "trang Thank you và Order status của bạn sẽ được tự động nâng cấp lên các trang mới". Các trang mới không mang theo cái ô Additional Scripts của bạn, nên một lần tự nâng cấp mà bạn không chủ động chạy chính là cách mà tag Google Ads, Meta Pixel và container GTM nằm trong ô đó bị xóa sạch, không cần bạn bấm một cái nào.
Vậy nên chiếc đồng hồ đếm ngược cho non-Plus là có thật, và nó là 26/08/2026. Đừng đặt lịch sửa vào đúng ngày hôm trước — soát xem thực sự có gì trong cái ô đó trên khắp một fleet mất nhiều hơn một buổi chiều, và mấu chốt là migrate tracking theo điều kiện của chính bạn, thay vì để cuộc tự nâng cấp của Shopify quyết định thời điểm giùm bạn.
Cái gì thực sự hỏng khi Additional Scripts bị tắt trên một store non-Plus:
- Tag conversion của Google Ads dán trong Additional Scripts ngừng bắn — purchase không còn được attribute nữa.
- Sự kiện purchase của Meta Pixel tắt ngóm, nên phần tối ưu Conversions của bạn mất tín hiệu.
- Container GTM nằm trong ô đó kéo theo mọi tag bên trong nó chết chùm.
Kết quả vẫn là kiểu silent failure y hệt câu chuyện Scripts, nhưng nguy hiểm hơn một bậc: nền tảng quảng cáo vẫn tiếp tục tiêu tiền, còn dữ liệu return thì cạn dần, nghĩa là bạn đang mù ROAS trên toàn bộ store cùng lúc. Ngày đầu bạn không nhận ra. Ba tuần sau bạn mới nhận ra, khi các con số ngừng hợp lý và bạn không phân biệt nổi là một campaign đã chết hay chỉ là nó ngừng báo cáo. Cách sửa là dùng framework Web Pixels / Customer Events của Shopify, nơi tracking được cho là phải nằm ở đó từ bây giờ — và nếu bạn muốn nắm mô hình tư duy về đường ống dữ liệu event-driven của store trước khi động tay vào, bài primer về webhooks của chúng tôi phác ra hình dáng của nó.
Cái audit từng store tôi đang chạy tuần này
Đây là checklist, mỗi store một dòng, bởi trên một fleet nhiều store thì đáp án của từng cái một khác nhau, và một câu "bọn mình ổn" gộp chung sẽ che mất đúng cái store không ổn.
- Store này có Shopify Scripts nào đang chạy không? Kiểm tra Script Editor. Nếu có, chúng đã chết từ 30/06 — nhảy sang bước 2. Nếu store chưa bao giờ dùng Scripts, đánh dấu sạch và đi tiếp.
- Khuyến mãi nào thực sự phụ thuộc vào một Script? Đây là phần khảo cổ. Nhìn xem bạn đã quảng cáo hành vi discount, ship hay thanh toán nào, so với cái mà checkout đang thực sự làm ngay lúc này. Mọi khoảng chênh đều là một chỗ rò bắt đầu từ 30/06. Dựng lại những cái trọng yếu bằng Functions hoặc một app tương đương; bỏ những cái bạn không cần.
- Có gì trong Additional Scripts trên trang Cảm ơn hoặc Trạng thái đơn không? Google Ads, Meta Pixel, GTM — bất cứ thứ gì dán trong ô đó đều đang chạy trên chiếc đồng hồ đếm ngược tới 26/08/2026 với store non-Plus, sau ngày đó một lần tự nâng cấp sẽ gỡ sạch.
- Store này đã chuyển sang Web Pixels / Customer Events chưa? Nếu rồi, đánh dấu xong. Nếu chưa, đây chính là cuộc migrate cần lên lịch trước hạn chót, chứ không phải sau.
- Ghi lại trạng thái của cả bốn mục cho từng store vào một chỗ. Với năm hay mười store, bạn sẽ không giữ nổi hết trong đầu, và "hình như cái đó xử lý rồi" chính là cách một chỗ rò sống sót được tới tận Q4.
Dòng cuối cùng đó là toàn bộ luận điểm multi-store. Cái audit này với một store chỉ là một buổi chiều; chính phép nhân lên mới cắn bạn. Hãy nhét nó vào checklist vận hành store định kỳ thay vì coi là việc làm một lần cho xong, và làm cho xong thật sớm trước khi lưu lượng BFCM đổ vào checkout của bạn — một tag conversion hỏng vào tháng 11 nghĩa là cả một quý ra quyết định quảng cáo dựa trên dữ liệu sai.
Vì sao silent failure còn tệ hơn cái trang báo lỗi mà bạn mong có
Tôi sẽ kết bằng lập trường, vì đó là lý do tôi bỏ hết mọi thứ để ngồi viết bài này. Shopify chọn con đường im lặng. Một hard failure — checkout văng lỗi, đơn ngừng chạy — là ầm ĩ, và ầm ĩ thì được sửa trong vòng một tiếng vì buộc phải sửa. Một silent failure để tiền rò rỉ suốt nhiều tuần trong khi mọi dashboard vẫn xanh lè, mà dashboard xanh lè lại là lời nói dối đắt giá nhất trong vận hành store.
Nên với tôi, "Shopify Scripts ngừng hoạt động 2026" thực ra không phải là một hạn chót về code; nó là một bài toán giám sát khoác áo hạn chót kỹ thuật. Những store chịu thiệt sẽ không phải là những store "lỡ đợt migration". Đó sẽ là những store không có cách nào nhận ra một khuyến mãi hay một pixel đã im tiếng, vì chẳng ai canh sự vắng mặt cả. Cách sửa là một góc nhìn hợp nhất trên mọi cửa hàng, để một mã giảm giá ngừng áp hay một thẻ tracking tắt ngóm hiện lên như một bất thường ở một chỗ, thay vì thành bí ẩn trong số liệu Q4 ba tuần sau đó.