Skip to main content

Crisp

Crisp is RoundTrip's customer support platform. It handles in-app chat support, email ticketing, and the customer-facing knowledge base at help.roundtrips.app. Crisp was selected in July 2026 as the Phase 1 support platform, replacing a ZenDesk trial.

See TRA-225 for the full support platform strategy and the three-phase roadmap toward a Relay-powered AI support assistant.


What Crisp Does​

CapabilityDetails
In-app chat widgetEmbedded in RoundTrip — users click the chat bubble to get help
Email ticketingEmails to support@roundtrips.app create tickets in Crisp inbox
Knowledge baseSelf-service articles at help.roundtrips.app
User identificationPre-fills user name and email from auth context automatically

Configuration​

Account Details​

ItemValue
LoginBitwarden → "Crisp"
Workspace nameRoundTrip
Website ID65572966-7391-42f9-9932-1d38d2c7c740
PlanEssentials (free tier — 2 agents)
Knowledge base URLhelp.roundtrips.app
Support emailsupport@roundtrips.app

Agents​

AgentRoleHandles
Pete CarrollAdminTechnical issues, billing, account management
Robin CarrollAgentFeature requests, user feedback, general inquiries

Ticket Categories​

CategoryOwner
Technical IssuePete
Billing & AccountPete
Account ManagementPete
Feature RequestRobin
User FeedbackRobin
General InquiryRobin

SLA Targets​

PriorityTriggerResponseResolution
CriticalApp down, data loss, can't log in2 hours24 hours
HighCore feature broken, billing issue4 hours48 hours
NormalNon-critical bug, general question1 business day5 business days
LowFeature request, feedback3 business daysRoadmap

Business hours: Monday–Friday 9am–6pm Eastern. Founding customers have a direct line to Pete regardless of SLA tier.


In-App Widget Integration​

The Crisp widget is embedded in RoundTrip and automatically identifies the logged-in user.

How it works​

User logs in to RoundTrip
→ authStore.setAccount() called
→ fetchCurrentUser() succeeds
→ identifyCrispUser(email, name) called
→ Crisp widget pre-fills user identity
→ Support conversations are automatically attributed to the correct user

Key files​

FilePurpose
src/lib/crisp.tsCrisp initialization, user identification, session reset
src/types/crisp.d.tsTypeScript Window type declarations for $crisp
src/stores/authStore.tsCalls identifyCrispUser on login, resetCrispSession on logout
src/main.tsxCalls initCrisp() once at app startup
_headersCSP entries for all Crisp domains

CSP entries required​

The following domains must be in _headers for the widget to function:

script-src: https://client.crisp.chat
style-src: https://client.crisp.chat
font-src: https://client.crisp.chat
img-src: https://image.crisp.chat https://storage.crisp.chat https://*.crisp.chat
connect-src: https://client.crisp.chat wss://client.crisp.chat
wss://client.relay.crisp.chat wss://client.relay.rescue.crisp.chat
https://storage.crisp.chat https://*.crisp.chat https://image.crisp.chat

Email Setup​

Emails sent to support@roundtrips.app route to Crisp via DNS records on roundtrips.app in Cloudflare.

DNS Records​

TypeNameValuePriority
TXT_crisp.supportcrisp-website-id=65572966-7391-42f9-9932-1d38d2c7c740—
MXsupportinbound.crisp.email.10
TXTsupportv=spf1 redirect=_spf.crisp.email—
CNAME_dmarc.support_dmarc.crisp.email.—
CNAMEcrisp._domainkey.supportcrisp._domainkey.crisp.email.—
CNAMElinks.supportlinks.custom.crisp.email.—

:::caution DNS Only All Crisp CNAME records in Cloudflare must be set to DNS only (grey cloud). Proxied CNAMEs break email routing. :::


Knowledge Base​

The RoundTrip Help Center is at help.roundtrips.app.

Starter Articles​

ArticleURL
How to Invite a Team Memberhelp.roundtrips.app/...
How to Send an Invoicehelp.roundtrips.app/...
How to Contact Supporthelp.roundtrips.app/...

Add new articles whenever a support question comes up more than twice — that's the signal it belongs in the knowledge base.


Rotating the Crisp API Key​

If the Crisp website ID ever needs to change (e.g. workspace recreation):

  1. Update CRISP_WEBSITE_ID in src/lib/crisp.ts
  2. Update the TXT DNS record _crisp.support in Cloudflare with the new ID
  3. Rebuild and deploy RoundTripWeb
  4. Verify the widget loads correctly on roundtrips.app

Troubleshooting​

Widget not appearing​

  1. Check browser console for CSP errors — add any blocked Crisp domains to _headers
  2. Verify initCrisp() is called in src/main.tsx before ReactDOM.createRoot
  3. Check window.CRISP_WEBSITE_ID in browser console — should return the website ID

User identity not pre-filling​

  1. Check browser console for errors in identifyCrispUser
  2. Verify fetchCurrentUser is returning status: 'ok' — check Network tab for /v1/me
  3. The test admin account (acme.admin@roundtripapp.onmicrosoft.com) has no real email — identity won't pre-fill for this account. Use a real user account to test.

Emails not arriving in Crisp​

  1. Check Cloudflare DNS records are correct and set to DNS only (not proxied)
  2. Allow up to 24 hours for DNS propagation after initial setup
  3. Use Crisp → Email Settings → Email Domain → Verify domain setup to check status

Crisp sends one-time login codes to agents via email. Outlook's Safe Links feature pre-fetches links and consumes the code before the agent can use it. Always click the button in the email — never copy the link. This affects Robin's Outlook account.