Sat Oct 18 Estimated time: PT40M
How to Build a QR Code Strategy for App Clips
Learn how to design, generate, place, and track QR codes that trigger iOS App Clips. A complete guide to using QR codes as an app discovery and user acquisition channel.
Why QR Codes Are the Best Entry Point for App Clips
QR codes are the most accessible physical trigger for App Clips. They work on every iPhone with a camera (iPhone 6s and later), require no special hardware beyond a printed code, and users already understand how to scan them.
Unlike NFC tags, which require close physical contact and only work on iPhone XS and newer, QR codes work from a distance. Unlike App Clip Codes, which require Apple-specific generation tools and user education, QR codes are universally recognized. This makes QR codes the highest-reach physical invocation method for App Clips.
For your App Store Optimization strategy, QR codes create a discovery channel that exists entirely outside the App Store. Every scan is a zero-friction touchpoint where a user goes from having never heard of your app to actively using it in under three seconds. That kind of conversion speed is impossible through traditional store search.
Step 1: Define Your Use Cases and User Flows
Start by mapping every scenario where a user might scan a QR code and get value from your App Clip. The strongest QR code placements share three characteristics: the user has an immediate need, the App Clip solves it instantly, and the code is positioned exactly where the need occurs.
High-Value Use Cases
| Category | Use case | QR code location | App Clip action |
|---|---|---|---|
| Food and drink | Order from table | Table tent, menu insert | Load restaurant menu, pre-select table |
| Parking | Pay for spot | Meter, pay station, garage entrance | Show parking payment screen with lot pre-filled |
| Retail | Product details | Shelf tag, product display | Show reviews, specs, try-on features |
| Events | Check in | Badge, entrance poster, ticket | Scan ticket, show schedule, access venue map |
| Fitness | Book class | Studio door, schedule board | Show class details and booking form |
| Transport | Rent vehicle | Bike, scooter, car windshield | Unlock vehicle and start rental |
| Hospitality | Room services | Hotel room card, lobby sign | Order room service, request housekeeping |
| Healthcare | Patient intake | Waiting room sign, appointment card | Fill out intake forms before being called |
Mapping the User Flow
For each use case, sketch the complete flow from scan to conversion:
- Context: Where is the user and what are they doing?
- Scan trigger: What motivates them to scan? (visual prompt, staff instruction, curiosity)
- App Clip Card: What do they see on the card? (title, subtitle, image)
- First screen: What loads when they tap “Open”?
- Core action: What do they accomplish in the App Clip?
- Install prompt: When and how do you suggest the full app?
Design every element of this flow before generating a single QR code. A code that links to a generic home screen wastes the user’s intent. A code that links to the exact screen they need converts.
Step 2: Design Your URL Schema
Every QR code encodes a URL. The structure of that URL determines what the user sees and what data you collect. Get the schema right before you generate any codes.
URL Structure
Use path segments for routing and query parameters for attribution:
https://yourdomain.com/{feature}/{entity-id}?source=qr&location={location-id}&campaign={campaign-name}
Real examples:
https://yourdomain.com/menu/joes-pizza?source=qr&location=table-5&campaign=summer-2025
https://yourdomain.com/parking/lot-downtown-a?source=qr&spot=b12&campaign=garage-rollout
https://yourdomain.com/event/tech-conf-2025/check-in?source=qr&gate=north
https://yourdomain.com/book/spin-class-monday?source=qr&location=gym-downtown
Parameter Conventions
Establish a consistent parameter schema across all your QR codes:
| Parameter | Purpose | Example values |
|---|---|---|
source | Invocation channel | qr, nfc, web, email |
location | Physical placement identifier | table-5, lot-a, lobby |
campaign | Marketing campaign name | summer-2025, launch-week |
partner | Partner or venue name | joes-pizza, city-parking |
variant | A/B test variant | a, b, control |
promo | Promotional code | WELCOME10, FIRSTORDER |
Avoid Common URL Mistakes
Don’t use link shorteners. Services like bit.ly break Universal Links and prevent App Clip invocation. The QR code must contain your actual domain URL for iOS to recognize it and trigger the App Clip.
Don’t use excessively long URLs. Longer URLs create denser QR codes that are harder to scan, especially at smaller print sizes. Keep URLs under 100 characters when possible. If you need detailed attribution, use short location IDs that map to full metadata in your backend.
Don’t use HTTP. App Clip invocation requires HTTPS. Every URL in every QR code must use the https:// scheme.
Don’t include sensitive data. QR codes are visible to anyone with a camera. Never encode user tokens, API keys, or personal information in QR code URLs.
Step 3: Generate QR Codes with the Right Specs
A QR code that looks fine on your screen can fail completely when printed on a menu card and scanned under dim restaurant lighting. Technical specifications matter.
Error Correction Levels
QR codes have four error correction levels that determine how much damage or obstruction a code can tolerate:
| Level | Recovery capacity | Best for |
|---|---|---|
| L (Low) | 7% | Digital displays, clean indoor environments |
| M (Medium) | 15% | General indoor use, most printed materials |
| Q (Quartile) | 25% | Codes with logo overlays, moderate wear environments |
| H (High) | 30% | Outdoor use, codes that may get dirty or damaged |
Use Level Q or H for any physical placement. Use Level M for digital-only codes. If you add a logo to the center of the code, use Level H to compensate for the obscured modules.
Size Guidelines
The minimum size depends on the scanning distance:
| Scanning distance | Minimum code size | Typical use |
|---|---|---|
| 10 cm (4 in) | 2 cm x 2 cm | Business cards, product tags |
| 30 cm (12 in) | 3 cm x 3 cm | Table tents, menu inserts, shelf tags |
| 1 m (3 ft) | 6 cm x 6 cm | Counter signs, wall posters at eye level |
| 3 m (10 ft) | 15 cm x 15 cm | Storefront windows, large signage |
| 10 m (30 ft) | 50 cm x 50 cm | Billboard, stadium displays |
The general rule: the code should be at least 1/10th of the scanning distance in size. Always test at the actual placement distance before mass printing.
Format and Resolution
- Generate codes in SVG format for print materials (infinite scalability)
- Use PNG at 300 DPI or higher when SVG is not supported
- Never scale up a low-resolution QR code bitmap. Regenerate at the target size
- Maintain a quiet zone (white border) of at least 4 modules wide around the code. Most generators include this automatically, but verify if you are placing codes on dark or busy backgrounds
Scanning Reliability Testing
Before deploying any code, test it under conditions that match the real environment:
- Scan from the expected distance
- Scan under the actual lighting (fluorescent, dim restaurant lighting, outdoor sunlight, shade)
- Scan at angles (users don’t always hold their phone perfectly straight)
- Scan with different iPhone models (older cameras have lower resolution)
- Scan through glass or plastic if the code will be behind a protective cover
If any test fails, increase the code size, raise the error correction level, or improve the contrast between the code and its background.
Step 4: Design Branded QR Code Visuals
A plain black-and-white QR code works, but a branded code gets scanned more. Visual design directly affects scan rates because it communicates trust, context, and intent.
Adding Your Brand
Most QR code generators support visual customization:
- Colors: Replace the default black modules with your brand color. Keep the contrast ratio above 4:1 against the background. Dark modules on a light background is the safest combination. Avoid low-contrast combinations like light gray on white
- Logo: Place your app icon or company logo in the center of the code. Use error correction Level H to compensate. Keep the logo under 20% of the total code area
- Rounded modules: Replace square modules with rounded dots for a softer look. This is purely aesthetic and does not affect scanning
- Frame and label: Add a rectangular frame around the code with a call-to-action label below it
Call-to-Action Labels
A QR code without context is a QR code that doesn’t get scanned. Always pair your code with a short, action-oriented label:
Effective labels:
- “Scan to order”
- “Scan to pay”
- “Scan to check in”
- “Scan for menu”
- “Scan to book”
- “Try the app instantly”
- “No download needed - just scan”
Weak labels:
- “Scan me” (what happens?)
- “QR Code” (obvious, no value proposition)
- “Download our app” (misleading - App Clips don’t require a download)
- No label at all (users need a reason to scan)
The label should describe the outcome, not the action. “Scan to order” tells the user what they get. “Scan this QR code” tells them what they already know.
Design Templates
Create a reusable design template system for your QR codes:
- Standard template: Brand colors, logo, generic CTA (“Scan to get started”)
- Location template: Standard design plus location name and context-specific CTA
- Campaign template: Standard design plus promotional messaging and expiry date
- Partner template: Co-branded design with partner logo alongside yours
Templates ensure consistency across hundreds of code placements while allowing customization for specific contexts.
Step 5: Plan Physical Placements
Placement strategy is what separates QR codes that get scanned from QR codes that get ignored. The three factors that drive scan rates are intent, visibility, and dwell time.
Intent
Place codes where the user already wants what your App Clip offers. A parking payment QR code at a parking meter has high intent because the user needs to pay right now. The same QR code on a park bench has near-zero intent because nobody is thinking about parking payments while sitting in a park.
Map your placements to moments of need:
| User need | Moment | Placement |
|---|---|---|
| Order food | Seated at table | Table tent, menu first page |
| Pay for parking | Arriving at spot | Meter, entry ticket |
| Check into event | Arriving at venue | Entrance signage, near registration desk |
| Get product info | Browsing in store | Shelf edge, product display card |
| Book a class | Deciding what to do | Schedule board, studio entrance |
| Rent a vehicle | Standing next to vehicle | Handlebar tag, windshield sticker |
Visibility
The code must be in the user’s natural line of sight during the moment of need:
- Eye level: Codes on walls should be at 140-160 cm height (average eye level while standing)
- Table level: Codes on tables should face upward or be angled toward the seated user
- Point of interaction: Place codes on or immediately adjacent to the object the user is interacting with (the meter, the menu, the product)
- Avoid clutter: If a surface has multiple signs, posters, and stickers, your QR code will get lost. Find a clean, uncluttered spot or create a dedicated display
Dwell Time
Users need a few seconds to notice the code, understand the CTA, pull out their phone, and scan. Place codes where users naturally spend time:
- High dwell time: Waiting in line, seated at a table, browsing a display, waiting for an elevator
- Low dwell time: Walking past a storefront, driving past a sign, rushing through a corridor
For low-dwell-time locations, increase the code size and use a very short, compelling CTA. For high-dwell-time locations, you can include more context and a longer explanation of what the App Clip does.
Indoor vs Outdoor Considerations
Indoor placements:
- Use standard matte print materials
- Error correction Level M or Q is sufficient
- Standard sizing based on scanning distance
- Control lighting conditions with spotlights or backlit displays if needed
Outdoor placements:
- Use UV-resistant, waterproof materials (laminated prints, vinyl stickers, metal plates)
- Error correction Level H is recommended
- Increase size by 20-30% compared to indoor equivalents (sunlight glare reduces scan reliability)
- Test scanning in direct sunlight - glossy surfaces cause reflections that block the camera
- Replace codes on a scheduled basis as weather damage accumulates
Step 6: Implement QR Codes in Digital Channels
QR codes are not limited to physical placements. They work in any visual medium where an iOS user might see and scan them.
Email Campaigns
Embed QR codes in HTML emails as inline images:
- Use PNG format at 200x200 pixels minimum for email
- Place the code near the top of the email where it is visible without scrolling
- Add alt text: “Scan this QR code on your iPhone to try [feature] instantly”
- Include a tappable URL link below the code for users reading on their phone (they can’t scan a code displayed on the same screen they’re holding)
Social Media
Share QR code images in posts and stories:
- Instagram Stories: Full-screen QR code with branded background and CTA text overlay
- Twitter/X: QR code image in a tweet with a description of what happens when scanned
- LinkedIn: QR code in a company update targeting professional audiences
- TikTok/Reels: Flash the QR code at the end of a demo video showing the App Clip in action
For social media, always include the direct URL in the post caption as well. Users browsing on their phone can tap the link directly; users seeing the post on a larger screen can scan the code with their phone.
Print Advertising
QR codes in magazine ads, newspaper inserts, and flyers:
- Size the code appropriately for the print format (minimum 3 cm for magazine, 5 cm for newspaper)
- Place the code in the lower-right quadrant of the ad (natural eye scanning pattern ends there)
- Include the CTA label integrated into the ad design, not as an afterthought
- Test scanning from the actual printed material before approving the final print run
Product Packaging
QR codes on product packaging create a direct bridge between a physical purchase and a digital experience:
- Unboxing guides that launch as an App Clip
- Product registration and warranty activation
- Reorder and subscription management
- Complementary content (recipes for food products, workout routines for fitness equipment)
Place the code where users naturally look when unpacking: the inner lid, the top of the insert card, or the back panel near the barcode.
Step 7: Set Up Scan Tracking and Analytics
Every QR code scan should be a data point. Without tracking, you cannot tell which placements work, which waste money, and where to invest next.
Parsing Attribution Data
When your App Clip launches, extract the URL parameters and send them to your analytics service:
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
guard let url = userActivity.webpageURL else { return }
let components = URLComponents(url: url, resolvingAgainstBaseURL: false)
let params = components?.queryItems?.reduce(into: [String: String]()) {
$0[$1.name] = $1.value
} ?? [:]
// Log the scan event
Analytics.log(event: "app_clip_invocation", properties: [
"source": params["source"] ?? "unknown",
"location": params["location"] ?? "unknown",
"campaign": params["campaign"] ?? "none",
"partner": params["partner"] ?? "none",
"variant": params["variant"] ?? "default",
"url_path": url.path
])
// Route to the correct screen
routeToFeature(from: url)
}
Building a Tracking Dashboard
Create a dashboard that answers these questions at a glance:
- Volume: How many total scans per day/week/month? Trending up or down?
- By source: Which channel drives the most scans? (QR vs NFC vs web vs email)
- By location: Which physical placements get the most scans?
- By campaign: Which marketing campaigns drive the most engagement?
- Conversion funnel: Scan > App Clip open > Core action completed > Full app installed
- Revenue attribution: Revenue generated per QR code placement (if applicable)
Connecting to ASO Metrics
Use ASODOG to correlate QR code campaign activity with store-level performance:
- Do periods of high QR code scan volume correspond with improved keyword rankings?
- Does App Clip engagement from QR codes lift your conversion rate on the App Store listing?
- Are users acquired through QR code scans more likely to leave positive ratings?
- How does download velocity change when you add QR codes at new locations?
This correlation data helps you quantify the ASO value of your QR code strategy and justify continued investment in physical placements.
Step 8: Iterate Using Performance Data
QR code strategy is not a set-and-forget operation. The placements, designs, and URLs that perform best will surprise you. Let data guide your decisions.
Weekly Review Process
During the first month after deployment, review performance weekly:
- Rank placements by scan volume. Identify the top 20% and bottom 20%.
- Check conversion rates per placement. High scans but low conversion may mean the wrong screen loads or the CTA sets incorrect expectations.
- Compare A/B variants. If you tested different code designs or CTA labels, identify the winner and roll it out.
- Audit failed scans. If your analytics show URL hits that don’t match valid App Clip routes, investigate whether codes are misencoded or URLs have changed.
Common Optimizations
Low scan rate at a good location:
- Increase code size
- Improve CTA label (make the value proposition clearer)
- Reposition the code (higher, more visible, less cluttered surroundings)
- Add lighting (a small spotlight on the code in dim environments)
High scan rate but low App Clip completion:
- The first screen may not match user expectations. Align it with the CTA label
- Load time may be too slow. Profile and optimize (reduce binary size, defer non-critical assets)
- The experience may require too many steps before delivering value. Simplify the flow
High App Clip completion but low full app install:
- The install prompt may appear too early (before value is demonstrated) or too late (after the user has left)
- The value proposition for the full app may be unclear. Show what additional features the full app offers
- Test different install prompt timing and messaging
Scaling What Works
Once you identify high-performing placement types:
- Replicate the pattern. If table tent QR codes at restaurants convert well, roll them out to every partner restaurant
- Negotiate volume placements. Use performance data to convince venue partners to give you more prominent or more numerous placements
- Create location-specific landing experiences. Use the location parameter to customize the App Clip’s first screen for each venue, showing relevant branding, menus, or pricing
Retiring What Doesn’t
Don’t leave underperforming codes in the field indefinitely:
- Remove codes from locations with consistently near-zero scans after 4 weeks
- Replace damaged or faded outdoor codes on a monthly schedule
- Decommission campaign-specific codes after the campaign ends to avoid confusing users with expired promotions
- Redirect decommissioned URLs to a generic App Clip experience rather than showing an error