Skip to content

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.

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
}
)

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
}
)

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.

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
}
)

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
}
)