# Configure submit_callback in ElevenLabs

This is a dashboard setup reference, not an importable ElevenLabs agent export. The n8n workflow is the importable JSON file.

## Before connecting

Configure and test the n8n workflow using START-HERE.md. Hosted ElevenLabs needs a publicly reachable HTTPS URL. Localhost and a private LAN address will not work. Use the active/published production webhook URL after setup, not the temporary test URL.

## Webhook tool

- Name: submit_callback
- Description: Submit a confirmed non-emergency callback request. Use only after the caller confirms the details and explicitly agrees to a callback. This tool does not book, reschedule, cancel, transfer or dispatch anything.
- Method: POST
- URL: your n8n production URL ending in /webhook/build-callback-v1 (copy the actual URL from n8n).
- Content-Type: application/json
- Header: X-Build-Key. Store its value as a secret in ElevenLabs and use the same value in your n8n Header Auth credential. Never put it in the system prompt or a public file.
- Response timeout: 20 seconds is a starting configuration; test it with your mail server. A timeout is ambiguous and must not trigger automatic retries.

## JSON body parameters (all supplied by the conversation)

| Field | Type | Required | Description |
|---|---|---|---|
| name | string | yes | Confirmed caller name, 1-100 characters |
| phone | string | yes | Confirmed number with country code, + followed by 8-15 digits; spaces and parentheses are normalized |
| service_area | string | yes | Area the caller gave, 1-120 characters |
| job_description | string | yes | Factual non-emergency request, 1-1000 characters |
| preferred_callback_time | string | no | Caller's preference, at most 200 characters; empty if absent, never a promised appointment |
| consent_to_callback | boolean | yes | true only after explicit agreement to submit the confirmed details |

Do not add recipient addresses, sender addresses, URLs, or instructions to the tool body. The operator sets email routing in n8n.

## Tool results

- HTTP 200: {"ok":true,"status":"submitted","message":"Callback request accepted by the mail server. A callback time is not confirmed."}
- HTTP 400: {"ok":false,"status":"invalid_request","message":"Check the required callback details."}
- HTTP 502: {"ok":false,"status":"handoff_failed","message":"The callback request could not be submitted."}
- Authentication errors and malformed JSON may use n8n's own error format. Treat any non-success or unexpected result as unconfirmed.

SMTP acceptance does not prove inbox delivery. Verify the actual operator inbox during setup and again during voice acceptance. No callback deadline or appointment is confirmed by this tool.

## Agent setup

Paste receptionist-system-prompt.txt as the system prompt. Add sample-business.md as the knowledge document for practice. Set its suggested first message. Choose a voice and model currently offered in your account, then test in the browser before connecting a phone number. The kit does not require one particular paid voice/model.

## Official references (checked 7 September 2026)

- https://elevenlabs.io/docs/eleven-agents/customization/tools/webhook-tools
- https://elevenlabs.io/docs/eleven-agents/customization/tools
- https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/

An in-call webhook tool and an ElevenLabs post-call webhook are different interfaces. This kit uses the in-call tool above. Do not configure its sample payload as a post-call event handler.

## Voice configuration is part of the test

The starter intentionally uses plain speech. Audio-tag behavior depends on the selected voice model and settings; do not paste arbitrary tags into every turn and assume they work. Test interruption, pacing, names and phone-number readback with the chosen voice. Configure supported languages explicitly and test them before offering multilingual coverage. The prompt does not enable a transfer, calendar or SMS tool by mentioning one.

Official model-specific guidance: https://elevenlabs.io/docs/eleven-agents/customization/voice/expressive-mode
