Everything posted by Ernest Defoe
-
Convert - convert those visitors to members
Most of the people reading your community are not members of it. They arrive from a search result, read the answer they came for, and leave — and nothing about that visit is recorded, so you never find out which of your topics were the ones worth joining for. Convert does two things: it asks them to join at the moment they are most likely to say yes, and it tells you which pages actually worked. Ask at the right momentInvision Community's guest sign-up block is a static panel in the sidebar. It says the same thing to somebody who has just landed as to somebody who has read six topics and is scrolling to the bottom of a seventh. Convert puts the prompt where the visitor already is, and only when it makes sense: The reply box Where a signed-out visitor is told they need an account to reply. They have read to the bottom of a discussion and want to say something — the strongest moment the software has. Under the discussion At the end of the posts on a topic. Every page The foot of any page, including Downloads, Pages and Gallery. And only to the right people. Show it after somebody has read two pages, not one. Show it only to visitors who arrived from a search engine. Show it only in the forums where it makes sense. Show it at most twice a visit, so it never becomes wallpaper. "No thanks" is remembered. When a visitor dismisses a prompt it stays dismissed, for as long as you choose. Nothing is more likely to lose a reader than asking them the same question on every page after they have already said no. Then find out what actually workedEvery prompt is measured the whole way down: shown, clicked, joined, posted. Not just the click — the click is easy. The number that matters is at the bottom. What brings people in The pages people were reading when they decided to join, ranked. Usually a surprise, and usually the most useful screen here — it tells you what your community is actually good at before you write another word of copy. Where they came from Search, social, another site, or direct — recorded from the first page of the visit, so it survives them clicking around. Compare two versions Give two prompts the same test name and each visitor sees one of them, consistently, for their whole visit. Then read the two rows side by side. It counts the people who joined without being asked, too. That is the number every prompt is competing against, and leaving it out is how conversion reporting ends up permanently flattering. If forty people joined unprompted last month and three came through a prompt, you have learned something real. Honest about what it showsA rate with nothing behind it is shown as blank, not as 0%. "Never shown" and "shown a thousand times and ignored" are opposite findings, and printing zero for both hides the difference exactly when you need it. Impressions are counted on the server, as the page is built. Counting them with a script means an ad blocker can delete them, which quietly inflates every click rate you look at. Posting is tracked separately from joining. A prompt that produces accounts which never post has produced nothing, and the report is built so it can say so. What it collectsDaily totals per prompt — shown, clicked, dismissed. No row is ever written per visitor. The only per-person record is one row for each member who registers, so that the report can say which page brought them in; it is created at registration and belongs to a member you already have. The only cookie it sets exists to remember that somebody pressed "No thanks". Everything else rides the session Invision Community already keeps. RequirementsInvision Community 5.0 or newer (self-hosted) Registration open to guests, which is what there is to convert them to Nothing else. No account, no key, no external service.
-
Pulse — traffic analytics that never leave your database
Pulse — traffic analytics that never leave your databaseInvision Community tells you a great deal about your content. Registrations, posts, reactions, badges, points, solved rate — there are forty statistics screens in the AdminCP and they are genuinely good. None of them tell you about your traffic. Not pageviews. Not visitors. Not where anybody came from. Guests, who are most of the people reading your community, appear nowhere at all — they exist only in the sessions table, which is wiped continuously. The official answer is Google AnalyticsInvision Community ships an integration whose entire job is injecting Google's tracking script into your pages. That is the supported route, and for a lot of communities it is not a route at all: a cookie banner, a data-protection question you would rather not answer, and your members' browsing habits handed to an advertising company. Pulse is the third option. Every figure below is measured on your own server, stored in your own database, and shown in your own AdminCP. Nothing is sent anywhere. What it measuresHeadline Pageviews · visitors · sessions · bounce rate · average visit length Where they went Top pages, with the whole path — not just content items Where they came from Referring sites, with your own domain excluded Who Members against guests, and desktop against mobile and tablet Countries A world map you can hover, country by country Every headline figure carries a trend line, and the whole dashboard can be read over seven, thirty or ninety days. No JavaScript. No cookies. No IP addresses.This matters enough to be specific about, because "privacy-friendly" is easy to claim. No script is loaded. Not one byte of JavaScript, not even for the charts — the graphs and the world map are inline SVG. Nothing is fetched from anywhere. No cookie is set, so Pulse adds nothing to a consent banner. No IP address is ever written to the database. One is read to compute a hash and immediately discarded. There is no column to store it in. The visitor identifier is salted with a secret that changes every day. It cannot be reversed, and it cannot be matched from one day to the next — so it counts visitors without following anybody. A pageview records whether somebody was signed in, never which account. There is no member column. Raw events last hours, not for ever. They are rolled into daily totals and deleted. After that a day exists only as a handful of numbers. The settings screen lists all of this in the interface, with live counts, so you can answer a data-protection question by pointing at it. It cannot slow your forum downThe recording happens after the page has already been delivered. Invision Community closes the connection to the browser before running its shutdown work, and Pulse writes its single row at that point. The visitor has their page before the database is touched. There is no query on the way in, no join, and nothing that can fail in a way that affects the page. Honest about the limitsSome things cannot be measured without JavaScript, and it is better to say so than to invent them: A one-page visit has no measurable length. There is no exit signal, so bounces contribute nothing to the average visit time rather than a made-up figure. The average is over visits that can actually be measured. Visitors are counted per day and added up. Somebody who comes on Monday and Tuesday counts twice over a week. Counting them once would mean keeping the raw records for the whole period, which is exactly what this app is designed not to do. Countries need a header from in front of your site. If you run Cloudflare or a load balancer that provides one, the map fills in. If nothing supplies it, the map is hidden rather than shown empty. Pulse does no geolocation lookups of its own — that would mean either an external request or shipping a database of IP ranges. AlsoCrawlers are separated out, using Invision Community's own spider detection. Search engines can be most of your raw traffic and none of your audience. You can exclude your own staff, so your browsing does not become the story. Retention is yours to set — hours of raw events, days of history. No core files are edited. Upgrading Invision Community will not break it. RequirementsInvision Community 5.0 or newer (self-hosted) A running task scheduler — the hourly rollup is what produces every figure Nothing else. No API key, no account, no external service.
-
Drip Campaigns — email sequences that run themselves
Drip Campaigns — email sequences that run themselvesSomebody registers at three in the morning on a Saturday. A week later they have posted nothing and you have not spoken to them, because nobody was awake to. Multiply that by every member who ever joined and you have the reason most communities lose people in their first fortnight. A drip campaign is a sequence of emails that starts when a member does something and then unfolds on their clock — a welcome straight away, a nudge two days later, an invitation to introduce themselves after a week. Everyone gets the same thoughtful onboarding regardless of when they arrived. Invision Community has this. On Cloud. On some plans.Email Drip Campaigns arrived in Invision Community 5.1 for Cloud customers, on selected packages. Self-hosted communities do not get them at all. This app brings sequences to self-hosted — and adds the two triggers the Cloud version does not have. Both were the most-requested things in the comments under the announcement, and neither made it in. The trigger nobody else offers: they stopped showing upEvery other trigger is an event — somebody did a thing, so something happens. Absence raises no event. Nobody fires a notification when a member quietly stops visiting, which is exactly why re-engagement is the hardest email to send and the one worth the most. This app goes looking instead. Set a number of days, and members who cross that line are enrolled by a scheduled scan. A "we miss you" series that actually reaches the people it is about. And renewals, which are not first purchasesInvision's Cloud version fires on "purchases a subscription". This one also fires on renewals, on an upcoming expiry — the moment worth acting on while there is still something to save — and on cancellations. Thanking a three-year customer for joining reads badly; these deserve different emails and now they can have them. Every triggerJoining Registers · confirms their email · updates their profile Taking part Joins a club · responds to an event · completes a course Money Buys · renews · is about to expire · cancels Absence Has not visited for a set number of days Chaining Another campaign finishes Event responses can be narrowed to one answer, so you are not telling somebody who declined that you will see them there. Triggers for applications you do not run are never shown, and never listened for. Audiences built from filters you already haveThis app invents no filters of its own. It uses Invision Community's own member filters, which means you can target by group, join date, last visit, content count, reputation, achievements and profile fields — and, if you run Commerce, by purchases, subscriptions, total spend and donations. Anything a third-party application adds to that list works here too, automatically. It checks again before every emailThis is the part that stops a campaign embarrassing you. Someone qualifies for "we miss you" on Monday, comes back on Tuesday, and on Wednesday the second email arrives telling them how much you miss them. Audiences are re-checked before every send, not just at enrolment, so a member who stops matching stops receiving. It can be switched off; it is on by default for a reason. Care taken where it mattersOpting out is honoured absolutely. A member who has turned off administrator emails is never enrolled, never sent to, and is removed from a campaign if they opt out mid-sequence. Unsubscribing uses Invision Community's own mechanism — the same link, the same page, and a key derived from the account so it stops working when the password changes. Nobody is enrolled twice. A trigger that fires more than once for the same person does nothing the second time. Disabling an email does not strand anyone. Members waiting on that step move to the next one rather than sitting there for ever. Posting and paying never wait on email. Enrolment happens in the background; sending happens on a schedule. No core files are edited. Upgrading Invision Community will not break it. Check a member"Why didn't they get it?" has a dozen possible answers. There is a screen that gives you the actual one: whether they can be emailed at all, whether they match each campaign, whether they are enrolled, which step they are on, and when the next email is due. RequirementsInvision Community 5.0 or newer (self-hosted) Working outgoing email and a running task scheduler Commerce, Calendar, Clubs are all optional — their triggers appear only if you run them
-
Auto Tagging — tags every topic by what it is about
Auto Tagging — tags every topic by what it is aboutTagging only works if people do it, and people do not do it. Your tag list gets built with care, gets used properly for a fortnight, and then quietly stops being used at all. Everything posted after that is untagged, so tag pages go stale, filtering misses things, and the vocabulary you designed is doing nothing. This reads each new topic and applies the tags that actually fit it. It matches meaning, not wordsA topic titled "my card keeps getting declined and I was charged twice" gets tagged billing — a word that appears nowhere in it. Invision's own tag box offers autocomplete over text the author has already typed, which cannot do this. Matching here is done on meaning, so a topic reaches the right tag even when it shares no vocabulary with it at all. It uses your tags. Only your tags.Nothing is invented and nothing new appears in your tag list. The app reads the tags you have already defined and chooses between them, so the vocabulary stays exactly as you designed it. Disable a tag and it stops being applied. It also learns what each tag means in your community, not in general. A tag is understood partly from the topics that already carry it, so build on a woodworking forum and build on a gaming forum end up meaning quite different things — as they should. It will not touch work someone did by handThis is the part worth reading carefully. Adding a tag in Invision Community is not actually an operation the platform offers — saving tags replaces every tag on the item. A tagging tool that gets that wrong will silently delete tags your moderators set, and nobody will connect the loss to the app that caused it. Auto Tagging always writes the complete set: existing tags, the new ones, and the item's prefix. By default it leaves anything already tagged completely alone. Honest about confidenceEvery match carries a score, and there is a threshold below which nothing is applied. The defaults are set to tag less rather than tag wrongly — a wrong tag is worse than a missing one, because someone has to find it and undo it. There is a Preview screen that scores real topics from your own community and shows you the numbers, so you can pick a threshold from evidence rather than from a guess. It tags nothing while you do it. Fits around the site rather than into itPosting never waits. Tagging happens in the background after the topic is saved. Nobody sits watching a spinner while an API is called. Backfill on demand. Tag the topics you already have, batched so a large community does not arrive as one enormous bill. Scope it. Restrict it to certain forums, and list any tags it must never apply — solved and staff pick mean something procedural that only a person should decide. Respects your limits. It will not push an item past your site-wide maximum tags per item. One key, one bill. If you run Related Topics or AI Assistant, it can borrow their embeddings key instead of asking for another. No core files are edited. Upgrading Invision Community will not break it. What it costs to runAuto Tagging needs an embeddings API key — Voyage AI or OpenAI. This is not a subscription to me; you hold the account and pay the provider directly. Embeddings are among the cheapest things either provider sells. Your tag list is processed once and then only when it changes, and each new topic is a single small request. For an ordinary community this runs to a trivial amount per month, and there is no charge at all while nothing is being posted. RequirementsInvision Community 5.0 or newer (self-hosted) Forums Tags enabled, with at least a few tags defined An embeddings API key from Voyage AI or OpenAI — or Related Topics / AI Assistant already installed, in which case it can share theirs
-
Passkeys — sign in with a face, a fingerprint or a security key
Passkeys — sign in with a face, a fingerprint or a security keyA passkey replaces the password entirely. Your members tap their phone, look at their laptop, or touch a security key, and they are in. Nothing to remember, nothing to type, nothing to leak. This is a real login method, not a second factor. Invision Community has no WebAuthn support of any kind — this registers through core's own login-handler system, so the passkey button sits alongside your existing sign-in options and behaves like one of them. Why passkeys and not another password policyThey cannot be phished. A passkey is bound to your domain by the browser. A convincing copy of your login page on another domain simply will not work — the credential refuses to sign for it. They cannot be reused. Every site gets a different key, so a breach somewhere else cannot reach your community. There is nothing on your server worth stealing. You store a public key. It verifies signatures and can create none. Nothing to reset. No "forgot password" flow, no reset emails, no support tickets about them. What members seeAdding one A page in their account settings. One button, their device prompts, they name the key. Several devices, several keys. Signing in A "Sign in with a passkey" button on the normal login form. Managing them Rename or remove any key, with the date added and last used, so an old laptop is easy to spot and revoke. Works with what people already haveFace ID and Touch ID, Windows Hello, Android biometrics, iCloud Keychain, Google Password Manager, 1Password, Bitwarden, and hardware keys such as YubiKey. Nothing to install — every current browser has this built in. Built carefully, because this is authenticationEvery check the WebAuthn specification asks for is performed, and the reason each one exists is that skipping it breaks the model. The challenge is single-use, purpose-bound and expiring, so a captured ceremony cannot be replayed. The origin is compared exactly — not "starts with" — so a lookalike domain cannot relay it. Registrations cannot be replayed as logins. A signature is verified over exactly the bytes the authenticator signed. Cloned-device detection. WebAuthn gives one signal that a credential may have been copied: a signature counter that goes backwards. If that happens the passkey is disabled and the member is told why. Authenticators that don't count at all report zero forever — that is normal, and is never mistaken for an attack. No third-party code. No composer packages, no bundled cryptography library, nothing fetched at runtime. Verification uses PHP's own OpenSSL functions. Hidden when it cannot work. Browsers refuse passkeys outside a secure context, so on a site without HTTPS the button does not appear rather than failing when pressed. No core files are edited. Upgrading Invision Community will not break it. What you controlHow many passkeys each member may register Whether to require user verification — a fingerprint, face or PIN, rather than mere presence Whether a backwards counter disables the credential The name members see on their device when it asks them to confirm RequirementsInvision Community 5.0 or newer (self-hosted) HTTPS. Browsers will not create or use a passkey without it. PHP with OpenSSL — standard on every install
-
Community Stats
Community Stats — one block that fits wherever you put itInvision's built-in stats block shows three things: total members, most ever online, and the newest member. No posts, no topics, no sense of whether any of it is growing. This shows what a visitor actually wants to know, with the trend behind it — and it reflows to whatever space you give it. The same block, both orientationsIt measures its own container, not the browser window. Drop it in a 260px sidebar and it renders as a neat stacked list. Drop it across a content column and the same block becomes a row of tiles. Nothing to configure and no second block to maintain — a normal responsive block cannot do this, because a viewport media query cannot tell a narrow sidebar from a wide page. If you would rather decide yourself, you can force it to always stack or always tile. Who's online, with facesA row of avatars linking to profiles, with an overflow count when there are more than will fit. Anonymous browsing is respected, properly. A member who has chosen to browse anonymously is never shown and never counted — and neither are guests or search engine spiders. The number beside the avatars is derived from the same list that draws them, so the count and the faces can never disagree with each other. Figures that mean somethingCounts Members, topics, posts, online now, newest member And, if you run them Files, images, blog entries, events Trend A rise or fall over a period you choose Sparkline A 30-day line beside each figure Only the figures your community can actually produce are offered — install Gallery and an image count appears in the list by itself. Nothing runs a query for something you are not showing. Trends work on the first dayMembers, topics and posts can be rebuilt from their own timestamps, so one click gives you a month of history immediately rather than asking you to wait a month for the block to look finished. Everything else starts recording from now. And until there is real history, no trend is shown at all. A "+0" on a fresh install would be a lie dressed up as data. Built to sit on a busy pageCached. Counting every row on a large community is not free, so figures are shared between visitors for an interval you set. No JavaScript. The sparklines are drawn inline as SVG — no charting library is loaded, on any page the block appears on. Big numbers stay readable. 12,300 becomes 12.3k rather than breaking the layout of a sidebar. Follows your theme, or takes an accent colour of your choosing. No core files are edited. Upgrading Invision Community will not break it. RequirementsInvision Community 5.0 or newer (self-hosted) Forums, Downloads, Gallery, Blog and Calendar are all optional — the block simply offers whatever you have
-
SEO Toolkit
SEO Toolkit — find what's costing you traffic, then fix itThis does not claim Invision Community has no SEO. It has friendly URLs, sitemaps, canonical tags and JSON-LD, and they work. What it has no answer for is "is any of it actually set up correctly on my site, and what is search doing with it?" That is the gap. The auditOne button. It reads your community and tells you what is wrong, worst first, with a link to each offender. Site-wide Friendly URLs turned off · friendly URLs not forced · site offline · no HTTPS · robots.txt blocking everything · sitemap missing from robots · no default share image · Twitter cards off Content Duplicate titles · titles too short or too long to survive a search result · thin topics that will never rank Links Dead outbound links, and which topic each one is in Two findings that quietly cost the most. Friendly URLs being off means every page is served at a query string. And with them on but not forced, every page is reachable at two addresses — which search engines read as duplicate content. Invision's own note on that setting says so. Neither shows up anywhere in the AdminCP until something has gone wrong. Findings are fingerprinted, so re-running updates what is still true rather than piling up duplicates — and anything you have dismissed stays dismissed instead of reappearing every week. Anything you fixed disappears on the next run. Search Console and GA4, in the AdminCPClicks, impressions, click-through rate and average position. What people actually searched for. Which pages got the clicks. Sessions, users and landing pages from GA4 alongside them. A service account, not OAuth. Paste one JSON key. No consent screen, no redirect URL to register, no refresh token to keep alive. The last three days are deliberately excluded. Search Console lags, and including today makes every report look like a traffic collapse. Answers are cached for the day, because the data only changes daily and the calls are metered. Redirects that core cannot doCore follows items that were merged into other items. It has nothing for "we restructured the forums and forty URLs moved" — which is exactly when a site loses its rankings. 301, 302, 307 or 308, with a hit counter so you can see what is still being used Prefix rules that carry the rest of the path across, so /old/a/b lands on /new/a/b rather than dumping everything on one page Loops are refused, not stored. A redirect loop is invisible until a crawler walks into one, and then the page is simply gone from the index The tags core leaves outTwitter card tags. Invision emits Open Graph tags from eight applications and no twitter: tags whatsoever. These are derived from the Open Graph tags already on the page, so the two can never disagree. A fallback share image, used only when a page has none of its own. Per-forum overrides. Core's meta tag feature is a flat list keyed by exact URL, so keeping one forum out of search means knowing every address inside it. Here you pick the forum, tick noindex, and choose whether it applies to sub-forums. Built to be safe on a live siteThe audit never crawls you over HTTP. Everything is answered from the database. A crawler on a large forum is slow and hammers the server it is meant to be helping. Outbound links are the one exception, and they are fetched slowly, in small batches, on a daily schedule — never in a burst that looks like an attack on the sites you link to. HEAD first, falling back to GET, because plenty of servers refuse HEAD while serving pages perfectly well. A refusal is not evidence a link is dead. Requests are pinned to http and https, and private address space is skipped, so a background job cannot be steered somewhere it should not go. No core files are edited. Upgrading Invision Community will not break it. RequirementsInvision Community 5.0 or newer (self-hosted), with the Forums application Optional: a Google service account, for Search Console and GA4 reporting
-
Live Topics
Live Topics — run a proper live event, and keep the topic afterwardsSchedule a session. Attendees see a countdown. A host presses start and the room opens: video on one side, moderated questions in the middle, live chat alongside. When it ends, everything worth keeping becomes an ordinary forum topic. This is the feature Invision Community sells on its Cloud plans. It has never been available for self-hosted communities, and nobody else builds it. What Cloud charges for it. Live Topics is not included on the entry plan at all. The next tier up allows two events a month. Ten a month arrives at $259/month, and unlimited only at $619/month. This application has no quota. Run one a week or one a day; it is the same price. The roomVideo YouTube, Vimeo, Twitch, or a direct stream. Changeable mid-session, so a wrong link is not a disaster. Cloud supports YouTube only. Main Questions The curated stream. Sortable by newest or by what the room most wants answered. Chat The running conversation. A host can promote any message into a Main Question — which is also how they decide what survives. Three columns on a desktop, with a draggable divider. Tabs on a phone. What hosts and staff can actually doPromote a chat message into a Main Question. The good question always arrives in the chat, never in the right box. Close replies per question — to everyone, or to everyone but staff, so an answered question stops collecting "+1". Mark when a question was answered against the video position. The converted topic then deep-links to that moment. Approve questions or chat before they appear, when the session warrants it. Mute or remove one person without locking chat for everybody. Cloud has neither; its only controls are global. A staff-only channel where staff coordinate, and where reports arrive — during a live event nobody is watching the normal reports queue. Four things Cloud does not doMembers can ask to be told when it starts. Cloud reminds the hosts and tells members nothing, so anyone who missed the start has to guess. Here anyone can opt in, and the notification fires when a host actually starts — which is the useful moment, since starting is manual. A live attendee count. Visible in the room and on the block, so a session looks alive. The chat can be kept. Cloud discards it outright. Keep it as one collapsed post at the end of the topic, or discard it — your call, per event. An AI recap. Optional. At conversion, the questions and answers are summarised into the opening post, so somebody arriving a week later gets the point without reading forty posts. Cloud produces no post-event artifact of any kind. It becomes a real topicMain Questions and their replies are written into your chosen forum as a normal topic, each question attributed to whoever asked it and timestamped when they asked. Searchable, quotable, moderatable — an ordinary topic in every respect. Real-time, without requiring anythingThis works on its own. Out of the box the room updates on a short timer, which is how every live-chat application on this marketplace works. If you also run my Realtime application, this detects it and upgrades to its WebSocket gateway automatically — no configuration, nothing to connect. A socket that drops falls back to timed refresh rather than going silent. Bounded on purposeA session ends itself when every host has left, after a grace period you set. A session ends itself at a maximum length you set. An abandoned room is a standing cost, and neither of these should depend on somebody remembering. Nothing is visible to anyone until a host presses start. What you controlWho may schedule live topics, and who may moderate any of them Per event: hosts, staff groups, who may attend, approval rules, destination forum, whether the chat is kept Refresh interval, maximum length, host-absence grace period Whether recaps are written at all, and with which provider RequirementsInvision Community 5.0 or newer (self-hosted), with the Forums application Optional: my Realtime application, for WebSocket delivery Optional: an Anthropic or OpenAI-compatible key for recaps — or my AI Assistant, whose key this will borrow No core files are edited. Upgrading Invision Community will not break it.
-
Related Topics
Related Topics — suggestions that understand what a topic is aboutInvision Community can already show related content. It matches on tags. That means it works exactly as well as your members tag things, which on most communities is somewhere between patchily and not at all — and when everything in a forum carries the same three tags, "related" degrades to "everything". This matches on meaning. It reads each topic, turns it into a vector, and compares topics by what they are actually about. No tags required, and no tagging discipline to enforce. A real example from testing. A topic about a workflow-automation app for Invision matched a topic about an automation extension for a completely different forum platform, at 79%. Different forum, different category, no tags in common. Nothing tag-based could ever have found that. Two ways to show itAutomatically A "Related discussions" list appears below the posts on every topic. No block placement, no template editing. As a block A placeable widget for your sidebar, if you would rather choose where it goes. It only appears on topic pages. Use either, or both. It tells you when it has nothing to sayThis is the part most "related content" features get wrong. If nothing clears your similarity threshold, nothing is shown at all — no empty box, no heading over a blank list, no five tenuous suggestions padding it out. Silence is the honest answer when nothing is related. You tune it against your own content, not a guessThere is no threshold that is right for every community, and this application does not pretend otherwise. On a focused forum — where most topics are broadly the same kind of thing — even unrelated pairs score in the sixties. On a varied one the gap is much wider. So the settings screen shows real matches from your own topics with their real scores, including the ones currently falling below your threshold and greyed out. You pick your number by looking at your own content. That takes about a minute and it is the difference between suggestions people click and suggestions they learn to ignore. Costs, stated plainlyYou need an embeddings API key — Voyage AI or any OpenAI-compatible provider. One API call per topic, once. Editing a topic only re-embeds if the text actually changed, so fixing a typo costs nothing. Embedding models are inexpensive. A few thousand topics is small money, but it is not zero and you should know that before you install. Already running my AI Assistant? One switch and this borrows its provider, key and model, so you manage one key and one bill. Built to stay out of the wayNothing blocks posting. Indexing happens on the background queue. An outage at the embeddings provider means new topics wait their turn, never that members cannot post. Permissions are respected. A topic a member cannot open is never suggested to them. Changing the model is safe. Different models produce different vector sizes; mismatched entries are skipped rather than compared, so you get fewer results instead of confident nonsense. Rebuild and they come back. No core files are edited. Upgrading Invision Community will not break it. What you controlHow many suggestions, and the minimum similarity Whether suggestions can cross between forums, or stay within one Which forums are indexed at all Automatic placement on or off RequirementsInvision Community 5.0 or newer (self-hosted), with the Forums application An embeddings API key from Voyage AI or an OpenAI-compatible provider
-
Font Awesome 7
Font Awesome — use the icons you already pay forInvision Community ships Font Awesome 6 Free and gives you no way to change it. If you have a Font Awesome Pro subscription, none of it works here. If you want an icon added since 2024, it isn't there. This is a small, free application that fixes both. It costs nothing. There is no licence key and nothing to renew. If you use Kit mode you are using the Font Awesome subscription you already have — this simply lets Invision Community see it. Two modesMode What you get Font Awesome 7 Free 2,606 icons instead of 2,492 — 115 more than Invision ships. No account needed. Your Kit The full Pro set — around 68,000 icons across six styles, plus Sharp and Duotone if your plan includes them. Both load from Font Awesome's own CDN, not a third-party mirror. Kit setup is one fieldPaste your Kit ID and save. It accepts whatever you have to hand — the bare ID, the kit URL, or the entire <script> tag copied from your Font Awesome dashboard. There is a Test the connection button that tells you what actually loaded before you go looking at your site. Nothing breaksThis is the part worth understanding, because it is why the application is safe to install on a live community. Invision Community loads its own Font Awesome from a core template that offers no way to remove it. Rather than edit that file — which an upgrade would overwrite — this loads afterwards and takes precedence. That has a real benefit beyond upgrade safety. Font Awesome 7 dropped exactly one icon that existed in 6 (fa-vector-square). Because Invision's copy is still underneath, that icon keeps working. An application that replaced Font Awesome outright would have broken it silently on every site using it. The cost is about 70KB of stylesheet that goes unused. That is the trade, stated plainly. What you controlWhich mode — Free 7 or your Kit Which release of Font Awesome 7 Whether the AdminCP uses it too, or stays exactly as Invision ships it Turn it off at any time and you are back to stock, immediately RequirementsInvision Community 5.0 or newer (self-hosted) For Kit mode: a Font Awesome account with a published kit. Free plans have kits too. Outbound HTTPS from visitors' browsers to Font Awesome's CDN No core files are edited, no database tables are created, and nothing is stored except your settings.
-
Workflows
Workflows — when this happens, do that Every community has jobs that get done by hand over and over. Tag the posts that mention billing. Message new members after their first post. Add buyers to a group. Push reports into the chat channel your team actually watches. Workflows does them for you. You pick a trigger, add conditions if you need them, and choose what should happen. 28 things to trigger on ContentPosted · edited · deleted · hidden, locked or pinned · moved · merged · split · reported MembersRegisters · validates · logs in · updates their profile · flagged as a spammer · reacts · follows · joins or leaves a club · RSVPs · completes a course CommercePurchase paid · about to expire · expired · renewed · cancelled OtherPoll voted · file downloaded · club created PagesSomebody presses a button you designed Every one of those is wired to a real Invision Community event and tested on an install with the first-party applications present. The trigger list only ever offers events that genuinely fire — you cannot save a rule that quietly never runs. Buttons on a Pages record Twenty-seven of those triggers are things your community does. The twenty-eighth waits for a person. Design a button in the rule — its wording, its colour, an optional icon, which databases and categories it appears on, which groups can see and press it, and whether to ask for confirmation. What happens when it is pressed is the ordinary conditions and actions below. Approve and Reject on a bug tracker, Send back to the author on an article, a one-click Mark as answered. Because it is a rule and not a template edit, a button can carry conditions, write to a Pages field, message the author, fire a webhook, and be changed by somebody who has never opened a theme. Buttons run immediately rather than on the queue — you pressed it, so you are told what happened rather than waiting on a background task. Conditions, so rules stay precise Forum or category, author's group, post count, account age, content contains text, content matches a pattern, tagged with, title contains, is the first post in a topic. For example: when content is posted, and the author has fewer than 5 posts, and the content matches a URL pattern — hide it and send yourself a webhook. Actions Lock, unlock, pin, unpin, hide, approve, add tags, add or remove a secondary group, award points, award a badge, send a private message, and send a webhook. The webhook action is the important one Anything your community does can be pushed to Zapier, Make, n8n, or your own code, as JSON. That means Workflows isn't limited to what this application can do — it's the bridge to everything else you already use. Set a signing secret and each request is signed, so the receiving end can tell a genuine call from anyone who guessed the URL. A run log that answers the real question Rules engines fail when you can't tell why a rule didn't fire. Workflows records every evaluation, with the reason: "Forum 'Introductions' is not in the selected list." "Bob has 3 posts; condition was at least 10." "Content does not contain \"refund\"." Filter by matched, skipped or errors, and by rule. Turn skipped logging on while you build a rule and off once it works. Built not to get in the way Nothing blocks posting. Conditions are evaluated inline because they're cheap; actions run on the background queue. A rule pointing at a slow webhook can never make a member wait, and an outage can't stop people posting. Loops are impossible. "When a post is created, post a reply" would take a site down. The engine refuses to re-enter an event it's already handling — that's built into its structure, not a setting you can get wrong. Only sensible options are offered. The builder hides conditions and actions the chosen trigger can't supply, so you're never offered "lock the topic" on a member-registered rule — there isn't one. Actions report what they actually did, not what they attempted — including when Invision Community declines something, and why. Rules run in order, and any rule can stop the ones after it. No core files are edited. Upgrading Invision Community won't break it. Requirements Invision Community 5.0 or newer (self-hosted), with the Forums application Nothing else. No external service and no API key — unless you use the webhook action, which needs somewhere to send to. Commerce triggers require the Commerce application; club and course triggers require theirs. Everything else works on a stock install.
-
Guardian
Guardian — moderation that keeps your team away from the worst of itInvision Community gives you the tools to remove bad content once somebody finds it. Guardian finds it first, ranks it by how bad it is, and puts it in one queue your moderators can actually work through. And for the category of material nobody should have to look at, it does something different: it never shows it to them at all. What it checksPost text — spam, scams and phishing, harassment, hate, threats, and breaches of your rules. Paste your rules in and they are used when judging a post, so "against the rules" means yours rather than a generic idea of them. Attached images — adult content, graphic violence, hate symbols, and images posted purely to advertise. Known illegal material — attachments are matched against a vetted hash service you have arranged access to. Everything is scored from 0 to 100. You choose the score at which something enters the queue, and the score at which it is hidden before a human sees it. One queue, worst firstFlagged content arrives in a single triage screen ordered by severity, with the reason each check gave, the labels it applied, and the post excerpt. Two buttons: Looks fine puts it straight back, Keep hidden leaves it down. Cleared and removed items keep their own tabs so you have a record. Guardian never deletes anything. Content is hidden using Invision Community's own moderation tools, so a wrong call is always reversible — and genuinely illegal material is preserved rather than destroyed, which matters if you later have to account for it. The part that is handled differentlyWhen an attachment matches a known-illegal hash set, Guardian does not treat it as a moderation decision, because it isn't one. The post is hidden immediately and the file is preserved. The queue entry shows no image, no post text, and no link to the content. There is no "view" button. Nobody on your team has to look at it in order to deal with it. The identifying details — account, email, IP at the time of posting, timestamps, file hashes — are captured at the moment of detection, because by the time a report is filed the account may be gone and the IP record rotated away. Clearing it is not offered. A moderator clicking "looks fine to me" is not the right way to overturn a hash match. Reporting, wherever you areReporting duties are national, and the mechanisms differ. Guardian supports both shapes. Destination Region How NCMEC CyberTipline United States Filed directly from your server Internet Watch Foundation United Kingdom Hotline form + reference recorded Cybertip.ca Canada Hotline form + reference recorded eSafety Commissioner Australia Hotline form + reference recorded INHOPE network International Routes you to your national hotline Your own endpoint Any Evidence package posted as JSON Where an API exists, the file goes straight from your server to the destination — never downloaded, never emailed, never handed to a staff member to upload by hand. Guardian submits under your credentials; it never reports under its own identity. Where one doesn't, Guardian links you to the right hotline for your jurisdiction and records the reference number you are given. The evidence is preserved and the audit trail comes out identical either way. Costs you can actually controlA monthly spend limit. When it is reached the paid checks pause — but hash matching keeps running, because that is the one you least want switched off. Separate models for text and images. Image checks are the expensive half; point them at a cheaper model without giving up text checking. Skip established members. Set a post count above which members aren't scanned. New and guest accounts are always checked. This is the single biggest saving on a busy site. Per-forum scope and trusted groups. Staff are always skipped. The settings screen shows exactly what is running, how much you have spent this month, and how many images have been examined. If you already run AI AssistantGuardian works entirely on its own. But if AI Assistant is installed, one switch lets it use that application's provider, key and spend ledger — so you manage one key and one budget instead of two, and spend from both counts against the same limit. It is a convenience, never a dependency. Built to stay out of the wayNothing blocks posting. All checking happens on the background queue. An API outage means posts are unchecked, never that members can't post. Silence is never read as safe. If a check cannot reach its service or the model refuses to assess something, that is recorded as needing a human — not quietly scored as clean. No core files are edited. Upgrading Invision Community will not break it. A full audit trail. Every decision, who made it, and when. RequirementsInvision Community 5.0 or newer (self-hosted), with the Forums application An API key from Anthropic or any OpenAI-compatible provider, for the text and image checks For known-material matching and direct reporting: access to those services in your own name. Providers register with the relevant organisation themselves.
-
Tag Color
Tag Colours — your tags, finally telling them apartInvision Community already has tags. What it does not have is any way to make them look like anything. Every tag on your site is the same shape and the same grey, so a topic tagged Solved is visually identical to one tagged Urgent, and members read every label one at a time. Tag Colours fixes that in about a minute. Solved Bug Report Feature Request Announcement Off Topic It builds on the tags you already haveThis is not a replacement tag system. There is nothing to migrate, no second set of labels to maintain, and no new way for your members to tag things. It reads the tags already on your community and lets you pick a colour for each one. Because it works with the built-in system, the colours turn up everywhere tags already appear — topic view, topic lists, search results, tag pages, and the Blogs, Calendar and Pages applications too. Setting it upThe admin screen lists every tag actually in use on your community, most-used first, with a note of how many items carry it. Click a tag, pick a colour, done. Or click Colour them for me and every uncoloured tag is given a distinct colour from a readable palette — a sensible starting point you can then adjust. It never overwrites a colour you chose yourself, and it will not hand two tags the same colour. Three stylesSolid — the tag is filled with your colour Soft — a tinted background with coloured text, for a lighter touch Outline — a coloured border and text on a transparent background Pick one and it applies to every coloured tag, so your tags stay consistent with each other whatever your theme looks like. Readable by defaultChoose a tag colour and the text colour is worked out for you, using the same contrast maths the accessibility guidelines use — dark text on light colours, light text on dark ones. You never end up with a yellow tag nobody can read. If you want to override it on a particular tag, you can. Built to stay out of the wayNo core files are edited and no templates are overridden, so upgrading Invision Community will not break it and will not undo your work. One small stylesheet is added to the page, cached permanently by the browser and only re-fetched when you actually change a colour. There is no JavaScript and no per-page work. Turning it off restores your theme's own tag styling immediately — and keeps your colour choices, so turning it back on picks up where you left off. Uninstalling leaves no trace. Your tags are Invision Community's tags; only the colours belong to this application. RequirementsInvision Community 5.0 or newer (self-hosted) Nothing else — no external service, no API key, no background jobs
-
Ernest Defoe
Providing Invision Community 5 applications (themes maybe in the future as well). I build applications for sale and can even do custom applications as well. Just get in touch with me and we will go from there.
-
Topic Summary
Topic Summary — 108 minutes of thread, in 8Every busy community has them: the 200-post thread nobody new will ever read. Topic Summary offers a short version built from the posts that actually mattered, so a newcomer can catch up in minutes instead of bouncing off a wall of replies. Your topics are never altered. Nothing is deleted, nothing is hidden — it is simply an alternative way to read. What your members seeOn any topic long enough to warrant it, a quiet banner appears above the posts: "This topic contains 154 posts and takes about 108 minutes to read. A summary of the most significant posts takes about 8 minutes." One click and they get those posts, in the order they were written, with the opening post and the accepted answer clearly marked, and honest "19 posts skipped" markers between them so the conversation still makes sense. Every post links back to its place in the full topic. How the significant posts are chosenSignificance blends two kinds of signal, which matters more than it sounds: Engagement — reactions, quotes, "helpful" marks, featured posts, and the accepted answer Structure — the opening post, how substantial a post is relative to the rest of that topic, and the topic starter returning with an update Short "thanks" and "+1" replies are pushed down. The opening post and a marked answer are always included. Blending both is deliberate. A younger community with few reactions would get nothing useful from an engagement-only score — the structural half means the summary is worth reading from day one. Honest by designNo banner unless it helps. If the summary would not actually save reading time, nothing is shown. Nothing is hidden from anyone. The summary only ever shows posts from a topic the member can already read, and always offers the full topic. Skipped posts are admitted. Gaps are labelled rather than glossed over, so nobody is misled about what they have and have not seen. What you controlHow many posts a topic needs before a summary is offered How many posts a summary contains The reading speed used for the estimates Turn the whole thing off at any time — your topics are untouched The settings screen also shows how many of your topics are currently long enough to qualify, so you can pitch the threshold sensibly. RequirementsInvision Community 5.0 or newer (self-hosted), with the Forums application Nothing else — no external service, no API key, no background jobs to configure Summaries are worked out on demand and nothing is stored, so there is no index to build and nothing to keep in sync. It is upgrade-safe — it reads Invision Community's own data and never edits a single core file.
-
Quests
Quests — give your members something to chaseNew members join, look around, and drift away because nothing tells them what to do next. Quests gives them a clear path: a set of goals, visible progress, and a reward when they finish. Set up a quest once and it works retroactively — members who have been around for years see their real progress the moment you publish it. How it worksCreate a quest, then add the steps a member has to complete. A Getting Started quest might be: make 5 posts and upload a profile photo. A Community Regular quest might be: 100 posts, 5 topics started, 30 days as a member, and 10 reactions received. Members see a board showing every quest, a progress bar, and a tick-list of the steps with their own numbers beside each one. There is nothing to claim and no button to press — progress updates as they take part, and rewards arrive on their own. Eight goals to build fromPosts made Topics started Reactions received Reactions given Days as a member Achievement points earned Followers gained Profile photo uploaded Every one of these is read from activity your community already records. Nothing new is tracked, nothing needs backfilling, and switching the app on costs you no data. Rewards that actually countFinishing a quest awards your community's own achievement points and, if you like, an existing badge. Quest rewards flow straight into ranks, profiles and leaderboards — they are not a separate scoreboard sitting off to one side. Each quest pays out exactly once. The completion is recorded before the reward is issued, so a member can never be paid twice. What you controlTitle, description and icon for each quest Any number of steps, in the order you choose How many achievement points completing it is worth Which badge to award, if any Whether the board is visible to signed-out visitors Enable or disable a quest without deleting it The admin screen shows how many members have finished each quest, so you can see which goals are landing and which are pitched too high. RequirementsInvision Community 5.0 or newer (self-hosted), with the Forums application Nothing else — no external service, no API key, no extra infrastructure Built to stay out of the wayProgress is recalculated when a member posts, when they open the board, and by a nightly background task that catches time-based goals like "member for 30 days". Quest bookkeeping is wrapped so it can never interfere with someone posting. It is upgrade-safe — it reads Invision Community's own data and never edits a single core file.
-
Trending — Show what's hot right now
Give your community a pulse. Trending adds a placeable block that surfaces the topics gaining momentum right now — ranked by recent replies and reactions, with time decay so fresh bursts rise and stale-but-busy threads step aside. It's the "what's hot" list your members expect from modern platforms, running entirely on your own server. Why you'll want it Recency-weighted, not just a reply count. A scoring formula blends recent replies, recent reactions, and how long ago the last activity happened — so the list feels alive, not like an all-time leaderboard. Place it anywhere. Drop the Trending block into any sidebar or block area with the block manager — forum index, a Pages page, wherever your members look. Tune it to your community. Time window, reply/reaction weights, and a "gravity" time-decay control are all adjustable from the AdminCP. Fast-moving community? Tighten the window. Quiet niche? Widen it. Privacy-aware. Only lists topics a guest can see, so nothing from private forums leaks into a public block. Zero maintenance. A lightweight background task refreshes the list on Invision Community's existing task runner. No extra services, no cron to set up. Upgrade-safe. Reads Invision Community's own forum data and never edits core files, so IPS updates won't break it. How it works Every ~20 minutes a background task scores recent topic activity and caches a ranked list. The block renders that list instantly — light on every page load, always current. Requirements Invision Community 5.0 or newer (self-hosted), with the Forums application No third-party services; uses the task runner you already have
-
Realtime — Live Topics, Presence & Typing
Bring the "live" experience of the big platforms to your self-hosted community — without paying for a cloud subscription. Realtime makes topics feel alive: new posts appear the instant they're written, members can see who's in the room, and a typing indicator lets conversations flow like chat. It all runs on your own server, with no third-party service in the loop. Three features, one lightweight app⚡ Live Topics — New replies and reactions arrive the moment they're posted. Instead of hammering refresh, members get a tasteful "3 new replies" bar that loads the latest with a tap. 👀 Real-Time Viewing — A live "…is also here" presence pill sits by the topic title, showing who else is reading this very second. It turns a quiet thread into a room. ⌨️ Real-Time Typing — When someone starts writing a reply, everyone else sees a subtle "…is typing" indicator. Fewer duplicate posts, and the natural rhythm people expect from modern chat. Why members and admins love itInstant, no refresh over a persistent WebSocket connection Runs entirely on your infrastructure — no SaaS, no per-seat pricing, no data leaving your servers Never gets in the way — if the service is down, the community keeps working; realtime just pauses Upgrade-safe — listens to IPS content events, never edits core files Light on resources — a tiny Node.js process handling thousands of concurrent readers
-
Typesense Search
Typesense Search — instant results, typos forgivenCommunity search should feel like the search bar on a modern app: results the moment you start typing, and the right answer even when the word is misspelled. Typesense Search brings that to Invision Community, powered by the open-source Typesense engine running on your own server. Typical searches return in under 50 milliseconds — on a test community, 2ms. What your members getTypo tolerance. Search for "instalation" and still find every post about installation. Adjustable from forgiving to exact. Instant results. Matching content appears as they type, before they press enter. Filter by content type. Topics, posts, files, gallery images, blog entries — counted and filtered in a sidebar, so a busy result set narrows in one click. Highlighted matches. Results show the phrase in context with the matched words marked, so members can see at a glance which result they want. What you getIt indexes everything, automatically. Rather than hooking each application one by one, the app mirrors Invision Community's own search index — so every content type your community has installed is covered, including ones you add later. Permissions are never guessed. Each document carries Invision Community's own permission tokens, and every search is filtered against the member's real access. Members see exactly what they are allowed to see and nothing more. Keeps itself in sync. A background task pushes new and updated content every few minutes, removes content that has been deleted, and can rebuild the whole collection on demand. A status panel that tells the truth. Connection state, Typesense version, documents indexed versus documents available, and time of last sync — all on one screen. Your community keeps workingThis app runs alongside your community's built-in search rather than replacing its internals. Switch on Use for the main search page and members who search are taken to the Typesense results page; switch it off and everything reverts to stock instantly. If the Typesense server is ever unavailable, your community carries on exactly as before. That also means it is completely upgrade-safe: no core file is modified, so an Invision Community update can't break it and can't silently switch it off. RequirementsInvision Community 5.0 or newer (self-hosted) A Typesense server reachable from your community — it runs comfortably in a single small Docker container alongside your site, or on Typesense Cloud An admin API key for that Typesense server Setup is a few minutes: point the app at your server, save, and press Rebuild collection. Why TypesenseInvision Community ships with MySQL search and supports Elasticsearch. Typesense sits between them — dramatically faster and more forgiving than MySQL, while being far lighter to run than Elasticsearch. It is open source, it is a single binary, and it will happily run in a few hundred megabytes of memory next to your community.
-
AI Assistant
AI Assistant — support that answers while you sleepYour members ask the same questions at 2am that you answer every morning. AI Assistant replies for you. Mention its account in any topic and it answers in seconds — grounded in your own community's content, in your own words, on your own terms. It runs on your API key with your provider. No subscription to us, no per-seat pricing, no member data passing through a third party. What it doesAnswers @mentions. A member mentions the bot account in a topic and gets a real reply, posted as a real member — notifications, search indexing and counters all behave exactly as they should. Learns from your community. Optional knowledge retrieval pulls the most relevant passages from elsewhere on your forum and gives them to the model before it answers, so replies cite what your community already knows instead of guessing. Captures bugs and suggestions. Every answered post is classified. Bug reports and feature requests land in a triage queue in your AdminCP — and, above a confidence threshold you set, are filed straight to GitHub as issues with the forum permalink attached. Shows you exactly what it costs. Every call is logged with token counts and real dollar cost, with a monthly budget cap that stops the assistant when it's reached. You stay in controlPersona and house rules. A free-text field that shapes every answer — who the assistant is, what your community is about, what it must never say, and when to escalate to a human. Choose your forums. Pick exactly which forums it answers in. Leave it unselected for all of them. Choose your model. Anthropic (Claude) or any OpenAI-compatible endpoint — OpenAI, OpenRouter, Groq, Azure, or a model you host yourself. Never guesses out loud. The assistant is instructed to say plainly when it doesn't know, and to ask for the detail it needs rather than inventing a setting or a version number. Knowledge retrieval, three waysOff — answers from the current topic alone. Keyword — searches your community with MySQL full-text. Needs no extra API key and works the moment you switch it on. Semantic — true meaning-based retrieval using Voyage AI or any OpenAI-compatible embeddings endpoint. Finds the right answer even when the member's words don't match your wording. Semantic mode degrades gracefully: if the embeddings key is missing or the service is unreachable, it quietly falls back to keyword search rather than answering with nothing. New and edited posts are indexed automatically, and a background job builds the index for your existing content in batches. RequirementsInvision Community 5.0 or newer (self-hosted), with the Forums application An API key from Anthropic, OpenAI, or any OpenAI-compatible provider Optional: a Voyage AI or OpenAI embeddings key for semantic retrieval Optional: a GitHub token if you want bug reports filed automatically Built to be safeSlow model calls run in the background, so a member's post is never held up waiting for an answer, and a failed call never blocks a reply. The assistant will not answer its own posts, will not answer the same post twice, and stops entirely once your monthly budget is reached. It is upgrade-safe — it listens to Invision Community's own content events and never edits a single core file.