Open Source & Self-hosted

Customer support built into your apps

Ticketing, SLA, product returns, feedback and knowledge base. An embeddable widget, an agent dashboard, a complete API.

index.html
<script src="https://cdn.supportdesk.com/v1/supportdesk-widget.js"></script>
<script>
  SupportDesk.init(
    appId: 'your-app',
    apiKey: 'pk_live_xxx',
    customer:  externalId: 'user-123' 
  );
</script>

Everything you need

A complete customer support ecosystem, ready to integrate.

Tickets & Conversations

Full ticket management with N1/N2/N3 escalation, auto-assignment and real-time conversations.

SLA & Alerts

Response and resolution time policies. Automatic alerts before expiration.

Product Returns

Complete workflow: request, approval, tracking, refund. Full traceability.

Feedback & Votes

Bug reports, feature requests and votes. Prioritize what your users are asking for.

Knowledge Base

Articles organized by category with search. Reduce your ticket volume.

Embeddable Widget

Single script, zero dependencies. Shadow DOM for complete style isolation.

3-minute integration

Add customer support to your app in just a few lines of code.

1

Add the script

A single script tag from our CDN.

index.html
<!-- Add to your HTML -->
<script src="https://cdn.supportdesk.com/v1/supportdesk-widget.js"></script>
2

Initialize the widget

Configure your app ID and API key. The default floating button appears automatically.

index.html
<script>
  SupportDesk.init({
    appId: 'your-app',
    apiKey: 'pk_live_xxx',
    customer: {
      externalId: 'user-123',
      email: 'user@example.com',
      name: 'Jean Dupont'
    },
    theme: { primaryColor: '#2563eb' }
  });
</script>
3

Or use your own button

Hide the default button and control the widget with your own UI via the JavaScript API.

app.js
// Hide the button, use your own
SupportDesk.init({
  appId: 'your-app',
  apiKey: 'pk_live_xxx',
  theme: { showButton: false }
});

// Your own trigger
myBtn.addEventListener('click', SupportDesk.toggle);

// Track unread messages
SupportDesk.onUnreadChange((count) => {
  badge.textContent = count;
});

Simple and transparent

No surprises. Start for free, scale as you grow.

Starter

To get started and test

Free
  • Up to 3 agents
  • 100 tickets/month
  • Embeddable widget
  • 10 KB articles
  • 1 team
  • Community support
Get Started
Popular

Pro

For growing teams

$29 /month
  • Unlimited agents & tickets
  • SLA & alerts
  • Product returns
  • Feedback & votes
  • Satisfaction surveys
  • Webhooks & API keys
  • Analytics & email notifications
  • N1/N2/N3 escalation
Free 14-day trial

Enterprise

For large organizations

Custom
  • Everything in Pro
  • SSO / SAML
  • Unlimited webhooks & API keys
  • Dedicated account manager
  • 24/7 support
Contact us

Ready to transform your customer support?

Join the teams using SupportDesk to deliver an exceptional customer experience.