Admin & Developer Tools
Commands, the /postaljob settings editor, the in-game location builder, and managing player progression in oxide-postaljob.
Commands, the live settings editor, the in-game location builder, and how to manage player progression.
Commands
Everything lives under one command: /postaljob. Typing /postaljob in chat shows the available subcommands as suggestions; running it with no subcommand shows a usage hint.
| Command | What it does | Who can use it |
|---|---|---|
/postaljob settings | Opens the in-game settings editor. Changes save to the database and apply instantly, no restart needed (see How Settings Work) | Admins |
/postaljob tutorials | Turns the first-time tutorial prompts on or off | Anyone (affects only themselves) |
/postaljob tutorialreset | Makes all tutorial prompts show again | Anyone (affects only themselves) |
/postalbuilder | Opens the in-game location builder | Admins |
The older /postaltutorials and /postaltutorialreset commands still work and do the same as /postaljob tutorials and /postaljob tutorialreset.
Keybind
| Key | What it does |
|---|---|
H (hold) | Shows a floating marker over the current delivery address, with a live distance readout |
Players can rebind this in GTA's settings under Key Bindings → FiveM.
The Settings Editor
/postaljob settings opens a live editor for nearly every setting: pay, levels, timers, crew, complaints, the van, depots (with in-world placement previews), NPCs and blips, delivery markers, uniforms, props, animations, model replacements and tutorials. Changes save to your database and apply instantly for everyone — nothing needs a restart.
Settings are grouped in the sidebar:
| Category | Sections |
|---|---|
| Core | General, Crew, Complaints |
| Economy | Payment, Progression, Tasks & Dispatch (delivery timer, cancelling a round) |
| Vehicles | Vehicle |
| World | Locations (the depots), NPCs & Blips, Scene & Effects |
| Presentation | Uniforms, Props & Animations (including the mailbox models the builder scans for), Compatibility (model replacements), Tutorials |
How it works:
- Basic and Advanced tabs keep the everyday settings upfront; a search box finds any setting by name.
- Edited fields are marked changed, and a counter shows how many unsaved changes you have. Nothing is stored until you press Save Changes.
- Values are checked before saving. A bad value is rejected with a reason, and the field is highlighted.
- If a setting can't be saved to the database, the editor says so and the old value stays in use. A reset that fails shows a message too.
- Every setting has a Reset to default button that puts it back to the value from the config files.
- Logging out with the editor open closes it.
- The editor's interface text (buttons, badges, and messages) comes from
locales/en.json, so it can be translated.
Editing depots
Each depot in Depots (under Locations) has a Name, the Clerk spot where the supervisor stands, his Facing, and the Van spawn. Positions have a Place in world button: the menu hides and a see-through preview of the supervisor or the van follows your aim; left-click confirms, right-click or ESC cancels. Either way the menu comes back, with the coordinates filled in if you confirmed. Placing the supervisor also sets his facing. A teleport button next to Place in world jumps you to a stored position so you can check it.
When you save, supervisors and map blips move immediately. You can edit, reorder, or delete depots while players are on shift; deleting a depot ends the shifts running there and pays them (see Adding a second depot).
A depot's pickup points, post boxes, letterboxes, delivery zones, and menu camera aren't fields in the editor — the first four are captured in-world with /postalbuilder (below). See Adding a second depot for getting a builder export into a live server.
In-world placement needs an updated o-link. On an older version the Place in world button shows a notice asking you to update.
The Location Builder
/postalbuilder lets you create new depots — supervisor position, van spawn, pallet spots, post boxes, letterboxes, and delivery addresses — by walking around in-game instead of hand-typing coordinates.
Building a depot, step by step
/postalbuilder, then choose New Location and give it a name.Config.PostBoxModels and Config.LetterBoxModels — add your map's props there if it replaces the stock mailboxes.Where the export goes
Export All writes a file called exported_locations.lua into the oxide-postaljob resource folder.
What you do with it depends on whether the resource has ever started on this server:
- On a brand-new install that has never started, copy its contents into
shared/config/locations.lua(replacing or adding to what's there). That file is the factory default, so it's imported into the database on the resource's first boot. - On a server that has already run this resource once, locations live in the database (see How Settings Work), so pasting the export into
shared/config/locations.luaonly changes the factory default. To load it, paste it overConfig.Locationsin that file, restart the resource, then open/postaljob settingsand press Reset to default on Depots (under Locations). That replaces the whole stored depot list with the file's list, so use Import Config first to bring your current depots into the export too. Import Config and the export keep each depot'smenuCamera, so the camera shots come along. The builder has no camera tool, so a depot you create in it has nomenuCamerauntil you add one to the file. - A depot's name, Clerk spot, and van spawn can also be changed straight in
/postaljob settingsunder Locations, with Place in world for the positions. Those changes save to the database and apply instantly, with no restart. Pickup points, post boxes, letterboxes, and delivery addresses are not in the editor, so they always go through the export.
Other builder tools
- Import Config — loads the depots your server uses now (as saved in
/postaljob settings) into the builder so you can edit existing depots - Edit Location — reopens a finished location for changes
- Undo Last Action — steps backward, up to 20 actions
- Test Prop — previews how the carried box looks on your character
- View Last Scan Results / Clear Scan Markers — revisit or clean up the markers left by a prop scan
Permission
/postaljob settings and /postalbuilder are limited to admins. The check runs on the server, so it can't be bypassed — players without permission get a "No permission." chat message from the builder, or a "You do not have permission." notification from /postaljob settings. Refused attempts at the builder, its export, and the /postaljob settings editor are written to the server log: one line per player and action per minute, so someone repeating a command can't flood the log. The log also records whether each settings change came from the menu or another resource.
To make someone an admin, add them to the admin group and grant that group the admin ace in your server.cfg:
add_principal identifier.license:<their-license> group.admin
add_ace group.admin admin allowIf you already run QBCore, Qbox, or ESX admins, you don't need to do anything extra — your existing framework admins pass automatically.
Managing Player Progression
Player progress lives in the shared job_progression database table. Postal rows always have job = 'postal'. The char_id is the character's identifier from your framework (citizenid on QBCore/Qbox, the identifier on ESX).
Run these in your database tool, replacing ? with the character's id.
Look up a player
SELECT *
FROM job_progression
WHERE char_id = ?
AND job = 'postal';Reset a player completely
UPDATE job_progression
SET level = 1,
total_count = 0,
daily_streak = 0,
last_activity_date = NULL,
complaints = 0,
timeout_until = NULL
WHERE char_id = ?
AND job = 'postal';Clear complaints
UPDATE job_progression
SET complaints = 0
WHERE char_id = ?
AND job = 'postal';Lift a suspension
UPDATE job_progression
SET timeout_until = NULL
WHERE char_id = ?
AND job = 'postal';Set a player's level
UPDATE job_progression
SET level = 3
WHERE char_id = ?
AND job = 'postal';If a player is online while you edit their row, they may need to relog for the change to apply — the server caches progression while a character is loaded.
Where the Money Moves
For reference when players ask about pay:
- Shift pay is deposited as one lump sum at clock-out, into the account set by
Config.Payment.payoutAccount(default: bank) - A player who disconnects or logs out on shift is paid at their next login instead, with a notification saying how much. Until then the pay waits in the
job_pending_payoutstable - The van-destroyed fine comes out of
Config.Payment.fineAccount(default: cash) the moment the van is lost - If the resource is stopped or restarted while players are mid-shift, everyone is automatically clocked out and paid what they earned, except a shift lost to dying on shift, which pays nothing
- Deleting a depot in
/postaljob settingsends the shifts running there and pays them
Other resources can check whether a player is on shift, read or change settings, read the depots, a player's shift and their level, and show shift updates themselves, through the server exports — see the API Reference.
Next Steps
Feature Guide
How an oxide-postaljob shift plays — task types, routes, cancelling a round, timers, the van, levels, pay, crews, customer handoffs, phone messages and the Oxide Phone Gigs app, and tutorials.
API Reference
Server exports provided by oxide-postaljob — IsOnShift, GetSetting, SetSetting, GetInfo, GetShift, GetProgression and SetUpdateHandler — with integration examples.