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.

Four notifications in the default dark theme, stacked as a list at the top right
dark themeThe list stacking mode at the top right

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 /notify with 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 (H by 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 /notifytest command 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.

server.cfg
ensure ox_lib
ensure cornerstone_notify

add_ace group.admin command.notifytest allow

Sending a notification

From any client script:

lua
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:

lua
-- Client
TriggerEvent('Notify:sendNotification', title, message, type, duration, position, icon, sound)

-- Server
TriggerClientEvent('Notify:sendNotification', source, title, message, type, duration, position, icon, sound)
ParameterRequiredWhat it does
titleNoTitle line. Defaults to "Notification".
messageYesBody text. Simple HTML such as <b> is allowed.
typeNoOne of the types below. Unknown values fall back to general.
durationNoMilliseconds on screen. Defaults to the player's saved duration, or 5000.
positionNoA screen position. Ignored while Config.usePosition is true (the default), which keeps every notification where the player put it.
iconNoA Material Icons name (payments) or a Font Awesome 6 class (fa-brands fa-discord). Defaults to the type's icon.
soundNoAn audio file inside the resource's web folder, such as audio/success.ogg. Silent for players who turned sounds off.
lua
-- 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.

success
successPayments received, completed actions
info
infoStatus changes, tips
warning
warningLow fuel, low health, cautions
error
errorFailed actions, missing items or money
general
generalMessages and anything without a category
police
policeDispatch and law enforcement
ems
emsMedical dispatch
custom
customYour own category, here with a Font Awesome icon

Themes

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

dark
darkDefault
light
light
ocean
ocean
forest
forest
sunset
sunset
midnight
midnight
blossom
blossom
glass
glassTranslucent, blurs what is behind it
neon
neon
ember
ember
arctic
arctic
gold
gold
mono
mono
vapor
vapor
toxic
toxic
blood
blood

Layouts

card
cardIcon, title, message and progress bar. Best for longer messages.
compact
compactOne slim line. Long messages are shortened with an ellipsis.
minimal
minimalTitle and message only, sized to the text. No icon or progress bar.

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.

cascade
cascadeOlder cards step behind the newest, smaller and fainter
stack
stackA deck with a small diagonal offset
overlay
overlayOnly the newest is really visible; for very frequent notifications
list
listA plain column, every card fully visible
fan
fanOlder cards fan out at an angle behind the newest

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.

All eight positions shown at once on a 1920 by 1080 screen
positionsAll eight positions on a 1920 by 1080 screen

Animations

AnimationDescription
slideSlides in from the edge with a small overshoot.
fadeFades in and out with a short drift.
zoomScales up from small.
bounceBounces in from off-screen.
flip3D flip into place.
elasticSpringy overshoot with a wobble.
glitchStepped cyberpunk entrance with colour shifts and slices.
swingPendulum swing from the anchored corner.
dropFalls in from above and settles.
blurComes into focus from a blur.
morphGrows 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.

The settings panel with Ocean selected and its live preview in the top right
settings panelOcean selected, with its live preview in the top right

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.

The history panel listing three recent notifications
history panelThe last three notifications, with the auto-close timer

Icons and sounds

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

custom iconsFont Awesome classes fa-solid fa-car and fa-brands fa-discord

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.

UsageWhat it does
/notifytestShowcase: one notification of every type, to yourself, staggered so stacking is visible
/notifytest warningOne warning notification, to yourself
/notifytest ems 12One EMS notification, to player id 12
/notifytest all 12Showcase to player id 12
/notifytest helpPrints 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/config.lua
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 /notifytest command.
  • V1.0.0 — Initial release.