Following the OP's update, I'll start with a specific suggestion for their problem. This will be followed by the sort of approach that you might take in the more general case (a slightly updated version of my original answer).
Specific Answer: Campaign Events
As I understand your needs, your users still need to be aware of new events as they arrive, even if they are filtering/sorting to focus on specific users and/or campaigns. Even if your users were happy for new events to suddenly pop into existence in the main list, the sorting/filtering in effect might prevent them from being seen.
I would therefore suggest two modes, depending on whether any sorting/filtering is being applied:
The default mode will be to show all events in the list-view, with new events popping into existence at the top of the list as the arrive.
Whenever any non-standard sorting/filtering is in effect, show new events in a "ticker strip" along the bottom of the window/screen. (I've just coined the term myself: no idea if there is an "official" name for such a thing).
The following shows a mock-up where three new events have arrived since the user started applying their own sorting and filtering operations:
Obviously, you can vary which details of the new event are shown, and whether or not to use colour-coding as an indicator (as I have done for Event Type).
Should you get more new events than fit within the "ticker strip", then the cell at one end or the other of the strip can be used as summary. If it's more important to show the first few new events (since starting to sort/filter) then put the summary on the right (the three original events are shown; two newer ones are summarized):
If it's more important to show the most recent new events then put the summary on the left (the oldest two original events are summarized; the most recent original event and two new ones are shown):
In all cases, clicking the "recycle" logo would return to "default mode": clear the ticker, clear all sorting/filtering, and re-display the main list with all events, newest at the top.
Depending on how much "real-estate" you have available, you could always leave space for the "ticker strip", even if the main list-view is showing a "live" feed. Alternatively, you could "steal" the space for the bottom few rows from the list-view when needed. This would probably best be done when the user first starts to apply sorting/filtering (as opposed to when the first new event arrives): that way it happens on a user-initiated action instead of randomly.
I think the right way™ will depend on individual situations. A couple of questions you should be asking Product Owners and/or users include:
Why are they using filters/sorting? Is it to perform some specific task, or to create a view? (Roughly, are they actively or passively using the features: see below).
How important is it to know about new events? Can they just be "made aware there are new events" or is the arrival of a new event so important that users need to know about it even if in the middle of something else?
Examples of the ways a user might be using sorting/filtering include:
Specific Task: An accounts Receivable clerk uses a filter to show only overdue accounts. They sort by date to show the oldest and select a number of entries. They then sort by amount owed, and select a number of the largest. Selected entries are then escalated.
A user probably doesn't want to be interrupted in the middle of performing such a task by having new entries suddenly appear in the middle of their list.
Establishing a View: Someone on a Support Desk might sort incidents by severity (highest first) and age (oldest first), filtering out those waiting for customer response. Once set, they will repeatedly pick the top ticket in the list and contact the customer.
In this case, if a new "Severity 1" incident comes in, it will want to be automatically inserted at the top of the list as soon as it arrives.
Depending on the answers to questions like these will inform you as to how best to handle things:
In some cases (e.g. the Support Desk example) it would be appropriate to insert new entries into the list as soon as they arrive.
In some cases, while it might be appropriate to insert new entries, the nature of the sorting/filtering would mean they wouldn't immediately be visible.
In other cases, it wouldn't be appropriate to interrupt what the user is doing by inserting new entries into the list (whether they would be visible or not).
In the latter two cases, you want some other way to indicate new entries exist:
It may be sufficient to have an area of the screen informing the user that there are new events, probably with an option to "refresh" the list to include them.
It may be necessary to show (at least some) details from individual events.
For the latter case, one option might be to have two lists. One always unfiltered and organised so that new events appear at the top of the list; the other where the user can apply sorting/filtering. In most cases, I suspect this would be either cumbersome, or wasteful of screen real-estate. One possible method could be to normally show the unfiltered/new-events-on-top list. When the user wants to sort/filter, the list area goes into a "split-screen" mode, where the upper half remains unfiltered, but the lower half can be sorted/filtered as desired.
Another option would be to use something like the "ticker strip" paradigm I described at the top of this answer.