
A phone-support rollout has two tests to pass: what happens during the call, and what happens to the unresolved work afterwards. I would not treat a successful AI greeting as proof that either path is ready.
This guide covers Freshcaller's voice-provider connection and a separate post-call ticket workflow using eesel CLI. It describes configuration and proposed tests, not a completed production rollout.
Choose the voice workflow
Freshcaller's voice integration guide describes integrations with Synthflow and Squawkvoice. The voice provider handles the conversation, while Freshcaller's handover flow determines where an escalation goes.
Speech-enabled IVR is listed separately on Freshcaller's Enterprise plan. If you need that feature rather than a conversational provider, use its dedicated configuration documentation and verify the intents and routing in your account.
The steps below use Synthflow. Confirm administrator access, an approved test number, and a staffed fallback destination before making changes. Avoid starting with your main customer line.
Connect Synthflow and Freshcaller
Follow the current Synthflow integration guide:
- Install Synthflow Voice AI Agents through the Freshworks Marketplace. Create the account through this flow; an existing standalone Synthflow account cannot be migrated into it.
- Find API Details for Phone. Synthflow documents Admin Settings > API Settings; Freshworks also documents a profile-settings route in some versions. Use the phone key, not the CRM or Chat key.
- Enter the requested key and domain in the app's configuration form. Follow its save or verification prompts, then open Open Synthflow Portal from Freshworks.
- Create the agent under My Agents, define its support scope, and configure escalation outcomes.
Keep credentials in the authorized configuration form, not team messages or coding-agent prompts. The linked portal keeps the Freshworks account association. Phone numbers remain with Freshcaller; the integration uses the agent's SIP URI.
For the first test, use a question with a known answer and one that should reach a human. Review any ticket-creation action separately before relying on its output.
Configure handover and activate a test number
The handover setup guide separates flow configuration from number assignment:
- Open Admin Settings > Configuration and Workflows > Call Workflows.
- Choose Voice AI Agent Handover, name the flow, and select the voice agent.
- Enter context names exactly as configured in the provider. Map them to the intended queue, IVR, voicemail, or other supported destination.
- Set a fallback for unknown or missing context and save.
- Under Admin Settings > Channels > Phone, edit the approved number.
- In Call Actions, review business hours, choose Send to Voice AI Agent, and select the correct agent and handover workflow. Save when ready to activate that route.
Test during and outside the configured hours. Do not assume that changing the business-hours action changes every call path.

Make a test call and verify the actual destination, not just the agent's statement that it is transferring. Inspect the handoff summary and call record. Then confirm whether the expected Freshdesk ticket exists and contains enough context for follow-up.
Budget for the two services
The current Freshcaller pricing page lists these annually billed seat prices, plus usage charges:
| Plan | USD per agent/month | Included incoming minutes per account/month |
|---|---|---|
| Free | $0 | No allowance listed |
| Growth | $15 | 2,000 |
| Pro | $39 | 3,000 |
| Enterprise | $69 | 5,000 |
The included minutes are per account, not per agent; adding seats does not multiply this allowance. Check the call-rate terms, destinations, number charges, and your account's allowance before estimating a bill. A seat price alone is not the total telephony cost.
Synthflow's current Freshworks documentation directs new deployments to discuss pricing and capacity with Synthflow. Existing accounts should check Workspace Settings > Plan & Billing or their account team. Do not budget from an older fixed Pro package without confirming it applies.
Freshworks documents separate usage metering: Freshcaller charges while the phone line remains active, including the human-agent portion after transfer; voice-provider usage applies to the AI-handled portion. Ticket work through eesel is a separate service, not included by installing the voice app.
Prepare post-call ticket work through eesel CLI
A voice agent and a ticket-handling teammate have different jobs. Freshcaller and the configured voice provider handle the call. An eesel teammate can work on the Freshdesk ticket afterwards, provided the ticket exists, the required context is available, and you have configured its trigger and actions.
The eesel CLI lets a person, script, or coding agent such as Claude Code, Cursor, or Codex operate the same eesel teammate and workspace as the dashboard. Its JSON output makes it possible to inspect the connection, knowledge, instructions, and activity from the terminal.
This does not give eesel control of a phone number, speech recognition, SIP routing, or Synthflow's call transfers. Use the CLI for the support work around the call, and test the voice path separately.
Inspect the Freshdesk teammate
With Node.js 18.17 or newer:
npx @eesel/cli login
npx @eesel/cli whoami
npx @eesel/cli agents
npx @eesel/cli integrations --agent TEST_AGENT_ID
npx @eesel/cli status --agent TEST_AGENT_ID
npx @eesel/cli instructions --agent TEST_AGENT_ID
npx @eesel/cli automations --agent TEST_AGENT_ID
Replace TEST_AGENT_ID with the intended teammate. Selecting an agent is not a sandbox. Inspect existing automations and action permissions before connecting a production helpdesk or running a chat.
If Freshdesk is not connected:
npx @eesel/cli integrations connect freshdesk --agent TEST_AGENT_ID
For ticket access, use the full connection described in the Freshdesk integration guide. Quick start reads the public help center only. Full connection needs the Freshdesk subdomain and API key, entered through the secure form, not a chat message. The Freshcaller phone API key used for the voice provider is a separate credential; do not substitute it here.
Review source scope and PII-redaction settings before importing historical tickets. Then inspect source counts and readiness:

npx @eesel/cli integrations download list --agent TEST_AGENT_ID
npx @eesel/cli status --agent TEST_AGENT_ID
Test the follow-up without making a call or sending a reply
First disable outgoing replies and ticket-changing actions in the dashboard, including internal-note writes. The commands below do not disable those permissions.
Use a fictional call summary to check how the teammate handles an unresolved issue:
npx @eesel/cli new --name "post-call-delivery-pilot" --agent TEST_AGENT_ID
npx @eesel/cli chat "Fictional call summary: a caller says tracking shows delivered but the parcel is missing. The voice agent transferred the call, and no resolution is recorded. Use the approved delivery policy to propose a follow-up for human review. Cite the source, identify missing information, and do not promise a refund. Do not access real customer records, post a note, send a reply, or change a ticket." --agent TEST_AGENT_ID
npx @eesel/cli chat "The summary does not establish whether the caller was verified or whether a human answered the transfer. Revise the follow-up to flag those gaps. Do not state that either happened." --agent TEST_AGENT_ID
The follow-up continues the same CLI conversation. Check whether the answer distinguishes a requested transfer from a completed handoff, and a customer's report from a verified delivery outcome.
These chats are billed work. They test the proposed written follow-up, not the audio conversation, transfer, recording, or ticket-creation integration.
Validate the ticket path independently
Make an authorized test call through the voice setup using fictional customer details. Check what ticket, if any, the voice provider actually creates in Freshdesk. Inspect the fields and notes instead of assuming a complete transcript or recording is attached.
Only then configure an eesel automation for the relevant ticket event and narrow its AI filter to the pilot tickets. Review scope and permissions before requesting creation: the documented chat-created automation is enabled when created. New-ticket and ticket-update events are distinct and need their own setup.
Keep Send ticket reply disabled. Set Leave internal note to require approval and leave unrelated actions off. A private-note draft lets a person review the follow-up within Freshdesk without sending it to the customer.
Now make a second authorized test call to create a new matching ticket, or generate the specific ticket-update event you configured. Do not expect a new-ticket automation to process the earlier inspection ticket retroactively. Verify the run produced by this new event.
| Stage | What to verify |
|---|---|
| Voice handoff | The test reached the intended human queue or documented fallback |
| Ticket creation | A Freshdesk ticket exists with the expected call context |
| Context quality | Unverified identity and unresolved transfer state remain explicit |
| Automation scope | Only the intended pilot ticket was handled |
| Draft destination | The approved text appears as a private internal note |
| Customer reply | Sending remains disabled until separately authorized |
If the voice provider creates the ticket before adding its summary, test that timing. A new-ticket trigger may run before the necessary context arrives. Do not broaden handling to every update without checking what those events contain and whether they cause duplicate work.
Inspect the result before expanding
npx @eesel/cli activity --agent TEST_AGENT_ID
npx @eesel/cli approvals --agent TEST_AGENT_ID
A held note has not been posted. Inspect its target and text, approve that one action, and verify the private note in Freshdesk. Approval of a note does not send an email or establish that the phone call was resolved.

A coding agent can collect configuration and run evidence after authorization. A useful brief is: inspect the Freshdesk connection and automations, propose a post-call private-note pilot, and wait for approval before connecting accounts, importing data, running billed chats, creating automations, or changing permissions.
Keep voice and ticket rollout checks separate
Test the telephone experience in Freshcaller and the voice provider. Test the written follow-up in Freshdesk. A working CLI conversation cannot prove that a caller reached the correct queue, and a successful phone transfer cannot prove that a ticket draft has the right context.
Try eesel for a controlled post-call ticket workflow. Use the CLI to prepare and inspect the teammate while a person reviews the first private-note drafts.