Knowledge Base
Getting started
Setting up a new Convoro site.
Can I run a site without forums?
Yes. Admin → Modules lets you switch any application off, including Forums. Its pages, menu links and widgets disappear and its data is left untouched.
Administrators
How do I change which page is my home page?
Admin → Modules. Press “Make front page” beside any application that is switched on, and visitors arriving at the address of your site land there instead of on the welcome page.
Administrators
Branding and appearance
Your logo, your favicon, your colours.
How do I change the logo in the header?
Admin → Settings → Branding. Upload a logo and it replaces the site name in the header. With no logo set, your site name is shown as text instead.
Administrators
My logo disappears in dark mode. What do I do?
Upload a second logo under “Logo for dark mode”. Convoro sends both and the browser picks, which is the only approach that works when somebody has their theme following their system.
Administrators
Why does my logo have a solid block behind it?
The file itself is not transparent. Some tools offer a “transparent background” and still export a flattened image with no alpha channel at all.
Administrators
How do I set the icon that shows in the browser tab?
Admin → Settings → Branding → Favicon. Upload one square image and Convoro produces every size a browser or a phone asks for.
Administrators
What size should a forum cover image be?
Anything wide. Covers are shown whole rather than cropped, so nothing is cut off — a wide image around 1600 pixels across works well.
Administrators
Widgets
Blocks you can place on the pages of your site.
How do I put a widget on my forum index?
Open the account menu and choose “Arrange widgets”. Drag one from the list on the left onto any highlighted area of the page, then save.
Administrators
Can I put a Downloads widget on my forum index?
Yes. Any widget can go in any area — a “Newest files” widget works on the forum index, and a “Recent topics” widget works on the Downloads page.
Administrators
How do I get rid of a widget I no longer want?
In “Arrange widgets”, press the X on the widget itself. It goes when you save, and Discard brings it back until then.
Administrators
Pages and databases
Custom pages, and structured content of your own.
How do I make a list of structured content, like recipes or staff?
Admin → Databases. Create a database, give it fields, and add records. It gets its own address at the site root, a list view, and a page for each record.
Administrators
Can I have a field that only staff can see?
Yes. Tick the groups that may see it when you edit the field. Everybody else will not see it on the record, in the list, in the API, or in search results.
Administrators
If I rename a field, do I lose what people have entered?
No. The label can be changed freely — records store their answers under a key that is fixed when the field is created and never changes.
Administrators
Knowledge Base
Writing documentation people can find.
What makes a good Knowledge Base article?
One question, answered on its own. Fill in “the question this answers” in the words somebody would type, and write the short answer as a real answer rather than an introduction.
Administrators
Can I keep internal notes in the Knowledge Base?
Yes. Restrict an article to your staff groups and it disappears completely for everybody else — from the index, from its own address, and from search.
Administrators
How do I tell you an article did not answer my question?
Use the Yes / No buttons at the foot of any article. You need to be signed in, and you can change your answer later.
Members
Members and moderation
Groups, permissions and keeping order.
How do I give somebody moderator powers?
Admin → Members, open their profile, and add them to a group that has moderator permissions. Powers come from groups rather than from individuals.
Administrators
Why can I no longer edit my post?
Sites can set a time limit for editing your own posts. Once it passes, the edit button goes. Moderators are never limited.
Members
Taking part
Posting, replying, following and finding your way around.
How do I get notified when someone replies?
Press Follow on a topic, forum or club and new activity in it reaches your notifications. You follow anything you post in automatically, and Unfollow stops it without deleting anything you wrote.
Members
Can I change my username?
Yes, in Settings, unless the administrator has switched it off or you have changed it recently. Your old name is held for a while so nobody else can take it and be mistaken for you.
Members
Why can I no longer edit my post?
Editing is usually allowed for a set time after posting, and the window is the administrator's choice. Once it closes you can ask a moderator, who is never limited by it.
Members
How do I message another member privately?
Open their profile and press Message, or start one from the messenger. You can add more people to a conversation afterwards, and everybody added sees what was said before they arrived.
Members
How do I search this site properly?
The box in the header searches everything you are allowed to see — topics, posts, files, articles and more. The full results page lets you narrow by kind, by author and by where it was posted.
Members
What are clubs and how do I join one?
A club is a space run by members, with its own forums, photographs and events that only its members can see. Some you join instantly, some need a leader to approve you, and some are invitation only.
Members
How do I download my own data?
Settings → Privacy has a button that builds a file of everything the site holds about you. It is prepared in the background and you are told when it is ready.
Members
What happens to my posts if I delete my account?
Your account and personal details go. What happens to your posts is the administrator's policy — usually they stay, with your name removed, because deleting them would tear holes in conversations other people took part in.
Members
Groups and permissions
Who can see what, and how Convoro decides.
How do permissions work?
Everything is restricted to groups. A thing with no groups ticked is visible to everybody; tick some and only those groups can see it. Signed-out visitors count as being in the Guests group rather than in no group at all.
Administrators
How do I make a forum only staff can see?
Edit the forum, and under "Who may read it" tick the groups allowed in. Everything follows — the index, search, activity, streams and widgets all stop showing it to everybody else.
Administrators
What happens when I delete a member group?
Its members move to the default group so nobody is left without one, and every restriction pointing at it is removed. Without that second part, a page restricted to a group that no longer exists is restricted to nobody.
Administrators
Why can I not see club groups in Admin → Groups?
Every club owns an automatic group, which is how its content is kept to its members. They are hidden from the Groups screen and from every "who may read this" list on purpose, and cannot be picked as ordinary groups.
Administrators
Can I get back a topic somebody deleted?
Yes. Admin → Deleted content holds soft-deleted topics, posts and application content, and you can restore them. Uploaded files are kept too, so a restored image is not a broken one.
Administrators
What is the difference between hiding and deleting a post?
Hiding takes it off the page but leaves it readable by moderators, so there is a record of what was said. Deleting removes it for everybody, moderators included, and is recoverable from Deleted content.
Administrators
Appearance
Themes, logos, menus and the shape of your pages.
How do I make my forums show as a grid?
Admin → Forums sets a site-wide default, and each category can override it. Readers can also choose for themselves, and their choice wins.
Administrators
How do I put a picture on a forum or a download category?
Edit it and drop an image into the cover field. One file is kept at one size and positioned with a focal point, so the same upload serves the card and any wider use.
Administrators
How do I add a block to my forum index or sidebar?
Use the arrange mode on the page itself. Every widget any switched-on application offers can go in any area, and a widget belonging to an application you later switch off hides rather than breaking.
Administrators
Applications
Forums, Downloads, Pages, Blog, Events, Gallery, the Knowledge Base and Clubs.
What is the difference between System and an application?
System is the core — members, groups, search, widgets, the messenger — and is always there. The eight applications sit on top of it and can each be switched off, so a Downloads-only or Gallery-only site works properly.
Administrators
How do I charge for a download?
Set a price on the file in Admin → Downloads. Convoro takes payment through PayPal, grants access when the payment settles, and can charge a renewal on a schedule if you set one.
Administrators
How do I use my own page as the home page?
Admin → Modules has a "Make front page" button beside each application that is switched on. Only its index moves; every other address keeps working.
Administrators
When should I use a Pages database instead of a forum?
Use one when your content has fields — a directory of members' businesses, a list of servers, a recipe collection. A forum is for conversation; a database is for records people browse and filter.
Administrators
Are gallery images safe? Do they keep their location data?
Every uploaded image is decoded and written out again, so nothing hidden inside the original survives — and that also strips the EXIF, including the GPS coordinates most phones record.
Administrators
How do clubs work and who runs them?
Members create and run clubs themselves. Each gets its own group, and its forum, album, calendar and blog are restricted to that group. Your admin screen is for oversight, not for running them.
Administrators
How should I structure Knowledge Base articles?
One answer per article, self-contained, titled as the question somebody would type. Fill in the question and summary fields — they are what search and the assistant use, and a summary sliced off the body is not an answer.
Administrators
Installing and operating
Getting Convoro running, keeping it running, and what needs a schedule.
Convoro installed and the front page works, but every link 404s. Why?
Your web server is not rewriting URLs, so only the front page ever reaches PHP. Convoro can work without rewriting — add <code>'URL_REWRITING' => 'off'</code> to <code>config/site.php</code> and every address will carry <code>index.php</code>. Turning rewriting on is the better fix, and this article says how.
Administrators
How do I install Convoro?
Upload the zip, open the site in a browser and follow the installer. There is no Composer step, no build step and no shell required — you need PHP 8.5 and a MySQL database.
Administrators
How do I switch on the assistant that answers questions?
Install the AI Assistant extension and put your Anthropic key in Admin → AI Assistant. It answers only from your Knowledge Base, so write the articles first — with none, it will correctly tell everybody that nothing is covered.
Administrators
I finished installing and it went back to the beginning. Why?
A fault in the 1.0.0, 1.0.1 and 1.0.2 downloads, and in the first build of 1.0.3. Download 1.0.3 again and run the installer once more — your database is fine and nothing needs undoing first.
Administrators
Is there a .env file? Where is the database password?
In config/site.php, a PHP file rather than a .env. A .php file is executed by the server; a .env is handed out as plain text by anything serving static files from the application root.
Administrators
The assistant keeps saying that is not covered. Is it broken?
Almost always no. It answers only from published Knowledge Base articles, and saying so is what it is meant to do when none of them cover the question. Write the article and it will answer.
Administrators
Do I need to set up cron jobs?
Convoro works without any, but three commands are worth scheduling: purchases:sweep if you sell anything, privacy:prune, and search:reindex if you use an external search backend.
Administrators
How do I make search better on a large community?
Install the OpenSearch module, point it at your server in Admin → OpenSearch, and rebuild the index. MySQL stays the default and search falls back to it automatically if the server stops answering.
Administrators
My uploaded images work locally but 404 in production. Why?
Your nginx configuration is serving anything ending in .png straight from disk, and Convoro serves uploads through PHP. Add a location block for the path — the list is in tools/deploy/nginx-paths-served-by-php.conf.
Administrators
What do I need to back up?
The database, the content directory, config/site.php and any extensions you installed. The code itself you can re-download; those four you cannot.
Administrators
How Convoro is built
The engine, the module system, and the ideas everything else follows.
How is Convoro organised?
engine/ is the framework, modules/ holds System and the applications, themes/ holds templates and assets, and public/ is the only directory a web server needs to see. There is no vendor directory and no build output.
Developers
How do I create a new module?
A directory under modules/ with a manifest.json and a class named after it extending Module, with register() and boot(). Routes, migrations, services and templates are found by convention from there.
Developers
What is the difference between register and boot in a module?
register() binds services and registers into registries; boot() does work that may depend on other modules. Every module registers before any module boots, which is why widget areas must be registered in register().
Developers
How do I add a database table or column?
Add a dated file to your module's Migrations/ returning an anonymous class extending Migration with up() and down(). Run php tools/convoro migrate. Make it re-runnable — check before you alter.
Developers
How do I add a page to Convoro?
Put it in your module's Routes/front.php or Routes/admin.php. Register literal paths before patterns, or a slug will shadow them.
Developers
What is the .cvr template syntax?
Templates are .cvr files compiled to PHP. {{ }} escapes, {! !} does not, and the directives are @layout, @section, @yield, @if, @each, @empty, @notempty, @include, @php, @hook, @csrf and @asset.
Developers
How do I use the database or another service in my code?
Everything is in the container. $this->app->make('db') for the query builder, and the same for anything a module bound in register(). Bind your own with $this->app->singleton().
Developers
How do I make my module's content respect permissions?
Add a <thing>_groups table, check the viewer's group ids against it in your service, and add the table to Groups::RESTRICTION_TABLES. Enforce it in the service, never in a template.
Developers
How should my module accept a file upload?
Sniff the type from the bytes, never the filename or Content-Type; store outside the document root and serve through a controller; and add the path to the nginx list or it will 404 only in production.
Developers
How do I run and write tests?
php tests/run.php, optionally with a filter. A test file returns an array of name => callable and passes if it does not throw. Clean up what you create, in a finally.
Developers
Extending Convoro
Registries, widgets, search, and how modules avoid knowing about each other.
How do I make two modules work together?
Through a registry in System, not a direct reference. A module that names another cannot be installed without it, and fatals on a site where it is switched off.
Developers
How do I get my module's content into search?
Register a content type with a find callback that takes the viewer's group ids and filters by them. A find that ignores the viewer is a leak.
Developers
How do I make my content work with OpenSearch?
Add documents and gates callbacks to your content type. documents yields what to index; gates says which containers a viewer may read. Provide both or your type is skipped entirely.
Developers
How do I add a widget other people can place?
Register a widget type in register() with a render callback returning HTML. Filter by the viewer's groups inside it — a widget renders on pages you are not thinking about.
Developers
How do I let people comment on something my module owns?
Use the discussions service. It gives your record a hidden topic and reuses posts, so comments get editing, reporting, reactions and moderation without you building any of it.
Developers
How do I make my module honour account deletion?
Register your tables with the personal_data service in boot(). One line per table naming the column that points at a member.
Developers
What is the difference between a module and an extension?
A module ships with Convoro; an extension is a package somebody installs into extensions/. The code is the same shape — the console can scaffold and package one for you.
Developers