QR code card

Any QR action, from a link with campaign tracking to Wi-Fi, contacts, events and app stores, as a crisp styled code with an optional logo, frame and call to action.

Category: Messages. Tags: QR codes, Stores, Restaurants and cafes, Lobbies and reception.

Previews

QR code
Canvas
QR code
Corner
QR code
Chip

Views and forms

Views: canvas, corner, chip. Canvas forms: landscape, portrait.

Card views, themes and publishing. Browse the gallery.

Data and privacy

This card uses its configured properties and live card data.

Properties

For theme, background, accent and position, see Common properties.

Set static properties in params. Bind data to a project card data key for live values; that document holds only dynamic properties. Without a data key, put the complete configuration in params. Nested rows describe the contents of their parent property.

Static properties

NameTypeDefaultValues and limitsDescription
eccstring"M""L", "M", "Q", "H"
inkstring"#111111"pattern: "^#[0-9A-Fa-f]{6}$"Module colour. Keep it dark on a light paper.
paperstring"#FFFFFF"pattern: "^#[0-9A-Fa-f]{6}$"Card colour behind the code.
styleobjectadditionalProperties: falseModule and finder-eye shapes; each defaults to the theme's.
style.modulesstring"square", "rounded", "dots", "connected"
style.eyesstring"square", "rounded", "circle", "leaf"
logonull, stringnullnull, "activity-01", "air-vent", "airplane-01", "alert-01", "alert-02", "american-football", "analytics-up", "apple", "arrow-down-01", "arrow-down-right-01", "arrow-up-01", "arrow-up-right-01", "award-01", "baseball", "basketball-01", "battery-full", "bell-ring", "bicycle", "birthday-cake", "bitcoin", "bus-01", "calendar-03", "calendar-04", "calendar-add-01", "calendar-check", "call-02", "camera-01", "cancel-circle", "car-01", "champion", "chart-decrease", "chart-increase", "checkmark-circle-02", "clock-01", "clock-02", "cloud", "cloud-angled-rain", "cloud-angled-zap", "cloud-big-rain", "cloud-drizzle", "cloud-fog", "cloud-hailstone", "cloud-snow", "coffee-01", "coffee-02", "contact-01", "container-truck-01", "cricket-bat", "crown", "delivery-truck-01", "dices", "discord", "discount-tag-01", "dollar-02", "door-closed-locked", "door-open", "drink", "droplet", "ethereum", "euro", "exchange-01", "facebook-01", "factory", "fast-wind", "favourite", "ferry-boat", "fire", "fire-02", "first-aid-kit", "flag-01", "flag-02", "flash", "flower-01", "football", "gauge", "gift", "git-branch", "globe-02", "google", "hand-prayer", "heart", "help-circle", "home-01", "hourglass", "humidity", "ice-hockey", "information-circle", "instagram", "lamp-01", "lantern", "leaf-01", "leaf-02", "lightbulb", "link-01", "linkedin-01", "litecoin", "location-01", "location-04", "mail-01", "medal-first-place", "medical-mask", "meeting-room", "megaphone-01", "message-01", "money-exchange-02", "moon-02", "moon-cloud", "moon-star", "music-note-01", "navigation-03", "new-releases", "new-twitter", "news", "news-01", "noodles", "package-delivered", "parking-area-square", "party", "party-popper", "pause-circle", "percent-circle", "pinterest", "pizza-01", "play-circle", "play-store", "podium", "pound", "pumpkin", "qr-code", "qr-code-01", "queue-01", "quote-down", "quote-up", "ranking", "restaurant-01", "rocket-01", "rss", "running-shoes", "sale-tag-01", "security-check", "shop-sign", "shopping-bag-01", "siren", "smart-phone-01", "snapchat", "snowflake", "sparkles", "spotify", "star", "star-half", "star-off", "stop-circle", "store-01", "sun-03", "sun-cloud-02", "sunrise", "sunset", "swimming", "tag-01", "target-02", "temperature", "tennis-ball", "thermometer", "thermometer-cold", "thermometer-warm", "threads", "ticket-01", "tiktok", "time-quarter-pass", "timer-01", "tornado-02", "train-01", "tram", "trophy", "tropical-storm", "tsunami", "user-02", "user-group", "user-love-01", "vegetarian-food", "volleyball", "volume-high", "vote", "walking", "warehouse", "waves", "whatsapp", "wheat-off", "wifi-01", "wifi-full-signal", "wifi-lock", "wrench-01", "yen", "youtube"An icon centred on a paper knock-out pad; null for none. Raises ECC to Q (H when large).
logoScalestring"small""small", "large"
framestring"none""none", "card", "ticket", "badge"A frame carrying the call to action.
textlessbooleanfalseCode only: no caption, detail, label or call to action, in every view.

Dynamic properties

NameTypeDefaultValues and limitsDescription
valuestring""maxLength: 1024A raw payload. When set it wins over action.
actionobjectadditionalProperties: falseBuilds the payload when value is empty. Fields by type: url {url, utm}; phone {number}; sms {number, message}; email {to, subject, body}; wifi {ssid, password, security, hidden}; vcard {first, last, org, title, phone, email, url, address}; event {title, start, end, location, description}; geo {latitude, longitude, label}; whatsapp {number, message}; social {network, handle}; review {placeId}; app {ios, android}; text {text}.
action.typestring"url", "phone", "sms", "email", "wifi", "vcard", "event", "geo", "whatsapp", "social", "review", "app", "text"; Required
action.urlstringmaxLength: 1024
action.utmobjectadditionalProperties: false
action.utm.sourcestringmaxLength: 100
action.utm.mediumstringmaxLength: 100
action.utm.campaignstringmaxLength: 100
action.utm.contentstringmaxLength: 100
action.utm.termstringmaxLength: 100
action.numberstringmaxLength: 40
action.messagestringmaxLength: 300
action.tostringmaxLength: 200
action.subjectstringmaxLength: 200
action.bodystringmaxLength: 600
action.ssidstringmaxLength: 64
action.passwordstringmaxLength: 64
action.securitystring"WPA", "WEP", "nopass"
action.hiddenboolean
action.firststringmaxLength: 80
action.laststringmaxLength: 80
action.orgstringmaxLength: 120
action.titlestringmaxLength: 120
action.phonestringmaxLength: 40
action.emailstringmaxLength: 200
action.addressstringmaxLength: 300
action.startstringmaxLength: 40
action.endstringmaxLength: 40
action.locationstringmaxLength: 200
action.descriptionstringmaxLength: 600
action.latitudenumberminimum: -90; maximum: 90
action.longitudenumberminimum: -180; maximum: 180
action.labelstringmaxLength: 120
action.networkstring"instagram", "facebook", "x", "linkedin", "tiktok", "youtube", "threads"
action.handlestringmaxLength: 80
action.placeIdstringmaxLength: 200
action.iosstringmaxLength: 1024
action.androidstringmaxLength: 1024
action.textstringmaxLength: 1024
captionstring""maxLength: 80
detailstring""maxLength: 120Small line under the caption; empty shows the value when it is a URL.
ctastring""maxLength: 40Call to action; a frame with none says "Scan me".

Canvas example

Add this item to a playlist page’s primitives. Publish the playlist and assign a screen.

{
  "id": "qr-code",
  "primitive": "card",
  "card": "qr-code",
  "major": 1,
  "params": {
    "theme": "neomustard"
  },
  "rect": {
    "x": 0,
    "y": 0,
    "width": 1920,
    "height": 1080
  },
  "layer": 0,
  "content_fit": "fill",
  "data": "qr-code-main"
}

Write live data

Create this document before showing the card, then replace it to update the screen without republishing. Use the same project as the playlist. Supply your API authorization through the environment; see API authentication.

curl --request PUT "https://api.screenrig.ai/api/card-data/qr-code-main" \
  --header "Authorization: Bearer $SCREENRIG_TOKEN" \
  --header "ScreenRig-Project: $SCREENRIG_PROJECT" \
  --header "Content-Type: application/json" \
  --data '{"document":{"value":"","action":{"type":"url"},"caption":"","detail":"","cta":""}}'