🎯 การรันแคมเปญ AppSumo สำหรับ Gato GraphQL ด้วย Gato GraphQL และ Lemon Squeezy
Gato GraphQL เปิดตัววันนี้บน AppSumo! 🙌
ในฐานะข้อกำหนด ทีม Gato GraphQL ต้องส่งโค้ดแลกรับ 10,000 รหัสให้กับ AppSumo โค้ดเหล่านี้เป็นสะพานเชื่อมระหว่าง AppSumo (ที่ผู้ใช้ชำระเงินสำหรับผลิตภัณฑ์) กับ Gato GraphQL (ที่ผู้ใช้ดาวน์โหลดปลั๊กอิน)
เมื่อผู้ใช้มายัง gatographql.com เพื่อแลกโค้ด เราจะสร้าง "โค้ดส่วนลด 100%" ที่สอดคล้องกัน (ใช้ได้เพียงครั้งเดียว และจำกัดเฉพาะผลิตภัณฑ์นั้น ๆ) และให้ผู้ใช้ "ซื้อ" ปลั๊กอินโดยใช้โค้ดส่วนลดนั้น
โค้ดส่วนลดหลายพันรหัสต้องถูกสร้างไว้ล่วงหน้าและจัดเก็บไว้กับผู้ให้บริการ marketplace ของเรา คือ Lemon Squeezy
Lemon Squeezy รองรับการสร้างส่วนลดผ่าน API ของตน เนื่องจาก Gato GraphQL มี HTTP Client เราจึงได้รัน GraphQL query ที่เชื่อมต่อกับ Lemon Squeezy API และสร้างโค้ดส่วนลดหลายพันรหัส (กล่าวคือ Gato GraphQL กำลังขับเคลื่อนแคมเปญ AppSumo ของตัวเอง 😆)
โค้ดแลกรับ 10,000 รหัสสำหรับ AppSumo ถูกสร้างขึ้นโดยการรัน GraphQL query นี้:
โค้ดส่วนลดที่สอดคล้องกันถูกสร้างขึ้นโดยการรัน GraphQL query นี้:
query แรกนั้นเรียบง่ายมาก ส่วน query ที่สองซับซ้อนกว่าเล็กน้อย มาดูรายละเอียดกัน
การสร้างโค้ดส่วนลด
GraphQL query ใช้ field _generateRandomString เพื่อสร้างโค้ดส่วนลดเป็นสตริงสุ่ม โดยใช้อักขระ ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
โค้ดยังถูกนำหน้าด้วย namespace (ผ่านตัวแปร $codePrefix) เพื่อให้สอดคล้องกับผลิตภัณฑ์และระดับที่กำหนด
ตัวอย่างเช่น namespace APSMV1T1 หมายถึง:
- แคมเปญ AppSumo
- ผลิตภัณฑ์ Variation 1
- Tier 1
โค้ดส่วนลดทั้งหมดยังได้รับชื่อที่สื่อความหมายที่ไม่ซ้ำกัน เพื่อช่วยให้เราค้นหาได้ใน Lemon Squeezy dashboard:
Appsumo campaign #1Appsumo campaign #2Appsumo campaign #3- ...
Appsumo campaign #{recordNumber}
จากนั้น เมื่อค้นหา Appsumo campaign # เราสามารถดูโค้ดทั้งหมดได้:

และเมื่อคลิกที่โค้ดใดโค้ดหนึ่ง เราจะเห็นว่ามันใช้ได้กับผลิตภัณฑ์และ variation เดียวเท่านั้น:

การรัน query หลายครั้งผ่าน bash script
query นี้รัน (โดยค่าเริ่มต้น) HTTP request แบบ async 100 รายการไปยัง LemonSqueezy API โดยแต่ละ request สร้างโค้ดส่วนลดหนึ่งรหัส ดังนั้นการรัน query จะสร้างโค้ดส่วนลด 100 รหัส
เราไม่รัน request ทั้ง 10,000 รายการพร้อมกันในครั้งเดียว เพราะในบางจุด (แน่นอนว่าเมื่อมี 500 การเรียก) LemonSqueezy API จะส่งข้อผิดพลาด "Too many requests"
นั่นคือเหตุผลที่เราแบ่งการรัน query ออกเป็นชุด 100 request และเพิ่มการหน่วงเวลาระหว่างแต่ละชุด
ขั้นตอนแรกคือการสร้าง persisted query ในเว็บไซต์ WordPress ของเรา คัดลอก/วาง query และเผยแพร่:

เมื่อเผยแพร่แล้ว เราสามารถรัน persisted query ได้ตามต้องการภายใน bash script โดยใช้ curl และส่ง GraphQL variables เป็นพารามิเตอร์ให้กับ URL ของ persisted query
batch script นี้รัน persisted query 100 ครั้ง (100 x 100 = 10,000) โดยส่งตัวแปรที่เหมาะสมให้แต่ละ request และรอ 30 วินาทีระหว่างแต่ละครั้ง (นี่คือโค้ดสำหรับโค้ดส่วนลด 300 รหัสแรก):
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}"
# ...การรวบรวมโค้ดทั้งหมดที่สร้างขึ้น
เนื่องจากเราทำงานบนเว็บไซต์ WordPress ของเรา เราสามารถสร้าง post เพื่อรวบรวมโค้ดส่วนลดที่สร้างขึ้นใหม่ทั้งหมดได้อย่างสะดวก
เมื่อระบุพารามิเตอร์ $postId ทุกครั้งที่รัน query มันจะต่อท้ายโค้ด 100 รหัสใหม่ที่ท้าย post นั้น

เมื่อรัน bash script เสร็จสิ้น post จะมีโค้ดทั้งหมด 10,000 รหัส
งานเสร็จสมบูรณ์แล้ว
ฉันรัน query แรก คัดลอกสตริงสุ่ม 10,000 รายการทั้งหมด วางลงในไฟล์ codes.csv ใหม่ และส่งให้ AppSumo
ฉันรัน query ที่สอง คัดลอกโค้ดส่วนลด 10,000 รหัส และวางลงในลอจิกของแอปพลิเคชันเพื่อให้ผู้ใช้ดาวน์โหลดปลั๊กอินได้
Gato GraphQL พร้อมสำหรับแคมเปญ AppSumo แล้ว
ขอให้โชคดีกับเรา 🙏