Next-Cart

Từ bốn cửa hàng Shopify đến một hệ thống WooCommerce hợp nhất: Next-Cart đã giúp Behemoth Webstore xây dựng hạ tầng toàn cầu như thế nào

Với Maciej Gruszka, CEO kiêm chủ sở hữu Behemoth Webstore, đây không phải lần đầu anh thực hiện dự án di chuyển cùng Next-Cart. Trong nhiều năm, anh đã tin tưởng đội ngũ chuyển các cửa hàng đa quốc gia của mình sang BigCommerce và PrestaShop.

Shopify
WooCommerce

Khi một doanh nghiệp hoạt động tại nhiều quốc gia, cấu trúc dữ liệu đóng vai trò đặc biệt quan trọng.

Với Maciej Gruszka, CEO kiêm chủ sở hữu Behemoth Webstore, đây không phải lần đầu anh thực hiện dự án di chuyển cùng Next-Cart. Trong nhiều năm, anh đã tin tưởng đội ngũ chuyển các cửa hàng đa quốc gia của mình sang BigCommerce và PrestaShop.

Nhưng khi doanh nghiệp phát triển, kỳ vọng của Maciej cũng thay đổi.

Lần này, Maciej muốn hợp nhất hệ thống và nâng cấp hạ tầng cho dài hạn. Nền tảng đích là WooCommerce, được tích hợp với WordPress. Sự kết hợp này đủ linh hoạt để hỗ trợ cả hoạt động thương mại nâng cao lẫn quản lý nội dung, đúng với điều Maciej đang tìm kiếm.

Tuy nhiên, Maciej cần nhiều hơn một lần chuyển dữ liệu đơn thuần. Mục tiêu là hợp nhất bốn cửa hàng Shopify độc lập, mỗi cửa hàng phục vụ một thị trường tiền tệ khác nhau, vào một hệ sinh thái WooCommerce duy nhất mà không làm đứt gãy quan hệ sản phẩm, lịch sử khách hàng hay tính toàn vẹn của đơn hàng.

Đây là một trong những dự án di chuyển có nhiều lớp kỹ thuật nhất mà Next-Cart xử lý trong giai đoạn đó.

Thách thức của dự án: Hợp nhất bốn cửa hàng Shopify vào một môi trường WooCommerce

Maciej vận hành bốn cửa hàng Shopify: một cửa hàng chính và ba cửa hàng bổ sung phục vụ các thị trường USD, EUR và GBP.

Giai đoạn đầu tập trung chuyển cửa hàng Shopify chính, gồm 125 danh mục, 388 sản phẩm, 5.898 khách hàng và 11.537 đơn hàng.

Độ phức tạp thực sự xuất hiện ở giai đoạn tiếp theo khi Maciej đặt câu hỏi: Nếu ba cửa hàng Shopify còn lại dùng chung một bộ sản phẩm, cùng SKU và barcode, liệu các đơn hàng được nhập vào có nhận diện đúng những sản phẩm đã chuyển trước đó và liên kết chính xác trong WooCommerce không?

Đây không phải một dự án di chuyển tiêu chuẩn. Thực chất, đó là quá trình hợp nhất theo từng giai đoạn với nhiều cửa hàng nguồn. Mỗi cửa hàng Shopify có tệp khách hàng và lịch sử đơn hàng riêng, trong khi sản phẩm lại giống nhau. Bài toán là làm sao tránh dữ liệu trùng lặp mà vẫn hợp nhất được mọi quan hệ.

Cụ thể, khách hàng cần:

  • Đơn hàng được đối sánh với sản phẩm hiện có bằng SKU

  • Khách hàng được hợp nhất theo email nếu tài khoản đã tồn tại

  • Toàn bộ dữ liệu lịch sử được bảo toàn và liên kết đúng

  • Không tạo sản phẩm trùng lặp

  • Không phân mảnh hồ sơ khách hàng

Trong trường hợp này, logic di chuyển cần được tùy chỉnh cẩn thận để có thể nhận diện dữ liệu xuyên suốt giữa nhiều cửa hàng.

Trở ngại đầu tiên: Khách hàng đã được nhập nhưng không hiển thị

Sau lần di chuyển đầu tiên, Maciej nhận thấy khách hàng đã được nhập thành công vào WordPress trong mục “Users”, nhưng lại không xuất hiện trong “WooCommerce Customers”.

Thoạt nhìn, đây có vẻ là lỗi di chuyển. Tuy nhiên, khi điều tra sâu hơn, đội ngũ Next-Cart phát hiện nguyên nhân thực tế nằm ở một plugin đa tiền tệ trên WooCommerce, plugin này đã ghi đè cách WooCommerce mặc định hiển thị khách hàng.

Plugin được cấu hình chỉ hiển thị những khách hàng có ít nhất một đơn hàng bằng PLN, trong khi ngôn ngữ và tiền tệ của cửa hàng được đặt là tiếng Ba Lan và PLN.

Trong tình huống này, dữ liệu thực tế vẫn tồn tại trong hệ thống, nhưng không được hiển thị do các quy tắc lọc.

Next-Cart sau đó điều chỉnh cấu hình di chuyển để đáp ứng các điều kiện này:

  • Đơn hàng được gán đúng loại tiền tệ

  • Ánh xạ ngôn ngữ được điều chỉnh phù hợp với logic của plugin

  • Các lần nhập dữ liệu sau từ cửa hàng USD, EUR và GBP có thể hoạt động đúng khi tiền tệ được xác định

Vấn đề nằm ở logic của môi trường WooCommerce chứ không phải dữ liệu. Để xử lý, đội ngũ cần hiểu cách WooCommerce vận hành ở cấp hệ thống.

Ánh xạ dữ liệu sản phẩm: Chuyển logic Shopify sang WooCommerce

Yêu cầu tiếp theo của Maciej về ánh xạ trường dữ liệu chính xác vượt xa việc chuyển các thực thể cơ bản. Anh muốn một số custom fields trên Shopify được chuyển sang các thuộc tính tương ứng trong WooCommerce:

  • Country/Region of Origin → Thuộc tính sản phẩm

  • HS Code → Thuộc tính sản phẩm

  • Barcode → Trường EAN của WooCommerce

  • Brand → Thuộc tính

  • GTIN → Thuộc tính

Đồng thời, anh không muốn nhập một số trường như Reviews, Size, Table Size, UPC và MPN. Việc loại trừ có chọn lọc này giúp tránh đưa dữ liệu không cần thiết vào môi trường WooCommerce mới.

Vì vậy, công cụ di chuyển cần được tùy chỉnh không chỉ để ánh xạ custom fields vào đúng thuộc tính WooCommerce mà còn để loại bỏ những thành phần không cần thiết.

Tùy chỉnh ở cấp trường thường bị đánh giá thấp trong các dự án di chuyển tiêu chuẩn. Nhưng với một dự án hợp nhất nhiều cửa hàng, tính nhất quán của thuộc tính trở nên rất quan trọng, đặc biệt khi bộ lọc, quy tắc thuế và yêu cầu vận chuyển trong tương lai phụ thuộc vào metadata chính xác như HS Code hay Country of Origin.

Các developer của Next-Cart đã điều chỉnh logic di chuyển để dữ liệu sản phẩm trong WooCommerce được sạch và chuẩn hóa.

Thách thức cốt lõi: Liên kết đơn hàng với sản phẩm WooCommerce hiện có bằng SKU

Phần nhạy cảm nhất của dự án là đảm bảo đơn hàng từ cả bốn cửa hàng được liên kết chính xác với sản phẩm tương ứng.

Ba cửa hàng USD, EUR và GBP chứa cùng một bộ sản phẩm. Nếu nhập trực tiếp vào một cửa hàng WooCommerce duy nhất mà không có xử lý riêng, hệ thống có thể tạo sản phẩm trùng lặp. Quan trọng hơn, các dòng sản phẩm trong đơn hàng có thể không liên kết đúng với sản phẩm tương ứng.

Để tránh điều này, công cụ di chuyển được tùy chỉnh với cơ chế đối sánh sản phẩm nghiêm ngặt theo SKU. Hệ thống dùng SKU làm khóa duy nhất để nhận diện sản phẩm đã tồn tại trong WooCommerce, sau đó liên kết đơn hàng từ tất cả cửa hàng với các sản phẩm đã đối sánh.

Dữ liệu khách hàng cũng được xử lý theo nguyên tắc tương tự. Nếu một đơn hàng tham chiếu đến email khách hàng đã tồn tại trong WooCommerce, hệ thống sẽ hợp nhất bản ghi thay vì tạo tài khoản trùng. Nhờ đó, lịch sử mua hàng vẫn liền mạch ngay cả khi khách hàng từng mua bằng nhiều loại tiền tệ khác nhau.

Ở đây, quá trình di chuyển đóng vai trò như một cơ chế hợp nhất, đưa cơ sở dữ liệu phân tán về một cấu trúc thống nhất.

Điều chỉnh barcode theo từng variant

Trong Shopify, mỗi variant sản phẩm có một barcode riêng. Tuy nhiên, sau khi di chuyển, các variant trong WooCommerce lại hiển thị cùng một giá trị EAN.

Với doanh nghiệp sử dụng barcode cho fulfillment hoặc tích hợp marketplace, sai lệch này có thể dẫn đến lỗi vận hành.

Đội ngũ tiếp tục tùy chỉnh lại logic di chuyển để khắc phục. Barcode của từng variant Shopify được ánh xạ chính xác vào EAN của variant tương ứng trong WooCommerce, giúp hệ thống tồn kho, quy trình quét mã và các tích hợp bên ngoài tiếp tục hoạt động đúng sau khi hợp nhất.

Newsletter và Mailchimp: Hiểu đúng ranh giới giữa các hệ thống

Maciej cũng muốn chuyển dữ liệu đăng ký newsletter.

Nếu một khách hàng Shopify đã đăng ký nhận email, trạng thái đó cũng cần được đánh dấu tương ứng trong WooCommerce.

Sau khi kiểm tra, developer phát hiện plugin tích hợp Mailchimp lưu trạng thái đăng ký trong hệ thống Mailchimp chứ không phải trong cơ sở dữ liệu WooCommerce.

Quá trình di chuyển đã điền đúng các trường meta đăng ký trong WordPress. Tuy nhiên, plugin chỉ đồng bộ khi người dùng được cập nhật thủ công, vì vậy checkbox trong WooCommerce không tự được đánh dấu.

Đây là một giới hạn về kiến trúc API.

Công cụ di chuyển không thể buộc một hệ thống bên ngoài thay đổi trạng thái đăng ký nếu không kích hoạt cơ chế đồng bộ riêng của hệ thống đó. Next-Cart đã trao đổi rõ giới hạn này với khách hàng.

Hạ tầng hosting không ổn định: Một lớp phức tạp ngoài dự kiến

Một phần khó khác của dự án đến từ việc chuyển đổi hosting.

Trong quá trình di chuyển, Maciej thay đổi nhà cung cấp hosting nhiều lần giữa Hostinger, Kinsta, SiteGround và Cloudways. Mỗi lần thay đổi đều yêu cầu kết nối lại migration bridge, cấu hình lại thông tin FTP, whitelist địa chỉ IP, kiểm tra quyền truy cập cơ sở dữ liệu và xóa cache máy chủ.

Có thời điểm, quyền truy cập từ một số khu vực bị hạn chế. Ngoài ra, các lớp cache còn gây ra việc thực thi trùng khi công cụ được mở và chạy trên nhiều tab trình duyệt.

Đây không phải lỗi dữ liệu mà là các biến số của môi trường, vì vậy cần một quy trình xử lý sự cố có hệ thống.

Đội ngũ di chuyển liên tục thích ứng với từng cấu hình hosting để đảm bảo môi trường ổn định trước khi tiếp tục nhập dữ liệu.

WPML: Thay đổi chiến lược giữa quá trình di chuyển

Trong quá trình di chuyển, Maciej quyết định gỡ WPML khỏi môi trường WooCommerce.

Nếu thực hiện không đúng cách khi dự án đang chạy, thay đổi này có thể tạo ra bản ghi mồ côi hoặc khiến sản phẩm hiển thị không nhất quán. Metadata bản dịch trong các bảng phụ cũng có thể gây xung đột khi plugin bị vô hiệu hóa.

Để tránh các rủi ro đó, cấu hình di chuyển được thiết kế lại trước khi tiếp tục nhập thêm các cửa hàng còn lại.

  • Logic thêm sản phẩm được đơn giản hóa về cấu trúc WooCommerce tiêu chuẩn và bỏ qua nhiều hook không còn cần thiết

  • Ánh xạ taxonomy được rà soát để đảm bảo thuộc tính và danh mục luôn ổn định

  • Khách hàng và đơn hàng được kiểm tra để đảm bảo không còn tham chiếu đến metadata theo ngôn ngữ

Thay đổi giữa quá trình này cần được thực hiện theo đúng trình tự. Đội ngũ xử lý như một bước chuyển có kiểm soát thay vì chỉ đơn giản tắt plugin.

Khi dự án kết thúc, cửa hàng WooCommerce hoạt động ổn định mà không cần WPML. Sản phẩm được tổ chức bằng một ngôn ngữ duy nhất và không còn các lớp dữ liệu bản dịch phức tạp.

Kết quả cuối cùng: Một hệ sinh thái WooCommerce được hợp nhất hoàn toàn

Sau nhiều vòng tùy chỉnh, kết quả cuối cùng là một hệ thống WooCommerce được hợp nhất hoàn chỉnh:

  • Danh mục và sản phẩm được tổ chức sạch, nhất quán

  • Hơn 11.500 đơn hàng từ cửa hàng chính được bảo toàn

  • Hơn 10.000 đơn hàng bổ sung từ ba cửa hàng tiền tệ được đối sánh bằng SKU

  • Khách hàng được hợp nhất thông minh

  • Giá trị EAN của từng variant hiển thị chính xác trong WooCommerce

  • WPML được gỡ bỏ mà không ảnh hưởng đến hoạt động của cửa hàng

  • Không tạo sản phẩm trùng lặp

Từ bốn cửa hàng Shopify riêng biệt hoạt động với nhiều loại tiền tệ, Behemoth Webstore đã chuyển thành một website WooCommerce tập trung với dữ liệu được hợp nhất.

Kết luận: Bài học về độ phức tạp kỹ thuật của một dự án di chuyển

Dự án này cho thấy di chuyển eCommerce không chỉ là chuyển dữ liệu từ nền tảng này sang nền tảng khác. Nó còn đòi hỏi chuyển đổi kiến trúc, dung hòa cách các hệ thống vận hành, tùy chỉnh logic ánh xạ và bảo toàn các mối quan hệ lịch sử.

Với doanh nghiệp có nhiều cửa hàng vận hành bằng các loại tiền tệ khác nhau như Behemoth Webstore, dự án cần được lên kế hoạch cẩn thận và có đủ linh hoạt về kỹ thuật. Trong suốt quá trình, các yếu tố như đối sánh SKU, hợp nhất khách hàng, độ chính xác ở cấp variant, khả năng tương thích plugin và độ ổn định của hosting đều cần được xử lý.

Tất cả những yếu tố đó đều góp phần tạo nên kết quả cuối cùng, và Maciej sau đó chia sẻ:

“Đội ngũ và công cụ này thật tuyệt vời. Họ đã chuyển toàn bộ dữ liệu của tôi từ Shopify, gồm khách hàng, đơn hàng, sản phẩm và nhiều dữ liệu khác, cùng một số thay đổi tùy chỉnh sang WooCommerce. Trước đó, họ cũng đã giúp tôi chuyển sang BigCommerce và PrestaShop. Tôi có cảm giác không có nhiệm vụ nào là bất khả thi với họ. Việc trao đổi và hỗ trợ rất nhanh, ngay cả trong ngày nghỉ. Họ thật sự tuyệt vời!”

Case study này cho thấy tùy chỉnh có cấu trúc và hiểu biết ở cấp hệ thống quan trọng như thế nào. Chính những yếu tố đó đã biến một dự án nhiều giai đoạn thành một cửa hàng eCommerce hợp nhất và có khả năng mở rộng.

before

Điểm nổi bật về hiệu suất di chuyển

0
%
Độ chính xác của dữ liệu
0
+
Số bản ghi đã di chuyển
banner
banner
Lập kế hoạch di chuyển dữ liệu tương tự?
Mỗi dự án di chuyển dữ liệu đều có thách thức riêng. Hãy cùng thảo luận cách xây dựng lộ trình di chuyển an toàn và hiệu quả cho doanh nghiệp của bạn.