Freshdesk コネクター

Freshdesk を Tajo 経由で Brevo に接続し、サポートとマーケティングのデータを統合します。顧客サポートチケット、コンタクトプロファイル、満足度スコアを同期して、サポートでのやり取りに基づくターゲットコミュニケーションを実現できます。

概要

項目
プラットフォームFreshdesk
カテゴリーサポート
セットアップ難易度簡単
公式統合なし
同期データチケット、コンタクト、エージェント、カンパニー
利用可能なスキル6

機能

  • コンタクト同期 - Freshdesk コンタクトを Brevo コンタクトリストに双方向同期
  • チケットイベント追跡 - チケットの作成、更新、解決イベントを Brevo へ転送
  • CSAT 同期 - 顧客満足度スコアを Brevo のコンタクト属性として同期
  • カンパニー同期 - Freshdesk カンパニーを Brevo のコンタクトセグメンテーションにマッピング
  • エージェントデータ - 内部ワークフロー自動化のためにエージェント割り当てを追跡
  • カスタムフィールド - Freshdesk のカスタムチケット・コンタクトフィールドを Brevo 属性にマッピング

前提条件

開始する前に、以下をご用意ください。

  1. 管理者アクセス権付きの Freshdesk アカウント
  2. Freshdesk API キー (プロファイル設定で確認可能)
  3. Freshdesk ドメイン (例: yourcompany.freshdesk.com)
  4. API アクセス付きの Brevo アカウント
  5. API 認証情報を持つ Tajo アカウント

認証

API キー認証

Freshdesk は HTTP Basic 認証で API キー認証を行います。API キーをユーザー名として使用し、パスワードには任意の文字列 (通常は X) を設定します。

Terminal window
curl -u "YOUR_API_KEY:X" \
https://yourcompany.freshdesk.com/api/v2/tickets

または Authorization ヘッダーで Base64 エンコードを使用します。

Terminal window
curl https://yourcompany.freshdesk.com/api/v2/tickets \
-H "Authorization: Basic BASE64_ENCODED_API_KEY:X" \
-H "Content-Type: application/json"

API キーの確認方法

  1. Freshdesk アカウントにログイン
  2. 右上のプロファイル画像をクリック
  3. プロファイル設定へ移動
  4. 右側に API キーが表示されます

設定

基本セットアップ

connectors:
freshdesk:
enabled: true
domain: "yourcompany.freshdesk.com"
api_key: "your-freshdesk-api-key"
# Data sync options
sync:
contacts: true
tickets: true
companies: true
satisfaction_ratings: true
# Brevo list assignment
lists:
all_support_contacts: 30
open_tickets: 31
resolved_tickets: 32

コンタクトフィールドマッピング

Freshdesk コンタクトフィールドを Brevo 属性にマッピングします。

contact_mapping:
email: email
name: FULLNAME
phone: SMS
company_id: COMPANY
job_title: JOB_TITLE
twitter_id: TWITTER
language: LANGUAGE
time_zone: TIMEZONE
# Support metrics
total_tickets: TICKET_COUNT
open_tickets: OPEN_TICKETS
avg_csat: CSAT_SCORE
last_ticket_date: LAST_SUPPORT_DATE
# Custom fields
custom_fields.account_type: ACCOUNT_TYPE
custom_fields.subscription_tier: PLAN

チケットイベントマッピング

Freshdesk チケットイベントを Brevo オートメーショントリガーにマッピングします。

ticket_events:
ticket_created: "support_ticket_created"
ticket_updated: "support_ticket_updated"
ticket_resolved: "support_ticket_resolved"
ticket_closed: "support_ticket_closed"
ticket_reopened: "support_ticket_reopened"
satisfaction_rated: "csat_submitted"
note_added: "support_note_added"

API エンドポイント

メソッドエンドポイント説明
GET/api/v2/tickets全チケット一覧
POST/api/v2/ticketsチケットを作成
GET/api/v2/tickets/{id}特定のチケットを取得
PUT/api/v2/tickets/{id}チケットを更新
DELETE/api/v2/tickets/{id}チケットを削除
GET/api/v2/contacts全コンタクト一覧
POST/api/v2/contactsコンタクトを作成
PUT/api/v2/contacts/{id}コンタクトを更新
GET/api/v2/companies全カンパニー一覧
GET/api/v2/agents全エージェント一覧
GET/api/v2/surveys/satisfaction_ratingsCSAT 評価一覧
GET/api/v2/search/tickets?query=チケット検索

コード例

Freshdesk コネクターの初期化

import { TajoClient } from '@tajo/sdk';
const tajo = new TajoClient({
apiKey: process.env.TAJO_API_KEY,
brevoApiKey: process.env.BREVO_API_KEY
});
// Connect Freshdesk account
await tajo.connectors.connect('freshdesk', {
domain: 'yourcompany.freshdesk.com',
apiKey: process.env.FRESHDESK_API_KEY
});

コンタクトを Brevo に同期

// Fetch Freshdesk contacts and sync to Brevo
const response = await fetch(
'https://yourcompany.freshdesk.com/api/v2/contacts?page=1&per_page=100',
{
headers: {
'Authorization': 'Basic ' + btoa(`${API_KEY}:X`),
'Content-Type': 'application/json'
}
}
);
const contacts = await response.json();
// Each contact:
// {
// "id": 12345,
// "name": "Jane Kim",
// "email": "[email protected]",
// "phone": "+15551234567",
// "company_id": 678,
// "job_title": "Product Manager",
// "created_at": "2024-01-15T10:30:00Z"
// }

チケットイベントを追跡

// Set up Freshdesk webhook to forward ticket events
// Configure in Freshdesk Admin > Automations > Webhook
// Webhook handler
app.post('/webhooks/freshdesk', async (req, res) => {
const { ticket, event_type } = req.body;
await tajo.connectors.handleWebhook('freshdesk', {
topic: event_type,
payload: {
ticketId: ticket.id,
subject: ticket.subject,
status: ticket.status,
priority: ticket.priority,
requesterEmail: ticket.requester.email,
createdAt: ticket.created_at
}
});
res.status(200).send('OK');
});

顧客別のチケット検索

// Search for all tickets from a specific customer
const query = encodeURIComponent('"email:[email protected]"');
const response = await fetch(
`https://yourcompany.freshdesk.com/api/v2/search/tickets?query=${query}`,
{
headers: {
'Authorization': 'Basic ' + btoa(`${API_KEY}:X`)
}
}
);
const { results, total } = await response.json();

レート制限

プラン制限詳細
Sprout50 リクエスト/分無料プラン
Blossom200 リクエスト/分スタータープラン
Garden400 リクエスト/分グロースプラン
Estate700 リクエスト/分プロプラン
Forest1,000 リクエスト/分エンタープライズプラン

その他の制限:

リソース制限
リストエンドポイント1 クエリあたり 30 ページ
1 ページあたり最大 100 レコード
Search API2 リクエスト/秒
バルク操作1 リクエストあたり 10 レコード

レート制限ヘッダー

Freshdesk はレスポンスヘッダーにレート制限情報を返します。X-RateLimit-Remaining を監視し、上限に近づいた際はバックオフを実装してください。

トラブルシューティング

問題原因解決策
401 UnauthorizedAPI キーが無効Freshdesk プロファイル設定で API キーを確認
403 Forbidden権限不足API キーが管理者アカウントに属していることを確認
コンタクトが同期されないメールフィールド欠落Freshdesk コンタクトにはメールアドレスが必須
チケットが表示されないドメインが誤りFreshdesk のドメイン URL が正しいことを確認
検索結果が空クエリ構文エラーFreshdesk の検索クエリ構文でダブルクォートを使用
429 Too Many Requestsレート制限超過プラン階層に合わせたレート制限を実装
カスタムフィールドが欠落フィールドが有効化されていないFreshdesk 管理画面でカスタムフィールドを有効化

ベストプラクティス

  1. リアルタイム同期には Webhook を使用 - Freshdesk オートメーションを設定してチケットイベント発生時に Webhook をトリガー
  2. CSAT スコアを同期 - セグメンテーション用に顧客満足度評価を Brevo 属性として追跡
  3. チケットステータスをリストにマッピング - チケットステータスに応じてコンタクトを Brevo リスト間で自動移動
  4. サポートメトリクスを追跡 - コンタクトごとのチケット数、平均応答時間、解決率を同期
  5. Search API の使用は控えめに - Search API は厳しいレート制限があるため、可能な限り結果をキャッシュ
  6. 大規模エクスポートはページング - 初期同期では pageper_page パラメータでページネーションを使用

セキュリティ

  • API キー認証 - API キーによるシンプルな HTTP Basic 認証
  • HTTPS 限定 - すべての API 通信で TLS 暗号化が必須
  • IP ホワイトリスト - Estate および Forest プランで利用可能
  • ロールベースアクセス - API キーの権限はエージェントロールに紐づく
  • SOC 2 Type II - Freshdesk は SOC 2 Type II 認証取得済み
  • GDPR 準拠 - データのエクスポートおよび削除リクエストをサポート

関連リソース

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AIアシスタント

こんにちは!ドキュメントについて何でもお聞きください。