01 — QR codes that do something

Turn every scan into an event
your systems can act on.

Someone scans your code and, in the same second, your tools hear about it — where it happened, on what device, from which campaign. Seat a table, log a lead, mark a check-in. And when the link needs to change, you change it. No reprinting.

Someone scansYou get the detailsYour tools get told
  • Free for your first 5 codes
  • No app for people to install
  • Change where a code points, anytime
Scan · Track · Automate

You hear about a scan

instantly

while they're still on the page

If your system is down

we retry

three times, automatically

Kinds of QR code

28

all free

Times you'll reprint

0

just edit the destination

02 — How it works

What happens in the second after a scan

Your code points at us first, then at wherever you want. That tiny detour is the whole trick: we send the person on their way, write down what happened, and pass the news along to whatever you've connected — a spreadsheet, Slack, your own software.

01

Someone points their camera

Their phone opens a short link of ours. Nothing to download, no account, no app — it works the same on any phone made in the last decade.

02

We look up where to send them

We check where that code points right now — which may not be where it pointed last week. At the same time we note the city, the kind of phone, and which campaign brought them, and whether they've scanned before.

03

They land on your page

Fast enough that nobody notices the detour. Bots and link previews get filtered out, so they never show up in your numbers or set anything off.

04

Your tools find out

While they're still reading your page, we've already told everything you've connected to that code. If one of them doesn't answer, we keep trying.

POST https://your-app.com/hooks/qr
X-QR-Signature: 9f2c… # HMAC-SHA256 of the body
X-QR-Timestamp: 1767283928411
{
  "event": "qr.scanned",
  "qrCode": { "name": "Table 12", "shortCode": "x9k2" },
  "scan": {
    "city": "Lisbon", "country": "PT",
    "deviceType": "mobile", "os": "iOS",
    "utmCampaign": "spring-menu",
    "isUniqueVisitor": true,
    "scannedAt": "2026-05-06T14:22:08Z"
  }
}
Custom body templates supported3 retries

You can prove it came from us

Every message we send is signed, so your side can check it's genuine and ignore anything that isn't. Same approach Stripe and GitHub use.

Nothing gets dropped

If your system is busy or offline, we try again — up to three times, spacing out the attempts. It catches up on its own once you're back.

You can see what happened

Every attempt is listed: sent, waiting, retrying, or failed. Something went wrong? Send it again from the dashboard with one click.

03 — Live demo

Create a QR code in 10 seconds

Paste a URL, customize the style, and download. See how easy it is before you commit.

qrhooks · demo
What do you want to share?
Pick a type — the builder adapts to match.
URL
Content & details
What happens when someone scans your url QR code.

URL data

Enter the URL to link to

The URL users will be redirected to when they scan

URL

Add content to

see preview

Payload8bCrisp
Error correctionM~15% recoverable

Opens a website

Scanners land directly on the URL. Use tracking for analytics.

Save your work

Keep the code you just made.

Create an account to save it and start seeing who scans it.

04 — Connecting your tools

It fits the tools you already use

Most products make you build a translator in the middle. Here you decide exactly what a scan looks like when it arrives, so your CRM, your till system, or your Slack channel understands it straight away — nothing sitting in between.

Tell several tools at once

One scan can reach your CRM, your Slack channel, and your reporting tool together. Each one is set up on its own — if one has a bad day, the others still get the message.

Decide what gets sent

Keep the standard details, or pick and name the ones you want — the code's name, the city, the time. Whatever the other side expects to see.

Works with locked-down systems

Add access tokens or any other details your tool asks for, and choose how the message is sent. If it accepts requests, we can talk to it.

Try it before you print anything

Send a pretend scan from the dashboard and watch what comes back. Confirm the whole thing works while the design is still on your screen.

webhook.configactive
Endpoint
https://acme.com/hooks/qr
Method
GETPOSTPUTPATCHDELETE
Headers

Authorization: Bearer ••••••••

X-Tenant-Id: acme-eu

Body template
{
  "table": "{{qrCode.name}}",
  "city": "{{scan.city}}",
  "device": "{{scan.deviceType}}",
  "at": "{{scan.scannedAt}}"
}
Secret
whsec_••••••••••••• — signs every request
Last test · 200 OK · 84msSend test scan

05 — For your developers

If you have engineers, hand them this

Everything in the dashboard is available to your own software too — creating codes in bulk, pulling scan numbers into a report, wiring up the rest of your stack. You don't need this section to get value out of QRHooks. It's here when you want it.

Full CRUD over QR codes

Create, read, update, and delete codes from your stack. Bulk-create thousands at a time. Sort, filter, paginate.

Scoped API keys

Generate per-environment keys with usage tracking and instant revocation. Audit log per token.

Read scan analytics

Pull aggregated scan data — geography, device, time series — into your warehouse or BI tools via simple GET requests.

Manage webhooks

Configure webhook endpoints, rotate signing secrets, and replay failed deliveries — all over HTTP.

POST /v1/qr-codes200 OK
curl -X POST https://api.qrhooks.dev/v1/qr-codes \
  -H "Authorization: Bearer $QRHOOKS_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Q4 Billboard",
    "type": "url",
    "destination": "https://acme.com/launch"
  }'
{
  "id": "qr_2k4j8x9p",
  "shortCode": "x9k2",
  "destination": "https://acme.com/launch",
  "scanUrl": "https://qrhk.co/x9k2",
  "scans": 0,
  "createdAt": "2026-05-06T14:22:08Z"
}
Bearer auth · JSON · idempotentv1.0

06 — The full platform

More than a QR code generator

Charts of who's scanning, a live map, AI-designed codes, a running history of everything that's happened — all in one place, all included.

Interactive scan map

See all your QR codes on a live map with color-coded markers by type. Watch scan activity in real-time, filter by location, and export data.

Scan analytics dashboard

How scans are trending, which phones people use, where in the world they are — for one code or all of them. Download it as a spreadsheet whenever you like.

AI QR code design

Generate custom QR code artwork with AI. Choose from preset styles like Cyberpunk, Watercolor, or Abstract — or write your own prompt.

Custom styling & branding

Set brand colors, upload logos, pick module shapes (dots, rounded, classy), add frame text, and choose from preset color schemes.

Activity log

One running feed of every scan, every message sent, and every change anyone on your team made. Search it, filter it, scroll back as far as you want.

Access for your own software

Hand your developers a key and they can create codes, pull numbers, and plug QRHooks into whatever you already run.

Scan notifications

Get an email or an in-app nudge when your codes get scanned. Set a threshold, pick how often you want to hear about it, or send it to Slack.

Labels & organization

Create custom colored labels to organize QR codes by campaign, location, team, or anything else. Filter and search by label instantly.

Proof it arrived

Every message we send your tools is listed with what happened to it — sent, waiting, retrying, or failed. Send it again with one click.

07 — Static vs dynamic

Why ours can change

An ordinary QR code has the link baked into the pattern — print it and it's set forever. Ours points at us first, so you can send it somewhere new whenever you want.

Feature
Static QR
QRHooks Dynamic
Fix a mistake after printing
See how often it's scanned
Send it somewhere new
Know where and on what
Tell your other tools
Connect your own software
Works offline
Free to create

08 — Code types

One code for everything

All 28 types included free — no upsell, no watermark.

URL

Links you can change anytime

WiFi

Guests connect in one tap

vCard

Share contact info instantly

Calendar

Events added with one scan

Email

Pre-filled message drafts

Phone

Tap to call directly

SMS

Text with preset content

Location

Open in Maps instantly

Crypto

Receive BTC/ETH payments

App Store

Smart iOS/Android routing

Social

All profiles in one link

Text

Plain text messages

09 — Why people pick QRHooks

Three things people tell us

01

Never reprint again

Printed 10,000 flyers with the wrong URL? Update the destination from your dashboard. The QR code image stays identical — your content changes instantly.

02

Know what's working

See where, when, and how people scan. Compare one campaign against another, and take the numbers with you as a spreadsheet whenever you need them.

03

Built for real businesses

Restaurant menus, event check-ins, packaging, signs. Tag your codes to keep them straight, and let them do the boring bits for you.

10 — Industries

One idea, twelve kinds of business

A scan tells you someone was in a particular place, at a particular moment. What you do with that is where it gets interesting. Here's what people set up in their first week.

Restaurants & hospitality

A code on each table opens the order screen the moment a guest sits down — right server, right table, timer running. Change the menu mid-service without printing anything.

guest sits downtable opens on the till

Marketing & advertising

A different code on every billboard, flyer, and booth. Each scan arrives with a city and a campaign name attached, so the posters finally get credit next to your online ads.

poster scannedlead lands in your CRM

Retail & consumer goods

A code on the box registers the warranty the first time it's scanned and sends the welcome email. You find out where products are actually being opened, not just where they sold.

box openedwarranty registered

Events & conferences

Badges and room codes check people in as they arrive. Live headcount per room, a warning when one fills up, and a follow-up email to everyone who came to a given talk.

badge scannedchecked in, live

Field service & facilities

Stickers on equipment. A technician scans on arrival and you know who was there, when, and where — the job opens and the clock starts, with no extra app to install.

engineer arrivesjob opens, clock starts

Logistics & supply chain

Codes on pallets and boxes. Every scan along the way updates where it is, which turns the phone already in everyone's pocket into a tracking scanner.

pallet handledlocation updated

Education

Codes on rooms and courses mark attendance automatically. Course material stays current all term because you can change where the code points, and quiet sessions show up the same week.

student arrivesattendance recorded

Healthcare & clinics

A code in the waiting room tells reception a patient has arrived and shows them the right form. No personal details need to travel — the scan itself is the message.

patient arrivesreception notified

Nonprofits & fundraising

Donation codes on posters and collection tins. Each scan tells you which one it came from, so you learn which street or venue actually works before the campaign ends.

donor scanscredited to that poster

Real estate

A code on the sign pings the agent in Slack the second someone scans it, with the neighbourhood attached. Point the same sign at a new listing whenever you like.

someone scans a signagent gets a Slack ping

Transit & venues

Codes at stops, gates, and seats show you footfall by hour and place. Use it to plan staffing, or get an alert when somewhere gets busier than usual.

platform gets busyops team alerted

SaaS & hardware

Put a code in the box or in the manual. Scanning sets the device up, links it to the right account, and tells you the customer has actually started using it.

customer unboxesdevice set up

Don't see yours? It'll still work. Point a scan at Zapier, Make, n8n, Slack, or whatever you already run.

11 — FAQ

Common questions

12 — Pricing

Simple, transparent pricing

Start free with 5 dynamic QR codes. Upgrade when you need unlimited codes and larger file uploads.

Free

For individuals and small projects

$0
  • 5 dynamic QR codes
  • All 28 QR code types
  • Full scan analytics
  • No watermarks or expiration
  • Webhooks & API access
  • 25MB file uploads
Best Value

Pro

For teams and growing businesses

$5/mo
  • Unlimited QR codes
  • All 28 QR code types
  • Full scan analytics & CSV exports
  • Webhook integrations
  • Full API access
  • 25MB file uploads (5MB on Free)

Trusted infrastructure

HTTPS everywhereEnd-to-end encryption
GDPR compliantYour data stays yours
99.9% uptimeEnterprise-grade reliability

Give it a go

Stop reprinting. Start tracking.

Your first code takes about a minute. Five of them are free forever, and we won't ask for a card.