the block seems to only trigger at the end of the flow, even if its a first block in the flow
Not sure what you mean by a block "trigger"ing.
If you’re saying that currently-running flows will show up in analytics and only be cleaned up at the end, that is an intentional design decision. With that said, if you look at a trace, blocks should always run in the order they are placed.
IIRC the exclude from analytics block just sets a flag for the analytics data to be cleaned up when the flow is done executing. Analytics data is used for a lot more than just the UI in the dashboard, it needs to be maintained while the flow runs.
the way i noticed this was that the flow errored out, but it still showed up