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
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
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.

1query promoLandingQuery($dealHashid: String!) {2 quikly(hashid: $dealHashid) {3 id4 name5 description6 header: customContentFor(key: "embedded_instant_sign_in_header")7 finePrint8 buttonText: customContentFor(key: "embedded_instant_sign_in_button_text")9 image {10 url(variant: "original")11 }12 }
The quikly
type refers to the campaign instance.
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.
1mutation createEmbeddedClaim(2 $dealHashid: String!3 $email: String!4) {5 createEmbeddedClaim(6 input: { dealId: $dealHashid, email: $email }7 ) {8 errors {9 key10 message11 }12 user {13 id14 authToken15 }16 order {17 id18 qid19 receiptToken20 }21 }22}
You should store the order's qid
, receiptToken
and the user's authToken
locally.
Fetching Offer Detail
Use the getOrder
query to fetch offer details for a user once they have successfully claimed.

1query getOrder($orderId: Int!, $receiptToken: String!, $dealTierId: Int) {2 order(3 orderId: $orderId4 receiptToken: $receiptToken5 dealTierId: $dealTierId6 ) {7 id8 qid9 expirationDate10 itemFullDescription11 itemInstructions12 finePrint13 codes: codesWithLabelsAndBarcodes {14 instore15 pin16 value17 label18 }19 links {20 id21 name22 url23 position24 }25 quikly {26 id27 hashid28 termsUrl29 congratsMessage: customContentFor(key: "claim_congrats")30 congratsHeader: customContentFor(key: "claim_congrats_embedded_header")31 congratsSubheader: customContentFor(32 key: "claim_congrats_embedded_subheader"33 )34 redeemCopy: customContentFor(key: "embed_redeem_body")35 }36 }37}
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
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:
1query checkAlreadyClaimed($dealHashid: String!) {2 quikly(hashid: $dealHashid) {3 id4 wantIn {5 id6 alreadyClaimed7 }8 }9}
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
.