コンテンツにスキップ

検索はプロダクションビルドでのみ利用可能です。 ローカルでテストするには、サイトをビルドしてプレビューしてください。

グループとラベル

連絡先のグループ管理は2つの仕組みで構成されます: 手動グループ(KV Storage)と スマートラベル(Cellar DB)。


グループ定義は Cloudflare KV (CONTACT_GROUPS) に店舗ごとに保存されます。連絡先のグループ所属は、連絡先レコードの groupIds 配列で管理されます。

フィールド説明
idstringグループ ID
namestringグループ名
iconstringアイコン識別子
colorstringバッジ背景色
textColorstringバッジ文字色
criteriaobjectスマートグループ条件(任意)
ordernumber表示順序
groups:{shopId}

値は Group[] の JSON 配列です。

Vintage RPC: listGroups({ shopId })
Vintage RPC: getGroup({ id, shopId })
Vintage RPC: createGroup({ shopId, name, icon, color, textColor?, criteria?, order })
Vintage RPC: updateGroup({ id, shopId, name?, icon?, color?, textColor?, criteria?, order? })
Vintage RPC: deleteGroup({ id, shopId })
Vintage RPC: reorderGroups({ shopId, groupIds })
Vintage RPC: addContactToGroup({ id, groupId, shopId })
Vintage RPC: removeContactFromGroup({ id, groupId, shopId })

連絡先の groupIds 配列に追加/削除します。

criteria フィールドが設定されたグループは「スマートグループ」として動作します。一括配信のターゲティング時に、criteria の条件を動的に評価して対象を決定します。

// スマートグループの criteria 例
{
tags: ['VIP', '常連'],
userType: ['customer']
}

ラベルはタグの組み合わせ条件を定義する仕組みで、Cellar DB の label テーブルに保存されます。ラベル同士をネストすることで、最大3階層の条件定義が可能です。

フィールド説明
idUUIDラベル ID
shopIdUUID店舗 ID
nametextラベル名
colortextバッジカラー
descriptiontext説明
logictextAND, OR, NOR, NAND
tagstext[]タグ条件配列
labelstext[]子ラベル ID 配列
演算子意味
AND全てのタグを持つVIP かつ 常連
ORいずれかのタグを持つVIP または 常連
NORいずれのタグも持たないVIP でも 常連 でもない
NAND全てのタグは持たないVIP と 常連 の両方は持たない
Lv1: タグのみを参照するラベル
Lv2: Lv1 ラベルを参照するラベル
Lv3: Lv1/Lv2 ラベルを参照するラベル(最大深度)

循環参照の検出とLv3を超える深度の防止がUI側で実装されています。

Vintage RPC: listLabels({ shopId })
Vintage RPC: createLabel({ id, shopId, name, color?, description?, logic?, tags?, labels? })
Vintage RPC: deleteLabel({ id, shopId })

createLabel は Upsert(UPSERT)で動作するため、更新にも使用します。


┌──────────────────────────────────┐
│ タグ・ラベル管理 │
├──────────────────────────────────┤
│ ■ ラベル │
│ ┌────────────────────────┐ │
│ │ VIP会員 Lv1 [編集]│ │
│ │ AND: VIP, 来店5回以上 │ │
│ └────────────────────────┘ │
│ ┌────────────────────────┐ │
│ │ 優良顧客 Lv2 [編集]│ │
│ │ OR: VIP会員, 高額購入者 │ │
│ └────────────────────────┘ │
│ │
│ [+ 新規ラベル作成] │
│ │
│ ■ タグ(読み取り専用) │
│ VIP (12) | 常連 (8) | 新規 (25) │
└──────────────────────────────────┘
  • ラベル名(必須)
  • 説明(任意)
  • 論理演算子(AND / OR / NOR / NAND)
  • タグ選択(マルチセレクト)
  • 子ラベル選択(Lv3 以下のみ)
  • カラーピッカー(12色パレット)
レベルボーダースタイル
Lv1静的な青ボーダー
Lv2回転する青→紫グラデーション(8秒)
Lv3回転する赤→紫グラデーション(8秒)

タグは連絡先に直接付与される文字列ラベルです。

  • 自由入力: 事前定義不要。連絡先編集時に任意のタグを追加
  • 店舗スコープ: タグは店舗内で共有
  • 一覧取得: 店舗内の全連絡先で使用されているユニークタグを取得
Vintage RPC: getContactTags({ shopId })
→ { tags: string[] }
用途説明
連絡先フィルタリング連絡先一覧のタグフィルタ
ラベル条件スマートラベルの条件要素
グループ条件スマートグループの条件要素
配信ターゲティング一括配信の対象者絞り込み