All Markdesk settings live in a single file: markdesk.config.ts in the project root.
Full config example
import type { MarkdeskConfig } from './src/lib/config';
const config: MarkdeskConfig = {
name: 'My Product',
siteUrl: 'https://help.example.com',
productUrl: 'https://example.com',
supportEmail: 'support@example.com',
fromEmail: 'help@example.com',
colors: { primary: '#4b68af' },
emailSender: 'resend',
footer: { termsUrl: '', privacyUrl: '' },
allowedOrigins: [],
beacon: { title: 'Help', autoShowModal: true },
};
export default config;
Settings reference
name
Your product or company name. Used in the header, page titles, and metadata.
siteUrl
The public URL of your help center (e.g. https://help.example.com). Used for generating canonical URLs, the beacon's content API, and CORS headers.
productUrl
The URL of your main product or website. Used for the "Back to [product]" link in the header.
supportEmail
The email address that receives contact form submissions.
fromEmail
The sender email address used when the contact form sends emails. Must be verified with your email provider.
colors.primary
Your primary brand color as a hex value. This is injected as a CSS variable (--color-primary) and used for buttons, links, and accents throughout the site and beacon.
emailSender
Which email provider to use for the contact form. Options:
'resend'— RequiresRESEND_API_KEYenvironment variable'sendgrid'— RequiresSENDGRID_API_KEYenvironment variable'nodemailer'— RequiresSMTP_HOST,SMTP_PORT,SMTP_USER,SMTP_PASSenvironment variables
See Email Providers for setup details.
footer.termsUrl / footer.privacyUrl
URLs for your Terms of Service and Privacy Policy pages. Displayed in the site footer. Leave empty to hide.
allowedOrigins
An array of additional domains allowed to make cross-origin requests to the help center API. This is needed when the beacon widget is embedded on a different domain than the help center.
allowedOrigins: ['example.com', 'app.example.com'],
Localhost is always allowed in development. The siteUrl domain is always allowed.
beacon.title
The title displayed in the beacon panel header. Defaults to 'Help'.
beacon.autoShowModal
Whether to automatically show product update modals to all visitors. Defaults to true.
Set to false if you want to control when modals appear — for example, only after a user logs in. Then call Markdesk.showModal() in your app when ready. See the Beacon Widget docs for details.