Служба поддержки для SaaS-платформ
Добавьте поддержку клиентов в вашу SaaS-платформу
SupDesk создан для SaaS-продуктов, которым нужна мультитенантная поддержка, доступ к API и вебхуки. Масштабируйте поддержку, не создавая её с нуля.
Возможности для SaaS-продуктов
Портал для клиентов
Каждый тенант получает собственный брендированный портал обратной связи на support.organization.com.
API-first поддержка Все функции доступны через REST API. Идеально для встроенной поддержки в админ-панелях.
Учёт использования Отслеживайте активных пользователей, объём обратной связи и количество заявок по каждому тенанту.
Экспорт и аналитика Формируйте CSV-отчёты для стейкхолдеров. Отслеживайте тенденции по всем тенантам.
Тарифы для SaaS-команд
Все тарифы включают неограниченное число тенантов и никакой оплаты за каждого клиента. Посмотреть тарифы
Создайте систему поддержки для вашего SaaS уже сегодня
Начните собирать обратную связь от всех ваших клиентов. Начало бесплатное — кредитная карта не нужна. Регистрация на supdesk.app
Серверные SDK для интеграции с бэкендом
Живые примеры кода, загружаемые из репозитория GitHub каждого SDK.
import { SupDesk } from "supdesk";
const supdesk = new SupDesk({ apiKey: process.env.SUPDESK_API_KEY! });
// Auto-pages: iterating walks every page for you.
for await (const submission of await supdesk.submissions.list({
status: "open",
})) {
console.log(submission.title);
}
await supdesk.submissions.create({
type: "bug",
title: "Export button does nothing",
email: "user@example.com",
body: "Clicking Export on the reports page has no effect.",
});from supdesk import SupDesk
supdesk = SupDesk() # api_key=... or $SUPDESK_API_KEY
# Auto-pages: iterating walks every page for you.
for submission in supdesk.submissions.list(status="open"):
print(submission.title)
supdesk.submissions.create(
type="bug",
title="Export button does nothing",
email="user@example.com",
body="Clicking Export on the reports page has no effect.",
)import "github.com/rabinapps/supdesk-go/supdesk"
client, err := supdesk.New(os.Getenv("SUPDESK_API_KEY"))
if err != nil {
log.Fatal(err)
}
page, err := client.Submissions.List(ctx, supdesk.SubmissionsListParams{
Status: ptr("open"),
})
if err != nil {
return err
}
// Auto-pages: All walks every page for you.
for sub, err := range page.All(ctx) {
if err != nil {
return err
}
fmt.Println(sub.Title)
}
_, err = client.Submissions.Create(ctx, supdesk.SubmissionsCreateParams{
Type: supdesk.SubmissionTypeBug,
Title: "Export button does nothing",
Email: "user@example.com",
Body: "Clicking Export on the reports page has no effect.",
})import 'dart:io';
import 'package:supdesk/supdesk.dart';
final supdesk = SupDesk(apiKey: Platform.environment['SUPDESK_API_KEY']!);
// Auto-pages: the stream walks every page for you.
final page = await supdesk.submissions.list(status: PostStatus.open);
await for (final submission in page.autoPaging()) {
print(submission.title);
}
await supdesk.submissions.create(
type: SubmissionType.bug,
title: 'Export button does nothing',
email: 'user@example.com',
body: 'Clicking Export on the reports page has no effect.',
);