diff --git a/sentry_sdk/client.py b/sentry_sdk/client.py index 67ed94cc38..155c4a0699 100644 --- a/sentry_sdk/client.py +++ b/sentry_sdk/client.py @@ -194,6 +194,20 @@ def _prepare_event( ), ) + before_send_transaction = self.options["before_send_transaction"] + if before_send_transaction is not None and event.get("type") == "transaction": + new_event = None + with capture_internal_exceptions(): + new_event = before_send_transaction(event, hint or {}) + if new_event is None: + logger.info("before send transaction dropped event (%s)", event) + if self.transport: + self.transport.record_lost_event( + "before_send_transaction", data_category="error" + ) + return None + event = new_event # type: ignore + before_send = self.options["before_send"] if before_send is not None and event.get("type") != "transaction": new_event = None diff --git a/sentry_sdk/consts.py b/sentry_sdk/consts.py index 0f7675fbcd..7c20f61fb2 100644 --- a/sentry_sdk/consts.py +++ b/sentry_sdk/consts.py @@ -67,6 +67,7 @@ def __init__( ignore_errors=[], # type: List[Union[type, str]] # noqa: B006 request_bodies="medium", # type: str before_send=None, # type: Optional[EventProcessor] + before_send_transaction=None, # type: Optional[EventProcessor] before_breadcrumb=None, # type: Optional[BreadcrumbProcessor] debug=False, # type: bool attach_stacktrace=False, # type: bool