Hi N,
Thank you for reaching out.
Kindly refer to my response to your questions.
1. Is there a way I can fire an event every time a keyword is created?
I am afraid you have to implement this on your end.
2. Is there a way to determine what are the new keywords created based on a timestamp if I pull in an hourly basis?
You can use the CustomerSyncService.get() to get changes in your campaigns and accounts. These changes include fields such as criteria. You can refer to this sample code (also available on other languages) on how to use this service. However, this service is not as detailed as the Change History that is available in the UI.
Regards,
Dannison
Google Ads API Team

ref:_00D1U1174p._5001UHEL85:ref