` など |
いずれのパターンでも、共通の前提として **embed script をアプリ全体で 1 度だけ読み込む** 必要があります。次のセクションで設定します。
## 共通: embed script を読み込む
### 方法 1: `index.html` に追加する(推奨)
Vite や Create React App では、プロジェクトルートの `index.html` の `` に script タグを追加するのが最もシンプルです。
```html theme={null}
...
```
`async` を付けることで、初期描画をブロックせずにスクリプトを読み込めます。読み込みが完了すると `window.turnintai` が利用可能になり、以後すべてのルートで起動 API が使えます。
### 方法 2: ルートコンポーネントから動的に注入する
`index.html` を触れない場合や、環境ごとに読み込みを切り替えたい場合は、ルート付近で 1 度だけ script を挿入します。
```tsx theme={null}
// src/components/TurnintEmbedScript.tsx
import { useEffect } from "react";
export function TurnintEmbedScript() {
useEffect(() => {
if (document.querySelector("script[data-turnint-embed-script-tag]")) {
return;
}
const script = document.createElement("script");
script.setAttribute("data-turnint-embed-script-tag", "true");
script.setAttribute("data-turnint-namespace", "ws_xxxxxxxxxxxxxxxx");
script.setAttribute("data-turnint-locale", "ja");
script.src = "https://cdn.turnint.ai/js/latest/turnint.ai.embed.js";
script.async = true;
document.body.appendChild(script);
}, []);
return null;
}
```
```tsx theme={null}
// src/App.tsx
import { TurnintEmbedScript } from "./components/TurnintEmbedScript";
export default function App() {
return (
<>
## パターン A: ボタンクリックで開く
最もシンプルな方法です。任意の要素に `data-turnint-*` 属性を付与すると、その要素がクリックされたタイミングで埋め込みが開きます。
```tsx theme={null}
export function HeroCta() {
return (
);
}
```
| 属性 | 値の例 | 説明 |
| ------------------- | ------------------------ | ------------------------------------------------ |
| `data-turnint-id` | `pub_xxxxxxxxxxxxxxxx` | 開きたいコンテンツの ID。ダッシュボードから取得 |
| `data-turnint-type` | `fullscreen` / `popover` | 開き方。`fullscreen` は画面全体を覆うモーダル、`popover` はチャットバブル |
埋め込みの UI 言語は embed script 側の `data-turnint-locale` で指定します。複数のボタンやインライン埋め込みを同じページに置く場合も、script は 1 度だけ読み込めば十分です。
## パターン B: ページ表示時に自動で開く
「LP の CTA から専用ページに飛ばし、着地した瞬間に埋め込みを立ち上げたい」というユースケース向けのパターンです。専用のページコンポーネントを 1 つ作り、`useEffect` 内で `window.turnintai.open()` を呼びます。
```tsx theme={null}
// src/pages/Start.tsx
import { useEffect } from "react";
type TurnintAI = {
open(config: {
id?: string
type?: "fullscreen"
locale?: "ja" | "en" | "auto"
onClose?: () => void
}): void
};
type WindowWithTurnintAI = Window & { turnintai?: TurnintAI };
export function StartPage() {
useEffect(() => {
const openWhenReady = () => {
const w = window as WindowWithTurnintAI;
if (w.turnintai) {
w.turnintai.open({
id: "pub_xxxxxxxxxxxxxxxx",
});
return;
}
requestAnimationFrame(openWhenReady);
};
openWhenReady();
}, []);
return
;
}
```
React Router を使う場合は、このコンポーネントを `/start` などのルートに割り当てます。
```tsx theme={null}
// src/App.tsx(例)
import { Route, Routes } from "react-router-dom";
import { StartPage } from "./pages/Start";
export default function App() {
return (
);
}
```
embed script は `async` で読み込んでいるため、`useEffect` の発火時点ではまだ `window.turnintai` が定義されていない可能性があります。`requestAnimationFrame` でフレームごとに再チェックすることで、ロード完了直後に確実に `open()` を呼び出せます。
` などに `data-turnint-*` 属性を付けます。`data-turnint-type="inline"` を指定すると、その要素の中に埋め込みが描画されます。
```tsx theme={null}
export function InlineEmbed() {
return (
);
}
```
要素の幅は CSS 側で確保してください(埋め込みは親要素のサイズに合わせて描画されます)。
## TypeScript で型を効かせる
`window.turnintai` の公式型定義はパッケージとしては配信していないため、プロジェクト側で型を宣言します。`src/turnintai.d.ts` や `types/turnintai.d.ts` を作成し、以下を貼り付けてください。
```ts theme={null}
// src/turnintai.d.ts
export {}
declare global {
interface Window {
turnintai?: {
open: (config: {
id?: string
type?: "fullscreen"
endpoint?: string
locale?: "ja" | "en" | "auto"
onClose?: () => void
}) => void
}
}
}
```
Vite では `src/` 配下に置けば `tsconfig` の `include` に含まれ、自動的に読み込まれます。
## 関連ドキュメント
* [クイックスタート](/ja/get-started/quickstart) — 共有方法と埋め込み方式の全体像
* [Nuxt への組み込み](/ja/get-started/onboarding/nuxt) — Vue / Nuxt 向けの同様の手順
* [Google Tag Manager 経由で導入する](/ja/get-started/onboarding/google-tag-manager) — GTM のカスタム HTML タグで導入する手順
* [トラッキングパラメータの自動保持](/ja/integrations/tracking-params) — UTM などの引き継ぎ
# クイックにはじめる
Source: https://docs.timothe.ai/ja/get-started/quickstart
Turnint AI エージェントを最短でセットアップして公開するまでの手順
Turnint AI を使って、PDF などの資料を AI エージェントに変換し、Web サイトに導入するまでの流れを説明します。
## ステップ 1: サインアップ・ワークスペース作成
まず、Turnint AI にサインアップしてワークスペースを作成します。
1. [Turnint AI](https://turnint.ai) にアクセスし、アカウントを作成します
2. ログイン後、ワークスペース名を入力して作成します
## ステップ 2: 資料をインポート
エージェントに学習させたい資料(pdf)をアップロードします。アップロードされた資料は AI が自動的に解析・インデックス化します。
1. ダッシュボードの **インポート** メニューを開きます
2. 営業資料、サービス資料、会社説明資料などのPDFファイルを選択します
3. エージェント作成ボタンをクリックします
4. 約20分程度、処理が完了するまで待ちます
![]()
## ステップ 3: エージェントを導入する
処理が完了したら、エージェントを Webサイトや SNS で公開できます。
エージェント画面の **右上の共有ボタン** をクリックすると、リンク共有と埋め込みの導入方法が表示されます。
![]()
### リンク共有
エージェントの専用URLを発行して共有する方法です。
**ユースケース**: SNS への投稿、メールやチャットでの共有、QR コードの作成など、手軽にエージェントを共有したい場合に最適です。
共有ボタンから **リンク** を選択し、表示された URL をコピーして共有します。
![]()
### 要素をクリックしてポップアップ
ボタンクリックでエージェントをポップアップ表示する方法です。
**ユースケース**: 既存の Web サイトにエージェントを追加したい場合に最適です。訪問者はページを離れることなくエージェントと対話できます。
共有ボタンから **埋め込み** を開き、埋め込み種別で **要素をクリックしてポップアップ** を選択します。表示されたコードを Web サイトの HTML に貼り付けます。
#### ポップアップモード
画面の右下などにチャットウィジェットとしてポップアップ表示します。
![]()
### 要素をクリックしてフルスクリーン
ボタンクリックでエージェントを画面全体に表示します。エージェント専用のランディングページや、特定のページ全体をエージェント体験にしたい場合に最適です。
共有ボタンから **埋め込み** を開き、埋め込み種別で **要素をクリックしてフルスクリーン** を選択します。表示されたコードを Web サイトの HTML に貼り付けます。
![]()
### インライン埋め込み
ページ内の特定のセクションにエージェントを配置する方法です。
**ユースケース**: FAQ セクションや製品紹介ページの一部など、ページの特定の領域にエージェントを組み込みたい場合に最適です。
共有ボタンから **埋め込み** を開き、埋め込み種別で **インライン埋め込み** を選択します。表示されたコードを配置したい場所の HTML に貼り付けます。
![]()
### GTM 経由でインライン埋め込み
Google Tag Manager のカスタム HTML タグだけで、ページ内にエージェントをインライン表示する方法です。
**ユースケース**: サイトのテンプレートや HTML を直接編集できない場合、またはタグ管理の運用フローに合わせて導入したい場合に適しています。
共有ボタンから **埋め込み** を開き、埋め込み種別で **GTM 経由でインライン埋め込み** を選択します。詳しい設定手順は [Google Tag Manager 経由で導入する](/ja/get-started/onboarding/google-tag-manager) を参照してください。
# Agentic ABM
Source: https://docs.timothe.ai/ja/gtm/account-based-marketing
Agentic AI を活用した ABM(Account-Based Marketing)で、提案書を「生きたエージェント」に変える
Turnint AI は、静的な提案書を**生きたエージェント**に変えます。アカウント専用の資料をアップロードするだけで、見込み顧客の社内を自律的に回り、各ステークホルダーに合わせた営業を行うエージェントが生まれます。
## ABM(Account-Based Marketing)とは
ABM(Account-Based Marketing)とは、特定のターゲットアカウントに対して、個別最適化されたマーケティング・営業を行う戦略です。BtoB の大型案件では、意思決定に複数のステークホルダーが関与するため、アカウント単位でのアプローチが不可欠です。
### 従来の ABM の課題
* **提案書は「死んだドキュメント」** — 渡した瞬間から劣化が始まる。読む人の疑問に答えられず、文脈も伝わらない
* **社内回覧で情報が欠落する** — 最初に受け取った人の文脈は、社内で共有される際に失われる
* **カスタマイズの人的コスト** — アカウントごとに提案書を作り込むには営業リソースが必要
* **社内の反応が見えない** — 誰が読んだのか、何に関心を持ったのか、何を懸念しているのかが分からない
```mermaid theme={null}
flowchart LR
A[営業] --> B[提案書を作成]
B --> C[担当者に送付]
C --> D[社内で回覧]
D --> E((反応が見えない))
D --> F[質問が出ても回答できない]
F --> G((検討停滞))
```
## Agentic ABM — Turnint AI のアプローチ
Turnint AI では、アカウント専用の提案資料をアップロードしてエージェントを作成し、リンクを共有するだけで ABM が始まります。
```mermaid theme={null}
flowchart LR
A[営業] --> B[提案資料をアップロード]
B --> C[アカウント専用エージェント生成]
C --> D[リンクを共有]
D --> E[経営層がアクセス]
D --> F[技術担当がアクセス]
D --> G[現場担当がアクセス]
E --> H[それぞれの関心に合わせて対話]
F --> H
G --> H
H --> I[全員の対話データを取得]
```
提案書はもう「渡して終わり」ではありません。見込み顧客の社内で、各ステークホルダーに合わせて自律的に営業を続けるエージェントになります。
### ステークホルダーごとの対話
同じエージェントでも、対話する相手に合わせてヒアリングと説明の内容が変わります。
* **経営層** — 投資対効果や事業インパクトに関する質問に対応し、経営視点での価値を説明
* **技術担当** — アーキテクチャ、セキュリティ、既存システムとの連携といった技術的な質問に回答
* **現場担当** — 日常業務への影響、運用フロー、導入の手間といった実務面の懸念を解消
**一つの提案が、見る人に合わせて自律的に営業する。** これが Agentic ABM の本質です。
### 社内力学の可視化
アカウント内の全ステークホルダーとの対話データが記録されるため、営業チームはこれまで見えなかった社内の検討状況を把握できます。
* **誰がアクセスしたか** — 意思決定に関与しているステークホルダーの特定
* **何に関心を持ったか** — 各ステークホルダーの関心領域と優先事項
* **何を懸念しているか** — 導入の障壁となりうるポイントの事前把握
* **検討の進捗** — アカウント全体としての温度感
### CRM 連携
セッションデータは Salesforce, HubSpot や Clay に自動同期されます。アカウント単位でのエンゲージメントを CRM 上で一元管理し、営業チームが既存のワークフローの中で活用できます。
## これからの展望
従来の ABM は「アカウントごとにコンテンツをカスタマイズして届ける」戦略でした。しかし、届けた後のことは制御できませんでした。提案書が社内でどう読まれ、誰がどう反応し、何が障壁になっているのか — これらはブラックボックスでした。
Agentic ABM は、この構造を根本から変えます。提案書は渡した後も営業し続け、各ステークホルダーの文脈に合わせて対話し、その過程で得られるデータが営業チームにフィードバックされる。
ABM の未来は、「アカウントにコンテンツを届ける」から「アカウントの中でエージェントが営業する」へと向かっています。
# Agentic GTM エンリッチメント
Source: https://docs.timothe.ai/ja/gtm/gtm-enrichment
AI エージェントとの対話から得られるファーストパーティデータで、GTM 戦略を強化する
Turnint AI の AI エージェントは、プリセールスエージェント として見込み顧客と対話する中で、従来の手法では得られなかった**バイアスのないインサイト**を自然に取得します。フォーム入力やサードパーティデータでは分からなかった、見込み顧客の本音の課題や関心を、対話データとしてキャプチャします。
## GTM エンリッチメントとは
GTM エンリッチメント(Go-To-Market Enrichment)とは、マーケティングやセールスの意思決定に必要なデータを充実させるプロセスです。リードの属性情報(企業規模、業種、役職など)に加えて、関心領域、課題、購買意欲といった定性的な情報を付加することで、より精度の高い GTM 活動を実現します。
### 従来のエンリッチメントの手法と限界
| 手法 | 取得できるデータ | 限界 |
| ------------ | ------------------ | -------------------- |
| フォーム入力 | 名前、メール、会社名、役職 | 入力項目を増やすとコンバージョン率が低下 |
| サードパーティデータ | 企業規模、業種、テクノロジースタック | 個人の関心や課題は分からない |
| Web 行動トラッキング | ページ閲覧、滞在時間、クリック | 「なぜ見たか」の意図は推測でしかない |
| メールエンゲージメント | 開封率、クリック率 | 表面的な関心指標に留まる |
これらの手法に共通する課題は、**見込み顧客の「本音」にアクセスできない**ことです。行動データからは「何をしたか」は分かりますが、「なぜそうしたか」「本当は何に困っているか」は分かりません。
## 対話データから得られるインサイト
この領域は **Conversational Intelligence(会話型インテリジェンス)** と呼ばれ、営業活動や顧客とのやり取りの中から AI・分析技術を使ってインサイトを抽出する手法です。Gong、Chorus(ZoomInfo)、Clari などが代表的なプレイヤーで、主に商談録音の分析やセールスコーチングに活用されています。Turnint AI は、この概念をプリセールス段階の AI エージェント対話に適用しています。
```mermaid theme={null}
flowchart TB
A[見込み顧客が AI エージェントと対話] --> B[明示的データ]
A --> C[暗黙的データ]
B --> D[課題・ペインポイント]
B --> E[比較対象・要件]
B --> F[タイムライン・意思決定者]
C --> G[関心トピック]
C --> H[検討の深さ]
C --> I[エンゲージメント強度]
D --> J[エンリッチされたリードデータ]
E --> J
F --> J
G --> J
H --> J
I --> J
J --> K[CRM 同期]
J --> L[セッションサマリー]
J --> M[リアルタイムモニタリング]
```
Turnint AI の AI エージェントとの対話は、見込み顧客が自らの文脈で、自分の言葉で課題や関心を語る場です。これは、従来の手法では得られなかったファーストパーティデータの新しいソースとなります。
### 対話から取得できるデータ
**明示的なデータ(見込み顧客が直接語る内容)**
* 現在抱えている課題や ペインポイント
* 検討している解決策や比較対象
* 導入の条件やタイムライン
* 社内の意思決定プロセスや関係者
**暗黙的なデータ(対話の行動パターン)**
* 関心の高いトピック(どのスライドで質問が増えたか)
* 検討の深さ(一般的な質問 vs 具体的な質問)
* エンゲージメントの強さ(セッション時間、チャットターン数)
* 離脱ポイント(どこで対話が終了したか)
### なぜ「バイアスのないインサイト」が得られるのか
AI エージェントとの対話は、人間の営業担当者との対話とは異なる特性を持ちます。
* **心理的安全性** — AI 相手であるため、「まだ予算が確保できていない」「上司を説得できるか分からない」といった、営業担当者には言いにくい本音を語りやすい
* **自分のペースで対話** — 急かされることなく、自分の関心に沿って質問できるため、本当に知りたいことを聞く
* **判断のための対話** — 「売り込まれる」というプレッシャーがないため、純粋に検討を進めるための対話になる
## Agentic エンリッチメント — Turnint AI のアプローチ
### セッションサマリー
各セッション終了後、AI が対話内容を自動で要約します。見込み顧客の関心領域、主な質問、課題感、検討段階が構造化された形で出力されるため、営業チームは一目で状況を把握できます。
### リアルタイムモニタリング
ダッシュボードで進行中のセッションをリアルタイムに確認できます。高エンゲージメントのセッションを検知し、ホットリードに対して即座にアクションを取ることが可能です。
### セッションリプレイ
過去のセッションをタイムラインで再生できます。スライド遷移、チャットメッセージ、CTA インタラクションを時系列で確認し、見込み顧客の体験を詳細に追跡できます。
### CRM 連携による自動同期
エンリッチされたデータは Salesforce, HubSpot や Clay に自動同期されます。
* **Salesforce** — コンタクトの自動作成 + セッション内容をタスク/活動として記録
* **HubSpot** — コンタクトノートとしてセッションサマリーとトランスクリプトを同期
* **Clay** — セッションデータを Clay に連携し、エンリッチメントワークフローに組み込み
営業チームは普段の CRM ワークフローの中で、対話から得られた インサイト にアクセスできます。
### Webhook / Slack / Discord 連携
セッションイベントをリアルタイムで外部システムに通知できます。Slack チャンネルにセッション完了通知を送ったり、Webhook で自社の分析基盤にデータを流すことが可能です。
## これからの展望
GTM エンリッチメントは、「外部データを買って付加する」時代から、「対話を通じて直接取得する」時代へと移行しつつあります。
サードパーティ Cookie の廃止やプライバシー規制の強化により、外部データへの依存はますます難しくなっています。一方で、AI エージェントとの対話から得られるファーストパーティデータは、見込み顧客自身が提供する情報であり、プライバシーの観点でも堅牢です。
Agentic AI が プリセールス の役割を担うことで、すべてのリードとの接点がエンリッチメントの機会になります。フォームに入力された 5 項目ではなく、対話の中で自然に明らかになる課題、関心、温度感、検討状況。このデータが GTM 戦略全体—ターゲティング、メッセージング、セグメンテーション、営業プロセス—を強化します。
エンリッチメントの未来は、「データを集める」から「対話を通じて理解する」へと向かっています。
# Agentic リードジェネレーション
Source: https://docs.timothe.ai/ja/gtm/lead-generation
Agentic AI を活用したリードジェネレーションの新しいアプローチ
Turnint AI は、従来の「資料をダウンロードさせる」リードジェネレーションを、「AI エージェントが案内する」インタラクティブな体験に変えます。
見込み顧客は資料を渡されて一人で読むのではなく、AI エージェントと対話しながら自分に必要な情報にたどり着きます。この体験そのものが、より質の高いリードを生み出します。
## リードジェネレーションとは
リードジェネレーション(Lead Generation)とは、自社の製品やサービスに関心を持つ見込み顧客(リード)を獲得するプロセスです。BtoB マーケティングにおいては、ホワイトペーパーや製品資料のダウンロード、ウェビナー参加、問い合わせフォームの送信などが主な獲得チャネルとなっています。
しかし、従来のリードジェネレーションには構造的な課題があります。
* **コンバージョン率の低さ** — 資料ダウンロード後に商談化するのは多くの場合 **2〜10%** に留まる(業種・コンテンツにより異なる)
* **情報の非対称性** — 企業側はリードの関心度が分からず、リード側は自社に合うかが分からない
* **フォローアップの遅延** — ダウンロード後 5 分以内の対応と 30 分後では、コンバージョン率に 20 倍の差がある
## 従来のアプローチの限界
従来のリードジェネレーションは「コンテンツを渡す → フォーム情報を得る」という一方向のモデルです。
```mermaid theme={null}
flowchart LR
A[見込み顧客] --> B[フォーム入力]
B --> C[資料DL]
C --> D((離脱 90〜98%))
B --> E[企業: リード情報を取得]
E --> F[関心が不明]
F --> G[一律のフォローアップ]
G --> H((商談化 2〜10%))
```
この構造では、見込み顧客が「資料を読んだけど、自社に当てはまるか分からない」と感じた瞬間に検討が止まります。企業側も、誰が本気で検討しているのか判断する材料がありません。
## Agentic リードジェネレーション — Turnint AI のアプローチ
Turnint AI は、資料配布の体験そのものを変えることで、リードジェネレーションの質と量を同時に向上させます。
```mermaid theme={null}
flowchart LR
A[見込み顧客] --> B[AI エージェントにアクセス]
B --> C[対話しながら資料を閲覧]
C --> D[課題・関心を自然に把握]
D --> E[Agentic CTA 提示]
E --> F((デモ予約・問い合わせ))
D --> G[企業: エンリッチされたリード情報]
```
### フォームゲーティング
セッション開始前にフォームを表示し、リード情報を取得します。名前、メールアドレス、会社名、電話番号など、必要なフィールドを柔軟に設定できます。
見込み顧客は「資料をダウンロードする」のではなく「AI エージェントに案内してもらう」ためにフォームを入力するため、体験の期待値が異なります。
### プログレッシブゲーティング
最初からフォームを出すのではなく、一定のエンゲージメント(チャットのやり取り回数や閲覧スライド数)に達した時点でフォームをトリガーします。
見込み顧客がすでに対話を通じて関心を持った状態でフォームが表示されるため、入力率が高くなります。「まず体験してもらい、興味を持ったら情報を取得する」という自然な流れです。
### ポータルと埋め込みウィジェット
リードとの接点を最大化するための配信方法が用意されています。
* **ポータル** — 複数のエージェントをブランド付きサイトで公開。カスタムドメインにも対応
* **埋め込みウィジェット** — `
```
# Braze 連携
Source: https://docs.timothe.ai/ja/integrations/analytics.braze
Turnint AI のセッションイベントを Braze に送信する方法
セッションイベントを [Braze](https://www.braze.co.jp) のカスタムイベントとして自動送信します。Braze のキャンペーンやキャンバスのトリガーに活用できます。
## 検出条件
`window.braze` がオブジェクトで、`braze.logCustomEvent` が関数として存在する場合に検出されます。
## 送信方法
```javascript theme={null}
braze.logCustomEvent("turnint_started", { type: "started" });
```
## ヘッドスクリプト設定
ポータルの **ヘッドスクリプト** に Braze の Web SDK 初期化スニペットを貼り付けてください。API キーと SDK エンドポイントは Braze のダッシュボードから取得できます。
```html theme={null}
```
# FullStory 連携
Source: https://docs.timothe.ai/ja/integrations/analytics.fullstory
Turnint AI のセッションイベントを FullStory に送信する方法
セッションイベントを [FullStory](https://www.fullstory.com) のカスタムイベントとして自動送信します。セッションリプレイと合わせて、ユーザー行動の文脈を把握できます。
## 検出条件
`window.FS` がオブジェクトで、`FS.event` が関数として存在する場合に検出されます。
## 送信方法
```javascript theme={null}
FS.event("turnint_started", { type: "started" });
```
## ヘッドスクリプト設定
ポータルの **ヘッドスクリプト** に FullStory のスニペットを貼り付けてください。スニペットは FullStory の **Settings** > **Data Capture & Privacy** > **Data Capture** から取得できます。
# Google Analytics 4 連携
Source: https://docs.timothe.ai/ja/integrations/analytics.ga4
Turnint AI のセッションイベントを Google Analytics 4 (GA4) に送信する方法
セッションイベントを [GA4](https://marketingplatform.google.com/intl/ja/about/analytics/) のカスタムイベントとして自動送信します。
## 検出条件
`window.gtag` が関数として存在する場合に検出されます。
## 送信方法
```javascript theme={null}
gtag("event", "turnint_started", { type: "started" });
```
GA4 と GTM は排他的に扱われます。`gtag` が検出された場合、`dataLayer` への重複プッシュは行いません。
## ヘッドスクリプト設定
ポータルの **ヘッドスクリプト** に以下を貼り付けてください。`G-XXXXXXXXXX` はご自身の測定 ID に置き換えてください。
```html theme={null}
```
## クロスドメイン計測
自社サイト(例: `example.com`)とポータルのドメイン(例: `subdomain.turnint.site`)間でユーザーセッションを一貫して計測するには、GA4 のクロスドメイン設定が必要です。設定しない場合、ポータルへの遷移が新規セッションとして扱われ、コンバージョンの参照元が正しく記録されません。
1. GA4 の **管理** > **データストリーム** でウェブストリームを選択
2. **タグ設定を行う** > **ドメインの設定** を開く
3. **条件を追加** をクリックし、ポータルのドメインを追加:
* マッチタイプ: **含む**
* ドメイン: `subdomain.turnint.site`(または独自ドメインを設定している場合はそのドメイン)
自社サイトとポータルの両方で**同じ測定 ID**(`G-XXXXXXXXXX`)を使用してください。異なる測定 ID を使用するとクロスドメイン計測は機能しません。
## GA4 でのカスタムイベント登録
Turnint AI のイベントをレポートやオーディエンスで活用するには、GA4 にカスタムイベントとして登録する必要があります。
1. GA4 の **管理** > **データの表示** > **イベント** を開く
2. **イベントを作成** をクリック
3. 以下のイベントを登録:
| カスタムイベント名 | 説明 |
| ------------------------- | --------------------------- |
| `turnint_started` | セッション開始 |
| `turnint_ended` | セッション終了 |
| `turnint_slide_viewed` | スライド閲覧 |
| `turnint_action_executed` | アクション実行(CTA クリックなど) |
| `turnint_message_sent` | メッセージ送信 |
| `turnint_context_updated` | ゲート(フォームなど)を通じてユーザー情報が識別された |
`turnint_action_executed` をコンバージョンとしてマークすることで、CTA のコンバージョン率を計測できます。
## GA4 での確認方法
1. **管理** > **DebugView** でリアルタイムにイベントを確認
2. **レポート** > **エンゲージメント** > **イベント** で `turnint_` プレフィックスのイベントを確認
# Google Tag Manager 連携
Source: https://docs.timothe.ai/ja/integrations/analytics.gtm
Turnint AI のセッションイベントを Google Tag Manager (GTM) の dataLayer に送信する方法
セッションイベントを [GTM](https://marketingplatform.google.com/intl/ja/about/tag-manager/) の `dataLayer` にプッシュします。GTM のトリガーやタグを使って、任意の配信先に転送できます。
## 検出条件
`window.dataLayer` が配列として存在し、かつ `window.gtag` が未定義の場合に検出されます。
GA4 の `gtag` スニペットは内部的に `dataLayer` を使用します。`gtag` が検出された場合は GA4 として扱い、`dataLayer` への直接プッシュは行いません。これにより二重カウントを防止しています。
## 送信方法
```javascript theme={null}
dataLayer.push({
event: "turnint_started",
type: "started"
});
```
## ヘッドスクリプト設定
ポータルの **ヘッドスクリプト** に以下を貼り付けてください。`GTM-XXXXXXX` はご自身のコンテナ ID に置き換えてください。
```html theme={null}
```
## クロスドメイン計測
自社サイト(例: `example.com`)とポータルのドメイン(例: `subdomain.turnint.site`)間でユーザーセッションを一貫して計測するには、クロスドメインの設定が必要です。設定しない場合、ポータルへの遷移が新規セッションとして扱われます。
### GA4 タグを使用している場合
1. GTM で **GA4 設定タグ**を開く
2. **タグの設定** > **設定フィールド** に以下を追加:
* フィールド名: `linker`
* 値: `{"domains": ["example.com", "subdomain.turnint.site"]}`
または、GA4 の管理画面からも設定できます:
1. GA4 の **管理** > **データストリーム** でウェブストリームを選択
2. **タグ設定を行う** > **ドメインの設定** を開く
3. ポータルのドメインを追加
自社サイトとポータルで**同じ GA4 測定 ID** を使用してください。
## カスタムイベント一覧
Turnint AI が `dataLayer` にプッシュするイベントは以下のとおりです。
| イベント名 | 説明 |
| ------------------------- | --------------------------- |
| `turnint_started` | セッション開始 |
| `turnint_ended` | セッション終了 |
| `turnint_slide_viewed` | スライド閲覧 |
| `turnint_action_executed` | アクション実行(CTA クリックなど) |
| `turnint_message_sent` | メッセージ送信 |
| `turnint_context_updated` | ゲート(フォームなど)を通じてユーザー情報が識別された |
## GTM での設定例
### トリガー
1. **トリガー** > **新規** > **カスタムイベント**
2. イベント名に `turnint_action_executed` を指定(正規表現で `turnint_.*` も可)
### タグ
作成したトリガーを使って、GA4 イベントタグや他の配信先タグを設定できます。
`turnint_action_executed` を GA4 のコンバージョンイベントとして転送することで、CTA のコンバージョン率を計測できます。
# Heap 連携
Source: https://docs.timothe.ai/ja/integrations/analytics.heap
Turnint AI のセッションイベントを Heap に送信する方法
セッションイベントを [Heap](https://www.heap.io) のカスタムイベントとして自動送信します。
## 検出条件
`window.heap` がオブジェクトで、`heap.track` が関数として存在する場合に検出されます。
## 送信方法
```javascript theme={null}
heap.track("turnint_started", { type: "started" });
```
## ヘッドスクリプト設定
ポータルの **ヘッドスクリプト** に以下を貼り付けてください。`YOUR_APP_ID` はご自身のアプリ ID に置き換えてください。
```html theme={null}
```
# HubSpot トラッキング連携
Source: https://docs.timothe.ai/ja/integrations/analytics.hubspot
Turnint AI のセッションイベントを HubSpot のカスタム行動イベントとして送信する方法
セッションイベントを [HubSpot](https://www.hubspot.jp) のカスタム行動イベント(Custom Behavioral Events)として自動送信します。
これは HubSpot のクライアントサイドトラッキング連携です。サーバーサイドの CRM 連携については [HubSpot CRM 連携](/ja/integrations/crm.hubspot) を参照してください。
## 検出条件
`window._hsq` が配列として存在する場合に検出されます。
## 送信方法
```javascript theme={null}
_hsq.push(["trackCustomBehavioralEvent", {
name: "turnint_started",
properties: { type: "started" }
}]);
```
## ヘッドスクリプト設定
ポータルの **ヘッドスクリプト** に以下を貼り付けてください。`YOUR_HUB_ID` はご自身の HubSpot アカウント ID に置き換えてください。
```html theme={null}
```
## 前提条件
HubSpot でカスタム行動イベントを受信するには、**Marketing Hub Enterprise** プランが必要です。
# CXプラットフォーム KARTE (カルテ) 連携
Source: https://docs.timothe.ai/ja/integrations/analytics.karte
Turnint AI のセッションイベントを KARTE に送信する方法
セッションイベントを [KARTE](https://karte.io) のカスタムイベントとして自動送信します。KARTE のアクション配信やセグメント作成に活用できます。
## 検出条件
`window.krt` が関数として存在する場合に検出されます。
## 送信方法
```javascript theme={null}
krt("send", "turnint_started", { type: "started" });
```
## ヘッドスクリプト設定
ポータルの **ヘッドスクリプト** に KARTE のタグを貼り付けてください。タグは KARTE の管理画面から取得できます。
## 活用例
* `turnint_action_executed` イベントでセグメントを作成し、CTA に至ったユーザーに接客を配信
* `turnint_started` イベントでエージェント利用ユーザーを把握
# Meta Pixel 連携
Source: https://docs.timothe.ai/ja/integrations/analytics.meta-pixel
Turnint AI のセッションイベントを Meta Pixel (Facebook Pixel) に送信する方法
セッションイベントを [Meta Pixel](https://www.facebook.com/business/tools/meta-pixel) のカスタムイベントとして自動送信します。Facebook / Instagram 広告のコンバージョン計測やオーディエンス作成に活用できます。
## 検出条件
`window.fbq` が関数として存在する場合に検出されます。
## 送信方法
```javascript theme={null}
fbq("trackCustom", "turnint_action_executed", {
type: "action-executed",
actionId: "...",
actionLabel: "...",
actionExecType: "..."
});
```
## ヘッドスクリプト設定
ポータルの **ヘッドスクリプト** に以下を貼り付けてください。`YOUR_PIXEL_ID` はご自身のピクセル ID に置き換えてください。
```html theme={null}
```
## 活用例
* `turnint_action_executed` をカスタムコンバージョンとして設定し、CTA クリックを計測
* `turnint_started` でリターゲティングオーディエンスを作成
# Mixpanel 連携
Source: https://docs.timothe.ai/ja/integrations/analytics.mixpanel
Turnint AI のセッションイベントを Mixpanel に送信する方法
セッションイベントを [Mixpanel](https://mixpanel.com/ja/) の `track` メソッドで自動送信します。
## 検出条件
`window.mixpanel` がオブジェクトで、`mixpanel.track` が関数として存在する場合に検出されます。
## 送信方法
```javascript theme={null}
mixpanel.track("turnint_started", { type: "started" });
```
## ヘッドスクリプト設定
ポータルの **ヘッドスクリプト** に Mixpanel のスニペットを貼り付けてください。`YOUR_TOKEN` はご自身のプロジェクトトークンに置き換えてください。
```html theme={null}
```
# Pendo 連携
Source: https://docs.timothe.ai/ja/integrations/analytics.pendo
Turnint AI のセッションイベントを Pendo に送信する方法
セッションイベントを [Pendo](https://jp.pendo.io) のカスタムイベントとして自動送信します。
## 検出条件
`window.pendo` がオブジェクトで、`pendo.track` が関数として存在する場合に検出されます。
## 送信方法
```javascript theme={null}
pendo.track("turnint_started", { type: "started" });
```
## ヘッドスクリプト設定
ポータルの **ヘッドスクリプト** に Pendo のインストールスニペットを貼り付けてください。スニペットは Pendo の管理画面 > **Settings** > **Subscription Settings** > **Install Settings** から取得できます。
# Plausible 連携
Source: https://docs.timothe.ai/ja/integrations/analytics.plausible
Turnint AI のセッションイベントを Plausible Analytics に送信する方法
セッションイベントを [Plausible](https://plausible.io) のカスタムイベントとして自動送信します。
## 検出条件
`window.plausible` が関数として存在する場合に検出されます。
## 送信方法
```javascript theme={null}
plausible("turnint_started", { props: { type: "started" } });
```
## ヘッドスクリプト設定
ポータルの **ヘッドスクリプト** に以下を貼り付けてください。`yourdomain.com` はご自身のドメインに置き換えてください。
```html theme={null}
```
カスタムイベントを使用するには、Plausible のスクリプトを `script.js` ではなく `script.tagged-events.js` に変更するか、上記のように手動で `plausible` 関数を定義する必要があります。
# PostHog 連携
Source: https://docs.timothe.ai/ja/integrations/analytics.posthog
Turnint AI のセッションイベントを PostHog に送信する方法
セッションイベントを [PostHog](https://posthog.com) のカスタムイベントとして自動送信します。
## 検出条件
`window.posthog` がオブジェクトで、`posthog.capture` が関数として存在する場合に検出されます。
## 送信方法
```javascript theme={null}
posthog.capture("turnint_started", { type: "started" });
```
## ヘッドスクリプト設定
ポータルの **ヘッドスクリプト** に以下を貼り付けてください。API キーとホストはご自身の PostHog プロジェクトのものに置き換えてください。
```html theme={null}
```
# RudderStack 連携
Source: https://docs.timothe.ai/ja/integrations/analytics.rudderstack
Turnint AI のセッションイベントを RudderStack に送信する方法
セッションイベントを [RudderStack](https://www.rudderstack.com) の `track` メソッドで自動送信します。RudderStack を通じて、接続された全ての Destination にイベントを転送できます。
## 検出条件
`window.rudderanalytics` がオブジェクトで、`rudderanalytics.track` が関数として存在する場合に検出されます。
## 送信方法
```javascript theme={null}
rudderanalytics.track("turnint_started", { type: "started" });
```
## ヘッドスクリプト設定
ポータルの **ヘッドスクリプト** に RudderStack の JavaScript SDK スニペットを貼り付けてください。Write Key と Data Plane URL は RudderStack のダッシュボードから取得できます。
```html theme={null}
```
# Segment 連携
Source: https://docs.timothe.ai/ja/integrations/analytics.segment
Turnint AI のセッションイベントを Segment に送信する方法
セッションイベントを [Segment](https://segment.com) の `analytics.track` で自動送信します。Segment を通じて、接続された全ての Destination にイベントを転送できます。
## 検出条件
`window.analytics` がオブジェクトで、`analytics.track` が関数として存在する場合に検出されます。
## 送信方法
```javascript theme={null}
analytics.track("turnint_started", { type: "started" });
```
## ヘッドスクリプト設定
ポータルの **ヘッドスクリプト** に Segment の Analytics.js スニペットを貼り付けてください。Write Key はご自身のものに置き換えてください。
```html theme={null}
```
# Apollo.io 連携
Source: https://docs.timothe.ai/ja/integrations/crm.apollo
Apollo.io と連携してセッションデータを自動同期する方法
セッションデータを [Apollo.io](https://www.apollo.io) に自動送信します。セッション終了時に、訪問者のメールアドレスやセッション内容を Webhook 経由で Apollo.io に送信します。
## 前提条件
* Apollo.io アカウント
## Apollo.io 側の設定
### Webhook の作成
1. Apollo.io にログインし、Webhook の設定画面を開く
2. 新しい Webhook エンドポイントを作成
3. 表示される **Webhook URL** をコピー
## Turnint ダッシュボードでの設定
ダッシュボードの **インテグレーション** から新規作成し、タイプ「Apollo.io」を選択します。
| 項目 | 説明 |
| ----------- | ----------------------- |
| Webhook URL | Apollo.io の Webhook URL |
## 送信されるデータ
セッション終了時に以下の JSON が Apollo.io に送信されます。
| フィールド | 型 | 説明 |
| ------------- | -------------- | ----------------------------------- |
| `email` | string | セッション中に取得した訪問者のメールアドレス |
| `sessionId` | string | セッション ID |
| `sessionLink` | string | ダッシュボードのセッション詳細リンク |
| `agentId` | string | エージェント ID |
| `workspaceId` | string | ワークスペース ID |
| `summary` | string \| null | セッションの要約 |
| `userContext` | object | セッションに渡されたユーザーコンテキスト |
| `messages` | array | セッション中のメッセージ一覧(`role` と `text` を含む) |
| `timestamp` | string | 送信日時(ISO 8601 形式) |
メールアドレスがセッションコンテキストに含まれない場合、データは送信されません。
# Attio CRM 連携
Source: https://docs.timothe.ai/ja/integrations/crm.attio
Attio CRM と連携してコンタクトやセッションデータを同期する方法
セッションデータを [Attio](https://attio.com) CRM に自動同期します。セッション終了時に、訪問者のメールアドレスをもとに People レコードを作成し、セッション内容をノートとして記録します。
## 前提条件
* Attio アカウント
## API キーの作成
1. Attio の **Settings** > **Developers** > **API keys** を開く
2. **Create API key** をクリック
3. 以下のスコープを付与:
* `record_permission:read_write` — People レコードの読み書き
* `note_permission:read_write` — ノートの読み書き
4. API キーをコピー
## 設定
ダッシュボードの **インテグレーション** から新規作成し、タイプ「Attio」を選択します。
| 項目 | 説明 |
| ------- | -------------- |
| API Key | Attio の API キー |
## 同期される内容
* **People** — セッション中に取得したメールアドレスで Attio の People を検索し、存在しなければ新規作成
* **ノート** — セッションの内容を People レコードに紐づくノートとして作成
# Clay 連携
Source: https://docs.timothe.ai/ja/integrations/crm.clay
Clay と連携してセッションデータを自動同期する方法
セッションデータを [Clay](https://www.clay.com) テーブルに自動送信します。セッション終了時に、訪問者のメールアドレスやセッション内容を Webhook 経由で Clay テーブルに追加します。
## 前提条件
* Clay アカウント
## Clay 側の設定
### Webhook ソースの作成
1. Clay で対象のテーブルを開く
2. **+ Add** をクリックし、「Webhooks」を検索
3. **Monitor webhook** を選択
4. 表示される **Webhook URL** をコピー
認証トークンを設定する場合は、表示時に必ずコピーしてください(一度しか表示されません)。
## Turnint ダッシュボードでの設定
ダッシュボードの **インテグレーション** から新規作成し、タイプ「Clay」を選択します。
| 項目 | 説明 |
| ----------- | ---------------------- |
| Webhook URL | Clay テーブルの Webhook URL |
## 送信されるデータ
セッション終了時に以下の JSON が Clay テーブルに送信されます。各キーが Clay テーブルのカラムとして自動認識されます。
| フィールド | 型 | 説明 |
| ------------- | -------------- | ----------------------------------- |
| `email` | string | セッション中に取得した訪問者のメールアドレス |
| `sessionId` | string | セッション ID |
| `sessionLink` | string | ダッシュボードのセッション詳細リンク |
| `agentId` | string | エージェント ID |
| `workspaceId` | string | ワークスペース ID |
| `summary` | string \| null | セッションの要約 |
| `userContext` | object | セッションに渡されたユーザーコンテキスト |
| `messages` | array | セッション中のメッセージ一覧(`role` と `text` を含む) |
| `timestamp` | string | 送信日時(ISO 8601 形式) |
メールアドレスがセッションコンテキストに含まれない場合、データは送信されません。
# HubSpot CRM 連携
Source: https://docs.timothe.ai/ja/integrations/crm.hubspot
HubSpot CRM と連携してコンタクトやセッションデータを同期する方法
セッションデータを [HubSpot CRM](https://www.hubspot.jp) に自動同期します。セッション終了時に、訪問者のメールアドレスをもとにコンタクトを作成し、セッション内容をノートとして記録します。
## 前提条件
* HubSpot アカウント
## サービスキーの作成
1. HubSpot の **設定** > **連携** > **非公開アプリ** を開く
2. **非公開アプリを作成** をクリック
3. 以下のスコープを付与:
* `crm.objects.contacts.read`
* `crm.objects.contacts.write`
4. アプリを作成し、**アクセストークン**(`pat-na2-` で始まる文字列)をコピー
サービスキーは `pat-na2-` で始まる形式である必要があります。
## 設定
ダッシュボードの **インテグレーション** から新規作成し、タイプ「HubSpot」を選択します。
| 項目 | 説明 |
| ------------------------- | --------------------------------------------------- |
| Service Key | HubSpot のアクセストークン(`pat-na2-...`) |
| Contact Property Mappings | ユーザーコンテキストのキーと HubSpot コンタクトプロパティ(内部名)の対応(任意・複数設定可) |
## 同期される内容
* **コンタクト** — セッション中に取得したメールアドレスで HubSpot のコンタクトを検索し、存在しなければ新規作成
* **ノート** — セッションの内容をコンタクトに紐づくノートとして作成
* **コンタクトプロパティ** — Contact Property Mappings を設定している場合、セッションのユーザーコンテキストの値をコンタクトプロパティに書き込み。HubSpot 側のプロパティが空の場合のみ書き込まれ、既存の値は上書きされません。ユーザーコンテキストに値がないキーはスキップされます
# Salesforce CRM 連携
Source: https://docs.timothe.ai/ja/integrations/crm.salesforce
Salesforce CRM と連携してリードやセッションデータを同期する方法
セッションデータを [Salesforce CRM](https://www.salesforce.com/jp/) に自動同期します。セッション終了時に、訪問者のメールアドレスをもとにコンタクトを作成し、セッション内容をタスク/活動として記録します。
## 前提条件
* Salesforce アカウント
## Salesforce 側の設定
### 外部クライアントアプリケーションの作成
1. **設定** > **プラットフォームツール** > **外部クライアントアプリケーション** を開く
2. **新規外部クライアントアプリケーション** をクリック
3. 基本情報を入力:
* 外部クライアントアプリケーション名: 例 `turnint.ai integration`
* API参照名: `turnint_ai_integration`
* 取引先責任者: 貴方のメールアドレス
* 配信状態: `ローカル`
### OAuth 設定
6. **API (OAuth設定の有効化)** セクション:
* OAuthを有効化: チェック
* アプリケーション設定
* コールバックURL: `https://api.turnint.ai/integrations/callback/salesforce`
* OAuth範囲: 以下を「選択した OAuth 範囲」に追加
* APIを使用してユーザーデータを管理 (api)
* フローの有効化
* クライアントログイン情報フローを有効化: チェック
* セキュリティ
* Web サーバーフローの秘密が必要: チェック
* 更新トークンフローの秘密が必要: チェック
* サポートされる認証フローに Proof Key for Code Exchange (PKCE) 拡張を要求: チェック
* 更新トークンのローテーションを有効化: オフ
* 指名ユーザーの JSON Web トークン (JWT) ベースのアクセストークンを発行: オフ
7. **作成** をクリック
### ポリシー設定
8. **ポリシー** > **編集**:
* OAuth フローおよび外部クライアントアプリケーションの機能強化:
* クライアントログイン情報フローを有効化: チェック
* (ユーザー名) として実行: あなたの Salesforce ユーザー名
* IP 制限の緩和: `IP 制限の緩和` を選択
* シングルログアウトを有効化: オフ
* 高保証セッションが必要です: オフ
### コンシューマー鍵と秘密の取得
9. **設定** > **OAuth設定** > **アプリケーション設定** > **コンシューマー鍵と秘密** > **IDの検証**
* **コンシューマー鍵**と**コンシューマーの秘密**をコピー
## Turnint ダッシュボードでの設定
ダッシュボードの **インテグレーション** から新規作成し、タイプ「Salesforce」を選択します。
| 項目 | 説明 |
| --------------- | ---------------------------------------------------------------------------- |
| Consumer Key | Salesforce のコンシューマー鍵 |
| Consumer Secret | Salesforce のコンシューマーの秘密 |
| Login URL | `https://login.salesforce.com`(本番)または `https://test.salesforce.com`(Sandbox) |
## 同期される内容
* **コンタクト** — セッション中に取得したメールアドレスで Salesforce のコンタクトを検索し、存在しなければ新規作成
* **タスク/活動** — セッションの内容をコンタクトに紐づくタスクとして作成
# Unify GTM 連携
Source: https://docs.timothe.ai/ja/integrations/crm.unify
Unify GTM と連携してセッションデータをレコードとして同期する方法
セッションデータを [Unify GTM](https://www.unifygtm.com) に自動同期します。セッション終了時に、指定したオブジェクトにセッション内容をレコードとして作成します。
## 前提条件
* Unify GTM アカウント(API アクセス権限あり)
## API キーの作成
1. Unify GTM ダッシュボードの **Settings** > **API Keys** を開く
2. 新しい API キーを作成
3. API キーをコピー
## 設定
ダッシュボードの **インテグレーション** から新規作成し、タイプ「Unify GTM」を選択します。
| 項目 | 説明 |
| ----------- | --------------------------------------------- |
| API Key | Unify GTM の API キー |
| Object Name | レコードを作成する対象オブジェクト名(デフォルト: `turnint_sessions`) |
## 同期される内容
セッション完了時に、指定したオブジェクトに以下の情報を含むレコードが作成されます:
* **email** — セッション中に取得した訪問者のメールアドレス
* **sessionId** — セッション ID
* **sessionLink** — ダッシュボードのセッション詳細リンク
* **summary** — セッションの要約
* **userContext** — ユーザーコンテキスト情報
* **messages** — セッション内のメッセージ履歴
* **timestamp** — 同期日時
# Zendesk Sell 連携
Source: https://docs.timothe.ai/ja/integrations/crm.zendesk
Zendesk Sell と連携してコンタクトやセッションデータを同期する方法
セッションデータを [Zendesk Sell](https://www.zendesk.co.jp/sell/) に自動同期します。セッション終了時に、訪問者のメールアドレスをもとにコンタクトを検索・作成し、セッション内容をノートとして記録します。
## 前提条件
* Zendesk Sell アカウント
## 認証情報の作成
1. Zendesk Sell にログイン
2. **設定** > **統合** > **OAuth** を開く
3. **アクセストークン** を生成してコピー
## 設定
ダッシュボードの **インテグレーション** から新規作成し、タイプ「Zendesk Sell」を選択します。
| 項目 | 説明 |
| --------- | ----------------------------- |
| API Token | Zendesk Sell の OAuth アクセストークン |
## 同期される内容
* **コンタクト** — セッション中に取得したメールアドレスで Zendesk Sell のコンタクトを検索し、存在しなければ新規作成
* **ノート** — セッションの内容をコンタクトに紐づくノートとして作成
# Zoho CRM 連携
Source: https://docs.timothe.ai/ja/integrations/crm.zoho
Zoho CRM と連携してコンタクトやセッションデータを同期する方法
セッションデータを [Zoho CRM](https://www.zoho.com/jp/crm/) に自動同期します。セッション終了時に、訪問者のメールアドレスをもとにコンタクトを検索・作成し、セッション内容をノートとして記録します。
## 前提条件
* Zoho CRM アカウント
## 認証情報の作成
1. [Zoho API Console](https://api-console.zoho.com/) を開く
2. **Self Client** を作成(または既存のものを選択)
3. **Client ID** と **Client Secret** をコピー
4. **Generate Code** タブで以下のスコープを指定してコードを生成:
* `ZohoCRM.modules.contacts.READ` — コンタクトの検索
* `ZohoCRM.modules.contacts.CREATE` — コンタクトの作成
* `ZohoCRM.modules.notes.CREATE` — ノートの作成
5. 生成されたコードを使って Refresh Token を取得
## 設定
ダッシュボードの **インテグレーション** から新規作成し、タイプ「Zoho CRM」を選択します。
| 項目 | 説明 |
| --------------- | -------------------------------------------------------------------------- |
| Client ID | Zoho API Console の Client ID |
| Client Secret | Zoho API Console の Client Secret |
| Refresh Token | 生成した Refresh Token |
| Accounts Domain | Zoho のアカウントドメイン(例: `https://accounts.zoho.com`、`https://accounts.zoho.jp`) |
## 同期される内容
* **コンタクト** — セッション中に取得したメールアドレスで Zoho CRM のコンタクトを検索し、存在しなければ新規作成
* **ノート** — セッションの内容をコンタクトに紐づくノートとして作成
# ZoomInfo 連携
Source: https://docs.timothe.ai/ja/integrations/crm.zoominfo
ZoomInfo と連携してセッションデータを自動同期する方法
セッションデータを [ZoomInfo](https://www.zoominfo.com) に自動送信します。セッション終了時に、訪問者のメールアドレスやセッション内容を Webhook 経由で ZoomInfo に送信します。
## 前提条件
* ZoomInfo アカウント
## ZoomInfo 側の設定
### Webhook の作成
1. ZoomInfo で Workflows を開く
2. 新しいワークフローを作成し、Webhook トリガーを追加
3. 表示される **Webhook URL** をコピー
## Turnint ダッシュボードでの設定
ダッシュボードの **インテグレーション** から新規作成し、タイプ「ZoomInfo」を選択します。
| 項目 | 説明 |
| ----------- | ---------------------- |
| Webhook URL | ZoomInfo の Webhook URL |
## 送信されるデータ
セッション終了時に以下の JSON が ZoomInfo に送信されます。
| フィールド | 型 | 説明 |
| ------------- | -------------- | ----------------------------------- |
| `email` | string | セッション中に取得した訪問者のメールアドレス |
| `sessionId` | string | セッション ID |
| `sessionLink` | string | ダッシュボードのセッション詳細リンク |
| `agentId` | string | エージェント ID |
| `workspaceId` | string | ワークスペース ID |
| `summary` | string \| null | セッションの要約 |
| `userContext` | object | セッションに渡されたユーザーコンテキスト |
| `messages` | array | セッション中のメッセージ一覧(`role` と `text` を含む) |
| `timestamp` | string | 送信日時(ISO 8601 形式) |
メールアドレスがセッションコンテキストに含まれない場合、データは送信されません。
# トラッキングパラメータの自動保持
Source: https://docs.timothe.ai/ja/integrations/tracking-params
UTM パラメータ・広告クリック ID・クロスドメインパラメータを自動的にセッションに保存し、リンクへ引き継ぐ仕組み
ウィジェットが埋め込まれたページの URL に含まれるトラッキングパラメータ、および広告プラットフォームが設定する Cookie を**自動的に検出**し、セッションへの保存とリンクへの伝播を行います。追加の設定は不要です。
## 対応パラメータ
### UTM パラメータ
| パラメータ | 用途 |
| -------------- | -------------------------- |
| `utm_source` | 流入元(例: google, newsletter) |
| `utm_medium` | メディア種別(例: cpc, email) |
| `utm_campaign` | キャンペーン名 |
| `utm_term` | 検索キーワード |
| `utm_content` | 広告コンテンツの識別 |
### 広告クリック ID
| パラメータ | プラットフォーム |
| ----------- | -------------------------- |
| `gclid` | Google Ads |
| `gbraid` | Google Ads(プライバシー対応・アプリ) |
| `wbraid` | Google Ads(プライバシー対応・ウェブ) |
| `dclid` | DoubleClick |
| `fbclid` | Meta(Facebook / Instagram) |
| `msclkid` | Microsoft Ads |
| `ttclid` | TikTok Ads |
| `twclid` | X (Twitter) Ads |
| `epik` | Pinterest Ads |
| `sclid` | Snapchat Ads |
| `rdt_cid` | Reddit Ads |
| `li_fat_id` | LinkedIn Ads |
| `click_id` | MGID 等 |
| `clickid` | Mondiad 等 |
| `dicbo` | Outbrain |
| `tblci` | Taboola |
| `yclid` | Yahoo! 広告 |
| `vmcid` | Yahoo DSP(グローバル) |
| `ldtag_cl` | LINE Ads |
### クロスドメインパラメータ
| パラメータ | 用途 |
| ----- | --------------------- |
| `_gl` | GA4 クロスドメインリンカー |
| `_ga` | ユニバーサルアナリティクス クロスドメイン |
### CRM パラメータ
| パラメータ | 用途 |
| ----------- | --------------------- |
| `hubspotid` | HubSpot のコンタクト/リード識別子 |
`hubspotid` は大文字小文字の揺れ(`HubspotId` 等)と、アンダースコア表記(`hubspot_id`)も自動的に正規化され、`hubspotid` として保存されます。HubSpot Contact ID を表す `hs_contact_id` と `hscontactid` も同様に `hubspotid` として扱われます。
### 広告プラットフォーム Cookie
URL のクエリパラメータに加え、広告プラットフォームのタグ・ピクセルが設定する Cookie も自動的に読み取ります。
| Cookie 名 | プラットフォーム |
| ------------- | ------------------- |
| `_gcl_aw` | Google Ads (gclid) |
| `_gcl_dc` | DoubleClick (dclid) |
| `_gcl_gb` | Google Ads (gbraid) |
| `_fbc` | Meta (fbclid) |
| `_fbp` | Meta ブラウザ ID |
| `_ttp` | TikTok Pixel |
| `_epik` | Pinterest |
| `_uetmsclkid` | Microsoft Ads |
| `_scid` | Snapchat |
| `_rdt_uuid` | Reddit |
| `_li_fat_id` | LinkedIn |
### CRM プラットフォーム Cookie
HubSpot のトラッキングスクリプトが設定する Cookie も自動的に読み取ります。
| Cookie 名 | 用途 |
| ------------ | --------------------- |
| `hubspotutk` | HubSpot ユーザートークン |
| `__hstc` | HubSpot メイン解析 Cookie |
| `__hssc` | HubSpot セッション Cookie |
| `__hsfp` | HubSpot ブラウザフィンガープリント |
Cookie とクエリパラメータに同じキー名の値が存在する場合、クエリパラメータの値が優先されます。
## データフロー
```mermaid theme={null}
flowchart LR
A1["ページ URL
?utm_source=google&gclid=abc"] --> B["ウィジェット
自動検出"]
A2["Cookie
_gcl_aw, _fbp 等"] --> B
B --> C["セッション保存
context.sys.tracking"]
B --> D["リンク伝播
アクション・外部リンク"]
C --> E["ダッシュボード
Webhook"]
```
## セッションへの保存
ウィジェットがセッションを開始する際、Cookie およびページ URL からトラッキングパラメータを抽出し、セッションコンテキストの `sys.tracking` に保存します。
```json theme={null}
{
"context": {
"sys": {
"pageUrl": "https://example.com/lp?utm_source=google&gclid=abc123",
"referrer": "https://google.com",
"tracking": {
"utm_source": "google",
"gclid": "abc123",
"_gcl_aw": "GCL.1234567890.abc123",
"_fbp": "fb.1.1234567890.987654321"
}
}
}
}
```
保存されたトラッキングデータは以下から確認できます。
* **ダッシュボード** — セッション詳細画面
* **Webhook** — セッション開始イベントのペイロードに含まれます([Webhook 連携](/ja/integrations/webhook))
トラッキングパラメータはページ訪問ごとに URL と Cookie から取得されます。ゲートの設定やフォーム入力とは独立して、常に自動的に保存されます。
## リンクへの自動伝播
ウィジェット内に表示されるすべてのリンクに、検出されたトラッキングパラメータが自動的に付与されます。
* **リダイレクトアクション** — 遷移先 URL にパラメータが追加されます
* **埋め込みアクション** — 埋め込み元の URL にパラメータが追加されます
* **エージェントの回答内リンク** — 回答に含まれるリンクにもパラメータが追加されます
リンク先に同名のパラメータがすでに存在する場合は上書きしません。リンク側のパラメータが優先されます。
## 関連ドキュメント
* [GA4 連携 — クロスドメイン計測](/ja/integrations/analytics.ga4#クロスドメイン計測)
* [GTM 連携 — クロスドメイン計測](/ja/integrations/analytics.gtm#クロスドメイン計測)
* [Webhook 連携](/ja/integrations/webhook)
# ウェブフック連携
Source: https://docs.timothe.ai/ja/integrations/webhook
ウェブフックを使ってセッションイベントを外部サービスに通知する方法
セッションイベントを任意の HTTPS エンドポイントに HTTP POST で送信します。
## 設定
ダッシュボードの **インテグレーション** から新規作成し、タイプ「ウェブフック」を選択します。
| 項目 | 説明 |
| ----------- | ---------------------- |
| Webhook URL | イベント送信先の URL(HTTPS のみ) |
## イベント種別
以下のイベントが発生時に送信されます。
### `session-started`
セッションが開始されたとき。
```json theme={null}
{
"type": "session-started",
"payload": {
"agent": {
"id": "...",
"name": "..."
},
"session": {
"id": "...",
"context": { ... }
}
},
"metadata": {
"id": "...",
"invokedAt": "2026-01-01T00:00:00.000Z",
"workspaceId": "...",
"integrationId": "..."
}
}
```
### `user-message-sent`
ユーザーがメッセージを送信したとき。
```json theme={null}
{
"type": "user-message-sent",
"payload": {
"agent": {
"id": "...",
"name": "..."
},
"session": { "id": "...", "context": { ... } },
"message": { ... }
},
"metadata": { ... }
}
```
### `action-executed`
ユーザーがアクションを実行したとき。
```json theme={null}
{
"type": "action-executed",
"payload": {
"agent": {
"id": "...",
"name": "..."
},
"session": { "id": "...", "context": { ... } },
"action": { ... }
},
"metadata": { ... }
}
```
### `session-summarized`
セッションの要約が完了したとき。
```json theme={null}
{
"type": "session-summarized",
"payload": {
"agent": {
"id": "...",
"name": "..."
},
"session": {
"id": "...",
"context": { ... },
"summary": "セッションの要約テキスト",
"importance": "low" | "medium" | "high",
"transcript": "..."
}
},
"metadata": { ... }
}
```
## ペイロード構造
すべてのイベントには以下の共通フィールドがあります。
* **`type`** — イベント種別
* **`payload`** — イベント固有のデータ(エージェントID、セッション情報など)
* **`metadata`** — イベントメタデータ(イベントID、発生日時、ワークスペースID、インテグレーションID)
# Discord ウェブフック連携
Source: https://docs.timothe.ai/ja/integrations/webhook.discord
Discord ウェブフックでセッション通知を受け取る設定方法
[Discord](https://discord.com) の Webhook を使って、セッションイベントの通知を Discord チャンネルに送信します。
## 前提条件
Discord サーバーで Webhook を作成し、Webhook URL を取得してください。
1. Discord サーバーの **サーバー設定** > **連携サービス** > **ウェブフック** を開く
2. **新しいウェブフック** を作成
3. 通知先チャンネルを選択
4. **ウェブフック URL をコピー**(`https://discord.com/api/webhooks/...`)
## 設定
ダッシュボードの **インテグレーション** から新規作成し、タイプ「Discord」を選択します。
| 項目 | 説明 |
| ----------- | --------------------------------------- |
| Webhook URL | Discord の Webhook URL(`discord.com` のみ) |
### イベント設定
イベントごとに通知の有効/無効とカスタムメッセージを設定できます。
| イベント | 説明 |
| --------------------- | --------------- |
| On Session Started | セッション開始時に通知 |
| On Message Sent | ユーザーメッセージ送信時に通知 |
| On Action Executed | アクション実行時に通知 |
| On Session Summarized | セッション要約完了時に通知 |
各イベントで `message` フィールドにカスタムメッセージテンプレートを設定できます。
# n8n ウェブフック連携
Source: https://docs.timothe.ai/ja/integrations/webhook.n8n
n8n のワークフロー自動化から Turnint AI のセッション要約を受け取り、LLM で重要情報を抽出して Slack に通知する
[n8n](https://n8n.io/) のワークフロー自動化に Turnint AI のセッションイベントを流し込み、LLM で会話ログから重要情報を抽出して Slack に通知する構成の作り方です。
このレシピでは `session-summarized` イベントを使います。payload に `session.transcript`(会話ログの全文テキスト)と `session.summary`(要約)、`session.importance`(重要度)が含まれており、LLM に渡す素材として扱いやすいためです。payload の詳細は [ウェブフック連携](/ja/integrations/webhook) を参照してください。
## 前提条件
* Turnint 側でタイプ「ウェブフック」のインテグレーションが作成済みで、「**セッションが要約されたときに送信**」 のみ有効化されていること(他のイベントは無効)。作成方法は [ウェブフック連携](/ja/integrations/webhook) を参照。Webhook URL はこのあとのステップ 1 で発行する n8n の URL に差し替えます
* n8n のインスタンス([n8n Cloud](https://n8n.io/) または self-hosted)が稼働しており、ワークフロー作成権限があること
* Basic LLM Chain ノードで使う LLM プロバイダ(OpenAI / Anthropic など)の API キーを n8n の **Credentials** に登録済みであること
* 通知先の Slack ワークスペースが用意されていること
## 全体フロー
```mermaid theme={null}
flowchart LR
A["Turnint AI"] -->|"session-summarized"| B["n8n Webhook"]
B --> C["Basic LLM Chain"]
B --> M["Merge"]
C --> M
M --> D["Slack"]
```
1. Turnint AI でセッションが終了し、要約が完了すると `session-summarized` イベントが発火する
2. n8n の Webhook ノードがイベントを受信する
3. Basic LLM Chain ノードが transcript を読み、見込み顧客に関する重要情報を構造化して抽出する
4. Merge ノードが Webhook の元データ(要約・重要度など)と LLM の抽出結果を 1 つのアイテムに合流させる
5. Slack ノードがチャンネルに通知を投稿する
## ステップ 1: n8n 側で Webhook URL を用意する
n8n で新規ワークフローを作成し、先頭に **Webhook** ノードを追加します。
| 項目 | 値 |
| -------------- | ----------------------- |
| HTTP Method | `POST` |
| Path | 任意 |
| Response Mode | `Immediately` |
| Authentication | `Header Auth`(推奨・詳細は下記) |
ノードの **Production URL** をコピーします(`https://
/webhook/` の形式)。`Test URL` ではなく Production URL を使ってください。
self-hosted n8n の場合、Turnint AI からアクセスできる公開 URL になっている必要があります。ローカル開発中は ngrok などのトンネルツールで公開してください。
### Optional: 署名検証で送信元を確認する(推奨)
Turnint AI はすべての webhook リクエストに `X-Turnint-Signature` ヘッダを付けて送信します。値は連携ごとに一意な固定トークン(`sig_...`)で、ダッシュボードのウェブフック連携の詳細画面からコピーできます。
n8n の Webhook ノードで **Authentication** を `Header Auth` に設定し、以下の Credentials を作成してください。
| 項目 | 値 |
| ----- | -------------------------------------------------------------- |
| Name | `X-Turnint-Signature` |
| Value | ダッシュボードからコピーしたシグネチャ(例: `sig_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx`) |
これで、ヘッダの値が一致しないリクエストは Webhook ノードが自動で拒否するようになり、Turnint AI から送信された webhook であることを確認できます。
シグネチャは共有シークレットです。リポジトリや公開ドキュメントにそのまま貼り付けず、n8n の Credentials に登録して参照してください。万一漏洩した場合は、該当の連携を削除して新しく作成し直すことで新しいシグネチャが払い出されます。
## ステップ 2: Turnint のウェブフック連携に n8n の URL を設定する
事前に作成しておいたウェブフック連携を開き、**Webhook URL** をステップ 1 でコピーした n8n の Production URL に差し替えて保存します。
イベントは 「**セッションが要約されたときに送信**」 のみが有効になっていることを確認してください。
送られてくる payload の構造は以下の通りです(抜粋)。
```json theme={null}
{
"type": "session-summarized",
"payload": {
"agent": { "id": "...", "name": "..." },
"session": {
"id": "...",
"context": { ... },
"summary": "セッションの要約テキスト",
"importance": "low" | "medium" | "high",
"transcript": "..."
}
},
"metadata": { ... }
}
```
## ステップ 3: Basic LLM Chain で重要情報を抽出する
Webhook ノードの後ろに **Basic LLM Chain** ノードを追加します。
### モデル設定
Chat Model を任意の LLM に接続します。Credentials には事前に API キーを登録しておいてください。
### プロンプト例
transcript から見込み顧客に関する情報を JSON で抽出する日本語プロンプトの例です。
```
あなたは営業オペレーションのアシスタントです。以下の会話ログから、見込み顧客に関する情報を JSON 形式で抽出してください。不明な項目は null にしてください。
# ユーザー情報
{{ $json.body.payload.session.context.user.toJsonString() }}
# 会話ログ
{{ $json.body.payload.session.transcript }}
# セッション要約
{{ $json.body.payload.session.summary }}
```
`{{ $json.body.payload.session.transcript }}` の参照パスは、Webhook ノードが受信したデータ構造に合わせています。n8n 上で前のノードの出力をドラッグ&ドロップすれば自動で式が入ります。
## ステップ 4: Merge で元データと LLM 出力を合流させる
Slack のメッセージ本文では、Webhook payload に入っている **セッションコンテキスト**(例: `context.user.phone` のように、ゲートで入力されたユーザー情報)と **Basic LLM Chain の抽出結果** の両方を使いたいことが多いです。たとえば「この電話番号に必要なら架電してください」という通知に、LLM が抽出した会話のポイントを添える、というユースケースです。
n8n で複数ブランチのデータを 1 つの下流ノードに渡す最もシンプルな方法が **Merge** ノードです。**Webhook** ノードからもう 1 本線を引き、**Basic LLM Chain** と並列に **Merge** ノードへ接続します。
| 項目 | 値 |
| ---------------- | ------------------- |
| Mode | `Combine` |
| Combination Mode | `Merge By Position` |
Webhook と Basic LLM Chain はいずれも 1 アイテムずつ出力するため、位置ベースの Merge で 1 つのアイテムに統合され、下流の Slack ノードから両方のフィールドに `$json.xxx` でアクセスできるようになります。
## ステップ 5: Slack ノードで通知する
Merge ノードの後ろに **Slack** ノードを追加します。
Slack への接続方法は 2 通りあります。
* **Slack API の OAuth 接続**(推奨): n8n の Credentials から Slack OAuth2 を追加し、`chat:write` 権限を付与したチャンネルに投稿
* **Incoming Webhook**: Slack の Incoming Webhook URL を HTTP Request ノードから POST
Resource を `Message`、Operation を `Send` にして、Channel と Text を設定します。Merge 済みのアイテムから、セッションコンテキストと LLM の抽出結果を両方参照できます。
````
user: {{ $json.body.payload.session.context.user.phone }} に必要であれば架電してください。
情報:
```{{ $json.text }}```
````
`context.user.phone` の参照パスはゲートで `phone` フィールドを入力値として設定している場合の例です。ゲートで設定したキー名に合わせて `context.user.` を書き換えてください。
## 動作確認
1. n8n 側でワークフローを **Active** に切り替える
2. Turnint AI のダッシュボードから対象エージェントのセッションを実際に発生させ、セッション終了後の要約処理が走るまで待つ
3. n8n の **Executions** タブで Webhook 受信と各ノードの成功を確認する
4. Slack チャンネルに通知が届くことを確認する
うまく届かない場合は、n8n の Executions の各ノード出力を開いて `$json.body.payload` の構造を確認し、Basic LLM Chain / Slack ノードの参照式と一致しているかをチェックしてください。
## 応用のヒント
同じワークフローに If ノードを足せば重要度で分岐、HTTP Request ノードや Salesforce / HubSpot ノードを繋げれば CRM への自動登録、別チャンネル通知などもすぐに組めます。
## 関連ドキュメント
* [ウェブフック連携](/ja/integrations/webhook) — イベント種別と payload 仕様
* [Slack ウェブフック連携](/ja/integrations/webhook.slack) — Turnint から直接 Slack に送るシンプルなレシピ
# Slack ウェブフック連携
Source: https://docs.timothe.ai/ja/integrations/webhook.slack
Slack ウェブフックでセッション通知を受け取る設定方法
[Slack](https://slack.com/intl/ja-jp) の Incoming Webhook を使って、セッションイベントの通知を Slack チャンネルに送信します。
## 前提条件
Slack ワークスペースで Incoming Webhook を作成し、Webhook URL を取得してください。
1. [Slack API](https://api.slack.com/apps) でアプリを作成(または既存アプリを使用)
2. **Incoming Webhooks** を有効化
3. **Add New Webhook to Workspace** から通知先チャンネルを選択
4. 生成された Webhook URL(`https://hooks.slack.com/...`)をコピー
## 設定
ダッシュボードの **インテグレーション** から新規作成し、タイプ「Slack」を選択します。
| 項目 | 説明 |
| ----------- | -------------------------------------------------- |
| Webhook URL | Slack の Incoming Webhook URL(`hooks.slack.com` のみ) |
### イベント設定
イベントごとに通知の有効/無効とカスタムメッセージを設定できます。
| イベント | 説明 |
| --------------------- | --------------- |
| On Session Started | セッション開始時に通知 |
| On User Message Sent | ユーザーメッセージ送信時に通知 |
| On Action Executed | アクション実行時に通知 |
| On Session Summarized | セッション要約完了時に通知 |
各イベントで `message` フィールドにカスタムメッセージテンプレートを設定できます。
# Microsoft Teams ウェブフック連携
Source: https://docs.timothe.ai/ja/integrations/webhook.teams
Microsoft Teams ウェブフックでセッション通知を受け取る設定方法
[Microsoft Teams](https://www.microsoft.com/ja-jp/microsoft-teams/group-chat-software) の Incoming Webhook を使って、セッションイベントの通知を Teams チャンネルに送信します。
## 前提条件
Microsoft Teams で Incoming Webhook を作成し、Webhook URL を取得してください。
1. Teams チャンネルの **コネクタ** または **ワークフロー** を開く
2. **Incoming Webhook** を追加
3. 名前とアイコンを設定
4. **Webhook URL をコピー**(`https://xxx.webhook.office.com/webhookb2/...`)
## 設定
ダッシュボードの **インテグレーション** から新規作成し、タイプ「Microsoft Teams」を選択します。
| 項目 | 説明 |
| ----------- | -------------------------------------------- |
| Webhook URL | Teams の Webhook URL(`webhook.office.com` のみ) |
### イベント設定
イベントごとに通知の有効/無効とカスタムメッセージを設定できます。
| イベント | 説明 |
| --------------------- | --------------- |
| On Session Started | セッション開始時に通知 |
| On Message Sent | ユーザーメッセージ送信時に通知 |
| On Action Executed | アクション実行時に通知 |
| On Session Summarized | セッション要約完了時に通知 |
各イベントで `message` フィールドにカスタムメッセージテンプレートを設定できます。
# Claude Code で使う
Source: https://docs.timothe.ai/ja/mcp/claude.code
Turnint MCP サーバーを Claude Code から利用する方法
Under construction...
# Claude Cowork で使う
Source: https://docs.timothe.ai/ja/mcp/claude.cowork
Turnint MCP サーバーを Claude Cowork から利用する方法
Under construction...
# Model Context Protocol (MCP)
Source: https://docs.timothe.ai/ja/mcp/index
MCP を使って AI ツールから Turnint のナレッジベースにアクセスする方法
Under construction...
# ログインセッションの管理
Source: https://docs.timothe.ai/ja/security/session-management
ダッシュボードのログインセッションを確認・管理する方法
ワークスペース管理者は、メンバーのログインセッションを一覧で確認し、必要に応じて一括破棄できます。不審なアクセスの検知やセキュリティインシデント発生時に活用してください。
## セッション一覧の確認
1. ダッシュボードの **設定 > セキュリティ** を開く
2. 「セッション」セクションで現在のセッション一覧を確認する
各セッションには以下の情報が表示されます。
* **メンバー** — セッションの所有者
* **デバイス** — ログインに使用されたブラウザ・OS
* **IPアドレス** — 接続元のIPアドレス
* **最終アクティブ** — 最後にアクティビティがあった日時
* **有効期限** — セッションの有効期限
## 全セッションの破棄
1. 「全セッションを破棄」ボタンをクリックする
2. 確認ダイアログで操作を承認する
実行すると、自分を含むワークスペースの全メンバーが即座にログアウトされます。
## 注意事項
* セッション管理はワークスペース管理者のみ利用できます。
* 全セッション破棄後は、全メンバーが再ログインする必要があります。
* 有効期限が切れたセッションは自動的に一覧から非表示になります。
# 二段階認証
Source: https://docs.timothe.ai/ja/security/two-factor-auth
アカウントの二段階認証 (2FA) を設定してセキュリティを強化する方法
ワークスペース単位でメールによる二段階認証(2FA)を有効化できます。有効にすると、ワークスペースのメンバーはログイン後にメールで届く確認コードを入力するまでワークスペースにアクセスできなくなります。
## 有効化
1. ダッシュボードの **設定 > ワークスペース** を開く
2. 「二段階認証(メール)」のトグルをオンにする
設定の変更はワークスペース管理者のみ可能です。
## 注意事項
* 二段階認証はワークスペース全体に適用されます。メンバー個別に設定することはできません。
* 認証の有効期間が切れた場合、再度確認コードの入力が必要になります。
# アカウント別提案
Source: https://docs.timothe.ai/ja/use-cases/account-proposal
アカウント専用のエージェントで、社内の全ステークホルダーに自律的に提案する
Turnint AI にアカウント専用の提案資料をアップロードするだけで、その企業に特化したエージェントが生まれます。リンクを共有すれば、社内の誰がアクセスしても、その人の立場や関心に合わせて自律的に提案を行います。
## 活用シーン
* **大型案件の提案** — 複数のステークホルダー(経営層、技術担当、現場担当)がそれぞれの視点でエージェントと対話し、自分に必要な情報を得られる
* **コンペ・入札対応** — 評価者ごとの関心事項が対話データとして可視化され、提案の改善に活かせる
* **既存顧客へのアップセル** — 既存の利用状況に合わせた提案資料でエージェントを作成し、新しいソリューションを案内
## 得られるインサイト
アカウント内の全ステークホルダーとの対話データが記録されるため、営業チームはこれまで見えなかった社内の検討状況を把握できます。
* 誰がアクセスし、何に関心を持ったか
* 各ステークホルダーの懸念事項
* アカウント全体としての検討の進捗と温度感
詳しくは [Agentic ABM](/ja/gtm/account-based-marketing) を参照してください。
# 広告のリンク先をエージェントにする
Source: https://docs.timothe.ai/ja/use-cases/ad-landing
広告のランディングページをエージェントに置き換え、クリックした瞬間から対話を始める
広告のリンク先を Turnint AI のエージェントにすることで、見込み顧客が広告をクリックした瞬間から対話が始まります。LP → フォーム → 資料ダウンロードという従来のフローを、一つの対話体験に置き換えます。
## 従来の広告導線の課題
```mermaid theme={null}
flowchart LR
A[広告クリック] --> B[LP]
B --> C[フォーム入力]
C --> D[資料DL]
D --> E((一人で読む))
B --> F((離脱))
C --> G((離脱))
D --> H((離脱))
```
各ステップで離脱が発生し、最終的に商談化するのはごく一部です。しかも、LP やフォームを通過しても、見込み顧客の本当の関心や課題は分かりません。
## エージェントをリンク先にする
```mermaid theme={null}
flowchart LR
A[広告クリック] --> B[エージェントと対話開始]
B --> C[ヒアリング + 説明]
C --> D[課題・関心を把握]
D --> E[最適な CTA を提示]
```
* **LP が不要** — エージェントが対話の中で LP の役割(説明・訴求・誘導)を果たす
* **フォームの離脱が減る** — プログレッシブゲーティングで、関心が高まったタイミングでフォームを表示
* **即座にデータ取得が始まる** — クリックした瞬間から対話データが蓄積される
## 広告クリエイティブとの連動
広告のクリエイティブやターゲティングに合わせて、別々のエージェントを用意することも可能です。
* **課題訴求の広告** → その課題に特化した資料を持つエージェント
* **事例訴求の広告** → 該当業界の導入事例を持つエージェント
* **機能訴求の広告** → 特定機能の詳細資料を持つエージェント
広告のメッセージと対話の文脈が一致するため、見込み顧客の体験に一貫性が生まれ、コンバージョン率の向上が期待できます。
## 広告最適化へのフィードバック
エージェントとの対話データは、広告施策の改善にも活用できます。どの広告経由の見込み顧客がどういう課題を持ち、どの程度商談化したかが分かるため、ターゲティングとクリエイティブの精度を継続的に高められます。
詳しくは [広告ターゲティングの最適化](/ja/use-cases/ad-targeting) を参照してください。
# 広告ターゲティングの最適化
Source: https://docs.timothe.ai/ja/use-cases/ad-targeting
対話データから得られるインサイトで、広告のターゲティングとクリエイティブを最適化する
Turnint AI の対話データは、広告施策に活用できるインサイトの宝庫です。「どういう課題を持った人がコンバージョンしやすいか」「どんなメッセージが刺さるか」が、見込み顧客自身の言葉から見えてきます。
## 従来の広告最適化の限界
従来の広告最適化で使えるフィードバックデータは限られています。
* **属性データ** — 業種、役職、企業規模など。「IT業界の部長」レベルの粒度
* **行動データ** — クリック、ページ遷移、滞在時間。「何をしたか」は分かるが「なぜ」は分からない
* **コンバージョン有無** — CV したかどうか。CV に至った理由は不明
## 対話データによるターゲティング
Turnint AI のエージェントとの対話から、これまで取得できなかったインサイトが得られます。
* **どういう課題を持った人が商談化しやすいか** — 対話の中で語られた具体的な課題と、その後の行動を紐付けられる
* **どの検討段階の人がコンバージョンしやすいか** — 情報収集段階 vs 比較検討段階 vs 導入判断段階
* **どんなメッセージが響くか** — 見込み顧客が反応したトピックや表現
これにより、「IT業界の部長」ではなく「マーケ担当がいなくて、何から手をつければいいか分からない経営者」というレベルでペルソナを描けるようになり、広告のターゲティングとクリエイティブの精度が大きく向上します。
# 新規事業の需要検証
Source: https://docs.timothe.ai/ja/use-cases/demand-validation
事業を立ち上げる前に、AIエージェントで想定顧客の反応と需要を検証する
Turnint AI を使えば、新規事業やサービスを立ち上げる前に、想定顧客とAIエージェントを対話させて市場の反応を検証できます。プロダクトを作る前に「本当に求められているか」を確かめることで、投資判断の精度が上がります。
## 従来の需要検証の課題
* **アンケートでは本音が見えない** — 選択式の回答では表面的な関心しか分からず、課題の深さや緊急度が把握できない
* **MVP 構築にコストがかかる** — 需要が不確かなまま開発を始めると、時間と費用を無駄にするリスクがある
* **仮説検証に時間がかかる** — ユーザーインタビューの設計・実施・分析に数週間〜数ヶ月を要する
* **サンプルが偏る** — 知人や既存顧客からのフィードバックだけでは、市場全体の需要を反映できない
## AI エージェントによる需要検証
エージェントに新サービスのコンセプトを学習させ、想定顧客との対話を通じて需要を検証します。
1. **コンセプト説明** — エージェントがサービスの概要・価値を対話形式で伝える
2. **課題ヒアリング** — 「今どうやって解決していますか?」「どのくらい困っていますか?」と深掘りする
3. **価格感度の確認** — 関心が高い場合、価格帯や支払い意欲を自然な対話の中で確認する
4. **CTA で本気度を測る** — ウェイトリスト登録、デモ予約、事前申し込みなど、行動で関心を可視化する
## 活用シーン
* **新規 SaaS の検証** — ランディングページにエージェントを設置し、想定顧客の反応を対話データとして収集する
* **新サービスのコンセプトテスト** — 複数のコンセプトをそれぞれ別のエージェントに持たせ、どちらの反応が良いかを比較する
* **新市場への参入調査** — 新しいターゲット層にエージェントを当て、課題の有無や競合状況をヒアリングする
* **社内の新規事業提案** — 対話データを定量的な根拠として、経営層への提案に活用する
## 得られるインサイト
* **顧客が実際に感じている課題** — アンケートでは出てこない具体的なペインポイント
* **価格帯の許容範囲** — どの価格なら検討するか、どこで離脱するか
* **競合との比較ポイント** — 想定顧客が現在使っているツールや代替手段
* **セグメント別の需要差** — 業種・規模・役職によって関心や課題がどう異なるか
これらのデータを事業計画に反映することで、「作ったけど売れない」リスクを大幅に減らせます。
# 資料請求フローの改善
Source: https://docs.timothe.ai/ja/use-cases/document-request
資料請求を対話体験に変え、見込み顧客の理解度と商談化率を向上させる
Turnint AI を資料請求の導線に組み込むことで、「フォーム → 資料ダウンロード → 一人で読む」という従来のフローを、エージェントとの対話体験に変えられます。見込み顧客は資料の内容をその場で理解でき、企業側はヒアリング済みのリードを獲得できます。
## 従来の資料請求フローの課題
```mermaid theme={null}
flowchart LR
A[資料請求ページ] --> B[フォーム入力]
B --> C[資料DL / メール送付]
C --> D((一人で読む))
D --> E((問い合わせ or 離脱))
B --> F((離脱))
```
* **フォームの離脱** — 資料を読む前に個人情報の入力が求められ、離脱率が高い
* **資料を一人で読む** — 不明点があっても質問できず、理解が浅いまま検討が止まる
* **フォローが遅れる** — 資料ダウンロード後のインサイドセールスの架電まで時間が空き、温度感が下がる
* **関心が見えない** — どのページを読んだか、何に興味を持ったかが分からない
## エージェントによる資料請求体験
```mermaid theme={null}
flowchart LR
A[資料請求ページ] --> B[エージェントと対話開始]
B --> C[資料の内容を対話で説明]
C --> D[質問に即座に回答]
D --> E[関心に応じた CTA を提示]
```
* **対話しながら理解** — エージェントが資料の内容を見込み顧客の関心に合わせて説明するため、理解度が上がる
* **質問にその場で回答** — 「他社との違いは?」「導入期間は?」といった疑問にリアルタイムで答えられる
* **プログレッシブゲーティング** — 関心が高まったタイミングでフォームを表示し、離脱を最小化する
* **即座にインサイト取得** — 対話の中で見込み顧客の課題や関心が明らかになる
## 得られるインサイト
エージェントとの対話データから、以下の情報が自動的に蓄積されます。
* **関心のある資料・トピック** — どの資料のどの部分に時間をかけたか
* **具体的な課題** — 見込み顧客が自ら語った課題やペインポイント
* **検討段階** — 情報収集か、比較検討か、導入判断段階か
* **次のアクション** — デモ希望、見積もり依頼、追加資料の要望など
これらの情報を営業に引き渡すことで、商談の質とスピードが大きく向上します。詳しくは [インサイドセールスの効率化](/ja/use-cases/inside-sales) を参照してください。
# インサイドセールスの効率化
Source: https://docs.timothe.ai/ja/use-cases/inside-sales
ヒアリング済みのリードを営業に引き渡し、商談の質とスピードを向上させる
Turnint AI を活用すると、営業担当は「ヒアリングが完了した状態」のリードを受け取ることができます。見込み顧客の課題、関心、温度感を把握した状態で商談に臨めるため、初回商談の質とスピードが大きく変わります。
## 従来のインサイドセールスの課題
* **情報不足** — フォーム入力の情報(名前、会社名、役職)だけでは、商談の準備ができない
* **ヒアリングの重複** — 資料を見た後にまた一からヒアリングが必要
* **属人性** — ヒアリングの質が担当者のスキルに依存する
* **タイミング** — リードの温度が高いうちにアプローチできない
## Turnint AI によるインサイドセールス
AI エージェントが事前にヒアリングを完了しているため、営業担当はリードの以下の情報を把握した状態で商談に入れます。
* **課題・ペインポイント** — 見込み顧客が自ら語った具体的な課題
* **関心領域** — どのトピックに時間をかけたか、何を質問したか
* **検討段階** — 情報収集段階か、比較検討段階か、導入判断段階か
* **温度感** — エンゲージメントの強さ、CTA への反応
営業担当は「はじめまして、御社の課題を教えてください」ではなく、「〇〇の課題について、こういう解決策をご提案できます」から商談を始められます。
# 採用候補者のナーチャリング
Source: https://docs.timothe.ai/ja/use-cases/recruitment
会社説明資料をエージェントにして、採用候補者の理解促進とフォローアップを自動化する
Turnint AI は営業だけでなく、採用領域でも活用できます。会社説明資料や採用ピッチをエージェントにすることで、候補者が自分のペースで会社を理解し、疑問を解消できる体験を提供します。
## 活用シーン
* **会社説明会の代替・補完** — 会社説明資料をエージェントにして、候補者がいつでも対話しながら会社を知れる。説明会に参加できなかった候補者にもリーチできる
* **スカウト後のフォローアップ** — スカウトメールにエージェントのリンクを添付。候補者が関心を持ったタイミングで、自分のペースで情報収集できる
* **選考中の候補者ナーチャリング** — 選考プロセスの途中で候補者の関心や懸念が変化しても、エージェントがその都度対応する
## 得られるインサイト
候補者との対話データから、採用チームは以下を把握できます。
* **候補者の関心領域** — 技術スタック、カルチャー、キャリアパス、福利厚生など、何に関心を持っているか
* **懸念事項** — どんな点を不安に感じているか
* **温度感** — どの程度本気で検討しているか
候補者ごとの関心と懸念が可視化されるため、面談では候補者が本当に知りたいことに集中できます。
# ホワイトラベルの概要
Source: https://docs.timothe.ai/ja/whitelabel/index
ホワイトラベル機能を使って自社ブランドでエージェントを提供する方法
Turnint AI のホワイトラベル機能を使うと、自社のプロダクトに Turnint AI の AI エージェント基盤を OEM として組み込むことができます。エンドユーザーには Turnint AI のブランドを意識させることなく、シームレスに AI エージェントの管理・運用環境を提供できます。
## ユースケース
* **SaaS プロバイダー** — 自社 SaaS の管理画面から、顧客ごとに AI エージェントの設定・管理画面を提供する
* **代理店・リセラー** — 顧客企業ごとにワークスペースを自動作成し、独立した環境を提供する
* **社内プラットフォーム** — 部門やチームごとに分離された AI エージェント環境を構築する
## 仕組み
ホワイトラベル連携は **Partner API** を通じて行います。
```mermaid theme={null}
graph LR
A[あなたのシステム] -->|Partner API| B[Turnint AI]
B --> C[ワークスペース A]
B --> D[ワークスペース B]
B --> E[ワークスペース C]
A -->|namespace で自動マッピング| C
```
### Partner API キー
Partner API の認証には専用の API キー(`ptn_sk_` プレフィクス)を使用します。API キーは Turnint AI チームから発行されます。
### namespace とワークスペース
ホワイトラベル連携の中心となるのが `namespace` の概念です。`namespace` はあなたのシステム内のテナント(顧客・組織など)を Turnint AI のワークスペースに紐付けるキーとして機能します。
* 初めての `namespace` を指定すると、ワークスペースが自動作成されます
* 同じ `namespace` は常に同じワークスペースに解決されます
* ワークスペース内のエージェント、ナレッジ、セッション履歴などはすべて分離されます
### ロールベースのアクセス制御
パートナーセッション作成時にユーザーのロールを指定できます。
| ロール | 説明 |
| -------- | ------------------ |
| `admin` | ワークスペースの全機能にアクセス可能 |
| `member` | 制限されたアクセス権限 |
パートナーごとに使用可能なロールが制限されており、許可されていないロールは指定できません。
## 機能一覧
| 機能 | 説明 | ページ |
| ----------- | ------------------------ | --------------------------------------- |
| 署名付きログイン連携 | ログイン画面なしでダッシュボードにアクセス | [詳細](./signed-session-handoff) |
| セッション無効化 | namespace 単位でセッションを一括無効化 | [詳細](./signed-session-handoff#セッション無効化) |
| ワークスペース一覧取得 | パートナーに紐付くワークスペースの一覧を取得 | — |
## はじめ方
1. **Turnint AI チームに連絡** — ホワイトラベル利用を申請し、パートナーアカウントを発行してもらいます
2. **API キーを取得** — 発行された Partner API キーを安全に保管します
3. **署名付きログイン連携を実装** — [署名付きログイン連携](./signed-session-handoff) を参照して、セッション作成とリダイレクトを実装します
4. **テスト** — テスト用の `namespace` でセッション作成からダッシュボードアクセスまでの一連のフローを確認します
# 署名付きログイン連携
Source: https://docs.timothe.ai/ja/whitelabel/signed-session-handoff
署名付きトークンを使ってダッシュボードへのシームレスなログイン連携を実装する方法
Turnint AI のダッシュボードをマルチテナントシステムにホワイトラベルとして組み込むための仕組みです。エンドユーザーは Turnint AI のログイン画面を経由せず、シームレスにダッシュボードへアクセスできます。
## フロー概要
```mermaid theme={null}
sequenceDiagram
participant Partner as あなたのシステム
participant API as Turnint API
participant Browser as ユーザーのブラウザ
participant Dashboard as Turnint ダッシュボード
Partner->>API: POST /partner/v1/auth/sessions
(API キー認証)
API-->>Partner: loginUrl + workspaceId
Partner->>Browser: loginUrl へリダイレクト
Browser->>Dashboard: /partner-login?code=ptn_ac_xxx
Dashboard->>API: POST /partner-auth/v1/exchange
{ code }
API-->>Dashboard: Set-Cookie: ptn_session=xxx
Dashboard->>Browser: ワークスペースへリダイレクト
Note over Browser,Dashboard: ログイン完了
```
1. あなたのサーバーから Partner API キーを使ってセッション作成エンドポイントを呼び出します。
2. Turnint AI はワンタイム認証コード付きのログイン URL を返します。
3. ユーザーのブラウザをそのログイン URL にリダイレクトします。
4. ダッシュボードが認証コードを自動的に検証し、セッションを発行します。
5. ユーザーはログイン画面を経由せず、ダッシュボードにアクセスできます。
## 前提条件
* Partner API キー(`ptn_sk_xxxx`)が発行済みであること
## API リファレンス
### セッション作成
```
POST /partner/v1/auth/sessions
Authorization: Bearer ptn_sk_xxxxxxxx
Content-Type: application/json
```
#### リクエストボディ
| フィールド | 型 | 必須 | 説明 |
| ------------ | -------- | --- | --------------------------------------- |
| `namespace` | `string` | はい | テナントを識別する一意の文字列(1〜100文字) |
| `role` | `string` | はい | ユーザーのロール(`admin` または `member`) |
| `ttlSeconds` | `number` | いいえ | セッションの有効期間(秒)。60〜86400。省略時はパートナーのデフォルト値 |
#### リクエスト例
```json theme={null}
{
"namespace": "tenant-abc",
"role": "admin",
"ttlSeconds": 3600
}
```
#### レスポンス
```json theme={null}
{
"loginUrl": "https://dashboard.turnint.ai/partner-login?code=ptn_ac_xxxxxxxx",
"workspaceId": "ws_xxxxxxxx",
"expiresAt": "2026-03-10T13:00:00.000Z"
}
```
| フィールド | 型 | 説明 |
| ------------- | -------- | ---------------------- |
| `loginUrl` | `string` | ユーザーをリダイレクトさせるログイン URL |
| `workspaceId` | `string` | 作成または紐付けられたワークスペースの ID |
| `expiresAt` | `string` | セッションの有効期限(ISO 8601) |
### セッション無効化
指定した namespace のすべてのセッションを無効化します。
```
DELETE /partner/v1/auth/sessions
Authorization: Bearer ptn_sk_xxxxxxxx
Content-Type: application/json
```
#### リクエストボディ
| フィールド | 型 | 必須 | 説明 |
| ----------- | -------- | -- | ---------------- |
| `namespace` | `string` | はい | 無効化対象の namespace |
#### レスポンス
```json theme={null}
{
"revokedCount": 3
}
```
## 実装例
### Node.js / TypeScript
```typescript theme={null}
const response = await fetch("https://api.turnint.ai/partner/v1/auth/sessions", {
method: "POST",
headers: {
Authorization: `Bearer ${PARTNER_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
namespace: "tenant-abc",
role: "admin",
}),
});
const { loginUrl } = await response.json();
// ユーザーのブラウザをリダイレクト
res.redirect(loginUrl);
```
### cURL
```bash theme={null}
curl -X POST https://api.turnint.ai/partner/v1/auth/sessions \
-H "Authorization: Bearer ptn_sk_xxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"namespace": "tenant-abc", "role": "member"}'
```
## namespace とワークスペース
`namespace` はパートナーのテナントと Turnint AI のワークスペースを紐付けるキーです。
* 同じ `namespace` で複数回セッションを作成しても、同一のワークスペースが使用されます。
* 新しい `namespace` を指定すると、自動的に新しいワークスペースが作成されます。
## セキュリティ
* **認証コードはワンタイム** — 1 回使用されると即座に無効化されます。
* **認証コードの有効期限は 5 分** — 発行後 5 分以内にリダイレクトを完了してください。
* **ロール制限** — パートナーに許可されたロールのみ指定可能です。許可されていないロールを指定すると `400 Bad Request` が返されます。
## エラーレスポンス
| ステータスコード | 説明 |
| -------- | -------------------------------- |
| `400` | リクエストが不正(バリデーションエラー、許可されていないロール) |
| `401` | API キーが無効、またはパートナーが無効 |
| `500` | サーバー内部エラー |