All guides
User

Create QR codes in bulk

Create one QR campaign for each valid CSV row. Use this when several destinations need separate QR codes, such as store locations, offers or product pages.

Step-by-step guide

Before you start

  • Choose the correct team/workspace before generating; the created campaigns belong to that workspace owner.
  • Prepare one working destination URL per row. Start with three practice rows, then replace every example.com address with a destination you control.
  • Your plan must allow bulk generation and have room for the new QR campaigns. This screen creates records immediately; it is not a dry-run preview.
Open this feature
  1. Open /portal/qr-codes/bulk on your site.

How to use it

Copy a three-row example

This example has no header. Replace the destinations before using it.

Spring offer,dynamic_url,https://example.com/spring
"Menu, main floor",dynamic_url,https://example.com/menu
Customer support,dynamic_url,https://example.com/support

Download the no-header CSV example

Prepare the three CSV columns

  1. Open QR Bulk at /portal/qr-codes/bulk. Locate Paste your CSV rows and the CSV rows field.
  2. Remove the prefilled sample rows unless you actually intend to create them.
  3. Write one physical line per campaign in this order: name,type_key,url. Do not add a header row.
  4. Use dynamic_url for the first URL-based practice batch. For another QR type, copy its exact key from QR type reference on the same screen; the visible type label is not the key.
  5. Use a complete URL, including https://. Put a name containing a comma inside double quotes, for example "Menu, main floor". Do not put a line break inside a quoted cell.

Generate and inspect a batch

  1. Review the names, keys and URLs in CSV rows. Check that you have replaced the example destinations.
  2. Select Generate QR codes once and wait for its result.
  3. After Bulk QR generation completed., read Created [count] QR codes. Valid rows become active campaigns immediately; invalid rows are skipped.
  4. Select Your campaigns. Search the names from your batch and open each practice campaign to check its destination.
  5. Open its QR design, download the desired image format and scan the actual exported image with a phone. Confirm the destination before distributing or printing it.

Correct a partial result without duplicating the batch

  1. Compare the created count with your entered lines. Open Your campaigns and identify the names/destinations that actually exist.
  2. Build a new CSV containing only the missing or invalid rows, correct their type keys and URLs, then generate that smaller batch.
  3. Do not submit all original rows again just to fix one failure. This screen creates new records; it does not update matching names or deduplicate the input.
  4. If generation reports an error, check the campaign list before retrying. If a warning appears, do not assume an older LAST GENERATION count describes the failed attempt.

Fields and examples

Field or choiceHow to use it
nameColumn 1. A non-empty internal campaign name. Example: Spring offer. A comma in the name requires CSV double quotes.
type_keyColumn 2. An exact key from QR type reference, such as dynamic_url. Do not substitute Dynamic URL or a translated display name.
urlColumn 3. A complete valid destination URL. Example: https://example.com/spring; replace the example domain with your own destination.
CSV rowsPaste plain CSV text into this field. QR Bulk does not use the Short Link Bulk header/file-upload workflow.
rows enteredCounts non-empty lines before validation. A header or invalid row can be counted here and then skipped.
Created countCounts campaigns created by the last successful generation in this page state. It is not an update count or scan count.
Other QR typesBulk creation supplies a name, type and URL. A contact card, menu or other structured type may still need Edit content before it is useful; test its final output.

Check your finished result

  • Check each saved campaign’s name, type and destination in Your campaigns.
  • For a practice batch, reconcile every input row with a saved campaign or an identified skipped row.
  • Scan the exported image and check the URL/content reached, not just the editor preview.

Problems and fixes

What you seeWhat to do next
Bulk row limit reachedReduce the number of non-empty input lines. The row limit is checked before invalid rows are filtered out.
QR campaign limit reachedThe workspace cannot fit all valid incoming campaigns under its current allowance. Review existing campaigns or ask the owner about the plan.
No valid QR rows foundCheck column order, a non-empty name, an exact type key and a complete valid URL. Remove a header row.
Created count is lower than rows enteredInvalid rows are skipped. Compare against saved campaigns, then correct only missing rows.
A URL moved into the wrong columnQuote names containing commas. Keep each campaign on one physical line.
The same campaign appears twiceRunning the same input again creates another record. Review and remove unwanted duplicates through the campaign list only after identifying them.
QR scans but shows incomplete contentOpen Edit content for that campaign, complete the type-specific content and save. Three bulk columns do not fill every structured QR field.

Technical reference

Role-scoped source references

Pinned commit: ca125291cce57358ac4842e50928bc31fc6eab07

Source-only route information
MethodSource-default route
GET/portal/qr-codes/bulk