Moodle

Moodle customization services that keep core untouched

We change how your Moodle behaves and reads by using the extension points it provides, so the next upgrade is routine work instead of a rescue.

  • Settings before code
  • Upgrade-safe by design
  • Every change documented
What is included
  • Settings and role tuning
  • Profile and course fields
  • Dashboards and blocks
  • Course formats
  • Renderer and template overrides
  • Local plugins and language packs
Get a free quote Reply within one business day. NDA on request.
The problem

Signs your Moodle needs customizing

Most requests we receive start the same way: "Moodle almost does what we need." The dashboard shows the wrong things. The course page is a long scroll when your trainers think in weeks or modules. Staff must fill in a field Moodle does not have. A button says "Submit all and finish" and your learners keep missing it.

Nearly all of that can be changed without editing a single Moodle file, and that distinction matters more than any other on this page. A change made through settings, a custom field, a theme override or a small local plugin carries forward when Moodle is updated. A change typed into core has to be found and redone every time, usually by someone who was not there when it was made. We work only the first way, and we often start by undoing the second.

  • The dashboard is noise

    Learners land on a page of blocks they never use, while the one thing they need, their overdue mandatory course, is three clicks away under a menu.

  • Courses do not match how you teach

    Your programs run as weekly cohorts, workshops or self-paced modules, but every course looks like the same list of topics, and trainers work around it with labels and long descriptions.

  • Missing data about people and courses

    You need cost center, job grade or license number on the user, and credit hours or delivery mode on the course. Today that information lives in a spreadsheet beside Moodle.

  • Old hacks block every update

    Someone edited core files to hide a menu or change an email. Nobody documented it, so each update risks losing behavior that staff now depend on.

What we do

Ways we change Moodle

We pick the lightest tool that solves the problem. In rough order of preference, these are the ones we reach for.

Settings and role tuning

Many requests are solved in site administration alone: default course settings, navigation options, capability changes on a role, or a feature switched off for one category.

Profile and course fields

Extra user profile fields and course custom fields, with the right type, visibility and locking, then used in filters, certificates, enrolment rules and reports.

Dashboards and blocks

A default dashboard that shows each role what matters, built from core blocks where possible and a custom block when the data you need is not available.

Course formats

A format plugin that changes how sections and activities are laid out, for example as cards, a stepped path or a single-activity course, without altering the content.

Renderer and template overrides

Changes to the markup of a page, such as the course header or the login form, made in the theme by overriding a Mustache template or an output renderer.

Local plugins and language packs

Small plugins for business rules that hook into events, plus language customization so that every label, email and help text uses your organization's own words.

Typical projects

Customization jobs we are asked for

01

A role-based home page

Learners see assigned and overdue courses, managers see their team's progress, and trainers see what needs marking, all on the same dashboard address driven by role and cohort.

02

Removing a legacy core hack

We compare your code with a clean copy of the same release, list every difference, and rebuild each one as a setting, theme override or plugin so updates can resume.

03

Terminology and email rewrite

Course becomes program, teacher becomes facilitator, and enrolment and reminder emails are rewritten in your tone through the language customization tool, in each language you run.

04

A custom enrolment or approval rule

For example, a manager must approve a request before a learner joins a course, built as a plugin with its own capability, notification and audit record.

In depth

Choosing the lightest change that works

The ladder of change

We treat customization as a ladder and climb only as high as the request requires. The bottom rung is configuration: Moodle has a very deep settings tree, and capabilities can be allowed or prohibited per role in any context. Next come data extensions, meaning profile fields and course custom fields. Then presentation, which belongs in a theme. Then behavior, which belongs in a plugin. Each rung costs more to build and to maintain than the one below it, so a request that can be met with a role override should not become a plugin.

Why core edits cost so much

An edit inside Moodle's own files works on the day it is made. The bill arrives later. Updates overwrite the file or conflict with it, security fixes get delayed because nobody dares to deploy, and the knowledge of what was changed leaves with the person who changed it. When we inherit such a site, the first job is a file-by-file comparison against the matching official release. Most hacks turn out to be replaceable. A hidden menu item is a capability or a theme override, a changed email is a language string, and an extra check on enrolment is an event observer in a local plugin.

Presentation changes live in the theme

Moodle renders pages through output renderers and Mustache templates, and a theme may override either. That lets us reshape the course index, the activity header or the login page while the underlying code stays stock. The risk is that an overridden template drifts from the original when Moodle changes it, so we override the smallest template that does the job and keep a note of which release it was copied from. Larger visual work is covered on our Moodle theme development page.

Behavior changes live in plugins

When a rule has to run by itself, such as notifying a manager before a certificate expires or enrolling someone into the follow-up course on completion, we write a local plugin. It listens to Moodle events, runs scheduled tasks, adds its own settings page and defines capabilities so you control who can use it. Larger features get the full treatment described under Moodle plugin development.

Language strings are an underrated tool

The language customization tool stores your wording separately from the language pack, so updates do not undo it. Renaming a few dozen strings often removes more support tickets than a new feature would. We keep the changed strings in your repository, so they can be reviewed and moved between staging and production like code.

Process

How a change reaches your live site

  1. 1

    Collect the requests

    You list what annoys learners, trainers and admins. We look at each item on your site and note where the current behavior comes from.

  2. 2

    Choose the rung

    For every request we propose the lightest solution: a setting, a field, a theme override or a plugin, with effort and upkeep stated for each.

  3. 3

    Build on a copy

    Changes are made on staging with a recent copy of your database, committed to Git and checked against Moodle coding style.

  4. 4

    Review with real roles

    You test as a learner, a trainer and an administrator. We adjust wording and layout until it reads the way your people speak.

  5. 5

    Deploy and record

    The change goes live with a rollback step, and the customization register is updated so the next upgrade team knows what exists and why.

Deliverables

What every Moodle change comes with

  • A customization register listing every change and where it lives
  • Clean core files that match the official release
  • Overrides and plugins stored in your repository
  • Language changes kept apart from the language pack
  • Upgrade notes for each custom component
FAQ

Customization questions from Moodle admins

What can be customized in Moodle without writing code?
More than most teams expect. Navigation, default course settings, dashboards, roles and capabilities, profile and course fields, completion defaults, notification wording and most labels can be changed from site administration. We check that route first, and a fair share of requests end there with no development at all.
Will your customizations break when we update Moodle?
They are built not to. Nothing is placed in core files, plugins use documented APIs, and template overrides are kept small. Before each update we run your custom components on staging against the new release and fix anything that has moved, which is normally minor work.
We have changes in core from a previous developer. Can you sort that out?
Yes. We diff your code against the official release it is based on, document each change, and reimplement the ones you still need as settings, theme overrides or plugins. When that is done the site can be updated normally again. The cleanup often pairs with a Moodle upgrade.
Can you change the wording Moodle uses, including emails?
Yes. Every label, button, help text and system email is a language string that can be replaced through the language customization tool, per language. Your versions are stored separately, so installing an updated language pack does not overwrite them.
How do you decide whether something needs a plugin?
A plugin is needed when the site must store new data, run a rule by itself or add a screen that does not exist. If the request is about who can see or do something, it is usually a role change. If it is about how a page looks, it belongs in the theme.
What drives the cost of a customization?
Mainly the rung it sits on. A settings change is quick, a template override or custom field takes a little more, and a plugin with its own data and screens is a small project. Testing across roles and languages adds effort too. Each item is estimated separately in the quote, so you can drop the ones that are not worth it.
Start a project

Send us the list of things Moodle almost does

We will go through it item by item and tell you which are settings, which are theme work and which need a plugin, with a free quote for the lot.

  • Free consultation and quote
  • NDA on request
  • You own the source code
  • Reply within one business day
Add budget and timeline optional, helps us quote faster

This form is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.