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
- Customer earns rewards — Customers earn rewards from transactions, promotions, referrals, and other qualifying events. Imprint tracks all rewards earned.
- Imprint sends a reward webhook — When a reward is ready to be issued or deducted, Imprint sends a reward event to your configured endpoint.
-
You process the reward — Upon receiving the event, issue or deduct the reward for the customer. Respond with a
200status code to acknowledge receipt. If there is an issue, respond with an appropriate error code and Imprint will retry with exponential backoff. -
You confirm issuance — Depending on your webhook configuration:
AVAILABLE/DEDUCTEDwebhooks — Your200acknowledgement confirms that the reward has been issued or deducted. No further action is required.PENDING/PENDING_DEDUCTIONwebhooks — After processing the reward, use the Update a reward API to update the status toAVAILABLEorDEDUCTEDto confirm issuance.
Reward Types
Imprint supports the following reward types:| Type | Description |
|---|---|
TRANSACTIONAL | Earned from qualifying purchases. The reward amount is determined by the earning rate configured for the program. |
OFFER | Earned when a customer satisfies the conditions of a promotion or offer. |
ONE_TIME | A one-off reward issued to a customer, typically for goodwill or manual adjustments. |
STATEMENT | An aggregated reward representing the total rewards earned during a statement cycle. Only used with the aggregate statement reward configuration. |
REFERRAL | Earned when a customer successfully refers a new cardholder. |
DELAYED | An aggregated reward representing the total rewards earned, issued after a configured number of days have elapsed since the rewards were created. |
Reward Status
Rewards follow a lifecycle with two paths: Issuance:PENDING → AVAILABLE
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 toAVAILABLE.AVAILABLE— The reward has been issued to the customer.
PENDING_DEDUCTION → DEDUCTED
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 toDEDUCTED.DEDUCTED— The reward has been deducted from the customer’s balance.
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 your200acknowledgement 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 a200response, 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 7 reward, you may choose to issue only $5. After processing the reward, use the Update a reward API to update the status toAVAILABLEorDEDUCTEDand set the amount to the actual amount issued.
Example: AVAILABLE webhook flow
- Imprint sends a webhook with status
AVAILABLEand amount1000($10.00):
-
You issue the full $10.00 reward and respond with
200. -
The reward is now
AVAILABLE. Calling Get a reward returns:
Example: PENDING webhook flow
- Imprint sends a webhook with status
PENDINGand amount1200($12.00):
-
You respond with
200to acknowledge receipt. -
The reward remains
PENDING. Calling Get a reward returns:
-
You issue 5 increments) and call Update a reward with status
AVAILABLEand amount1000. - 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:| Earning Timing | Description |
|---|---|
| Immediate | A webhook is sent for each individual reward as it is created. For TRANSACTIONAL rewards, this is when the transaction settles. For OFFER, ONE_TIME, and REFERRAL rewards, this is when the reward event occurs (e.g., promotion satisfied, referral completed). |
| Statement | A single aggregated webhook is sent at the end of the customer’s statement cycle, representing the total rewards earned during that period. |
| Delayed (X days) | A single aggregated webhook is sent after a configured number of days have elapsed since the rewards were created. |
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.
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 aTRANSACTIONAL 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 anOFFER type reward.
Example of a reward event sent when an offer is satisfied:
Referral Rewards
When a referral is completed, you receive a reward webhook for aREFERRAL 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 aONE_TIME type reward.
Example of a one-time reward event: