How to know when to name labels differently vs same?

thank you so much. Have a follow up how do I know when to use new label. I have 3 separate services running one with same router works.
Service 1 (works):

 - "traefik.http.routers.chat-app.rule=Host(`abc.domain.com`)"
   - "traefik.http.routers.chat-app.entrypoints=websecure"
   - "traefik.http.routers.chat-app.tls.certresolver=myhttpchallenge"
   - traefik.http.services.chat-app.loadbalancer.server.port=3001

Service 2

 - "traefik.http.routers.chat-app-group.rule=Host(`xyz.domain.com`)"
   - "traefik.http.routers.chat-app-group.entrypoints=websecure"
   - "traefik.http.routers.chat-app-group.tls.certresolver=myhttpchallenge"
   - traefik.http.services.chat-app-group.loadbalancer.server.port=3002

Service 3

 - "traefik.http.routers.chat-client-group.rule=Host(`gfk.domain.com`)"
 - "traefik.http.routers.chat-client-group.rule=Host(`mno.domain.com`)"
   - "traefik.http.routers.chat-client-group.entrypoints=websecure"
   - "traefik.http.routers.chat-client-group.tls.certresolver=myhttpchallenge"
   - traefik.http.services.chat-client-group.loadbalancer.server.port=3002

I couldn't wrap my head around why it is working for case 1 and failing for case 2. Is there a rule of thumb when to use same name within label or just use different for each line.

Thanks!

The only thing I can see wrong here is on service3:

Should be:

 - "traefik.http.routers.chat-client-group.rule=(Host(`gfk.domain.com`) || Host(`mno.domain.com`))"

@ldez can you suggest the right way

The answer given by @cakiwi is right.

 - "traefik.http.routers.chat-client-group.rule=Host(`gfk.domain.com`) || Host(`mno.domain.com`)"