AI Chatbot for Drupal: Module Install, Webform Integration & Best Picks (2026)
Drupal sites trend toward higher-stakes content: government, higher education, health, large nonprofits. The chatbot must handle accessibility, multilingual content, and structured taxonomies, not just scrape pages.
Three install patterns
- Drupal module from Drupal.org with admin UI.
- Custom snippet via Block Layout for sites without contrib trust.
- Decoupled / headless: Next.js or React storefront with API-based bot.
What Drupal-aware chat taps into
A taxonomy-aware bot can route queries by node type and field, "academic programs", "forms", "news", "services". The result is dramatically better answer relevance than a flat-text crawler.
Webform: turn chat into structured submissions
Drupal's Webform module is widely used for service requests, applications, and contacts. The bot can collect data conversationally and submit to a Webform, capturing handler routing, conditional logic, and email recipients without rebuilding the form.
Multilingual content made for it
Drupal's translation system (content + interface + config) is uniquely good. The bot honors language context per visitor, fetches the localized node, and answers in the right language, automatically.
Accessibility: WCAG 2.2 AA non-negotiable
Public-sector and university sites often have ADA / Section 508 obligations. The widget must be keyboard-navigable, screen-reader-tagged with proper roles, and respect prefers-reduced-motion. Many off-the-shelf bots fail this audit.
Best chatbot picks for Drupal sites
- EzyConn. Drupal module, taxonomy-aware crawl, WCAG 2.2 AA widget.
- Tidio. Snippet works fine, no Drupal-specific intelligence.
- LivePerson. Strong enterprise option, heavy.
- Open-source Rasa + Drupal Webform bridge. For teams with Python depth.
Privacy patterns for higher ed and gov
- Anonymize transcripts after 30 days unless legal hold.
- Self-host data in EU or US-only region as appropriate.
- Redact identifiers from logs.
- Include a clear privacy notice on widget open.
Installing it step by step
The fastest path for most sites is the block embed, because it needs no contrib code review. If your team requires a proper module, that route is two commands. Here is each one.
Block embed (no contrib needed, about 10 minutes):
- In your workspace, copy the widget snippet (a short async
<script>tag with your site key). - Go to Structure, Block layout, Custom block library, and add a Basic block. Switch the body format to Full HTML and paste the snippet.
- Place that block in the Footer region and set visibility to all pages so it loads site-wide.
- Clear caches (
drush cror Configuration, Performance) and reload. The launcher appears bottom-right.
Contrib module (admin UI, taxonomy-aware crawl):
- Run
composer require drupal/ezyconnfrom your project root. - Enable it with
drush en ezyconn -y, then visit the settings form at Configuration, Web services. - Paste your API key, pick which node types and taxonomy vocabularies the bot may index, and save. The crawl runs on cron.
- Confirm the widget renders and that a test question returns an answer sourced from a node you expect.
Version support at a glance
If you are still deciding whether to upgrade first, this is where each Drupal version stands for a chat deployment.
| Version | Status | Recommendation |
|---|---|---|
| Drupal 7 | EOL since January 2025 | Upgrade before deploying chat |
| Drupal 9 | EOL, superseded by 10 | Block embed works; plan the move to 10 |
| Drupal 10 | Supported | Full contrib module support |
| Drupal 11 | Current | Recommended, taxonomy-aware crawl |
Decoupled and headless notes
More Drupal shops now run a headless front end (Next.js, Nuxt, or a native app) with Drupal as the content back end over JSON:API or GraphQL. The chat widget does not care which rendering layer you use: you embed the same async snippet in your front-end app instead of a Drupal block. What changes is how the bot reads content. Rather than crawling rendered HTML, point it at your JSON:API endpoints so it indexes the structured node and field data directly, including taxonomy terms.
Two things to check in a decoupled setup: make sure the JSON:API resources you expose to the bot are the published, access-checked ones (not an over-permissive endpoint), and keep the language negotiation consistent so the front end and the bot resolve the same translation for a given visitor. Handled that way, a headless build gets cleaner answers than a traditional crawl, because the bot reads fields instead of guessing from markup.
A worked example: a university site
A public university ran a Drupal 10 site with about 4,000 nodes across admissions, financial aid, course catalog, and IT help. Their web team fielded the same questions every August: "when is the tuition deadline", "how do I reset my student password", "where do I submit the FAFSA". Front-desk email hit 1,900 messages the first week of term, and answers lagged two to three days at the worst of it.
They installed the contrib module and scoped the crawl to the admissions, financial-aid, and IT node types, plus the localized Spanish translations. The bot answered in whichever language the visitor was browsing, thanks to Drupal's per-node translation. Six weeks in, it resolved 61% of those repeat questions with no staff touch, first-week email fell by roughly half, and the WCAG 2.2 AA widget passed their Section 508 review without a remediation ticket. They ran the whole pilot on the free plan before scaling. Because the same widget also runs as their departmental website AI chatbot, one docs update propagates everywhere. Plan details are on the pricing page.
Common mistakes on Drupal sites
- Crawling every node type. Indexing archived press releases and old event nodes dilutes answers. Scope the crawl to the taxonomies people actually ask about.
- Pasting the snippet in a text format that strips scripts. Basic HTML filters out
<script>. Use Full HTML for the block, and confirm the input format is not overridden by a text-format permission. - Ignoring translation context. If the bot indexes only the default-language nodes, Spanish or French visitors get English answers. Include the translated nodes in the crawl scope.
- Skipping the accessibility audit. Gov and higher-ed sites carry Section 508 or ADA obligations. Confirm the widget is keyboard-operable and screen-reader-tagged before launch, not after a complaint.
- Forgetting the privacy notice. Public-sector sites should show a short data notice on widget open and anonymize transcripts on a schedule.
Frequently asked questions
Is Drupal 7 still supported?
Drupal 7 reached end of life in January 2025. We strongly recommend upgrading to 10 or 11 before deploying chat so you are on a supported, secure base.
Will it work with Layout Builder?
Yes. The snippet placed via a block plugin is available across layouts, so it renders consistently whether a page is built with Layout Builder or a classic region.
Do I need a developer to install it?
Not for the block embed. A site builder can paste the snippet into a Custom Block and place it in a region in about 10 minutes. The contrib module route is two commands (composer require and drush en), usually run by a developer.
Will it slow down my site?
No. The widget loads asynchronously after render, so it does not block Core Web Vitals, and it sits outside Drupal render caching and BigPipe, so your cache behavior is unchanged.
Does it work with multisite?
Yes. Each site can point at its own workspace and knowledge source, or several can share one, which fits a university running many department subsites on one platform.
What does it cost for a public-sector site?
The free plan covers 2 seats and 100 AI conversations a month with no vendor branding. Higher tiers add volume, and the enterprise tier adds SOC 2, ISO 27001, and HIPAA readiness that gov and health sites often need. See pricing.
Related resources
Drupal-grade AI chat
Taxonomy-aware, multilingual, WCAG 2.2 AA. Built for higher-ed, gov, and large nonprofits.
Start free