このアプリが商品ページに足すのは、購入ボタンの下に並ぶ一連のリンクボタンです。
押すと、そのモールや自社サイトの商品ページへ移動します。
日本でよく使われる販売先については、ボタンの色と文言が最初から入っています。
そのため、設定するのは基本的に URL だけです。
記事では、管理画面の 3 つの画面とすべての設定項目を、実際の画面と一緒に順番に見ていきます。
画面に書かれていない挙動(押せない条件、消したときに何が残るか、
入力すると何が起きなくなるか)もあわせて補足します。
後半には、同じことをテーマのコードで書こうとするとどこまでできるのかも載せました。
このアプリが持っているデータは、大きく 2 種類です。
1 つは商品ごとのリンクです。
「この商品は楽天のこの URL、Yahoo!のこの URL」という対応を、商品単位で持ちます。
もう 1 つが購入先の見た目です。
「楽天市場のボタンは赤で、文言はこれ」という定義を、ストア全体で 1 つだけ持ちます。
この分け方が効いてくるのは、ボタンの色や文言を変えたくなったときです。
商品が 500 点あっても、直すのは購入先の設定 1 か所で済みます。
商品ごとに文言を持たせる作りだと、500 回打ち直すことになります。
リンクは商品単位とバリエーション単位の両方で持てます。
ストアフロントで表示されるのは、次の順です。
つまり共通リンクだけ登録しておけば、全バリエーションで使われます。
色やサイズごとに URL が違うものだけ、個別に登録すれば足ります。
楽天市場や Yahoo!ショッピングは色・サイズで商品ページが分かれていることが多いので、
この落ち方が日本のモール併売に合っています。
ボタンの文言と見出しには、少し変わった仕様があります。
空欄のままにすると、買い手の言語に合わせた文言が出ます。
日本語の買い手には「楽天市場で購入」、英語の買い手には "Buy on Rakuten" のように切り替わります。
20 言語ぶんの訳がアプリに入っているためです。
入力すると、その文言がどの言語の買い手にもそのまま出ます。
入力欄が 1 つしかないので、入れた文字列がそのまま全員に表示されます。
直感に反しますが、空欄のままにしておくことが多言語対応になります。
日本語のお客様だけのストアなら、好きな文言を入れて構いません。
機能の一覧ではなく、日々の運用で何が変わるかという角度で整理します。
用途が合わない場面もあるので、先に書いておきます。
Shopify でしっかり売っている商品には向きません。
外部へのボタンを並べると、カートに入れてもらえたはずのお客様を外に出すことになります。
付けるかどうかは商品単位で判断してください。
商品ページ以外に置きたいストアにも向きません。
このアプリは商品ページ専用で、コレクションページやトップページには追加できません。
成果を計測したいストアは、モール側の仕組みと組み合わせる必要があります。
このアプリ自体はクリック数を数えません。
ブランドのロゴをボタンに出したいストアでは、画像を自分で用意することになります。
アプリは商標のアイコンを同梱していません。
プランは 1 つです。
機能によるプランの出し分けはありません。
導入の入口は、管理画面の左下にある「設定」です。

「アプリと販売チャネル」へ進むと Shopify App Store への導線があります。
そこでアプリ名を検索してください。

インストールが終わると、商品が 1 件も登録されていない状態で管理画面が開きます。
テーマにも何も追加されていないので、この時点ではストアの見た目は変わりません。
表示されるまでには、次の 2 つを両方やる必要があります。
片方だけでは何も出ません。 どちらを忘れても画面にエラーは出ないので、
「入れたのに変わらない」と感じたら、この 2 つが揃っているかを確認してください。
サイドバーには 3 つの入口が並びます。
それぞれが持つ責任がはっきり分かれているので、最初に押さえておくと迷いません。
外部購入リンク は商品ごとのデータを扱う画面です。
「この商品はどこで買えるか」だけをここで決めます。
購入先とボタンの設定 はストア全体の見た目を扱う画面です。
「楽天のボタンは何色で何と書くか」をここで一度だけ決めます。
設定 はテーマへの設置と管理画面の言語です。
最初に一度触れば、あとはほとんど開きません。
つまり日々触るのは 1 つ目、最初に整えるのが 2 つ目と 3 つ目という分担です。



この画面が、日々の作業のほとんどを占めます。
登録済みの商品が 1 行ずつ並び、左からサムネイル、商品名、右端に状態のバッジが付きます。
バッジは 3 種類あり、一覧を見るだけでその商品の状態が分かります。
リンク 2 はその商品に登録されているリンクの本数です。
リンク未設定 は一覧に追加しただけで、まだ URL を入れていない状態を示します。
カート非表示 はその商品の「カートに追加」と「今すぐ購入」を隠す設定になっていることを示します。
登録漏れを探すときは、まず「リンク未設定」のバッジを見てください。

右上のボタンを押すと、Shopify 標準の商品選択画面が開きます。
商品名で検索して、複数まとめて選べます。
ここで気づくのが、バリエーションが選べないことです。意図的にそうしてあります。
商品を 1 件追加すれば、その商品の全バリエーションが編集画面に並びます。
ピッカーでバリエーションまで選べるようにすると、
1 つの商品が一覧で何行にも増えて探せなくなるためです。

商品名で一覧を絞り込めます。
入力するとすぐに反映されるのは、手元の一覧を絞っているだけで、
サーバーへ問い合わせていないためです。
商品が数十点を超えたあたりから、この欄が実用になります。

行の右端のゴミ箱アイコンで、その商品を一覧から外せます。確認のダイアログが出ます。
ここで知っておきたいのが、外すとリンクとカート設定も一緒に消えることです。
しかも取り消せません。
リンクだけ残して一覧から消す、という動きにしなかったのは、
管理画面に出ていないのにストアフロントにはボタンが出続ける、
という食い違いを防ぐためです。

行をクリックすると、別画面へ移らずにモーダルが開きます。
一覧の位置を保ったまま編集できるので、商品を順に見ていくときに行き来がありません。
上半分にあるのが商品共通のリンクです。
ここに入れた URL は、その商品のどのバリエーションを選んでいても表示されます。
「リンクを追加」を押すごとに 1 本ずつ増え、本数に上限はありません。
1 本のリンクが持つのは 2 つだけです。
購入先 は、用意されているプリセットか、自分で登録した購入先から選びます。
リンク先 URL は http:// または https:// で始まる URL を入れます。
形式が違うと、入力欄の下に注意が出ます。
行の右端のゴミ箱アイコンで、その 1 本だけを削除できます。
ここで気づく制約が 1 つあります。
同じ購入先は 2 つ登録できません。
すでに使った購入先は選択欄から消え、「すでに登録した購入先は選べません。」と案内が出ます。
同じボタンが 2 つ並んでも意味が無いためです。
ただし、その他(自由入力)だけは何本でも登録できます。
同じモールの別ページを並べたいときに使えます。

「この商品では「カートに追加」と「今すぐ購入」を隠す」 にチェックを入れると、
その商品ページから Shopify の購入ボタンが消え、外部購入ボタンだけが残ります。
在庫を持たない商品をカタログとして載せるときに使う設定です。
ここには限界があり、画面にも注意書きが出ています。
テーマによっては隠せないことがあります。
購入ボタンはテーマが描いているものなので、
アプリはテーマの作りに合わせて隠す処理をしているためです。
隠せない場合は、画面の案内どおり
商品の在庫を 0 にして「在庫切れ時に販売を続ける」をオフにしてください。
こちらは Shopify 本体の挙動なので、テーマの作りに左右されません。

モーダルの下半分に、その商品の全バリエーションが並びます。
バリエーション名ごとに「リンクを追加」でき、商品共通と同じ項目を設定します。
まだ URL を入れていないバリエーションの欄には、
専用リンクが無いこと、そして商品共通のリンクが代わりに出ることが明記されます。
この一文があるおかげで、「登録し忘れ」なのか「共通でよい」のかが画面で判断できます。
制約が 1 つあり、バリエーションが 250 件を超える商品は、すべてを取得できません。
その場合は編集画面に警告が出ます。
一部のバリエーションだけ設定できない状態になるので、
警告が出たら商品を分けることを検討してください。
保存する は、何か編集したときだけ押せるようになります。
押せないときは、まだ何も変更していない状態です。
押せるかどうかで「変更があるか」が分かるので、
触ったかどうか迷ったときの判断材料になります。
閉じる でモーダルを閉じます。
未保存の編集があるときは
「保存していない編集内容があります。閉じると変更は破棄されます。」と出て、
「編集を続ける」か「破棄して閉じる」を選べます。

サイドバーの「購入先とボタンの設定」です。
ここで決めた文言と色を、すべての商品のボタンに使います。
最初から入っているのは 9 件です。
内訳は、日本のモールが 5 件(楽天市場、Yahoo!ショッピング、Amazon.co.jp、au PAY マーケット、Qoo10)、
英語圏が 3 件(Amazon(海外)、eBay、Etsy)、そして汎用の「その他(自由入力)」です。
文言と色を変えたいときだけ入力してください。変えなければ既定のまま表示します。
各カードが持つ項目は 5 つです。
ボタンの文言 は、空欄のままにすると買い手の言語に合わせた文言を表示します。
入力欄にはうすく既定の文言が見えていますが、これは見本であって保存はされません。
背景色 と 文字色 は、色見本を押すとカラーピッカーが開きます。
ブランドカラーをそのまま入れたいときのために、16 進数でも入力できます。
アイコン はボタンの文言の左に出す画像です。
表示イメージ には、設定した内容がその場で反映されます。

プリセットには、購入先ごとの色があらかじめ入っています。
Amazon.co.jp なら背景 #ff9900 に文字 #111111、
au PAY マーケットなら背景 #eb5505 に文字 #ffffff という具合です。


そのため、URL を入れるだけでモールらしい見た目のボタンが出ます。
色を揃える作業をしなくて済むのが、プリセットのある作りの利点です。
日本のモール以外にも、英語圏向けのプリセットが用意されています。



海外向けに販売しているストアでは、eBay や Etsy のボタンをそのまま使えます。
Amazon については Amazon.co.jp と Amazon(海外) が別のプリセットとして分かれています。
これは、同じ購入先を 2 つ登録できないという制約と関係しています。
もし 1 つにまとめてしまうと、
日本の Amazon と海外の Amazon の両方へ同時にリンクできなくなります。
併売しているストアが実在するため、あえて別々に持たせてあります。
この画面でいちばん注意したいのがここです。
画面にも案内が出ていますが、
文言を入力すると、その文言がどの言語の買い手にもそのまま表示されます。
入力欄が 1 つしかなく、翻訳されないためです。
多言語で販売しているストアでは、空欄のままにしておくのが正解になります。
空欄なら 20 言語に翻訳された文言が自動で出ます。
一度入力してしまったものを戻したいときは、
カードの右上にある 文言と色を既定に戻す のアイコンを使ってください。
入力した文言と色を消して、既定の状態に戻します。
アイコンの操作は 3 つです。
画像をアップロード でパソコンから画像を選び、
画像を変更 で差し替え、画像を外す で外します。
画像を設定しない場合は、外部リンクを表す記号(↗)が表示されます。
ここで知っておきたいのが、
アプリはブランドのアイコン(Amazon・楽天など)を同梱していないことです。
アプリが商標を全ストアへ配布する側に回らないようにするためです。
ブランドの図を出したい場合は、利用条件を確認したうえでご自身でアップロードしてください。

アップロードした画像は、ストアのコンテンツ > ファイルに保存されます。
アプリのサーバーには置きません。
ファイル画面から削除すると、ボタンのアイコンは記号(↗)に戻ります。
リンクとボタン自体は残ります。

上に無い購入先(自社サイトなど)を登録できます。
BASE、STORES、自社 EC サイトなどを足すときに使います。
「購入先を追加」で 1 件増えます。名前は必須です。
文言・背景色・文字色・アイコンは、用意されている購入先と同じように設定できます。
上限は 20 件です。用意されている購入先はこの枠を使いません。
削除するときは確認が出ます。
ここでも知っておきたい挙動があり、
削除しても、その購入先を使っているリンクは残ります。
ボタンの見た目が既定に戻るだけです。
リンクごと消えてしまうと、店主が気づかないまま導線が減るためこうしています。

上のカードは、テーマへ設置するための導線です。
プルダウンでテーマを選び、テーマに追加 を押すと商品ページの編集画面が新しいタブで開きます。
テーマをプレビュー のほうはブロックを追加せず、その商品ページを開くだけです。
画面にはこのアプリは商品ページ専用である旨の案内が出ています。
ほかのページには追加できません。

言語設定では管理画面の表示言語を選び、変更する を押すと切り替わります。
日本語・英語を含む 20 言語に対応しています。
選んだ言語はブラウザに保存されます。 別のパソコンで開くと既定の言語に戻ります。

自動追加がうまくいかないときは、テーマエディタで手動追加します。

ボタンの並べ方と余白はテーマエディタで決めます。
文言と色は「購入先とボタンの設定」側なので、混ざらないようにしてください。
上半分の設定は 5 つです。
見出しを表示する(初期値オン)は、ボタンの上の一言を出すかどうかです。
見出し(初期値は空欄)は、空欄なら買い手の言語に合わせた文言を表示します。
見出しも文言と同じで、入力するとどの言語の買い手にもその文言がそのまま出ます。
見出しそのものを消したいときは「見出しを表示する」をオフにしてください。
空欄にしても消えません(空欄は「翻訳された既定の文言を使う」という意味だからです)。
新しいタブで開く(初期値オン)は、外部サイトを新しいタブで開くかどうかです。
アイコンを表示する(初期値オン)をオフにすると、
アップロードした画像も含めて一切表示しません。
ボタンの配置は 3 つから選べます。
横幅いっぱい(初期値)はカートボタンと同じ幅にそろい、
左寄せと中央寄せは文字の長さぶんの幅になります。

下半分はすべてスライダーによる数値の指定です。
刻み幅が決まっているので、極端な値にはなりません。
文字サイズ は rem 単位で、0.8 から 1.6 まで 0.1 ずつ動かせます。既定は 1 です。
rem なのでテーマの基準サイズに追従します。
ボタンの高さ は 8 から 24 まで 1 ずつ、既定は 14 です。
名前は高さですが、実際には上下の内側の余白を指しています。
大きくするとボタンが縦に伸びるので、テーマのカートボタンとそろえるときに使います。
角の丸み は 0 から 30 まで、既定は 6 です。0 にすると四角いボタンになります。
ボタンの間隔 は 0 から 24 まで、既定は 8 です。
購入先が 3 つ以上並ぶストアでは、ここを広げると押し間違いが減ります。
上の余白 と 下の余白 は 0 から 60 まで 2 ずつで、どちらも既定は 12 です。
カートボタンとの距離を離したいときに調整します。
カートボタンを残したまま、外部購入ボタンを下に並べた状態です。

こちらはカートボタンを隠して、外部の購入先だけを見せた状態です。

スマートフォンでも同じ並びになります。


設定の組み合わせで見え方が変わるので、代表的な使い方を挙げます。
Shopify を主、モールを従として見せる形です。
カートボタンと同じ幅にそろえると、選択肢として自然に並びます。
チェックだけで隠せないテーマがあるため、在庫側もあわせて設定しておくと確実です。
共通リンクを入れておけば、個別に登録していないバリエーションでもボタンが出ます。
全バリエーションぶん登録する必要はありません。
どちらも空欄にしておくと、買い手の言語に合わせて 20 言語で表示されます。
1 つでも入力すると、その言語のまま全員に出ます。
自社のロゴなら商標の問題が無いので、安心してアップロードできます。
画面の説明だけでは見えにくい、実際の回し方をまとめます。
商品を追加する前に、購入先の見た目を先に決めておくのがおすすめです。
理由は、商品を登録したあとに文言や色を変えても全商品に反映されるとはいえ、
表示イメージを見ながら決めるほうが早いからです。
商品を触り始めてから戻ってくると、確認の往復が増えます。
多言語で販売していないストアなら、文言は好きなものに変えて構いません。
「楽天市場で購入」を「楽天でもお求めいただけます」にする、といった調整です。
全商品に付けると、Shopify で売れるはずだった商品まで外へ流れます。
先に基準を決めておくと、担当者が変わってもぶれません。
よくある基準は次の 3 つです。
一覧のバッジで「カート非表示」が付いているかを見れば、
どの商品をカタログ扱いにしたかが一目で分かります。
モール側の商品ページは、リニューアルや在庫切れで URL が変わることがあります。
登録するときに一度開いて、目的の商品ページが出ることを確認してください。
とくにバリエーション別のリンクは、
色違いの URL を貼り間違えても画面上は正常に見えます。
保存前に 1 つずつ開くのが確実です。
このアプリはクリック数を数えません。
どのくらい送れているかを知りたい場合は、
URL の末尾にモール側の計測用パラメータを付けるのが現実的です。
モールによって仕様が違うので、各モールの管理画面で確認してください。
パラメータを付けた URL をそのまま「リンク先 URL」に入れれば、
ボタンから流入したぶんがモール側の数字に乗ります。
ボタンにモールのロゴを出すと分かりやすくなりますが、
ロゴは各社の商標です。
アプリが同梱していないのは、アプリが商標を配布する側に回らないためです。
使う場合は、各社のガイドラインを確認したうえでご自身でアップロードしてください。
自社のロゴであればその心配が無いので、
「自分で登録した購入先」に自社サイトを入れる場合は気軽に使えます。
一覧から商品を外すと、リンクとカート設定も一緒に消えます。取り消せません。
一時的に非表示にしたいだけなら、
リンクを削除せずカートボタンの設定だけ戻すほうが安全です。
あとで復活させるときに、URL を入れ直さずに済みます。
つまずきやすい場面と、その確認手順をまとめます。
次の順に確認してください。
3 番は、一覧のバッジが「リンク未設定」のままなら未登録です。
購入ボタンはテーマが描いているため、テーマの作りによっては隠せません。
商品の在庫を 0 にして、「在庫切れ時に販売を続ける」をオフにしてください。
Shopify の標準機能なので、どのテーマでも確実に効きます。
そのバリエーション専用のリンクを登録しているか確認してください。
登録していない場合は、商品共通のリンクがそのまま表示されます(仕様どおりの動きです)。
テーマによっては、バリエーションを切り替えてもページの状態が変わらないものがあります。
その場合は切り替えが追従しないことがあります。
「購入先とボタンの設定」で文言を入力していないか確認してください。
入力した文言は翻訳されず、そのまま全員に表示されます。
入力欄を空にして保存すると、買い手の言語に合わせた文言に戻ります。
テーマエディタの「見出しを表示する」をオフにしてください。
入力欄を空にするだけでは消えません。
テーマエディタの「アイコンを表示する」がオフになっていないか確認してください。
オンなのに出ない場合は、ストアのファイルから画像が削除されている可能性があります。
その場合は記号(↗)が表示されます。
バリエーションが 250 件を超えている商品です。編集画面に警告が出ます。
商品を分けることを検討してください。
何も変更していない状態です。どこか 1 つでも編集すると押せるようになります。
同じことをテーマのコードで書くとどうなるかを見ておきます。
もっとも素直な方法は、商品メタフィールドに URL を入れて、
テーマの商品テンプレートで読むやり方です。
{% if product.metafields.custom.rakuten_url != blank %}
<a class="external-buy"
href="{{ product.metafields.custom.rakuten_url }}"
target="_blank" rel="noopener noreferrer nofollow sponsored">
楽天市場で購入
</a>
{% endif %}
rel に nofollow sponsored を付けているのは、
アフィリエイトなど金銭が絡むリンクとして検索エンジンに伝えるためです。
外部の販売先へ送るリンクでは付けておくのが無難です。
ここまでは難しくありません。
メタフィールドの定義を作り、商品ごとに URL を入れれば動きます。
色やサイズごとに URL を変えたい場合、バリエーションのメタフィールドを読むことになります。
{% assign v = product.selected_or_first_available_variant %}
{% assign url = v.metafields.custom.rakuten_url %}
{% if url == blank %}
{% assign url = product.metafields.custom.rakuten_url %}
{% endif %}
バリエーション側を優先し、空なら商品側に落とす、という処理です。
Liquid だけならここまでですが、問題はお客様がバリエーションを切り替えたときです。
Liquid はページを描画した時点で確定するので、
切り替えに追従させるには JavaScript が必要になります。
// バリエーションの URL をあらかじめ JSON で埋め込んでおき、切り替え時に差し替える
const urls = JSON.parse(document.getElementById("variant-urls").textContent);
document.addEventListener("change", (e) => {
if (!e.target.matches("[name=id]")) return;
const a = document.querySelector(".external-buy");
a.href = urls[e.target.value] || a.dataset.fallback;
});
バリエーション ID と URL の対応を JSON で埋め込み、
選択が変わったらリンク先を書き換える、という形です。
ただし、バリエーションの切り替えをどのイベントで検知するかはテーマによって違います。
[name=id] の変更で拾えるテーマもあれば、独自のイベントを発火するテーマもあります。
テーマを変えるたびに書き直すことになる部分です。
「カートに追加」を商品ごとに隠すには、その商品のときだけ CSS を当てることになります。
{% if product.metafields.custom.hide_cart %}
<style>
.product-form__submit,
.shopify-payment-button { display: none !important; }
</style>
{% endif %}
問題は、隠すべき要素のクラス名がテーマごとに違うことです。
上の例は一般的なクラス名ですが、これで消えないテーマは珍しくありません。
テーマを変えるたびにセレクタを調べ直すことになります。
そして、消しすぎるとバリエーションの選択欄ごと消えることがあります。
商品フォーム全体を隠してしまうと、色やサイズが選べない商品ページができあがります。
外部リンク系のアプリは複数ありますが、併用する意味はほとんどありません。
同じ役割のアプリを 2 つ入れても、リンクの管理場所が 2 か所になるだけです。
選び分けの軸になるのは、次の 3 点です。
1. 管理画面の言語
商品数が多いほど、この画面を触る時間が長くなります。
日本語で運用しているストアでは、引き継ぎのしやすさにも効いてきます。
2. モールのプリセットがあるか
楽天市場や Yahoo!ショッピングのボタンを、色と文言つきで持っているかどうかです。
無い場合は、色を調べて 1 件ずつ設定することになります。
3. バリエーション別に出し分けられるか
日本のモールは色・サイズごとに商品ページが分かれていることが多いため、
アパレルや雑貨では、ここが使えるかどうかで手間が変わります。
なお、このアプリを入れてもテーマや他のアプリの表示は壊れません。
テーマ拡張のブロックとして動くため、置いた場所にだけ表示されます。
乗り換えを検討する場合は、既存の表示を残したまま並行して試せます。
「シンプル外部購入リンク」は、
商品ページに外部の販売先へのボタンを並べて、商品ページをカタログとして使えるようにするアプリです。
日本のモールのプリセットが色と文言つきで入っているので、URL を貼るだけで使えます。
文言と色はストア全体で 1 か所に持つため、商品が増えても管理の手間は増えません。
バリエーション専用のリンクが無ければ商品共通に落ちる、
購入先を削除してもリンクは残る、保存ボタンは変更があるときだけ押せる。
どれも「気づかないうちに導線が減る」ことを避けるための作りです。
文言と見出しを空欄のままにしておけば 20 言語で切り替わるので、
多言語で販売しているストアでもそのまま使えます。
当社では、この記事のアプリ以外にも Shopify アプリを提供しています。
いずれも管理画面は日本語で、7 日間の無料体験からお試しいただけます。