Skip to main content

QR Scans → HubSpot

Push scan and lead-form events into HubSpot CRM using signed webhooks — no native app required.

Recipe: Catch Hook → HubSpot

  1. Step 1

    Create a QRbanner webhook

    Settings → Webhooks → Add endpoint. Copy the signing secret.

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

  3. 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 fieldHubSpot
qr_namenotes / deal name
short_codecustom property (optional)
scan.citycity
scan.countrycountry
scan.devicenotes (device)
scan.scanned_atlast 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