Cornerstone Notify FiveM Script Guide
A notification system for FiveM with 16 themes, 3 layouts, 11 animations and 5 stacking modes, all chosen by each player in game.
- Platform
- FiveM Legacy & Enhanced
- Last recorded
- Sep 11, 2026
Platform: FiveM Legacy & Enhanced · Framework: independent (works with any) · Requires: ox_lib
Cornerstone Notify replaces the default notification with a card that your scripts send in one line. Server owners set the defaults; every player can then change the theme, layout, animation, stacking, position, duration and sounds from an in-game panel with a live preview, and their choices are saved.

What is in the resource
- 16 themes, 3 layouts, 11 entrance and exit animations, 5 stacking modes and 8 screen positions.
- A settings panel on
/notifywith theme swatches, a screen map for position and a preview of every change. - Per-player preferences, saved with FiveM's own key-value storage.
- A history panel on a key (
Hby default) showing the last 3 notifications. - Hover a notification to pause its timer; click it to dismiss it.
- Icons from Material Icons or Font Awesome 6, and optional sounds.
- An admin-only
/notifytestcommand that sends every type to you or to another player.
Installing
Follow Installing a resource, then make sure ox_lib starts first. The add_ace line is optional and gives your admin group the test command.
ensure ox_lib
ensure cornerstone_notify
add_ace group.admin command.notifytest allow
Sending a notification
From any client script:
exports['cornerstone_notify']:sendNotification(title, message, type, duration, position, icon, sound)
The same call is available as a client event, which is also how the server reaches a player:
-- Client
TriggerEvent('Notify:sendNotification', title, message, type, duration, position, icon, sound)
-- Server
TriggerClientEvent('Notify:sendNotification', source, title, message, type, duration, position, icon, sound)
| Parameter | Required | What it does |
|---|---|---|
title | No | Title line. Defaults to "Notification". |
message | Yes | Body text. Simple HTML such as <b> is allowed. |
type | No | One of the types below. Unknown values fall back to general. |
duration | No | Milliseconds on screen. Defaults to the player's saved duration, or 5000. |
position | No | A screen position. Ignored while Config.usePosition is true (the default), which keeps every notification where the player put it. |
icon | No | A Material Icons name (payments) or a Font Awesome 6 class (fa-brands fa-discord). Defaults to the type's icon. |
sound | No | An audio file inside the resource's web folder, such as audio/success.ogg. Silent for players who turned sounds off. |
-- Type only
exports['cornerstone_notify']:sendNotification('Deposit complete', '$2,450 was deposited into your Fleeca account.', 'success')
-- Longer on screen
exports['cornerstone_notify']:sendNotification('Low fuel', 'Your Sultan has 8% fuel left.', 'warning', 8000)
-- Font Awesome icon
exports['cornerstone_notify']:sendNotification('Discord linked', 'Your Discord account is now linked.', 'info', 5000, nil, 'fa-brands fa-discord')
-- With a sound, from the server
TriggerClientEvent('Notify:sendNotification', source, 'LSPD Dispatch', '10-90 at Fleeca Bank, Legion Square.', 'police', 6000, nil, nil, 'audio/success.ogg')
Notification types
Each type sets the icon and the colour of the icon, title and progress bar. On the light theme the title switches to a darker single tone of the same colour so it stays readable on white.








Themes
Every theme is shown with the same three notifications so the colours can be compared directly.
















Layouts



Stacking modes
How several notifications share the screen. Every mode works from the top or the bottom edge; bottom positions keep the newest notification nearest the edge.





Positions
top-left, top-center, top-right, left, right, bottom-left, bottom-center and bottom-right. The two side positions sit at the vertical middle of the screen.

Animations
| Animation | Description |
|---|---|
slide | Slides in from the edge with a small overshoot. |
fade | Fades in and out with a short drift. |
zoom | Scales up from small. |
bounce | Bounces in from off-screen. |
flip | 3D flip into place. |
elastic | Springy overshoot with a wobble. |
glitch | Stepped cyberpunk entrance with colour shifts and slices. |
swing | Pendulum swing from the anchored corner. |
drop | Falls in from above and settles. |
blur | Comes into focus from a blur. |
morph | Grows from a small pill into the card. |
Right and left positions enter from their own edge; the two centre positions enter vertically from the edge they sit on.
Player settings
/notify opens the panel. Players pick a theme from swatches drawn in each theme's own colours, choose layout, stacking and animation, place notifications on a screen map, set the default duration from 1 to 30 seconds, and turn sounds on or off. Every change immediately shows a preview notification with the new settings. Save keeps them; Cancel, the close button or Esc restores the previous ones.

Preferences are saved per player and override the server defaults, so a player's choice follows them between sessions.
History
Pressing H opens the last 3 notifications received. The panel closes itself after 15 seconds; hovering it pauses the countdown, and the close button or Esc closes it early. The key can be rebound in FiveM Settings > Key Bindings > FiveM.

Icons and sounds
Pass a Material Icons name or a full Font Awesome 6 Free class as the icon parameter.

Sounds are audio files inside the resource's web/audio folder, passed as audio/<file>. The resource ships audio/success.ogg; add your own for other events. OGG Vorbis is the recommended format; MP3 also works. Keep clips short and under 100 KB. Players who turn sounds off in the settings panel hear nothing regardless of the parameter.
Admin test command
/notifytest is a restricted server command: only players (or the server console) with the command.notifytest permission can use it, granted by the add_ace line under Installing.
| Usage | What it does |
|---|---|
/notifytest | Showcase: one notification of every type, to yourself, staggered so stacking is visible |
/notifytest warning | One warning notification, to yourself |
/notifytest ems 12 | One EMS notification, to player id 12 |
/notifytest all 12 | Showcase to player id 12 |
/notifytest help | Prints the usage and the list of types |
The showcase plays the bundled sound on the success card and uses a Font Awesome icon on the custom card, so one run checks audio, icons, every type and the player's saved settings together.
Configuration
config/config.lua holds the server defaults. Players override them through the settings panel; the file documents every option in comments.
Config.usePosition = true -- true: every notification uses the configured/saved position
-- false: the position parameter of each call is honoured
Config.Position = 'top-center' -- Default position
Config.Theme = 'dark' -- Default theme
Config.Layout = 'card' -- Default layout
Config.AnimationStyle = 'slide' -- Default animation
Config.Stacking = 'cascade' -- Default stacking mode
Config.historyHotkey = 'H' -- Default history key (players can rebind it)
Config.TestCommand = 'notifytest' -- Admin test command name; the permission is command.<name>
Change log
- V1.2.0 — Settings panel with theme swatches, a screen-map position picker and a live preview of every change. Stacking modes now work from the bottom of the screen, centre positions animate vertically, hovering pauses a notification's timer, and the history panel pauses while you read it. New admin
/notifytestcommand. - V1.0.0 — Initial release.