Blog

🎯 Chạy chiến dịch AppSumo cho Gato GraphQL, với Gato GraphQL và Lemon Squeezy

Leonardo Losoviz
Bởi Leonardo Losoviz ·

Gato GraphQL ra mắt hôm nay trên AppSumo! 🙌

Theo yêu cầu, đội ngũ Gato GraphQL phải gửi 10.000 mã đổi thưởng cho AppSumo. Các mã này là cầu nối giữa AppSumo (nơi người dùng thanh toán cho sản phẩm) và Gato GraphQL (nơi người dùng tải plugin về).

Khi người dùng đến gatographql.com để đổi mã, chúng tôi tạo ra một "mã giảm giá 100%" tương ứng (chỉ có thể dùng một lần và chỉ áp dụng cho sản phẩm cụ thể đó), rồi để người dùng "mua" plugin bằng mã giảm giá đó.

Đổi mã Gato GraphQL bằng mã AppSumo - Mã giảm giá 100% được áp dụng tự động

Hàng nghìn mã giảm giá phải được tạo trước và lưu trữ tại nhà cung cấp marketplace của chúng tôi, Lemon Squeezy.

Lemon Squeezy cho phép tạo mã giảm giá qua API của nó. Vì Gato GraphQL có HTTP Client, chúng tôi đã thực thi một GraphQL query kết nối với API của Lemon Squeezy và tạo ra hàng nghìn mã giảm giá đó. (Nói cách khác, Gato GraphQL đang tự vận hành chiến dịch AppSumo của chính mình 😆)

10.000 mã đổi thưởng cho AppSumo được tạo ra bằng cách chạy GraphQL query này:

Các mã giảm giá tương ứng được tạo ra bằng cách chạy GraphQL query này:

Query đầu tiên khá đơn giản. Query thứ hai phức tạp hơn một chút. Hãy cùng khám phá chi tiết hơn.

Tạo mã giảm giá

GraphQL query sử dụng field _generateRandomString để tạo mã giảm giá dưới dạng chuỗi ngẫu nhiên, sử dụng các ký tự ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.

Mã còn được thêm tiền tố namespace (thông qua biến $codePrefix), để khớp với sản phẩm và bậc cụ thể.

Chẳng hạn, namespace APSMV1T1 có nghĩa là:

  • Chiến dịch AppSumo
  • Sản phẩm Variation 1
  • Tier 1

Tất cả mã giảm giá cũng được đặt một tên mô tả duy nhất, giúp chúng tôi tìm thấy chúng trong dashboard của Lemon Squeezy:

  • Appsumo campaign #1
  • Appsumo campaign #2
  • Appsumo campaign #3
  • ...
  • Appsumo campaign #{recordNumber}

Sau đó, tìm kiếm Appsumo campaign #, chúng tôi có thể xem các mã:

Các mã giảm giá đã được tạo trong Lemon Squeezy
Các mã giảm giá đã được tạo trong Lemon Squeezy

Và khi nhấp vào bất kỳ mã nào, chúng tôi thấy rằng mã áp dụng cho một sản phẩm và biến thể duy nhất:

Mã giảm giá trong Lemon Squeezy
Mã giảm giá trong Lemon Squeezy

Thực thi query nhiều lần qua một bash script

Query thực thi (mặc định) 100 yêu cầu HTTP bất đồng bộ tới API LemonSqueezy, mỗi yêu cầu tạo một mã giảm giá duy nhất. Do đó, chạy query sẽ tạo ra 100 mã giảm giá.

Chúng tôi không thực thi tất cả 10.000 yêu cầu cùng một lúc vì tại một thời điểm nào đó (chắc chắn là với 500 lần gọi), API LemonSqueezy sẽ trả về lỗi "Too many requests".

Đó là lý do chúng tôi chia việc thực thi query thành các batch gồm 100 yêu cầu và thêm khoảng dừng giữa các batch.

Bước đầu tiên là tạo một persisted query trên trang WordPress của chúng tôi, sao chép/dán query vào và xuất bản:

Persisted query
Persisted query

Sau khi xuất bản, chúng tôi có thể thực thi persisted query tùy ý trong một bash script bằng cách dùng curl, cung cấp các biến GraphQL dưới dạng tham số cho URL của persisted query.

Batch script này thực thi persisted query 100 lần (100 x 100 = 10.000), truyền các biến thích hợp cho mỗi yêu cầu và chờ 30 giây giữa các lần (đây là code cho 300 mã giảm giá đầu tiên):

curl --user "{username}:{applicationPassword}" "https://my-wp-site.com/graphql-query/create-redemption-codes-for-appsumo-in-lemonsqueezy/?codePrefix=APSMV1T1&storeID={storeId}&variantIDs[]={productVariantId}&lemonSqueezyAccessToken={accessToken}&postId={postId}"
sleep 30
curl --user "{username}:{applicationPassword}" "https://my-wp-site.com/graphql-query/create-redemption-codes-for-appsumo-in-lemonsqueezy/?firstRecordNumber=101&codePrefix=APSMV1T1&storeID={storeId}&variantIDs[]={productVariantId}&lemonSqueezyAccessToken={accessToken}&postId={postId}"
sleep 30
curl --user "{username}:{applicationPassword}" "https://my-wp-site.com/graphql-query/create-redemption-codes-for-appsumo-in-lemonsqueezy/?firstRecordNumber=201&codePrefix=APSMV1T1&storeID={storeId}&variantIDs[]={productVariantId}&lemonSqueezyAccessToken={accessToken}&postId={postId}"
# ...

Thu thập tất cả các mã đã tạo

Vì chúng tôi đang vận hành trên trang WordPress của mình, chúng tôi có thể tiện lợi tạo một bài viết để thu thập tất cả các mã giảm giá vừa được tạo.

Cung cấp tham số $postId, mỗi lần query được thực thi, nó sẽ thêm 100 mã mới vào cuối bài viết đó.

Thu thập các mã đổi thưởng
Thu thập các mã đổi thưởng

Sau khi bash script hoàn tất, bài viết sẽ chứa toàn bộ 10.000 mã.

Nhiệm vụ hoàn thành

Tôi chạy query đầu tiên, sao chép toàn bộ 10.000 chuỗi ngẫu nhiên, dán vào file codes.csv mới và gửi cho AppSumo.

Tôi chạy query thứ hai, sao chép 10.000 mã giảm giá và dán chúng vào logic của ứng dụng để cho phép người dùng tải plugin về.

Gato GraphQL đã sẵn sàng cho chiến dịch AppSumo.

Chúc chúng tôi may mắn 🙏


Đăng ký nhận bản tin của chúng tôi

Cập nhật tất cả những điều mới từ Gato GraphQL.