How to Get Updated User Data in Flow After non-blocking items.update?

Brief Description:
Struggling to fetch updated user data in Flow after items.update event.

Details:
We’re building a Flow to send a welcome email when a user’s status in directus_users changes to active. The items.update trigger provides the updated user’s ID in keys (“7c544c2d-75ba-4aca-9ece-ba013ee86206”), but the payload only shows admin data ({“last_page”: “/users”}), not the updated user’s status or email.

Our Read Data step uses this filter:

{
  "filter": {
    "id": { "_eq": "{{ $trigger.keys[0] }}" },
    "status": { "_eq": "active" }
  },
  "fields": ["email", "status", "id"]
}

But it returns the first user with status = active (example0@gmail.com), not the one just updated (example00@gmail.com). We also tried using directus_revisions to check changes but got RangeError: Maximum call stack size exceeded in a Condition step ({{ $read.get_user_data[0].status === ‘active’ }}).

Question:
How can we fetch the updated user’s data in Flow and confirm the status changed to active in this event?

Logs:

{
  "event": "users.update",
  "payload": { "last_page": "/users" },
  "keys": ["7c544c2d-75ba-4aca-9ece-ba013ee86206"],
  "collection": "directus_users"
}
{
  "query": {
    "filter": {
      "id": { "_eq": "7c544c2d-75ba-4aca-9ece-ba013ee86206" },
      "status": { "_eq": "active" }
    },
    "fields": ["email", "status", "id"]
  },
  "collection": "directus_users"
}
[
  { "email": "example0@gmail.com", "status": "active", "id": "7c544c2d-75ba-4aca-9ece-ba013ee86206" }
]
{
  "name": "RangeError",
  "message": "Maximum call stack size exceeded"
}

The flow you’ve set up monitors all changes to user data. Whenever a user navigates within the app, their record is updated with the latest page they visited. As a result, you’ll notice multiple triggers in the logs—not just those related to changes in user status. If you review the flow logs, you’ll find entries that include the user’s payload. To prevent unnecessary triggers, be sure to add a condition filter to your event that only allows relevant changes to proceed.

Here’s an example condition:

{
    "$trigger": {
        "payload": {
            "status": "active"
        }
    }
}

Are you using a “Filter (Blocking)” or “Action (non-blocking)” event? The “filter” event happens before the data is saved to the database thus the new data is not available yet however an “action” runs after the update has been persisted to the database.

Hello. Yes, I’m using a non-blocking action.

The point of flow is to send an email after the client’s status changes to active

So I’m trying to listen to the directus_users collection update event and track trigger payload via read data, but it doesn’t work as expected and as I wrote above I get the data of the one who made the change and not the one who was updated.

Thanks in advance for the reply.

I made 2 filters after the trigger and it worked.

1:

{
    "$trigger": {
        "payload": {
            "status": "active"
        }
    }
}

2:

{
    "$trigger": {
        "event": {
            "_eq": "users.update"
        }
    }
}

In this way it was possible to filter out the specific event and the modified status on the basis of which to continue the flow logic, thanks for the answers.