店頭の値札、レジ横の卓上カード、商品に同梱するリーフレット、イベント会場のポスター。紙の上に QR コードを一つ置いておくだけで、手に取ったお客様をそのままオンラインストアの商品ページへ案内できます。ところが実際にやってみると、QR コードの画像を作るところまでは簡単でも、「何ミリで刷れば読めるのか」「QR だけ置いても何のコードか伝わらない」「商品が 80 点あると 80 回作業が要る」といった、印刷する段階の手間でつまずきがちです。
この記事では、Shopify の管理画面の中で印刷用の QR コードを作り、そのまま刷れる形で書き出せるアプリ「シンプルQRコード|お手軽QRコード作成・印刷アプリ」(英語名: UR: QR Code Generator|Print)を取り上げます。管理画面の 3 つのメニューと作成画面の設定項目を、実際の画面を 1 枚ずつ見せながら、すべて解説します。
あわせて、画面には出てこない制約(保存されない欄、扱える件数の上限、警告が出る条件)や、アプリを使わずにコードで同じことをする場合の手順にも触れます。導入を迷っている方は、最後まで読めば「自分の店で何ができて、何ができないか」の見当がつくはずです。
「シンプルQRコード」は、日本の開発元 UnReact が提供している Shopify アプリです。Shopify App Store からインストールすると、管理画面の「アプリ」の下に「QRコード」「まとめて作成」「設定」の 3 つのメニューが追加されます。
作れる QR コードの行き先(宛先)は 6 種類です。商品ページ、コレクション、固定ページやブログ記事、ストアの外を含む任意の URL、商品が入った状態のカート、割引が適用された状態のストア。作った QR は PNG・SVG・A4 の PDF のいずれかで書き出せます。
このアプリの考え方をひとことで言えば、「印刷物の寿命を、アプリの契約に縛らない」です。作成画面の初期値は静的 QR コードで、QR の中にはストアの公開 URL がそのまま書き込まれます。お客様のスマートフォンは、このアプリのサーバーを一切経由せずにストアへ直接つながります。だから、このアプリの利用をやめた後でも、すでに配ったチラシや値札の QR は読み取れます。

動的 QR コード(あとから飛び先を変えられ、読み取り回数も数えられる方式)も選べますが、こちらはアプリを経由する仕組みなので、解約すると読み取れなくなります。作成画面でも設定画面でも、その違いがはっきり書かれています。どちらを使うべきかは、後の「種別」の節で詳しく説明します。
テーマ(ストアのデザイン)には何も追加しません。テーマエディタでブロックを置く作業も、コードを貼る作業もありません。お客様が触れるのは、刷り上がった紙の上の QR だけです。
QR コードのアプリを選ぶときに、いちばん見落とされやすいのがこの点です。宛先をアプリのサーバーで解決する方式の QR は、アプリの障害、設定変更、アンインストール、無料枠の終了のどれか一つで、刷って配った分がまとめて開けなくなります。管理画面は正常に見えるので、店側はお客様に「読めませんでした」と言われて初めて気づくことになります。
このアプリは、初期値の静的 QR にストアの URL をそのまま埋め込みます。アプリが止まっても、契約をやめても、QR の中身は変わりません。値札や商品タグのように数が多く、回収が難しい印刷物には、この性質がいちばん効きます。
QR コードを単独で貼っても、お客様には何が開くのか伝わりません。このアプリでは QR の上と下に 1 行ずつ文字を入れ、QR と一緒に 1 枚の画像として書き出せます。「秋の新作コレクション」「スマホで読み取るとご覧いただけます」といった案内を、画像編集ソフトで足し直す必要がなくなります。
さらに PDF を選べば、A4 の用紙にそのまま刷れる形で出てきます。「まとめて作成」の面付け PDF なら、1 枚の A4 に何面も並んだ状態で出てくるので、刷ってカットすれば値札の束になります。
作成画面の「印刷サイズ(mm)」に一辺の長さを入れると、右側のプレビューがその大きさに近い寸法で表示されます。値札に 20mm で載せるのか、ポスターに 100mm で載せるのかを、刷る前に画面の上で比べられます。書き出す PNG は 300dpi で作られるので、印刷用としても解像度が足りなくなる心配はありません。
「まとめて作成」では、商品を選んでいくだけで、その全部の QR を一度に書き出せます。形式は ZIP(PNG)、ZIP(SVG)、面付け PDF の 3 つです。店頭に並ぶ全商品に QR 付きの棚札を付けたい、といった場面で、1 件ずつ作成画面を開く手間がなくなります。
管理画面の文言は、日本語・英語を含む 20 言語に切り替えられます。初期状態では Shopify アカウントの言語が使われるので、日本語の管理画面を使っている方は、何も設定しなくても日本語で表示されます。海外のスタッフと管理画面を共有している店舗でも、それぞれの言語に切り替えて使えます。
良い点だけを並べても判断の材料にならないので、使う前に知っておいたほうがよい制約も挙げておきます。どれも、使い方を工夫すれば困らないものです。
「QRコードの上の文字」と「QRコードの下の文字」は、書き出す画像には反映されますが、QR コードを保存しても記録されません。保存して画面を開き直すと、2 つの欄は空に戻っています。同じ紙面を作り直すときは、文字を入れ直してから書き出す必要があります。
動的 QR は、読み取られるたびにアプリのサーバーを経由して飛び先へ転送する仕組みです。そのぶん、飛び先の変更や回数の計測ができますが、アプリの利用をやめると転送も止まります。これは仕組み上避けられないので、印刷して配る用途には静的を選ぶ、という使い分けが前提になります。
読み取り回数を数えられるのは動的 QR だけです。静的 QR はアプリを通らないので、一覧の「スキャン数」は「—」になります。動的 QR の回数も、同じ瞬間に複数の人が読み取ると数えきれないことがあり、画面にも「おおよその値」と明記されています。正確な流入数が欲しい場合は、後述の流入計測を使って Shopify のレポート側で見るのが向いています。
「まとめて作成」で一度に選べる商品は 100 件までです。1 件ごとに 300dpi の画像を作るため、件数を増やすとブラウザのメモリが先に足りなくなるためです。また、まとめて作った QR は静的 QR として画像を書き出すだけで、一覧には残りません。宛先が商品ページの URL そのものなので、保存しなくても読み取りには困りませんが、「あとで一覧から同じものを出し直す」ことはできません。
QR の中央に重ねるロゴは、ファイルをアップロードするのではなく、画像の URL を貼り付けて指定します。ストアの管理画面の「コンテンツ」→「ファイル」に画像を上げて、その URL をコピーする一手間がかかります。
Shopify のカート URL は、定期購入(サブスクリプション)として商品を入れることに対応していません。そのため、定期購入専用の商品は、カートに入れる QR の対象にできません。商品ページへ案内する QR であれば問題なく作れます。
実寸に近いプレビューを見て、ファイルを落として印刷する、という作業が中心なので、スマートフォンからの操作は想定されていません。
料金は 1 プランだけです。機能による上下のプランはありません。
無料体験の期間中も、作成画面・まとめて作成・面付け PDF まで、すべての機能を使えます。体験期間のうちに実際に 1 枚刷って、店頭で何台かのスマートフォンで読み取ってみるのがおすすめです。
なお、無料体験の終了や解約によって、静的 QR が読み取れなくなることはありません。課金の状態と、配った QR の有効性は切り離されています。
インストールの手順は、他の Shopify アプリと同じです。
Shopify 管理画面の左下にある「設定」を開きます。

設定の中の「アプリと販売チャネル」を選び、そこから Shopify App Store へ進みます。

App Store の検索窓に「UR: QR Code Generator」と入力します。アプリストア上の正式な表示名は「UR: QR Code Generator|Print」です。

詳細ページが開いたら「インストール」を押します。続けて、アプリが使う権限(商品の読み取り、割引の読み取り、QR コードの保存先の読み書きなど)が表示されるので、内容を確かめて確定します。

顧客情報や注文情報を読む権限は求められません。このアプリは、お客様の個人情報に一切触れない作りになっています。
インストールが終わると、管理画面の左側のメニューにアプリ名が入り、その下に 3 つのメニューが並びます。

どの画面でも、右下に「ご利用ガイドは こちら」というリンクが出ています。操作に迷ったときは、ここからShopifyでQRコードを作成して商品タグやチラシ・ポスターに印刷できるアプリについて徹底解説|ご利用ガイドを開けます。
QR の作成画面は、一覧の右上のボタンから開きます。作成画面には「基本情報」「宛先」「種別」「デザイン」「印刷レイアウト」「流入計測」の 6 つの入力ブロックが縦に並び、右側に「プレビュー」と「ダウンロード」が置かれています。
ここからが本題です。一覧、行の操作、作成画面の各ブロック、まとめて作成、設定の順に、画面の項目を 1 つずつ見ていきます。
左のメニューの「QRコード」を押すと開く画面です。保存した QR が表の形で並びます。

表の列は 6 つです。
画面右上には「まとめて作成」と「QRコードを作成」の 2 つのボタンがあります。前者は一括で書き出す画面へ、後者は 1 件ずつ作る画面へ移動します。まだ 1 件も保存していないときは、表の代わりに「まだQRコードがありません」という案内と作成ボタンだけが表示されます。

名前は印刷物には出ないので、自分が見分けやすいように付けて構いません。「店頭ポスター用|新作スノーボード」「スキーワックス|棚札」のように、貼る場所と中身を両方書いておくと、件数が増えても探しやすくなります。
各行の右端にある「…」を押すと、3 つの操作が出ます。

動的 QR の編集画面では、いちばん上に「スキャン数」のカードが加わり、これまでに読み取られた回数が表示されます。カードの横には「同時に読み取られたときに数えられないことがあるため、おおよその値です。」という注記も付いています。

削除したときの影響は、種別によって正反対になります。静的 QR は、一覧から消しても印刷済みの QR は開けます。中身がストアの URL そのものだからです。動的 QR は、削除するとアプリが転送先を引けなくなります。この場合、読み取ったお客様はエラーページではなくストアのトップページへ送られますが、本来見せたかったページには届きません。動的 QR を消すときは、その QR を刷った紙が手元に残っていないかを先に確かめてください。
一覧の「QRコードを作成」を押すと開く画面です。最初のブロックが「基本情報」で、入力欄は「QRコードの名前」の 1 つだけです。

欄の下には「管理画面での識別に使います。印刷物には出ません。」と書かれています。ただし、名前は 2 か所で裏方として使われます。
2 つ目には落とし穴があります。日本語の名前から作られた参照コードは、URL に載るときに 1 文字が 9 文字前後の記号列に変換されます。静的 QR では、その長い文字列が QR の中にまるごと入るため、名前が長いと QR の模様が細かくなります。小さく刷る QR では、参照コードを英数字で自分で入れておくほうが安全です。
画面右上の「保存」を押すと、その QR が一覧に記録されます。ダウンロードするだけなら保存は要りません。保存しておく利点は、後から同じ設定で出し直したり、複製して似た QR を作ったりできることです。
「宛先」ブロックの「種類」で、読み取ったときに開くページの種類を選びます。選べるのは「商品ページ」「コレクション」「ページ・ブログ記事」「任意のURL」「カートに入れる」「割引コード」の 6 つで、初期値は「商品ページ」です。
商品ページを選んでいるときは「商品を選ぶ」ボタンが出ます。押すと、Shopify 標準の商品選択画面が開きます。

商品を 1 つ選んで「追加」を押すと、右側のプレビューに QR が描かれ、その下の「読み取り先」に実際に開く URL が表示されます。

商品を選ぶと、その下に「バリアントを指定する(任意)」というボタンが加わります。欄の下には「指定しない場合は、商品ページをそのまま開きます。」と添えられています。

バリアント(サイズや色などのバリエーション)を指定したいときは、このボタンを押します。その商品のバリエーションだけが並んだ選択画面が開きます。

指定すると、読み取り先の URL の末尾に ?variant= とバリエーションの番号が付き、そのバリエーションが選ばれた状態で商品ページが開くようになります。ボタンの表示は「バリアントを選び直す」に変わり、横に「指定を外す」のリンクが出ます。

使い分けの目安は売り場の作りです。サイズごとに棚が分かれている店なら、棚ごとにバリエーションを指定した QR を貼ると、お客様は選び直さずに済みます。1 か所に全サイズを並べている店なら、指定せずに商品ページを開かせ、お客様に選んでもらうほうが自然です。
「種類」で「コレクション」を選ぶと、ボタンが「コレクションを選ぶ」に入れ替わります。

押すと、ストアのコレクションの一覧が、各コレクションに含まれる商品数と一緒に表示されます。選べるのは 1 つだけです。

選ぶと、ボタンの横にコレクション名が出て、読み取り先が /collections/コレクションのハンドル の形になります。

「秋の新作」「セール対象」「ギフト向け」のように、まとまりで見てほしいときの種類です。ポスターやチラシ、ショーウィンドウの貼り紙のように、特定の 1 商品ではなく売り場全体へ誘う紙とよく合います。コレクションの中身は Shopify 側で入れ替えられるので、QR を刷り直さずに紹介する商品を季節ごとに変えられる、という使い方もできます。
「ページ・ブログ記事」を選ぶと、2 つの入力欄が出ます。こちらは選択画面ではなく、ハンドル(URL の末尾の部分)を文字で入力します。

ブログのハンドルを空にしておくと、読み取り先は /pages/入力したハンドル になります。両方入れると /blogs/ブログのハンドル/記事のハンドル になります。上の画面では、news ブログの how-to-care という記事が読み取り先になっています。
ハンドルは、Shopify の管理画面でページや記事を開いたときの「検索結果のプレビュー」欄の URL の末尾で確認できます。お手入れ方法、組み立て方、ブランドの紹介といった読み物は、商品に同梱する紙に載せると、購入後のお客様に読んでもらうきっかけになります。
「任意のURL」を選ぶと、「URL」の欄が 1 つ出ます。ストアの外のページも指定できます。予約フォーム、地図アプリの店舗ページ、SNS のアカウントなど、ストアの外へ案内したいときの種類です。

欄の下には「http:// または https:// で始まるURLを入力してください。」と案内が出ています。この条件を満たさない URL のまま保存しようとすると「このURLは使用できません。」と表示され、保存されません。
ここで一つ注意があります。上の画面のように www. から書き始めた URL でも、右側のプレビューには QR が描かれ、ダウンロードのボタンも押せてしまいます。保存は止まりますが、書き出しは止まりません。ブラウザのアドレス欄からコピーせず手で打ち込むときは、必ず https:// から入力し、プレビューの「読み取り先」が https:// で始まっていることを確かめてから書き出してください。
「カートに入れる」は、読み取った瞬間に商品がカートに入った状態でストアが開く種類です。

セット商品、イベント会場での事前購入、定期便の初回などのように、「これとこれを買ってほしい」が決まっている場面で強い種類です。会場限定の割引コードと組み合わせると、お客様は読み取ってから支払いまで、商品を探す手順を一つも踏まずに済みます。
画面の上には、定期購入(サブスクリプション)の商品を追加できない旨の注意が常に出ています。定期購入専用の商品を選んだ場合は、その場でカートの行に加わらず、通知で知らされます。仮に通信の具合で判定をすり抜けても、保存のときにもう一度確かめられ、「定期購入(サブスクリプション)の商品はカート投入のQRに追加できません。」と表示されて保存は止まります。
「割引コード」を選ぶと「割引コード」の欄が 1 つ出ます。Shopify の「ディスカウント」で作っておいた割引コードを入力します。

読み取り先は /discount/コード の形になり、読み取ったお客様のカートに割引が適用された状態でストアが開きます。チラシに「このコードで 10% オフ」と書いてお客様に打ち込んでもらう代わりに、読み取るだけで済むようになります。
画面には出てこない話ですが、コードに空白や % などの記号が含まれる場合、Shopify は URL の中でそれを 2 回重ねて変換した形でないと割引を適用しません。たとえば SAVE 10% は SAVE%252010%2525 という形になります。このアプリは Shopify と同じ規則で自動的に変換するので、コードを作るときに記号を避ける必要はありません。
「種別」ブロックの「QRコードの種別」で、静的か動的かを選びます。初期値は「静的(解約後も読み取れる)」です。
静的を選んでいるときは、緑の帯で「このQRコードはアプリを解約したあとも読み取れます。」と表示されます。「動的(宛先を変更でき、スキャン数を数える)」に切り替えると、帯が黄色い警告に変わります。

2 つの違いを整理すると次のとおりです。
https://ストアのドメイン/apps/…/q/コード の形の、アプリを経由する URL です動的 QR の URL はストアのドメインのまま(/apps/ の下)なので、お客様のスマートフォンには見慣れないドメインが表示されません。短縮 URL のサービスを挟まないため、社内や公共の Wi-Fi のフィルタに止められる心配も少ない作りです。
それでも、判断の軸は「その紙を、自分の手で回収・差し替えできるか」に置いてください。レジ横の卓上カードや店内のポップなら、必要になれば刷り直せるので、動的の便利さを安心して使えます。お客様の手に渡るチラシ、商品タグ、同梱物は回収できないので、静的を選ぶのが確実です。
「デザイン」ブロックでは、刷り上がりの見た目を決めます。項目は 4 つです。

前景色を変えると、右側のプレビューにすぐ反映されます。下の画面は、前景色を紺(#1a3c6e)、印刷サイズを 45mm にしたときのものです。プレビューの下には「画面上のおおよその実寸です(45mm)。」と出ていて、初期値の 30mm のときより QR が大きく描かれています。

色を選ぶときは、前景を濃く、背景を白に近くするのが基本です。前景を明るい色にしたり、薄い色どうしを組み合わせたりすると、読み取り機によっては認識しません。ブランドカラーを使うなら、濃い一色を前景に置き、背景は白のままにしておくのが無難です。
ロゴの欄の下には「ロゴを入れると、読み取りやすさを保つため自動で誤り訂正を強くします。」と書かれています。QR には、一部が汚れたり隠れたりしても読めるように、情報を重ねて持つ「誤り訂正」という仕組みがあります。このアプリでは、ロゴがないときは標準の強さ(M)、ロゴを入れたときは最も強い段階(H)に自動で切り替わります。
印刷サイズの欄の下には「余白と誤り訂正は、読み取れなくならないよう自動で設定されます。」とあります。QR の周りの余白(クワイエットゾーン)と誤り訂正の強さは、あえて変えられないようにしてあります。余白を削れる作りにすると、画面では読めるのに刷ると読めない QR が作れてしまうからです。

印刷サイズの目安は、値札や商品タグなら 20〜25mm、卓上カードなら 40〜50mm、ポスターなら 100mm 以上です。書き出す PNG は 300dpi なので、30mm なら約 354 ピクセル四方、100mm なら約 1,181 ピクセル四方の画像になります。ロゴを載せる場合は、誤り訂正が強くなっても小さく刷るほど不利になるため、30mm 以上を目安にしてください。
「印刷レイアウト」ブロックには、2 つの欄があります。
ここに入れた文字は、書き出す画像の中に QR と一緒に描き込まれます。上には見出し(商品名やキャンペーン名)、下には行動を促す一文(「スマホで読み取ると詳しい情報が見られます」など)を入れるのが定番の組み合わせです。
右側のプレビューに描かれるのは QR だけで、上下の文字はプレビューには出ません。文字の入り具合は、書き出したファイルで確認します。
そして、この 2 つの欄は保存の対象外です。保存して画面を開き直すと空に戻るので、「文字を入れる → そのまま書き出す」を一続きで済ませるのが確実な手順です。
日本語の文字もそのまま描き込まれます。PDF に日本語を直接書き込むと、フォントの都合で文字が消えてしまうことがあるため、このアプリは QR と文字をまとめて画像にしてから PDF に配置しています。英語の管理画面で確かめたときだけ文字が出て、日本語では消える、という事故が起きない作りです。
「流入計測」ブロックは、QR から来たお客様を Shopify のレポートで見分けられるようにするための欄です。ブロックの説明には「Shopifyの標準レポートで、このQRコードからの流入を見られるようにします。」とあります。
in-store-shelf)printed-qr-code)2026-winter-wax)![]()
値を入れると、読み取り先の URL の末尾にそれぞれが付け足されます。下の画面では、バリエーションの指定に続けて ref と 3 つの utm_ が並び、URL がかなり長くなっているのが分かります。
![]()
紙から QR で来たアクセスは、何もしないとリンク元の情報を持たないため「直接アクセス」と見分けがつきません。紙面ごとに値を変えておくと、「棚札とポスターのどちらから来た人が多いか」を比べる材料になります。
ただし、パラメータを足すほど URL は長くなり、QR の模様が細かくなります。読み取り先の URL が 200 文字を超えると、作成画面に次の警告が自動で出ます。

警告の文面は「URLが長いため、小さく印刷すると読み取れないことがあります。印刷サイズを大きくするか、計測パラメータを減らしてください。」です。画面のプレビューは大きく表示されるので読めてしまい、刷って初めて読めないと分かる、という種類の失敗です。値札のように小さく刷る QR では、参照コードだけにとどめ、utm_ は入れないのが無難です。
画面の右側には「プレビュー」と「ダウンロード」の 2 枚のカードがあります。プレビューには QR、実寸の目安、「読み取り先」の URL が表示され、右上には静的・動的のバッジが付きます。

「読み取り先」は、刷った後に取り返しのつかない唯一の情報です。とくに静的 QR は、刷った後に飛び先を変えられません。書き出す前に、この URL をクリックして実際に開いてみる習慣をつけておくと安心です。
ダウンロードのボタンは 3 つです。
カードの下には「SVGは拡大しても粗くなりません。大きく印刷するときに使ってください。」と添えられています。迷ったら、値札や商品タグは PNG、ポスターは SVG、手元のプリンターで刷るだけなら PDF と覚えておけば足ります。
保存すると、画面のタイトルが「QRコードを作成」から QR の名前に変わります。このとき、印刷レイアウトの上下の文字は空に戻ります。

左のメニューの「まとめて作成」を開くと、複数の商品の QR を一度に書き出す画面になります。冒頭の案内には、ここで作る QR は静的で、保存せずに画像として書き出すことが書かれています。

「対象の商品」の「商品を選択」を押すと、商品の選択画面が開きます。こちらは複数選択ができ、画面の左下に「0/100件の商品を選択済み」と上限が表示されます。101 件目はそもそも選べません。

選んだ商品は、「対象の商品」の下にタグの形で並びます。タグの「×」を押すとその商品だけを個別に外せ、「選択を解除」を押すと全部まとめて外せます。その下に「◯件の商品が対象です」と件数が出て、書き出しのボタンが 3 つ並びます。

面付け PDF は、用紙の周囲に 10mm の余白を取り、QR どうしを 4mm 離して並べます。1 枚に何面入るかは印刷サイズから自動で計算されるので、列数や行数を考える必要はありません。小さめのサイズなら 1 枚に数十面、100mm なら数面になります。

件数が多いときは、書き出しの途中で進み具合を示すバーが出ます。1 件ずつ印刷用の解像度で画像を作っているため時間がかかります。終わるまで画面を閉じないでください。100 件を超える商品を扱うときは、コレクションや売り場の単位で何回かに分けると、途中で止まりにくくなります。
ここで作った QR は一覧に残りません。後から「この商品だけ色を変えて刷り直したい」となったときは、作成画面で 1 件ずつ作り、保存しておくのが向いています。
左のメニューの「設定」を開くと、上から「言語設定」「QRコードについて」「おすすめアプリ」の 3 つのカードが並びます。画面左上の「←」は「一覧に戻る」ボタンで、押すと QR の一覧に戻ります。

「言語設定」では、「言語を選択」から管理画面の言語を選び、「変更する」を押します。日本語、英語、ドイツ語、フランス語、スペイン語、イタリア語、オランダ語、ポルトガル語(ブラジル・ポルトガル)、デンマーク語、スウェーデン語、ノルウェー語、フィンランド語、ポーランド語、チェコ語、トルコ語、タイ語、韓国語、中国語(簡体字・繁体字)の 20 言語から選べます。
「QRコードについて」のカードは、操作する項目のない読み物です。解約する前に知っておくべき 3 点が、いつでも見える場所に置かれています。

「おすすめアプリ」には、同じ開発元の他のアプリが並びます。右上の「×」で閉じられ、QR の機能には影響しません。
このアプリはテーマを編集しないので、ほかのアプリでよくある「テーマに追加する」手順はありません。お客様の側で何が起きるかを、種別ごとに整理しておきます。
静的 QR の場合、スマートフォンのカメラが QR の中の URL を読み、そのままストアのページを開きます。アプリのサーバーは通りません。開くのはストアの通常のページなので、デザインはテーマのままです。カートに入れる QR なら商品が入ったカートが、割引コードの QR なら割引が適用された状態のストアが開きます。
動的 QR の場合、スマートフォンはまず https://ストアのドメイン/apps/…/q/コード を開きます。Shopify がこのリクエストをアプリに転送し、アプリが保存されている宛先を引いて、そちらへ転送し直します。同時に読み取り回数を 1 つ増やします。お客様から見れば一瞬でページが開くだけですが、間にアプリが挟まっているので、アプリが止まれば転送も止まります。
なお、開発用のストアのようにパスワードで保護されているストアでは、どちらの種別でも最初にパスワードの画面が出ます。これは Shopify の仕様で、公開中のストアでは起きません。
ここまでの項目を、よくある使い方ごとに組み合わせておきます。
小さく刷るので、URL を短く保つことが最優先です。参照コード 1 つなら URL はほとんど伸びません。
大きく刷る紙なら、計測パラメータを入れても読み取りに響きません。紙面ごとに値を変えておけば、次にどの紙を増やすかを決める根拠になります。
読み取った時点で商品も割引も入っているので、レジに並ばずに購入まで進んでもらえます。
「今週のおすすめ」のように中身が変わるものを、同じ紙のまま回したいときの設定です。自分で回収できる紙に限って使い、読み取り回数を見ながら置き場所を変えてみる、といった使い方に向いています。
Shopify の管理画面にはアプリなしで QR を作る機能が限られているため、自力でやるなら外部のツールかスクリプトを使うことになります。ここでは、Node.js で全商品の QR を印刷用の PNG として書き出す例を示します。アプリが内部でやっていることのうち、どこを自分で面倒を見ることになるのかを知る材料として読んでください。
最初に、商品ごとの公開 URL を集めます。Shopify の Admin GraphQL API の products を 100 件ずつ読み、onlineStoreUrl(オンラインストアでの公開 URL)を取り出します。実行には、カスタムアプリで発行した Admin API のアクセストークンが必要です。
// fetch-products.mjs — 公開中の商品の URL を集める
const SHOP = 'your-store.myshopify.com';
const TOKEN = process.env.SHOPIFY_ADMIN_TOKEN;
const QUERY = `query ($cursor: String) {
products(first: 100, after: $cursor) {
nodes { handle title onlineStoreUrl }
pageInfo { hasNextPage endCursor }
}
}`;
export const fetchProducts = async () => {
const products = [];
let cursor = null;
do {
const res = await fetch(`https://${SHOP}/admin/api/2025-10/graphql.json`, {
method: 'POST',
headers: { 'Content-Type': 'application/json', 'X-Shopify-Access-Token': TOKEN },
body: JSON.stringify({ query: QUERY, variables: { cursor } }),
});
const json = await res.json();
// GraphQL は失敗しても HTTP 200 を返すので、errors を必ず見る
if (json.errors) throw new Error(JSON.stringify(json.errors));
const page = json.data.products;
// 非公開の商品は onlineStoreUrl が null になるので除く
products.push(...page.nodes.filter((p) => p.onlineStoreUrl));
cursor = page.pageInfo.hasNextPage ? page.pageInfo.endCursor : null;
} while (cursor);
return products;
};
do ... while で次のページがある限り読み続け、最後に公開中の商品だけを残しています。コメントにも書いたとおり、Shopify の GraphQL は権限不足などで失敗しても HTTP のステータスは 200 のまま返ってきます。errors を見ないと、空の結果を「商品が 0 件だった」と取り違えます。
次に、npm の qrcode パッケージで画像にします。印刷サイズ(mm)から 300dpi のピクセル数を計算し、参照コードを付けた URL を QR にします。
// make-qr.mjs — mm を 300dpi のピクセルに直して PNG を書く
import fs from 'node:fs/promises';
import QRCode from 'qrcode';
import { fetchProducts } from './fetch-products.mjs';
const SIZE_MM = 25;
const DPI = 300;
const widthPx = Math.round((SIZE_MM / 25.4) * DPI); // 25mm なら 295px
await fs.mkdir('qr', { recursive: true });
for (const p of await fetchProducts()) {
const url = new URL(p.onlineStoreUrl);
url.searchParams.set('ref', `shelf-${p.handle}`);
if (url.href.length > 200) console.warn(`URL が長い: ${p.handle}`);
await QRCode.toFile(`qr/${p.handle}.png`, url.href, {
width: widthPx,
margin: 4, // 余白(クワイエットゾーン)は削らない
errorCorrectionLevel: 'M',
});
}
1 インチは 25.4mm なので、mm ÷ 25.4 × dpi でピクセル数が出ます。margin: 4 は QR の規格が求める余白の幅で、ここを小さくすると、画面では読めるのに刷ると読めない QR になりやすくなります。URL が 200 文字を超えたら警告を出しているのは、アプリの作成画面と同じ考え方です。
割引コードの QR を自作する場合は、コードを URL に載せるときの変換に注意が要ります。
// 割引コードを /discount/ の後ろに載せる形に変換する
// Shopify は 2 回重ねてエンコードした形しか受け付けない
const discountPath = (code) => `/discount/${encodeURIComponent(encodeURIComponent(code))}`;
discountPath('SAVE 10%'); // => '/discount/SAVE%252010%2525'
encodeURIComponent を 1 回だけかけた SAVE%2010%25 でもページは開きますが、割引は適用されません。エラーも出ないので、チラシを配ってからお客様に「割引が効かない」と言われて気づく、という失敗になりがちです。
ここまでのスクリプトで、全商品の QR を PNG で書き出すところまではできます。ただし、アプリでは画面の操作で済む次の部分は、自分で作り足すことになります。
年に一度、決まった商品の QR を作るだけならスクリプトでも足ります。売り場の入れ替えのたびに QR を作り直す店舗や、スタッフが交代で作業する店舗では、管理画面の中で誰でも同じ手順で作れることの価値が大きくなります。
Shopify 自身にも QR を作る手段があります。一つは管理画面の「ディスカウント」から作れる割引コードの QR(2026 年 4 月から)、もう一つは Shopify が提供する Shopcodes というアプリです。すでにこれらを使っている店舗が、このアプリを足すときの分担の決め方を書いておきます。
このアプリの「割引コード」で作る QR は、読み取り先が /discount/コード で、記号の変換も Shopify 標準と同じ規則です。つまり、同じコードを両方で作っても、お客様が開くページは変わりません。
分担の決め手は、紙にするかどうかです。レジの画面に一時的に出すだけなら、ディスカウントの画面で作れば手数が少なく済みます。チラシや卓上カードに刷るなら、このアプリで作れば、上下の文字入れ、印刷サイズの指定、A4 の PDF までを一続きで済ませられます。手順としては、先にディスカウントで割引コードを作り、そのコードをこのアプリの「割引コード」の欄に入れる、という順番になります。
すでに Shopcodes で作った QR を店頭に貼っている場合、それを作り直す必要はありません。新しく刷る分からこのアプリに切り替え、古い紙は貼り替えの時期が来たときに順に置き換えていけば十分です。
切り替えの際は、流入計測の参照コードを、これまでと区別できる値にしておくのがおすすめです。たとえば新しく刷る棚札には shelf-2026 のような共通の接頭辞を付けておくと、Shopify のレポートで新旧の紙を分けて見られます。
一つの値札に、Shopcodes の QR とこのアプリの QR を並べて貼るのは避けてください。お客様はどちらを読めばよいか迷いますし、流入の数字も 2 つに割れて比べにくくなります。商品ごと、あるいは売り場ごとに、どちらで作った QR を使うかを決めておくと、後の集計が楽になります。
「シンプルQRコード|お手軽QRコード作成・印刷アプリ」は、QR コードを作るだけでなく、紙に刷るところまでを管理画面の中で終わらせるためのアプリです。最後に、この記事で見てきた要点を振り返ります。
値札一枚、チラシ一枚の QR が、店頭とオンラインストアをつなぐ入口になります。その入口が、契約やアプリの都合で突然閉じないこと。それを最初の設計に据えたアプリです。7 日間の無料体験のうちに実際に 1 枚刷って、店頭で読み取るところまで試してみてください。
同じ開発元 UnReact のアプリの中から、店頭と組み合わせやすいものを紹介します。
カートページで、受け取る店舗と日時をお客様に指定してもらえるアプリです。店頭の QR からオンラインで注文してもらい、後日お店で受け取ってもらう、という流れを作れます。
ストアに表示したクーポンのバナーを押すだけで、割引が自動で適用されるアプリです。QR で来たお客様に、ストアの中でも同じキャンペーンを案内したいときに組み合わせやすい一本です。
購入後のサンクスページにクーポンを表示して、次の購入を後押しするアプリです。店頭の紙から初めてオンラインで買ってくれたお客様に、2 回目のきっかけを渡せます。
商品ページに割引率や割引額を表示するアプリです。値札の QR から開いた商品ページで、セール価格の大きさがひと目で伝わるようになります。