Quay lại bài viết
8 thg 4, 2026
8 min read

Deploy Shopify App: “Shopify không host app cho bạn” - Hành trình đưa ứng dụng lên kệ

Bạn vừa hoàn thành code một Shopify App, chạy shopify app dev mượt mà trên local, mọi thứ đều hoạt động. Và rồi bạn tự hỏi: “Giờ làm sao để deploy lên Shopify?”

Đây là lúc mà nhiều developer mới bắt đầu bối rối. Bởi vì sự thật là: Shopify không host ứng dụng của bạn. Shopify không phải là một nền tảng PaaS như Heroku hay Vercel nơi bạn push code lên và nó tự chạy. Shopify chỉ quản lý app ở mức logic — scopes, permissions, app info, OAuth flow, billing, … — còn phần “chạy thực sự” là việc của bạn.

Hãy hình dung Shopify như ban quản lý một trung tâm thương mại. Họ quản lý biển hiệu cửa hàng, hợp đồng thuê, thẻ ra vào, quy định an ninh. Nhưng họ không xây cửa hàng cho bạn. Bạn phải tự xây dựng cửa hàng vật lý (deploy app lên cloud), sau đó đến ban quản lý để đăng ký (tạo logical app trên Shopify) và trỏ về địa chỉ cửa hàng của mình.

Vậy nên, “deploy một Shopify App” thực chất là hai việc riêng biệt:

  1. Deploy physical app lên cloud provider của bạn.
  2. Tạo logical app trên Shopify và trỏ về physical app đó.

Bài viết này sẽ hướng dẫn bạn từng bước một, kèm theo những lỗi mà mình đã gặp trong quá trình thực hiện.


0. Điều kiện tiên quyết

Trước khi bắt đầu, hãy đảm bảo bạn đã có:


1. Deploy ứng dụng lên Cloud

Đây là bước đầu tiên và cũng là bước quan trọng nhất: đưa ứng dụng của bạn lên cloud và đảm bảo nó chạy được.

Shopify sẽ giao tiếp với app của bạn thông qua HTTP/HTTPS. Nên ứng dụng cần phải:

Bạn có thể deploy lên bất kỳ cloud provider nào. Một số lựa chọn phổ biến:

Sau khi deploy, hãy verify bằng cách gọi thử:

# Kiểm tra health check curl -I https://your-app.your-cloud.com/ # Kết quả mong đợi # HTTP/2 200

Lưu ý: Nếu endpoint gốc của bạn trả về redirect (301/302), Shopify có thể không nhận diện được app. Hãy đảm bảo có ít nhất một endpoint trả về 200 OK trực tiếp.

Hãy nghĩ bước này là “xây xong cửa hàng và bật đèn lên” — chưa cần biết khách hàng là ai, nhưng cửa hàng phải mở cửa được đã.


2. Tạo Logical App trên Shopify

Bây giờ cửa hàng vật lý đã sẵn sàng, bạn cần đến “ban quản lý” để đăng ký.

Truy cập:

https://dev.shopify.com/dashboard/<org-id>/apps

Tại đây, nhấn “Create app” và điền các thông tin cơ bản cho app của bạn (tên app, mô tả, …).

Lúc này, Shopify đã biết app của bạn tồn tại — giống như việc bạn đã có giấy phép kinh doanh. Tuy nhiên, Shopify chưa biết cửa hàng của bạn nằm ở đâu. Việc trỏ URL sẽ được thực hiện thông qua file config ở bước 5.

dev.shopify.com vs partners.shopify.com

Đây là một điểm gây nhầm lẫn cho nhiều người:

Bạn sẽ cần dùng cả hai trong quá trình deploy.


3. Cấu hình Restricted Scopes và App Distribution

Bước này không phải lúc nào cũng cần thiết, nhưng nếu app của bạn rơi vào một trong các trường hợp sau thì bắt buộc phải làm:

Restricted Scopes là gì?

Shopify phân loại API scopes thành hai nhóm:

Cách enable

  1. Truy cập partners.shopify.com 
  2. Chọn app của bạn → Distribution
  3. Enable distribution và submit request cho các restricted scopes

Lưu ý: Quá trình review từ Shopify có thể mất thời gian. Nếu bạn bỏ qua bước này mà app cần restricted scopes, lệnh shopify app deploy ở bước 5 sẽ fail với lỗi thiếu permission — và error message có thể không rõ ràng lắm.


4. Lấy API Credentials và cập nhật Cloud App

Quay lại dev.shopify.com, vào phần Settings của app vừa tạo, bạn sẽ tìm thấy:

Đây là “chìa khóa” để app của bạn có thể xác thực và giao tiếp với Shopify. Hãy cập nhật các giá trị này vào biến môi trường của ứng dụng trên cloud:

# Các biến môi trường cần thiết cho Shopify App SHOPIFY_API_KEY=your_client_id_here SHOPIFY_API_SECRET=your_client_secret_here SCOPES=write_products,read_orders HOST=https://your-app.your-cloud.com

Sau đó redeploy ứng dụng để các biến mới có hiệu lực.

Tip bảo mật: Không nên lưu API Secret dưới dạng plain text trong environment variables của cloud console. Hãy sử dụng một secrets manager để quản lý. Nếu bạn dùng AWS, có thể tham khảo bài viết Hướng dẫn quản lý biến môi trường với AWS Secrets Manager cho App Runner.

Sau khi redeploy, nhớ kiểm tra lại health check để đảm bảo app vẫn hoạt động bình thường:

curl -I https://your-app.your-cloud.com/ # HTTP/2 200 ← vẫn OK

5. Đồng bộ cấu hình với Shopify CLI

Đây là bước kết nối mọi thứ lại với nhau. Lệnh shopify app deploy sẽ đọc file config trên local của bạn và đồng bộ lên Shopify — bao gồm URL của app, redirect URLs, scopes, và các cấu hình extensions.

# Deploy cấu hình cho môi trường production shopify app deploy --config production # Lệnh này sẽ đọc file shopify.app.production.toml

File shopify.app.toml chứa những gì?

Đây là file cấu hình trung tâm của Shopify App, định nghĩa mọi thông tin mà Shopify cần biết:

# shopify.app.production.toml name = "My Awesome App" client_id = "your_client_id" application_url = "https://your-app.your-cloud.com" [auth] redirect_urls = [ "https://your-app.your-cloud.com/auth/callback" ] [access_scopes] scopes = "write_products,read_orders" # Cấu hình cho các extensions (nếu có) # [extensions.pos_ui] # ...

Sau khi chạy shopify app deploy, Shopify sẽ biết chính xác app của bạn đang chạy ở đâu, cần những quyền gì, và redirect về đâu sau khi OAuth.

Quan trọng: Bước 3 (restricted scopes approval) phải hoàn tất trước khi chạy lệnh này. Nếu chưa được approve, deploy sẽ fail.


6. Cài đặt App vào Dev Store để kiểm thử

Mọi thứ đã sẵn sàng. Bây giờ hãy install app vào Development Store để kiểm tra toàn bộ flow hoạt động:

  1. Vào app trong dashboard Shopify → lấy install link
  2. Mở link trên Dev Store → hoàn tất OAuth flow
  3. App sẽ xuất hiện trong admin của Dev Store

Checklist kiểm thử

Sau khi install, hãy verify các điểm sau:

Nếu OAuth flow bị lỗi redirect, hãy kiểm tra lại redirect_urls trong file toml có khớp chính xác với URL trên cloud hay không (bao gồm cả protocol https:// và trailing path).


Tóm tắt quy trình

BướcHành độngNơi thực hiện
0Chuẩn bị PrerequisitesLocal
1Deploy app lên cloud, verify health checkCloud Provider
2Tạo logical appdev.shopify.com
3Enable restricted scopes (nếu cần)partners.shopify.com
4Lấy API credentials, cập nhật env, redeploydev.shopify.com + Cloud
5shopify app deploy --config <env>Terminal (Shopify CLI)
6Install app vào Dev Store, kiểm thửShopify Admin

Luôn nhớ mental model: Shopify quản lý danh tính, bạn quản lý hạ tầng. “Deploy Shopify App” không phải là push code lên Shopify, mà là đăng ký app của bạn với Shopify và trỏ về nơi app đang thực sự chạy.


Những lỗi thường gặp

Dưới đây là một số lỗi mà bạn có thể gặp phải trong quá trình deploy:

Health check fail

Permission errors khi chạy shopify app deploy

OAuth redirect lỗi

App hiển thị blank page sau khi install

Liên quan