customerio-primary-workflow
Customer.ioのプライマリメッセージングワークフローを実行します。メールキャンペーン、プッシュ通知、SMSメッセージング、またはアプリ内メッセージワークフローのセットアップに使用できます。「customer.ioキャンペーン」「customer.ioワークフロー」「customer.ioメール自動化」「customer.ioメッセージング」といったフレーズでトリガーできます。
description の原文を見る
Execute Customer.io primary messaging workflow. Use when setting up email campaigns, push notifications, SMS messaging, or in-app message workflows. Trigger with phrases like "customer.io campaign", "customer.io workflow", "customer.io email automation", "customer.io messaging".
SKILL.md 本文
Customer.io プライマリワークフロー
概要
Customer.io のプライマリメッセージングワークフローを実装します。ユーザーを特定し、イベントを追跡し、自動化されたキャンペーンをトリガーします。
前提条件
- Customer.io SDK が設定済みであること
- Customer.io ダッシュボードでキャンペーン/ワークフローが作成されていること
- ユーザーライフサイクルイベントについての理解
手順
ステップ 1: ユーザーライフサイクルイベントを定義する
// events/user-events.ts
export const USER_EVENTS = {
// Onboarding
SIGNED_UP: 'signed_up',
EMAIL_VERIFIED: 'email_verified',
PROFILE_COMPLETED: 'profile_completed',
FIRST_LOGIN: 'first_login',
// Engagement
FEATURE_USED: 'feature_used',
CONTENT_VIEWED: 'content_viewed',
SEARCH_PERFORMED: 'search_performed',
// Conversion
TRIAL_STARTED: 'trial_started',
SUBSCRIPTION_STARTED: 'subscription_started',
UPGRADE_COMPLETED: 'upgrade_completed',
PURCHASE_COMPLETED: 'purchase_completed',
// Churn Risk
INACTIVE_WARNING: 'inactive_warning',
SUBSCRIPTION_CANCELLED: 'subscription_cancelled',
ACCOUNT_DELETED: 'account_deleted',
} as const;
export type UserEvent = typeof USER_EVENTS[keyof typeof USER_EVENTS];
ステップ 2: イベント追跡サービスを実装する
// services/customerio-service.ts
import { TrackClient, RegionUS } from '@customerio/track';
import { USER_EVENTS, UserEvent } from '../events/user-events';
interface User {
id: string;
email: string;
firstName?: string;
lastName?: string;
plan?: string;
}
export class CustomerIOService {
private client: TrackClient;
constructor() {
this.client = new TrackClient(
process.env.CUSTOMERIO_SITE_ID!,
process.env.CUSTOMERIO_API_KEY!,
{ region: RegionUS }
);
}
// ユーザーサインアップ時に呼び出される
async onSignup(user: User): Promise<void> {
await this.client.identify(user.id, {
email: user.email,
first_name: user.firstName,
last_name: user.lastName,
created_at: Math.floor(Date.now() / 1000),
plan: 'free',
onboarding_status: 'started'
});
await this.track(user.id, USER_EVENTS.SIGNED_UP, {
signup_source: 'web',
signup_date: new Date().toISOString()
});
}
// メール認証時に呼び出される
async onEmailVerified(userId: string): Promise<void> {
await this.updateUser(userId, {
email_verified: true,
email_verified_at: Math.floor(Date.now() / 1000)
});
await this.track(userId, USER_EVENTS.EMAIL_VERIFIED);
}
// サブスクリプション変更時に呼び出される
async onSubscriptionStarted(userId: string, plan: string): Promise<void> {
await this.updateUser(userId, {
plan,
subscription_started_at: Math.floor(Date.now() / 1000)
});
await this.track(userId, USER_EVENTS.SUBSCRIPTION_STARTED, { plan });
}
// 汎用の追跡メソッド
async track(userId: string, event: UserEvent, data?: Record<string, any>): Promise<void> {
await this.client.track(userId, {
name: event,
data: {
...data,
timestamp: new Date().toISOString()
}
});
}
// ユーザー属性を更新する
async updateUser(userId: string, attributes: Record<string, any>): Promise<void> {
await this.client.identify(userId, attributes);
}
}
export const cioService = new CustomerIOService();
ステップ 3: アプリケーションと統合する
// routes/auth.ts
import { cioService } from '../services/customerio-service';
app.post('/signup', async (req, res) => {
const user = await createUser(req.body);
// Fire and forget - サインアップをアナリティクスでブロックしない
cioService.onSignup({
id: user.id,
email: user.email,
firstName: user.firstName,
lastName: user.lastName
}).catch(err => console.error('Customer.io error:', err));
res.json({ user });
});
app.post('/verify-email', async (req, res) => {
const userId = await verifyEmailToken(req.body.token);
cioService.onEmailVerified(userId)
.catch(err => console.error('Customer.io error:', err));
res.json({ success: true });
});
ステップ 4: ダッシュボードキャンペーンを作成する
Customer.io ダッシュボードで:
- キャンペーン > キャンペーン作成に移動
- トリガーを選択: イベント「signed_up」
- ワークフローステップを追加:
- 1 日待機
- ウェルカムメールを送信
- 3 日待機
- 分岐: email_verified = false の場合、リマインダーを送信
- ナーチャーシーケンスを続行
出力
- ユーザーライフサイクルイベント定義
- Customer.io サービス統合
- アプリケーションルート統合
- キャンペーンワークフロートリガー
エラーハンドリング
| エラー | 原因 | 解決策 |
|---|---|---|
| イベントがトリガーされない | イベント名が違う | ダッシュボードで正確なイベント名と一致させる |
| ユーザーが受け取らない | メール属性が欠落している | identify でメールが設定されていることを確認 |
| 重複送信 | 複数回イベントが発火 | 重複排除またはべき等性を使用 |
リソース
次のステップ
プライマリワークフローの実装後、高度な機能については customerio-core-feature に進んでください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- Brmbobo
- リポジトリ
- Brmbobo/Web2podcast
- ライセンス
- MIT
- 最終更新
- 2026/1/26
Source: https://github.com/Brmbobo/Web2podcast / ライセンス: MIT
関連スキル
seo-maps
ローカルSEO向けのマップインテリジェンス機能です。ジオグリッドのランク追跡、APIを通じたGBPプロフィール監査、Google・Tripadvisor・Trustpilotなど複数プラットフォームのレビュー分析、Google・Bing・Apple・OSM間のNAP(名前・住所・電話番号)検証、競合他社の半径マッピング、APIデータからのLocalBusinessスキーマ生成が可能です。3段階の機能レベルで対応でき、無料版(Overpass + Geoapify)、DataForSEO(フル機能)、DataForSEO + Google(最大カバレッジ)から選択できます。「maps」「geo-grid」「rank tracking」「GBP audit」「review velocity」「competitor radius」「maps analysis」「local rank tracking」「Share of Local Voice」「SoLV」などのキーワードで利用できます。
seo-content-brief
セクションごとの文字数、競合スコアリング、キーワード密度ガイダンス、ページタイプテンプレートを含む競争力のあるSEOコンテンツブリーフを生成します。新規ページのブリーフと既存ページの改善ブリーフの両方に対応しています。ユーザーが「コンテンツブリーフ」「ブリーフを作成」「コンテンツアウトライン」「ブログブリーフ」「サービスページブリーフ」「ブリーフ〜」「ライティングブリーフ」「コンテンツプラン」「アウトライン〜」などと言った場合に使用します。
rakuten-seo
楽天市場の商品名・キャッチコピーをSEO最適化するスキル。「楽天SEO」「商品名最適化」「楽天の商品名」「キャッチコピー」「楽天のタイトル」「商品名を直して」「楽天検索対策」など、楽天市場の商品名やキャッチコピーの作成・改善・チェックに関するリクエストで必ずこのスキルを使う。既存の商品名の改善も、ゼロからの作成も対応。あらゆるジャンル(食品・ファッション・化粧品・家電・サプリ・インテリア・ベビー・ペット・業務用など)に対応。 【ALSEL独自スキル】株式会社ALSEL が、19年・5,000社超の EC 支援で得たノウハウをもとに開発したオリジナルスキルです。
amazon-seo-jp
Amazon.co.jp商品ページのSEO分析・最適化・自動採点スキル v2.0。 COSMO/Rufus/A10アルゴリズムに基づく採点。セラーセントラル出品レポート(.xlsm)を入力すると、 商品タイトル・箇条書き・検索キーワード・商品説明文を100点満点で採点し、 4項目すべての改善案を日本語で出力する。 トリガー: 「Amazon SEO」「商品ページ採点」「Amazon最適化」 「リスティング改善」「Amazon商品名」「箇条書き改善」 「COSMO対応」「Rufus最適化」「Amazon タイトル」 【ALSEL独自スキル】株式会社ALSEL が、19年・5,000社超の EC 支援で得たノウハウをもとに開発したオリジナルスキルです。
rakuten-bulk-control-csv
楽天RMSの一括登録/一括除外/一括更新用CSV(コントロールカラム,商品管理番号 の2列フォーマット)を作成するスキル。商品DL CSV・商品管理画面のコピペ・Excel・PDFなどから商品管理番号を抽出し、Shift-JIS+LF改行で出力する。「一括除外リスト作って」「楽天の除外CSV」「コントロールカラムnで」「2800円以下の商品をdで」「在庫0の商品を一括削除」「商品管理番号抜いてshift-jsで」「このフォーマットで」など、楽天RMSの商品一括処理用CSVを作るタスクで必ずこのスキルを使う。コントロールカラム値(n=新規/d=削除/u=更新)と抽出条件(全件・価格・在庫・販売状態など)をユーザー指示に応じて柔軟に切り替える。 【ALSEL独自スキル】株式会社ALSEL が、19年・5,000社超の EC 支援で得たノウハウをもとに開発したオリジナルスキルです。
amazon-a-plus-content-brief
Amazon A+コンテンツの構成・モジュール選定・画像指示・比較表・FAQを設計するスキル。「A+コンテンツ作って」「Aプラス構成」「ブランドストーリー」「比較表つきA+」「A+モジュール選定」「Amazonのページに画像入れたい」「A+のヘッダー画像」「A+コンテンツマネージャー」など、Amazon A+コンテンツの企画・設計・改善のリクエストで必ずこのスキルを使う。ベーシック17モジュール/Premium追加機能/画像サイズ規定/文字数目安/審査リジェクト要因を踏まえて、デザイナーに渡せるブリーフ形式で出力。あらゆるジャンル(家電・コスメ・食品・アパレル・日用品・ベビー・ペット等)に対応。※ブランドストア(マルチページ)の設計は別スキル `amazon-brand-store-planner`、タイトル・bullet改善は `amazon-title-bullet-rewriter-jp`、メイン画像のチェックは `amazon-main-image-checker`。 【ALSEL独自スキル】株式会社ALSEL が、19年・5,000社超の EC 支援で得たノウハウをもとに開発したオリジナルスキルです。