Achievements
Bring progression and rewards to your Azuriom website with fully customizable achievements, a unique trophy system, and a global leaderboard.

Achievements is an Azuriom plugin that allows you to create goals for your users using connectors from existing plugins such as Vote, Shop, Forum, Suggest, Review, Achievement.
You can create a connector, define what triggers the goal, and configure the rewards associated with completing it.
Example:
- Name: Vote 100 times for the server
- Hook: Vote
- Trigger: vote amount
- Amount: 100
- Start day (for count): Today
Once a user completes a goal, they can receive rewards configured for that objective:
- Shop points from the Shop plugin
- One or more server commands
- A set number of trophies
The plugin also includes global settings:
- Customize the name used for trophies (e.g., “Trophy”)
- Change the icon or use a custom image
- Leaderboard showing players with the most trophies
🔗 Hooks & Triggers
A hook is a category coming from another plugin, a trigger is a measurable action inside that category. Below are the hooks bundled with Achievements out of the box:
| Hook | Trigger | Provided by |
|---|---|---|
| vote | voted, leaderboard |
Achievements |
| shop | spent, points_spent, item_purchase |
Achievements |
| suggest | post, like_received |
Achievements |
| forum | message, topic, like_received |
Achievements |
| post | like |
Achievements (Azuriom content likes) |
| achievement | achievement_trophy_amount |
Achievements |
| review | post, five_star |
Review plugin (v1.0.3+) |
A hook only shows up when its plugin is installed and enabled. Since v1.2.0, any other plugin can register its own hooks & triggers. Check For developers.
Summary:
- Features
(Admin dashboard)



Player objectives

The visual appearance can be modified by themes.
LeaderBoard
The visual appearance can be modified by themes.
Available langs:
If your language is not available ? Contact me on discord
Features :
🏆 Achievements Management
- Create and manage goals for users
- Define connectors and triggers (Vote, Shop, Forum, Suggest, Review, Achievement)
- Set the amount required to complete a goal
- Configure rewards: currency, server commands, trophies
- Global settings: customize trophy name and icon
- Visibility per role
📊 Player Rankings
- Leaderboard of players with the most trophies
- Visualize progress per user
- Custom leaderboard title
🔧 Rewards Customization
- Configure rewards per goal
- Assign multiple server commands
- Reward in Shop plugin currency
- Trophies
- Reset per player
- Reset all
- Reward scratch-game (jeu à gratter) : https://market.azuriom.com/resources/198
🔐 Permissions
- Control who can create and manage goals
🧩 Developer API (v1.2.0+)
- Any plugin can register its own hooks & triggers
- Triggers are grouped by plugin in the objective form
- Objectives auto-deactivate when their plugin is disabled and come back untouched when it is re-enabled
🚀 Next Features
- New hooks
- New triggers
- Stats (global progression, trophy distribution...)
- Discord hooks
🧩 For developers
Public hook API available since Achievements v1.2.0.
Any Azuriom plugin can add its own hooks & triggers to Achievements. They appear automatically in
the objective admin form, grouped under an <optgroup> named after your plugin. When your plugin is
disabled, objectives using your hook become inactive (hidden from players, flagged in the admin
list) and reactivate as soon as your plugin is enabled again nothing is ever lost.
1. No dependency needed. Don't add achievement to your plugin.json dependencies your
plugin stays 100% standalone and your users are never forced to buy Achievements. The
integration activates by itself only when both plugins are installed, thanks to the
class_exists(HookManager::class) guard below.
2. Register your hook from your service provider boot():
use Azuriom\Plugin\Achievement\Hooks\AchievementHook; use Azuriom\Plugin\Achievement\Hooks\Triggers\CallbackTrigger; use Azuriom\Plugin\Achievement\Hooks\Triggers\ModelCountTrigger; use Azuriom\Plugin\Achievement\Services\HookManager; use Illuminate\Database\Eloquent\Builder; public function boot(): void { $this->loadTranslations(); // your other boot code if (! class_exists(HookManager::class)) { return; // Achievements is not installed / enabled } achievement_hooks()->register( AchievementHook::make('review', $this->plugin->id) // hook key, emitting plugin id ->label(trans('review::messages.title')) // option text in the <select> ->icon('bi bi-star-fill') ->trigger(ModelCountTrigger::make( 'post', // trigger key trans('review::admin.achievement.post'), // trigger label \Azuriom\Plugin\Review\Models\Review::class, // model to count 'author_id' // column holding the user id )) ->trigger(ModelCountTrigger::make( 'five_star', trans('review::admin.achievement.five_star'), \Azuriom\Plugin\Review\Models\Review::class, 'author_id' )->where(fn (Builder $query) => $query->where('rating', '>=', 5))) ); }
Registering in boot() is safe regardless of plugin load order.
Trigger types
| Type | Usage |
|---|---|
ModelCountTrigger::make($key, $label, Model::class, $ownerColumn) |
Counts rows owned by the player. Chain ->sum('column'), ->relation('rel'), ->dateColumn('col'), ->where(fn ($q) => …). $ownerColumn may be dotted (payment.user_id). |
CallbackTrigger::make($key, $label, fn (User $u, Objective $o) => (int) …) |
Any custom logic. ->threshold() adds the “Rank (Top N)” field ($objective->threshold). |
implements Azuriom\Plugin\Achievement\Hooks\Contracts\AchievementTrigger |
Full control for reusable logic. |
Progress is polled when the player opens their achievements page, so keep progress() a cheap,
side-effect-free query. hook / trigger keys are stored as plain strings on the objective keep
them stable across versions.
Real-world example : the Review plugin:
github.com/Bricec6/Azuriom-Plugin-Review - commit 081e750
Support: https://discord.com/invite/Gh2yBxUWvV
Discord: https://discord.com/invite/Gh2yBxUWvV
ServeurListe partner
Website: https://www.serveurliste.com/ Discord link: https://discord.gg/k9eMX76J8q
For any business invoice requests, please provide your legal information on my Discord (open a ticket).
If you like the resource like below ☺
Acheter
Les extensions payantes sont gérées par des développeurs indépendants et Azuriom ne prend aucune commission.Informations
- Auteur: Bricec6
- Type: Plugin
- Version: 1.2.0
- Téléchargements: 54
- Ajouté: 12 novembre 2025 à 20:02
- Mis à jour: 1 septembre 2026 à 15:25