Blog

🎯 Eine AppSumo-Kampagne für Gato GraphQL durchführen, mit Gato GraphQL und Lemon Squeezy

Leonardo Losoviz
Von Leonardo Losoviz ·

Gato GraphQL startet heute auf AppSumo! 🙌

Als Voraussetzung musste das Gato GraphQL-Team 10.000 Einlösecodes an AppSumo senden. Diese Codes bilden die Brücke zwischen AppSumo (wo der Nutzer das Produkt kauft) und Gato GraphQL (wo der Nutzer das Plugin herunterlädt).

Wenn der Nutzer auf gatographql.com kommt, um die Codes einzulösen, erstellen wir einen entsprechenden „100%-Rabattcode" (nur einmal einlösbar und auf das jeweilige Produkt beschränkt) und lassen den Nutzer das Plugin mit dem Rabattcode „kaufen".

Gato GraphQL mit dem AppSumo-Code einlösen – Der 100%-Rabattcode wird automatisch angewendet

Die Tausenden von Rabattcodes mussten im Voraus erstellt und bei unserem Marketplace-Anbieter Lemon Squeezy gespeichert werden.

Lemon Squeezy ermöglicht die Erstellung von Rabatten über seine API. Da Gato GraphQL einen HTTP-Client besitzt, haben wir eine GraphQL-Query ausgeführt, die sich mit der Lemon Squeezy-API verbindet und die Tausenden von Rabattcodes erstellt. (Mit anderen Worten: Gato GraphQL treibt seine eigene AppSumo-Kampagne an 😆)

Die 10.000 Einlösecodes für AppSumo wurden durch Ausführen dieser GraphQL-Query erstellt:

Die entsprechenden Rabattcodes wurden durch Ausführen dieser GraphQL-Query erstellt:

Die erste Query ist sehr einfach. Die zweite ist etwas komplexer. Lass uns sie genauer betrachten.

Den Rabattcode erstellen

Die GraphQL-Query verwendet das Feld _generateRandomString, um den Rabattcode als zufällige Zeichenkette zu generieren, mit den Zeichen ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.

Dem Code wird außerdem ein Namespace vorangestellt (über die Variable $codePrefix), um einem bestimmten Produkt und einer bestimmten Stufe zu entsprechen.

Der Namespace APSMV1T1 bedeutet beispielsweise:

  • AppSumo-Kampagne
  • Produkt Variation 1
  • Tier 1

Allen Rabattcodes wird außerdem ein eindeutiger beschreibender Name gegeben, damit wir sie im Lemon Squeezy-Dashboard leicht finden können:

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

Wenn wir dann nach Appsumo campaign # suchen, können wir die Codes anzeigen:

Generierte Rabattcodes in Lemon Squeezy
Generierte Rabattcodes in Lemon Squeezy

Und wenn wir auf einen davon klicken, sehen wir, dass er für ein einzelnes Produkt und eine einzelne Variation gilt:

Rabattcode in Lemon Squeezy
Rabattcode in Lemon Squeezy

Die Query mehrfach über ein Bash-Skript ausführen

Die Query führt (standardmäßig) 100 asynchrone HTTP-Anfragen gegen die LemonSqueezy-API aus, wobei jede Anfrage einen einzelnen Rabattcode erstellt. Das Ausführen der Query erzeugt also 100 Rabattcodes.

Wir führen nicht alle 10.000 Anfragen auf einmal aus, weil die LemonSqueezy-API ab einem bestimmten Punkt (sicher bei 500 Aufrufen) einen „Too many requests"-Fehler produziert.

Deshalb teilen wir die Ausführung der Query in Batches von 100 Anfragen auf und fügen dazwischen eine Verzögerung ein.

Der erste Schritt besteht darin, eine persisted query auf unserer WordPress-Website zu erstellen, die Query einzufügen und zu veröffentlichen:

Persisted query
Persisted query

Nach der Veröffentlichung können wir die persisted query jederzeit in einem Bash-Skript mit curl ausführen und dabei die GraphQL-Variablen als Parameter an die URL der persisted query übergeben.

Dieses Batch-Skript führt die persisted query 100 Mal aus (100 x 100 = 10.000), übergibt die passenden Variablen an jede Anfrage und wartet 30 Sekunden dazwischen (hier der Code für die ersten 300 Rabattcodes):

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

Alle generierten Codes sammeln

Da wir auf unserer WordPress-Website arbeiten, können wir bequem einen Beitrag erstellen, um alle neu generierten Rabattcodes zu sammeln.

Durch Angabe eines $postId-Parameters fügt die Query bei jeder Ausführung die neuen 100 Codes am Ende dieses Beitrags an.

Einlösecodes sammeln
Einlösecodes sammeln

Am Ende der Ausführung des Bash-Skripts enthält der Beitrag alle 10.000 Codes.

Die Aufgabe ist erledigt

Ich habe die erste Query ausgeführt, alle 10.000 zufälligen Zeichenketten kopiert, in eine neue Datei codes.csv eingefügt und an AppSumo gesendet.

Ich habe die zweite Query ausgeführt, die 10.000 Rabattcodes kopiert und sie in die Logik meiner Anwendung eingefügt, damit der Nutzer das Plugin herunterladen kann.

Gato GraphQL ist bereit für die AppSumo-Kampagne.

Wünscht uns viel Glück 🙏


Abonniere unseren Newsletter

Bleib über alle Updates zu Gato GraphQL auf dem Laufenden.