Webhooks & Events

Receive real-time HTTP POST notifications on your servers when QR scans occur or new leads are captured.

1. Supported Event Types

Event NameTrigger Description
scan.recordedTriggered whenever an end-user scans a dynamic QR code.
qr.createdTriggered when a new QR code is registered in the workspace.
qr.updatedTriggered when a destination URL or design configuration is updated.
document.uploadedTriggered when a new PDF or image document is uploaded.
lead.capturedTriggered when a scanner submits a contact form on a landing page.

2. HMAC-SHA256 Signature Verification

Every webhook payload includes an x-qrsimple-signature HTTP header generated using your workspace webhook secret:

const crypto = require('crypto');

function verifyWebhook(payloadRaw, signatureHeader, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(payloadRaw)
    .digest('hex');
  return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signatureHeader));
}