Shopifyストアの売上を上げるための鉄板施策といえば「クーポン」ですが、こんな悩みはありませんか?
「クーポンを発行したのに、お客様が気づいてくれない」
「告知バーだと見落とされるし、ポップアップアプリは月額費用が高い…」
せっかくのお得なオファーも、決済画面に行くまで気づかれなければ意味がありません。
そこで今回は、アプリを一切使わず、コピペだけで実装できる「追従型クーポンバナー」の作り方を公開します。
このカスタマイズを行えば、スクロールしても常に画面の隅に「クーポン」が表示され、クリックするだけで自動的に割引が適用されるようになります。
カゴ落ち対策や客単価アップに非常に効果的ですので、ぜひ試してみてください。
もくじ
実装する機能の完成イメージ
今回実装するのは、以下のような仕様の高機能バナーです。

【このカスタマイズのポイント】
- PC/スマホ完全対応:PCでは大きく目立たせ、スマホでは操作の邪魔にならない位置に最適化。
- 自動適用リンク:クリックすると「クーポン適用済み」の状態で元の画面に戻ります。
- しつこくない制御:一度閉じるかクリックすると、ブラウザを閉じるまで再表示されません(嫌われない仕様)。
- アプリ不要:月額0円。サイトの表示速度もアプリより高速です。
実装手順
手順は大きく分けて以下の3ステップです。
- Shopify管理画面でクーポンを作成する(重要)
- 新しいスニペットファイルを作成する
- コードをコピペしてテーマに読み込ませる
ステップ1:クーポン(ディスカウント)を作成する
まずはバナーをクリックした時に適用される「クーポン」そのものをShopifyで発行します。
ここでの設定を忘れると、バナーを押しても割引が適用されないので注意してください。
- Shopify管理画面の [ディスカウント] をクリックします。
- [ディスカウントを作成] をクリックし、[無料配送](または注文の割引など)を選択します。

- 「ディスカウントコード」 の欄に、お好きなコードを入力します。
※ここで決めたコード(例:FREE-SHIPPING202512)を後で使いますので、コピーしておいてください。 - 「国(すべての国)」「最低購入金額(なし)」など、条件を自由に設定して [保存] します。

ステップ2:新しいスニペットを作成する
次に、バナーを表示するためのファイルを作成します。
- Shopify管理画面から [オンラインストア] > [テーマ] に進みます。
- […] > [コードを編集] をクリックします。
- 左側のフォルダ一覧から [Snippets] を探し、[新しいスニペットを追加する] をクリックします。
- ファイル名に
c_coupon-bannerと入力して完了します。
ステップ3:コードをコピペする
作成した c_coupon-banner.liquid に、以下のコードを丸ごとコピーして貼り付けてください。
{% comment %}
ファイル名: c_coupon-banner.liquid
機能: クーポン風デザイン追従バナー。PC特大・スマホ最適化・セッション制御付き。
{% endcomment %}
<!-- ★設定:ここにステップ1で作ったクーポンコードを入力してください -->
{% assign coupon_code = "FREE-SHIPPING202512" %}
<style>
/* --- PC / 基本スタイル --- */
#sticky-coupon-banner {
position: fixed;
bottom: 30px;
right: 30px;
z-index: 2147483647; /* 最前面 */
/* 初期状態は非表示(アニメーション用) */
opacity: 0;
visibility: hidden;
transform: translateY(20px);
transition: all 0.4s ease;
/* デザイン:チケット風 */
background-color: #d32f2f; /* 赤色 */
color: #fff;
box-shadow: 0 6px 20px rgba(0,0,0,0.4);
border-radius: 12px;
padding: 5px;
width: 400px;
max-width: 90vw;
cursor: pointer;
text-align: center;
}
/* 破線枠のデザイン */
.coupon-inner {
border: 2px dashed #fff;
border-radius: 8px;
padding: 20px 10px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 8px;
}
/* 表示時のクラス */
#sticky-coupon-banner.is-visible {
opacity: 1;
visibility: visible;
transform: translateY(0);
}
#sticky-coupon-banner:hover {
background-color: #b71c1c;
transform: scale(1.02);
}
#sticky-coupon-banner a {
color: inherit;
text-decoration: none;
display: block;
width: 100%;
height: 100%;
}
/* PC用テキストサイズ */
.coupon-date { font-size: 18px; font-weight: bold; color: #ffeb3b; line-height: 1.2; }
.coupon-main-text { font-size: 24px; font-weight: 900; line-height: 1.2; }
.coupon-note { font-size: 11px; opacity: 0.9; margin-top: 5px; line-height: 1.2; }
/* --- スマホ用の調整 --- */
@media screen and (max-width: 767px) {
#sticky-coupon-banner {
/* 下部メニューを避けて少し上に配置 */
bottom: 85px;
right: 10px;
left: auto;
width: auto;
max-width: 170px; /* 右寄せコンパクト */
padding: 3px;
border-radius: 8px;
}
.coupon-inner { padding: 10px 5px; border-width: 1px; gap: 4px; }
.coupon-date { font-size: 10px; }
.coupon-main-text { font-size: 15px; }
.coupon-note { font-size: 9px; transform: scale(0.9); }
#sticky-coupon-banner:hover { transform: translateY(-2px); }
}
</style>
<div id="sticky-coupon-banner">
<!-- リンク:クーポン適用後に元のページに戻る -->
<a href="/discount/{{ coupon_code }}?redirect={{ request.path }}" id="coupon-click-link">
<div class="coupon-inner">
<!-- 1. 期間やキャッチ -->
<div class="coupon-date">
\期間限定セール/
</div>
<!-- 2. メイン文言 -->
<div class="coupon-main-text">
🎁 送料無料クーポン
</div>
<div class="coupon-main-text">
👉 クリックして取得
</div>
<!-- 3. 注釈 -->
<div class="coupon-note">
※対象外の商品を除く
</div>
</div>
</a>
</div>
<script>
document.addEventListener("DOMContentLoaded", function() {
var banner = document.getElementById('sticky-coupon-banner');
var link = document.getElementById('coupon-click-link');
var storageKey = 'coupon_used_' + '{{ coupon_code }}';
// ブラウザを閉じるまで非表示を維持(sessionStorage)
if (sessionStorage.getItem(storageKey) === 'true') {
banner.style.display = 'none';
return;
}
// 読み込み0.5秒後にフワッと表示
setTimeout(function() {
banner.classList.add('is-visible');
}, 500);
// クリックしたら消す&使用済みフラグを立てる
link.addEventListener('click', function() {
sessionStorage.setItem(storageKey, 'true');
banner.classList.remove('is-visible');
});
});
</script>ステップ4:theme.liquid で読み込む
最後に、このファイルを全ページで読み込ませます。
Layout フォルダにある theme.liquid を開き、一番下の方にある </body> タグの直前に、以下の1行を追加して保存してください。
{% render 'c_coupon-banner' %}これで実装は完了です!
サイトをプレビューして、赤いクーポンバナーが表示されるか確認してみてください。
クーポンを押し、商品をカート⇒決済で自動的にディスカウントが効く仕様です。

このコードの優れたポイント
1. クリックするだけでクーポン適用&元の画面へ
通常のクーポンリンクはトップページに飛ばされてしまうことが多いですが、このコードでは ?redirect={{ request.path }} という記述を入れることで、「今見ているページに戻ってくる」動きを実現しています。
商品ページを見ている途中でバナーを押しても、迷子にならずにそのまま買い物を続けられるため、UX(ユーザー体験)を損ないません。
2. スマホでの「メニュー被り」を回避
スマホでは画面下部に「固定フッターメニュー」があるサイトが多いですが、単純な固定バナーだとそれに被ってしまいます。
このコードではCSSで bottom: 85px; と指定し、メニューの上に浮くように調整しています。また、横幅も「右寄せコンパクト」にしているため、大事な商品情報を隠しません。
3. ブラウザを閉じるまでは「再表示しない」
一度「×」を押したりクーポンを取得したお客様に対して、ページ移動のたびにバナーが出るとストレスになります。
今回は sessionStorage という機能使い、「ブラウザ(タブ)を開いている間は、一度消したらもう出さない。でも後日また来た時には出す」という絶妙な制御を入れています。
まとめ
いかがでしたでしょうか。
Shopifyのアプリを使わなくても、少しのコードでこれだけ高機能な販促バナーが作れます。
特に「送料無料」などの強力なオファーがある場合は、お客様に気づいてもらえなければ損です。
ぜひこの追従バナーを実装して、ストアの転換率(CVR)アップに役立ててください!