60秒以内にすべてのリードへ電話するGoHighLevel AI音声エージェントの構築方法


スピード・トゥ・リードの自動化とは、新規リードがフォームを送信した瞬間に電話がかかり、選別され、競合他社に電話する前に予約まで完了する仕組みです。(スピード・トゥ・リードが重要な理由を知りたい場合は、まずそちらをご覧ください。)本ガイドでは、GoHighLevel と Retell AI を使ってこの仕組みを構築します。GoHighLevel のフォームがワークフローを起動し、ワークフローがアウトバウンドコールを開始し、AI音声エージェントが GoHighLevel のカレンダーに直接予約を入れます。
例として、架空の空調設備(HVAC)会社「Comfort Air Demo」を使います。住宅所有者がエアコン交換の見積もりを依頼すると、数秒以内に電話が鳴り、エージェントが機器の不具合の内容、持ち家かどうか、交換希望時期を尋ねます。その後、実際の空き状況を確認し、30分の相談を予約します。構築で使うプロンプトはすべてこのページに掲載しており、そのままコピーできます。テキストやメールだけでなく、電話で動く自動リードフォローアップの仕組みが完成します。
以下の動画では、同じ構築手順を最初から最後まで紹介しています。このページの手順とプロンプトは動画と一致しているため、別タブで開いてコピーしながら進められます。
5つのシステムが決まった順序で連携します:
チームの誰も手を触れる必要はありません。リードが企業と最初に接点を持つのはAIによるアウトバウンドコールで、その通話は予約の確定で終わります。これは ISpeedToLead が大規模に運用しているのと同じパターンです。詳しくはISpeedToLead が24時間365日のリード対応をスケールさせた方法をご覧ください。
エージェントは実際のカレンダーに予約を入れるため、まずカレンダーを作成します。GoHighLevel でCalendars → Calendar Settingsを開き、予約を受けたいアポイント用の新しいカレンダーを作成します。ミーティングの長さ(本構築では30分)、予約URL、対応可能時間を設定します。
対応可能時間は見た目以上に重要です。エージェントはこのカレンダーで空きとして表示される枠しか提案できないため、営業時間が狭いと、どの通話相手にも同じ3つの時間帯しか案内できません。
フォームは手動でも作成できますが、GoHighLevel AI Studio なら1つのプロンプトでフォームとランディングページを作成できます。AI Studio を開き、自社の情報に置き換えたうえで次の内容を貼り付けてください:
架空のHVAC事業者であるComfort Air Demoのリード獲得ページを作成または更新してください。このプロジェクトにすでにページがある場合は、既存のデザインを維持してください。
見出しは「エアコン交換の見積もりを依頼する」にしてください。First Name、Phone、ZIP Code、Service Neededの各項目を含め、デモ用の選択肢としてAC replacementを設定してください。First NameとPhoneは必須にしてください。米国の電話番号表示マスクを追加し、発信に使用する連絡先の電話番号に国番号が含まれるようにしてください。ボタンのラベルは「見積もりを依頼する」にしてください。
サポートされているCRM連携フローを通じて、フォームを私のGHLサブアカウントに接続してください。4つの項目がそれぞれコンタクトにどのようにマッピングされるかを示してください。送信後には「ありがとうございます!お問い合わせについて、AIアシスタントからまもなくお電話いたします。」と表示してください。
カレンダーピッカーや2つ目の予約ステップは表示しないでください。既存のHvac予約カレンダーはそのまま維持してください。予約は通話中にRetellエージェントが行います。サイトにwebhook受信機能は追加しないでください。GHLからRetellへの通話ワークフローは別途設定します。
手動で行う必要がある接続手順を特定し、フォームの公開方法とテスト方法を教えてください。検証済みの項目と、まだテストが必要な項目を報告してください。
最も重要なのは国番号に関する一文です。Retell は+15551234567のようなE.164形式で発信します。(555) 123-4567の形式で保存するフォームでは、ワークフローは起動しても通話は失敗します。
フォームには同意文言を残してください。動画のフォームでは、送信することで見積もりに関する折り返し電話を受けることに同意する旨が記載されています。米国ではリードへのAI電話はTCPAの対象となるため、実際のトラフィックに適用する前にAIアウトバウンドコールに関するTCPAルールをお読みください。
AI Studio から、フォームをCRMに接続するかどうか尋ねられます。「はい」と答えると、送信内容から GoHighLevel のコンタクトが作成されます。ページを公開し、スタンドアロンURLを開いてフォームが動作することを確認してください。
Retell は2つの値で GoHighLevel に接続します。Private Integration トークンと、サブアカウントのLocation IDです。接続でサポートされる内容はすべてRetell の GoHighLevel 連携ページで確認できます。
動画ではデモを短くするためにすべてのスコープを選択しています。実際のアカウントでは、この構築で使うものだけを付与してください:
| スコープ | 対象範囲 |
|---|---|
contacts.readonly、contacts.write | 接続テスト、コンタクトの検索、通話後のメモ |
calendars.readonly | Check Availability、およびツール設定時のカレンダー一覧表示 |
calendars/events.readonly、calendars/events.write | アポイントの予約、変更、キャンセル |
locations/customFields.readonly | Service NeededやZIP Codeなどのカスタムフィールドの読み取り |
スコープの全リストはGoHighLevel 接続ドキュメントに記載されています。後でツールの設定ダイアログが空で表示される場合、原因はほぼ確実にスコープの不足です。
Retell のAIコパイロット「Conductor」がエージェントを構築します。エージェントの内容を説明すると、Conductor が計画を提案し、承認するまで何も変更されません。Conductor を開いて次の内容を貼り付けてください:
架空のHVAC会社向けに、「Comfort Air Demo Speed to Lead」という名前の新しいアウトバウンド用カンバセーションフロー型音声エージェントを下書きとして作成してください。このエージェントは、エアコン交換の見積もりを依頼するGHLフォームを送信した直後の人にフォローアップします。目的は、依頼内容を選別し、見積もりカレンダーに30分の電話相談を予約することです。
次の受信ダイナミック変数を使用してください:{{first_name}}、{{service_requested}}、{{zip_code}}、{{ghl_contact_id}}。デモのタイムゾーンにはAmerica/New_Yorkを使用し、予約前にリードのタイムゾーンを確認してください。変数が欠けている場合は、プレースホルダーを読み上げずに自然に尋ねてください。
最初の発話:こんにちは、{{first_name}}様。Comfort Air DemoのAIアシスタント、Alexです。先ほど{{service_requested}}についてご依頼いただきました。いくつか簡単なご質問をさせていただいてもよろしいでしょうか?
応答は短くし、質問は一度に1つずつ行ってください。エアコンの状態、持ち家かどうか、交換希望時期を確認してください。すでに提供されている情報は活用してください。見積もり相談に関心がある場合は、希望の日時を尋ね、実際の空き状況を確認し、空いている候補を提示し、相手が枠を選んでから予約してください。正確な日付、時刻、タイムゾーンは、予約ツールが成功した後にのみ確認してください。
通話相手が話を遮ったり希望を変更したりできるようにしてください。相手が別人だった場合は謝罪し、リードの詳細をそれ以上明かさずに通話を終了してください。断られた場合や今後の電話を拒否された場合は、案内を中止してその結果を記録してください。希望の枠が空いていない場合は代替案を提示してください。予約に失敗した場合は、確定していないことを伝え、フォローアップが必要であることを記録してください。価格、アポイント、完了したアクションを決して捏造しないでください。
このデモでは、留守番電話の場合は通話を終了するよう設定してください。
会話ステップと関数ステップにラベルを付けた、わかりやすいフローを作成してください。提案する変更内容をレビュー用に表示してください。不足しているツール接続や手動設定があれば特定してください。エージェントは下書きのままにし、電話は発信しないでください。
4つのダイナミック変数によって、エージェントは誰に電話しているかを把握します。GoHighLevel のワークフローが通話開始時にこれらの値を入力するため、エージェントはリードの名前と依頼されたサービスに触れて会話を始めます。
Conductor は、通話フロー、サンプル通話への対応方法、データフィールドを含む計画を返します。続行するよう返信すると、Book Consultationサブフローを備えたエージェントの下書きが作成されます。この時点の予約ツールはプレースホルダーなので、次に実際の GoHighLevel ツールに置き換えます。
Conductor の最初の下書きでは、どのカレンダーを使うか判断できないため、空き状況確認と予約にプレースホルダーのカスタム関数を使用します。エージェントの関数を開き、ネイティブのGoHighLevel ツールを追加してください:
その後、残りの設定を Conductor に任せます:
Book Consultationサブフロー内のプレースホルダーであるcheck_availabilityとbook_appointmentのカスタム関数を、先ほど追加したGoHighLevelのCheck AvailabilityツールとBook Appointmentツールに置き換え、どちらもHvac予約カレンダーに設定してください。Book Appointmentでは、コンタクトIDとして{{ghl_contact_id}}を使用する必要があります。プレースホルダーのrecord_outcomeカスタム関数は削除してください。結果は代わりに通話後分析から取得するようにします。
通話後分析のフィールドとして、call_outcome(booked、declined、wrong_person、do_not_call、voicemail、follow_up_needed)、ac_issue、owns_home、replacement_timeline、appointment_bookedを追加してください。appointment_bookedは予約が成功した場合にのみtrueにしてください。Create Noteを使って、通話の要約と結果を同じGHLコンタクトに保存する通話後ワークフローを設定してください。wrong-personとdo-not-callの結果は、外部ワークフローで処理できるよう保持してください。
提案する変更内容を表示してください。ネイティブツール、カレンダーの選択、フィールドのマッピング、通話後ステップのいずれかを直接設定できない場合は、正確な手動手順を教えてください。まだ接続されていないものは明確に示してください。認証情報を捏造したり、ダミーのendpointを使用したりしないでください。
変更内容を確認して承認します。通話後のメモは GoHighLevel の Create Note ツールを通話後関数として使用するため、すべての通話でリードのコンタクトレコードに要約が残ります。結果フィールドは通話後分析から取得されます。
シミュレーションテストでは、シナリオを演じるAI電話エージェントを相手にエージェントを実行するため、実際のリードより先に不具合のある経路を見つけられます。Conductor に次のように依頼してください:
このエージェント用に、次の6つのケースでシミュレーションテストスイートを作成して実行してください:住宅所有者が予約に成功する、リードが通話中に希望日を変更する、別人が応答する、電話拒否のリクエスト、予約ツールのエラー、空き枠なし。各ケースについて、実行前に合格の条件を示してください。結果を表形式で表示し、失敗またはエラーになったものについては原因を説明し、レビュー用に修正案を提示してください。
収録した構築では、初回の実行で6件中5件が合格しました:
| テストケース | 初回実行 |
|---|---|
| 住宅所有者が予約に成功する | 合格 |
| リードが通話中に希望日を変更する | 合格 |
| 別人が応答する | 合格 |
| 電話拒否のリクエスト | 合格 |
| 予約ツールのエラー | 合格 |
| 空き枠なし | エラー |
このエラーは実際の欠陥でした。空き状況の応答が空の場合の経路がフローに存在しなかったのです。修正用プロンプト:
「空き枠なし」のケースでエラーが発生しました。Check Availabilityが空き枠を返さなかった場合の経路を追加してください:その時間帯には空きがないことを通話相手に伝え、別の日を確認するよう提案し、再試行は最大3回までとし、その後チームからの折り返し電話を提案してfollow_up_neededを記録してください。変更内容をレビュー用に表示し、その後そのテストのみを再実行してください。
シミュレーションの実行はLLMの使用量に応じて課金され、Conductor は開始前に確認を求めます。スイートの構築方法と料金についてはConductor によるテストをご覧ください。すべてのケースが合格になったら、エージェントを公開します。
最後に、通話を開始する部分を作成します。GoHighLevel でAutomation → Workflowsを開き、Build with AIをクリックします。山かっこ内の2つのプレースホルダーを置き換えて、次の内容を貼り付けてください:
「Comfort Air Demo: Form to Retell Call」という名前のワークフローを下書きとして作成してください。
既存のComfort Air Demo見積もりフォームが送信されたら、そのコンタクトの情報を使ってRetellにアウトバウンドコールのリクエストを1件すぐに送信してください。
トリガーにはAI Studio Form Submittedを使用し、対象のプロジェクトと見積もりフォームに絞り込んでください。このフォームがExternal Trackingを使用している場合は、代わりに検証済みの送信トリガーを使用してください。フォームを特定できない場合は、その選択を未設定のままにし、何を選択すべきか教えてください。
「Start Retell Call」という名前のCustom Webhookアクションを1つ追加してください:URL https://api.retellai.com/v2/create-phone-call、メソッドPOST、Content-Type application/json、Authorization Bearerトークン。認証情報は私が入力するので空欄にしておいてください。以下のJSONボディを使用してください。
Service NeededとZIP Codeは、私のアカウントにある実際のコンタクトフィールドを使ってマッピングしてください。フィールドキーを捏造しないでください。コンタクトに電話番号がある場合にのみ処理を続行してください。自分の番号でデモを繰り返せるよう、再エントリーを許可してください。
Retellがリードを選別し、既存のHvac予約カレンダーに予約を入れます。このワークフローは未公開のままにしてください。手動で入力する必要があるフィールドや認証情報をすべて示し、テスト済みであるとは記載しないでください。
webhookのボディ:
{
"from_number": "",
"to_number": "{{contact.phone}}",
"override_agent_id": "",
"retell_llm_dynamic_variables": {
"first_name": "{{contact.first_name}}",
"service_requested": "",
"zip_code": "",
"ghl_contact_id": "{{contact.id}}",
"system_timezone": "America/New_York"
}
} from_numberは Retell で所有している電話番号、override_agent_idはテスト後に公開したエージェントです。Service NeededとZIP Codeのフィールドには GoHighLevel の変数ピッカーを使用し、リテラルのテキストではなく実際の値に置き換わるようにしてください。ダイナミック変数の値はすべて文字列である必要があります。
フォームに合ったトリガーを選択してください。GoHighLevel のSitesフォームビルダーで作成したフォームはForm Submittedトリガーを使用します。AI Studio で作成したフォームはAI Studio Form Submittedを使用するか、フォームがその方法で送信を報告する場合は外部トラッキングトリガーを使用します。ワークフローのそれ以外の部分は同じです。
完成したワークフローは、フォームトリガー、電話番号のチェック、通話を開始するwebhookの3つの要素で構成されます。
webhookアクションに赤い感嘆符が表示される。GoHighLevel のAIビルダーはJSONボディを入力しますが、webhookのURLフィールドは空のままにします。URLにhttps://api.retellai.com/v2/create-phone-callを貼り付け、AuthorizationをBearerに設定して Retell のAPIキーを入力し、保存します。これでエラーが解消されます。
実行ログに「Failed, Retry Limit Reached」と表示される。ワークフローのExecution Historyを開き、失敗した実行をクリックし、webhookステップを開いて Retell からのレスポンスを確認します。よくある原因は次のとおりです(発生しやすい順):
1つずつ修正し、フォームを再送信してください。ワークフローで再エントリーが許可されているため、自分の番号でテストを続けられます。
ワークフローを公開し、フォームを開いて自分の電話番号で送信します。1分以内に電話が鳴るはずです。住宅所有者として応答して枠を選び、次の3か所を確認してください:GoHighLevel カレンダー上のアポイント、Retell の通話履歴にある通話録音と文字起こし、GoHighLevel のコンタクトに残されたメモ。
3つすべてが揃っていれば、そのフォームから届く新規リードは、競合他社のフォームに入力する前に必ず電話を受けられるようになります。
接続でサポートされている内容はRetell と GoHighLevel の連携で、Retell が予約に対応しているその他のカレンダーについてはAIによるアポイント予約でご確認ください。
1分以内、通常は数秒です。フォームが送信された瞬間にワークフローが起動し、webhookが届くとすぐに Retell が発信を開始します。収録したデモでは、確認メッセージの読み込みが終わる前に電話が鳴りました。
いいえ。この構築では、フォーム、コンタクト、カレンダー、ワークフローに GoHighLevel を、音声エージェントと通話に Retell AI を使用します。GoHighLevel に組み込まれているVoice AIは別の製品です。GoHighLevel をCRMとして使い続けながら、ノード単位のカンバセーションフロー、公開前のシミュレーションテスト、独自に定義した通話後分析フィールドを活用したい場合に、チームは Retell のエージェントを選んでいます。
はい。Retell のネイティブな GoHighLevel ツールは、接続されたサブアカウントのカレンダーで空き状況を確認し、アポイントを予約します。アポイントはコンタクトに紐づけられ、ステータス「confirmed」で作成されます。
エージェントは謝罪し、リードの詳細を伝えずに通話を終了します。電話拒否のリクエストを受けた場合は案内を中止します。どちらの結果も通話後分析に記録され、コンタクトのメモに書き込まれるため、チームが対応できます。
はい。Conductor プロンプト内の会社名、サービス、選別用の質問と、AI Studio プロンプト内のフォーム項目を変更してください。コンサルテーションを予約するサービス業であれば、ワークフローとwebhookはそのまま使えます。
AI搭載の音声エージェントに切り替えることで、あなたのビジネスがどれだけ節約できるかをご確認ください。
Total Human Agent Cost
AI Agent Cost
Estimated Savings
Retell クリニックオフィスのデモ電話番号

Start building smarter conversations today.




