User
Create, edit and download a QR code
Create a QR campaign, complete its content, design the image and test the saved output before sharing it.
Step-by-step guide
Before you start
- Have the destination or type-specific content ready. For a Bio Links QR, create the Link Bio page first.
- Decide whether the content needs an editable dynamic destination. Changing a static payload later requires a new exported/printed image.
Open this feature
- Open /portal/qr-codes on your site.
How to use it
Create a first URL QR
- Open QR Codes at /portal/qr-codes and open the create screen at /portal/qr-codes/create.
- Choose the intended QR type. For a first website campaign, choose the URL-based dynamic type. Enter a recognizable campaign name if the create form offers it.
- Select Continue. Creation can open the type-content screen first, or the QR design screen depending on the selected type and available feature.
- Fill the real destination/content. For a Bio Links type, select an existing page rather than leaving the page selection empty.
- On QR design, set QR name, Destination URL and Status. Use Draft while preparing or Active when it should be available, then select Save QR.
Design and export
- Open the campaign’s edit/design page. Select a style/template and adjust the QR dots and Background with enough visual contrast.
- If adding a logo, use the offered image control or Brand Kit. Keep the logo small enough that the actual exported code still scans.
- Choose ECC and Output px from the offered values. Select Save QR to retain the design settings.
- Use PNG for a raster image or SVG for a vector file. Print opens the available print flow.
- Scan the downloaded/printed output at its intended size. Check the destination on a second device before producing a batch of printed material.
Change the destination of an existing campaign
- Find the exact campaign by name in /portal/qr-codes and choose Edit.
- Change Destination URL, or choose Edit content when the selected type uses a structured content page.
- Save in the screen you changed: Save content for type content or Save QR for design/destination settings.
- For a dynamic code, scan an already-exported copy and confirm the new destination. For a static payload, export and replace the image because its encoded content is fixed.
Fields and examples
| Field or choice | How to use it |
|---|---|
| QR name | Internal name, required, maximum 160 characters. Example: Spring counter display. |
| Destination URL | The intended URL or supported payload. Use Edit content for a structured type rather than putting every type into a plain website URL. |
| Status | Active or Draft. Review before making unfinished content available. |
| ECC | Choose an offered error-correction value. Re-test the final image after changing it or adding a logo. |
| Output px | Offered raster sizes include 512, 768, 1024, 1536 and 2048 in this version. |
| Brand Kit / Custom Domain / UTM Preset | Choose existing workspace assets when available. Save and test their effect; selecting an asset is not a DNS or analytics setup procedure. |
Check your finished result
- Reopen the campaign and check destination, status and style.
- Test a scan of the actual downloaded file, not just the on-screen preview.
Problems and fixes
| What you see | What to do next |
|---|---|
| Choose a Link Bio page first | Create/select the intended Bio page before continuing with a Bio Links QR. |
| The new QR opens the site homepage | The create action may use a default URL. Set and save the real destination/content. |
| The image is difficult to scan | Use a simpler high-contrast design, reduce artwork/logo interference, export again and retest. |
| Editing did not change a printed static code | A static image keeps its encoded payload. Export and replace it, or use an appropriate dynamic campaign for future editable destinations. |
Technical reference
Role-scoped source references
Pinned commit: ca125291cce57358ac4842e50928bc31fc6eab07
- modules/AppQRCodes/Livewire/QrCodeBuilder.php
- modules/AppQRCodes/Livewire/QrCodeCreate.php
- modules/AppQRCodes/Livewire/QrCodeWorkspace.php
- modules/AppQRCodes/resources/views/builder.blade.php
- modules/AppQRCodes/resources/views/create.blade.php
- modules/AppQRCodes/resources/views/workspace-styles.blade.php
- modules/AppQRCodes/resources/views/workspace.blade.php
Source-only route information
| Method | Source-default route |
|---|---|
| GET | /portal/qr-codes |
| GET | /portal/qr-codes/create |
| GET | /portal/qr-codes/{qrCode}/edit |
Unmapped fields — not user instructions
These fields belong to this role’s source handler, but their screen labels were not confirmed.
| Source key | Handler |
|---|---|
| name | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| destination_url | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| status | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| foreground_color | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| background_color | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| pattern | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| design_mode | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| style_template | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| public_template | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| logo_url | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| qr_shape | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| ecc | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| output_px | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| logo_size | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| dark_min | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| dark_max | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| ghost_strength | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| ghost_threshold | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| fallback_dark | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| brand_kit_id | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| custom_domain_id | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| utm_preset_id | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| dynamic_rules.*.name | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| dynamic_rules.*.priority | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| dynamic_rules.*.url | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| dynamic_rules.*.countries | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| dynamic_rules.*.hours_from | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| dynamic_rules.*.hours_to | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| dynamic_rules.*.start_at | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| dynamic_rules.*.end_at | modules/AppQRCodes/Livewire/QrCodeBuilder.php |
| campaignName | modules/AppQRCodes/Livewire/QrCodeCreate.php |
| name | modules/AppQRCodes/Livewire/QrCodeWorkspace.php |
| destination_url | modules/AppQRCodes/Livewire/QrCodeWorkspace.php |
| status | modules/AppQRCodes/Livewire/QrCodeWorkspace.php |
| foreground_color | modules/AppQRCodes/Livewire/QrCodeWorkspace.php |
| background_color | modules/AppQRCodes/Livewire/QrCodeWorkspace.php |
| pattern | modules/AppQRCodes/Livewire/QrCodeWorkspace.php |
| logo_url | modules/AppQRCodes/Livewire/QrCodeWorkspace.php |