🔌

【Shopify.dev和訳】Apps/Admin app extensions/MarketingActivities

2021/09/30に公開

この記事について

この記事は、Apps/Admin app extensions/Marketing activities/Overviewの記事を和訳したものです。

記事内で使用する画像は、公式ドキュメント内の画像を引用して使用させていただいております。

Shopify アプリのご紹介

Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。

https://apps.shopify.com/shopify-application-314?locale=ja&from=daniel

Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。

https://apps.shopify.com/font-picker-1?locale=ja&from=daniel

マーケティング活動

マーケティングアクティビティエクステンションを使用すると、マーチャントはアプリを使って Shopify admin の Marketing ページからプロモーションキャンペーンやマーケティングオートメーションを管理できるようになります。

Shopify のマーケティングは、コンテンツマーケティング、SEO、ソーシャルメディアを含む様々な手段を使ってマーチャントが顧客を見つけ、販売するのを助けます。マーケティングアクティビティエクステンションをアプリに追加することで、Shopify admin の Marketing ページで直接アプリを表面化させることができます。

マーケティングアクティビティエクステンションを使用すると、以下のことができます。

  • Shopify 管理画面でレンダリングされるマーケティング活動のフォームを設定する。
  • マーチャントがプラットフォーム上でマーケティング活動をプレビューできるようにする。
  • マーチャントのマーケティングオンボーディングの状態を管理する。
  • マーチャントのマーケティング活動のライフサイクルを管理する。
  • マーチャントのマーケティング活動のエンゲージメントを追跡する。

このセクションでは

マーケティング活動のエンゲージメントのトラッキング

マーケティング活動のエンゲージメントは、潜在的な顧客がショップのウェブサイトに到達する前に、マーケティング活動と相互作用する方法を表します。エンゲージメントには、該当する場合、広告費に関する情報も含まれます。コメント、シェア、メール開封などは、すべてマーケティング活動のエンゲージメントの例です。

マーケティング活動を作成した後、その広告費やインタラクションを追跡するためにエンゲージメントを作成することができます。エンゲージメントの作成は、すべてのマーケティング活動に必要ですが、ほとんどの種類のマーケティング活動では、使用可能なエンゲージメントメトリクスのサブセットのみを使用します。

各マーケティング活動では、累積フィールドの値(True または False)は、すべてのエンゲージメントデータで同じ値を維持する必要があります。cumulative ブーリアンは、送信された各エンゲージメントが、すべてのメトリクスのライフタイムバリューなのか、その日のデイリーの合計値だけなのかを示します。累積ブーリアンは、送信された各エンゲージメントが、すべてのメトリクスのライフタイム値なのか、その日の合計値なのかを示します。Trueの場合、各エンゲージメントは、その occured_on の日までのすべてのメトリクスのライフタイムバリューとなり、Falseの場合、各エンゲージメントは、その occured_on の日のみのメトリクスの合計となります。

エンゲージメントで送信可能なメトリクスの全リストはこちらをご覧ください。

マーケティング活動を始める

https://shopify.dev/apps/app-extensions/getting-started

このセクションでは、アプリにマーケティング活動拡張機能を追加するための要件と、アプリがアプリ拡張機能定義および Shopify と連携してマーケティング活動をサポートする方法について説明します。

開始方法

アプリにマーケティング活動の拡張機能を追加するには、開発ストアと拡張可能なアプリが必要です。マーケティング活動の拡張機能に取り組んでいる間、開発ストアをテスト用に使用することができます。

マーケティング活動拡張機能を使用するためのアプリの設定

  1. Partner Dashboard を使用して、マーケティング 活動拡張機能を追加します。
  2. 必要なendpointをアプリのドメインにホストします。Shopify は REST 呼び出しと構造化された JSON を使用して、お客様のアプリと通信します。必ずリクエストが Shopify から来たことを確認してください
  3. マーケティング活動のためのプレビューを提供してください。プレビュー endpoint は、販売者が公開前にリアルタイムで変更を確認できるため、アプリを最高の状態で使用するために推奨されます。
  4. マーケティング活動にエンゲージメントを設定します。
  5. 拡張機能を提出して承認を得る。

アプリ拡張機能の構造

このセクションでは、アプリの endpoint が、アプリ拡張機能の定義や Shopify とどのように相互作用するかを説明します。

パートナーダッシュボードでアプリ拡張機能のフォームビルダーを使用して、マーケティング活動のフォームを定義します。各マーケティング活動拡張機能は、マーケティング活動フォームを開くために使用される UUID によって一意に識別されます。Shopify はあなたのアプリのpreload endpointを呼び出して、マーケティング活動フォームをレンダリングします。あなたのアプリは、販売者のマーケティング活動と販売者のショップデータの状態に基づいて、フォームデータで応答する責任があります。Shopify はまた、あなたのアプリのerror feedback endpointを呼び出して、マーケティング活動拡張機能に問題があったかどうかを報告します。

  1. 販売者は、アプリ拡張フォームを使用して、マーケティング活動を作成します。
  2. Shopify はあなたのアプリのプリロード endpoint を呼び出します。
  3. アプリはフォームデータで応答します。
  4. 作成フォームはプレビューでレンダリングされます。
  5. フォームのレンダリングにエラーがある場合は、Shopify はアプリのerror feedback endpointにこれを報告します。

販売者がマーケティング活動を公開した後、Shopify はマーケティング活動を作成するためにあなたのアプリのcreate endpointを呼び出します。あなたのアプリは、フォームデータを検証する責任があります。マーケティング活動が作成された後、あなたのアプリは Shopify を呼び出し、MarketingActivityUpdateを使ってマーケティング活動のステータスを更新します。

  1. 販売者は、マーケティング活動を公開するためにクリックします。
  2. Shopify はマーケティング活動を作成し、アプリの createendpoint にリクエストを送ります。
  3. アプリはフォームデータを検証し、マーケティング活動を非同期に公開し、MarketingActivityUpdateを使用してステータス情報を更新します。
  4. Shopify は、マーケティング活動のステータスを更新します。
  5. Shopify は、マーケティング活動をレンダリングします。

マーケティング活動アプリのエクステンションの管理

https://shopify.dev/apps/app-extensions/getting-started

ここでは、Partner Dashboard からマーケティング・アクティビティ・エクステンションを作成および管理する方法について説明します。マーケティングエクステンションを作成する際には、エクステンションの情報を提供し、エクステンションのプレビューを設定し、設定フィールドを作成します。

マーケティング・アクティビティ・エクステンションの追加

  1. Partner Dashboard から Appsをクリックします。
  2. 変更したいアプリの名前をクリックします。
  3. Extensionsをクリックします。
  4. マーケティング活動マーケティング活動の追加をクリックします。
  5. アクティビティのタイトル説明を入力します。
  6. Base API path には、アプリのエンドポイントがホストされている URL を入力します。
  7. Marketing tacticを指定します。マーケティング戦術は、Marketing platformAd formatの設定を決定します。また、マーケティング戦術の選択により、マーケティングアクティビティに含まれるデフォルトフィールドが決まります。
  8. アクティビティがオートメーションであるかどうかを指定します。自動化とは、イベントや顧客の行動によって引き起こされる継続的な活動のことです。自動化としてマークされているマーケティング活動は、Shopify 管理画面のマーケティングセクションの自動化ページの下に表示されます。それ以外のマーケティング活動は、「キャンペーン」ページに表示されます。詳細については、Understanding marketing activities and automationsをご覧ください。
  9. 設定フィールドを追加します。

エクステンションのプレビュー

アプリのプリロードエンドポイントを使用して、アプリのマーケティングエクステンションがデスクトップ、モバイル、または他のデバイスでどのように見えるかをレンダリングできます。

設定フィールド

設定フィールドは、Shopify 管理画面でマーチャントに表示されるマーケティング活動フォームを定義します。以下の手順で設定フィールドを作成することができます。

手順は以下の通りです。

  1. フィールドの作成をクリックします。
  2. コンポーネントの追加ダイアログで、フォームに追加したいコンポーネントを選択します。各コンポーネントには異なる要件があります。コンポーネントの設定方法の詳細については、Marketing activity components referenceを参照してください。
  3. 必要な情報を入力します。

区切り線の追加

区切り線を追加して、アプリの構成フィールドをセクションにまとめることができます。アプリのフォームが長い場合は、フィールドをセクションにまとめるのがベストです。

手順は以下のとおりです。

  1. 設定フィールドセクションで、設定フィールドカードの間の空欄にカーソルを合わせます。
  2. Add title for dividerをクリックします。
  3. セクションのタイトルを入力します。
  4. タイトルの外側をクリックすると、新しいセクションが保存されます。セクションが保存されると、セクションの周囲に青いボックスが表示され、どのフィールドがグループ化されているかを簡単に確認することができます。セクションのタイトルとグループ化されたフィールドがマーチャントに表示されます。

マーケティング活動エクステンションの更新

マーケティング活動エクステンションの更新は、Partner Dashboard から行うことができます。コンポーネントを追加、削除、設定、注文することで、アプリのエクステンションを変更することができます。マーケティング活動コンポーネントの詳細については、Marketing activity components reference を参照してください。

修正は、以下のような外観上の変更に限定することをお勧めします。

  • エクステンションの説明の更新
  • コンポーネントの順序の変更
  • フィールドのラベルやプレースホルダーのテキストの更新
  • 新しいタイトルと本文の表示テキストコンポーネントを追加する

手順は以下のとおりです。

  1. Partner Dashboard で、Appsをクリックします。
  2. 変更したいアプリの名前をクリックします。
  3. アプリのページで、Extensionsをクリックします。
  4. Marketing activitiesセクションで、更新したいマーケティング活動を選択します。
  5. Marketing actibityのページで、更新したいフィールドに新しい情報を入力します。
  6. 新しいタイトルおよび本文表示テキストコンポーネントをフォームに追加したい場合は、フィールドの作成をクリックしてコンポーネントを選択します。
  7. マーケティング活動フォームのフィールドの順番を変更したい場合は、フィールドをクリックして希望の場所にドラッグします。
  8. Saveをクリックします。

マーケティング活動エクステンションの非推奨化

アプリケーションでサポートされなくなったマーケティング活動拡張機能は、Partner Dashboard から非推奨にすることができます。以下のステップでは、推奨される段階的な廃止プロセスを説明します。

ステップ

  1. アプリのバナーでマーチャントに非推奨化のお知らせを開始する。
  2. 拡張機能を非表示にします。
  3. 今後 6 カ月間、活動をサポートします(推奨)。
  4. 6 カ月後、古いマーケティング活動の更新を開始し、DISCONNECTED のステータスとエラーメッセージを表示して、マーケティング活動がサポートされなくなったことをマーチャントに通知します。

マーチャントには、マーケティング活動のインデックスページにDISCONNECTEDステータスとエラーメッセージが表示された古いマーケティング活動が表示されます。

  1. 拡張機能を無効にします。

マーケティング活動の拡張機能を隠す

アプリ用のマーケティング活動エクステンションを作成したが、マーチャントに使用させたくない場合は、パートナーダッシュボードからエクステンションを隠すことができます。エクステンションを非表示にする理由はいくつかあります。

  • 拡張機能をサポートしているアプリが不安定で、マーチャントがマーケティング活動を作成するために拡張機能を使用するのを一時的に阻止したい。
  • 拡張機能が廃止されるか、新しいバージョンに置き換えられる。

手順は以下の通りです。

  1. パートナーダッシュボードで、Appsをクリックし、拡張機能を隠したいアプリの名前をクリックします。
  2. Extensionsをクリックします。
  3. Marketing activitiesセクションで、非表示にしたいマーケティング活動の名前をクリックします。
  4. Change statusをクリックします。
  5. Change activity status ダイアログで Hide activity を選択します。
  6. Save をクリックします。

マーケティング活動エクステンションの無効化

拡張機能が廃止されたり、新しいバージョンに置き換えられたりする場合は、Partner Dashboard からその拡張機能を無効にすることができます。

手順は以下のとおりです。

  1. Partner Dashboard で、Apps をクリックします。
  2. 変更したいアプリの名前をクリックします。
  3. Extensionsをクリックします。
  4. Marketing activitiesセクションで、無効にするマーケティング活動を選択します。
  5. Change statusをクリックします。
  6. Change activity status modal で、Disable activity をクリックします。
  7. Saveをクリックします。

Reference

https://shopify.dev/apps/app-extensions/marketing-activities/reference

Overview

マーケティングアクティビティリファレンス

Component

マーケティングアクティビティコンポーネントリファレンス

マーケティングアクティビティアプリ拡張機能に関連付けられているフォームは、作成時に選択した一連のコンポーネントに基づいて生成されます。コンポーネントとは、アプリが必要とする特定の機能を構築するために使用できる、設定可能な UI の一部です。フォームは選択したコンポーネントに基づいて生成されますが、スタイル、レイアウト、またはワークフローを直接カスタマイズすることはできません。

アプリのフォームを作成する方法については、パートナーダッシュボードからフォームを作成するを参照してください。

概要

マーチャントがマーケティングアクティビティとやり取りすると、Shopify はマーケティングアクティビティのプリロードエンドポイントを呼び出して、アプリが提供するフィールド値をレンダリングします。これを行うために、Shopify は、このドキュメントで定義されているように、JSON 形式のコンポーネントを使用します。JSON 形式は、createupdateなどのアプリの他のエンドポイントにも使用されます。

エンドポイント JSON 出力スキーマをプリロードします

アプリのプリロードエンドポイントからのレスポンスには、field_nameとプロパティのキーバリューのペアを持つトップレベルのform_dataが含まれます。

{
  "form_data": {
    "<field_name>": {
      "<property_key>": "<property_value>"
    }
  }
}

動的スタンドアロンエンドポイントでは、あなたのアプリからの応答には、component_dataがトップレベルに含まれる。詳細については、先行入力コンポーネントを参照してください。

{
  "component_data": {
    "options": [{ "label": "<option_label>", "value": "<option_value>" }]
  }
}

JSON 入力スキーマを作成または更新する

マーチャントがマーケティングアクティビティを作成または更新すると、Shopify は、含まれているフィールド名と対応する値を含むプロパティオブジェクトを送信することにより、アプリを呼び出します。

{
  ...
  "properties": {
    "<field_name>": "<value>"
  }
}

1 行のテキスト

このコンポーネントを使用して、予想される入力が短い場合にマーチャントがテキスト入力を提供できるようにします。

コンポーネントのプロパティ

名前 説明
field_name String フォームの作成時に指定されるフィールドの名前。
disabled Boolean 入力が無効かどうか。デフォルト:false
help_text String コンポーネントの下に表示されるヘルプテキスト。
hidden Boolean コンポーネントが非表示かどうか。デフォルト:false
max_length Number 許可される最大文字数。
min_length Number 許可される最小文字数。
placeholder String 表示するヒントテキスト。
required Boolean コンポーネントが必要としてマークされているかどうか。デフォルト:true
value String 入力の値。

エンドポイント JSON 出力の例をプリロードします

以下のサンプル JSON は、パートナーダッシュボードを使用して定義されたフィールドのヘルプテキストとad_titleの値を定義します。

{
  "form_data": {
    "ad_title": {
      "help_text": "Think of something creative!",
      "value": "Welcome to John's apparel store."
    }
  }
}

プリロードエンドポイントの詳細については、マーケティングアクティビティエンドポイントを参照してください。

JSON 入力例の作成または更新

以下の例には、アプリに対する Shopify の応答と、マーチャントが提供するad_titleフィールドの値が含まれています。

{
  ...
  "properties": {
    "ad_title": "Welcome to John's crazy apparel store."
  }
}

エンドポイントの作成または更新の詳細については、マーケティングアクティビティエンドポイントを参照してください。

複数行のテキスト

予想される入力が複数行になる可能性がある場合は、このコンポーネントを使用してください。コンポーネントは、追加のテキストに対応するために自動的に拡張されます。

コンポーネントのプロパティ

名前 説明
field_name String フォームの作成時に指定されるフィールドの名前。
disabled Boolean 入力が無効かどうか。デフォルト:false
help_text String コンポーネントの下に表示されるヘルプテキスト。
hidden Boolean コンポーネントが非表示かどうか。デフォルト:false
max_length Number 許可される最大文字数。
min_length Number 許可される最小文字数。
placeholder String 表示するヒントテキスト。
required Boolean コンポーネントが必要としてマークされているかどうか。デフォルト:true
value String 入力の値。

エンドポイント JSON 出力の例をプリロードします

以下のサンプル JSON は、パートナーダッシュボードを使用して定義されたad_bodyフィールドのヘルプテキストと値を定義します。

{
  "form_data": {
    "ad_body": {
      "help_text": "Include a lot of information about your product.",
      "value": "This shirt is the best.\n\nIt's made with high quality materials."
    }
  }
}

プリロードエンドポイントの詳細については、マーケティングアクティビティエンドポイントを参照してください。

JSON 入力例の作成または更新

以下の例には、アプリに対する Shopify の応答と、マーチャントが提供するad_bodyフィールドの値が含まれています。

{
  ...
  "properties": {
    "ad_body": "These shorts are the best.\n\nThey're made with quality materials."
  }
}

エンドポイントの作成または更新の詳細については、マーケティングアクティビティエンドポイントを参照してください。

番号

このコンポーネントを使用して、マーチャントが番号を入力できるようにします。

コンポーネントのプロパティ

名前 説明
field_name String フォームの作成時に指定されるフィールドの名前。
disabled Boolean 入力が無効かどうか。デフォルト:false
help_text String コンポーネントの下に表示されるヘルプテキスト。
hidden Boolean コンポーネントが非表示かどうか。デフォルト:false
max Number 許可される最大数。
min Number 許可される最小数。
required Boolean コンポーネントが必要としてマークされているかどうか。デフォルト:true
step Number 有効な値の間の間隔。デフォルト:1
value Number 入力の値。

エンドポイント JSON 出力の例をプリロードします

以下のサンプル JSON は、パートナーダッシュボードを使用して定義されたquantityフィールドの値を定義します。

{
  "form_data": {
    "quantity": {
      "value": 1
    }
  }
}

プリロードエンドポイントの詳細については、マーケティングアクティビティエンドポイントを参照してください。

JSON 入力例の作成または更新

以下の例には、アプリに対する Shopify の応答と、マーチャントが提供するquantityフィールドの値が含まれています。

{
  ...
  "properties": {
    "quantity": 10
  }
}

エンドポイントの作成または更新の詳細については、マーケティングアクティビティエンドポイントを参照してください。

選択リストから選択

このコンポーネントを使用して、マーチャントがリストから選択できるようにします。

コンポーネントのプロパティ

名前 説明
field_name String フォームの作成時に指定されるフィールドの名前。
choices Object[] 選択できるオプションのリスト。
disabled Boolean 入力が無効かどうか。デフォルト:false
required Boolean コンポーネントが必要としてマークされているかどうか。デフォルト:true
selected String[] 選択されたもののコレクション。
hidden Boolean コンポーネントが非表示かどうか。デフォルト:false

エンドポイント JSON 出力の例をプリロードします

以下のサンプル JSON は、パートナーダッシュボードを使用して定義されたsizesフィールドの選択肢と選択された値を定義します。

{
  "form_data": {
    "sizes": {
      "choices": [
        { "label": "Small", "value": "sm" },
        { "label": "Medium", "value": "md", "disabled": true },
        { "label": "Large", "value": "lg" }
      ],
      "selected": ["sm", "lg"]
    }
  }
}

プリロードエンドポイントの詳細については、マーケティングアクティビティエンドポイントを参照してください。

JSON 入力例の作成または更新

以下の例には、アプリに対する Shopify の応答と、マーチャントが提供する sizes フィールドの値が含まれています。

{
  ...
  "properties": {
    "sizes": ["sm"]
  }
}

エンドポイントの作成または更新の詳細については、マーケティングアクティビティエンドポイントを参照してください。

予算

このコンポーネントを使用して、マーチャントが予算額を設定できるようにします。

コンポーネントのプロパティ

名前 説明
field_name String フォームの作成時に指定されるフィールドの名前。
amount Numeric String 予算額
currency* CurrencyCode 予算に使用される通貨(プリロードエンドポイントによって設定されます)。
disabled Boolean 入力が無効かどうか。デフォルト:false
help_text String 金額の下に表示されるヘルプテキスト。
max_amount Numeric String 最大予算額
min_amount Numeric String 最小予算額
required Boolean コンポーネントが必要としてマークされているかどうか。デフォルト:true
type String 予算の種類(dailyまたはlifetime)。
use_daily_budget Boolean マーチャントが 1 日の予算を入力できるかどうか。デフォルト:false
use_lifetime_budget Boolean マーチャントが生涯予算を入力できるかどうか。use_daily_budgetでもチェックすることができ、少なくともどちらか 1 つでチェックする必要があります。デフォルト:false
use_total_budget (deprecated) Boolean マーチャントが総予算を入力できるかどうか。use_daily_budgetでもチェックすることができ、少なくともどちらか 1 つでチェックする必要があります。デフォルト:false
hidden Boolean コンポーネントが非表示かどうか。デフォルト:false

エンドポイント JSON 出力の例をプリロードします

以下の JSON の例では、パートナーダッシュボードを使用して定義されたフィールドの金額、通貨、ヘルプテキスト、範囲の開始、範囲の終了、およびbudgetのスケジュールを定義しています。

{
  "form_data": {
    "budget": {
      "amount": 5,
      "currency": "CAD",
      "help_text": "Your shop will perform best with a $20 daily budget."
    }
  }
}

プリロードエンドポイントの詳細については、マーケティングアクティビティエンドポイントを参照してください。

JSON 入力例の作成または更新

以下の例には、アプリに対する Shopify の応答と、マーチャントが提供するbudgetフィールドの値が含まれています。

{
  ...
  "properties": {
    "budget": {
      "amount": 20,
      "currency": "CAD",
      "type": "daily"
    }
  }
}

エンドポイントの作成または更新の詳細については、マーケティングアクティビティエンドポイントを参照してください。

スケジュール

このコンポーネントを使用して、マーチャントが開始日と終了日を提供できるようにします。

コンポーネントのプロパティ

名前 説明
field_name String フォームの作成時に指定されるフィールドの名前。
disabled Boolean 入力が無効かどうか。デフォルト:false
help_text String コンポーネントの下に表示されるヘルプテキスト。
end_time Date マーチャントが選択した終了日。
end_time Date マーチャントが選択した開始日。
use_end_date Boolean マーチャントが(開始日に加えて)終了日を選択できるかどうか。デフォルト:false
required Boolean コンポーネントが必要としてマークされているかどうか。デフォルト:true
hidden Boolean コンポーネントが非表示かどうか。デフォルト:false

エンドポイント JSON 出力の例をプリロードします

以下の例の JSON は、パートナーダッシュボードを使用して定義されたstart_atフィールドの終了日を非表示にします。

{
  "form_data": {
    "start_at": {
      "range_start": "2019-01-01T00:00:00.000Z",
      "use_end_date": false
    }
  }
}

プリロードエンドポイントの詳細については、マーケティングアクティビティエンドポイントを参照してください。

JSON 入力例の作成または更新

以下の例には、アプリに対する Shopify の応答と、マーチャントが提供するstart_atフィールドの値が含まれています。

{
  ...
  "properties": {
    "start_at": {
      "start_time": "2019-01-01T00:00:00.000Z",
    }
  }
}

エンドポイントの作成または更新の詳細については、マーケティングアクティビティエンドポイントを参照してください。

製品の選択

このコンポーネントを使用して、マーチャントが 1 つ以上の商品と商品画像を選択できるようにします。

コンポーネントのプロパティ

名前 説明
field_name String フォームの作成時に指定されるフィールドの名前。
disabled Boolean 入力が無効かどうか。デフォルト:false
help_text String リソースピッカーの下に表示されるヘルプテキスト。
max_resources Number 許可される選択されたリソースの最大数。
min_resources Number 許可される選択されたリソースの最小数。
required Boolean コンポーネントが必要としてマークされているかどうか。デフォルト:true
value Product[] 選択されたリソースの配列。
hidden Boolean コンポーネントが非表示かどうか。デフォルト:false

製品型

名前 説明
id String 製品の ID。
images {src: String; id?: String}[] 商品の画像。
image_url (deprecated) String 商品の画像。備考imagesプロパティを使用して、マーチャントが商品画像を選択できるようにします。

エンドポイント JSON 出力の例をプリロードします

以下の JSON の例では、ヘルプテキスト、許可される選択された最大リソース、およびパートナーダッシュボードを使用して定義されたproductsフィールドの値を定義しています。

{
  "form_data": {
    "products": {
      "help_text": "Choose products that are featured on your home page.",
      "max_resources": 3,
      "value": [
        {
          "id": "gid://shopify/Product/5",
          "images": [
            {
              "src": "https://shopify.com/images/1"
            }
          ]
        }
      ]
    }
  }
}

プリロードエンドポイントの詳細については、マーケティングアクティビティエンドポイントを参照してください。

JSON 入力例の作成または更新

以下の例には、アプリに対する Shopify の応答と、マーチャントが提供するproductsフィールドの値が含まれています。

{
  ...
  "properties": {
    "products": [
      {
        "id": "gid://shopify/Product/5",
        "image_url": "https://cdn.shopify.com/s/files/1",
        "title": "Blue swim shorts",
      },
      {
        "id": "gid://shopify/Product/6",
        "image_url": null,
        "title": "Straw hat",
      }
    ]
  }
}

エンドポイントの作成または更新の詳細については、マーケティングアクティビティエンドポイントを参照してください。

割引の選択

このコンポーネントを使用して、マーチャントに 1 つ以上の割引を選択させます。

コンポーネントのプロパティ

名前 説明
field_name String フォームの作成時に指定されるフィールドの名前。
disabled Boolean 入力が無効かどうか。デフォルト:false
help_text String リソースピッカーの下に表示されるヘルプテキスト。
max_resources Number 許可される選択されたリソースの最大数。
min_resources Number 許可される選択されたリソースの最小数。
required Boolean コンポーネントが必要としてマークされているかどうか。デフォルト:true
value Object[] 選択されたリソースの配列。
hidden Boolean コンポーネントが非表示かどうか。デフォルト:false

エンドポイント JSON 出力の例をプリロードします

以下の例の JSON は、パートナーダッシュボードで定義されているstart_atフィールドの終了日を非表示にします。

{
  "form_data": {
    "discount": {
      "help_text": "Choose a discount for this activity.",
      "max_resources": 1,
      "value": [
        {
          "id": "gid://shopify/PriceRule/1"
        }
      ]
    }
  }
}

プリロードエンドポイントの詳細については、マーケティングアクティビティエンドポイントを参照してください。

JSON 入力例の作成または更新

以下の例には、アプリに対する Shopify の応答と、マーチャントが提供するdiscountフィールドの値が含まれています。

{
  ...
  "properties": {
    "discount": [
      {
        "id": "gid://shopify/PriceRule/1",
        "title": "BLACKFRIDAY10",
        "summary": "10% off entire order",
        "features": [],
        "status": "ACTIVE"
      }
    ]
  }
}

エンドポイントの作成または更新の詳細については、マーケティングアクティビティエンドポイントを参照してください。

画像の選択

このコンポーネントを使用して、マーチャントが画像をショップにアップロードするか、ショップから画像を選択できるようにします。

コンポーネントのプロパティ

名前 説明
field_name String フォームの作成時に指定されるフィールドの名前。
disabled Boolean 入力が無効かどうか。デフォルト:false
help_text String リソースピッカーの下に表示されるヘルプテキスト。
max_resources Number 許可される選択されたリソースの最大数。
min_resources Number 許可される選択されたリソースの最小数。
required Boolean コンポーネントが必要としてマークされているかどうか。デフォルト:true
value {src: String; id: String, altText: String, originalSrc (deprecated): String}[] 選択されたリソースの配列。
hidden Boolean コンポーネントが非表示かどうか。デフォルト:false

エンドポイント JSON 出力の例をプリロードします

以下の JSON の例では、ヘルプテキスト、許可される選択された最大リソース、およびパートナーダッシュボードを使用して定義されたfeatured_imagesフィールドの値を定義しています。

{
  "form_data": {
    "featured_images": {
      "help_text": "Choose an image for this activity.",
      "max_resources": 3,
      "value": [
        {
          "id": "gid://shopify/ShopImage/1",
          "alt_text": "Blue sweater",
          "src": "https://cdn.myshopify.io/s/files/1/0000/0001/files/googlee.jpg"
        },
        {
          "id": "4289",
          "alt_text": "Black friday!",
          "src": "https://burst.shopifycdn.com/photos/i-heart-black-friday.jpg"
        }
      ]
    }
  }
}

プリロードエンドポイントの詳細については、マーケティングアクティビティエンドポイントを参照してください。

JSON 入力例の作成または更新

以下の例には、アプリに対する Shopify の応答と、マーチャントが提供するfeatured_imagesフィールドの値が含まれています。

{
  ...
  "properties": {
    "featured_images": [
      {
        "id":"gid://shopify/ShopImage/1",
        "src":"https://cdn.shopify.com/s/files/1/1/1/files/blue_shorts.png?v=1517010629",
        "alt_text":"Blue shorts"
      },
      {
        "id":"gid://shopify/ShopImage/2",
        "src":"https://cdn.shopify.com/s/files/1/1/1/files/red_shorts.png?v=1517010629",
        "alt_text":"Red shorts"
      }
    ]
  }
}

エンドポイントの作成または更新の詳細については、マーケティングアクティビティエンドポイントを参照してください。

先行入力

このコンポーネントを使用して、マーチャントがリストからアイテムをすばやく検索できるようにします。

動的スタンドアロンエンドポイント JSON スキーマ

{
  "field_data": {
    "options": [{ "label": "<option_label>", "value": "<option_value>" }]
  }
}

動的スタンドアロンエンドポイントの詳細については、マーケティングアクティビティエンドポイントを参照してください。

コンポーネントのプロパティ

名前 説明
field_name String フォームの作成時に指定されるフィールドの名前。
disabled Boolean 入力が無効かどうか。デフォルト:false
placeholder String 表示するヒントテキスト。
required Boolean コンポーネントが必要としてマークされているかどうか。デフォルト:true
value Object[] 選択されたもののコレクション。
hidden Boolean コンポーネントが非表示かどうか。デフォルト:false

エンドポイント JSON 出力の例をプリロードします

以下のサンプル JSON は、パートナーダッシュボードを使用して定義されたcoloursフィールドの値を定義します。

{
  "form_data": {
    "colours": {
      "value": [
        { "label": "Red", "value": "red" },
        { "label": "Blue", "value": "blue" },
        { "label": "Yellow", "value": "yellow" }
      ]
    }
  }
}

プリロードエンドポイントの詳細については、マーケティングアクティビティエンドポイントを参照してください。

JSON 入力例の作成または更新

以下の例には、アプリに対する Shopify の応答と、マーチャントが提供するcoloursフィールドの値が含まれています。

{
  ...
  "properties": {
    "colours": [
        {"label": "Red", "value": "red"},
        {"label": "Blue", "value": "blue"}
      ]
    }
  }
}

エンドポイントの作成または更新の詳細については、マーケティングアクティビティエンドポイントを参照してください。

動的スタンドアロンエンドポイント JSON 出力の例

以下のサンプル JSON は、パートナーダッシュボードを使用して定義されたcoloursフィールドのオプションを定義します。

{
  "field_data": {
    "options": [
      { "label": "Red", "value": "red" },
      { "label": "Blue", "value": "blue" },
      { "label": "Yellow", "value": "yellow" }
    ]
  }
}

動的スタンドアロンエンドポイントの詳細については、マーケティングアクティビティエンドポイントを参照してください。

タイトルと本文の表示テキスト

このコンポーネントを使用して、マーチャントが完了しているタスクに関する追加情報をマーチャントに提供します。

コンポーネントのプロパティ

名前 説明
title String セクションタイトル。
body String セクション本体。マークダウンを使用して、相対リンクまたは安全な HTTPS 絶対リンクをサポートします。例:
Click [here](/admin/app) to set up your account.
または
Read more about [account setup](https://example.com).
hidden Boolean コンポーネントが非表示かどうか。デフォルト:false

仕切り

このコンポーネントを使用して、関連するコンポーネントをセクションにグループ化します。

コンポーネントのプロパティ

名前 説明
title String セクションタイトル。
hidden Boolean コンポーネントが非表示かどうか。デフォルト:false

Endpoints

マーケティングアクティビティのエンドポイントリファレンス

アプリがマーケティングアクティビティアプリ拡張機能を介して Shopify から通信を受信する前に、アプリのプライマリドメインで一連の標準化された API エンドポイントをホストする必要があります。これらのエンドポイントは、アプリの拡張機能がレンダリングされたとき、およびアプリから関連するアクションが要求されたときに呼び出されます。

エンドポイントの要件

マーケティングアクティビティアプリのエンドポイントの要件は次のとおりです。

ルール/コンセンサス 型/要件
API format REST
Content type JSON
Security mechanism HMAC/Signed requests (Webhooks と同じ)
Protocol HTTPS (アプリドメインには有効な SSL 証明書が必要です)

ベースエンドポイント

さまざまなユースケースに統合するときに Shopify が呼び出すことができるように、アプリはベースエンドポイントをホストする必要があります。このエンドポイントは、アプリの URL でホストする必要があります。カスタム名前空間/サブパスを指定できます。アプリに複数の拡張機能がある場合は、単一の名前空間を共有できます。

次の例は、一般的なエンドポイントを示しています。

https://app-url.com/api/marketing_activities

URL には次のものが含まれます。

  1. HTTPS プロトコル(アプリには有効な SSL 証明書が必要です)
  2. ベースアプリケーションの URL
  3. 固定名前空間(アプリ拡張機能で設定される)

したがって、基本エンドポイントは次のとおりです。

https://#{base_app_url}/#{custom_namespace}

マーケティングアクティビティフォームをプリロードします

マーチャントがマーケティングアクティビティ拡張機能を使用する場合、Shopify が最初に行うことは、アプリ拡張機能フレームワークからフォーム構成を取得することです。フォーム構成は、UI でレンダリングする必要があるすべてのフォームフィールドとその他の UI コンポーネントを一覧表示するスキーマです。

HTTP リクエスト

POST "#{base_endpoint}/preload_form_data"

予想される HTTP ステータス応答:

  • 200 - OK
  • 412 - Precondition Failed(ユーザーがアプリのセットアップを完了していないなど、何らかの理由でアプリがアクティビティを作成できない場合)

JSON 入力

{
  "shopify_domain": "johns-apparel.myshopify.com",
  "shop_id": "gid://shopify/Shop/1111111",
  "user_id": 1,
  "locale": "en"
}
shopify_domain フォームのプリロードをリクエストしているショップドメイン。アプリは、データベース内のショップドメインを一意のレコードとして保持し、それを使用して各マーチャントまたはショップの特定のデータをフェッチします。
shop_id ショップ GID。
user_id Shopify admin に現在ログインしているユーザーの ID。この ID を利用して、特定のショップで多くのユーザーに共有される広範な広告アカウントではなく、認証されたユーザーと広告アカウントを結びつけることができます。
locale 現在のセッションロケール(文字列)。これは、マーチャントが現在のセッションで使用している言語です。
marketing_activity_id (optional) 既存のマーケティングアクティビティ GID。これは、マーケティングアクティビティを編集する場合にのみ使用されます(詳細については、マーケティングアクティビティの編集を参照してください)。

JSON 出力

マーケティングアクティビティのプロパティを変更する場合は、応答にフィールドを含めることができます。何も返されない場合、そのフィールド(アプリ拡張機能内)に対して静的に構成されているものはすべて、マーチャントにレンダリングされます。

空の応答の例を次に示します。

{
  "form_data": {}
}

この例では、アプリがaverage_daily_budgetフィールドにさらに属性を追加します。

{
  "form_data": {
    "average_daily_budget": {
      "currency": "CAD",
      "help_text": "Your shop will perform best with a $20 daily budget.",
      "min_amount": "13.00"
    }
  }
}

これらのプロパティはの現在のaverage_daily_budgetの状態にマージされるため、事前定義されたhelp_textがあった場合、アプリはYour shop will perform best with a $20 daily budget.で上書きします。これは、その応答に存在する他のフィールドにも当てはまります。アプリが応答でamountフィールドの状態について言及しなかったため、フィールドの状態は保持されます。

アプリがamountフィールドをクリアしたい場合は、応答に空の値を指定する必要があります。

{
  "form_data": {
    "average_daily_budget": {
      "amount": "",
      "currency": "CAD",
      "help_text": "Your shop will perform best with a $20 daily budget.",
      "min_amount": "13.00"
    }
  }
}

よくある質問

各フィールドで使用できるプロパティはどれですか?各コンポーネントの契約は何ですか?

コンポーネントの構成方法の詳細については、マーケティングアクティビティコンポーネントリファレンスを参照してください。

アプリが UI に新しいフィールドを動的に追加することは可能ですか?

いいえ。アプリは、フォームの静的定義から事前定義されたフィールドを常に尊重する必要があります(パートナーダッシュボードから作成されたため)。ただし、アプリは上記のパターンを使用して UI フィールドを表示、非表示、または無効にすることができます。

マーケティングアクティビティフォームバナーの追加

プリロード呼び出しでは、プリロードされたフォームの構成と値を返すだけでなく、フォームの上に表示するバナーのリストを返すことができます。これらのアプリバナーは、マーケティングアクティビティフォームのエラーメッセージとは別に教育情報をマーチャントに提供するのに役立ちます。

アプリのバナーにはいくつかの種類があります(以下のApp banner properties の表のtypeの項目を参照)。それぞれがどのように見えるかを確認するには、Shopify の Polaris デザインシステムのバナードキュメントを参照してください。

アプリバナー応答 JSON を使用して呼び出しをプリロードする

"form_data": {
   "average_daily_budget": {
     "value": 35,
     "description": "in CAD",
     "minimum": 13
   }
 },
 "app_banners":[
   {
     "type": "info",
     "title": "Your Dynamic Product Ad might not be effective. Please refer to this [help](https://www.teststore.myshopify.com/extension/create)",
     "description": "Please create a carousel ad instead.",
     "primary_cta": {
       "label": "Create a carousel Ad",
       "url": "https://www.teststore.myshopify.com/extension/create"
     },
     "secondary_cta": {
       "label": "Find out more",
       "url": "https://www.teststore.myshopify.com/facebook_ads/find_out_more"
     }
   }
 ]

アプリバナーのプロパティ

type (required) バナーの種類。有効な値:defaultinfowarningcritical
title (required) バナーのタイトル。
description (required) バナーに表示される説明。
primary_cta (optional) バナーの主な召喚ボタン。次のプロパティが含まれています。
label -召喚ボタンのラベル。
url -召喚ボタンのリンク。
primary_cta (optional) バナーの 2 番目の召喚ボタン。primary_ctaが提供されている必要があります。primary_ctaと同じプロパティを受け入れます。

アプリバナー FAQ

フォームにアプリのバナーを表示する必要がない場合はどうなりますか?

プリロードレスポンスでは、app_bannersキーを持つハッシュを返す代わりに、nilまたは空の配列を返すことができます。

マークダウンはアプリバナーでサポートされていますか?

現在、リンクのマークダウンフォーマットのみがサポートされています。リンク URL は、絶対 URL または相対 URL のいずれかです。

却下可能なアプリバナーはサポートされていますか?

いいえ、現在サポートされていません。

マーケティングアクティビティをプレビューする

ほとんどのマーケティングアクティビティでは、実際に作成される前にマーチャントがプレビューできます。たとえば、マーチャントが Facebook キャンペーンを作成するとき、さまざまなオプション、コンテンツ、タイプ、いくつかの説明、および支出したい金額を選択した後、それをプレビューできます。

マーケティングアクティビティをプレビューするために、アプリはフォームからマーケティングアクティビティを受け取り、プレビュー URL を返します。このプレビュー URL は Shopify 内に iframe で埋め込まれ、マーチャントに表示されます。

マーケティングアクティビティのプレビューは、検証を実行し、マーチャントに早期のフィードバックを提供するための良い方法です。プレビューを生成する前に検証を実行することをお勧めします。検証エラーがある場合は、応答で返します。

HTTP リクエスト

POST "#{base_endpoint}/preview"

予想される HTTP ステータス応答:

  • 200 - OK(プレビューが生成され、検証エラーが見つからなかった場合)
  • 422 - Unprocessable Entity(検証エラーがある場合)

JSON 入力

{
  "shopify_domain": "johns-apparel.myshopify.com",
  "shop_id": "gid://shopify/Shop/1111111",
  "user_id": 1,
  "locale": "en",
  "marketing_activity_id": "gid://shopify/MarketingActivity/4",
  "preview_types": ["desktop", "mobile"],
  "properties": {
    "average_daily_budget": "13.00",
    "quantity": 2
  }
}
shopify_domain 関連するショップドメイン。
shop_id 関連ショップ GID。
user_id 認証されたユーザーの ID。
marketing_activity_id (optional) マーケティングアクティビティの ID。これは、マーチャントがすでに存在するマーケティングアクティビティをプレビューしている場合にのみ渡されます。
locale 現在のロケール(文字列)。
preview_types リクエストするプレビュータイプの配列。デフォルト:["desktop", "mobile"]
properties マーチャントから収集されたすべての入力フィールド値。

JSON 出力

この例では、アプリはプレビュー(ステータスコード 200)を生成できました。

{
  "desktop": {
    "preview_url": "https://app-url.com/previews/98564321",
    "content_type": "text/html",
    "width": 1000,
    "height": 800
  },
  "mobile": {
    "preview_url": "https://app-url.com/previews/98564322",
    "content_type": "text/html",
    "width": 360,
    "height": 800
  }
}
preview_type JSON リクエストで渡された内容に対応するpreview_typeキー
preview_url (200 の場合に必要) プレビュー HTML または画像を含む URL。Shopify はこのプレビューを iframe 内に埋め込みます。
content_type (200 の場合に必要) プレビュー用の mime タイプ。利用可能なオプション:
・text / html
・image / jpeg
・image / png
width (200 の場合に必要) プレビューの幅(整数)。Shopify はこれを使用して iframe のサイズを調整します。
height (200 の場合に必要) プレビューの高さ(整数)。Shopify はこれを使用して iframe のサイズを調整します。

検証エラー(ステータスコード 422)が原因でアプリがプレビューを生成できなかった場合、プレビューフレーム内でマーチャントに表示されるエラーメッセージで応答できます。エラーの JSON 構造は、マーケティングアクティビティのステータスをFAILEDに更新する場合と同じです。

よくある質問

プレビュー URL は HTML をサポートしていますか?

はい。

非同期プレビューはサポートされていますか?

いいえ。アプリは同期プレビューエンドポイントのみを提供する必要があります。

アプリがプレビューを生成するのに 10 秒以上かかる場合は、回避策として、プレビューエンドポイントを HTML としてすばやく提供し、URL がヒットしたときにプレビューを生成できます。

どのプレビュータイプがサポートされていますか?

フォームビルダーで最大 3 つのプレビュータイプを定義できます。エンドポイントは、要求されたプレビュータイプのみを返します。

リクエストのpropertiesからプレビューを生成するために必要な情報はすべて揃っています。marketing_activity_idを使用する必要がありますか?

marketing_activity_idは既存のマーケティングアクティビティをプレビューする際の要求で提供されます。これを使用してプレビューを生成できますが、必須ではありません。

マーケティングアクティビティを作成する

このエンドポイントは、マーチャントがマーケティングセクションでマーケティングアクティビティを作成しようとしたときに呼び出されます。マーケティングアクティビティ作成 REST エンドポイントは、マーケティングプラットフォームでマーケティングアクティビティを作成するために非同期ジョブをスケジュールする必要があります。このエンドポイントは、フォームを検証し、Shopify によって作成されたマーケティングアクティビティオブジェクトの更新をスケジュールする必要があります。ジョブでは、マーケティングアクティビティオブジェクトの最初の更新に UTM パラメータを含める必要があります。有料アクティビティの場合は、予算フィールドも含める必要があります。

Shopify のマーケティングアクティビティと、アプリがマーケティングプラットフォームで作成するアクティビティの間には、1 対 1 の関係が必要です。アプリがプラットフォーム上でマーケティングアクティビティを作成するときは、Shopify マーケティングアクティビティ ID の一意性を確認してください。たとえば、ネットワークの問題により、同じマーケティングアクティビティ ID が作成エンドポイントに 2 回提供される場合、アプリはマーケティングアクティビティを 1 つだけ作成する必要があります。

マーケティングアクティビティを作成するためのワークフローには、次の手順が含まれます。

  1. マーチャントはマーケティングアクティビティフォームに記入し、Publishボタンをクリックします。
  2. Shopify は事前にマーケティングアクティビティを作成し、アプリのマーケティングアクティビティの作成 REST エンドポイントにアクセスします。
  3. アプリは次のことを行う必要があります。
    1. フォームを検証します。有効な場合は200 OKや空の JSON 応答で応答します。無効な場合は、プレビューのセクションで説明されているように、正しい HTTP エラーコードと JSON エラーハッシュで応答します。
    2. 非同期ジョブをスケジュールして、MarketingActivityUpdateを使用してマーケティングアクティビティの UTM パラメータと予算を設定します。
    3. 非同期ジョブをスケジュールして、マーケティングアクティビティをプラットフォーム(Facebook など)に公開してから、MarketingActivityUpdateを呼び出してステータスを更新します。
  4. アプリが200 OKで応答した場合、Shopify は作成されたマーケティングアクティビティをPending状態にしてアプリに応答します。
  5. アプリが 400 代または 500 代の HTTP エラーコードで応答した場合、Shopify は事前に作成したマーケティングアクティビティをクリーンアップします。
  6. アプリがマーケティングアクティビティをプラットフォームに公開した後、次のことを行う必要があります。
    1. 成功した場合は、MarketingActivityUpdateを呼び出して、アクティビティが進行中の場合はACTIVE、完了した場合はINACTIVEとしてマークします。
    2. 失敗した場合は、MarketingActivityUpdateを呼び出してアクティビティをFAILEDとしてマークし、エラーの原因を渡して、Shopify admin のMarketingページに表示できるようにします。

マーケティングアクティビティ作成フローのシーケンス図

HTTP リクエスト

POST "#{base_endpoint}"

予想される HTTP ステータス応答:

  • 200 - OK(アクティビティが作成され、検証エラーが見つからなかった場合)
  • 412 - Precondition failed(ユーザーがアプリのセットアップを完了していない場合)
  • 422 - Unprocessable Entity(検証エラーがある場合)

JSON 入力

マーケティングアクティビティを作成するための JSON 入力は、マーケティングアクティビティをプレビューするための入力とほぼ同じです。

{
  "shopify_domain": "johns-apparel.myshopify.com",
  "shop_id": "gid://shopify/Shop/1111111",
  "user_id": 1,
  "locale": "en",
  "marketing_activity_title": "Apparel promotion",
  "marketing_activity_id": "gid://shopify/MarketingActivity/34435",
  "context": "",
  "properties": {
    "average_daily_budget": "150.00",
    "quantity": 2
  }
}
shopify_domain 関連するショップドメイン。
shop_id 関連ショップ GID。
user_id 認証されたユーザーの ID。
locale 現在のロケール(文字列)。
marketing_activity_title マーケティングアクティビティのタイトル(文字列)。
marketing_activity_id Shopify によって作成されたマーケティングアクティビティの GID。
context (deprecated) Shopify がいくつかのマーケティングアクティビティプロパティを識別するために使用するエンコードされた文字列。注:非推奨のGraphQL MarketingActivityCreateエンドポイントを使用している場合は、このコンテキストを Shopify に中継する必要があります。
properties マーチャントから収集されたすべての入力フィールド値。

JSON 出力

アプリがマーケティングアクティビティ(ステータスコード 200)を作成できた場合、空の JSON 応答が期待されます。

{}
errors (422 の場合に必要) アプリは、作成が失敗した場合にマーチャントに表示される検証エラーで応答できます。エラー応答構造は、マーケティングアクティビティのステータスをFAILEDに更新する場合と同じです。

よくある質問

Shopify が事前にマーケティングアクティビティを作成するのはなぜですか?

これにより、アプリが Shopify に追加の呼び出しを行う必要がなくなるため、マーケティングアクティビティを作成するプロセスが簡素化されます。また、この REST エンドポイントのタイムアウトの可能性を減らします。

マーケティングアクティビティを非同期的に更新する必要があるのはなぜですか?

マーケティングアクティビティの作成フローは、より応答性が高くなります。アプリへの最初の呼び出しに応答するのにかかる時間は短くなります。

マーケティングアクティビティの初期状態はどうなっていますか?

初期状態はPENDINGです。マーケティングアクティビティオブジェクトを更新するアプリの非同期ジョブでは、ACTIVEFAILEDなどの他のステータスに自由に更新するか、ステータスをPENDINGとして保持し続けることができます。

マーケティングアクティビティの UTM パラメータを更新する必要があるのはなぜですか?

Shopify は、広告のエンゲージメントとレポートを表示するために UTM パラメーターを必要とします。これは、ストアフロントアプリの戦術を除くすべてのマーケティング戦術に必要です。UTM パラメータは、マーケティングアクティビティが最初に更新されるときに指定する必要があります。

アプリは、マーケティングアクティビティエンドポイントと MarketingEvent API の両方を呼び出す必要がありますか?

いいえ。新しいマーケティングセクションを通じてマーケティングアクティビティを作成するアプリは、マーケティングアクティビティエンドポイントのみを使用します。

アプリから古いマーケティングイベントを失いますか?

いいえ。Shopify は既存のすべてのマーケティングイベントをマーケティングアクティビティに埋め戻します。各マーケティングイベントには対応するマーケティングアクティビティがあり、いずれかの API への変更は両方のエンティティに反映されます。

マーケティングアクティビティを編集する

場合によっては、マーチャントは既存のマーケティングアクティビティのいくつかの属性を変更することが許可されます。たとえば、一部のソーシャルメディアアプリでは、アクティビティの作成後にユーザーがアクティビティの予算を変更できます。他のいくつかのアプリはより柔軟性があり、ユーザーが追加のフィールドを更新できるようにします。

これは、preload_form_dataエンドポイントを使用して実現できます(マーケティングアクティビティフォームのプリロードを参照)。

この例では、Shopify はペイロードでmarketing_activity_idを送信します。

{
  "shopify_domain": "johns-apparel.myshopify.com",
  "shop_id": "gid://shopify/Shop/1111111",
  "user_id": 1,
  "locale": "en",
  "marketing_activity_id": "gid://shopify/MarketingActivity/34526"
}

アプリは、マーケティングアクティビティがデータベースに保持されていることを確認し、それに応じて応答して、期待どおりにフォームフィールドを設定する必要があります。

{
  "form_data": {
    "average_daily_budget": {
      "amount": "1000.00",
      "currency": "CAD",
      "help_text": "Your shop will perform best with a $20 daily budget.",
      "min_amount": "13.00"
    },
    "quantity": {
      "disabled": true,
      "value": 2
    },
    "ad_title": {
      "disabled": true,
      "value": "Welcome to John's apparel store."
    }
  }
}

マーケティングアクティビティを更新する

これは、前のユースケースの続きです。すべての変更が行われた後、マーチャントはフォームを送信します。このアクションは、インラインマーケティングアクティビティの作成に似ています。

HTTP リクエスト

PATCH "#{base_endpoint}"

予想される HTTP ステータス応答:

  • 200 - OK(アクティビティが同期的に更新され、検証エラーが見つからなかった場合)
  • 202 - Accepted(アクティビティが非同期的に更新されるようにスケジュールされている場合)
  • 412 - Precondition Failed(ユーザーがアプリのセットアップを完了していない場合)
  • 422 - Unprocessable Entity(検証エラーがある場合)

200 の応答を受信した後、Shopify はマーケティングアクティビティのステータスをACTIVEに更新します。

JSON 入力

マーケティングアクティビティを更新するための入力は、マーケティングアクティビティ GID を使用したインラインマーケティングアクティビティの作成と同じです。

{
  "shopify_domain": "johns-apparel.myshopify.com",
  "shop_id": "gid://shopify/Shop/1111111",
  "user_id": 1,
  "locale": "en",
  "marketing_activity_id": "gid://shopify/MarketingActivity/34435",
  "marketing_activity_title": "Apparel promotion",
  "properties": {
    "average_daily_budget": 150.0,
    "quantity": 2
  }
}
shopify_domain 関連するショップドメイン。
shop_id 関連ショップ GID。
user_id 認証されたユーザーの ID。
locale 現在のロケール(文字列)。
marketing_activity_id 更新されるマーケティングアクティビティの GID。
marketing_activity_title マーケティングアクティビティのタイトル(文字列)。
properties すべての入力フィールド値。

JSON 出力

アプリがマーケティングアクティビティを同期的に更新できる場合(ステータスコード 200)、Shopify は応答に空の本文を期待します。

アプリがマーケティングアクティビティを非同期で更新し始めた場合、Shopify はステータスコード 202 が受け入れられ、応答に空の本文があることを期待します。

ただし、アプリが検証エラーを検出した場合、ステータスコード 422 および関連するエラーで応答できます。エラー応答構造は、マーケティングアクティビティのステータスをFAILEDに更新する場合と同じです。

マーケティングアクティビティを一時停止します

アクティブな状態のマーケティングアクティビティを一時停止できます。pauseエンドポイントを使用して、アクティブなマーケティングアクティビティを同期的または非同期的に一時停止できます。

HTTP リクエスト

PATCH "#{base_endpoint}/pause"

予想される HTTP ステータス応答:

  • 200 - OK(アクティビティが同期的に一時停止された場合)
  • 202 - Accepted(アクティビティが非同期一時停止を開始した場合)
  • 412 - Precondition Failed(ユーザーがアプリのセットアップを完了していない場合)

200 の応答を受信した後、Shopify はマーケティングアクティビティのステータスをPAUSEDに更新します。

JSON 入力

マーケティングアクティビティを更新するための入力は、マーケティングアクティビティ GID を使用したインラインマーケティングアクティビティの作成と同じです。

{
  "shopify_domain": "johns-apparel.myshopify.com",
  "shop_id": "gid://shopify/Shop/1111111",
  "user_id": 1,
  "locale": "en",
  "marketing_activity_id": "gid://shopify/MarketingActivity/34435"
}
shopify_domain 関連するショップドメイン。
shop_id 関連ショップ GID。
user_id 認証されたユーザーの ID。
locale 現在のロケール(文字列)。
marketing_activity_id 更新されるマーケティングアクティビティの GID。

JSON 出力

アプリがマーケティングアクティビティを同期的に一時停止できる場合(ステータスコード 200)、Shopify は応答に空の本文を期待します。

アプリがマーケティングアクティビティを非同期的に一時停止し始めた場合、Shopify はステータスコード 202 が受け入れられ、応答に空の本文があることを期待します。

マーケティングアクティビティを再開する

一時停止状態のマーケティングアクティビティを再開できます。resumeエンドポイントを使用して、一時停止したマーケティングアクティビティを同期的または非同期的に再開できます。

HTTP リクエスト

PATCH "#{base_endpoint}/resume"

予想される HTTP ステータス応答:

  • 200 - OK(アクティビティが同期的に再開された場合)
  • 202 - Accepted(アクティビティが非同期で再開された場合)
  • 412 - Precondition Failed(ユーザーがアプリのセットアップを完了していない場合)

200 の応答を受信した後、Shopify はマーケティングアクティビティのステータスをACTIVEに更新します。

JSON 入力

マーケティングアクティビティを更新するための入力は、マーケティングアクティビティ GID を使用したインラインマーケティングアクティビティの作成と同じです。

{
  "shopify_domain": "johns-apparel.myshopify.com",
  "shop_id": "gid://shopify/Shop/1111111",
  "user_id": 1,
  "locale": "en",
  "marketing_activity_id": "gid://shopify/MarketingActivity/34435"
}
shopify_domain 関連するショップドメイン。
shop_id 関連ショップ GID。
user_id 認証されたユーザーの ID。
locale 現在のロケール(文字列)。
marketing_activity_id 更新されるマーケティングアクティビティの GID。

JSON 出力

アプリがマーケティングアクティビティを同期的に再開できる場合(ステータスコード 200)、Shopify は応答に空の本文を期待します。

アプリがマーケティングアクティビティを非同期的に再開し始めた場合、Shopify はステータスコード 202 が受け入れられ、応答に空の本文があることを期待します。

マーケティングアクティビティを再公開する

マーケティングアクティビティの作成が失敗すると、その状態はfailedに変わります。再公開するには、ユーザーがアクティビティのプロパティのいくつかを変更する必要がある場合があります。republishエンドポイントを使用してこれを実現できます。関連する要求および応答の本文は、マーケティングアクティビティの更新に使用されるものと同じです。

HTTP リクエスト

POST "#{base_endpoint}/republish"

予想される HTTP ステータス応答:

  • 200 - OK(アクティビティが同期的に再公開され、検証エラーが見つからなかった場合)
  • 202 - Accepted(アクティビティが非同期再発行を開始した場合)
  • 412 - Precondition Failed(ユーザーがアプリのセットアップを完了していない場合)
  • 422 - Unprocessable Entity(検証エラーがある場合)

200 の応答を受信した後、Shopify はマーケティングアクティビティのステータスをACTIVEに更新します。

JSON 入力

マーケティングアクティビティを再公開するための入力は、マーケティングアクティビティ GID を使用したインラインマーケティングアクティビティの作成と同じです。

{
  "shopify_domain": "johns-apparel.myshopify.com",
  "shop_id": "gid://shopify/Shop/1111111",
  "user_id": 1,
  "locale": "en",
  "marketing_activity_id": "gid://shopify/MarketingActivity/34435",
  "marketing_activity_title": "Apparel promotion",
  "properties": {
    "average_daily_budget": "150.00",
    "quantity": 2
  }
}
shopify_domain 関連するショップドメイン。
shop_id 関連ショップ GID。
user_id 認証されたユーザーの ID。
locale 現在のロケール(文字列)。
marketing_activity_id 更新されるマーケティングアクティビティの GID。
marketing_activity_title マーケティングアクティビティのタイトル(文字列)。
properties すべての入力フィールド値。

JSON 出力

アプリがマーケティングアクティビティを同期的に再公開できる場合(ステータスコード 200)、Shopify は応答に空の本文を期待します。

アプリがマーケティングアクティビティを非同期で再公開し始めた場合、Shopify はステータスコード 202 が受け入れられ、応答に空の本文があることを期待します。

ただし、アプリが検証エラーを検出した場合、ステータスコード 422 および関連するエラーで応答できます。エラー応答構造は、マーケティングアクティビティのステータスをに更新する場合と同じFAILEDです。

マーケティングアクティビティを削除する

マーケティングアクティビティを削除できます。deleteエンドポイントを使用して、マーケティングアクティビティを同期的または非同期的に削除できます。

HTTP リクエスト

PATCH "#{base_endpoint}/delete"

予想される HTTP ステータス応答:

  • 200 - OK(アクティビティが同期的に削除された場合)
  • 202 - Accepted(アクティビティが非同期的に削除された場合)
  • 412 - Precondition Failed(ユーザーがアプリのセットアップを完了していない場合)

200 の応答を受信した後、Shopify はマーケティングアクティビティのステータスをDELETEDに更新します。

JSON 入力

マーケティングアクティビティを削除するための入力は、マーケティングアクティビティ GID を使用したインラインマーケティングアクティビティの作成と同じです。

{
  "shopify_domain": "johns-apparel.myshopify.com",
  "shop_id": "gid://shopify/Shop/1111111",
  "user_id": 1,
  "locale": "en",
  "marketing_activity_id": "gid://shopify/MarketingActivity/34435"
}
shopify_domain 関連するショップドメイン。
shop_id 関連ショップ GID。
user_id 認証されたユーザーの ID。
locale 現在のロケール(文字列)。
marketing_activity_id 削除されるマーケティングアクティビティの GID。

JSON 出力

アプリがマーケティングアクティビティを同期的に削除できる場合(ステータスコード 200)、Shopify は応答に空の本文を期待します。

アプリがマーケティングアクティビティを非同期的に削除し始めた場合、Shopify はステータスコード 202 が受け入れられ、応答に空の本文があることを期待します。

動的スタンドアロンフィールド

先行入力フィールドなどの一部の UI フィールドでは、バックエンドから動的データを提供するために、アプリとのより包括的な統合が必要です。

この例では、アプリはマーチャントにいくつかの興味を部分的に入力させてから、利用可能な一致する興味のリストを提供したいと考えています。

このアプローチでは、アプリは、マーチャントが検証エラーを引き起こし得る入力をすることができるオープンテキストフィールドを使用する代わりに、マーチャントを有効な選択をするようにしむけます。

HTTP リクエスト

POST "#{base_endpoint}/load_field/#{field_name}"

予想される HTTP ステータス応答:

  • 200 - OK

JSON 入力

{
  "shopify_domain": "johns-apparel.myshopify.com",
  "shop_id": "gid://shopify/Shop/1111111",
  "user_id": 1,
  "locale": "en",
  "field_name": "interests",
  "value": "sports"
}
shopify_domain 関連するショップドメイン。
shop_id 関連ショップ GID。
user_id 認証されたユーザーの ID。
locale 現在のロケール(文字列)。
field_name フォームの作成時に指定されるフィールドの名前。
value 指定されたフィールドの現在の値。

JSON 出力

上記の他の例と同様に、アプリはフィールドプロパティをカスタマイズしますが、この場合、操作できるフィールドは 1 つだけです。

{
  "field_data": {
    "options": [
      { "label": "Sports", "value": "sports" },
      { "label": "Movies", "value": "movies" },
      { "label": "Music", "value": "music" }
    ]
  }
}

よくある質問

エンドポイントにフィールド名が含まれているのはなぜですか?エンドポイントが 1 つで、ペイロードでのみフィールド名を送信しないのはなぜですか?

フィールドごとに異なるエンドポイントを設定することで、必要なコードを小さなセクションに分割するのに役立ちます。

ペイロードと URI の両方にフィー ​​ ルド名があるのはなぜですか?

ペイロードにさらに多くのデータがあると、呼び出しごとに異なる HMAC を作成するのに役立ちます。これにより、HMAC に影響を与えるランダムデータが増えるため、通信のセキュリティが向上します。

アプリは、URI のフィールド名またはペイロードのいずれかを使用できます(どちらも同じ効果があります)。

エラーフィードバック

このエンドポイントは、前述のエンドポイントのいずれかの JSON 出力が期待される形式に準拠していない場合に、アプリに報告するために呼び出されます。たとえば、プリロードエンドポイントに対するアプリの応答に無効なデータ型、キーの欠落、または予期しない値が含まれている場合、エラーエンドポイントはそれをアプリに報告します。

プリロード時の無効な JSON 出力の例:

{
  "form_data": {
    "ad_title": {
      "random_prop": "random",
      "min_length": -3
    },
    "average_daily_budget": {
      "help_text": "Your shop will perform best with a $20 daily budget.",
      "min_amount": "13.00"
    }
  }
}

報告される対応するエラーメッセージ:

[
  {
    "ad_title": [
      { "#": "\"random_prop\" is not a permitted key." },
      { "#/min_length": "-3 must be greater than or equal to 0., -3 is not a null." }
    ],
    "average_daily_budget": [{ "#": "\"currency\" wasn't supplied." }]
  }
]

HTTP リクエスト

POST "#{base_endpoint}/errors"

予想される HTTP ステータス応答:

  • 200 - OK

JSON 入力

{
  "request_id": "example-request-id",
  "message": "[{\"ad_title\":[{\"#\\/min_length\":\"-3 must be greater than or equal to 0., -3 is not a null.\"}]}]"
}
request_id 応答によって検証が失敗したリクエストの ID。
message アプリの応答のエラーを説明する JSON シリアル化された文字列。

JSON 出力

応答に JSON 本文は必要ありません。

Status

マーケティングアクティビティステータスリファレンス

各マーケティングアクティビティにはステータスが付けられます。マーチャントは、Shopify admin のマーケティングセクションでMarketingアクティビティのステータスを表示できます。

Pending ステータス

マーチャントが Shopify のPublish activityボタンをクリックすると、PENDINGステータスが設定されます。マーケティングアクティビティが正常に作成されると、アプリはステータスをACTIVEに設定する必要があります。公開が失敗した場合、マーケティングアクティビティはFAILEDに設定する必要があります。

Failed ステータス

FAILEDステータスは、マーケティングアクティビティの公開に失敗した場合に設定されます。マーケティングアクティビティの作成に失敗した場合、アプリはマーケティングアクティビティのステータスをFAILEDに設定し、MarketingActivityUpdateの呼び出し時に正しいエラーメッセージを提供する必要があります。エラーメッセージ形式の例-

{
  "errors": {
    "base_error_severity": "warning",
    "base": ["Your account does not have any payment method set."],
    "quantity": ["is required"],
    "start_at": {
      "start_time": ["is required", "must be after January 1st, 2019"],
      "end_time": ["is required"]
    }
  }
}
  • キーは、フォームフィールドの入力名を表します。
  • 文字列の配列には、そのフィールドに関連付けられたエラーメッセージが含まれています。
  • エラーメッセージには、ルート相対 URL または HTTPSURL を使用するマークダウンリンクを含めることができます。例:
    Click [here](/admin/app) to set up your account
    またはRead more about [account setup](https://example.com)
  • base特定のフィールドに関連付けられていない一般的なエラーです。
  • base_error_severityはマーチャントに基本エラーの重大度レベルを示すために使用できます。利用可能なレベルはcriticalwarningおよびinfoです。デフォルトの重大度レベルはwarningです。
  • ネストされたコンポーネント(budget_settingsの例のように)は、内部フィールドをネストすることで、各フィールドの特定のエラーを読みやすく、見つけるのが簡単になります。

Active ステータス

ACTIVEステータスは、マーケティングアクティビティが開始され、現在アクティブに実行されているときに設定されます。アクティビティが終了すると、アプリがステータスをINACTIVEに設定することが予想されます。

Inactive ステータス

マーケティングアクティビティが終了すると、INACTIVEステータスが設定されます。これらのマーケティングアクティビティは引き続きマーチャントに表示されますが、編集できなくなります。

Scheduled ステータス

SCHEDULEDステータスは、アプリが将来のマーケティングアクティビティの作成を正常に認識した場合に設定されます。例えば、E メールマーケティングのアクティビティが将来的に送信されるように設定されている場合、アプリはそのアクティビティのステータスをSCHEDULEDと設定する必要があります。

Paused ステータス

PAUSEDステータスは、マーケティングアクティビティが現在一時停止状態であり、実行されていないことを意味します。(マーチャントがpause callで一時停止するのではなく)マーケティングアクティビティをアプリで一時停止する必要がある場合、アプリがMarketingActivityUpdateをコールする際に、マーケティングアクティビティを一時停止した理由を示すエラーメッセージを提供する必要があります。

Disconnected ステータス

Shopify 内での状態が Shopify 外での状態を正確に反映しなくなった場合、DISCONNECTEDステータスがマーケティングアクティビティに適用されます。アクティビティがこのステータスになる理由はいくつかあります。

マーチャントは、マーケティングアクティビティを作成したアプリをアンインストールします

マーチャントがマーケティングアクティビティの作成に使用したアプリをアンインストールすると、Shopify はそれらのマーケティングアクティビティへのアクセスを取り消します。 これらのアクティビティは、(アプリがすでにINACTIVEDELETEDDELETED_EXTERNALLYとマークしていない限り)DISCONNECTEDとマークされ、Shopify admin でDisconnectedと表示され、エラーメッセージとともに更新されます。アクティビティがDisconnectedとマークされると、マーチャントは Shopify admin で直接変更することができなくなります。

アプリに必要なアクション

この場合、マーチャントが Shopify admin でアプリを削除したときに自動的に行われるので、アプリはアクティビティをDISCONNECTEDとマークする必要はありません。

マーチャントがアプリを再インストールする場合、アプリは各マーケティングアクティビティのステータスを更新して、Shopify 以外の現在のステータスと一致させてから、関連するエラーメッセージをクリアする必要があります。これを行うには、アプリのインストール Webhook をサブスクライブしてから、MarketingActivityUpdateを呼び出してステータスを設定し、エラーメッセージを空としてマークします。

マーケティングプラットフォームのマーチャントのアカウントがアプリと同期しなくなりました

マーケティングプラットフォーム上のマーチャントのアカウントがアプリと同期しなくなったことをアプリが検出した場合、Shopify でのマーケティングアクティビティのステータスは、そのプラットフォームでの現在のステータスを反映していない可能性があります。たとえば、マーチャントがマーケティングアクティビティを作成した後、マーケティングプラットフォームでアカウントを非アクティブ化すると、そのアカウントは Shopify のアプリと同期しなくなります。

アプリに必要なアクション

この場合、アプリは次のことを行う必要があります。

  1. アプリは、マーケティングプラットフォーム上のマーチャントのアカウントと同期しなくなったことを検出すると、MarketingActivityUpdateを呼び出してマーケティングアクティビティのステータスをDISCONNECTEDに設定し、エラーメッセージを設定して、彼らのマーケティングアクティビティに関連付けられているアカウントを再接続するようにマーチャントに指示する必要があります。
  2. アプリがマーチャントのアカウントと再び同期していることを検出すると、マーケティングアクティビティのステータスをマーケティングプラットフォームの現在のステータスに更新してから、関連するエラーメッセージをクリアする必要があります。

Deleted ステータス

DELETEDステータスは、マーケティングアクティビティを削除するマーチャントのリクエストが成功したことを確認するためにアプリによって設定されます。削除済みとしてマークされたアクティビティは、Shopify admin のMarketingセクションのマーチャントには表示されなくなります。また、アプリが関連するすべてのプラットフォームからアクティビティを削除することも期待されています。

アプリに必要なアクション

アプリがDelete callを受信したら、MarketingActivityUpdateを呼び出してアクティビティをDELETEDとしてマークする前に、すべてのアクティビティが一時停止または停止されていることを確認する必要があります。

Deleted externally ステータス

DELETED_EXTERNALLYステータスは Shopify の外から削除されたマーケティングアクティビティに適用されます。

アクティビティがDELETED_EXTERNALLYとしてマークされた後も、Shopify admin のMarketingページに表示されます。これにより、Shopify の外部からアクティビティが削除されたことがマーチャントに通知されます。マーチャントが Shopify admin の詳細ページからアクティビティを削除すると、Marketingページからも削除されます。

ステータスごとに必要なアクティビティエンドポイント

この表は、ステータスごとに実装する必要のあるエンドポイントを示しています。

PENDING FAILED SCHEDULED ACTIVE PAUSED INACTIVE DELETED_EXTERNALLY
Publish
Republish x
Pause x x x
Resume x
Update x x x
Delete x x x x x x
Preview x x x x x x
Preload x x x x x x x

アクティビティステータスとフォーム

アクティビティは、ステータスがACTIVEFAILEDSCHEDULEDの場合に編集できます。

マーケティング活動の変更ログ

https://shopify.dev/apps/app-extensions/marketing-activities/changelog

1.8.3 (2020 年 2 月 4 日)

追加

1.8.2 (2020 年 1 月 27 日)

追加

1.8.1 (2020 年 1 月 16 日)

削除

  • サポートされていない range_startrange_endスケジュールコンポーネントから削除しました。

1.8.0 (2019 年 10 月 22 日)

追加

非推奨

  • 画像選択コンポーネントの値のプロパティから、 original_src を非推奨とします。2020 年 5 月 1 日以降、サポート対象外となります。

1.7.0 (2019 年 9 月 18 日)

追加

  • アプリが無効な JSON レスポンスを送信した場合に通知を受け取るための、新しいエラーズエンドポイントを追加しました。

1.6.0 (2019 年 9 月 13 日)

非推奨

  • 予算選択から use_total_budget プロパティを非推奨にしました。

予算選択の移行手順

  1. use_total_budget プロパティの名称を use_lifetime_budget に変更します。 use_total_budget は 2020 年 9 月 13 日にサポートされなくなります。

1.5.0 (2019 年 9 月 3 日)

追加

  • 新しいディバイダーコンポーネントを追加しました。ディバイダーは、関連するコンポーネントをセクションにまとめるために使用されます。ディバイダーは、Partner Dashboard でコンポーネントの間にカーソルを置き、セクションのタイトルを指定することで追加されます。長いフォームの場合は、コンポーネントをセクションにまとめるのがベストプラクティスです。

1.4.0 (2019 年 8 月 27 日)

追加

  • Product selection コンポーネントの value に新しい images プロパティを追加
  • フォームビルダーのオプトイン商品画像選択機能 商品選択

非推奨

  • Product selection コンポーネントの value から image_url プロパティを非推奨とします。

商品選択の移行手順

  1. プレビュー作成更新の各エンドポイントから受け取った image_url の代わりに images を使用する

  2. Product selection valueプリロードレスポンスで images を返す

  3. パートナーダッシュボードの「 Product selection コンポーネント」でマーチャントの商品画像選択を有効にする

  4. image_urlを持つレガシーレコードを軽減する 2 つの方法(image_urlは 2020 年 9 月 1 日にサポートされなくなります)

    a. image_urlを持つレコードを Product selection の value プロパティの images に移行する。

    b. ランタイムでは、 Product Selection の value プロパティのpreloadレスポンスに images が存在しない場合、image_urlimages に変換します。

1.3.0 (2019 年 8 月 20 日)

  • Image selection コンポーネントを更新し、ショップに画像をアップロードできるようにしました このコンポーネントの仕組みについては、「画像選択」を参照してください。

1.2.0 (2019 年 8 月 12 日)

追加

  • max_length が指定されている場合、 Single line of text コンポーネントに文字数カウンターを追加しました。

  • Multiple lines of text コンポーネントに文字カウンターを追加しました。

1.1.0 (2019 年 7 月 11 日)

追加

  • フォームビルダーに新しいカスタムプレビュータブを追加しました。プレビューエンドポイントは、フォームビルダーで定義されたものと一致するプレビュータイプを受け入れます。

1.0.0 (2019 年 6 月 7 日)

追加

  • 最初のパブリックリリース

1.0.0-ベータ.3 (2019 年 5 月 2 日)

非推奨

  • Budget コンポーネントの use_scheduling の非推奨化
  • Budget コンポーネントの use_endDate の非推奨化
  • Budget コンポーネントの start_time の非推奨化
  • Budget コンポーネントの end_time の非推奨化
  • Budget コンポーネントからの range_start の非推奨化
  • Budget コンポーネントの range_end の非推奨化

移行の提案

  • Schedule コンポーネントと Budget コンポーネントの併用

1.0.0-ベータ.2 (2019 年 4 月 12 日)

追加

  • 新しいコンポーネントプロパティ hidden

非推奨

  • visible コンポーネントプロパティを非推奨に

マイグレーションの提案

  • プリロードのレスポンスで、 visible ではなく hidden を返す

1.0.0-ベータ版(2018 年 10 月 6 日)

追加

  • 初期のベータリリース

Shopify アプリのご紹介

Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。

https://apps.shopify.com/shopify-application-314?locale=ja&from=daniel

Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。

https://apps.shopify.com/font-picker-1?locale=ja&from=daniel

Discussion

ログインするとコメントできます