Make support feel at home in your app.
Your customers should feel like they're talking to you. Add our widget, build your own chat, or connect cStar to the tools your team already uses.
Pick your starting point.
Build your own chat
Keep your design and customer login. Connect the conversation with our chat SDK.
Customer chat guideUse the API
Connect tickets, customers and articles to your own server and workflows.
REST API referenceAdd the widget with one tag.
Paste this before the closing </body> tag on every page that should show chat.
Swap in your team slug. Settings > Install in your cStar dashboard shows the same tag with your
slug filled in.
<script src="https://www.cstar.help/cstar.js?team=YOUR_TEAM_SLUG"></script> No chat button? Open your browser console. cStar says there when the team value is missing or doesn't match a team.
One conversation. Both sides connected.
Once your customer is authenticated, create a conversation and receive replies from your team. The customer sees your interface. Agents answer in cStar.
// chat is an authenticated ChatClient from @cstar.help/js/chat.
const ticket = await chat.tickets.create({
subject: 'Help with my order',
message: 'Can I change my delivery address?'
});
// Subscribe while the conversation is open.
const stop = chat.onMessage(ticket.id, (message) => {
console.log(message.sender_name, message.content);
});
// Call stop() when leaving the conversation.
// Call chat.disconnect() when the customer signs out. Follow the complete customer chat guide for authentication, history, sending, errors and cleanup. Customer calls use a customer session. Keep secret API keys on your server.
Bring your favorite framework.
Same conversations, whichever stack feels like home.
npm install @cstar.help/js Need the whole toolbox?
Use the server SDK for team data and automations. Create a secret key in your team's API settings and copy the team ID from the same screen.
import { CStarClient } from '@cstar.help/js';
const cstar = new CStarClient({
apiKey: process.env.CSTAR_SECRET_KEY,
teamId: process.env.CSTAR_TEAM_ID
});
const { data: tickets } = await cstar.tickets.list({
status: 'open'
});
console.log(tickets.length); Set both environment variables before running the example. Use a test key for sandbox records, and keep it out of browser bundles.
- API referenceRequests, responses and permissions.
- WebhooksSigned events when your support data changes.
- CLI and MCPLocal tools for your terminal and coding assistant.
- ErrorsUnderstand a failed request and what to do next.
Stuck? Talk to the person building it.
Send Josh the step you're on and the error you see. Leave out keys, tokens and customer details. We'll work through it together.
Get help