sms-marketing について
sms-marketing は、同意取得とコンプライアンスに配慮した SMS キャンペーンを実施する EC チーム向けのスキルです。プラットフォーム選定、登録フロー、顧客セグメント、効果測定を扱い、ヘッドレスストア向けに Twilio も紹介します。
主な機能
- 01SMS プラットフォームと用途の比較
- 02登録フォームと同意フローの設定
- 03購入履歴や顧客段階による分類
- 04販促と取引通知の同意を分離
- 05クリック、配信停止、売上の測定
活用シーン
- 01EC のマーケティングチャネルに SMS を導入
- 02SMS 登録フローのコンプライアンス監査
- 03カゴ落ち客や休眠顧客への配信
- 04既存のメール施策に SMS を追加
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill sms-marketingインストール後、Claude Code で/sms-marketingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
tile.jsonevals/compliant-opt-in-and-consent-storage/criteria.jsontask.mdevals/inbound-sms-keyword-webhook-handling/criteria.jsontask.mdevals/marketing-sms-send-with-compliance-check/criteria.jsontask.md詳細
SMSマーケティング
概要
SMSマーケティングは、メールよりも開封率が98%高く、クリック率も5~10倍高いため、eコマースで最も成果の高いダイレクトチャネルの1つです。ただし、SMSは厳しく規制されています。米国のTCPAでは明示的な書面による同意が求められ、違反した場合、メッセージ1通につき最大1,500ドルの罰金が科されます。専用のSMSアプリ(Postscript、Attentive、Klaviyo SMS)を使えば、コンプライアンス、オプトインフロー、10DLC登録を自動で処理できます。カスタムのTwilio実装が必要なのは、ヘッドレスストアの場合に限られます。
このスキルを使う場面
- 既存のメール自動化と並行してSMSマーケティングチャネルを開始する場合
- チェックアウト時やポップアップ経由で、TCPAに準拠したオプトインフローが必要な場合
- 購入履歴、ライフサイクルの段階、所在地に基づいてSMSキャンペーンをセグメント化したい場合
- 取引関連のSMS(配送状況の更新)とマーケティングSMSを、異なるオプトインリストに送信する場合
- 既存のSMSプログラムを監査し、コンプライアンス上の問題がないか確認する場合
基本手順
ステップ1:適切なSMSプラットフォームを選ぶ
| プラットフォーム | 最適な用途 | Shopify | WooCommerce | BigCommerce | 価格 |
|---|---|---|---|---|---|
| Postscript | Shopifyネイティブ、セグメンテーション+フロー | App Store | — | — | 無料プラン、有料プランは月額100ドルから |
| Attentive | 中堅市場、高度なA/Bテスト | App Store | インテグレーション経由 | インテグレーション経由 | 月額400ドルから |
| Klaviyo SMS | すでにメールにKlaviyoを使用している場合 | App Store | プラグイン | App Marketplace | Klaviyoのプランに追加 |
| SMSBump (Yotpo SMS) | WooCommerce+Shopify | App Store | プラグイン | — | 無料プラン、有料プランは月額19ドルから |
| Twilio | カスタム/ヘッドレス、開発者による制御 | API経由 | API経由 | API経由 | メッセージごとの従量課金 |
推奨: ShopifyにはPostscript、WooCommerceにはSMSBumpを使用してください。すでにKlaviyoを使用している場合は、キャンペーンとフローを1つのプラットフォームにまとめるため、Klaviyo SMSを追加してください。Twilioは、プログラムから完全に制御する必要があるヘッドレスストアの場合に限って使用してください。
ステップ2:SMSのオプトインを設定する
Postscriptを使ったShopifyの設定
- Shopify App StoreからPostscriptをインストールします
- Postscript → Keywordsに移動し、オプトイン用キーワード(例:「JOIN」)を設定します。顧客はこのキーワードをPostscriptの番号にテキスト送信して登録します
- Postscript → Sign-up Unitsに移動し、オプトインフォームを追加します:
- チェックアウト時のオプトイン:Postscriptはチェックアウト時にチェックボックスを自動で追加します。同意文はSettings → Checkoutで設定します
- ポップアップ:割引を提示する時間指定のポップアップを作成します(例:「10%割引をゲット — [番号]にJOINとテキスト送信」)
- Postscript → Settings → Complianceで重要なコンプライアンス設定を行います:
- 同意文が表示されていることを確認します:「登録すると、マーケティング用のテキストメッセージを受信することに同意したものとみなされます。配信停止するにはSTOPと返信してください。」
- チェックアウト時にSMSのオプトイン欄をあらかじめチェック済みにしないでください。TCPAではデフォルトで未チェックにすることが求められます
- Postscript → Flowsに移動し、自動シーケンスを作成します:
- ウェルカムシリーズ:オプトイン時に開始 — すぐにウェルカムメッセージと割引コードを送信します
- カート放棄:Shopifyがチェックアウト放棄を検知したときに開始します(メールとは異なり、メールアドレスがなくても送信できます)
- 閲覧放棄:購入意欲の高い閲覧があり、4時間以内に購入がなかった場合に開始します
SMSBumpを使ったWooCommerceの設定
- WordPressプラグインディレクトリからSMSBump(現在のYotpo SMS)をインストールします
- SMSBump → Settings → Complianceに移動し、チェックアウトのオプトイン欄を設定します
- SMSBump → Automationsに移動し、次の機能を有効にします:
- カート放棄時のSMS
- 注文確認と配送状況の更新SMS(取引関連)
- 顧客の呼び戻しSMS(60日以上購入していない顧客)
- GDPRに準拠するには、SMSBumpにEUの登録者向けのダブルオプトインフローが含まれています。Settings → Compliance → Double Opt-inで有効にします
BigCommerce と Klaviyo SMS
- BigCommerce App Marketplace から Klaviyo をインストールします
- Klaviyo → SMS → Getting Started に移動し、10DLC の登録を完了します(Klaviyo の案内に従って進めます)
- BigCommerce Admin → Store Setup → Checkout から、チェックアウトに SMS のオプトイン欄を追加します
- Klaviyo → Flows で SMS フローを作成します。既存のメールフローには、追加チャネルとして SMS を追加できます
カスタム/ヘッドレス
ヘッドレスストアでは、Twilio を使用します。コンプライアンス要件は、アプリケーションのロジックに組み込む必要があります。
import twilio from 'twilio';
const client = twilio(process.env.TWILIO_ACCOUNT_SID, process.env.TWILIO_AUTH_TOKEN);
async function sendMarketingSMS(phone: string, body: string, customerId: string): Promise<boolean> {
// ALWAYS check consent before sending — never skip this check
const consent = await db.smsConsent.findActive(phone, 'marketing');
if (!consent) {
console.warn(`SMS suppressed for ${phone} — no active marketing consent`);
return false;
}
// TCPA: no marketing SMS before 8am or after 9pm in recipient's local time
if (isQuietHours(phone, consent.zipCode)) {
await smsQueue.add('send', { phone, body, customerId }, { delay: msUntilMorning(phone, consent.zipCode) });
return false;
}
await client.messages.create({
from: process.env.TWILIO_PHONE_NUMBER,
to: phone,
body: `${body}\n\nReply STOP to unsubscribe`,
});
return true;
}
// Handle STOP/HELP/UNSTOP via Twilio webhook — required by carriers
export async function handleInboundSMS(req: Request, res: Response) {
const { From: from, Body: body } = req.body;
const keyword = body.trim().toUpperCase();
if (['STOP', 'STOPALL', 'UNSUBSCRIBE', 'CANCEL', 'END', 'QUIT'].includes(keyword)) {
await db.smsConsent.deactivateAll(from);
// Twilio also auto-handles STOP at the carrier level for registered numbers
} else if (keyword === 'HELP') {
// Required: explain how to opt out
await client.messages.create({
from: process.env.TWILIO_PHONE_NUMBER,
to: from,
body: `${process.env.STORE_NAME} alerts. Msg&Data rates apply. Reply STOP to unsubscribe.`,
});
} else if (['START', 'UNSTOP', 'YES'].includes(keyword)) {
await db.smsConsent.reactivate(from, 'marketing');
}
res.sendStatus(200);
}
カスタムの Twilio 実装で重要なこと: メッセージを送信する前に、Campaign Registry (TCR) を通じてブランドとキャンペーンを登録してください。米国の通信事業者は、未登録の 10DLC トラフィックをブロックします。Twilio のコンソールで Messaging → Regulatory Compliance → 10DLC に移動すると、登録手順を確認できます。
ステップ 3:同意に関するコンプライアンス要件
TCPA(米国)の要件 — 必須事項:
- チェックアウト時のオプトインチェックボックスは、デフォルトでオフにする必要があります
- 同意文言はチェックボックスの隣に表示する必要があります(細字の注記に記載してはいけません)
- 必須の同意文言:「このボックスにチェックを入れることで、入力した電話番号宛てに [Store Name] からマーケティングテキストメッセージを受信することに同意したものとみなされます。メッセージの頻度は異なります。メッセージおよびデータの通信料がかかる場合があります。配信停止するには STOP と返信してください。」
- STOP の要求には、10 営業日以内に対応する必要があります(専用の SMS アプリでは自動的に対応します)
- 受信者の現地時間で午前 8 時より前、または午後 9 時以降にマーケティング SMS を送信してはいけません
GDPR(EU)の要件:
- TCPA と同じオプトイン基準に加え、明示的な同意記録が必要です
- データのエクスポート手段を提供します(タイムスタンプ、IP アドレス、正確な同意文言を含む同意記録)
- 多くの国では、EU の登録者にダブルオプトインが必要です
主要な SMS アプリ(Postscript、SMSBump、Klaviyo SMS)は、これらのコンプライアンス要件に自動的に対応します。Twilio を直接使用する場合は、これらを自分で実装する必要があります。
ステップ 4:キャンペーンのセグメント化
最も ROI の高い SMS セグメント:
| セグメント | メッセージ | 予想 CTR |
|---|---|---|
| カート放棄者(1~4 時間後) | 「カートに商品が残っています:[cart link]」 | 15~25% |
| VIP 顧客(LTV 上位 20%) | セールや新商品の先行アクセス | 20~30% |
| 離反顧客(60~90 日) | 割引付きの再購入促進オファー | 8~15% |
| 購入後のクロスセル(配達の 7 日後) | 「X を購入した他のお客様は、Y も気に入っています」 | 10~20% |
Postscript では、Postscript → Segments で注文履歴、購入頻度、LTV のフィルターを使ってセグメントを作成します。 Klaviyo SMS では、既存のメールセグメントに SMS のステップを追加します。オーディエンスのターゲティング方法は同じです。
ステップ 5:SMS のパフォーマンスを測定する
| 指標 | 健全な目標値 | 確認場所 |
|---|---|---|
| チェックアウト時のオプトイン率 | 顧客の 5~15% | アプリの分析機能 |
| クリック率(キャンペーン) | 8~20% | アプリの分析機能 |
| キャンペーンごとのオプトアウト率 | < 2% | アプリの分析機能 — 3% を超えたら一時停止 |
| 登録者 1 人あたりの月間売上 | $3~$10 | 次の式で計算:SMS に起因する売上 ÷ 登録者数 |
| 配信停止率(合計) | 月間 < 5% | アプリの分析機能 |
ベストプラクティス
- マーケティングと取引上の同意を分ける — マーケティング SMS をオプトアウトした顧客にも、注文確認や発送通知のテキストメッセージは送信する必要があります。これらは別種の同意です
- マーケティング SMS は週に 2~3 件を超えて送信しない — SMS は最も煩わしいチャネルです。送信頻度が高いと、他のどのチャネルよりも早く配信停止につながります
- メッセージは 160 文字以内にすることで、複数パートのメッセージになるのを防ぎます — 絵文字は 2 文字として数えられ、UCS-2 エンコーディングが適用されるため、160 文字の上限が半分になります
- すべてのマーケティングメッセージに STOP の案内を必ず含める — ほとんどのアプリでは自動的に追加されますが、含まれていることを確認してください
- 配信開始前に 10DLC を登録する — 米国の通信事業者は未登録のトラフィックをブロックします。SMS プラットフォームでの登録には 1~2 週間かかります
よくある問題
| 問題 | 解決策 |
|---|---|
| キャリアによってメッセージがブロックされる | 送信前に、SMS プラットフォームで 10DLC のブランド登録とキャンペーン登録を完了します |
| STOP が適用されない | 専用の SMS アプリでは自動的に処理されます。カスタムの Twilio を使用する場合は、受信 Webhook を設定します |
| 静穏時間の違反 | SMS プラットフォームに組み込まれている静穏時間の設定を使用します。Twilio の場合は、タイムゾーンに基づくスケジュールを実装します |
| チェックアウト時にチェックボックスが事前に選択されている | これは TCPA に違反します。直ちに初期状態を未選択に変更してください。これは好みの問題ではなく、法的要件です |
| 161 文字のメッセージが複数パートの SMS になる | 送信前にサーバー側で文字数を数えます。カートのリンクには URL 短縮サービスを使用します |
関連スキル
- @email-marketing-automation
- @cart-abandonment-recovery
- @cart-recovery-sms
- @push-notifications
- @customer-segmentation