Skip to content

Event Hooks

Event hooks let your module or theme respond to actions in FOSSBilling — like when a client signs up, an order is placed, or cron runs.

FOSSBilling fires events at key moments. You can register handlers to run your code when these events fire.

Hook names follow this pattern:

  • onBefore{Action} — Runs before the action
  • onAfter{Action} — Runs after the action
  • onEvent{Description} — Fires when a specific event occurs
  • onBeforeAdminActivateExtension
  • onAfterAdminActivateExtension
  • onBeforeAdminDeactivateExtension
  • onAfterAdminDeactivateExtension
  • onBeforeAdminInstallExtension
  • onAfterAdminInstallExtension
  • onBeforeAdminUninstallExtension
  • onAfterAdminUninstallExtension
  • onBeforeAdminUpdateExtension
  • onAfterAdminUpdateExtension
  • onAfterAdminExtensionConfigSave
  • onBeforeAdminCreateClient
  • onAfterAdminCreateClient
  • onAfterAdminClientDelete
  • onBeforeAdminClientPasswordChange
  • onAfterAdminClientPasswordChange
  • onBeforeAdminClientUpdate
  • onAfterAdminClientUpdate
  • onBeforeAdminOrderActivate
  • onAfterAdminOrderActivate
  • onBeforeAdminOrderCancel
  • onAfterAdminOrderCancel
  • onBeforeAdminOrderCreate
  • onAfterAdminOrderCreate
  • onBeforeAdminOrderDelete
  • onAfterAdminOrderDelete
  • onBeforeAdminOrderRenew
  • onAfterAdminOrderRenew
  • onBeforeAdminOrderSuspend
  • onAfterAdminOrderSuspend
  • onBeforeAdminOrderUncancel
  • onAfterAdminOrderUncancel
  • onBeforeAdminOrderUnsuspend
  • onAfterAdminOrderUnsuspend
  • onBeforeAdminOrderUpdate
  • onAfterAdminOrderUpdate
  • onAfterAdminBatchSuspendOrders
  • onBeforeAdminInvoiceApprove
  • onAfterAdminInvoiceApprove
  • onBeforeAdminInvoiceDelete
  • onAfterAdminInvoiceDelete
  • onBeforeAdminInvoiceRefund
  • onAfterAdminInvoiceRefund
  • onBeforeAdminInvoiceSendReminder
  • onBeforeAdminInvoiceSendReminders
  • onAfterAdminInvoiceReminderSent
  • onBeforeAdminInvoiceUpdate
  • onAfterAdminInvoiceUpdate
  • onBeforeAdminGenerateRenewalInvoice
  • onAfterAdminGenerateRenewalInvoice
  • onEventBeforeInvoiceIsDue
  • onEventAfterInvoiceIsDue
  • onBeforeAdminOpenTicket
  • onAfterAdminOpenTicket
  • onAfterAdminCloseTicket
  • onAfterAdminReplyTicket
  • onAfterAdminPublicTicketOpen
  • onAfterAdminPublicTicketClose
  • onAfterAdminPublicTicketReply
  • onBeforeAdminStaffCreate
  • onAfterAdminStaffCreate
  • onBeforeAdminStaffDelete
  • onAfterAdminStaffDelete
  • onBeforeAdminStaffPasswordChange
  • onAfterAdminStaffPasswordChange
  • onBeforeAdminStaffApiKeyChange
  • onAfterAdminStaffApiKeyChange
  • onBeforeAdminStaffUpdate
  • onAfterAdminStaffUpdate
  • onBeforeAdminStaffProfileUpdate
  • onAfterAdminStaffProfileUpdate
  • onBeforeAdminStaffProfilePasswordChange
  • onAfterAdminStaffProfilePasswordChange
  • onBeforeAdminCronRun
  • onAfterAdminCronRun
  • onBeforeAdminDeleteCurrency
  • onAfterAdminDeleteCurrency
  • onBeforeAdminSettingsUpdate
  • onAfterAdminSettingsUpdate
  • onBeforeAdminTransactionCreate
  • onAfterAdminTransactionCreate
  • onBeforeAdminTransactionProcess
  • onAfterAdminTransactionProcess
  • onBeforeAdminTransactionUpdate
  • onAfterAdminTransactionUpdate
  • onAfterAdminNotificationAdd
  • onBeforeAdminUpdateCore
  • onAfterAdminUpdateCore
  • onBeforeAdminLogin
  • onAfterAdminLogin
  • onEventAdminLoginFailed
  • onBeforeClientSignUp
  • onAfterClientSignUp
  • onBeforeClientLogin
  • onAfterClientLogin
  • onEventClientLoginFailed
  • onBeforeClientProfileUpdate
  • onAfterClientProfileUpdate
  • onBeforeClientProfilePasswordChange
  • onAfterClientProfilePasswordChange
  • onAfterClientOrderCreate
  • onBeforeProductAddedToCart
  • onAfterProductAddedToCart
  • onBeforeClientOpenTicket
  • onAfterClientOpenTicket
  • onAfterClientCloseTicket
  • onAfterClientReplyTicket
  • onBeforeClientChangeNameservers
  • onAfterClientChangeNameservers
  • onBeforeClientCheckout
  • onBeforeClientInvoiceDelete
  • onBeforeGuestPublicTicketOpen
  • onAfterGuestPublicTicketOpen
  • onAfterGuestPublicTicketClose
  • onAfterGuestPublicTicketReply
  • onBeforeGuestPasswordResetRequest

Define static methods in your module's Service.php:

class Service
{
public static function onAfterAdminOrderCreate(\Box_Event $event): void
{
$order = $event->getSubject();
error_log('New order created: ' . $order->id);
}
public static function onBeforeAdminCronRun(\Box_Event $event): void
{
}
}

FOSSBilling automatically discovers and calls these hooks when the events fire.