🎯 Lanciare una campagna AppSumo per Gato GraphQL, con Gato GraphQL e Lemon Squeezy
Gato GraphQL viene lanciato oggi su AppSumo ! 🙌
Come requisito, il team di Gato GraphQL ha dovuto inviare 10.000 codici di riscatto ad AppSumo. Questi codici costituiscono il ponte tra AppSumo (dove l'utente paga il prodotto) e Gato GraphQL (dove l'utente scarica il plugin).
Quando l'utente arriva su gatographql.com per riscattare i codici, generiamo un corrispondente "codice di sconto del 100%" (riscattabile una sola volta e limitato a quello specifico prodotto), e facciamo "acquistare" il plugin all'utente usando il codice di sconto.
Le migliaia di codici di sconto dovevano essere creati in anticipo e archiviati presso il nostro fornitore di marketplace, Lemon Squeezy.
Lemon Squeezy consente di creare sconti tramite la sua API. Poiché Gato GraphQL dispone di un HTTP Client, abbiamo quindi eseguito una query GraphQL che si connette all'API di Lemon Squeezy e crea le migliaia di codici di sconto. (In altre parole, Gato GraphQL alimenta la propria campagna AppSumo 😆)
I 10.000 codici di riscatto per AppSumo sono stati creati eseguendo questa query GraphQL:
I corrispondenti codici di sconto sono stati creati eseguendo questa query GraphQL:
La prima query è molto semplice. La seconda è un po' più complessa. Esploriamola più nel dettaglio.
Creazione del codice di sconto
La query GraphQL utilizza il campo _generateRandomString per generare il codice di sconto sotto forma di stringa casuale, usando i caratteri ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.
Il codice viene inoltre preceduto da un namespace (tramite la variabile $codePrefix), per corrispondere a un prodotto e un livello specifici.
Ad esempio, il namespace APSMV1T1 significa:
- Campagna AppSumo
- Prodotto Variation 1
- Tier 1
A tutti i codici di sconto viene inoltre assegnato un nome descrittivo univoco, per aiutarci a ritrovarli nella dashboard di Lemon Squeezy:
Appsumo campaign #1Appsumo campaign #2Appsumo campaign #3- ...
Appsumo campaign #{recordNumber}
Quindi, cercando Appsumo campaign #, possiamo visualizzare i codici:

E cliccando su uno qualsiasi di essi, vediamo che si applica a un singolo prodotto e a una singola variazione:

Esecuzione della query più volte tramite uno script bash
La query esegue (per impostazione predefinita) 100 richieste HTTP asincrone contro l'API LemonSqueezy, con ciascuna richiesta che crea un singolo codice di sconto. Pertanto, eseguire la query produrrà 100 codici di sconto.
Non eseguiamo tutte le 10.000 richieste in una volta sola perché, a un certo punto (sicuramente con 500 chiamate), l'API LemonSqueezy produce un errore "Too many requests".
Ecco perché suddividiamo l'esecuzione della query in batch di 100 richieste e aggiungiamo un ritardo tra di essi.
Il primo passo consiste nel creare una persisted query nel nostro sito WordPress, copiare/incollare la query e pubblicarla:

Una volta pubblicata, possiamo eseguire la persisted query a piacimento all'interno di uno script bash usando curl, fornendo le variabili GraphQL come parametri all'URL della persisted query.
Questo script batch esegue la persisted query 100 volte (100 x 100 = 10.000), passando le variabili appropriate a ciascuna richiesta e attendendo 30 secondi tra una e l'altra (ecco il codice per i primi 300 codici di sconto):
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}"
# ...Raccolta di tutti i codici generati
Poiché operiamo sul nostro sito WordPress, possiamo comodamente creare un articolo per raccogliere tutti i codici di sconto appena generati.
Fornendo un parametro $postId, ogni volta che la query viene eseguita aggiungerà i nuovi 100 codici alla fine di quell'articolo.

Al termine dell'esecuzione dello script bash, l'articolo conterrà tutti i 10.000 codici.
Il compito è completato
Ho eseguito la prima query, copiato tutte le 10.000 stringhe casuali, incollate in un nuovo file codes.csv e inviato il tutto ad AppSumo.
Ho eseguito la seconda query, copiato i 10.000 codici di sconto e incollati nella logica della mia applicazione per consentire all'utente di scaricare il plugin.
Gato GraphQL è pronto per la campagna AppSumo.
Augurateci buona fortuna 🙏