Blog

๐ŸŽฏ Menjalankan kampanye AppSumo untuk Gato GraphQL, dengan Gato GraphQL dan Lemon Squeezy

Leonardo Losoviz
Oleh Leonardo Losoviz ยท

Gato GraphQL diluncurkan hari ini di AppSumo! ๐Ÿ™Œ

Sebagai persyaratan, tim Gato GraphQL harus mengirimkan 10.000 kode penukaran ke AppSumo. Kode-kode ini adalah jembatan antara AppSumo (tempat pengguna membayar produk) dan Gato GraphQL (tempat pengguna mengunduh plugin).

Ketika pengguna datang ke gatographql.com untuk menukarkan kode, kami menghasilkan "kode diskon 100%" yang sesuai (hanya dapat ditukarkan sekali, dan dibatasi untuk produk tertentu tersebut), dan membuat pengguna "membeli" plugin menggunakan kode diskon tersebut.

Menukarkan Gato GraphQL dengan kode AppSumo - Kode diskon 100% diterapkan secara otomatis

Ribuan kode diskon harus dibuat terlebih dahulu, dan disimpan di penyedia marketplace kami, Lemon Squeezy.

Lemon Squeezy memungkinkan pembuatan diskon melalui API-nya. Karena Gato GraphQL memiliki HTTP Client, kami kemudian menjalankan sebuah GraphQL query yang terhubung ke API Lemon Squeezy dan membuat ribuan kode diskon. (Dengan kata lain, Gato GraphQL mendukung kampanye AppSumo-nya sendiri ๐Ÿ˜†)

10.000 kode penukaran untuk AppSumo dibuat dengan menjalankan GraphQL query ini:

Kode diskon yang sesuai dibuat dengan menjalankan GraphQL query ini:

Query pertama sangat sederhana. Query kedua sedikit lebih kompleks. Mari kita jelajahi lebih detail.

Membuat kode diskon

GraphQL query menggunakan field _generateRandomString untuk menghasilkan kode diskon sebagai string acak, menggunakan karakter ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.

Kode tersebut juga diberi awalan namespace (melalui variabel $codePrefix), untuk mencocokkan produk dan tier tertentu.

Misalnya, namespace APSMV1T1 berarti:

  • Kampanye AppSumo
  • Produk Variation 1
  • Tier 1

Semua kode diskon juga diberi nama deskriptif yang unik, untuk membantu kami menemukannya di dashboard Lemon Squeezy:

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

Kemudian, dengan mencari Appsumo campaign #, kita dapat memvisualisasikan kode-kodenya:

Kode diskon yang dihasilkan di Lemon Squeezy
Kode diskon yang dihasilkan di Lemon Squeezy

Dan dengan mengklik salah satunya, kita melihat bahwa kode tersebut berlaku untuk satu produk dan variasi:

Kode diskon di Lemon Squeezy
Kode diskon di Lemon Squeezy

Menjalankan query beberapa kali melalui bash script

Query ini menjalankan (secara default) 100 HTTP request asinkron terhadap API LemonSqueezy, dengan setiap request membuat satu kode diskon. Dengan demikian, menjalankan query akan menghasilkan 100 kode diskon.

Kami tidak menjalankan semua 10.000 request sekaligus karena, pada suatu titik (pasti dengan 500 panggilan), API LemonSqueezy menghasilkan error "Too many requests".

Itulah mengapa kami membagi eksekusi query menjadi batch 100 request, dan menambahkan jeda di antaranya.

Langkah pertama adalah membuat persisted query di situs WordPress kami, menyalin/menempel query tersebut, dan mempublikasikannya:

Persisted query
Persisted query

Setelah dipublikasikan, kita dapat menjalankan persisted query kapan saja dalam bash script menggunakan curl, dengan menyediakan variabel GraphQL sebagai parameter ke URL persisted query.

Batch script ini menjalankan persisted query 100 kali (100 x 100 = 10.000), memberikan variabel yang sesuai ke setiap request, dan menunggu 30 detik di antaranya (berikut adalah kode untuk 300 kode diskon pertama):

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}"
# ...

Mengumpulkan semua kode yang dihasilkan

Karena kami beroperasi di situs WordPress kami, kami dapat dengan mudah membuat sebuah post untuk mengumpulkan semua kode diskon yang baru dihasilkan.

Dengan menyediakan parameter $postId, setiap kali query dijalankan, 100 kode baru akan ditambahkan di akhir post tersebut.

Mengumpulkan kode penukaran
Mengumpulkan kode penukaran

Di akhir eksekusi bash script, post tersebut akan berisi semua 10.000 kode.

Tugas selesai

Saya menjalankan query pertama, menyalin semua 10.000 string acak, menempelkannya dalam file codes.csv baru, dan mengirimkannya ke AppSumo.

Saya menjalankan query kedua, menyalin 10.000 kode diskon, dan menempelkannya dalam logika aplikasi saya agar pengguna dapat mengunduh plugin.

Gato GraphQL siap untuk kampanye AppSumo.

Doakan kami berhasil ๐Ÿ™


Berlangganan newsletter kami

Tetap update dengan semua pembaruan Gato GraphQL.