Filtering events
You can filter out or customize events sent to Honeybadger Insights by using the
honeybadger.BeforeEvent() function. This allows you to modify event data or
skip events entirely before they are sent.
Modifying events
Section titled “Modifying events”To modify or augment event data before it’s sent, add a callback that modifies
the event map and returns nil:
honeybadger.BeforeEvent( func(event map[string]any) error { event["environment"] = "production" return nil })Dropping events
Section titled “Dropping events”To skip events from being sent, return honeybadger.ErrEventDropped:
honeybadger.BeforeEvent( func(event map[string]any) error { if event["event_type"] == "debug_event" { return honeybadger.ErrEventDropped } return nil })Multiple callbacks
Section titled “Multiple callbacks”You can register multiple BeforeEvent callbacks. They will be executed in the
order they were registered. If any callback returns ErrEventDropped, the event
is skipped.
Example: Filtering sensitive data
Section titled “Example: Filtering sensitive data”A common use case is to filter sensitive data from events:
honeybadger.BeforeEvent( func(event map[string]any) error { // Remove sensitive fields delete(event, "password") delete(event, "credit_card")
// Anonymize email addresses if email, ok := event["email"].(string); ok { event["email"] = anonymizeEmail(email) }
return nil })Example: Dropping high-volume events
Section titled “Example: Dropping high-volume events”You might want to drop certain high-volume events to reduce costs:
honeybadger.BeforeEvent( func(event map[string]any) error { // Drop health check events if event["event_type"] == "health_check" { return honeybadger.ErrEventDropped }
// Drop events from internal services if source, ok := event["source"].(string); ok { if source == "internal-monitoring" { return honeybadger.ErrEventDropped } }
return nil })