Freshdesk + MailKite
Freshdesk is a help desk platform. Use MailKite to receive inbound email as Freshdesk tickets — customer support requests are created automatically.
What you need
- A verified domain with SPF + DKIM published
- Your API key (
mk_live_…) - Freshdesk account with API key
Send email
Use MailKite SMTP for outbound transactional email. Freshdesk handles replies within its ticket system.
smtp-config
SMTP Host: smtp.mailkite.dev
SMTP Port: 587
SMTP Username: mailkite
SMTP Password: mk_live_...
From: hello@yourdomain.com Receive inbound email (optional)
Point your domain's webhook to this handler. Each inbound email creates a Freshdesk ticket automatically.
handle-inbound.ts
// Receive inbound email → create Freshdesk ticket
const FRESHDESK_API = 'https://yourdomain.freshdesk.com/api/v2';
async function handleInbound(email) {
const res = await fetch(`${FRESHDESK_API}/tickets`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `${process.env.FRESHDESK_API_KEY}:X`,
},
body: JSON.stringify({
email: email.from,
subject: email.subject || 'Inbound email',
description: email.text,
type: 'Incident',
priority: 1,
}),
});
return res.json();
} Test it
terminal
curl -X POST https://your-worker.example.com/mailkite-inbound \
-H "Content-Type: application/json" \
-d '{"from":"user@example.com","to":"support@yourdomain.com","subject":"Bug report","text":"The button doesn\'t work."}' Troubleshooting
- Freshdesk API key is your password with
:Xappended (e.g.abc123:X). - Ensure the sender email exists as a Freshdesk contact, or enable "auto-create contacts."
- Find your API key under Profile Settings → Your API Key.
See the SMTP relay docs for the full connection reference, or all integrations for other platforms.