ScanOrbit 2.0 Live: Unlimited dynamic QR codes with 1-year scan analytics. See Plans →
INTEGRATIONS & WEBHOOKS 2.0|HMAC-SHA256 Signed

Connect ScanOrbit to Your Existing Stack

Real-time event streaming for CRM pipelines, databases, and messaging channels.

Use the ScanOrbit app on Zapier: new leads, form responses, QR codes and scans start Zaps instantly, and Zaps can create and update QR codes. For everything else there's one signed webhook for Google Sheets, Slack, Make or your own server. There's no direct Slack, Salesforce or HubSpot app; reach them through Zapier.

Native Zapier App
HMAC-SHA256 Security
3 Automatic Retries
Real-Time Webhook Pipeline
Live Dispatch
POST /your-webhook-endpoint200 OK
X-ScanOrbit-Signature: t=1790619000,v1=9a8c7b6d5e4f...
{
  "event": "lead.captured",
  "timestamp": "2026-09-28T18:30:00Z",
  "qrId": "qr_98f41e0a",
  "qrName": "Summer Expo Flyer",
  "data": {
    "name": "Sarah Jenkins",
    "email": "sarah.j@acmebrand.com",
    "phone": "+1 (555) 234-5678",
    "notes": "Requested product demonstration"
  }
}

Zapier

6,000+ Apps

Google Sheets

Auto Row Append

Slack

Instant Alerts

6,000+

Apps Reachable via Zapier

4

Instant Zapier Triggers

HMAC

SHA256 Signed Payloads

3

Delivery Attempts

Verified Code Recipes

Production Integration Recipes

Copy-paste verified code recipes to connect ScanOrbit to your spreadsheets, messaging channels, and automation workflows.

ScanOrbit on Zapier

Our own Zapier app: no code, no webhooks to set up

  1. Open the ScanOrbit Zapier invite and accept it (it adds the app to your Zapier account).
  2. In ScanOrbit, create a key under Settings → API Keys (Business plan). A read-only key is enough for triggers; creating or updating codes needs write access.
  3. In Zapier, make a Zap, choose ScanOrbit, and paste the key when asked to connect.

Triggers (instant): New Lead, New Form Response, New QR Code, New Scan. Actions: Create QR Code, Update QR Code (change where a printed code points). Search: Find QR Code. New Scan fires on every scan, so busy codes use more of your Zapier tasks; add a Filter step for the codes you care about.

Make, n8n or Zapier with a webhook

The signed account webhook, for tools without a ScanOrbit app

In Zapier, start a Zap with the Webhooks by Zapier trigger (event type: Catch Hook). Zapier provides a webhook URL: paste that into ScanOrbit under Settings → Notifications → Webhook URL. Next, verify the signature in a Code step before forwarding data to Slack, Google Sheets, HubSpot, or Salesforce.

javascript
// "Code by Zapier" step, after a Webhooks by Zapier
// "Catch Hook" trigger: verifies signature before
// forwarding lead data to Slack, Sheets, HubSpot, etc.
const crypto = require('crypto');

const sigHeader = inputData.headers['x-scanorbit-signature'] || '';
const [tPart, v1Part] = sigHeader.split(',');
const t = tPart.split('=')[1];
const v1 = v1Part.split('=')[1];

const expected = crypto
  .createHmac('sha256', process.env.SCANORBIT_WEBHOOK_SECRET)
  .update(`${t}.${inputData.rawBody}`)
  .digest('hex');

if (expected !== v1) throw new Error('Invalid signature: not from ScanOrbit');

output = JSON.parse(inputData.rawBody);

Google Sheets Real-Time Sync

Log every lead or form submission as a spreadsheet row with zero middleware

A Google Sheet can receive webhooks directly through Google Apps Script web app hosting, with nothing else to configure or purchase.

javascript
// Google Apps Script: Extensions > Apps Script on a
// Sheet, paste this, then Deploy > Web app (execute as
// you, access: Anyone). Paste the /exec URL into
// Dashboard > Settings > Notifications > Webhook URL.
function doPost(e) {
  const body = e.postData.contents;
  const sigHeader = e.parameter['X-ScanOrbit-Signature'] || '';
  
  if (e.parameter.key !== 'YOUR_SHARED_SECRET') {
    return ContentService.createTextOutput('unauthorized');
  }

  const data = JSON.parse(body);
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.appendRow([
    new Date(data.timestamp),
    data.event,
    data.qrName,
    data.event === 'lead.captured'
      ? [data.data?.name, data.data?.email, data.data?.phone].filter(Boolean).join(' / ')
      : JSON.stringify(data.values || {}),
  ]);
  return ContentService.createTextOutput('ok');
}

Slack Channel Notifications

Post real-time capture alerts to any internal team channel

Slack Incoming Webhooks require a structured payload ({ "text": ... }), so ScanOrbit payloads are reshaped via a lightweight serverless handler or Zapier Code step before delivery.

javascript
// Forwarding function: Slack Incoming Webhook expects
// {"text": "..."} payload. Deploy as a lightweight
// serverless edge handler or Zapier Code step.
export default async function handler(req) {
  const body = await req.text();
  const sig = req.headers.get('x-scanorbit-signature') || '';

  const data = JSON.parse(body);
  const line = data.event === 'lead.captured'
    ? `New lead captured on *${data.qrName}*: ${data.data?.name} (${data.data?.email})`
    : `New scan on *${data.qrName}* from ${data.telemetry?.city || 'Unknown'}`;

  await fetch(process.env.SLACK_WEBHOOK_URL, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ text: line }),
  });
  return new Response('ok');
}
Integration FAQ

Frequently Asked Questions

Technical details on signature verification, payload schemas, and webhook delivery guarantees.

Need a custom integration?

Tell our engineering team what CRM or data warehouse you want to connect.

Request Custom Integration
Automate in Under 60 Seconds

Connect ScanOrbit to Your Tech Stack

Upgrade to the Business plan to unlock real-time signed webhooks, developer REST API access, and automatic retries across 6,000+ apps.

Instant HMAC-SHA256 Webhook Dispatch
Google Sheets & Slack via Webhook
Full REST API Key Provisioning

Included on ScanOrbit Business at $29/mo · No per-event overage fees

WEBHOOK EVENT
LIVE DISPATCH
TEST WEBHOOK

Scan with any smartphone camera

Dispatches a live test webhook payload to your endpoint