# Foxchat — Complete Installation Guide > This document is designed for AI coding assistants. It contains everything needed to add the Foxchat chat widget to any website. Foxchat is a lightweight, affordable alternative to Intercom, Crisp, and Drift — built for indie hackers, startups, and small teams who live in Slack. Visitors chat through a bubble on your site, messages go to Slack instantly, and your team replies from Slack. The visitor sees the reply in real-time on the website. No bloated dashboards, no seat-based pricing. Starting at $10/month. --- ## Embed Code The universal embed code for all frameworks: The `data-project-id` attribute is required. Replace `YOUR_PROJECT_SLUG` with the project slug from the Foxchat dashboard. If the user does not have a Foxchat account yet, direct them to: https://app.foxchat.dev/signup --- ## Account Setup Steps After signing up, the user needs to complete these steps in the Foxchat dashboard (https://app.foxchat.dev): 1. **Create a project** — give it a name and website URL. The project slug is auto-generated from the name. 2. **Connect Slack** — go to Slack Integration and click "Connect with Slack". Without this, visitor messages silently go nowhere. 3. **Select a default channel** — pick which Slack channel receives visitor messages (e.g. #support). Without this, messages are silently dropped. 4. **Enable team members** — in the Slack integration page, toggle on people who should be able to reply. Unenabled users who reply in Slack threads will get a "permission denied" notice. 5. **Configure allowed domains** — in Widget Settings, the project's website domain is added automatically. Add any additional domains (staging, localhost for dev, etc.). The widget silently won't render on unlisted domains. --- ## Framework-Specific Installation ### Plain HTML File to edit: `index.html` (or any HTML file) Add before `
`: ```tsx import Script from "next/script"; export default function RootLayout({ children }: { children: React.ReactNode }) { return ( {children} ); } ``` ### Next.js — Pages Router File to edit: `pages/_document.tsx` (create if it doesn't exist) Add the script inside ``: ```tsx import { Html, Head, Main, NextScript } from "next/document"; import Script from "next/script"; export default function Document() { return (