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.