Docs
Documentation
Written against the build as it stands. Anything not yet implemented is marked, rather than described as though it exists.
Requirements
These are the requirements for the first build, which is the WordPress one. Every other platform gets its own build with its own requirements, and the state of each is on Works with your CMS.
- WordPress 6.0 or later
- PHP 8.1 or later
- An API key from OpenAI, Anthropic, Google or Mistral
- No cron dependency, no shell access, no Node on the server
Install
- Plugins, Add New, Upload Plugin, choose the zip, Install Now.
- Activate.
- Settings, DFYe. Paste your model key and save.
The first index runs immediately. On a large site it continues in the background and the widget goes live as soon as the first pass completes.
Choosing what gets indexed
By default DFYe indexes every published post, page and product. It never indexes:
- Anything marked noindex by your SEO plugin
- Anything password protected or private
- Drafts, revisions and trashed content
A per-post switch in the editor sidebar takes anything else out.
Theming the widget
Every visual decision is a CSS custom property on the widget host. Set them in the settings panel, or in your theme if you would rather keep it in code:
dfye-chat {
--dfye-action: #6c4dff; /* your accent: the ask bubble, the send button, the launcher */
--dfye-action-on: #ffffff; /* text on the accent */
--dfye-bg: #ffffff; /* the header and composer */
--dfye-surface: #ffffff; /* the panel */
--dfye-ink: #0b0d12; /* text */
--dfye-radius: 18px;
--dfye-font: "Your Face", system-ui, sans-serif;
} The widget defaults to your visitor's system font on purpose, so it never makes your site
download a typeface. Hand it yours with --dfye-font. Dark mode is automatic;
pin it with data-theme="dark" on the element if your site is always dark.
The widget renders inside a shadow root, so nothing in your theme leaks in and nothing in the widget leaks out. That is why these properties are the entire theming surface: there is no stylesheet to fight.
The embed, on any platform
The widget is a plain script and does not care what generated the page around it, so it runs on a CMS that has no plugin build yet, and on a site with no CMS at all. What the plugin adds on top is the reading: crawling your published pages, keeping the index current when you edit one, and the question log. One script tag for the floating widget:
<script src="https://dfye.com/w.js" data-dfye="demo" defer></script> Or a container for an inline panel, which is what the demo page uses:
<div data-dfye-inline data-opening="Ask me anything."></div>
<script src="https://dfye.com/w.js" defer></script> Size budget
The build fails if the widget goes over 20kB gzipped. The current build is 9.7kB gzipped, 8.3kB brotli, 27.1kB raw. That figure is written into this page by the build itself, so it cannot drift from reality.
Not built yet
Honest list of what this documentation describes but the plugin does not do today:
- The WordPress build itself. The widget and the retrieval engine ship; the PHP wrapper is next, and every other platform on Works with your CMS is behind it.
- The licence key and update endpoint.
- The admin question log.
Progress is tracked on the launch page and it is updated as things land, not in advance.
Put a real answer on every page.
Ask this site's own widget a question and watch it cite the page, or refuse. It is the same plugin, running on the same content you are reading.