A personal loyalty code for every member
Give each member a code that opens their card or offer page. Create it when they join, and hear about every scan through a webhook so your CRM can react.
curl -X POST https://api.qravio.app/api/public/v1/qrcodes/bulk \
-H "Authorization: Bearer $QRAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"name": "Member 30217",
"type": "website",
"category": "dynamic",
"content": {
"url": "https://example.com/loyalty/30217"
},
"destinations": [
{
"target_url": "https://example.com/loyalty/30217"
}
],
"client_ref": "member-30217"
},
{
"name": "Member 30218",
"type": "website",
"category": "dynamic",
"content": {
"url": "https://example.com/loyalty/30218"
},
"destinations": [
{
"target_url": "https://example.com/loyalty/30218"
}
],
"client_ref": "member-30218"
}
]
}'How the integration works
Your CRM creates a code at sign-up with the member ID as the client_ref, and stores the returned QR id. A scan webhook posts that QR id to your server, which maps it back to the member.
- 1Create an API key under Developers, and a webhook endpoint subscribed to scan events.
- 2On sign-up, create the member code with POST /qrcodes, or in batches with /qrcodes/bulk for an import.
- 3Store the returned id against the member record.
- 4When the scan webhook arrives, look up the member by QR id and apply your own rules.
What you get
Signed scan events
Each webhook is HMAC-signed and retried on failure, and carries the QR id, country, device and time of the scan.
Offers that change
PATCH a member destination to point at this month offer without reissuing the card.
Seasonal cards
start_at and end_at open and close a code on a schedule.
Bulk import
Move an existing member base across in batches of 50, safely re-runnable with client_ref.
What each plan allows
Every call counts against the monthly quota, and a bulk request counts one call per item. Static codes use calls but not the dynamic QR allowance.
| Plan | API calls | Dynamic QRs | Webhooks |
|---|---|---|---|
| Free, Starter | No API access | n/a | No |
| Pro | 3,000 a month | 300 | Scan, lead, scan limit |
| Agency | 25,000 a month | No cap | Adds scan milestones |
Prices are on the pricing page.
Loyalty API FAQ
Does a scan award points automatically?
No. The webhook tells your system a scan happened; the points rule is yours. For points per visit, confirm at the counter, since anyone holding the card can scan it.
Does the webhook say who scanned?
It says which code was scanned, with country, device and time. The person is whoever you issued that code to.
What plan do I need?
API access and webhooks are on Pro and Agency. Pro allows 300 dynamic QRs, so a large member base needs Agency.
Other things teams build
Packaging
Generate a unique, editable QR code per SKU or production batch from your ERP. Repoint printed boxes after they ship and see scans by country.
Tickets
Issue a unique QR code per ticket from your booking system, stop it working after the event, and pause it when a ticket is refunded.
Restaurant tables
Generate a QR code for every table across every outlet from your POS, and see which tables and outlets get scanned, and when.
Inventory
Tag every asset with a QR code generated from your inventory system. Static codes for permanent labels, dynamic codes when the record can move.
Certificates
Put a verification QR code on every certificate you issue, generated from your LMS or credential system. Static codes do not count against your plan allowance.
Campaigns
Generate a tracked QR code for every placement, store or channel in a campaign, with UTM tags and a schedule, from your own tools.
SaaS products
Add editable, tracked QR codes to your own product. Create them on behalf of your customers, organise them per account, and show scan analytics in your UI.
Start generating codes
Create an account, upgrade to Pro or Agency, and make a key under Developers in your workspace.