Here is an example of how you can override the SendMacro method on the TWebApp to add features to built-in macros such as JUMP. Thanks to Matthew Kleiderman for this code. procedure TMyWebApp.SendMacro( const Text : string ); var destinationPage : string; {The PageID of the page in the JUMP macro} visiblePhrase : string; {The portion of the macro after the PageID} begin if CompareText( Copy(Text,1,4), 'jump' ) = 0 then begin destinationPage := Text; System.Delete( destinationPage, 1, 5 ); {Remove the leading 'jump|'} visiblePhrase := destinationPage; System.Delete( destinationPage, pos('|',destinationPage), Length(destinationPage)-pos('|',destinationPage)+1 ); {Remove the visible phrase} System.Delete( visiblePhrase, 1, pos('|', visiblePhrase) ); {Remove the Destination PageID} with WebOutput do begin Send( '' ); Send( visiblePhrase + '' ); end; {with WebOutput do} end else inherited SendMacro(Text); end;