Event Driven Architecture with microservices and Cosmos DB

I am developing a gamified habit tracking mobile app and I am building the backend following an event driven architecture using c# azure functions, cosmos DB for the single event store and azure blob storage for the materialized views as json files.

I have created a 'UserService' microservice with the partition key UserId and that has events for registering a user, creating a user profile and changing the user profile details which is working fine. Now I am going to be developing my second microservice 'WellnessService' which will connect to Fitbit and log the physical activity the user does throughout the day.

Where I am getting confused is that should this second service persist events based on its own WellnessId partition key, or should the events persist on the UserId partition key? If the events should be persisted on its own WellnessId partition key, will I then need to relate that back to the User service? Also I have a user profile page that shows the users profile details and the summary of the wellness details with what 'Level' the user is at. As the user will earn experience points 'XP' and start levelling up based on their physical activity, so will the UserService need to listen for events that have been persisted from the WellnessService and the user service will persist similar events to update the user profile with the level details? Also does a materialized view only update from its own microservice events?

I am just confused with how different microservices persist events and how they are related to each other, as I will be creating more microservices for missions, habits, transformation journey, achievements, notifications and insights which will interconnect with the WellnessService and UserService.

I have gone back and forth on this quite a few times as I see pros and cons for the different options I can think of.

Below is the following options I have currently come up with.

  1. Have all events from every microservice persist their own events to the UserId partition key.

Pros: Everything is handled in one partition key. Each microservice materialized views will be created by events from the single UserId partition key. Each materialized view is built from the events on the UserId partition key.

Cons: The UserId partition key becomes a god partition key. High chance of conflicts when multiple microservices try to persist their own events to the UserId partition key. Every microservice will need to know the type of events from all the other microservices to load all past events to populate the domain model.

  1. Each microservice persists events to its own partition key, e.g. WellnessId, MissionId, HabitId.

Pros: Each microservice only listens for other microservice events that it is interested in. Lower chance of conflict.

Cons: Duplication of events persisted on different microservice partition keys. E.g. The WellnessService persists events about physical activity and the users level as they level up. The UserService materialized view shows the level the user is. This means the UserService will need to persist its own version of the 'UserLevelledUpEvent' to its UserId partition key. Either the materialized view is built from the events on the UserId partition key for a single service or it listens for events from other microservices

I am also using the Asos SimpleEventStore nuget package for my event store persistence layer. It creates a single 'Commits' collection and stores the events in the following format. The streamId property is the partition key for the collection which in my example is the UserId guid.

{
    "id": "504567d8-d1be-4ce7-827f-303ab2a8ecb8:1",
    "eventId": "5857897d-748c-4e67-a40e-8e556c5ea340",
    "body": {
        "UserId": "504567d8-d1be-4ce7-827f-303ab2a8ecb8",
        "Email": "UsersEmailAddressHere",
        "IsTAndCsAccepted": true,
        "IdentityProvider": "NameOfAuthProviderHere",
        "IdentityProviderId": "AuthProviderIdHere",
        "IsActive": true,
        "RegisteredDate": "2020-10-11T15:28:33.3035954Z",
        "CreatedDate": "2020-10-11T15:28:33.3035954Z"
    },
    "bodyType": "UserRegisteredEvent",
    "metadata": null,
    "metadataType": null,
    "streamId": "504567d8-d1be-4ce7-827f-303ab2a8ecb8",
    "eventNumber": 1,
    "_rid": "T9R+APR0yzkBAAAAAAAAAA==",
    "_self": "dbs/T9R+AA==/colls/T9R+APR0yzk=/docs/T9R+APR0yzkBAAAAAAAAAA==/",
    "_etag": "\"00000000-0000-0000-9fe3-2e12723101d6\"",
    "_attachments": "attachments/",
    "_ts": 1602430113
}

Any advice or help on this would be greatly appreciated.