2026/09/07

Shopify で価格を隠して見積もり依頼を受け付けれるアプリ4選!

@ 信条刃

Shopify

見積もりメールの往復が受注を遅らせている|Shopify で見積もり業務をストア内に取り込む方法

法人のお客様から問い合わせが入ります。「御社の製品を 200 個購入したいのですが、単価はいくらになりますか」。

ここから何が始まるでしょうか。担当者が商品を確認し、原価を確認し、掛け率を確認し、送料を確認し、Excel で見積書を作り、上長に確認を取り、PDF にしてメールで返信する。相手から「数量を 150 個に変更したい」と返信が来て、また同じ工程を繰り返す。

この往復が 2 回発生した時点で、受注までに 3 営業日が消えています。 その間に競合が見積もりを出していたら、負けているのは価格ではなく速度のほうかもしれません。

この記事では、Shopify で見積もり業務を扱うにあたって、どの工程がボトルネックになっているのかを分解し、それぞれをどう解消するかを見ていきます。そのうえで具体的な手段として、既製アプリと自作コードの両方を紹介します。

見積もり業務を 5 つの工程に分解する

まず、業務のどこに時間がかかっているのかを特定します。見積もり業務は次の 5 工程に分解できます。

工程1:依頼を受け取る

お客様からの問い合わせを受ける工程です。メールフォーム、電話、メール直接など経路はさまざまです。ここでの問題は、情報が足りない状態で届くことです。「単価はいくらですか」という問い合わせに、商品名も数量も納期も書かれていないと、まず聞き返すところから始まります。この聞き返しだけで半日から 1 日が消えます。

工程2:内容を整理する

届いた依頼を、見積もりを作れる形に整理する工程です。「あの商品」がどの SKU なのかを特定し、バリエーションを確認し、数量を確定させます。メール本文から拾う作業なので、転記ミスが起きやすい工程でもあります。

工程3:価格を決める

原価・掛け率・数量割引・送料を勘案して単価を決める工程です。ここは判断が必要なので、自動化しきれません。業務全体の中で唯一、人間がやるべき工程とも言えます。

工程4:見積書を作って送る

決めた価格を書類の形にして送る工程です。Excel のひな形に転記し、PDF にし、メールに添付する。定型作業ですが、金額の転記ミスが起きると信用問題になるため、確認に時間がかかります。

工程5:受注に変える

お客様が承諾したあと、注文に変える工程です。Shopify に手動で下書き注文を作り、金額を入力し、請求書を送る。ここでも転記が発生します。

ボトルネックはどこか

5 工程のうち、工程3 だけが人間の判断を必要とする工程です。残りの 4 つは情報の受け渡しと転記であり、原理的には自動化できます。

にもかかわらず、実際の業務では工程1・2・4・5 に時間の大半が消えています。理由は、それぞれの工程が別のツールで行われているからです。問い合わせはメール、整理は Excel、価格決定は電卓と社内資料、書類作成は Word、受注は Shopify。ツールをまたぐたびに転記が発生し、転記のたびに確認が必要になります。

したがって解決の方向はひとつです。工程1 から工程5 までを 1 つの場所に集める。 Shopify で商売をしているなら、その場所は Shopify であるべきです。

工程1を解決する:構造化された依頼を受け取る

メールで受け取る限り、情報の欠落は防げません。商品と数量が必ず入った状態で届く仕組みが必要です。

具体的には、商品ページに見積もり依頼のボタンを置き、フォームから送ってもらう形です。フォームなら、商品・バリエーション・数量を必須項目にできます。「あの商品」ではなく、SKU レベルで特定された依頼が届きます。

ここで欲しいのが、複数商品をまとめて 1 件の依頼にできる機能です。法人取引では「A を 200 個、B を 50 個、C を 100 個」というまとめ依頼が普通です。商品ごとに別々のフォームを送らせると、お客様にとっても手間ですし、ストア側でも 3 件の依頼を突き合わせる作業が発生します。

さらに、価格を隠して見積もりボタンに置き換えることも工程1 の一部です。価格が表示されたままだと、お客様は「表示価格で買えるのでは」と考えて普通にカートに入れてしまいます。案件ごとに価格が変わる商材では、これは事故です。

工程2を解決する:転記をなくす

工程1 でフォームから受け取れば、工程2 は自動的に消えます。商品 ID と数量がデータとして届くので、整理する対象がありません。

ここで重要なのは、依頼が一覧で見られることです。メールの受信箱では「どれが対応済みでどれが未対応か」が分かりません。ステータス(新規・対応中・見積提示・成約・却下)で管理できると、抜け漏れがなくなります。

工程3を支える:判断に集中できる状態を作る

工程3 は人間がやる工程ですが、判断以外の作業を取り除くことはできます。

たとえば、提示単価の入力欄が空欄だと、毎回カタログ価格を調べて打ち込むところから始まります。初期値としてカタログ価格が入っていれば、変える必要のある行だけ触れば済みます。「200 個なら単価を 15% 引く」という判断だけに集中できます。

お客様の希望数量・希望価格が横に表示されていることも効きます。「相手は 150 個で 1 個 800 円を希望している」という情報を見ながら、こちらの提示を決められます。

割引の指定方法も、実務では効きます。「1 個あたり 100 円引き」という定額の考え方と、「全体から 10% 引き」というパーセントの考え方は、どちらも現場で使われます。両方を選べることが必要です。

工程4を解決する:書類作成を消す

見積書を作る作業そのものをなくします。金額を入力したら、そのまま顧客に送れる状態にします。

ここで押さえておきたいのが、支払いリンクを付けられるかどうかです。見積書を PDF で送ると、お客様は「見積もりを確認する → 別途注文する」という 2 ステップを踏むことになります。この間に離脱が起きます。

金額と一緒に支払いリンクが届けば、承諾と発注が 1 クリックで完了します。Shopify では、下書き注文の請求書メールがこの役割を果たします。 アプリが独自に送るメールでは支払いリンクを付けられないため、ここは Shopify の仕組みに寄せるのが正解です。

税の扱いも工程4 の一部です。見積もりの段階ではお届け先が確定していないため、正確な税額を計算できません。税は注文確定時に Shopify が計算することにして、見積もりは税抜で出す。金額を組み立てる場所を 2 つ持たないことが、ずれを防ぐ唯一の方法です。

工程5を解決する:見積もりと注文をつなげる

工程4 で下書き注文として送っていれば、工程5 は自動的に完了します。お客様が支払った時点で通常の注文に変わります。

ここで見落とされがちなのが、在庫の引き当てです。下書き注文の明細を「商品バリエーションに紐づかない自由入力の行」として作ると、注文になっても在庫が減りません。売上も商品に紐づかないため、分析にも出てきません。

エラーも警告も出ずに注文は正常に作られるので、在庫を数えるまで誰も気づけないタイプの問題です。提示単価を入れる場合でも、明細はバリエーション行として作り、価格だけを上書きする実装になっているかを確認しておいてください。

シンプル商品見積もり依頼|価格非表示・B2B対応・法人向け ☆ 迷ったらこれ

シンプル商品見積もり依頼のアプリストア メイン画像

商品ページの価格とカートボタンを隠し、見積もり依頼を受け付けて、支払いリンク付きの請求書を送るまでを Shopify 内で完結させるアプリ。

特徴・機能

  • 商品ページの価格と「カートに追加」ボタンを条件付きで隠せる
  • 対象は「すべての商品」または「選んだコレクション・商品」から選べる
  • 顧客条件は「すべて」「ログイン顧客のみ」「未ログイン顧客のみ」「指定タグを持つ顧客のみ」「指定タグを持たない顧客のみ」の 5 択
  • 顧客タグの比較は大文字・小文字を区別しない
  • 3 ステップの見積もりフォーム(商品選択 → 連絡先 → 内容確認)
  • 「他の商品を追加」で複数商品をまとめて 1 件の依頼にできる(明細 20 件まで)
  • ログイン中の顧客には氏名・メール・電話・会社名が自動で入る
  • フォーム項目の表示・必須をそれぞれ切り替えられる
  • 見積もり一覧をステータス・検索・並び替えで管理できる
  • 提示数量には希望数量、提示単価にはカタログ価格が初期値として入る
  • 割引は定額とパーセントの両方に対応
  • 送料はストアの配送方法から選択、または手動入力
  • 合計はサーバー側で再計算される
  • 「見積もりを送信」で下書き注文を作り、支払いリンク付きの請求書メールを送る
  • 同じ見積もりからは下書き注文が 1 つだけ作られる(孤児が残らない)
  • 明細はバリエーション行として作られ、支払われると在庫が引き当てられる
  • 交渉メモで顧客とのやり取りを時系列に記録できる
  • 通知メールの件名・本文を編集でき、テスト送信もできる
  • 管理画面・ストアフロントとも 20 言語対応

ここまでに分解した 5 工程が、そのまま機能として設計されているアプリです。工程ごとに何が起きるかを追ってみます。

工程1では、商品ページの価格とカートボタンが見積もりボタンに置き換わります。対象は「見積もり依頼の設定」画面で決め、コレクション・商品は Shopify の選択画面からビジュアルに選べます。顧客タグで出し分ければ、卸売のお客様にだけ価格を隠して見積もりに誘導できます。フォームは 3 ステップ構成で、STEP1 の「他の商品を追加」から別の商品を検索して足せるため、「A を 200 個、B を 50 個」というまとめ依頼が 1 件で届きます。1 回の依頼にまとめられる明細は 20 件までです。

工程2は、届いた依頼が「見積もり一覧」に並ぶことで解決します。ステータス(すべて/新規/対応中/見積提示/成約/却下)で絞り込め、見積もり番号・お名前・会社名で検索できます。メールの受信箱を探し回る必要はありません。

工程3では、見積もり詳細を開いた時点で提示数量に顧客の希望数量、提示単価にカタログ価格が入っています。顧客の希望は「希望」として横に表示されるので、見比べながら判断できます。割引は「定額」と「割引率(%)」を選べ、送料はストアに登録済みの配送方法から選ぶか手動で入力します。合計はサーバー側で再計算されるため、電卓も検算も不要です。

工程4は「見積もりを送信」の 1 クリックです。確認モーダルで任意のメッセージ(「納期は約 2 週間となります」など)を添えられ、送信すると Shopify の下書き注文が作られて支払いリンク付きの請求書メールが届きます。ステータスは自動で「見積提示」に進みます。税は扱わず、合計は税抜。税は注文確定時に Shopify が計算します。

工程5は、お客様が支払った時点で完了します。下書き注文が通常の注文に変わり、在庫も引き当てられます。明細はバリエーションが分かる限りバリアント行として作られ、提示単価は価格の上書きとして渡されるためです。「下書き注文を作成」で先に内容を確認してから「見積もりを送信」を押しても、下書き注文は 1 つしか作られません。

運用のコツも挙げておきます。インストールしただけでは商品ページに何も出ないので、テーマへの追加見積もり依頼の対象の設定の 2 つを必ず済ませてください。どちらも初期状態では満たされておらず、エラーも警告も出ません。アプリのトップ画面に案内バナーが出るので、そこから各設定画面へ進めます。

価格が隠れるのは商品ページだけです。コレクションページ・検索結果・トップページの商品一覧では、テーマが出力する価格が表示されたままになります。一覧にも出したくない場合は、卸売用コレクションをナビゲーションから外して取引先に直リンクを案内する、といった運用設計が必要です。この点は設定画面にも常設のバナーで明記されています。

顧客タグを使う場合は、タグ条件がログイン顧客にしか成立しないことを押さえておいてください。未ログインの訪問者は「タグを持たない」ではなく「判定できない」として扱われます。これにより、「指定タグを持たない顧客のみ」を選んだときに未ログインの全訪問者へ価格が隠れる、という事故が起きません。

顧客に届く金額のメールは Shopify の「下書き注文の請求書」テンプレートで送られます。既定の文面は「請求書」という言い方なので、「お見積書」のような表現にしたい場合は Shopify 管理画面の「設定」→「通知」から編集してください。アプリの「通知メール」ページに、その編集画面への直接リンクが用意されています。似た名前の「新しい下書き注文の通知」はスタッフ向けの別テンプレートなので、間違えないよう注意が必要です。

価格設定

  • Basic Plan $9.99/月
  • 7 日間の無料体験あり
  • 年払いで実質 2 ヶ月分無料

アプリをインストールする

ご利用ガイドを読む

Q:Request A Quote & Hide Price

Q:Request A Quote & Hide Priceのアプリストア画像

ドラッグ&ドロップのフォームビルダーと外部サービス連携を備えた見積もり依頼アプリ。

特徴・機能

  • ドラッグ&ドロップでフォームを組める
  • 価格の非表示
  • PDF 出力と注文への変換
  • HubSpot・Mailchimp との連携

フォームを自由に組みたい場合の選択肢です。項目を追加・並べ替えでき、外部の MA ツールへ依頼データを流せます。シンプル商品見積もり依頼はフォーム項目を表示・必須の切り替えに絞っているので、独自項目を大量に足したいなら Q:Request A Quote が向きます。 一方で管理画面は英語のみなので、日本語で運用したいチームは確認が必要です。

価格設定

  • 無料プランあり
  • 有料プラン $16.99〜$96.99/月

Request a Quote & Hide Prices(Madgic)

Request a Quote & Hide Prices(Madgic)のアプリストア画像

カートボタンを見積もりフォームに置き換え、顧客グループ単位で価格を隠せるアプリ。

特徴・機能

  • カートボタンを見積もりフォームに置き換え
  • 顧客グループ単位での価格非表示
  • 見積もりから注文への自動変換

シンプルな構成で月額 $9.99 という価格帯です。顧客グループ単位の制御に対応しています。メインアプリとの役割はかなり近く、差は日本語対応と機能の細部にあります。 シンプル商品見積もり依頼は管理画面もストアフロントの文言も 20 言語対応で、顧客タグの大文字・小文字を区別しない照合や、ちらつき防止といった細部の作り込みがあります。英語運用で構わず、最小構成で足りるなら Madgic も候補になります。

価格設定

  • 無料プランあり
  • 有料プラン $9.99/月

B2B Wholesale Hub

B2B Wholesale Hubのアプリストア画像

タグベースの価格設定・数量割引・掛け売り条件をまとめて扱う B2B 向けアプリ。

特徴・機能

  • 顧客タグに応じた卸価格の適用
  • 数量割引(ボリュームディスカウント)
  • ネット条件(掛け売り)の設定
  • クイックオーダーフォーム

見積もりではなく、あらかじめ決めた卸価格を自動適用する方向のアプリです。取引先ごとの掛け率が既に決まっているなら、毎回見積もりを出すより自動適用のほうが速くなります。シンプル商品見積もり依頼が「価格が決まっていない取引」を扱うのに対し、B2B Wholesale Hub は「価格が決まっている取引」を扱います。 新規の引き合いは見積もり、既存取引先はタグ別価格、と両方を併用する構成も考えられます。

価格設定

  • 有料プラン $39〜$99/月

Quotify: Request a Quote

TODO: 画像を入れる(Quotify: Request a Quote のアプリストア画像)

提案(プロポーザル)管理と外部連携に強い見積もり依頼アプリ。

特徴・機能

  • 見積もり件数の上限なし
  • カスタムフォーム
  • 提案の管理機能
  • Google Analytics・Zapier との連携

見積もりを「提案」として管理する視点を持つアプリです。Zapier と連携できるため、依頼データを社内の別システムへ流す運用が組めます。シンプル商品見積もり依頼は Shopify の下書き注文へ寄せて完結させる設計なので、外部システムへの連携が前提なら Quotify のほうが噛み合います。 対応言語はヨーロッパ言語が中心で、日本語は含まれていません。

価格設定

  • 有料プラン $17〜$27/月

AI Request a Quote, Hide Price

TODO: 画像を入れる(AI Request a Quote, Hide Price のアプリストア画像)

AI によるリードスコアリングと複数チャネルでの見積もり受付に対応するアプリ。

特徴・機能

  • AI によるリードスコアリング
  • WhatsApp・電話からの見積もり受付
  • HubSpot・Mailchimp との連携
  • BI ダッシュボード

届いた依頼を AI が評価してスコアを付ける機能があります。依頼件数が多く、優先順位を付けて対応したいストア向けです。シンプル商品見積もり依頼は 1 件ずつ人が判断する前提なので、依頼が月数十件を超えて優先度づけが必要になったら AI Request a Quote のようなスコアリング型が選択肢になります。 ただし価格帯は $7.99〜$19.99/月と手頃な一方、管理画面は英語のみです。

価格設定

  • 無料プランあり
  • 有料プラン $7.99〜$19.99/月

自分で実装する:価格を隠して見積もりボタンを出す

アプリを使わず、テーマ側で実装することもできます。ここでは「商品ページの価格とカートボタンを隠し、見積もりボタンに差し替える」部分を作ります。工程1 の入り口だけを自作する、という位置づけです。

ステップ1:顧客の条件を Liquid で判定する

まず、いま見ている訪問者が「価格を隠す対象か」を判定します。Liquid では customer オブジェクトから顧客情報を読めます。

{% comment %} snippets/quote-visibility.liquid {% endcomment %}
{%- liquid
  assign hide_price = false
  assign target_tags = 'wholesale,distributor' | split: ','

  if customer
    for tag in customer.tags
      assign lower_tag = tag | downcase | strip
      for target in target_tags
        assign lower_target = target | downcase | strip
        if lower_tag == lower_target
          assign hide_price = true
        endif
      endfor
    endfor
  endif
-%}

<script>
  window.__quoteConfig = {
    hidePrice: {{ hide_price | json }},
    productId: {{ product.id | json }},
    productTitle: {{ product.title | json }},
    buttonLabel: {{ 'quote.button_label' | t | json }}
  };
</script>

ポイントは downcase です。Shopify の顧客タグは入力どおりの大小文字で保存されるため、管理側で Wholesale、顧客側に wholesale という食い違いが普通に起きます。両側を小文字化して突き合わせないと、設定は正しいのに一致しないという無言の不発になります。

customer が存在しない(=未ログイン)場合、このコードでは hide_pricefalse のままです。これは意図的で、「タグを持たない」と判定してしまうと、条件の組み方によっては全訪問者に価格が隠れる事故につながります。

ステップ2:価格とカートボタンを隠す

判定結果に応じて、テーマが出力している価格とカートボタンを非表示にします。テーマの構造に依存する部分なので、セレクタを設定値として持たせておくのが実務的です。

// assets/quote-hide.js
(function () {
  const config = window.__quoteConfig || {};
  if (!config.hidePrice) return;

  // テーマによって異なるため、設定で差し替えられるようにしておく
  const PRICE_SELECTOR = '.price';
  const CART_BUTTON_SELECTOR =
    'form[action*="/cart/add"] [type="submit"], product-form button[name="add"]';

  function hideElements(selector) {
    document.querySelectorAll(selector).forEach(function (el) {
      el.style.display = 'none';
      el.setAttribute('aria-hidden', 'true');
    });
  }

  function insertQuoteButton() {
    const anchor = document.querySelector(CART_BUTTON_SELECTOR);
    if (!anchor || document.querySelector('.ur-quote-button')) return;

    const button = document.createElement('button');
    button.type = 'button';
    button.className = 'ur-quote-button';
    button.textContent = config.buttonLabel || '見積もりを依頼する';
    button.addEventListener('click', openQuoteModal);

    anchor.parentNode.insertBefore(button, anchor);
  }

  hideElements(PRICE_SELECTOR);
  hideElements(CART_BUTTON_SELECTOR);
  insertQuoteButton();
})();

display: none に加えて aria-hidden を付けているのは、スクリーンリーダーにも読み上げさせないためです。見た目だけ消して読み上げが残ると、支援技術を使っている方には価格が伝わってしまいます。

セレクタを定数に切り出しているのは、テーマによって価格要素のクラス名が違うからです。Dawn では .price ですが、他のテーマでは .product__price.product-single__price かもしれません。ここを設定値として外に出しておかないと、テーマを変えるたびにコードを書き換えることになります。

ステップ3:ちらつきを防ぐ

上のコードには問題があります。JavaScript が動くまでの一瞬、価格と購入ボタンが見えてしまうのです。ページの読み込みが遅い環境ほど、この時間は長くなります。

対策は、先に CSS で隠しておいて、判定後に必要なら戻す方式です。

{% if hide_price %}
  <style id="ur-quote-preload">
    .price,
    form[action*="/cart/add"] [type="submit"],
    product-form button[name="add"] {
      visibility: hidden !important;
    }
  </style>
{% endif %}
// 判定が終わったら、隠す必要がない場合はプリロード用の CSS を外す
function releasePreloadStyle() {
  const style = document.getElementById('ur-quote-preload');
  if (style) style.remove();
}

// フェイルセーフ: 3 秒経っても処理が終わらなければ必ず表示に戻す
setTimeout(releasePreloadStyle, 3000);

フェイルセーフのタイマーは必須です。 これがないと、JavaScript がエラーで止まった場合に価格と購入ボタンが永久に消えたままになります。見積もり制にするつもりが、誰も買えないストアになってしまいます。3 秒という値は、判定処理が通常終わる時間より十分長く、かつ訪問者が待てる範囲として設定しています。

display: none ではなく visibility: hidden を使っているのも意図があります。display: none だとレイアウトが詰まり、表示に戻したときに画面がガタつきます。visibility: hidden なら場所を確保したまま見えなくできます。

ステップ4:フォームを開いて送信する

見積もりフォーム自体はモーダルとして実装します。送信先はアプリのサーバーが必要になるため、ここでは Shopify の問い合わせフォーム(/contact)へ POST する簡易版を示します。

function openQuoteModal() {
  const modal = document.getElementById('ur-quote-modal');
  modal.hidden = false;

  // 商品情報を隠しフィールドに入れておく
  modal.querySelector('[name="contact[product]"]').value = config.productTitle;
  modal.querySelector('[name="contact[product_id]"]').value = config.productId;

  // フォーカスをモーダル内へ移す(キーボード操作の閉じ込め)
  modal.querySelector('input, select, textarea, button').focus();
}
<div id="ur-quote-modal" class="ur-quote-modal" hidden role="dialog" aria-modal="true">
  <form method="post" action="/contact#quote-form" id="quote-form">
    <input type="hidden" name="form_type" value="contact" />
    <input type="hidden" name="utf8" value="" />
    <input type="hidden" name="contact[product]" />
    <input type="hidden" name="contact[product_id]" />

    <label>お名前<input type="text" name="contact[name]" required /></label>
    <label>メールアドレス<input type="email" name="contact[email]" required /></label>
    <label>希望数量<input type="number" name="contact[quantity]" min="1" /></label>
    <label>メッセージ<textarea name="contact[body]"></textarea></label>

    <button type="submit">見積もりを依頼する</button>
  </form>
</div>

role="dialog"aria-modal="true" を付け、開いたときに最初の入力欄へフォーカスを移しています。これがないと、キーボードで操作しているお客様はモーダルが開いたことに気づけません。

この実装で解決できる工程と、できない工程

ここまでで解決できるのは工程1 の一部だけです。価格を隠して構造化された依頼を受け取る、というところまでは到達しました。

しかし、依頼は Shopify の問い合わせメールとして届くだけなので、工程2(一覧とステータス管理)は解決していません。工程3(価格付けの支援)、工程4(支払いリンク付きの請求書)、工程5(在庫を引き当てる注文への変換)も同様です。

これらを自作するには、依頼を保存するデータベース、管理画面、Shopify の Admin API を使った下書き注文の作成、請求書の送信処理が必要になります。さらに、複数のストアが同じ仕組みを使う場合は、他店のデータが見えない仕組みまで作り込む必要があります。

「工程1 だけ自作して、工程2 以降はメールと Excel で回す」という判断はあり得ます。依頼が月に数件なら、それで十分に回ります。ただし依頼が増えたとき、この構成は工程2 と工程4 でボトルネックになります。冒頭に挙げた「往復 2 回で 3 営業日」という状態は、まさにこの構成から生まれています。

まとめ

見積もり業務のボトルネックは、価格を決めることではありません。ツールをまたぐたびに発生する転記と確認です。

  • 工程1(依頼の受け取り)— フォームで構造化して受け取れば、聞き返しが消える
  • 工程2(整理)— 一覧とステータスで管理すれば、探す時間が消える
  • 工程3(価格決定)— 初期値と希望値の並記で、判断だけに集中できる
  • 工程4(見積書の作成と送信)— 支払いリンク付きの請求書に寄せれば、書類作成が消える
  • 工程5(受注化)— 下書き注文をバリアント行で作れば、在庫まで自動で動く

このうち工程1 はテーマ側の実装でも作れます。ただし工程2 以降を自作するとなると、データベースと管理画面と Admin API 連携が必要になり、規模がまったく変わります。

「200 個だといくらですか」という問い合わせに、その日のうちに支払いリンク付きの見積もりを返す。 そこまでを Shopify の中で完結させたいなら、既製のアプリを無料期間中に一周させてみるのが一番早い判断材料になります。

参考記事

[Shopifyストアの価格を隠して見積もり依頼を受け付けられるアプリ「シンプル商品見積もり依頼|価格非表示・B2B対応・法人向け」をリリース](TODO: 公開後にURLを差し替える)
Shopify で価格を隠して見積もり依頼を受ける|よくある 8 つの疑問に答えます

© 2021 powerd by UnReact