コンテンツにスキップ

クイックスタート(イベント駆動タイプ)

このページでは、イベント駆動タイプ のCraft Functionsを作成し、トリガーを設定してログを確認するまでの最短の流れを説明します。

次の2つのハンズオンから、目的に合った方を選んでください。

接客をきっかけにCraft Functionsを実行する

Section titled “接客をきっかけにCraft Functionsを実行する”

このハンズオンでは、KARTEの接客からイベント駆動タイプのCraft Functionsを起動します。

接客から渡されたデータをFunctionで受け取り、実行ログに出力できれば完了です。

このハンズオンでは、処理結果を確認しやすくするためログへ出力します。実運用では、同じ場所に外部サービスへの通知、データの加工、条件分岐などの独自ロジックを実装できます。

[すべてのプロダクト]→[Craft]→[ファンクション]を開き、[新規作成]→[コードを書いて作成]を選択します。

以下を設定します。

  • ファンクション名:quickstart-event
  • ファンクションタイプ:イベント駆動

[コード]タブに、次のコードを貼り付けます。

export default async function (data, { MODULES }) {
const { initLogger } = MODULES;
const logger = initLogger({ logLevel: "INFO" });
const input = data.jsonPayload.data;
logger.info("Craft Functionsがイベントを受け取りました", {
receivedAt: new Date().toISOString(),
input,
});
}

[デプロイ]し、完了するまで待ちます。

接客画面で[新規作成]から接客を作成し、[アクションを追加]で「Craft Functions連携」テンプレートからアクションを作成します。

次のように設定します。

  • ファンクション名:quickstart-event
  • name:quickstart
  • data:
{
"user_id": "quickstart-user",
"action": "view_pricing"
}

data には 静的変数・ユーザー情報変数(例: #{user_id})も埋め込めます。動作確認では固定値を使うと、ログの見比べがしやすくなります。

接客の配信トリガー(対象ユーザー・対象イベントなど)を設定し、保存・公開します。配信条件の詳細は 接客から実行する(サーバーサイドアクション) を参照してください。

設定した接客を発火させたあと、Functionの[ログ]タブを開きます。

次のようなログが確認できれば成功です。

{
"message": "Craft Functionsがイベントを受け取りました",
"receivedAt": "2026-08-12T00:00:00.000Z",
"input": {
"user_id": "quickstart-user",
"action": "view_pricing"
}
}

このハンズオンで確認できたこと

Section titled “このハンズオンで確認できたこと”
  • KARTEのユーザー行動をきっかけにFunctionを起動できる
  • 接客から任意のデータをFunctionへ渡せる
  • Function内でJavaScriptによる独自処理を実行できる

今回は受け取ったデータをログへ出力しました。実際の施策では、ログ出力部分を外部通知やデータ加工などの処理に置き換えることで、KARTEの標準機能を拡張できます。Webhook連携の応用例は KARTE の接客から処理を実行する も参照してください。

このハンズオンでは、スケジュール トリガーでFunctionを定期実行します。スケジュール実行のたびに外部APIからデータを取得し、結果をログに出力する最小構成です。

  1. KARTE管理画面にログインする
  2. [すべてのプロダクト]>[Craft]>[ファンクション]を選択する
  1. [新規作成]>[コードを書いて作成]を選択する
  2. ファンクション名を任意で設定する(例: scheduled-api-fetch
  3. [設定]タブで、ファンクションのタイプをイベント駆動タイプに設定する
  4. [コード]タブに次を貼り付ける
const API_URL = "https://api.github.com/zen";
export default async function (data, { MODULES }) {
const { initLogger } = MODULES;
const logger = initLogger({ logLevel: "INFO" });
const startedAt = new Date().toISOString();
logger.info("Scheduled job started", { startedAt });
const response = await fetch(API_URL);
if (!response.ok) {
logger.error("API request failed", { status: response.status });
throw new Error(`API request failed: ${response.status}`);
}
const quote = await response.text();
logger.info("Scheduled job completed", {
startedAt,
quote,
finishedAt: new Date().toISOString(),
});
}
  1. [デプロイ]し、完了するまで待つ。

3. スケジュールトリガーを設定する

Section titled “3. スケジュールトリガーを設定する”

スケジュールはイベント駆動タイプのファンクションでのみ利用できます。

  1. デプロイしたファンクションの詳細画面で[設定]タブを開く
  2. [スケジュール]セクションの[作成]を選択する
  3. cron式に * * * * * を入力して[保存]を選択する(1分ごとに実行)

動作確認用の設定です。確認後は不要なスケジュールを削除するか、cron式を変更してください。設定例は 定期的に実行する(スケジュール) を参照してください。

  1. ファンクション詳細画面の[ログ]タブを開く
  2. スケジュールの次の実行時刻まで待つ(最大1分程度)
  3. 実行履歴に Scheduled job completed と、GitHub APIから取得した文言(quote)が出力されていれば成功です

ログが表示されない場合は、ファンクションの状態が SUCCESS であること、スケジュールが有効であることを確認してください。詳細は ログの見方 を参照してください。