User __Events__ are automation tasks triggered by various user activities, like login, upload or an error condition that may occur. These also allow calling user calling authentication integration or two factor authentication plugins, etc.
\\
[{Image src='events_generic.jpg' width='1440' height='..' align='left' style='..' class='..' }]
\\
!!Action:
Choose the type of action the event should do when triggered.
\\
[{Image src='events_action.jpg' width='1440' height='..' align='left' style='..' class='..' }]
\\
!1. Send Email, simple email notification Events

\\
This type of Event allows sending simple template based email messages, triggered by regular user activity. Various prebuilt templates 
available to select from the __Variables/Templates__ dropdown menu.
\\
!2. Run Plugin, to execute various plugins
\\
This type of Event allows running a local , per user or global, server wide configured ''__[CrushTask]__'' plugin based task flow or ''__[Jobs]__'' . It also allows triggering the ''__[HomeDirectory]__'' plugin to automatically create user home folders at login time.
\\
[{Image src='events_pluginlist.jpg' width='1440' height='..' align='left' style='..' class='..' }]
\\
!3. Send reverse notifications
\\
On this we have a separate wiki, see [ReverseEvents]
\\
!!! Trigger hooks
\\
Events can be triggered by activity of a normal user or a share account (temp account) , depending if one (or a combination of) option(s) are set in either the __When this user__ or __When a Share this user creates has this activity__ section. If the former option is
chosen, the Event still needs to be set up on the share creator (master) user account. The hooks themselves can be grouped as:
\\
!! Regular user activity related
\\
This if any of the eponymous __Uploads__, __Creates Folder__, __Deletes__, __Renames__ or __Downloads__ option is set. Can fire an event on user login, if the __Connects__ option is set, or on some user issue, if the __Has an error__ option is used. If an automation task is
to be triggered when a user creates a temp account using our ''__[Sharing]__'' feature, then the __Shares__ option is needed.
\\
\\

%%tabbedSection 
%%tab-Hooks
[attachments|event_trig.png]
/%
%%tab-Conditions
[attachments|event_con.png]
/%
%%tab-Timing
[attachments|event_tmng.png]
/%
/%

\\
\\
!! Special hooks
\\
These allow triggering more advanced Events for specific use cases
\\
\\
!. Pre-Download
\\
This option allows a user to trigger an automation task on server side, before downloading a file, to run a virus scanner or ''__[Zip|Pre-Download]__'' the file, for example.
\\
!. Accepts disclaimer
\\
Users can be configured with ''__[custom web forms|WebInterfacePrefs]__'' that are displayed after login, this hook is called when the user presses the OK button on the form. If the form allows custom user data input, the data entered into the form can be referenced by server variables, in the event task flow. An interesting use case, to allow ''__[Self Registration|Self Registration]__'' for new users.
\\
!. Issues site command
\\
FTP-only, a rarely used feature, to fire an Event when the FTP client issues one of our supported SITE commands.
\\
!. Custom
\\
For some very specific use. The account can be configured with a ''__[Custom|CustomEvent]__'' webinterface button with some special javascript code snippet. When a user presses the button, or issues the __SITE PLUGIN__ FTP command (this is specific to CrushFTP Server only), this 
hook is called. Such a use case, WebDAV-style ''__[File Locking|Locked]__'' from the WebInterface.
\\
!. Problem
\\
Another, for specific use. The account can be configured with a __Report a Problem__ webinterface button . When the user presses the button, a small input window is presented where the user can input it's complaints, then this hook is called. If the Event runs access
CrushTask plugin, these additional variables can be used :
\\
{{{
{path} and {selected_item} to reference the file/folder name in cause
{browser}, {resolution}, {window_size}, {browser_version}, {host}, {local_time}, {local_time_formatted}, {timezone_offset} to reference various client side info
{message} to reference the user form input
{test_results} to reference the state of user action, success or failure
}}}
in an __Email__ task item's email body section, for example.
\\
\\
!!! Trigger conditions
\\
To filter user action committed globally, or just on some subfolder path inside the user working directory itself, __Always do the event__ or __Only if they__ and choose one of the Upload in any directory, Download from any directory, Upload in below directory, etc. option from the dropdown menu. Carefully, for not all combinations of hooks and conditions make sense (like an Event on Upload won't fire if the condition is set to Download from below directory ).
\\
!!! Timing
\\
Events can fire instantaneously, as the user action completes, if the __Do event immediately__ option is chosen, one separate Event instance (thread) for each file/folder the user committed on. For a single Event that would process rather the full list of user altered files/folders, will have to choose one of the options from the __Do event after user__ dropdown list. If the Event sends an email notification by CrushTask's Email task item, a specific variable syntax is required in the email body, to get the full list, like
\\
{{{
{line_start}{name}{r}{n}{line_end}
}}}
for example, to get the full file names list. Otherwise, the task will only process the last item.
\\
!!! Asynchronous events
\\
Events can run in sync with the user upload/download thread, or completely independent, on separate threads, based on the state of the __Run Event Asynchronously__ flag. If is set to __Yes__ , each Event will run independently. On the other hand, __No__ will queue the Events for same user session. If the flag is set __Auto__, the global option from __Preferences->Misc page__ takes effect.
\\