Platform architecture
This document describes how QRHub by iUtils behaves at runtime: what happens on each scan, what is stored, and how background work keeps the redirect path fast.
End-to-end scan pipeline
When a visitor opens a tracking URL, the system optimizes for two things: a fast redirect to your destination, and durable analytics that can be retried if the database or geo lookup is slow.
-
HTTP request
— The client requests a short link, for example
/t/{short_code}. The application resolves the QR code and workspace, applies rate limits per IP, and checks monthly scan quotas before enqueueing work. - Redirect response — The client receives an HTTP redirect to your HTTPS destination. Optional UTM parameters are merged from the request and the code defaults. Destination URLs may optionally include an encrypted attribution token for downstream conversion flows.
-
Asynchronous ingestion
— The scan is logged on a dedicated queue named
ingestion. A queued job parses user agent, resolves coarse geo from IP (when configured), and writes a row to scan storage. Retries and backoff apply if the job fails. - Rollups and alerts — Scheduled jobs aggregate daily rollups and evaluate workspace alert rules. Your dashboard reads from stored scans and rollups.
Latency vs durability
Redirects are not blocked on database writes. If ingestion is temporarily unavailable, visitors still reach your landing page; analytics may arrive slightly later or after a retry. Design marketing campaigns with this expectation in mind.
Key components (code map)
- Tracking redirect —
TrackingController, routetracking.redirect, middlewarethrottle:tracking-redirect. - Scan job —
LogScanJobon queueingestion, with retries and exponential backoff. - Conversion pixel — separate throttled endpoint for optional GIF pixels where enabled.
- Schedules — daily rollups, privacy purge, alert evaluation, and weekly summaries are registered in the application console schedule.
Related guides
Operations and production checklist · Security and privacy · Troubleshooting