Уведомления должен посылать PHP скрипт, тогда вопрос отправки спама упирается лишь в вопрос валидации запросов от браузера к PHP скрипту.
Я бы сам как сделал... никаких токенов не применял бы, а использовал бы в качестве секрета сам порядок свойств в теле запроса, который меняется в зависимости от времени. При том чтобы это не очевидно было, давать успешный ответ как на валидные, так и не на валидные запросы. Сам JS код пропустить через обфускатор, ленивый злоумышленник не будет ничего распутывать, когда структура запроса в консоли очевидная и не содержит никаких непонятных моментов.