TWiki Site Tools
Utilities for searching, navigation, and monitoring site activity TWiki Site Tools include utilities for navigating, searching and keeping up with site activity. Preferences can be configured by web or site-wide. You are currently in the TWiki web. In particular, TWiki provides two highly configurable, automated site monitoring tools, WebNotify, to e-mail alerts when topics are edited, and WebStatistics, to generate detailed activity reports.On this page:
- WebNotify - recent changes alert
- WebSearch - search TWiki site
- WebChanges - what's new
- WebRss and WebAtom - news feeds on recent changes
- WebIndex - list of topics
- WebStatistics - site statistics
- Log Files
- Site Permissions
- Backup and Restore
- Help with crontab
WebNotify - recent changes alert
Each TWiki web has an automatic e-mail alert service that sends a list of recent changes on a preset schedule, like once a day. Users can subscribe and unsubscribe using WebNotify in each web. The Perl scriptmailnotify
is called by a background process at regular intervals. The script sends an automated e-mail to subscribed users if topics were changed in a web since the script was last run.
- You can create a WebNotify link using TWikiVariables with
%NOTIFYTOPIC%
Web Changes Notification Service
Each TWiki 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.
*
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. Please note that the guest user TWikiGuest does not have an email address mapped to it, and will never receive email regardless of the configuration of that user.
topics is an optional space-separated list of topics:
- ... without a Web. prefix
- ...that exist in this web.
- Using wild-card character in topic names - You can use
*
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 withFred
,*Fred
will match all topic names ending withFred
, and*
will match all topic names. - Unsubscribing to specific topics - Each topic may optionally be preceded by a '+' or '-' sign. The '+' sign means "subscribe to this topic". The '-' sign means "unsubscribe" or "don't send notifications regarding this particular topic". This allows users to elect to filter out certain topics. Topic filters ('-') take precedence over topic includes ('+') i.e. if you unsubscribe from a topic it will cancel out any subscriptions to that topic.
- Including child-topics in subscription - Each topic may optionally be followed by an integer in parentheses, indicating the depth of the tree of children below that topic. Changes in all these children will be detected and reported along with changes to the topic itself. Note This uses the TWiki "Topic parent" feature.
- Subscribing to entire topic ("news mode") - Each topic may optionally be immediately followed by an exclamation mark ! and/or a question mark ? with no intervening spaces, indicating that the topic (and children if there is a tree depth specifier as well) should be mailed out as complete topics instead of change summaries. ! causes the full topic to be mailed every time even if there have been no changes, and ? will mail the full topic only if there have been changes. One can limit the content of the subscribed topic to send out by inserting %STARTPUBLISH% and %STOPPUBLISH% markers within the topic. Note that "news mode" subscriptions require a corresponding cron job that includes the "-news" option (see details).
* 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-TWiki group defined by a custom user mapping) to all changes to Web* topics.
* 'IT:admins' : Web*In addition to single quotes ('), double quotes (") do the same job for a non-TWiki group. 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.

{MailerContrib}{EmailFilterIn} setting in =configure
.

%USERSWEB%
instead of Main
, but this is not necessary even if you have renamed the main web by configuring {MainWebName}
in configure.
WebSearch - search TWiki site
WebSearch is an extremely fast and flexible search facility, part of the core TWiki feature set. WebSearchAdvanced offers more options, including:- topic title or full-text search
- regular expressions
- search within web or site-wide
- index-style A-Z alphabetical listing sorted topic title
- many more
WebChanges - what's new
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 presetSEARCH
. The number of topics listed by the limit
parameter.:
%SEARCH{ ".*" web="TWiki" type="regex" nosearch="on" sort="modified" reverse="on" limit="50" }%
WebRss and WebAtom - news feeds on recent changes
You can point your news reader at WebRss and WebAtom to find out what is new in a TWiki web. WebRssBase and WebAtomBase have the details. Like WebChanges, this is based on a%SEARCH{}%
.
WebIndex - list of topics
WebIndex lists all web topics in alphabetical order, with the first couple of lines of text. This is simply a presetSEARCH
:
%SEARCH{ "\.*" scope="topic" type="regex" nosearch="on" }%
WebStatistics - site statistics
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%
TWiki also generates overall site usage statistics in SiteStatistics (do not create that page, it is created automatically based on SiteStatisticsTemplate). On a monthly basis, the following items are recorded using system data and TWiki log data across all webs: Number of webs, number of topics, number of attachments, number of topic views, number of topic updates, number of files uploads, data size, pub size, disk use, number of users, number of groups, number of plugins installed compared to total number of plugins available, and the 10 top contributors.
Configuring for automatic operation
- You can automatically generate usage statistics for the whole site and all webs. To enable this:
- Make sure variable
{Log}{view}
,{Log}{save}
and{Log}{upload}
are set in configure. This will generate log file entries (see below). - Call the
twiki/bin/statistics
script from a cron job - once a day is recommended. This will update the SiteStatistics and the WebStatistics topics in all webs. - Attention: The script must run as the same user as the CGI scripts are running, such as user
nobody
orwww-data
. Example crontab entry:
0 0 * * * (cd /path/to/twiki/bin; ./statistics >/dev/null 2>&1)
- There is a workaround in case you can't run the script as user
nobody
: Run the utilitytwiki/tools/geturl.pl
in your cron job and specify the URL of thetwiki/bin/statistics
script as a parameter. Example:
0 0 * * * (cd /path/to/twiki/tools; ./geturl.pl mydomain.com /urlpath/to/twiki/bin/statistics >/dev/null 2>&1)
- NOTE:
geturl.pl
will do a TWiki CGI request as the TWikiGuest user, so if you use this workaround, the WebStatistics topics you are updating will have to be writable by TWikiGuest.
- Make sure variable
cd twiki/bin; ./statistics -logdate 2011-05 -webs TWiki,Sandbox
Generating statistics manually by URL
- If
{Stats}{DisableInvocationFromBrowser}
config parameter is false (it's false in this installation), thetwiki/bin/statistics
script can also be executed as a CGI script - just enter the URL in your browser. Examples:- Update current month for all webs you have access to:
/do/statistics
- Update current month for Main web only:
/do/statistics/Main
- Update Oct 2025 for Main web:
/do/statistics/Main?logdate=2025-10
- Update Oct 2025 for the ProjectX, ProjectY and ProjectZ webs:
/do/statistics?logdate=2025-10;webs=ProjectX,ProjectY,ProjectZ
- Update current month for all webs you have access to:
The maximum number of items in columns
There are columns having a list of items. The maximum number of items listed in a column is specified as follows.Topic | Column and part | Configuration parameter | Default |
---|---|---|---|
WebStatistics of webs | Affiliation breakdown in "Topic views", "Topic saves", and "File uploads" columns | {Stats}{TopAffiliation} |
10 |
"Most popular topic views" column | {Stats}{TopViews} |
10 | |
"Top viewers" column | {Stats}{TopViewers} |
10 | |
"Top contributors for tpoic save and uploads" column | {Stats}{TopContrib} |
10 | |
Main.SiteStatistics | The list of webs viewed the most number of times in the "Webs Viewed" column | {Stats}{SiteTopViews} |
0 |
The list of webs updated the most number of times in the "Webs Updated" column | {Stats}{SiteTopUpdates} |
0 | |
Affiliation breakdown in "Topic Views", "Topic Saves", and "File Uploads" columns | {Stats}{SiteTopAffiliation} |
10 | |
"Top Viewers" column | {Stats}{SiteTopViewers} |
10 | |
"Top Contributors" column | {Stats}{SiteTopContrib} |
10 |
Affiliation breakdown of views, saves, and uploads
If you run TWiki in an orgaization, you may want to see division breakdown of topic views, topic saves, and file uploads - in a month, how many topic views are there from the R&D division, the Sales division, etc. You can have affiliation breakdown at the Topic views, Topic saves, and File uploads columns of WebStatistics and SiteStatistics as follows.Month: | Topic views: |
Topic saves: |
File uploads: |
Most popular topic views: |
Top viewerss: | Top contributors for topic save and uploads: |
---|---|---|---|---|---|---|
2013-08 | 10325 (150 unique users) 6921 R&D 1736 Operation 927 Sales 623 Management 98 Unknown |
7 (3 unique users) 7 R&D |
3 (1 unique users) 3 R&D |
6941 WebHome 872 WebSearch 848 ToolSiteMap 376 ToolDashboard 223 WebSearchAdvanced 185 ContRequests 127 WebTopicList 89 ToolPersonalWebs 72 ToolMasquerading 70 TWikiAdminUser |
525 PeterThoeny 49 MahiroAndo 9 HdeyoImazu |
5 HdeyoImazu 1 MahiroAndo 1 PeterThoeny |
- Provide
getAffiliation($cUID)
object method in the current user mapping handler. It's supposed return the affiliation (division, department, etc.) of the$cUID
. If the affiliation is unknown, it returnsundef
. - Set
{Stats}{Breakdown}
configuration papameter true by putting the following line inlib/LocalSite.cfg
.$TWiki::cfg{Stats}{Breakdown} = 1;
Excluding some webs from WebStatistics update
You can exclude webs from WebStatistics update by specifying{Stats}{ExcludedWebRegex}
config parameter as follows.
$TWiki::cfg{Stats}{ExcludedWebRegex} = '^(Trash(x\d+x)?\d*|Sandbox\d*)\b';You may wonder when this is needed. There are webs not worth updating WebStatistics such as the Trash web. When a web is deleted, it becomes a subweb of the Trash web. By default, not only the Trash web but also subwebs of the Trash web are subject to WebStatistics update. On a large TWiki site, you may have dozens of Trash webs - you may rotate Trash webs and you may be UsingMultipleDisks (each disk requires its own Trash - e.g. Trashx1x and Trashx2x). If you have Trash, Trash1, ..., Trash10 for rotation and if you use 3 disks for TWiki, you end up having 33 Trashes.
Preventing WebStatistics and SiteStatistics from growing big
WebStatistics topics grow in size every month. By default you have only 10 lines per month, but you may have a lot more. If so, in 5 years, WebStatistics gets really big. Besides, if you run thestatistics
script every day, you increase the revision of each WebStatistics by one every day. If a topic has hundreds of revision, some operations such as getting the original creator of the topic takes long.
There is an option to prevent the boundless growth of WebStatistics.
If you set $TWiki::cfg{Stats}{TopicPerYear}
true, the statistics
script writes the result to WebStatisticsYYYY where YYYY is the current year (e.g. WebStatistics2025) instead of WebStatistics. The parameter is false by default. - If TWiki:Plugins/RedirectPlugin
is installed, viewing WebStatistics causes redirection to the WebStatisticsYYYY of the year. Otherwise, WebStatistics shows links to WebStatisticsYYYY topics.
- After you change
{Stats}{TopicPerYear}
to true but before you run thestatistics
script, you should runtwiki/tools/switch2yearlystats
to rename WebStatistics of all webs to WebStatisticsYYYY of the year. In case WebStatistics is not in the same format as its current template, it's renamed to WebStatistics0000.
{Stats}{TopicPerYear}
is true: - The site-wide statistics are written to Main.SiteStatisticsYYYY of the year instead of Main.SiteStatistics
- Main.SiteStatistics shows the list of Main.SiteStatisticsYYYY topics or redirects to the latest one depending on the availability of RedirectPlugin.
-
twiki/tools/switch2yearlystats
renames Main.SiteStatistics to Main.SiteStatisticsYYYY of the year or Main.SiteStatistics0000.
Upgrade from pre 6.0
Statistics topic conversion
There are several changes made to WebStatistics and SiteStatistics. If existing statistics topics are kept as they are, topic update by thestatistics
script doesn't work well.
By running tools/convert_stats_twiki6
after upgrade, all statistics topics are converted for the current version of statistics
.
Top Contributors on SiteStatistics
The number of contributors listed on the "Top Contributors" column on SiteStatistics is specified by{Stats}{SiteTopContrib}
.
Prior to TWiki 6.0, it was specified by {Stats}{TopContrib}
.
If you have a custom {Stats}{TopContrib}
value, you need to set {Stats}{SiteTopContrib}
as well. Otherwise, the number of "Top Contributors" on SiteStatistics becomes the default value, which is 10.
Log Files
TWiki generates monthly log files which are used by the statistics script- The log file is defined by the {LogFileName} setting in configure
- The file name is
log<year><month>.txt
- Example path name:
twiki/logs/log202510.txt
- Each access gets logged as:
| <time in GMT> | <wikiusername> | <action> | <web>.<topic> | <extra info> | <IP address> |
- Example log entry:
| 09 Oct 2025 - 19:40 | Main.TWikiGuest | view | TWiki.WebRss | | 66.124.232.02 |
- Actions are logged if enabled in configure by the {Log}{action} flags
- Logged actions:
Script Action name Extra info attach attach
when viewing attach screen of previous uploaded attachment: filename
changes changes
edit edit
when editing non-existing topic: (not exist)
login, logon,
attach, edit,
register, rest,
view, vewfilesudologin
,
sudologout
Login name of administrator user who is logging in or out manage changepasswd
Login name of user who's password is changed mdrepo mdrepo
operation and its arguments rdiff rdiff
higher and lower revision numbers: 4 3
register regstart
WikiUserName, e-Mail address, LoginName: user attempts to register
register register
E-mail address: user successfully registers
register bulkregister
WikiUserName of new, e-mail address, admin ID rename rename
when moving topic: moved to Newweb.NewTopic
rename renameweb
when renaming a web: moved to Newweb
rename move
when moving attachment: Attachment filename moved to Newweb.NewTopic
resetpasswd resetpasswd
Login name of user who's password is reset 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
save cmd
special admin parameter used when saving search search
search string upload upload
filename view view
when viewing non-existing topic: (not exist)
when viewing previous topic revision:r3
viewfile viewfile
Attachment name and revision: File.txt, r3
Configuring outgoing mail
Outgoing mail is required for TWikiRegistration and for recent changes alert. TWiki will use theNet::SMTP
module if it is installed on your system. Set this with the {SMTP}{MAILHOST}
setting in configure.
-
You can define a separate
{SMTP}{SENDERHOST}
configure setting to set the mail sender host - some SMTP installations require this. -
If you are using SELinux (Security-Enhanced Linux
) you might need to configure it to allow TWiki to send e-mails:
$ sudo setsebool -P httpd_can_sendmail on
$ sudo setsebool -P httpd_can_network_connect on
sendmail
, if the Net::SMTP
module is not installed or not functioning properly. Set the program path in {MailProgram}
and set {SMTP}{MAILHOST}
to an empty value in configure.
The notify e-mail uses the default changes.tmpl
template, or a skin if activated in the TWikiPreferences.
mailnotify also relies on two hidden files in each twiki/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.
Setting the automatic e-mail schedule
For Unix platforms: Edit thecron
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/twiki; perl -I bin tools/mailnotify -q)The above line will run mailnotify nightly at 01:00. The
-q
switch suppresses all normal output. Details at MailerContrib.
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. TWiki:Codev/CronTabWin
Site Permissions
- TWikiAccessControl describes how to restrict read and write access to topics and webs, by users and groups
- SitePermissions lists the permissions settings of the webs on this TWiki site
Backup and Restore
TWiki has a solution to backup, restore and upgrade TWiki sites. It can be used via browser and on the command line. The BackupRestorePlugin is pre-installed in TWiki-5.1 and later releases; it can be installed in older TWiki releases as low as TWiki-2001-09-01 (Athens Release) to easily create a backup that can be restored on a new TWiki release. This offers an easy upgrade path for TWiki. See also TWikiUpgradeGuide.Help with crontab
The crontab command is used to schedule commands to be executed periodically.- Wikipedia.org:Crontab - crontab documentation
- pycron
- crontab for Windows




