Template sensor using integration_entities() not updating when new entity added

I can’t find a method to detect new users when they first logon. I’m successfully using this:

    - name: browser_users_last_viz
      unique_id: browser_users_last_viz
      state: >
         {% set lastone = integration_entities('browser_mod')|select('contains','browser_visibility')|reject('contains','dji')|expand|sort(attribute='last_changed')|last %}
         {{ lastone.name.split(' Browser')[-2] ~' /'~ lastone.state[0] ~';'~lastone.last_changed.isoformat()[0:19] }}

as a trigger to a sensor that keeps track of who is accessing HA. It’s working fine for existing users but not catching new browser_mod entities, despite the use of expand. It works correctly in developer tools but does not update the sensor. From reading this Template sensor(s) using "integration_entities" not updating automatically I have created an automation that updates the above sensor when a new entity is created:

alias: new_browser_mod_users
description: Update browser users if a new browser is created
triggers:
  - trigger: event
    event_type: entity_registry_updated
    event_data:
      action: create
conditions: []
actions:
  - action: homeassistant.update_entity
    metadata: {}
    data:
      entity_id:
        - sensor.browser_users_last_viz
mode: single

Which does appear to force an update on the sensor I’m using to trigger logging. However, despite this, no state or last-updated is available for the new sensors.
FYI the trigger sensor I’m using maintains a little database of each user the number of times they are visible and for how long. It looks like this:

  - trigger:
    - platform: state
      entity_id: 
        - sensor.browser_users_last_viz
      not_to: 
        - "unavailable"
        - "unknown"
      for:
        seconds: 1
    sensor:
      - name: browser_users_db_viz
        unique_id: browser_users_db_viz
        state: "{{ trigger.to_state.state }}" 
        attributes:
          database: >
            {% set trig = trigger.to_state.state %}
            {% set id = trig.split(' /')[-2] if ' /' in trig else trig %}
            {% set ids = 'sensor.' ~ id | slugify ~ '_browser_user' %}
            {% set db = dict(this.attributes.get('database', {}).items() | selectattr('0', 'eq', id)) if this.attributes.database != 'undefined' else '' %}
            {% set others = dict(this.attributes.get('database', {}).items() | rejectattr('0', 'eq', id)) %} 
            {% set ids, who = 'sensor.' ~ id | slugify ~ '_browser_user', '' %}
            {% set when = trig.split(';')[1] if ';' in trig else as_timestamp(now())|timestamp_custom('%Y-%m-%dT%H:%M:%S') %}
            {% set status = trig.split(' /')[1] if ' /' in trig else 'n' %}
            {% set status = status.split(';')[-2] if ';' in status else status %}
            {% set triggerviz, previz, vizes = status, 'n', 0 %}
            {% if states(ids) not in ('unavailable', 'none', 'unknown') %}
              {% set who, status = states(ids), status~' states(ids) ok ' %}
              {% if states[ids].last_changed not in ( 'none', 'unknown', 'unavailable') %}
                {% set when, status = as_timestamp(states[ids].last_changed)|timestamp_custom('%Y-%m-%dT%H:%M:%S'), status~'last_changed ok ' %}
              {% endif %}
            {% endif %}
            {% set prev, dur = '', 0 %}
            {% set usr  = who %}
            {% if db[id] != undefined %}
              {% set prev =  db[id].when if db[id].when != undefined else '' %}
              {% set dur = db[id].for | int(0) if db[id].for != undefined else 0 %}
              {% set usr  = db[id].user if db[id].user != undefined else usr %}
              {% set previz =  db[id].status[0] if db[id].status != undefined else previz %}
              {% set vizes =  db[id].vizes|int if db[id].vizes != undefined else vizes %}
              {% set status = status~previz~' db[id] ok ' %}
            {% endif %}
            {% if previz == 'v' and triggerviz in ('u','h') %}
              {% set inc = (as_timestamp(when, 0) - as_timestamp(prev, 0)) | round(0) %}
              {% set dur = max(dur + inc, 0) %}
              {% set status = status~'dur +'~inc %}
            {% endif %}
            {% set vizes = vizes + 1.0 if triggerviz == 'v' else vizes %}
            {% set new = {id: {'user': usr, 'prev': prev, 'when': when, 'for': dur, 'vizes': vizes, 'status': status }} %}
            {% if 'v' in (previz, triggerviz) %} 
              {{ dict(new, **others) }}
            {% else %}
              {{ dict(db, **others) }}
            {% endif %}
          usage: >
            {% set trig = trigger.to_state.state %}
            {% set id = trig.split(' /')[-2] if ' /' in trig else trig %}
            {% set ids = 'sensor.' ~ id | slugify ~ '_browser_user' %}
            {% set db = dict(this.attributes.get('database', {}).items() | selectattr('0', 'eq', id)) if this.attributes.database != undefined else '' %}
            {% set ids, who = 'sensor.' ~ id | slugify ~ '_browser_user', '' %}
            {% set when = trig.split(';')[1] if ';' in trig else as_timestamp(now())|timestamp_custom('%Y-%m-%dT%H:%M:%S') %}
            {% set status = trig.split(' /')[1] if ' /' in trig else 'n' %}
            {% set status = status.split(';')[-2] if ';' in status else status %}
            {% set triggerviz, previz = status, 'n' %}
            {% if states(ids) not in ('unavailable', 'none', 'unknown') %}
              {% set who, status = states(ids), status~' states(ids) ok ' %}
            {% endif %}
            {% set prev, dur = '', 0 %}
            {% if db[id] != undefined %}
              {% set prev =  db[id].when if db[id].when != undefined %}
              {% set dur = db[id].for | int(0) if db[id].for != undefined %}
              {% set previz =  db[id].status[0] if db[id].status != undefined %}
            {% endif %}
            {% if previz == 'v' and triggerviz in ('u','h') %}
              {% set inc = (as_timestamp(when, 0) - as_timestamp(prev, 0)) | round(0) %}
              {% set dur = max(dur + inc, 0) %}
            {% endif %}
            {{ dur }}
          usage_disp: >
            {%- set time = this.attributes.get('usage')|float(0)  %}
            {%- set minutes = ((time % 3600) // 60)|round(0) %}
            {%- set minutes = minutes~'min' if minutes > 0 else '' %}
            {%- set hours = ((time % 86400) // 3600)|int %}
            {%- set hours = hours~'h:' if hours > 0 else '' %}
            {%- set days = (time // 86400)|int %}
            {%- set days = days~'d:' if days > 0 else '' %}
            {{ days + hours + minutes }}          
          vizes: >
            {% set trig = trigger.to_state.state %}
            {% set id = trig.split(' /')[-2] if ' /' in trig else trig %}
            {% set ids = 'sensor.' ~ id | slugify ~ '_browser_user' %}
            {% set db = dict(this.attributes.get('database', {}).items() | selectattr('0', 'eq', id)) if this.attributes.database != undefined else '' %}
            {% set ids = 'sensor.' ~ id | slugify ~ '_browser_user' %}
            {% set status = trig.split(' /')[1] if ' /' in trig else 'n' %}
            {% set status = status.split(';')[-2] if ';' in status else status %}
            {% set triggerviz, vizes = status, 0 %}
            {% if states(ids) not in ('unavailable', 'none', 'unknown') %}
              {% set vizes =  db[id].vizes|int if db[id].vizes != undefined else vizes %}
            {% endif %}
            {% set vizes = vizes + 1 if triggerviz == 'v' else vizes %}
            {{ vizes }}