Platform
Chatbot Builder Bulk Messaging Team Inbox Mini CRM API & Webhooks AI Integration WhatsApp Flows
Industries
E-commerce & D2C Real Estate Education Healthcare Finance & BFSI Logistics Hospitality Retail
Integrations 📚 Learn 📝 Blog 🗂 Codex Pricing Start Free Trial →
HomeConnect › Connect Freshdesk to WhatsApp
Freshdesk Integration Guide · Support / Helpdesk

Connect Freshdesk to WhatsApp

Look up open Freshdesk tickets from a WhatsApp chatbot, create new tickets from customer messages, and reply with real-time status updates. No Freshdesk login needed for the customer. They get answers directly in WhatsApp.

Published 23 June 2026  ·  7 min read  ·  Support / Helpdesk

Before following this guide, read the External API Request step foundation guide. It covers every field in the step interface so this guide can focus on Freshdesk-specific values.

The password is literally the letter X

Freshdesk Basic Auth uses your API key as the username and any non-empty string as the password. The convention is the single letter X. Freshdesk ignores the password entirely; only the API key is validated. So the format is: Authorization: Basic BASE64(api_key:X). This trips up almost everyone the first time.

Step 1: Get your Freshdesk API key

Freshdesk API keys are per-agent. Use an admin-level account key for full ticket access.

1
In Freshdesk, click your profile picture (top right) and select Profile Settings.
2
Scroll to the bottom of the page. Your API Key is shown in the "Your API Key" section. Copy it.
3
Note your Freshdesk domain from your URL. If your Freshdesk URL is acme.freshdesk.com, your domain is acme.
4
Construct your Basic Auth header value: Base64-encode the string YOUR_API_KEY:X. Then prepend "Basic ". You can use any online Base64 encoder.
API access requires a paid plan

The free Freshdesk Sprout plan does not include API access. You need a Growth, Pro, or Enterprise plan. If you cannot find an API Key on your Profile Settings page, check your plan.

Official docs

Freshdesk REST API v2: developers.freshdesk.com/api

How to compute the Authorization header

Freshdesk uses HTTP Basic Auth, which requires a Base64-encoded credential string. Here is the exact format:

Computing the Freshdesk Authorization header
Your API key: sfg999666t673t7t82t3

String to encode: sfg999666t673t7t82t3:X
             (api_key + colon + letter X)

Base64 result:  c2ZnOTk5NjY2dDY3M3Q3dDgydDM6WA==

Authorization header value: Basic c2ZnOTk5NjY2dDY3M3Q3dDgydDM6WA==

In WA.Expert External API Request step:
Header name:  Authorization
Header value: Basic c2ZnOTk5NjY2dDY3M3Q3dDgydDM6WA==

Tools to get the Base64 string:
  - Any online encoder: search "base64 encode"
  - Input: YOUR_API_KEY:X (your actual key, colon, capital X)
  - Copy the output and prepend "Basic "

Step 2: Fill in the External API Request step

In your WA.Expert chatbot flow, collect the customer's email first (ask them to type it, or retrieve from Mini-CRM). Store it as {{customer_email}}. Then add an External API Request step:

External API Request Step · WA.Expert
Select Method
GET
Request URL
https://YOUR_DOMAIN.freshdesk.com/api/v2/tickets?email={{{{customer_email}}}}&order_type=desc&per_page=5
Select Auth Type
No Auth (Basic Auth manually in header below)
Header Parameters
AuthorizationBasic BASE64_OF_APIKEY_COLON_X
Content-Typeapplication/json
Select Body Type
None (GET requests carry no body)
Choose Response Type
JSON

Field-by-field breakdown

FieldValueNotes
Select MethodGETFetching tickets for this requester.
Request URLhttps://YOUR_DOMAIN.freshdesk.com/api/v2/tickets?email={{{customer_email}}}&order_type=desc&per_page=5Replace YOUR_DOMAIN with your Freshdesk subdomain (e.g. acme). email= filters to tickets raised by this address. order_type=desc gives newest first. per_page=5 limits results.
AuthorizationBasic BASE64_OF_APIKEY_COLON_XCompute once: Base64(your_api_key:X). Paste the full 'Basic ...' string as the header value.
Content-Typeapplication/jsonStandard header for Freshdesk API requests.
Select Body TypeNoneGET requests carry no body.
Choose Response TypeJSONFreshdesk returns an array of ticket objects.
Filter by status in the URL

To get only open tickets, add &status=2 to the URL. Status codes: 2=Open, 3=Pending, 4=Resolved, 5=Closed. Example: ?email={{customer_email}}&status=2&order_type=desc

Step 3: Map the response to WhatsApp variables

A successful Freshdesk ticket response looks like this:

Freshdesk API v2 — GET /tickets?email= response
[
  {
    "id": 1001,
    "subject": "Order #5521 not delivered",
    "description_text": "My order was placed on June 18 but has not arrived.",
    "status": 2,
    "priority": 2,
    "requester_id": 447,
    "responder_id": 12,
    "created_at": "2026-06-20T10:30:00Z",
    "updated_at": "2026-06-22T14:00:00Z",
    "due_by": "2026-06-24T10:30:00Z",
    "tags": ["whatsapp", "order-issue"],
    "type": "Question"
  }
]

Map: [0].id, [0].subject, [0].status, [0].priority, [0].due_by
Response is a direct array

Freshdesk returns tickets as a plain array (not wrapped in a key). Map as [0].id, [0].subject, [0].status. If the array is empty, the customer has no tickets matching that email. Add a conditions branch for that case.

Status and priority reference

FieldValueMeaning
status2Open
status3Pending
status4Resolved
status5Closed
priority1Low
priority2Medium
priority3High
priority4Urgent

Convert numeric status to a readable label in your WhatsApp message. 'Your ticket status: Open' reads better than 'Your ticket status: 2'.

Map these response paths to variables in the External API Request step:

Variable nameResponse pathExample value
ticket_id[0].id1001
ticket_subject[0].subjectOrder #5521 not delivered
ticket_status[0].status2 (Open)
ticket_priority[0].priority2 (Medium)
ticket_due[0].due_by2026-06-24T10:30:00Z
ticket_updated[0].updated_at2026-06-22T14:00:00Z
Keep the WhatsApp reply in the free service window

If the customer messaged you first within the last 24 hours, your reply is a free service conversation. For proactive outbound ticket updates, use an approved Utility template.

Bonus: create a Freshdesk ticket from WhatsApp

When a customer describes an issue in WhatsApp, your bot can open a Freshdesk ticket automatically. Use a POST External API Request step with the same API key auth:

Create a Freshdesk ticket — POST /api/v2/tickets
POST https://YOUR_DOMAIN.freshdesk.com/api/v2/tickets
Authorization: Basic BASE64_OF_APIKEY_COLON_X
Content-Type: application/json

Body:
{
  "email": "{{customer_email}}",
  "subject": "WhatsApp: {{customer_issue_summary}}",
  "description": "Customer WhatsApp message: {{customer_message}}",
  "priority": 2,
  "status": 2,
  "tags": ["whatsapp", "bot-created"],
  "source": 7
}

Response:
{ "id": 1002, "status": 2, "subject": "WhatsApp: ...", ... }

Map: id -> new_ticket_id
Bot replies: "Ticket #{{new_ticket_id}} created.
Our team will respond within 24 hours."

source: 7 = created via API (shows in Freshdesk ticket source field)

Worked example: ticket status bot

Chatbot flow — Freshdesk ticket lookup by email
Customer messages: "What is the status of my support ticket?"

Bot asks: "Please share the email address used when you raised the ticket."
Customer replies: priya@example.com
Stored as {{customer_email}}.

External API Request step:
GET https://acme.freshdesk.com/api/v2/tickets
  ?email=priya@example.com&status=2&order_type=desc&per_page=1
Authorization: Basic c2ZnOTk5NjY2dDY3...

Response (array):
[{
  "id": 1001,
  "subject": "Order #5521 not delivered",
  "status": 2,
  "updated_at": "2026-06-22T14:00:00Z"
}]

Mapped:
ticket_id      = "1001"
ticket_subject = "Order #5521 not delivered"
ticket_status  = "2"

Conditions: if array is empty → "No open tickets found for this email."

Bot replies (if found):
"Hi Priya, here is your ticket update:

Ticket #1001: Order #5521 not delivered
Status: Open
Last updated: 22 June 2026

Reply AGENT to request a callback, or UPDATE for latest notes."

Troubleshooting

SymptomLikely causeFix
401 UnauthorizedWrong API key or wrong Base64 formatRecompute: Base64(YOUR_API_KEY:X). Ensure colon and capital X are included. Check the Authorization header reads exactly 'Basic ENCODED_STRING'.
403 ForbiddenInsufficient agent permissionsThe API key's agent role must have read access to tickets. Use an admin-level API key.
Empty array []No tickets found for that email, or wrong emailTry without &status=2 to check all tickets. Confirm the email matches exactly what is in Freshdesk (case-sensitive).
API not availableFree Sprout planAPI access requires Growth, Pro, or Enterprise plan. Upgrade or confirm your plan in Freshdesk Admin Settings.
429 Too Many RequestsRate limit exceededCheck X-RateLimit-Remaining header. Limits: 100 req/min (Growth), 400 (Pro), 700 (Enterprise). For a WhatsApp bot doing single lookups, this limit is very generous.
ticket.status returns 2 not 'Open'Status is a numeric codeMap 2='Open', 3='Pending', 4='Resolved', 5='Closed' in your bot message template using a conditions step.

Common questions

Why is the password just X?
+
Freshdesk Basic Auth uses the API key as the username and ignores the password. By convention the letter X is used as the password placeholder. This is documented in Freshdesk's own guides.
Where do I find my API key?
+
Profile picture → Profile Settings → scroll to bottom → API Key. If not visible, your plan may not include API access.
What plan do I need?
+
Growth, Pro, or Enterprise. The free Sprout plan has no API access.
What do status numbers mean?
+
2=Open, 3=Pending, 4=Resolved, 5=Closed. Custom statuses have IDs above 5. Convert in your chatbot conditions step before including in a WhatsApp reply.
Can I create a ticket from WhatsApp?
+
Yes. POST /api/v2/tickets with email, subject, description, priority (1-4), status (2=open). Same API key works for both reads and ticket creation.
Does this incur extra WA.Expert charges?
+
One automation action per External API Request call. Included on Complete plan. Starter: from Rs. 49 per 1,000 actions.

Connect Zendesk to WhatsApp

Zendesk Support API: OAuth 2.0, search endpoint, ticket creation.

Read guide →

Connect Freshsales to WhatsApp

Freshsales CRM API: Token token= auth, contact lookup by phone.

Read guide →

External API Request Step

Master every field in WA.Expert's HTTP action step.

Read foundation guide →

Connect Freshdesk to WhatsApp today

Free trial, no credit card required. And if you ever get stuck, we are the only platform in India that answers you live on WhatsApp.

Start Free Trial → Book a Demo
1