Quikly Drop
Quikly Drop campaigns feature a finite amount of rewards and/or offers awarded by rank, elapsed time, or randomly.
Drop campaigns are made up of a main screens with three different stats, and one additional component that displays offer details after claiming.
Overview
Section titled “Overview”The basic concept for a Drop campaign is to send a viewer’s email address to attempt to claim an offer. If successful, the API returns a unique receiptToken that can be used to fetch offer details, as well as an authToken for the user to be used in subsequent API calls to provide authenticated access on that user’s behalf.
Additional fields in the API provide CMS-like data that is helpful when rendering a campaign, including headings, images, fine print, and offer details.
Offer Screen
Section titled “Offer Screen”Use the following query to fetch the content for the initial screen of the campaign. In this way the API acts as a CMS so that a campaign manager can update the promotion titles, fine print, and images from the Quikly admin interface.

query promoLandingQuery($dealHashid: String!) { quikly(hashid: $dealHashid) { id name description header: customContentFor(key: "embedded_instant_sign_in_header") finePrint buttonText: customContentFor(key: "embedded_instant_sign_in_button_text") image { url(variant: "original") } }The quikly type refers to the campaign instance.
Claiming an Offer
Section titled “Claiming an Offer”To claim an offer, send the user’s email address to the createEmbeddedClaim mutation. This returns a unique offer identifer (qid) and receiptToken used to securely fetch offer details, as well as the user’s authToken which can then be used to identify this user on subsequent interactions with the API via the authorization header.
mutation createEmbeddedClaim( $dealHashid: String! $email: String!) { createEmbeddedClaim( input: { dealId: $dealHashid, email: $email } ) { errors { key message } user { id authToken } order { id qid receiptToken } }}You should store the order’s qid, receiptToken and the user’s authToken locally.
Fetching Offer Detail
Section titled “Fetching Offer Detail”Use the getOrder query to fetch offer details for a user once they have successfully claimed.

query getOrder($orderId: Int!, $receiptToken: String!, $dealTierId: Int) { order( orderId: $orderId receiptToken: $receiptToken dealTierId: $dealTierId ) { id qid expirationDate itemFullDescription itemInstructions finePrint codes: codesWithLabelsAndBarcodes { instore pin value label } links { id name url position } quikly { id hashid termsUrl congratsMessage: customContentFor(key: "claim_congrats") congratsHeader: customContentFor(key: "claim_congrats_embedded_header") congratsSubheader: customContentFor( key: "claim_congrats_embedded_subheader" ) redeemCopy: customContentFor(key: "embed_redeem_body") } }}This example shows how you can fetch content from the Quikly campaign (such as a congrats message or campaign heading) as well as data tied to the individual’s offer: one or more offer codes, an expiration date, associated fine print or redemption urls, and more. At this point, referencing the OrderType in the GraphiQL Explorer will be very useful!
Checking Claim Status
Section titled “Checking Claim Status”A quick way to check if a currently authenticated user has already claimed an offer is to use the alreadyClaimed field on the wantIn type:
query checkAlreadyClaimed($dealHashid: String!) { quikly(hashid: $dealHashid) { id wantIn { id alreadyClaimed } }}The wantIn type represents the viewer’s opt-in to a campaign (stemming from the phrase “I Want In”). It ties a user to a quikly.