Yes, fundamentally, operations using the Data Loader do fire triggers.
However, many organizations find it expedient to disable triggers on at least a subset of bulk data load or integration operations. While this can be implemented in many different ways, it's fairly common to do so by adding a check in the trigger or trigger handler code to see whether the trigger should run in the current context.
This check might look at:
- The current user name or profile name (not best practice).
- The value of a hierarchy custom setting, which would be configured specially for the integration or data load user.
- The value of a Custom Permission assigned (or not assigned) to the current user.
You can do a quick check in your org to determine whether one of these common patterns is being used simply by inspecting your trigger code in Developer Console or the Setup UI, if you have some knowledge of Apex. Take a look at the first few lines of the trigger, or, if your org uses a handler pattern, at the first lines of the handler methods for the
before insert event.
If you're not comfortable inspecting Apex, speak with a colleague who's familiar with the architecture. The method you'd need to use to address this issue would depend on exactly how your organization has implemented trigger gating.
Of course, this may not be the actual issue at all. It's possible, for example, that your before trigger is swallowing an exception - silently failing, while allowing the operation to succeed. It's hard to know without reviewing your org and your debug logs in detail.