Skip to content

Configuration

The SiteAssist widget is highly customizable through configuration options passed to the init method. This guide covers all available options and how to use them.

The minimal configuration requires only an API key:

SiteAssist("init", {
apiKey: "YOUR_API_KEY_HERE",
});

Your SiteAssist project publishable key. Get this from your dashboard under AdvancedAPI KeysPublishable Keys.

SiteAssist("init", {
apiKey: "pk_live_abc123...",
});

Defines the widget type. Default: "floating-bubble"

Options:

  • "floating-bubble" - Floating chat button with expandable interface
  • "sidepanel" - Fixed side panel integration
// Floating bubble (default)
SiteAssist("init", {
apiKey: "YOUR_API_KEY",
type: "floating-bubble",
});
// Sidepanel
SiteAssist("init", {
apiKey: "YOUR_API_KEY",
type: "sidepanel",
});

Controls the widget’s color scheme. Default: "auto"

Options:

  • "auto" - Automatically matches system preference
  • "light" - Always use light theme
  • "dark" - Always use dark theme
SiteAssist("init", {
apiKey: "YOUR_API_KEY",
theme: "dark", // Force dark theme
});

You can also change the theme dynamically:

// Change to light theme
SiteAssist("changeTheme", "light");
// Change to dark theme
SiteAssist("changeTheme", "dark");
// Change to auto (system preference)
SiteAssist("changeTheme", "auto");

CSS selector for the container that should be pushed when the sidepanel opens. Only applies when type: "sidepanel".

Default: ".siteassist-container"

SiteAssist("init", {
apiKey: "YOUR_API_KEY",
type: "sidepanel",
appContainerSelector: ".main-content", // Custom selector
});

HTML Structure Example:

<div class="main-content">
<!-- Your app content here -->
<!-- This will be pushed right when sidepanel opens -->
</div>

Responsive Behavior:

  • On screens ≥1024px: Content is pushed by 400px
  • On screens <1024px: Sidepanel floats over content (no push)
  • On screens <768px: Full-screen mode automatically

Controls where the text selection popover appears when users select text on your page.

Options:

  • true or undefined (default) - Only show popover when text is selected within .main-content elements
  • false - Show popover everywhere on the page (disable content filtering)
  • string - Custom CSS selector for where the popover should appear
// Default behavior - only in .main-content elements
SiteAssist("init", {
apiKey: "YOUR_API_KEY",
contentSelector: true, // or omit entirely
});
// Disable content filtering - show popover everywhere
SiteAssist("init", {
apiKey: "YOUR_API_KEY",
contentSelector: false,
});
// Custom selector - only in .main-content elements
SiteAssist("init", {
apiKey: "YOUR_API_KEY",
contentSelector: ".main-content",
});
// Only in article content
SiteAssist("init", {
apiKey: "YOUR_API_KEY",
contentSelector: "article .content",
});

HTML Structure Example:

<!-- With default contentSelector (true) -->
<div class="sidebar">
<p>This text won't show the selection popover</p>
</div>
<div class="main-content">
<p>This text WILL show the selection popover</p>
</div>
<!-- With custom contentSelector -->
<div class="article-content">
<p>This text will show the selection popover</p>
</div>

Use Cases:

  • Documentation sites: Restrict to main content areas
  • Blogs: Only allow selection in article content
  • E-commerce: Enable everywhere for product help
  • Admin panels: Restrict to specific content sections

Optional identifier for the user. Useful for tracking specific users or personalizing experiences.

SiteAssist("init", {
apiKey: "YOUR_API_KEY",
externalId: "user_12345", // Your internal user ID
});

Note: Full user identification features (email, name, attributes) are coming soon.

Custom widget hosting URL. Only needed for self-hosted or custom deployments.

Default: "https://widgets.siteassist.io"

SiteAssist("init", {
apiKey: "YOUR_API_KEY",
widgetUrl: "https://custom-widgets.yourdomain.com",
});

Custom API endpoint URL. Only needed for custom deployments.

Default: "https://api.siteassist.io"

SiteAssist("init", {
apiKey: "YOUR_API_KEY",
apiUrl: "https://custom-api.yourdomain.com",
});

Many visual customization options are configured through the SiteAssist dashboard under Project SettingsWidget Appearance:

Configure these in your dashboard:

  • Brand Color - Primary accent color for the widget
  • Brand Color (Dark Mode) - Primary color for dark theme
  • User Message Bubble Color - Color for user messages
  • User Message Bubble Color (Dark Mode) - User message color in dark mode
  • Chat Button Color - Background color for the floating button
  • Position - Choose bottom-left or bottom-right
  • Width - Widget width in pixels (default: 400px)
  • Max Height - Maximum height in pixels (default: 700px)
  • Offset - X and Y offset from corner in pixels
  • Base Font Size - Base font size in pixels (default: 16px)
  • Welcome Message - First message users see
  • Input Placeholder - Placeholder text in the input field
  • Header Title - Title shown in the widget header
  • Assistant Avatar - Custom avatar image URL
  • Chat Button Icon - Custom icon for the chat button
  • Open Delay - Auto-open delay in milliseconds (0 = disabled)

Here’s a full example combining multiple options:

SiteAssist("init", {
// Required
apiKey: "pk_live_abc123def456",
// Widget type
type: "floating-bubble",
// Theming
theme: "auto",
// Content selection
contentSelector: ".main-content", // Only show popover in main content
// User tracking
externalId: "user_12345",
// Advanced (usually not needed)
widgetUrl: "https://widgets.siteassist.io",
apiUrl: "https://api.siteassist.io",
});

Store your publishable key securely using environment variables:

// Next.js example
SiteAssist("init", {
apiKey: process.env.NEXT_PUBLIC_SITEASSIST_PUBLISHABLE_KEY,
theme: "auto",
});

Configure differently based on environment:

SiteAssist("init", {
apiKey: "YOUR_API_KEY",
theme: "auto",
// Use development widget URL in dev environment
...(process.env.NODE_ENV === "development" && {
widgetUrl: "http://localhost:3000",
}),
});

Set theme based on user preference:

const userPreference = localStorage.getItem("theme") || "auto";
SiteAssist("init", {
apiKey: "YOUR_API_KEY",
theme: userPreference,
});

Set external ID based on logged-in user:

const userId = getCurrentUser()?.id;
SiteAssist("init", {
apiKey: "YOUR_API_KEY",
externalId: userId || null,
});

After configuring the widget, verify it’s working correctly:

  • Widget appears in the correct position
  • Colors match your configuration
  • Theme is applied correctly

Open browser DevTools and check:

// Check if SiteAssist is loaded
console.log(window.SiteAssist);
// Should show a function if loaded correctly
  • Click to open/close the widget
  • Test theme changes
  • Verify sidepanel behavior (if applicable)
  • Test text selection feature

Test on different screen sizes:

  • Desktop (>1024px)
  • Tablet (768px - 1024px)
  • Mobile (<768px)

Check your dashboard settings for position and offset values.

Dashboard settings override any code-level color configurations. Update colors in your SiteAssist dashboard.

Ensure your container has the correct class or matches the appContainerSelector:

<div class="siteassist-container">
<!-- or -->
</div>
<div class="your-custom-selector">
<!-- if using appContainerSelector: ".your-custom-selector" -->
</div>

Make sure you’re calling changeTheme after initialization:

// Initialize first
SiteAssist("init", { apiKey: "YOUR_API_KEY" });
// Then change theme
SiteAssist("changeTheme", "dark");

Need help with configuration? Contact us at support@siteassist.io