How do I integrate MyOperator with Freshdesk and manage the Freshdesk API key safely?
The integration pushes every incoming or outgoing MyOperator call into Freshdesk as a ticket—complete with caller details, agent information, and a recording link—then auto-assigns it to the matching agent (via email match). To set it up, you need:
- Your MyOperator Company ID and an After-Call webhook (POST JSON).
- Freshdesk domain and API key (found in Profile → Settings).
- Matching agent e-mails in both tools.
- One-time user sync, then test: answered call → assigned to agent; missed call → unassigned or fallback.
When should I use this guide?
Use it to automatically track calls in Freshdesk, eliminate manual ticket creation, or rotate an API key without breaking the MyOperator connection.
What this integration does
- Automatic ticket creation (inbound): Every incoming call via MyOperator becomes a ticket automatically.
- Click-to-call (outbound): Call buttons in Freshdesk dial via MyOperator; outcome and recording log back to the ticket.
- Agent/team assignment: Ticket routes to the right agent/group; fallback if no match.
- Detailed call logs: Activity shows status, start/end time, duration, department, and recording URL.
Prerequisite checklist
Item | Where to find it | Required? |
|---|---|---|
MyOperator Company ID | MyOperator → Manage → API | Yes |
Freshdesk domain | Browser URL | Yes |
Freshdesk API key | Profile → Settings → API | Yes |
After-Call webhook ON | MyOperator → API & Webhook → Calling Webhooks | Yes |
Matching agent e-mails | Freshdesk Agents ↔ MyOperator Users | Yes |
Find & secure your Freshdesk API key
Mint UI (most accounts)
- Sign in: https://yourdomain.freshdesk.com
- Click your avatar (top-right) → Profile Settings.
- In “Your API Key” panel, click Show → Copy.
Classic UI (older accounts)
Avatar (top-right) → Your Profile → API Key panel → Show → Copy.
Security and rotation best practices:
- Treat the key like a password; store it in a password manager.
- Rotate the key if it was ever shared in chat or email.
- After rotation, update all integrations that used the old key.
Architecture at a glance
Flow | Trigger | Where configured | Result in Freshdesk |
|---|---|---|---|
Inbound | Customer calls your MyOperator number | MyOperator → Freshdesk connector/webhook | New ticket with call metadata + optional recording URL |
Outbound | Agent clicks to call from Freshdesk | Freshdesk UI/extension → MyOperator | Call placed; outcome/recording logged back to ticket |
Step-by-step setup
- Enable After-Call webhook
- MyOperator → API & Webhooks → Calling Webhooks → Add Webhook → After-Call.
- Method: POST
- Content-Type: application/json
- URL: your Freshdesk listener
- Connect Freshdesk
- MyOperator → Integrations → Freshdesk → Connect. Enter Company ID, Freshdesk domain, API key, and optional filters.
- Sync agents
- Click Sync Users and confirm agent e-mails match exactly.
- Test
- Place a call.
- A ticket should appear in Freshdesk in ≤ 3 s with the correct agent assigned. Expected toast: “Integration successful.”
Integration flow logic
- Validate Freshdesk domain + API key.
- Sync agents from Freshdesk → MyOperator.
- MyOperator sends After-Call webhook (POST JSON).
- Freshdesk API creates a ticket.
- Auto-assignment engine matches agent e-mail; ticket routed.
- Agent works the ticket; call log and recording remain attached.
Ticket fields created
Freshdesk field | Description |
|---|---|
Subject | {Event} {Status} call from {caller} |
Status | Open |
Priority | Medium |
Description | Caller: {Caller Number} · Agent: {Agent Name} · Department: {Department Name} · Status: {Status of call} · Event: {Event of call} · Duration: {Duration of Call} · UID: {UID of call} · Recording: {Recording Link} · Start Time: {Start Time of Call} |
Filter options
Filter | Options | Default |
|---|---|---|
Ticket Type | create_new · update_existing | create_new |
Event Type | incoming · outgoing · both | incoming |
Call Status | connected · missed · both | connected |
Department | all · comma-separated list | all |
How tickets are assigned
- If Agent exists: Ticket is assigned to the responding agent.
- If the Agent doesn’t exist: An unassigned ticket is created.
- For each new incoming/outgoing call, a new Freshdesk ticket is created (unless update_existing is set).
Edge cases and limitations — when does it NOT work?
- Webhook disabled: No ticket created.
- Duplicate webhooks: Multiple tickets created.
- Agent e-mail mismatch: Ticket remains Unassigned.
- API key expired: 401 errors until regenerated and updated.
- Rate limits: Large exports or syncs may hit Freshdesk API limits; stagger your requests.
- Sandbox vs. production: Keys are workspace-specific; ensure you’re in the right portal.
Troubleshooting
Scenario | Outcome | Fix |
|---|---|---|
Agent e-mail mismatch | Ticket stays Unassigned | Sync users or correct e-mail |
Webhook disabled | No ticket created | Enable After-Call webhook |
Duplicate tickets | Multiple webhooks active | Keep only one active webhook |
API key expired | 401 errors | Regenerate key, update integration |
Wrong domain | 401 errors |
CAN’T SEE THE API KEY:
- Ensure you’re viewing your own profile (not another user’s page).
- Ask an admin if API access is restricted by policy/plan.
Escalation and support
Open a ticket at support@myoperator.com with:
- Subject: Freshdesk-Integration-Issue
- Company ID (e.g., cmp_203948)
- Call SID (e.g., abc123)
- Webhook delivery log (raw JSON + HTTP status)
SLA: first response in 2 business hrs; resolution target under 8 hrs.
Keywords: Freshdesk-MyOperator integration, After-Call webhook, API key, agent sync, ticket assignment, call tracking, create_new, update_existing, incoming vs outgoing
Updated on: 13/01/2026