QR Scans → HubSpot
Push scan and lead-form events into HubSpot CRM using signed webhooks — no native app required.
Recipe: Catch Hook → HubSpot
Step 1
Create a QRbanner webhook
Settings → Webhooks → Add endpoint. Copy the signing secret.
Step 2
Catch the hook in Zapier or Make
Create a Catch Hook (Zapier) or Custom Webhook (Make), then paste that catch URL into QRbanner Settings → Scan webhooks.
Step 3
Create or update a HubSpot contact
Map email/name from lead payloads, or create a timeline note from scan country, device and QR name.
Useful fields for HubSpot
- Lead email, name, phone and message (when lead form is enabled)
- QR name, short code and campaign category
- Scan timestamp, country, city, device
- X-QRbanner-Signature for HMAC verification before writing to CRM
Example scan webhook JSON
{
"event": "scan",
"qr_code_id": "clxxx",
"qr_name": "Summer Campaign",
"short_code": "abc123",
"scan": {
"country": "US",
"city": "New York",
"device": "mobile",
"browser": "Chrome",
"os": "iOS",
"scanned_at": "2026-07-10T12:00:00.000Z"
}
}Header: X-QRbanner-Signature
Suggested HubSpot field mapping
| Webhook field | HubSpot |
|---|---|
| qr_name | notes / deal name |
| short_code | custom property (optional) |
| scan.city | city |
| scan.country | country |
| scan.device | notes (device) |
| scan.scanned_at | last activity date |
Verify X-QRbanner-Signature (Node.js)
const crypto = require('crypto');
function verifyWebhook(body, signatureHeader, secret) {
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(body)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signatureHeader),
Buffer.from(expected)
);
}Full API & webhook docs →