Jekyll plugin that adds the DeskCrew support widget to every page and post
AI live chat, tickets and a help center, configured from _config.yml.
Website • Integrations • For agents • Sign up
⭐ Help more people find DeskCrew. Star this repo!
Live chat, an AI support chatbot and a help center for Jekyll, from one line in _config.yml. jekyll-deskcrew adds the DeskCrew support widget to every page and post of a Jekyll site: visitors chat with an AI that answers from your knowledge base, anything it cannot answer becomes a ticket, and a human approves every reply before it sends. No layout edits, no _includes changes, no JavaScript to write.
Works with any theme (Minima, Just the Docs, Chirpy, al-folio, Beautiful Jekyll) and any host that runs plugins (Netlify, Cloudflare Pages, Vercel, GitHub Actions). Free plan, no credit card: https://deskcrew.io/signup
- Live chat on a Jekyll blog or documentation site without touching the theme.
- An AI chatbot for docs: it answers from the help articles you publish and hands off to a person when it is unsure.
- A contact form replacement: visitors ask in the widget, you get a ticket, no form backend or serverless function to host.
- A help center for a static product site that stays on your domain.
- Replacing a paid chat widget (Tawk.to, Crisp, Intercom, Zendesk) with one that starts free and never sends a reply you did not approve.
# Gemfile
group :jekyll_plugins do
gem "jekyll-deskcrew"
end# _config.yml
plugins:
- jekyll-deskcrew
deskcrew:
key: pub_your_widget_key # from your DeskCrew dashboard, Install page
board: your-board # optional
# color: "#4f46e5" # optional, 6-digit hex
# position: right # optional, or left
# greeting: "Hi! How can we help?"
# enabled: false # keep the plugin installed but switch the widget offBuild the site. The launcher appears on every generated HTML page. GitHub Pages does not run custom plugins; build with GitHub Actions or another host instead.
A post_render hook injects one <script> tag before </body> on every page and document with an .html output. Every value from _config.yml is validated and HTML-escaped first; a missing or malformed key means nothing is injected, and a page that already carries the tag is never given a second one.
Add jekyll-deskcrew to the :jekyll_plugins group in your Gemfile, list it under plugins: in _config.yml, and put your widget key under deskcrew:. Build the site. Every generated page and post carries the chat bubble.
GitHub Pages' built-in build only runs an allowlist of plugins, and this one is not on it. Two options: build with a GitHub Actions workflow (the standard actions/jekyll-build-pages or your own jekyll build) and deploy the output, or skip the plugin and paste the one-line widget snippet into _includes/head.html as described at https://deskcrew.io/integrations/jekyll. Netlify, Cloudflare Pages and Vercel run plugins as normal.
No. A post_render hook inserts one script tag before </body> on every HTML page and document. Your layouts, includes and CSS are untouched, and the widget renders inside a Shadow DOM so your styles and its styles never collide.
Set enabled: false under deskcrew: in _config.yml to keep the plugin installed with the widget off. For per-environment control, keep a _config.dev.yml with enabled: false and pass it with --config _config.yml,_config.dev.yml when serving locally.
It answers only from the knowledge base you publish on DeskCrew and says so when it does not know. Anything it cannot answer becomes a ticket, and a person approves every outbound reply.
Yes. The free plan includes the chat widget, ticketing, a public help center and a monthly AI answer allowance, with no credit card: https://deskcrew.io/pricing
Jekyll 3.9 and 4.x on Ruby 2.7 or newer.
One script tag loading https://deskcrew.io/desk.js with your public widget key. The widget runs inside a Shadow DOM and does not touch your styles. Terms: https://deskcrew.io/terms. Privacy: https://deskcrew.io/privacy.
MIT

