Skip to content

Filtering events

You can filter out or customize events sent to Honeybadger Insights by using the Honeybadger.EventFilter.Mixin module. You can customize both the event built from telemetry data (filter_telemetry_event/3) and the event right before it is sent to Honeybadger (filter_event/1):

defmodule MyApp.MyFilter do
use Honeybadger.EventFilter.Mixin
# Drop analytics events by returning nil
def filter_event(%{event_type: "analytics"} = _event), do: nil
# Anonymize user data in login events
def filter_event(%{event_type: "login"} = event) do
event
|> update_in([:data, :user_email], fn _ -> "[REDACTED]" end)
|> put_in([:metadata, :filtered], true)
end
# Remove query field for a specific repo
def filter_event(%{event_type: "my_app.repo.query"} = event) do
Map.delete(event, :query)
|> put_in([:metadata, :filtered], true)
end
# For telemetry events, you can customize while still applying default filtering
def filter_telemetry_event(data, raw, event) do
# First apply default filtering
filtered_data = apply_default_telemetry_filtering(data)
# Then apply custom logic
case event do
[:auth, :login, :start] ->
Map.put(filtered_data, :security_filtered, true)
_ ->
filtered_data
end
end
# Keep all other events as they are
def filter_event(event), do: event
end

Then configure the filter in your application’s configuration:

config :honeybadger, event_filter: MyApp.EventFilter