Skip to content

FiveM Integration

PulseCAD connects to your FiveM server through a single resource you download already configured for your community, so there's no API key or community ID to paste. Drop it in, ensure it, and your server is talking to the CAD.

The resource is generated on demand for your community (and each of your game servers). It is not a static, checked-in download; each zip is built fresh with your CAD URL, your secret key, your chosen framework, and your enabled features baked in.

What it brings in-game

Feature What it does
Live unit tracking On-duty units appear and move on the dispatch/MDT map in real time
Traffic stops /ts creates a CAD call, puts you on scene, and auto-runs the plate
Panic / officer distress /panic alerts dispatch and all on-duty units in-game
911 calls /911 (voice), /t911 (text), /a911 (anonymous) route to dispatch
Plate lookup /plate returns a vehicle + flags in chat (no Wraith needed)
ALPR (Pulse Pro) Wraith ARS 2X plate scans are checked against your records → in-game alert
Account linking /cadlink ties a player's game account to their CAD account
Civilian ID /civid, /id, /giveid show a character's ID card in-game
Vehicle registration /reg registers the vehicle you're in to your CAD character
CAD Display (tablet) The full CAD as an in-game tablet/MDT; press F7, auto-logged-in
Active-call blips + GPS routing On-duty officers see live call blips; assigned calls auto-route your GPS
Discord Rich Presence Your callsign, status, and active call show on your Discord status

Many of the above are toggleable per community in Admin → FiveM, along with optional extras that are off by default - admins opt in per feature.

Which plan: everything in the table except ALPR is on all plans. Two of the optional extras are on all plans too: ERS callouts and the lb-phone / qb-phone 911 bridges (they are off by default only because they need that resource installed). The rest are the Pulse Pro advanced plugins: ALPR, the money economy (auto-fines), force-registration, station alerting, body cam, mugshots, NPC witness callers, NPC traffic reports, smart signs, and the pma-voice 911 bridge. On a lower plan they stay off even if they were switched on during a trial, and turn back on if you upgrade.

The money economy (taking CAD citations, court fines and bail out of a player's in-game accounts) in particular starts off; see Money economy. See the full in-game command list.

NPC witness callers

A Pulse Pro plugin, off by default. When enabled, NPCs who see a crime happen phone it in as an anonymous 911. Everything a caller says is a real game fact: the crime, the actual street, the suspect's actual heading, and on a carjacking the actual plate. Nothing about a suspect's appearance is ever invented, so a caller is vague rather than wrong.

Admin → FiveM → Witness 911 callers opens the tuning once the feature is on. You choose which crimes are reported (gunfire, person shot, carjacking, assault, hit and run, brandishing a firearm, reckless driving), which extra details a caller includes, how close an NPC has to be, how long they take to call, and how long before the same suspect can be reported again.

Reckless driving generates far more calls than the rest

All other reports are triggered by something a player did: a shot, a carjacking, a swing. Reckless driving is triggered by how they are driving, which stays true for a whole journey, so it is the only setting that can put a player on the dispatch board for doing nothing but driving. It is off by default for that reason.

If you turn it on, set Reckless speed well above normal driving for your server. Around 90 mph is ordinary freeway speed in GTA, so leave the threshold near that and dispatch will see a steady stream of speeding calls. A driver is reported once per speeding run (they have to slow down before they can be reported again), and reckless reports are always at least 90 seconds apart.

Changes here reach players within about 10 seconds, including switching the feature off. You do not need to re-download the resource for a settings change, only for a new resource version.

Smart signs

A Pulse Pro plugin, off by default. Dispatchers change roadway sign messages from the CAD (how), and the resource passes all changes on to your signs:

  • London Studios Smart Signs is updated directly when it is running. It is a paid add-on we cannot test ourselves, so this part is untested.
  • Your own sign script can listen for the change instead. Multi-line messages need resource 2.16.0 or later.
-- Server side. The same arguments arrive client side on the 'pulsecad:smartsign' event.
AddEventHandler('pulsecad:smartsign:update', function(signId, text, lines)
    if text == '' then
        -- The dispatcher cleared the sign: restore its default message.
    else
        -- lines has one string per row, for example { 'CRASH AHEAD', '', 'LEFT LANE' }.
    end
end)

signId is the Sign ID set in Admin → Dispatch & CAD → Smart Signs, and text is the same rows joined with a newline. The event only fires from the CAD or from another resource on your server; players cannot trigger it from their game.

Install

  1. In the CAD, open Admin → FiveM and click Download. The ZIP is generated on the spot, pre-keyed to your community (and the selected server).
  2. Extract the pulsecad folder into your server's resources, e.g. resources/[pulsecad]/pulsecad.
  3. In server.cfg, after your framework and oxmysql lines, add:
    ensure pulsecad
    
  4. Restart the server. On boot you'll see:
    [pulsecad] framework = esx
    [pulsecad] ready -> https://cad.mypulsetech.com | livemap=true alpr=false | type / in chat for the full PulseCAD command list
    

Keep your key server-side

Your secret API key lives in server/secret.lua, which loads only as a server script. It is what identifies your server to the CAD, so treat it like a password. Never move Config.ApiKey into config.lua or a client script; that would expose the key to all players. config.lua is a shared script and never contains the key.

One key per game server

Each game server gets its own key. If you run multiple servers, download a separate resource for each from Admin → Servers (or pick the server in the FiveM tab). Community-wide messages (a Signal-100 and its clear) reach all servers, and a message for one player (a jail sentence, a court ruling) goes to the server they are on and waits while they are offline. You can rotate a key at any time from Admin → FiveM; re-download the resource afterward.

Live tracking and the civilian/officer features identify a player by their in-game license. Each person links once, and they do it themselves - there is no link-code generator on the Admin → FiveM panel:

  1. On your community home, under Other areas, press Link in-game tablet to get a one-time code. (The same generator is also on the MDT login card, the Fire and Tow screens, and Link your game in the Civilian portal; the community home is just the one place everyone can reach, whatever their role.)
  2. In-game, type:
    /cadlink <code>
    
  3. Go on duty in the MDT, and you now appear on the live map.

The code is one-time and expires in 10 minutes. After linking once, it persists.

Linking is how you sign in to the in-game tablet

/cadlink logs the in-game CAD (F7 / /cad) straight in. There is no email/password form on the tablet; its identity comes from your linked game profile, so nothing has to be typed on a game keyboard. Open it before you have linked and you get a short screen explaining /cadlink instead; link, reopen, and you are in. If the tablet is still open when you run the command it swaps itself to the signed-in CAD on the spot.

Signed out of the CAD on the tablet? It closes and stops signing you back in automatically; reopen it and press Sign in with my linked account.

That is for a sign-out you meant. If the tablet ever drops its session on its own mid-shift, it now fetches a new one and signs itself straight back in. You do not need to run /cadlink again — the link is permanent, and re-running it was only ever a roundabout way of getting a fresh sign-in.

Requirements & frameworks

  • Networking: the game server makes outbound HTTPS calls to the CAD, with no inbound ports to open. Your server just needs to reach https://cad.mypulsetech.com. With body cam or mugshots switched on, players' game clients upload their captured images to that same address directly; nothing to configure, but worth knowing if your players sit behind a restrictive network.
  • Frameworks: works standalone, and with ESX (es_extended), QBCore (qb-core), and QBox (qbx_core). The download config defaults to auto-detect; set it explicitly in Admin → FiveM if you prefer. (A framework is only needed for money-based features like the money economy and job-based force-registration.) Whichever framework the resource actually detects at boot is reported back and shown on the Money economy panel, so you can see at a glance whether the server found one.
  • ALPR: requires Wraith ARS 2X (wk_wars2x). The hook is inert without it. See ALPR.
  • Body cam / mugshots (optional): require screenshot-basic. If you enable either, ensure screenshot-basic before ensure pulsecad. Captured images go from the player's client straight to the CAD over HTTPS; they never travel through your game server's event channel, which is far too small to carry a screenshot.

Postal street names

Typing a postal on a call fills the Street field (see Dispatch). This works for all communities with no setup and no resource update: the CAD knows the game's road names and picks the road nearest each postal.

From resource 2.14.0 your server can also refine those names. A few minutes after it starts, it has one player's game look up the exact street at each of your postals and sends the answers to the CAD, and those replace the built-in guess. That helps most on custom maps and where a postal sits under a freeway. Players do not see anything happen, and it is optional: you do not need to update for the street fill to work.

Updating

Running body cam or mugshots? Update to resource 2.9.64 now.

Earlier versions sent each captured image through the game's event channel, which cannot carry something that large. The result was players being kicked with a "Reliable network event size overflow" disconnect, naming either pulsecad:bodycam:frame or, once the channel was saturated, an unrelated event such as pulsecad:reportPos. Images now upload directly over HTTPS and the problem is gone. Re-download the zip from Admin → FiveM, replace the pulsecad folder, and restart. If you do not use body cam or mugshots, you were never affected.

There are two independent update paths:

Live config reload (no restart).
When you change settings in Admin → FiveM (or press Push update), installed servers re-pull the restart-free config within about 10 seconds: smart-sign targets, live-map interval, disconnect grace, and the witness caller settings apply in place, players included.
Switching a feature off works straight away on all servers, whatever version it runs: the CAD stops accepting that feature from the game, so a switched-off /ts, panic, 911, plate reader, ERS and the rest are refused with a message saying it is off. The same applies to features your plan does not include: they stop working even on a server still running an older download.
Switching a feature on works straight away on resource 2.17.0 or later, players included: commands start answering, their chat suggestions come back, and call blips, body cam and the rest start up without a restart. On older resources it needs pulsecad restarted (restart pulsecad, or your next server restart).
Admin → FiveM shows which version each server is running, as reported by the server itself (2.17.0 or later). Older resources do not report it, so the card falls back to when you last downloaded.
Command words and keybinds are registered when the resource starts, so renaming a command needs a re-download + restart.
New resource version (code changes).
FiveM does not let a running resource rewrite its own .lua/.js files, so code updates replace the whole pulsecad folder from outside the game. Either set up automatic updates once, or update by hand: re-download the zip from Admin → FiveM, replace the pulsecad folder, and restart. Your key and settings are preserved either way, because they are generated fresh into the new copy. When a newer version ships, the server console says so at startup and Admin → FiveM shows Update waiting.

Automatic updates

From resource 2.16.1, the download includes an updater in pulsecad/updater/. Schedule it on the machine that runs FXServer, as the same user or account that runs the server. Each time it runs it checks the CAD for a newer version or changed settings. If there is one, it:

  1. downloads it and checks that it arrived complete;
  2. swaps the whole pulsecad folder in, keeping your server/secret.lua (your key) and the previous version;
  3. tells the CAD, so Admin → FiveM shows Up to date · updated automatically with the time.

When nothing has changed it downloads nothing, so running it hourly is cheap.

Linux (cron). Run crontab -e and add a line like this, with your own path:

17 * * * * bash /path/to/resources/[pulsecad]/pulsecad/updater/update.sh >> /tmp/pulsecad-update.log 2>&1

Windows (Task Scheduler). In an admin PowerShell, with your own path:

schtasks /Create /SC HOURLY /TN "PulseCAD update" /TR "powershell -NoProfile -ExecutionPolicy Bypass -File \"C:\path\to\resources\[pulsecad]\pulsecad\updater\update.ps1\""

Run it once by hand first so you can see what it prints.

When the update loads. By default the new files are picked up at your next server restart. Nothing happens to players while the files are swapped. To load updates straight away instead, give the scheduled job the environment variable PULSECAD_RCON_PASSWORD (your rcon_password), plus PULSECAD_RCON_HOST / PULSECAD_RCON_PORT if the server is not on 127.0.0.1:30120. The updater then runs refresh and ensure pulsecad itself, which briefly drops the live map and the in-game CAD for everyone on the server.

Options.

Linux Windows What it does
--check -Check Only reports whether an update is available. Changes nothing.
--rollback -Rollback Puts the previous version back and pauses updates. Restart pulsecad to load it.
--resume -Resume Starts updating again after a rollback.

If Body camera is on, the update can also install or update the bundled axonbody3 resource next to pulsecad. The first time it does, it tells you to add ensure axonbody3 to server.cfg.

Panel hosting

The updater needs a shell or task scheduler on the server machine. Most game-server panel hosts do not give you one, so on those, update by hand.

For developers editing the resource

The resource version lives in RESOURCE_VERSION (server/fivem/resource.ts). Bump it on any change to the generated resource so installed servers can tell they're out of date.

Next