new types used to interface with the trace events: TOnTracePChar = procedure(Sender:TWebOutputApp;Text:PChar;Before:Boolean) of object; TOnTraceString = procedure(Sender:TWebOutputApp;const Text:String;Before:Boolean) of object; new public method: procedure TraceBuiltInEvent(const EventName,Parameter:String); used to inform the trace code that a certain builtin event is about to be processed. see usage example in htwebapp.pas new public properties: property TraceEnabled: Boolean read fTraceEnabled write fTraceEnabled; Enables the tracing code to recognise the trace related events. webhub is optimized internally so that the tracing logic does not slow down pages when tracing is inactive. property TraceInHTML: Boolean read fTraceInHTML write fTraceInHTML; controls if trace output is to be in html form. this property exists soley for the purpose of the html panel and can be affected from there and through the TraceOn/Off properties. new published properties: property TraceOn: String read GetTraceOn; reading traceOn from HTML (with %=TraceOn=%) enables html traceoutput for the current page/surfer. property TraceOff: String read GetTraceOff; reading traceOff from HTML (with %=TraceOff=%) disables html traceoutput for the current page/surfer. property OnTracePChar: TOnTracePChar read fOnTracePChar write fOnTracePChar; property OnTraceMacro: TOnTraceString read fOnTraceMacro write fOnTraceMacro; property OnTraceChunk: TOnTraceString read fOnTraceChunk write fOnTraceChunk; property OnTraceComponent: TOnTraceString read fOnTraceComponent write fOnTraceComponent; the above events are used to inform the trace-logic that text, macros, chunks, or components are being rendered. it's likely that they will be collapsed into a single event in future versions. the parameters to these events are read-only and can not be used to modify what will be sent. for that, please override the sendmacro, sendpchar or sendbufferedchunk procedures. to add tracing to your app, consider adding the following logic to your page header: %=IF|WantToTrace|%=TraceOn=%=% Note that the html trace output can break otherwise perfect html and/or javascript. For example you may not be able to submit forms from a page containing trace- output of a form built using the %=WHERE=% or %=ACTION=% macros (use the input macros to avoid this particular case) . To avoid getting stuck, you might want to add a %=CLEAR|WantToTrace=% to your homepage or some other central page so that you can bail out. Another option is to put %=TraceOff=% before tags that would get broken by the trace and to re-enable the trace thereafter by repeating the %=IF|WantToTrace|%=TraceOn=%=% in your document. this will let you trace everything on a page while protecting javascript or form sections. lastly, the CMDHAS macro might provide a good way for you to integrate remote tracing into a webhub app. By using %=CMDHAS|Debug314|%=TraceOn=%=% you could conditionally enable a remote trace from afar. be careful to not use an easy to guess command as to keep details about your pages from others.