The following is a way to accomplish what you're trying to do. It uses an excel spreadsheet to house a time variable so it can track how long it's been. This process may look long, but it's really not and should be fairly easy to set up.
The first thing to do is open a new, blank spreadsheet and enter these values:
| TrackingNumber | CurrentTime |
| 12345 | 2024-01-24T16:52:50.3362230Z |
You can name the headers and make the number whatever you want - they're just used to reference the cell we're pulling. The main thing is to copy/paste the timestamp exactly as shown above.
Once you have this info in your spreadsheet, click the Insert menu and click the Table option. Make sure it has the 4 cells for the range, then check the "My table has headers" box as shown below:

Once you click OK you should see it converted into a colored table format. You can also edit the name if you'd like, but I'm just leaving mine as Table1:

Save the spreadsheet and name it whatever you want - I called mine "x30MinTestx.xlsx" as you'll see in the flow. Next up is to move the spreadsheet to somewhere that Power Automate can access. Your OneDrive is probably the easiest place and nobody will mess with it. Or you can throw it in a files section of a Teams group, or even a SharePoint site. I put mine in the root of my OneDrive for Business folder.
Now start a brand new Power Automate cloud flow. For now, just set the trigger as Manual so we can test it. Then add a "Current time" action.

For the next step, search for Excel and add the "Get a row" action. From here, you will select all the drop downs to find your file's location, along with the table, and key column/value. If you put yours in your OneDrive root and named everything the same as mine, it should look like this:

For the next action, add an "Initialize variable" step. Name can be whatever you want, but type is boolean and then click in the value section, then in the expression line, enter this and click update:
bool(if(greater(body('Current_time'), addMinutes(outputs('Get_a_row')?['body/CurrentTime'], 30)), 'true', 'false'))

(If you renamed either of the previous actions, just update the code with your names, otherwise this will work for the defaults)
Next step is easy, so just add a Condition then set the variable we initialized as equal to true:

Then for the conditional steps, you can leave NO blank since it won't be doing anything (or you can throw a null command or comment in there)

The YES path is where you will eventually add your actual action items - be it a teams message or email sent out - but for now leave them out while we test. But we do need to go ahead and and add an Excel action for "Update a row" then select the same dropdown options from before. And finally add the dynamic value of "Current Time" in so it looks like this:

Now save the flow and we are ready to test. If you copied my timestamp in exactly as shown at the start, then by now it's been well over 30 minutes. So your first test should definitely flag the YES route:

Notice it updated the row in the Yes section? You can open your spreadsheet to confirm, but it should now have the updated timestamp. So if you turn right around and test your flow again, it will not have been 30 minutes, and you should see the No route flagged:

At this point feel free to continue testing as much as you'd like. Once you're comfortable it's working properly, then you can delete the manual trigger and replace it with an Outlook "When a new email arrives" trigger. And you'll also now want to add the actual actions to take in the Yes part of the condition.
Let us know if that works and good luck!