Project ZomboidGuideTwo steps, and people usually miss the second: upload the mod's folder into /Zomboid/mods/, then add its mod ID to the Mods= line in…
Two steps, and people usually miss the second: upload the mod's folder into /Zomboid/mods/, then add its mod ID to the Mods= line in /Zomboid/Server/servertest.ini and restart. Haptic servers run Build 42, so upload the mod's Build 42 version: its folder has a 42 folder inside. Your uploaded folders are safe: they survive restarts, server moves, and restores, and the Workshop mods panel never touches them.
The Mods panel installs Steam Workshop mods with auto-updates and is the path to prefer: Project Zomboid: mods auto-download. Hand-placing is for a mod that is not on the Workshop (a private mod, your own work, an old download).

A Build 42 mod is a folder with a 42 folder inside it (some mods name it after a version, like 42.15), often with a common folder next to it. The mod's mod.info sits inside 42, usually with a media/ folder. Upload the whole mod folder into /Zomboid/mods/ with the Files card or SFTP, keeping its name exactly as it came, so you end up with /Zomboid/mods/<ModFolder>/42/mod.info.
A mod made only for Build 41 has its mod.info directly in the mod folder and no 42 folder. Build 42 does not find it: the server starts without the mod and the console says required mod "<ID>" not found. Get the mod's Build 42 version from its author or its Workshop page.
Project Zomboid only loads mods listed in your server config, so uploading alone changes nothing.
Open the mod.info inside the mod's 42 folder in the Files card. The id= line is the mod ID (it is often not the same as the folder name).
Open /Zomboid/Server/servertest.ini (the Files card has a quick-access chip for it) and add the ID to the Mods= line, separated by semicolons from anything already there, for example Mods=\ExistingMod;YourModID. The entries our Workshop panel adds start with a backslash (\ModID, the Build 42 style); yours can have one or not, and the server loads both. A Mods= line copied from a Build 41 server works as it is, once each mod on it is in /Zomboid/mods/ in its Build 42 version. Our Workshop panel manages its own entries on that line and leaves yours alone. Load order matters for some mods: Load order and custom maps.
Restart the server, then scroll up in the Console to the start of the boot. loading <your mod ID> means the mod loaded. required mod "<your mod ID>" not found means the ID does not match the id= line, or the mod's folder has no 42 folder (Step 1). If the server refuses to start, remove your ID from Mods= again, that is your undo button.
Your players need the same mod. Without the Workshop, PZ cannot auto-download it to players; give them the mod folder to install locally, or expect "missing mod" errors on join.
Map mods also need the map added to the map list; the load order article covers it.
Ask on Discord or email support@haptic.gg with the mod's folder name and your Mods= line.