Someone Ash Styles requested this API Mod script snippit in the Roll20 official discord and it seems better to give the code-snippint for copy-pasting from Roll20 Community Forums so I will re-share this here.  This is a version where I made very slight modifications of a snippit The Aaron wrote and shared here long-ago.   This is a way to detect when someone rolls a Natural 20 or a Natural 1, it shares a bold color-text message into the chat room. Maybe you can modify the code to do other celebrations.   AnnounceNats.js AKA AnnouncRoll.js   // Github:   <a href="https://github.com/shdwjk/Roll20API/blob/master/AnnouncRoll/AnnouncRoll.js" rel="nofollow">https://github.com/shdwjk/Roll20API/blob/master/AnnouncRoll/AnnouncRoll.js</a> // By:       The Aaron, Arcane Scriptomancer // Contact:  <a href="https://app.roll20.net/users/104025/the-aaron" rel="nofollow">https://app.roll20.net/users/104025/the-aaron</a> var AnnounceRoll = AnnounceRoll || (function() {     'use strict';     var version = '0.2.2',         lastUpdate = 1427604233,     checkInstall = function() {             log('-=> AnnounceRoll v'+version+' <=-  ['+(new Date(lastUpdate*1000))+']');     },     handleInput = function(msg) {         var rolldata,out=[];         if (msg.type !== "rollresult") {             return;         }         rolldata = JSON.parse(msg.content);         _.each(rolldata.rolls,function(r){             if('R' === r.type && 20 === r.sides) {                 _.each(r.results, function(roll){                     switch(roll.v) {                         case 1:                             out.push('<div style="color: #009900;font-weight: bold">Nat 1.. What wizardry is this? (Narrative)</div>');                             break;                         case 20:                             out.push('<div style="color: #009900;font-weight: bold">NATURAL 20! (Narrative opportunity)</div>');                             break;                     }                 });             }         });         if(out.length) {             sendChat('',out.join(''));         }     },     registerEventHandlers = function() {         on('chat:message', handleInput);     };     return {         CheckInstall: checkInstall,         RegisterEventHandlers: registerEventHandlers     }; }()); on('ready',function() {     'use strict';     AnnounceRoll.CheckInstall();     AnnounceRoll.RegisterEventHandlers(); });