Libreria di queries
Libreria di queriesCreare migliaia di codici sconto per AppSumo in FluentCart

Creare migliaia di codici sconto per AppSumo in FluentCart

Questa query si connette all'API REST di FluentCart e crea cento codici sconto al 100% in una sola volta.

Esegui questa query più volte per creare i 10.000 codici necessari al lancio di una campagna AppSumo.

Devi fornire:

  • Il nome utente e la password dell'applicazione per connettersi all'API REST di FluentCart, tramite le variabili $wpUsername e $wpApplicationPassword
  • Il dominio del negozio FluentCart, tramite la variabile $fluentCartDomain
  • La/le variante/i di prodotto da riscattare con quel codice, tramite la variabile $productVariationIDs

Il codice sconto generato sarà una stringa casuale. Puoi aggiungere un prefisso al codice (tramite la variabile $codePrefix), indicare la lunghezza del codice (tramite la variabile $codeLength) e personalizzare il nome del codice sconto (tramite le variabili $discountNamePrefix e $firstRecordNumber) per trovarlo nella dashboard di FluentCart.

Raccogli tutti i codici sconto appena creati fornendo un $postId, quindi tutti i codici verranno aggiunti alla fine di quel post.

# Export FluentCart API config and build mutation inputs for creating coupons.
# FluentCart REST API: { fluentCartDomain }/wp-json/fluent-cart/v2
# Auth: WordPress Application Passwords (Basic auth: username + application_password)
# Create Coupon: POST /coupons — https://dev.fluentcart.com/restapi/operations/coupons/create-coupon
 
query ExportFluentCartAPIData(
  $fluentCartDomain: String!,
  $fluentCartBaseURL: String! = "wp-json/fluent-cart/v2",
  $postId: ID,
) {
  fluentCartCouponsURL: _sprintf(
    string: "%s/%s/coupons",
    values: [$fluentCartDomain, $fluentCartBaseURL]
  )
    @export(as: "fluentCartCouponsURL")
    @remove
 
  hasPostId: _notEmpty(value: $postId)
    @export(as: "hasPostId")
}
 
query CreateMutationInputs(
  $wpUsername: String!,
  $wpApplicationPassword: String!,
  $discountNamePrefix: String! = "AppSumo campaign",
  $discountNotes: String! = "",
  $codePrefix: String! = "",
  $numberCodes: Int! = 100,
  $codeLength: Int! = 16,
  $firstRecordNumber: Int! = 1,
  $productVariationIDs: [ID!],
)
  @depends(on: "ExportFluentCartAPIData")
{
  mutationInputs: _arrayPad(array: [], length: $numberCodes, value: null)
    @underEachArrayItem(
      passIndexOnwardsAs: "key"
      affectDirectivesUnderPos: [1, 2, 3, 4, 5]
    )
      @applyField(
        name: "_generateRandomString",
        arguments: {
          length: $codeLength,
          characters: "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
        },
        passOnwardsAs: "randomCode"
      )
      @applyField(
        name: "_strAppend",
        arguments: {
          after: $codePrefix,
          append: $randomCode,
        },
        passOnwardsAs: "discountCode"
      )
      @applyField(
        name: "_intAdd",
        arguments: {
          add: $key,
          to: $firstRecordNumber,
        },
        passOnwardsAs: "recordNumber"
      )
      @applyField(
        name: "_sprintf",
        arguments: {
          string: "%s #%s",
          values: [$discountNamePrefix, $recordNumber],
        },
        passOnwardsAs: "discountName"
      )
      @applyField(
        name: "_echo",
        arguments: {
          value: {
            url: $fluentCartCouponsURL,
            method: POST,
            options: {
              auth: {
                username: $wpUsername,
                password: $wpApplicationPassword,
              },
              headers: [
                {
                  name: "Content-Type",
                  value: "application/json",
                },
              ],
              json: {
                title: $discountName,
                code: $discountCode,
                type: "percentage",
                amount: 100,
                status: "active",
                stackable: "no",
                show_on_checkout: "no",
                priority: 0,
                notes: $discountNotes,
                conditions: {
                  max_uses: 1,
                  included_products: $productVariationIDs
                }
              }
            }
          }
        },
        setResultInResponse: true
      )
    @export(as: "mutationInputs")
    @remove
}
 
query CreateCouponsInFluentCart
  @depends(on: "CreateMutationInputs")
{
  createCouponsInFluentCart: _sendJSONObjectItemHTTPRequests(inputs: $mutationInputs)
    @underEachArrayItem
      @underJSONObjectProperty(by: { path: "data.code" })
        @export(as: "discountCodes")
}
 
query PrintDiscountCodesFromFluentCart
  @depends(on: "CreateCouponsInFluentCart")
{
  discountCodes: _echo(value: $discountCodes)
}
 
query GetPostWithDiscountCodes($postId: ID)
  @depends(on: "CreateCouponsInFluentCart")
  @include(if: $hasPostId)
{
  post(by: { id: $postId }, status: any) {
    title
    postContent: rawContent
 
    discountCodesAsContent: _arrayJoin(
      array: $discountCodes,
      separator: "\n"
    )
    updatedPostContent: _sprintf(
      string: "%s\n%s"
      values: [$__postContent, $__discountCodesAsContent]
    )
      @export(as: "updatedPostContent")
  }
}
 
mutation UpdatePostWithDiscountCodes($postId: ID)
  @depends(on: "GetPostWithDiscountCodes")
  @include(if: $hasPostId)
{
  updatePost(input: {
    id: $postId,
    contentAs: { html: $updatedPostContent },
  }) {
    status
    errors {
      __typename
      ...on ErrorPayload {
        message
      }
    }
    post {
      title
      rawContent
    }
  }
}

...passando le seguenti variabili:

{
  "fluentCartDomain": "{ fluentCartDomain }",
  "wpUsername": "{ username }",
  "wpApplicationPassword": "{ appPassword }",
  "codeLength": 24,
  "codePrefix": "APS2V1T1",
  "discountNamePrefix": "AppSumo campaign@2",
  "postId": "{ postId }",
  "discountNotes": "AppSumo campaign #2, starting on 26/03/2026",
  "productVariationIDs": [ "{ productVariationID }" ]
}