Utilities for searching, navigation, and monitoring site activity
Site Tools include utilities for navigating, searching and keeping up with site activity.
In particular, you have two highly configurable, automated site monitoring tools, WebNotify, to e-mail alerts when topics are edited, and WebStatistics, to generate detailed activity reports.
► Notification help▼ Notification help
Each Foswiki web has an automatic e-mail notification service that sends you an e-mail with links to all of the topics modified since the last alert.
Users subscribe to email notifications using their WikiName or an alternative email address, and can specify the webs/topics they wish to track, Whole groups of users can also be subscribed for notification.
The general format of a subscription is:
three spaces *
subscriber [ :
topics ]
Where subscriber can be a WikiName, an E-mail address, or a group name. If subscriber contains any characters that are not legal in an email address, then it must be enclosed in 'single' or "double" quotes.
topics is an optional space-separated list of topics:
*
in a topic name, where it is treated as a wildcard character. A *
will match zero or more other characters - so, for example, Fred*
will match all topic names starting with Fred
, *Fred
will match all topic names ending with Fred
, and *
will match all topic names.
Examples: Subscribe Daisy to all changes to topics in this web.
* daisy.cutter@flowers.comSubscribe Daisy to all changes to topics that start with
Web
.
* daisy.cutter@flowers.com : Web*Subscribe Daisy to changes to topics starting with
Petal
, and their immediate children, WeedKillers and children to a depth of 3, and all topics that match start with Pretty
and end with Flowers
e.g. PrettyPinkFlowers
* DaisyCutter: Petal* (1) WeedKillers (3) Pretty*FlowersSubscribe StarTrekFan to changes to all topics that start with
Star
except those that end in Wars
, sInTheirEyes
or shipTroopers
.
* StarTrekFan: Star* - *Wars - *sInTheirEyes - *shipTroopersSubscribe Daisy to the full content of NewsLetter whenever it has changed
* daisy@flowers.com: NewsLetter?Subscribe buttercup to NewsLetter and its immediate children, even if it hasn't changed.
* buttercup@flowers.com: NewsLetter! (1)Subscribe GardenGroup (which includes Petunia) to all changed topics under AllnewsLetters to a depth of 3. Then unsubscribe Petunia from the ManureNewsLetter, which she would normally get as a member of GardenGroup?:
* GardenGroup: AllNewsLetters? (3) * petunia@flowers.com: - ManureNewsLetterSubscribe
IT:admins
(a non-Foswiki group defined by an alternate user mapping) to all changes to Web* topics.
* 'IT:admins' : Web*
A user may be listed many times in the WebNotify topic. Where a user has several lines in WebNotify that all match the same topic, they will only be notified about changes that topic once (though they will still receive individual mails for news topics).
If a group is listed for notification, the group will be recursively expanded to the e-mail addresses of all members.
__ Warning: Because an email address is not linked to a user name, there is no way for Foswiki to check access controls for subscribers identified by email addresses. A subscriber identified by an email address alone will only be sent change notifications if the topic they are subscribed to is readable by guest users. You can limit what email addresses can be used in %NOTIFYTOPIC%, or even block use of emails altogther, using the
{MailerContrib}{EmailFilterIn} setting in =configure
.
Tip: List names in alphabetical order to make it easier to find the names.
Note for System Administrators: Notification is supported by an add-on to the Foswiki kernel called the MailerContrib. See the MailerContrib topic for details of how to set up this service.
Note: If you prefer a news feed, point your reader to WebRss (for RSS 1.0 feeds) or WebAtom (for ATOM 1.0 feeds). Learn more at WebRssBase and WebAtomBase, respectively.
WebSearch is a flexible search facility, part of the core feature set. WebSearchAdvanced offers more options, including:
See also: SearchHelp for help; Macros and FormattedSearch for including hard-coded searches in text.
To check for the most recently edited topics while on-site, use the WebChanges link, usually located in the toolbar. It lists the most recently modified topics, newest first, along with the first couple of lines of the page content.
This is simply a preset SEARCH
. The number of topics listed by the limit
parameter.:
%SEARCH{ ".*" web="TWiki" type="regex" nosearch="on" order="modified"
reverse="on" limit="50" }%
You can point your news reader at WebRss and WebAtom to find out what is new in a web. WebRssBase and WebAtomBase have the details. Like WebChanges, this is based on a %SEARCH{}%
.
WebIndex lists all web topics in alphabetical order, with the first couple of lines of text. This is simply a preset SEARCH
:
%SEARCH{ "\.*" scope="topic" type="regex" nosearch="on" }%
You can generate a listing manually, or on an automated schedule, of visits to individual pages, on a per web basis. Compiled as a running total on a monthly basis. Includes totals for Topic Views, Topic Saves, Attachment Uploads, Most Popular Topics with number of views, and Top Contributors showing total of saves and attachment uploads. Previous months are saved.
%STATISTICSTOPIC%
bin/statistics
script from a cron job, once a day is recommended. This will update the WebStatistics topics in all webs.
nobody
on many systems. Example crontab entry: 0 0 * * * (cd /path/to/bin; ./statistics >/dev/null 2>&1)
nobody
: Run the utility tools/geturl.pl
in your cron job and specify the URL of the bin/statistics
script as a parameter. Example: 0 0 * * * (cd /path/to/tools; ./geturl.pl mydomain.com /urlpath/to/bin/statistics >/dev/null 2>&1)
geturl.pl
will do a CGI request as the WikiGuest user, so if you use this workaround, the WebStatistics topics you are updating will have to be writable by WikiGuest.
When running from the command line or a cron job, you can pass parameters to the script like this:
./statistics -logdate 200605 -webs Userweb,Sandbox
bin/statistics
script can also be executed as a CGI script, just enter the URL in your browser. Examples: /wiki/bin/statistics
/wiki/bin/statistics/Main
/wiki/bin/statistics/Main?logdate=202503
/wiki/bin/statistics?logdate=202503;webs=ProjectX,ProjectY,ProjectZ
Foswiki generates monthly log files which are used by the statistics script
log<year><month>.txt
logs/log202503.txt
| <time> | <wikiusername> | <action> | <web>.<topic> | <extra info> | <IP address> |
| 13 Mar 2025 - 18:26 | WikiGuest | view | WebRss | | 66.124.232.02 |
Script | Action name![]() | Extra info |
---|---|---|
attach | attach | when viewing attach screen of previous uploaded attachment: filename |
register | bulkregister | WikiUserName of new, e-mail address, admin ID |
changes | changes | |
save | cmd | special admin parameter used when saving |
edit | edit | when editing non-existing topic: (not exist) |
manage | move | when moving attachment: Attachment filename moved to Newweb.NewTopic |
rdiff | rdiff | higher and lower revision numbers: 4 3 |
register | register | E-mail address: user successfully registers |
register | regstart | WikiUserName, e-Mail address, LoginName: user attempts to register |
manage | rename | when moving topic: moved to Newweb.NewTopic |
manage | renameweb | when renaming a web: oldweb moved to newweb |
save | save | when replacing existing revision: repRev 3 when user checks the minor changes box: dontNotify when user changes attributes to an exising attachment: filename.ext |
search | search | search string |
upload | upload | filename |
view | view | when viewing non-existing topic: (not exist) when viewing previous topic revision: r3 |
Outgoing mail is required for UserRegistration and for recent changes alert.
Foswiki will use the Net::SMTP
module if it is installed on your system. Set this with the SMTPMAILHOST
preference setting.
The notify e-mail uses the default changes.tmpl
template, or a skin if activated by a preference setting.
mailnotify also relies on two hidden files in each data/Web
directory: .changes
and .mailnotify.
Make sure both are writable by your web server process. .changes
contains a list of changes; go ahead and make this empty. .mailnotify
contains a timestamp of the last time notification was done.
You can use an external mail program, such as sendmail
, if the Net::SMTP
module is not installed. Set the program path in {MailProgram}
in configure.
! * Net::SMTP can be easily disabled (if there is an installation error) by setting the
SMTPMAILHOST
preference setting to an empty value.
SMTPSENDERHOST
preference setting to define the mail sender host (some SMTP installations require this).
For Unix platforms: Edit the cron
table so that mailnotify
is called in an interval of your choice. Please consult man crontab
of how to modify the table that schedules program execution at certain intervals. Example:
% crontab -e 0 1 * * * (cd /path/to/bin; ./mailnotify -q)The above line will run mailnotify nightly at 01:00. The
-q
switch suppresses all normal output.
For ISP installations: Many ISPs don't allow hosted accounts direct cron access, as it's often used for things that can heavily load the server. Workaround scripts are available.
On Windows: You can use a scheduled task if you have administrative privileges.
The crontab command is used to schedule commands to be executed periodically.