Based in London · Available for projects worldwide

Joomla Development Backed by Our Own Extensions

Professional Joomla development for businesses, football clubs and charities across the UK. We don't just build Joomla sites — we build the tools that run them, including SE AI Chatbot and SE AI SEO, used on sites beyond our own. 16 years in, still hands-on."

16+ Years Experience
100+ Sites Delivered
14 Joomla Extensions

SE AI App Builder

SE AI App Builder v0.9.56
SE AI App Builder turns a plain-English description into a working database app inside Joomla: records, fields, forms, public lists, calendars and maps. Build with AI or by hand, review every database change before it runs, and undo from backups. Includes sign-ups, Stripe and PayPal payments, automation rules, charts, CSV import and export, and front-end editing. Works with your own OpenAI or Anthropic key, on Joomla 5 and 6.

Introduction

SE AI App Builder lets you build database apps inside Joomla, such as bookings, members, fixtures or stock, by describing them to an AI or with a visual builder. Each app stores its records in real tables in your own Joomla database. Its public lists, record pages and forms appear on your site through ordinary menu items.

The main ideas

  • App: one thing you keep track of, such as "Courses and enrolments". An app holds one or more entities.
  • Entity: a type of record within an app, such as Courses, Venues and Enrolments. Each entity is one database table.
  • Field: one piece of information on an entity, such as Title, Start date or Price. Each field is one column.
  • Record: one row: one course, one venue, one enrolment.
  • Link: a field that points at a record of another entity. An Enrolment links to a Course, and a Course links to a Venue.
  • Draft and live: changes to an app's structure are made in a draft. Nothing in the database changes until you review the draft and apply it.

Where things are

In the administrator, go to Components › SE AI App Builder. The Apps list is the starting point. Open an app to reach its screens, shown as tabs along the top:

Screen What it's for
Builder The app's entities and fields, AI changes, demo data
Records Adding, editing, importing and exporting records
Dashboard Charts and figures for the people running the app
Saved views Named filters such as "Upcoming fixtures"
Appearance How lists and record pages look on the site
Charts Charts for the dashboard and the site
Comments Comments and ratings waiting for approval (when switched on)
Translations Labels in other site languages
Access Who can see and change records, sign-ups
Automation Rules that send emails, set fields, add records and call webhooks
Payments Taking money through forms
Tools Health check, AI troubleshooter, app export, embed codes

Which tabs you see depends on your permissions. Backups, the AI log and your licence are reached from the Apps list.

Requirements and installation

SE AI App Builder needs Joomla 5.0 or later (Joomla 6 included), PHP 8.1 or later and MySQL or MariaDB. The installer checks these and stops with a message if one is missing.

The database user must be able to create, alter, rename and drop tables, because every entity is a real table. The installer tests this with a throwaway table and stops if it can't.

Installing

  1. Download the package (pkg_seaiappbuilder_x_y_z.zip).
  2. Go to System › Install › Extensions and upload it.
  3. The package installs the component, a site module, and three plugins: Content (embeds), Task (scheduled work) and Smart Search. The plugins are switched on for you.
  4. Open Components › SE AI App Builder.

Scheduled task

Date-based and scheduled automation rules, and the clean-up of old backups, unused uploads and logs, run from Joomla's Scheduled Tasks. Go to System › Scheduled Tasks, add a new task of the type "SE AI App Builder: rules and housekeeping", and run it every 15 minutes. Make sure Joomla's scheduler runs: either the Lazy Scheduler is on, or a server cron job calls Joomla's CLI. The Tools screen's health check warns when the task is missing.

Updating

Install the new package over the old one, or use System › Update › Extensions. Updates through Joomla's updater need your licence key, free or Pro, saved on the Licence screen; it is passed to Joomla as the download key for you. Your apps, records and settings are kept.

Uninstalling

By default, uninstalling keeps every app, its tables and backups, ready for a reinstall. To remove everything, first turn on Remove all data on uninstall in Options, then uninstall. That permanently drops the app tables and backups.

Free and Pro

Both editions have every feature. The only difference is how much you can store:

  Free Pro
Apps 1 Unlimited
Records 10 of each entity Unlimited
Every feature Yes Yes
Updates through Joomla With a free licence key Yes

Trashed records don't count towards the ten. Nothing you've stored is ever hidden or locked. If a Pro licence lapses, everything stays readable and editable, but nothing new can be added past the free limits.

When a limit is reached

  • Adding a record in the administrator, a CSV import, demo data and restoring from the trash all stop at ten, with a message naming the entity.
  • A public form shows "This form isn't taking new entries at the moment." Visitors never see an upgrade message; administrators see a notice on the records list once it's nearly full.
  • A second app is refused, whether made by hand, with the AI or by importing an app file. The AI isn't asked at all, so no AI usage is spent.
  • Importing an app file with records keeps the first ten of each entity and says how many were left out.

The licence key

Open the Apps list and click the Licence button in the toolbar (shown to people with the Options permission). Paste the key from your SE24 Media account and click Save and activate. The key is activated for this site's domain, then checked.

  • The screen shows the edition, plan, status, renewal date and the domain it's activated for.
  • Check now asks again straight away. Remove key deactivates it on this site, so the activation can be used elsewhere.
  • The key is checked again once a day, when an administrator opens the Apps list.
  • If se24media.co.uk can't be reached (some hosts block outgoing connections), the last confirmed answer is kept for 30 days.
  • Saving the key also gives it to Joomla's updater as the download key.

Setting up AI

The AI features use your own account with an AI provider. Requests go straight from your site to the provider; nothing passes through SE24 Media, and the provider bills you for what you use. Everything else, including the manual builder, works without AI.

Choosing a provider

Go to Options › AI, pick a provider, paste its API key and save.

Provider Used when the Model box is empty Where to get a key
OpenAI gpt-4.1 platform.openai.com
Anthropic (Claude) claude-sonnet-5 console.anthropic.com
Google Gemini gemini-2.5-flash aistudio.google.com
DeepSeek deepseek-chat platform.deepseek.com

Providers rename models often, so you can type any current model name in the Model box.

Testing the connection

Open the AI log (from the component's menu) and click Test AI connection. It sends one tiny request with the saved provider, key and model. A success message names the provider and model. Otherwise it explains the problem: a rejected key, an unknown model, rate limiting, or a provider that can't be reached.

AI options

Option Default What it does
Maximum reply length 8000 tokens Enough for apps of about 20 entities. Raise it if replies are cut off.
Temperature 0.2 Lower is more predictable. Ignored for OpenAI's newer models.
Repair attempts 2 When a proposal fails the checks, how many times the errors are sent back for the AI to fix. Each attempt is another paid request.
AI reply time limit 300 seconds How long to wait for one answer. Adding to a large app can take several minutes. Choices are 180, 300, 450 and 600.

Long requests and hosting limits

AI requests run in the background while the page checks on progress, so a host that cuts web requests off after 30 to 60 seconds doesn't lose the work. If the server stops the request before the AI finishes, the page says so within about 20 seconds. You can then try again, ask for a smaller change, or ask your host about PHP time limits. Every request, its cost in tokens and any errors are listed in the AI log.

Free tiers

Some providers, including Google Gemini, have a free tier. It works, but it has low limits on requests per minute and per day. Google's terms also say only paid services may be used when serving users in the UK, the EEA or Switzerland, and on the free tier your requests may be used to improve Google's products and read by human reviewers. A paid key with a fast, cheap model is the safer choice for real use.

Creating an app

There are four ways to start an app. Whichever you use, the app starts as a draft: no tables are created until you review and apply it.

1. Describe it to the AI

  1. On the Apps list, click Describe a new app.
  2. Write what you want to keep track of in your own words. For example: "A football club: players with squad numbers and positions, fixtures with home or away and a kick-off time, and results linked to fixtures." Mention anything that matters: which details are required, what links to what, choices you want offered.
  3. Click Propose an app. The AI usually answers within a minute. Keep the page open while it works.
  4. The proposal screen lists every entity and field the AI suggests, with its notes.
  5. Not quite right? Type what to change under Not quite right? Say what to change, for example "Drop the address fields and make email required", and click Revise proposal.
  6. When it's right, click Create app and review to go straight to the review, or open it in the builder first. Discard throws the proposal away.

2. Talk it through first

If you're not sure what you need, write a first idea and click Talk it through instead. The AI asks questions and builds up a plan with you, shown beside the conversation. When the plan is marked ready, click Build this plan to turn it into a proposal as above.

3. Start from a recipe

Click Recipes and import on the Apps list. Recipes are ready-made apps you can adapt: Fixtures and results, Junior section, Kit orders, Squad register, Volunteer rota, Courses and enrolments, Event bookings, Room and facility bookings, Mailing list, Membership register, Donations and Gift Aid, Sponsors and partners, Business directory, Contacts and enquiries, Testimonials, Vacancies and applications, Incident and accident log, Kit and equipment loans, Maintenance log, Projects and tasks, and Stock and inventory.

4. Build it by hand

Click New app, give it a title and description, and add entities and fields in the builder (next section).

Importing an app file

Apps can be exported from their Tools screen, including their records if you choose. To bring one in, use Import an app file on the Recipes and import screen. Tick Include the records, if the file has them to copy the records too. Importing always creates a new app; nothing existing is changed.

Changing an app with AI later

The builder has a box for asking the AI to change the app, for example "add a kit size to players". The result is a proposal showing exactly what changes. Using it replaces the app's draft; the live app and its records don't change until you apply.

The builder

The builder is where an app's entities and fields are defined. Changes are saved to the app's draft as you go and only reach the database when applied (see Reviewing and applying). Some changes need no database change at all and update the site straight away: field order, labels, help text, choice labels and list columns.

Entities

Each entity has a label (Venue), a plural label (Venues), a key used in the database and codes (venue), and a Title field, shown as each record's name in lists and links. Also show in links adds up to two more details after the title wherever the record is picked or linked, for example "FIX-0001 · Home team · Opponent".

Field types

Type Use it for Notes
Short text Names, codes, towns Set a maximum length
Long text Descriptions, notes Optionally formatted (below)
Formatted text Text with bold, lists, links, headings Uses Joomla's editor
Whole number Places, ages, squad numbers Can show as a 1 to 5 star rating
Decimal number Prices, weights Set total digits and decimals
Yes/No Paid, Accessible, Featured  
Date Birthdays, start dates Default can be "today"
Date and time Kick-off, appointments Default can be "now"
Time of day Opening times  
Single choice Level, Status Dropdown or radio buttons
Multiple choice Facilities, Tags  
Email address Contact email Checked as an email
Web address Websites  
Phone number Mobile, landline  
File / Several files Brochures, forms Allowed types and size in Options
Image / Several images Photos Must be a real image; SVG never allowed
Joomla user Booked by, Manager Links to a site account
Link to another entity An enrolment's Course One record of another entity
Links to several records A course's Tags Many records of another entity
Location (map point) Venues on a map Can be found from address fields
Reference number FIX-0001, ORD-0042 Given automatically, never typed

Field settings

  • Required: the record can't be saved without it.
  • Show as a column in lists: appears in the admin and site lists.
  • Help text: shown under the field on forms.
  • Default value: filled in on new forms, and stored when a record is created without the field. Dates can be "today", date and time "now".
  • Staff only: left out of site forms; staff fill it in the administrator.
  • Hide on the public site: for personal details such as email addresses. Never shown on site pages.
  • Index for faster filtering and sorting: worth it on large tables for fields you filter or sort by.

Rules

Under Rules a field can also have:

  • No two records can have the same value: text is compared ignoring capitals and surrounding spaces.
  • Smallest allowed / Largest allowed: numbers and dates (dates can use "today").
  • Fewest characters / Most characters: text length.
  • Must match: a regular expression the whole value must match, with your own message when it doesn't, for example [A-Z]{3} for three capital letters.

Show only when

A field can appear only when a condition about the record's other fields is met, for example under_18 or membership_type = 'Family'. When the condition isn't met, the field is hidden, not required, and left empty. Conditions use the same language as saved views and automation:

  • Compare with = != < <= > >=, contains, in ['a', 'b'], is empty, is not empty.
  • Combine with and, or, not and brackets. Put text in quotes.
  • In a repeat row, parent.field reads a field of the record the rows belong to.

Calculated fields

Tick Calculated to work a value out instead of typing it, for example quantity * item.price or round(total * 0.2, 2). You can use + - * /, brackets, round, min, max, abs, ifempty(field, 0), days_between(a, b) and years_between(a, b). A formula can read a linked record's fields (item.price). The value is worked out whenever the record is saved. A calculated field can't be required, and can't use another calculated field.

Links between entities

  • When a linked record is deleted: either stop the delete while anything links to it, or allow it and empty this field.
  • Only offer records that match: a dependent dropdown, like choosing a Team and then only that team's Players. The list refills as soon as the other choice changes.
  • Plain dropdown (no search box): a standard list instead of Joomla's searchable picker. Lists too long to show in full still use search.
  • Entities with more than 1,000 records switch to search-as-you-type automatically.

Repeat groups

On the entity that others link to, Edit inside this form lets those linked records be added and edited as rows on its form, like an order's lines or a booking's attendees. Rows are saved as their own records and deleted with their parent. You can set a minimum and maximum number of rows.

Reference numbers

A reference number field gives each new record the next number: a prefix plus the number padded to the digits you choose, such as ORD-0001. Records already there are numbered, oldest first, when the field is added.

Locations

A location field can be found from address fields: choose up to six short text fields (street, town, postcode). When a record is saved with an address and no location, the location is looked up, using OpenStreetMap's Nominatim unless Options name another service. Site forms then don't ask for the location.

Reviewing and applying changes

Nothing in your database changes until you review a draft and apply it. When a draft is waiting, the builder shows a Draft badge and a Review button.

The Review screen

The Review screen lists every step applying will take, in the order it will run, each marked with a risk level:

Label Meaning Examples
Safe Can't lose or hide data New entity, new field, a longer maximum length
Check Data is kept but moves or disappears from view Renaming, removing a field or entity
Converts data A conversion that could change values Short text to whole number

Changes that only touch labels and settings say so, and don't touch the database. Show SQL reveals the exact statements for anyone who wants to see them.

Warnings about existing records

The Review screen warns when a change affects records already stored, and says how many. The records are kept as they are. It warns when:

  • a field becomes required and some records have no value yet, or a new required field is added to an entity that already has records;
  • a field becomes unique and some records share a value (they can't be saved again until it differs);
  • a field's choices change and some records hold a value that's no longer a choice;
  • a field becomes a link and some values match no record;
  • the change affects a table larger than the Large table warning in Options (50,000 records by default).

Conversions

When a conversion can't convert every value, the Review screen says how many can't, with sample record IDs. Apply is refused until you either tick Clear these values and convert the rest, or change the draft.

Applying

Steps marked Check or Converts data need you to type the app's key to confirm. Applying needs the Apply schema changes permission. Anyone without it can still build drafts for someone else to apply.

Backups and undo

Before any change that converts data, every affected table is backed up. The app's most recent change can be undone from Backups while all its backups exist. Undoing replaces the affected tables with their backups. Records added or edited in those tables since the change are lost, and any unapplied draft is discarded. Old backups are deleted by the scheduled task after the number of days set in Options (30 by default), except those of each app's latest change.

Removed items

Removing a field or an entity doesn't delete its data. It moves to Removed items in the builder. Restoring one puts it back in the live app straight away. Deleting it there removes its data permanently, which needs the Delete data permanently permission.

Working with records

Open an app and click Records to see an entity's records. Use the entity switcher to move between entities.

The records list

  • Search, filter by single-choice and yes/no fields, filter by published state, and sort by any column.
  • New adds a record. Click a title to edit one. Repeat groups appear as rows on the form.
  • Select records to publish, unpublish or trash them. Deleting permanently is done from the trash.
  • A record being edited is checked out, so two people can't overwrite each other's changes.
  • Lists can be grouped and show totals (sum, average, smallest, largest) of number fields, set on the Appearance screen.

Saved views

A saved view is a named list, such as "Loans due this week" or "Pending bookings". Create them on the Saved views screen with:

  • a condition, in the same language as Show only when, which can also compare with today and now, for example due <= today + 7 and not returned;
  • an order;
  • Show on the dashboard, to pin it there.

Pick a view above the records list, show it on the site through a List of records menu item, or use it in a module or embed code.

Importing a CSV file

Click Import CSV on the records list. You can add up to 5,000 rows at a time.

  1. Choose the file. The first row must be headings; columns named like a field are matched automatically.
  2. Check where each column goes, or set it to Don't import. Map a column to ID (to update existing records) to update records instead of adding them.
  3. Required fields with no column get a Value for every row; fields with a default take it automatically.
  4. Choose whether new records are published, whether to run automation rules, and whether to update records whose ID matches.
  5. Click Check without importing to see what would happen, then import.

The importer understands choices written as their label or value; yes/no as Yes, No, Y, N, True, False, 1 or 0; dates as 2026-10-14 or 14/10/2026 (day first), with an optional time; amounts with £ and commas; and links as the linked record's title or ID. Excel's CSV export works as it is. Files and images can't be imported. Rows with problems are skipped and listed by line, with one message per problem. Past imports are listed on the same screen.

Exporting

Export CSV downloads the list as it's currently filtered, up to 50,000 rows. It needs permission to edit the entity's records. Values that start with =, +, - or @ are protected, so spreadsheets don't run them as formulas.

Demo data

The builder's Demo data panel fills the live app with sample records, so you can see lists, forms and links working. Emails use example.com and phone numbers use a range reserved for fiction. With AI set up, the AI can write realistic values; otherwise built-in samples are used. Remove demo data deletes only the records it added, and keeps any that real records link to.

Uploads

File and image fields check every upload: allowed types (set in Options), size (5 MB by default), and Joomla's own unsafe-file scan. Images must be real, complete images, and SVG is never allowed. Files are stored under images/seaiappbuilder with random names. Uploads no record uses are deleted by the scheduled task after 7 days.

Public pages

Apps appear on your site through ordinary Joomla menu items, so they use your template, menus and access levels. Only entities in the live app can be chosen.

List of records menu item

Go to Menus, add a new item, and choose SE AI App Builder › List of records. Under Records of, pick the app and entity. Options:

  • Show: all published records, only the visitor's own (they must log in, and see their records still held for review), or linked records.
  • Saved view: limit and order the list with one of the app's saved views.
  • Records per page and Order.
  • Search box and Filters (a drop-down for each single-choice and yes/no field).
  • Record pages: link each record to its own page showing every field.

The layout (table, cards, compact list, image grid, calendar or map) is set for each entity on the Appearance screen. Fields marked Hide on the public site never appear. Long lists page with numbered links that follow your template's colours and shrink to fit phones.

Submission form menu item

Choose SE AI App Builder › Submission form, then the app and entity. Options:

  • Introduction text above the form and the Button text.
  • New submissions are: held for review (saved unpublished) or published straight away.
  • Thank-you message, and After submitting, go to another page if you like.
  • Captcha, using the captcha set in Global Configuration. A hidden trap field and a minimum filling-in time are always on.

Forms follow the entity's settings: fields marked Staff only are left out, rules and Show only when work as in the administrator, dependent dropdowns refill as choices change, and repeat groups appear as rows.

Multi-page forms

In the builder, use New page here on the field a page should start with, and give each page a title. Visitors see one page at a time, with "Page 1 of 3", Back and Next, and each page is checked before they move on.

Editing on the site

People with Edit, or Edit Own for their own records, see an Edit button on record pages. Saving checks everything the administrator form checks. With Owners can trash their own records switched on (Access screen), owners can also remove their own records.

Showing records anywhere

  • Module: the SE AI App Builder site module shows records (for example the next fixture or the latest results) or a form in any module position. Choose the app and entity, a saved view, how many, the layout, a View all link, and whether to show it when empty.
  • Content plugin: codes in articles and custom modules, such as {seaiappbuilder list app="lb01" entity="loan" view="Overdue" limit="5" layout="cards" more="1"}, {seaiappbuilder form item="123"} (the form's menu item ID) and {seaiappbuilder chart app="lb01" id="c_ab12cd34"}. Ready-made codes for each app are on its Tools screen.

Smart Search

Tick Include in site search (Smart Search) for an entity on the Appearance screen, and its published records appear in Joomla's site search, linking to their record pages. It needs a List of records menu item for that entity with Record pages on, and the Smart Search plugin switched on. Nothing is indexed until you tick it.

Appearance

The Appearance screen sets how an app's lists and record pages look on the site. Changes go live straight away and are recorded in the app's history; database tables aren't touched. A preview shows the result with your own records (add demo data if there are none yet).

Style (the whole app)

  • Accent colour, or Use the site template's colours (the default).
  • Corners, Spacing, Text size and Soft shadow on cards.
  • Fonts always come from your site template.

By default, apps take their fonts, link colours and button colours from your template. That's been checked with Cassiopeia, Helix Ultimate and Gantry 5. Page numbers, searchable dropdowns and form spacing are drawn by the app itself, so they look right whichever template you use.

Lists (for each entity)

  • Layout: Table, Cards, Compact list, Image grid, Calendar (needs a date field) or Map (needs a location field).
  • Headline, Subtitle and Image for cards, compact rows and the grid.
  • Order by and direction.
  • Group by a field, with totals: sum, average, smallest or largest of a number field.
  • Include in site search (Smart Search).

Record pages and fields

For each field: Show as (as entered, a coloured badge for choices, and so on), Hide label, Hide when empty, and the order fields appear in.

Comments and ratings

Comments and star ratings can be switched on for each entity here. See Access and people.

Style with AI

Describe the look you want, for example "Show matches as cards with the kick-off time as the subtitle, a green badge for home games and a grey one for away games", and click Suggest a style. The suggestion appears in the preview first; nothing changes until you click Apply suggestion.

Custom CSS

For designers. Every rule is scoped to this app's pages automatically, so it can't affect the rest of the site. For full control of the HTML, use Joomla template overrides of the component's layouts.

Access and people

The Access screen sets who can see and change each entity's records. Site settings affect menu item pages; permissions apply everywhere, in the administrator and on the site.

On the site (for each entity)

  • Who can see records: a Joomla access level, applied on top of each menu item's own access level.
  • Who can use submission forms: anyone who can open the form page, or only groups with the Create permission below.
  • Owners can trash their own records: for groups with Edit Own. Trashed records can be restored in the administrator.
  • For each field: Hide on the site and Leave out of site forms.

Permissions (for each entity)

For each user group: Create, Edit, Edit Own, Publish and trash and Delete. Inherited follows the component's permissions in Options. Edit Own lets people change records they created, on the site too; Edit allows any record. Delete means permanently, from the trash. Changing permissions needs the Configure permission.

The component's own permissions, in Options › Permissions, also include:

Permission Allows
Apply schema changes Applying reviewed drafts, undoing changes, restoring removed items
Manage automation Creating and changing automation rules, which can send emails and call other websites
Delete data permanently Deleting removed fields and entities, backups and trashed apps for good

People who open a page they aren't allowed to use are sent back to the app's builder with a message, rather than to Joomla's error page.

Sign-up forms

Under Sign-up form on the Access screen, tick Create a user account when the site form is sent and choose the Name field, the Email field (also the username), and optionally a Joomla user field to fill with the new account. Visitors who aren't logged in then also choose a password on the form. Joomla creates the account with your site's registration settings (Users: Options): the new-user group, password rules, and activation by email or by an administrator. The new member owns the record they submitted.

When the form also takes payment, the payment is started first. If it can't start, no account is made and the submission goes to the trash, so the visitor can simply try again.

Comments and ratings

Switch them on for an entity under Comments and ratings on the Appearance screen:

  • Visitors can comment on records and Visitors can rate records (1 to 5 stars).
  • Who can comment and rate: signed-in people, or anyone (guests give a name and email).
  • New comments wait for approval, and Email the site's address about new comments.

They show on record pages to people who can see the records, and ratings also show as stars on cards and compact rows. Approve, hide and delete them on the app's Comments screen, which shows how many are waiting.

Payments

A site form can take a one-off payment through Stripe or PayPal: a course booking, a kit order, a donation. Recurring billing isn't included.

1. Connect a provider (Options › Payments)

  • Mode: Test uses your Stripe test keys and PayPal sandbox and takes no real money. Switch to Live when you're ready.
  • Currency: GBP by default.
  • Stripe: test and live secret keys, and the Stripe webhook signing secret (starts with whsec_). The webhook address to give Stripe is shown on each app's Payments screen.
  • PayPal: sandbox and live client IDs and secrets.
  • Simulated payments: pretends to take payment so you can test the whole flow without Stripe or PayPal. The payer is sent straight back as having paid.

2. Switch payment on for an entity (the app's Payments screen)

  • Tick Take payment when this is submitted on the site.
  • Amount: a fixed price; a price the site works out (a calculated field, or a field of a record it links to, such as the chosen course's price); or the payer chooses (for example a donation, with a Smallest amount).
  • Multiply by: a quantity field, such as Places.
  • When paid, tick: a yes/no field such as Paid.
  • Description on the payment page.

The Payments screen tells you if anything stops payments being taken, such as missing keys.

What the visitor sees

  1. They fill in the form, which says how much they'll pay, or that the amount comes on the next page.
  2. If more than one provider is set up, they choose how to pay.
  3. Their submission is saved unpublished, and they go to the provider's secure payment page.
  4. Back on your site they see "Thank you, your payment has been received", or a message that it's still processing.
  5. If they cancel, the submission isn't confirmed and they can fill in the form again.

When a payment arrives

The record is published (if the form publishes submissions) and the Paid field is ticked. Automation rules for that change run as usual, so a rule such as "when Paid changes to Yes, email the booker" works.

Managing payments

The Payments screen lists every payment with its status: pending, paid, failed or cancelled. Staff can mark a payment as paid by hand (the record shows who did). If the amount paid doesn't match what was asked, the payment is flagged so you can check it with the provider before accepting it.

Automation

Automation rules do things when records change or dates come round: email the office about a new booking, remind people the day before, set a status, add a follow-up record, or tell another service. Rules are set on the app's Automation screen and need the Manage automation permission.

A rule has three parts

  1. When: the trigger.
  2. Only if: an optional condition about the record.
  3. Do this: one or more actions.

Triggers

Trigger Example
A record is added Email the office about a new booking
A record is changed Note who changed it
A record is published Tell the applicant they're accepted
A field changes, or changes to a value When Status becomes "Approved"
A date comes round: on a date field, or a number of days before or after it, at a set time 1 day before Starts, at 09:00
On a schedule: every day, every week on a day, or a day of every month, at a set time Every Monday at 08:00

Date and schedule rules run from the scheduled task (see Installation).

Conditions

The same language as Show only when: compare fields with = != < <= > >=, contains, in ['a', 'b'], is empty or is not empty, and combine with and, or, not and brackets. For example venue = 'home' and not featured, or starts >= today. Linked records' fields work too, like member.email.

Actions

  • Send an email. Recipients can be: submitter, site (the site's own address), an email address, an email field's key, a linked email like member.email, or group:Managers (a Joomla user group). Everyone gets their own copy, up to 20 recipients. A scheduled rule can instead send one summary listing every matching record: put {{records}} in the message.
  • Set a field on the record.
  • Add a record, to this entity or another, with values filled from the record.
  • Notify another service (webhook): sends the record to an address you give. Addresses inside your own network are refused, for safety.

Placeholders

Subjects, messages and values can use the record's fields as {{field_key}}, plus {{id}}, {{entity}}, {{app}}, {{today}}, {{now}}, {{record_url}} and {{admin_url}}. The rule editor lists every placeholder for the entity.

Off, Test and Live

  • Test runs the rule for real events but only records what it would do in the log: no emails, no changes.
  • Live does it for real. Switch when the log looks right.
  • Off stops it.

Each rule has a log of what it did, or would have done. A rule stops sending once it reaches the Emails per rule per hour limit in Options (50 by default), so a mistake can't flood inboxes.

Automate with AI

Describe the rule, for example "When a volunteer signs up, email them a welcome message and email the rota manager at rota@example.org", and click Suggest a rule. You see the rule before it's saved, and it's saved in Test mode.

Saved views, dashboards, charts and translations

Saved views

A saved view is a named list, such as "Loans due this week" or "Pending bookings". It has a condition, written in the same language as Show only when, and an order. Saved views can compare fields with values, with other fields, and with today and now. For multiple-choice fields use contains, as in tags contains 'urgent'.

You can use a saved view in four ways:

  • Pick it above the records list in the admin.
  • Tick Show on the dashboard to pin it there.
  • Show it on the site: make a List of records menu item for the same entity and choose the view under Saved view.
  • Use it to limit a chart to certain records.

If you delete a view, menu items that used it show all records instead.

Dashboard

Every app has a dashboard for the people running it. It shows:

  • open records and the total number of records
  • how many were added this week and in the last 30 days
  • records added per month
  • what's coming up next, for entities with a date
  • the latest records
  • any saved views you've pinned

Charts

Charts appear on the site. Open Charts for the app, then choose:

Setting Choices
Records Which entity to chart
Chart Bars across (to compare groups), Columns (counts over time), Line (a trend over time)
Group by A field, or when the record was added
Show Number of records, or the total, average, lowest or highest of a number field
Only records in All published records, or a saved view
For dates, one bar per Month or year
At most How many groups to show (the rest go into "Other") or how many months or years

Charts only count published records, and they can only use fields that are shown on the site. Under each chart, Show the numbers opens the figures as a table. When you save a chart it goes on the site straight away, and the change is recorded in History.

To put a chart on a page, paste its embed code into an article or a Custom module, or use the SE AI App Builder module:

{seaiappbuilder chart app="club" id="3"}

The content plugin also shows lists and forms the same way:

{seaiappbuilder list app="club" entity="fixture" limit="5" more="1"}
{seaiappbuilder list app="club" entity="fixture" view="Next fixtures" limit="5"}

Each screen shows the exact code for its own app, so you can copy it from there.

Translations

On a multilingual site, visitors see your app's labels in their own language. Install a second site language first (System > Install > Languages). Then open Translations for the app, pick a language, and fill in the boxes for:

  • entity names
  • field labels and help
  • choices
  • format messages
  • form pages
  • repeat groups

Anything you leave empty shows the original wording.

Translate the empty ones with AI fills the empty boxes with suggestions marked "Suggested by AI: not saved yet". Check them, then click Save. Menu titles are translated in Joomla's menus as usual. Rule emails are written separately for each rule.

Tools: health check, AI troubleshooter, AI log and app export

Each app's Tools screen gathers the things you need when something isn't right, or when you want to move the app.

Health check

The health check looks over the whole app and lists anything that needs attention. Each item is graded Problem, Check or Note, and has a Go there link to the screen that fixes it.

Area Example findings
App The app is unpublished, has no entities, or has builder changes that haven't been applied
Saved views A view can't run any more
Automation A rule can't run, rules are still in Test, a rule failed recently, or the scheduled task is missing, disabled or hasn't run for two days
Records Links to records that no longer exist; required fields left empty
Site No menu item shows the app; a menu item shows a removed entity; a missing access level; a required field the site form can't ask for
Payments No provider set up, settings that can't charge, no Stripe webhook secret, simulated payments still on, or payments that are waiting or don't match

Run it after any big change, and before you go live.

Ask AI what's wrong

Describe what isn't working, for example "The booking confirmation emails aren't arriving", and click Ask AI. The AI looks at the app's structure, settings, the health check and recent automation. It replies with Likely causes and What to do, and sometimes a Suggested change to the app. Click Open in the builder and the builder's AI drafts that change for you to review. The troubleshooter itself never changes anything.

Only the app's structure, settings and counts are sent to the AI, never the contents of records.

AI log

The AI log lists every AI request on the site: what was asked, what came of it, and the tokens it used. Open a request to see its proposal. It's the first place to look when the AI gives a strange answer, and it helps you keep an eye on what your provider is charging you.

History and backups

  • History keeps every applied version of the app. Loading a version makes it the draft. Nothing changes until you review and apply it, and any removed fields come back through Removed items.
  • Backups holds a copy of every table taken before a change that affects existing records. To restore one, use the Backups screen.

Backups are kept for 30 days by default (Options > Automation). The scheduled task clears old ones.

Export and import an app

Export without records or Export with N records downloads the app as a .json file. Use it to:

  • copy the app to another site
  • keep a backup of its setup
  • share it with someone

To bring an app file in, go to Apps > Recipes and import, choose the file, and decide whether to include its records. Importing always creates a new app, so nothing already on the site changes.

What an app file includes

  • The app file carries the structure, appearance, saved views, automation rules and access settings.
  • It leaves behind access levels, permissions, links to users and uploaded files, because those differ from site to site.
  • Rules that were Live arrive in Test, so you can check them before switching them back on.
  • After the import you get a list of anything that was left out or cleared.

Options reference

Open Options from the toolbar of any SE AI App Builder screen, or go to System > Global Configuration > SE AI App Builder.

AI

Option Default What it does
AI provider None OpenAI, Anthropic (Claude), Google Gemini or DeepSeek
API key and model Empty Set for each provider. Test connection checks them.
Maximum reply length 8000 The most tokens the AI may use in one reply. Raise it if large apps come back cut short.
Temperature 0.2 Lower values give more consistent answers
Repair attempts 2 How many times the AI is asked to fix a proposal that fails the checks
AI reply time limit 300 seconds Choose 180, 300, 450 or 600. Slow models and large apps need more time.

Schema changes

Option Default What it does
Large table warning 50000 Above this many records, Review warns that a change may take a while

Records

Option Default
Image types jpg, jpeg, png, gif, webp
File types pdf, doc, docx, xls, xlsx, ppt, pptx, odt, ods, csv, txt, zip, jpg, jpeg, png
Maximum upload size 5 MB (the server's PHP limits also apply)

Automation and housekeeping

Option Default What it does
Emails per rule per hour 50 A rule stops sending once it reaches this
Keep backups for 30 days Older backups are deleted by the scheduled task
Delete unused uploads On Removes uploaded files that no record uses any more
after 7 days How long an unused upload is kept first

Payments

Option Default What it does
Mode Test Test uses the providers' test keys. Live takes real money.
Simulated payments Off Lets payments go through with no provider at all, for trying forms out. Turn it off before going live.
Currency GBP Used for every payment
Stripe Empty Test and live secret keys, and the webhook signing secret
PayPal Empty Sandbox and live client IDs and secrets

Maps

Option Default What it does
Tile server address Empty (OpenStreetMap) Use another tile service if you have one
Map credit OpenStreetMap credit The attribution shown on the map; required by most tile services
Map height 400 px  
Address lookup service Nominatim Turns addresses into map positions
Contact email Empty Nominatim's usage policy asks for one

Licence

The licence key isn't kept in Options. Enter it on the Licence screen (see Free and Pro).

Uninstall

Option Default What it does
Remove all data on uninstall Off When this is off, uninstalling keeps your apps and records so a reinstall picks them up again. When it's on, uninstalling deletes every app table.

Permissions

The standard Joomla permissions for the whole component. You can also set them for each app and record type (see Permissions and access).

Troubleshooting and FAQ

Start with the app's Tools > Health check. Most problems show up there with a link to the fix. If that doesn't explain it, describe the problem to Ask AI what's wrong.

The AI

Test connection fails. Check that the key belongs to the provider you picked, that the model name is right, and that the account has credit or a free allowance. Some hosts block outgoing connections, so ask your host to allow HTTPS to your provider.

"The AI's reply wasn't usable" or the reply was cut short. Raise Maximum reply length in Options, or describe the app in smaller steps. The AI log shows the full reply.

The AI times out on large apps, or says the server stopped the request. Raise AI reply time limit to 450 or 600 seconds, choose a faster model, or ask for the change in smaller steps. If it keeps happening, ask your host whether long PHP requests are being cut off.

Can I use the Gemini free tier? Yes. It has low rate limits, so a large app may take a couple of attempts. Google may also use free-tier requests to improve its products, so think about that before describing anything sensitive.

Does anything go through SE24 Media? No. AI requests go straight from your site to your provider. The only call to SE24 Media is the daily licence check.

Records and forms

A new record is refused with "holds 10 …". That's the Free edition limit. Trash records you don't need, or enter a Pro key. Trashed records don't count, but restoring one from the trash counts again.

The site form says it isn't taking new entries. That record type has reached the Free limit. Visitors only see a neutral message, never anything about upgrading.

A field doesn't appear on the site form. Check whether it's hidden on the site, staff-only, left off forms, or hidden by a Show only when condition. The health check warns when a required field can't be asked for.

Uploads fail. Check the file types and the maximum size in Options, and the PHP upload_max_filesize and post_max_size settings on your server.

Imported CSV rows are skipped. The import result lists every bad cell with its row and column. Fix those rows, then import just them again.

Automation

A rule does nothing. Is it in Test? Test only writes to the log. Is the app published? Does the condition match? Open the rule's log to see what it did with each record.

Date and schedule rules never run. Enable the scheduled task SE AI App Builder: rules and housekeeping under System > Scheduled Tasks. Joomla only runs tasks when the site gets visits, so on a quiet site set up a cron job that calls Joomla's scheduler.

Emails don't arrive. Check System > Global Configuration > Server > Mail, and send a test mail from there. Also check that the rule isn't over its hourly limit.

A webhook fails. The address must be public, because addresses inside your own network are refused. PHP's curl extension must also be installed.

Payments

Payments stay pending. Add the Stripe webhook signing secret, so that payments are confirmed even when the payer doesn't come back to the site. Use Check with provider on the Payments screen for any payment stuck as pending.

Payments go through but no money arrives. Simulated payments is still on, or Mode is set to Test.

Appearance

The app doesn't match my template. Apps take their fonts and colours from the template. If your template styles tables, buttons or pagination unusually, add overrides to your template's custom CSS. Every element has a seab- class to target, for example .seab-pager__link.

Licence and updates

I entered a Pro key but I'm still on Free. The key must belong to SE AI App Builder and its plan must include Pro. A free download key is valid, but it doesn't unlock Pro. Click Check now on the Licence screen after changing your plan.

What happens if the licence server is down? Pro stays on. If the server can't be reached for 30 days in a row, the site goes back to the Free limits until the next successful check. Nothing is deleted or hidden.

Updates don't show. The update site needs your key. Saving it on the Licence screen adds it for you. Then run System > Update > Extensions > Check for updates.

What happens to my data if I uninstall? It's kept, unless Remove all data on uninstall is switched on in Options.

Getting help

When you contact SE24 Media, include:

  • your Joomla and PHP versions
  • the SE AI App Builder version
  • what the health check says
  • for AI problems, the relevant entry from the AI log

Contact us

If you have any questions, need a quote or want to chat to us about websites, please fill out the form and we will get back to you as soon as possible.

Turnstile *
Image