Open the prebuilt chat widget from any button, link, or element on your page — without writing JavaScript.
When to Use This
You're using the Prebuilt Floating Widget (the default mode) and want to:
- Add a "Need help?" link in your navbar
- Put an "Open a ticket" button at the bottom of a docs page
- Add a "Still stuck? Chat with us" CTA on a 404 page
- Trigger the chat from a marketing landing page
If you're building a fully custom chat UI instead, see Custom Chat Widget (Data Attribute Mode).
Setup
Make sure the universal script is on the page:
<script src="https://www.cstar.help/cstar.js?team=YOUR_TEAM_SLUG"></script>
Then add data-cstar-chat to any element. cStar binds a click handler automatically.
The Three Behaviors
| Attribute | What Clicking Does |
|---|---|
data-cstar-chat |
Opens the chat panel (no value, or any unrecognized value) |
data-cstar-chat="new" |
Opens the panel and switches to the new-conversation form |
data-cstar-chat="tickets" |
Opens the panel and shows the conversations list |
<button data-cstar-chat>Need help?</button>
<a href="#" data-cstar-chat="new">Open a ticket</a>
<button data-cstar-chat="tickets">View my conversations</button>
The handler calls event.preventDefault() and stopPropagation() for you, so links won't navigate and the click-outside-to-close logic won't immediately undo your click.
Common Patterns
Navbar "Help" link
<nav>
<a href="#" data-cstar-chat>Help</a>
</nav>
"Still need help?" at the end of an article
<section class="article-footer">
<p>Didn't find what you were looking for?</p>
<button class="btn-primary" data-cstar-chat="new">Talk to us</button>
</section>
404 page
<button data-cstar-chat="new">Tell us what you were looking for</button>
Conditional CTA based on customer state
If you've already wired up identity verification, you can call CStarChat.identify() first and use data-cstar-chat="tickets" so logged-in customers land on their existing conversations.
JavaScript Alternative
When a static attribute isn't enough — say you need to pass a pre-filled subject — call the SDK directly:
document.querySelector('#contact-sales').addEventListener('click', () => {
CStarChat.startConversation({
subject: 'Sales question',
message: 'Hi, I have a question about plans.'
});
});
CStarChat.startConversation() opens the panel and creates the conversation with the subject and first message you pass. Skip data-cstar-chat="new" if you go this route — the SDK call handles both opening and the new-conversation flow.
Other useful methods for trigger buttons:
CStarChat.open(); // Just open the panel
CStarChat.close(); // Close it
CStarChat.toggle(); // Toggle
CStarChat.isOpen(); // Returns boolean
CStarChat.identify({ email, name, customer_id }); // Log customer in before opening
Styling
data-cstar-chat is just a hook for cStar's click handler. The element keeps whatever CSS class, size, color, or hover state you give it. Use your existing button styles.
Caveats
- The handler skips elements inside
<code>,<pre>, or.article-content— so docs examples like the snippets in this article don't accidentally bind to live triggers when shown in the help center. data-cstar-chatworks only in Prebuilt mode. If you havedata-cstar-launcherordata-cstar-panelon the page, cStar switches to Custom Mode and the same attribute calls custom-mode SDK methods instead. The behavior is the same, but you're now responsible for the panel UI.- If the script hasn't finished loading when a customer clicks, the call is queued and runs on load. You won't lose clicks.
Testing
- Add a button with
data-cstar-chatto a test page - Reload, click the button
- The chat panel should open
- Add
="new"and click again — you should land on the new-conversation form
If nothing happens, open the browser console and check for [cStar Chat] errors. The most common cause is the script tag pointing to a missing team slug.