Quickstart
Ship a working support page in four steps. You'll need Node 20+ and a Vicket account. The CLI supports React, Next.js, Vue and Nuxt.
1. Create an organization and a site
Sign in to the dashboard and create an org. The org is your top-level tenant: agents, sites, statuses, priorities, and articles all live under it. Then create at least one site under Websites (e.g. acme-app). Sites scope the publishable key, the origin allowlist, and the ticket queue. See organizations-and-sites for the data model.
From Websites, open your site and copy its API key. It starts with pk_ and is shown exactly once.
2. Install the components
Run the Vicket CLI in the root of your app:
npx @vicket/cli init
The CLI detects your setup and confirms each answer: the framework (Next.js, React, Nuxt or Vue) and the styling (shadcn/ui on React, Tailwind classes, or a standalone stylesheet). It then writes owned components into components/vicket/ and, on Next.js or Nuxt, a /support page. Everything is yours: edit it like any other component. See install-support-page for the resulting tree.
3. Set environment variables
Add the variables to .env.local (Next.js) or .env. The CLI already appended them to your .env.example:
NEXT_PUBLIC_VICKET_API_URL=https://api.vicket.app
NEXT_PUBLIC_VICKET_SITE_KEY=pk_xxxxxxxxxxxxxxxxxxxx
The key alone identifies your site: the backend resolves it by its hash, so there is nothing else to configure.
On Vite (React or Vue) the prefix is VITE_; on Nuxt it's NUXT_PUBLIC_, plus a small runtimeConfig block in nuxt.config.ts that the CLI prints. The site key is publishable: it ships in the browser on purpose, and the backend enforces your site's origin allowlist and rate limits. Add your app's origin (e.g. http://localhost:3000) under Websites, your site, Origins or the browser calls will be blocked. See api-authentication for the full auth model.
4. Open the support page
The CLI created /support on Next.js (app/support/page.tsx) and Nuxt (pages/support.vue). On plain React or Vue, mount the page in your router:
// React (react-router)
import { SupportPage } from "./components/vicket/support-page";
<Route path="/support" element={<SupportPage />} />
// Vue (vue-router)
{ path: "/support", component: () => import("./components/vicket/SupportPage.vue") }
Link it from your nav, run your app, and open /support. You should see your published articles and FAQs, and the Contact Support button opens the ticket form. Submit a test ticket: it appears in the agent dashboard immediately.
What's next
- Restyle the components and adjust the copy in configure-support-page.
- Understand the ticket lifecycle in tickets-and-statuses.
- Automate routing and notifications in workflows.