GuidesPoint a QR at pages, forms & menus

Point a QR at a landing page, form, menu, or campaign

A dynamic QR code is a redirect. The printed pattern never changes; you control where it lands. That means the same code can point at any hosted destination you build in ExaRoutes, and you can move it from one to another without reprinting.

This guide covers the hosted surfaces a dynamic QR can target and how to wire them up.

The hosted-URL bridge

Every hosted feature below produces a URL. A dynamic QR simply redirects to that URL, so the pattern is always the same:

  1. Build the destination in the dashboard (landing page, form, menu, and so on).
  2. Publish it. The feature gives you a hosted URL.
  3. Create or edit a dynamic QR and set its destination to that URL.
  4. Print the QR. Later, repoint it at a different destination without reprinting.

Because the QR only stores its own short redirect URL, swapping the destination is instant and keeps all the scan analytics on the same code.

Hosted landing pages

Build a scan destination without a website: hero image, headline, call-to-action buttons, and social links. Useful for a link-in-bio, a product page, or an event splash. Publish it, then point a QR at its URL.

Lead-capture forms

Skip the redirect and collect information directly from a scan. Hosted forms support custom fields, CSV export, and webhook fan-out to your CRM. Point a QR at a form’s URL so a scan opens the form.

Restaurant menus

Hosted multi-section menus with allergen tags, multi-language support, and per-location management. A table-tent QR points at a location’s menu URL; update prices or items in the dashboard and every printed code shows the new menu.

Serialized and anti-counterfeit codes

Serialized codes mint a unique, verifiable code per physical unit. The first scan returns “authentic”; later scans flag “already scanned”. These are managed as a batch in the dashboard, and each unit’s verification page is a hosted URL. See the dedicated Serialized / anti-counterfeit codes guide for the full workflow (mint, print, verify, track, buy more), or the Serialized codes API reference to automate it.

A/B campaigns

Run weighted variants behind a single QR. Each scan is routed to one variant, and you see which destination wins. Configure the split in the dashboard; the QR itself does not change.

Device and geo routing rules

Route by the scanner’s device or location from one printed code: iOS to the App Store, Android to Play, EU visitors to a GDPR-clean page. Rules are configured on the QR in the dashboard.

Managing these over the API

You can manage these features in the dashboard, or programmatically through the API. The QR API creates and repoints a dynamic QR at any URL, including a hosted landing page, form, or menu URL.

Managing features through the API

Landing pages, forms, menus, brand kits, and serialized batches have CRUD endpoints, authenticated with the same Bearer API key as the QR endpoints and scoped to your key’s workspace. Plan entitlements apply exactly as in the dashboard (for example, menus require the Business plan).

FeatureEndpoints
Landing pagesGET/POST /api/qr/landing-pages, GET/PATCH/DELETE /api/qr/landing-pages/{pageId}
FormsGET/POST /api/qr/forms, GET/PATCH/DELETE /api/qr/forms/{formId}, GET /api/qr/forms/{formId}/submissions
MenusGET/POST /api/qr/menus, GET/PATCH/DELETE /api/qr/menus/{menuId}
Brand kitsGET/POST /api/qr/brand-kits, PATCH/DELETE /api/qr/brand-kits/{kitId}
Serialized batchesGET/POST /api/qr/serialized-batches, GET /api/qr/serialized-batches/{batchId}

A typical flow: create a landing page, take its hosted URL, then create a dynamic QR pointed at it, all over the API.

# 1. Create a landing page
curl -X POST https://api.exaroutes.com/api/qr/landing-pages \
  -H "Authorization: Bearer exr_live_..." -H "Content-Type: application/json" \
  -d '{ "name": "Spring promo", "headline": "20% off" }'
 
# 2. Point a dynamic QR at its hosted URL (from the response / dashboard)
curl -X POST https://api.exaroutes.com/api/qr/codes \
  -H "Authorization: Bearer exr_live_..." -H "Content-Type: application/json" \
  -d '{ "data": "https://qr.exaroutes.com/p/<pageId>", "dataType": "url" }'

The request/response bodies mirror the dashboard exactly. A/B campaigns, routing rules, and deep links are configured on the QR itself, via PUT /api/qr/codes/{id} (see Update a QR code). That same endpoint also updates the code’s full styling.