【Shopify.dev和訳】Apps/Admin app extensions/MarketingActivities
この記事について
この記事は、Apps/Admin app extensions/Marketing activities/Overviewの記事を和訳したものです。
記事内で使用する画像は、公式ドキュメント内の画像を引用して使用させていただいております。
Shopify アプリのご紹介
Shopify アプリである、「商品ページ発売予告アプリ | リテリア Coming Soon」は、商品ページを買えない状態のまま、発売日時の予告をすることができるアプリです。Shopify で Coming Soon 機能を実現することができます。
Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。
マーケティング活動
マーケティングアクティビティエクステンションを使用すると、マーチャントはアプリを使って Shopify admin の Marketing ページからプロモーションキャンペーンやマーケティングオートメーションを管理できるようになります。
Shopify のマーケティングは、コンテンツマーケティング、SEO、ソーシャルメディアを含む様々な手段を使ってマーチャントが顧客を見つけ、販売するのを助けます。マーケティングアクティビティエクステンションをアプリに追加することで、Shopify admin の Marketing ページで直接アプリを表面化させることができます。
マーケティングアクティビティエクステンションを使用すると、以下のことができます。
- Shopify 管理画面でレンダリングされるマーケティング活動のフォームを設定する。
- マーチャントがプラットフォーム上でマーケティング活動をプレビューできるようにする。
- マーチャントのマーケティングオンボーディングの状態を管理する。
- マーチャントのマーケティング活動のライフサイクルを管理する。
- マーチャントのマーケティング活動のエンゲージメントを追跡する。
このセクションでは
- マーケティング活動の概要
- マーケティングアプリのオンボーディングフロー
- コンポーネントの参照
- マーケティング活動のステータスの参照
- マーケティング活動のエンドポイント
- マーケティングエクステンションの非表示
マーケティング活動のエンゲージメントのトラッキング
マーケティング活動のエンゲージメントは、潜在的な顧客がショップのウェブサイトに到達する前に、マーケティング活動と相互作用する方法を表します。エンゲージメントには、該当する場合、広告費に関する情報も含まれます。コメント、シェア、メール開封などは、すべてマーケティング活動のエンゲージメントの例です。
マーケティング活動を作成した後、その広告費やインタラクションを追跡するためにエンゲージメントを作成することができます。エンゲージメントの作成は、すべてのマーケティング活動に必要ですが、ほとんどの種類のマーケティング活動では、使用可能なエンゲージメントメトリクスのサブセットのみを使用します。
各マーケティング活動では、累積フィールドの値(True
または False
)は、すべてのエンゲージメントデータで同じ値を維持する必要があります。cumulative ブーリアンは、送信された各エンゲージメントが、すべてのメトリクスのライフタイムバリューなのか、その日のデイリーの合計値だけなのかを示します。累積ブーリアンは、送信された各エンゲージメントが、すべてのメトリクスのライフタイム値なのか、その日の合計値なのかを示します。True
の場合、各エンゲージメントは、その occured_on の日までのすべてのメトリクスのライフタイムバリューとなり、False
の場合、各エンゲージメントは、その occured_on の日のみのメトリクスの合計となります。
エンゲージメントで送信可能なメトリクスの全リストはこちらをご覧ください。
マーケティング活動を始める
このセクションでは、アプリにマーケティング活動拡張機能を追加するための要件と、アプリがアプリ拡張機能定義および Shopify と連携してマーケティング活動をサポートする方法について説明します。
開始方法
アプリにマーケティング活動の拡張機能を追加するには、開発ストアと拡張可能なアプリが必要です。マーケティング活動の拡張機能に取り組んでいる間、開発ストアをテスト用に使用することができます。
マーケティング活動拡張機能を使用するためのアプリの設定
- Partner Dashboard を使用して、マーケティング 活動拡張機能を追加します。
- 必要なendpointをアプリのドメインにホストします。Shopify は REST 呼び出しと構造化された JSON を使用して、お客様のアプリと通信します。必ずリクエストが Shopify から来たことを確認してください。
- マーケティング活動のためのプレビューを提供してください。プレビュー endpoint は、販売者が公開前にリアルタイムで変更を確認できるため、アプリを最高の状態で使用するために推奨されます。
- マーケティング活動にエンゲージメントを設定します。
- 拡張機能を提出して承認を得る。
アプリ拡張機能の構造
このセクションでは、アプリの endpoint が、アプリ拡張機能の定義や Shopify とどのように相互作用するかを説明します。
パートナーダッシュボードでアプリ拡張機能のフォームビルダーを使用して、マーケティング活動のフォームを定義します。各マーケティング活動拡張機能は、マーケティング活動フォームを開くために使用される UUID によって一意に識別されます。Shopify はあなたのアプリのpreload endpointを呼び出して、マーケティング活動フォームをレンダリングします。あなたのアプリは、販売者のマーケティング活動と販売者のショップデータの状態に基づいて、フォームデータで応答する責任があります。Shopify はまた、あなたのアプリのerror feedback endpointを呼び出して、マーケティング活動拡張機能に問題があったかどうかを報告します。
- 販売者は、アプリ拡張フォームを使用して、マーケティング活動を作成します。
- Shopify はあなたのアプリのプリロード endpoint を呼び出します。
- アプリはフォームデータで応答します。
- 作成フォームはプレビューでレンダリングされます。
- フォームのレンダリングにエラーがある場合は、Shopify はアプリのerror feedback endpointにこれを報告します。
販売者がマーケティング活動を公開した後、Shopify はマーケティング活動を作成するためにあなたのアプリのcreate endpointを呼び出します。あなたのアプリは、フォームデータを検証する責任があります。マーケティング活動が作成された後、あなたのアプリは Shopify を呼び出し、MarketingActivityUpdateを使ってマーケティング活動のステータスを更新します。
- 販売者は、マーケティング活動を公開するためにクリックします。
- Shopify はマーケティング活動を作成し、アプリの createendpoint にリクエストを送ります。
- アプリはフォームデータを検証し、マーケティング活動を非同期に公開し、MarketingActivityUpdateを使用してステータス情報を更新します。
- Shopify は、マーケティング活動のステータスを更新します。
- Shopify は、マーケティング活動をレンダリングします。
マーケティング活動アプリのエクステンションの管理
ここでは、Partner Dashboard からマーケティング・アクティビティ・エクステンションを作成および管理する方法について説明します。マーケティングエクステンションを作成する際には、エクステンションの情報を提供し、エクステンションのプレビューを設定し、設定フィールドを作成します。
マーケティング・アクティビティ・エクステンションの追加
- Partner Dashboard から Appsをクリックします。
- 変更したいアプリの名前をクリックします。
- Extensionsをクリックします。
- マーケティング活動のマーケティング活動の追加をクリックします。
- アクティビティのタイトルと説明を入力します。
- Base API path には、アプリのエンドポイントがホストされている URL を入力します。
- Marketing tacticを指定します。マーケティング戦術は、Marketing platformとAd formatの設定を決定します。また、マーケティング戦術の選択により、マーケティングアクティビティに含まれるデフォルトフィールドが決まります。
- アクティビティがオートメーションであるかどうかを指定します。自動化とは、イベントや顧客の行動によって引き起こされる継続的な活動のことです。自動化としてマークされているマーケティング活動は、Shopify 管理画面のマーケティングセクションの自動化ページの下に表示されます。それ以外のマーケティング活動は、「キャンペーン」ページに表示されます。詳細については、Understanding marketing activities and automationsをご覧ください。
- 設定フィールドを追加します。
エクステンションのプレビュー
アプリのプリロードエンドポイントを使用して、アプリのマーケティングエクステンションがデスクトップ、モバイル、または他のデバイスでどのように見えるかをレンダリングできます。
設定フィールド
設定フィールドは、Shopify 管理画面でマーチャントに表示されるマーケティング活動フォームを定義します。以下の手順で設定フィールドを作成することができます。
手順は以下の通りです。
- フィールドの作成をクリックします。
- コンポーネントの追加ダイアログで、フォームに追加したいコンポーネントを選択します。各コンポーネントには異なる要件があります。コンポーネントの設定方法の詳細については、Marketing activity components referenceを参照してください。
- 必要な情報を入力します。
区切り線の追加
区切り線を追加して、アプリの構成フィールドをセクションにまとめることができます。アプリのフォームが長い場合は、フィールドをセクションにまとめるのがベストです。
手順は以下のとおりです。
- 設定フィールドセクションで、設定フィールドカードの間の空欄にカーソルを合わせます。
- Add title for dividerをクリックします。
- セクションのタイトルを入力します。
- タイトルの外側をクリックすると、新しいセクションが保存されます。セクションが保存されると、セクションの周囲に青いボックスが表示され、どのフィールドがグループ化されているかを簡単に確認することができます。セクションのタイトルとグループ化されたフィールドがマーチャントに表示されます。
マーケティング活動エクステンションの更新
マーケティング活動エクステンションの更新は、Partner Dashboard から行うことができます。コンポーネントを追加、削除、設定、注文することで、アプリのエクステンションを変更することができます。マーケティング活動コンポーネントの詳細については、Marketing activity components reference を参照してください。
修正は、以下のような外観上の変更に限定することをお勧めします。
- エクステンションの説明の更新
- コンポーネントの順序の変更
- フィールドのラベルやプレースホルダーのテキストの更新
- 新しいタイトルと本文の表示テキストコンポーネントを追加する
手順は以下のとおりです。
- Partner Dashboard で、Appsをクリックします。
- 変更したいアプリの名前をクリックします。
- アプリのページで、Extensionsをクリックします。
- Marketing activitiesセクションで、更新したいマーケティング活動を選択します。
- Marketing actibityのページで、更新したいフィールドに新しい情報を入力します。
- 新しいタイトルおよび本文表示テキストコンポーネントをフォームに追加したい場合は、フィールドの作成をクリックしてコンポーネントを選択します。
- マーケティング活動フォームのフィールドの順番を変更したい場合は、フィールドをクリックして希望の場所にドラッグします。
- Saveをクリックします。
マーケティング活動エクステンションの非推奨化
アプリケーションでサポートされなくなったマーケティング活動拡張機能は、Partner Dashboard から非推奨にすることができます。以下のステップでは、推奨される段階的な廃止プロセスを説明します。
ステップ
- アプリのバナーでマーチャントに非推奨化のお知らせを開始する。
- 拡張機能を非表示にします。
- 今後 6 カ月間、活動をサポートします(推奨)。
- 6 カ月後、古いマーケティング活動の更新を開始し、
DISCONNECTED
のステータスとエラーメッセージを表示して、マーケティング活動がサポートされなくなったことをマーチャントに通知します。
マーチャントには、マーケティング活動のインデックスページにDISCONNECTED
ステータスとエラーメッセージが表示された古いマーケティング活動が表示されます。
マーケティング活動の拡張機能を隠す
アプリ用のマーケティング活動エクステンションを作成したが、マーチャントに使用させたくない場合は、パートナーダッシュボードからエクステンションを隠すことができます。エクステンションを非表示にする理由はいくつかあります。
- 拡張機能をサポートしているアプリが不安定で、マーチャントがマーケティング活動を作成するために拡張機能を使用するのを一時的に阻止したい。
- 拡張機能が廃止されるか、新しいバージョンに置き換えられる。
手順は以下の通りです。
- パートナーダッシュボードで、Appsをクリックし、拡張機能を隠したいアプリの名前をクリックします。
- Extensionsをクリックします。
- Marketing activitiesセクションで、非表示にしたいマーケティング活動の名前をクリックします。
- Change statusをクリックします。
- Change activity status ダイアログで Hide activity を選択します。
- Save をクリックします。
マーケティング活動エクステンションの無効化
拡張機能が廃止されたり、新しいバージョンに置き換えられたりする場合は、Partner Dashboard からその拡張機能を無効にすることができます。
手順は以下のとおりです。
- Partner Dashboard で、Apps をクリックします。
- 変更したいアプリの名前をクリックします。
- Extensionsをクリックします。
- Marketing activitiesセクションで、無効にするマーケティング活動を選択します。
- Change statusをクリックします。
- Change activity status modal で、Disable activity をクリックします。
- Saveをクリックします。
Reference
Overview
マーケティングアクティビティリファレンス
Component
マーケティングアクティビティコンポーネントリファレンス
マーケティングアクティビティアプリ拡張機能に関連付けられているフォームは、作成時に選択した一連のコンポーネントに基づいて生成されます。コンポーネントとは、アプリが必要とする特定の機能を構築するために使用できる、設定可能な UI の一部です。フォームは選択したコンポーネントに基づいて生成されますが、スタイル、レイアウト、またはワークフローを直接カスタマイズすることはできません。
アプリのフォームを作成する方法については、パートナーダッシュボードからフォームを作成するを参照してください。
概要
マーチャントがマーケティングアクティビティとやり取りすると、Shopify はマーケティングアクティビティのプリロードエンドポイントを呼び出して、アプリが提供するフィールド値をレンダリングします。これを行うために、Shopify は、このドキュメントで定義されているように、JSON 形式のコンポーネントを使用します。JSON 形式は、createやupdateなどのアプリの他のエンドポイントにも使用されます。
エンドポイント 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:/api/marketing_activities
URL には次のものが含まれます。
- HTTPS プロトコル(アプリには有効な SSL 証明書が必要です)
- ベースアプリケーションの URL
- 固定名前空間(アプリ拡張機能で設定される)
したがって、基本エンドポイントは次のとおりです。
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 ) |
バナーの種類。有効な値:default 、info 、warning 、critical
|
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 つだけ作成する必要があります。
マーケティングアクティビティを作成するためのワークフローには、次の手順が含まれます。
- マーチャントはマーケティングアクティビティフォームに記入し、Publishボタンをクリックします。
- Shopify は事前にマーケティングアクティビティを作成し、アプリのマーケティングアクティビティの作成 REST エンドポイントにアクセスします。
- アプリは次のことを行う必要があります。
- フォームを検証します。有効な場合は
200 OK
や空の JSON 応答で応答します。無効な場合は、プレビューのセクションで説明されているように、正しい HTTP エラーコードと JSON エラーハッシュで応答します。 - 非同期ジョブをスケジュールして、MarketingActivityUpdateを使用してマーケティングアクティビティの UTM パラメータと予算を設定します。
- 非同期ジョブをスケジュールして、マーケティングアクティビティをプラットフォーム(Facebook など)に公開してから、MarketingActivityUpdateを呼び出してステータスを更新します。
- フォームを検証します。有効な場合は
- アプリが
200 OK
で応答した場合、Shopify は作成されたマーケティングアクティビティをPending状態にしてアプリに応答します。 - アプリが 400 代または 500 代の HTTP エラーコードで応答した場合、Shopify は事前に作成したマーケティングアクティビティをクリーンアップします。
- アプリがマーケティングアクティビティをプラットフォームに公開した後、次のことを行う必要があります。
- 成功した場合は、MarketingActivityUpdateを呼び出して、アクティビティが進行中の場合は
ACTIVE
、完了した場合はINACTIVE
としてマークします。 - 失敗した場合は、MarketingActivityUpdateを呼び出してアクティビティを
FAILED
としてマークし、エラーの原因を渡して、Shopify admin のMarketingページに表示できるようにします。
- 成功した場合は、MarketingActivityUpdateを呼び出して、アクティビティが進行中の場合は
マーケティングアクティビティ作成フローのシーケンス図
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
です。マーケティングアクティビティオブジェクトを更新するアプリの非同期ジョブでは、ACTIVE
やFAILED
などの他のステータスに自由に更新するか、ステータスを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
はマーチャントに基本エラーの重大度レベルを示すために使用できます。利用可能なレベルはcritical
、warning
およびinfo
です。デフォルトの重大度レベルはwarning
です。 - ネストされたコンポーネント(
budget_settings
の例のように)は、内部フィールドをネストすることで、各フィールドの特定のエラーを読みやすく、見つけるのが簡単になります。
Active
ステータス
ACTIVE
ステータスは、マーケティングアクティビティが開始され、現在アクティブに実行されているときに設定されます。アクティビティが終了すると、アプリがステータスをINACTIVE
に設定することが予想されます。
Inactive
ステータス
マーケティングアクティビティが終了すると、INACTIVE
ステータスが設定されます。これらのマーケティングアクティビティは引き続きマーチャントに表示されますが、編集できなくなります。
Scheduled
ステータス
SCHEDULED
ステータスは、アプリが将来のマーケティングアクティビティの作成を正常に認識した場合に設定されます。例えば、E メールマーケティングのアクティビティが将来的に送信されるように設定されている場合、アプリはそのアクティビティのステータスをSCHEDULED
と設定する必要があります。
Paused
ステータス
PAUSED
ステータスは、マーケティングアクティビティが現在一時停止状態であり、実行されていないことを意味します。(マーチャントがpause callで一時停止するのではなく)マーケティングアクティビティをアプリで一時停止する必要がある場合、アプリがMarketingActivityUpdateをコールする際に、マーケティングアクティビティを一時停止した理由を示すエラーメッセージを提供する必要があります。
Disconnected
ステータス
Shopify 内での状態が Shopify 外での状態を正確に反映しなくなった場合、DISCONNECTED
ステータスがマーケティングアクティビティに適用されます。アクティビティがこのステータスになる理由はいくつかあります。
マーチャントは、マーケティングアクティビティを作成したアプリをアンインストールします
マーチャントがマーケティングアクティビティの作成に使用したアプリをアンインストールすると、Shopify はそれらのマーケティングアクティビティへのアクセスを取り消します。 これらのアクティビティは、(アプリがすでにINACTIVE
、DELETED
、DELETED_EXTERNALLY
とマークしていない限り)DISCONNECTED
とマークされ、Shopify admin でDisconnectedと表示され、エラーメッセージとともに更新されます。アクティビティがDisconnectedとマークされると、マーチャントは Shopify admin で直接変更することができなくなります。
アプリに必要なアクション
この場合、マーチャントが Shopify admin でアプリを削除したときに自動的に行われるので、アプリはアクティビティをDISCONNECTED
とマークする必要はありません。
マーチャントがアプリを再インストールする場合、アプリは各マーケティングアクティビティのステータスを更新して、Shopify 以外の現在のステータスと一致させてから、関連するエラーメッセージをクリアする必要があります。これを行うには、アプリのインストール Webhook をサブスクライブしてから、MarketingActivityUpdateを呼び出してステータスを設定し、エラーメッセージを空としてマークします。
マーケティングプラットフォームのマーチャントのアカウントがアプリと同期しなくなりました
マーケティングプラットフォーム上のマーチャントのアカウントがアプリと同期しなくなったことをアプリが検出した場合、Shopify でのマーケティングアクティビティのステータスは、そのプラットフォームでの現在のステータスを反映していない可能性があります。たとえば、マーチャントがマーケティングアクティビティを作成した後、マーケティングプラットフォームでアカウントを非アクティブ化すると、そのアカウントは Shopify のアプリと同期しなくなります。
アプリに必要なアクション
この場合、アプリは次のことを行う必要があります。
- アプリは、マーケティングプラットフォーム上のマーチャントのアカウントと同期しなくなったことを検出すると、MarketingActivityUpdateを呼び出してマーケティングアクティビティのステータスを
DISCONNECTED
に設定し、エラーメッセージを設定して、彼らのマーケティングアクティビティに関連付けられているアカウントを再接続するようにマーチャントに指示する必要があります。 - アプリがマーチャントのアカウントと再び同期していることを検出すると、マーケティングアクティビティのステータスをマーケティングプラットフォームの現在のステータスに更新してから、関連するエラーメッセージをクリアする必要があります。
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 |
アクティビティステータスとフォーム
アクティビティは、ステータスがACTIVE
、FAILED
、SCHEDULED
の場合に編集できます。
マーケティング活動の変更ログ
1.8.3 (2020 年 2 月 4 日)
追加
-
マーケティング・アクティビティのエラー更新時に
base_error_severity
のサポートを追加しました。これはマーチャントにエラーの重大度を示すために使用できます。
1.8.2 (2020 年 1 月 27 日)
追加
1.8.1 (2020 年 1 月 16 日)
削除
- サポートされていない
range_start
とrange_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
プロパティを非推奨にしました。
予算選択の移行手順
-
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
プロパティを非推奨とします。
商品選択の移行手順
-
Product selection value
のプリロードレスポンスでimages
を返す -
パートナーダッシュボードの「
Product selection
コンポーネント」でマーチャントの商品画像選択を有効にする -
image_url
を持つレガシーレコードを軽減する 2 つの方法(image_url
は 2020 年 9 月 1 日にサポートされなくなります)a.
image_url
を持つレコードをProduct selection
の value プロパティのimages
に移行する。b. ランタイムでは、
Product Selection
の value プロパティのpreloadレスポンスにimages
が存在しない場合、image_url
をimages
に変換します。
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 機能を実現することができます。
Shopify アプリである、「らくらく日本語フォント設定|リテリア Font Picker」は、ノーコードで日本語フォントを使用できるアプリです。日本語フォントを導入することでブランドを演出することができます。
Discussion