Skip to main content

Overview

If you have a loyalty program, you can integrate with Imprint’s reward webhooks to handle rewards earned by your customers. As the loyalty program maintainer, you are responsible for issuing and deducting rewards when notified by Imprint. This guide covers reward types, statuses, earning configurations, webhook delivery timing, and how to process individual and aggregated reward events.

How it works

  1. Customer earns rewards — Customers earn rewards from transactions, promotions, referrals, and other qualifying events. Imprint tracks all rewards earned.
  2. Imprint sends a reward webhook — When a reward is ready to be issued or deducted, Imprint sends a reward event to your configured endpoint.
  3. You process the reward — Upon receiving the event, issue or deduct the reward for the customer. Respond with a 200 status code to acknowledge receipt. If there is an issue, respond with an appropriate error code and Imprint will retry with exponential backoff.
  4. You confirm issuance — Depending on your webhook configuration:
    • AVAILABLE/DEDUCTED webhooks — Your 200 acknowledgement confirms that the reward has been issued or deducted. No further action is required.
    • PENDING/PENDING_DEDUCTION webhooks — After processing the reward, use the Update a reward API to update the status to AVAILABLE or DEDUCTED to confirm issuance.

Reward Types

Imprint supports the following reward types:

Reward Status

Rewards follow a lifecycle with two paths: Issuance: PENDINGAVAILABLE
  • PENDING — The reward has been created and is ready to be issued by you. After issuing the reward, use the Update a reward API to update the status to AVAILABLE.
  • AVAILABLE — The reward has been issued to the customer. This is a terminal state — once a reward is AVAILABLE, its issuance is complete and it will not change status again.
Deduction: PENDING_DEDUCTIONDEDUCTED
  • PENDING_DEDUCTION — A deduction has been initiated (e.g., due to a returned transaction) and is ready to be processed by you. After debiting the reward, use the Update a reward API to update the status to DEDUCTED.
  • DEDUCTED — The reward has been deducted from the customer’s balance. This is a terminal state — once a reward is DEDUCTED, the deduction is complete and it will not change status again.
Your webhook can be configured to deliver events with either status:
  • PENDING / PENDING_DEDUCTION — You receive the event, process the reward, then confirm via the API.
  • AVAILABLE / DEDUCTED — You receive the event, process the reward, and your 200 acknowledgement confirms issuance. No API call is required.

Choosing a Webhook Status Configuration

Choose which webhook status to receive based on how you issue rewards:
  • AVAILABLE / DEDUCTED — Use this if you will always issue or deduct the full reward amount as provided in the webhook. When you acknowledge the event with a 200 response, Imprint considers the reward issued. No further action is needed.
  • PENDING / PENDING_DEDUCTION — Use this if you need to modify the reward amount before issuing. For example, if your program issues rewards in 5incrementsandthewebhookcontainsa5 increments and the webhook contains a 7 reward, you may choose to issue only $5. After processing the reward, use the Update a reward API to update the status to AVAILABLE or DEDUCTED and set the amount to the actual amount issued.

Example: AVAILABLE webhook flow

  1. Imprint sends a webhook with status AVAILABLE and amount 1000 ($10.00):
  1. You issue the full $10.00 reward and respond with 200.
  2. The reward is now AVAILABLE. Calling Get a reward returns:

Example: PENDING webhook flow

  1. Imprint sends a webhook with status PENDING and amount 1200 ($12.00):
  1. You respond with 200 to acknowledge receipt.
  2. The reward remains PENDING. Calling Get a reward returns:
  1. You issue 10.00(yourprogramissuesin10.00 (your program issues in 5 increments) and call Update a reward with status AVAILABLE and amount 1000.
  2. Calling Get a reward now returns:

Reward Earning

You receive reward webhooks when rewards are ready to be issued. The timing depends on your program’s earning configuration:

Aggregated Rewards

For programs configured with statement or delayed issuance, all rewards earned during the period are aggregated into a single reward event. Instead of receiving individual webhooks for each transaction or offer, you receive one webhook representing the total rewards earned.
  • Statement issuance — The aggregated reward is sent when the customer’s statement closes.
  • Delayed issuance — The aggregated reward is sent after the configured number of days have elapsed.
Example of an aggregated reward event:

Individual Rewards

For programs configured with immediate issuance, you receive a webhook for each individual reward event.

Transaction Rewards

When a transaction settles, you receive a reward webhook for a TRANSACTION type reward. Example of a reward event sent when a transaction settles:

Offer Rewards

When a promotion is satisfied, you receive a reward webhook for an OFFER type reward. Offer reward events include a metadata.offer_id field identifying the specific offer that generated the reward, so you can map it back to the offer in your systems. Example of a reward event sent when an offer is satisfied:

Referral Rewards

When a referral is completed, you receive a reward webhook for a REFERRAL type reward. Example of a reward event sent when a referral is completed:

One-Time Rewards

When a one-off reward is issued, you receive a reward webhook for a ONE_TIME type reward. Example of a one-time reward event: