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.
How Hooks Work
Section titled “How Hooks Work”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 actiononAfter{Action}— Runs after the actiononEvent{Description}— Fires when a specific event occurs
Admin Hooks
Section titled “Admin Hooks”Extensions
Section titled “Extensions”onBeforeAdminActivateExtensiononAfterAdminActivateExtensiononBeforeAdminDeactivateExtensiononAfterAdminDeactivateExtensiononBeforeAdminInstallExtensiononAfterAdminInstallExtensiononBeforeAdminUninstallExtensiononAfterAdminUninstallExtensiononBeforeAdminUpdateExtensiononAfterAdminUpdateExtensiononAfterAdminExtensionConfigSave
Clients
Section titled “Clients”onBeforeAdminCreateClientonAfterAdminCreateClientonAfterAdminClientDeleteonBeforeAdminClientPasswordChangeonAfterAdminClientPasswordChangeonBeforeAdminClientUpdateonAfterAdminClientUpdate
Orders
Section titled “Orders”onBeforeAdminOrderActivateonAfterAdminOrderActivateonBeforeAdminOrderCancelonAfterAdminOrderCancelonBeforeAdminOrderCreateonAfterAdminOrderCreateonBeforeAdminOrderDeleteonAfterAdminOrderDeleteonBeforeAdminOrderRenewonAfterAdminOrderRenewonBeforeAdminOrderSuspendonAfterAdminOrderSuspendonBeforeAdminOrderUncancelonAfterAdminOrderUncancelonBeforeAdminOrderUnsuspendonAfterAdminOrderUnsuspendonBeforeAdminOrderUpdateonAfterAdminOrderUpdateonAfterAdminBatchSuspendOrders
Invoices
Section titled “Invoices”onBeforeAdminInvoiceApproveonAfterAdminInvoiceApproveonBeforeAdminInvoiceDeleteonAfterAdminInvoiceDeleteonBeforeAdminInvoiceRefundonAfterAdminInvoiceRefundonBeforeAdminInvoiceSendReminderonBeforeAdminInvoiceSendRemindersonAfterAdminInvoiceReminderSentonBeforeAdminInvoiceUpdateonAfterAdminInvoiceUpdateonBeforeAdminGenerateRenewalInvoiceonAfterAdminGenerateRenewalInvoiceonEventBeforeInvoiceIsDueonEventAfterInvoiceIsDue
Tickets
Section titled “Tickets”onBeforeAdminOpenTicketonAfterAdminOpenTicketonAfterAdminCloseTicketonAfterAdminReplyTicketonAfterAdminPublicTicketOpenonAfterAdminPublicTicketCloseonAfterAdminPublicTicketReply
onBeforeAdminStaffCreateonAfterAdminStaffCreateonBeforeAdminStaffDeleteonAfterAdminStaffDeleteonBeforeAdminStaffPasswordChangeonAfterAdminStaffPasswordChangeonBeforeAdminStaffApiKeyChangeonAfterAdminStaffApiKeyChangeonBeforeAdminStaffUpdateonAfterAdminStaffUpdateonBeforeAdminStaffProfileUpdateonAfterAdminStaffProfileUpdateonBeforeAdminStaffProfilePasswordChangeonAfterAdminStaffProfilePasswordChange
System
Section titled “System”onBeforeAdminCronRunonAfterAdminCronRunonBeforeAdminDeleteCurrencyonAfterAdminDeleteCurrencyonBeforeAdminSettingsUpdateonAfterAdminSettingsUpdateonBeforeAdminTransactionCreateonAfterAdminTransactionCreateonBeforeAdminTransactionProcessonAfterAdminTransactionProcessonBeforeAdminTransactionUpdateonAfterAdminTransactionUpdateonAfterAdminNotificationAddonBeforeAdminUpdateCoreonAfterAdminUpdateCore
Authentication
Section titled “Authentication”onBeforeAdminLoginonAfterAdminLoginonEventAdminLoginFailed
Client Hooks
Section titled “Client Hooks”Account
Section titled “Account”onBeforeClientSignUponAfterClientSignUponBeforeClientLoginonAfterClientLoginonEventClientLoginFailedonBeforeClientProfileUpdateonAfterClientProfileUpdateonBeforeClientProfilePasswordChangeonAfterClientProfilePasswordChange
Orders
Section titled “Orders”onAfterClientOrderCreateonBeforeProductAddedToCartonAfterProductAddedToCart
Tickets
Section titled “Tickets”onBeforeClientOpenTicketonAfterClientOpenTicketonAfterClientCloseTicketonAfterClientReplyTicketonBeforeClientChangeNameserversonAfterClientChangeNameservers
Invoices
Section titled “Invoices”onBeforeClientCheckoutonBeforeClientInvoiceDelete
Guest Hooks
Section titled “Guest Hooks”onBeforeGuestPublicTicketOpenonAfterGuestPublicTicketOpenonAfterGuestPublicTicketCloseonAfterGuestPublicTicketReplyonBeforeGuestPasswordResetRequest
Using Hooks in Your Module
Section titled “Using Hooks in Your Module”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.