FiveMGuideDrop the resource folder into server-data/resources/ and restart. Haptic scans that folder on every start, finds each resource, and loads it for you on…
Drop the resource folder into server-data/resources/ and restart. Haptic scans that folder on every start, finds each resource, and loads it for you on every framework choice including Vanilla and Custom, so a resource does not need an ensure line in server.cfg to load. If one does not load, it is almost always the folder shape: fxmanifest.lua has to sit directly inside the folder you uploaded.
Open the Files card on your server and go to server-data/resources/. Large script packs are easier over SFTP.
Upload the resource folder itself, for example ox_lib, the folder with fxmanifest.lua directly inside it. Uploading the zip works too: select it in the Files card and use Unzip, then delete the zip.
Restart the server. Haptic builds the list of resources to start during boot, so an upload goes live on the next start.
fxmanifest.lua (or the older __resource.lua) must be directly inside the folder you place in resources/.
Right: resources/ox_lib/fxmanifest.lua
Wrong: resources/ox_lib/ox_lib/fxmanifest.lua
The wrong one is what you get when you extract a zip and upload the extracted folder as-is. FiveM then logs Couldn't find resource ox_lib, or simply never starts it. Open the folder in the Files card: if the first thing you see inside is another folder with the same name, move the inner folder up one level and delete the empty wrapper.
Square-bracket category folders are fine and are the normal way to organize a server: resources/[myscripts]/ox_lib/fxmanifest.lua works. Folders without brackets are not scanned by FiveM, so resources/my scripts/ox_lib/ will not load. Rename the wrapper to [myscripts] or move the resources out of it.
If the download includes a .sql file, put that file in server-data/sql/ and restart. It is imported into your server's database automatically. Details are in Import SQL files into your server's database.
Resources start in alphabetical order, and FiveM starts anything a resource declares as a dependency by itself. That is enough for most servers.
When one resource has to start after everything else (a job script that depends on your own core, for example), add a line to server.cfg in server-data/:
ensure my_jobThat file is yours, Haptic never overwrites it, and it is executed last, after the resources Haptic loaded. So a resource named there starts at the end. The resource loads with or without the line; the line only changes when.
The Custom Resources field in your server's Details tab is for a different job: the example and developer resources that ship with FiveM (runcode, money, playernames, the fivem-map-* maps, and basic-gamemode, which stays on for Vanilla) are deliberately left off, because they break RP frameworks. Name one per line there to turn it back on. Naming a resource you uploaded yourself changes nothing, since it is already being loaded.

Paid scripts are usually escrow-protected: part of the code is encrypted into a .fxap file and locked to the Cfx.re account that bought it. Two things follow from that:
Upload the .fxap file along with everything else. It is easy to miss when copying files by hand.
The server has to run on a license key generated under the account the script was bought with. Any key from that account works, so if you moved from another host and the old key will not authenticate, generate a fresh one on the same account at portal.cfx.re. A script bought on someone else's account will not run under yours; ask the seller whether they can transfer the purchase to your Cfx.re account.
That is a Cfx.re rule, not something we control, and no host can unlock it.
If the console shows Couldn't find resource <name>, that is the folder shape above, not a broken script. The console log sits under the Needs attention panel on the Console card; scroll it, or use the copy icon in the Console header (Copy all logs) and search the text you paste.
The Needs attention panel itself catches the other common failures and names each one in plain language, with a sample of the matching log line on the card:
A resource failed to start: an error inside the script itself. The full log below the panel has the rest of the error.
Missing resource dependency: a shared library the script needs is not installed. ox_lib, oxmysql, qb-core, and es_extended are the usual suspects. Install the dependency and restart.
Resource needs a different game build: the script targets a specific GTA V build. See Game builds and DLC content.
Adding an ensure line for a resource that is not found. Haptic already loads everything under resources/. An ensure line pins when a resource starts, it cannot make a missing folder appear.
Reinstalling the framework. If one script fails, the framework is fine.
Leaving it zipped. FiveM reads folders, not archives, so a .zip sitting in resources/ never loads. Uploading a zip is fine, just run Unzip on it in the Files card.
Waiting. The list of resources to start is built during boot, so a restart is part of every fix.
Reach us on Discord or at support@haptic.gg. Include the resource name, a screenshot of the folder in the Files card, and the console output from the failed start.