Description
Problem
People want to know when something important for them happens. one way to control that is subscribe to notifications about specific entities. All our competitors have this feature.
Solution
"Watch" action for entity
Introduce Watch feature. Every Entity can be marked as Watched by any user. It means every Entity can have many watchers.
There will be Watch action in
When user already watches an entity, Unwatch action is available in … menu (and in left menu) and in Activity popover.
we may show watch indicator on Activity icon somehow…
What changes we track in an entity?
Any Basic field (text, url, number, etc)
Any Enum/Relation field (State, relation to Feature, assignment, etc)
Any collection item added/removed (task added to feature, task deleted from feature, etc)
Database item added/removed
Reference added/removed
Comment added (🚨 make sure that only one notification is sent, no duplicates)
File added
🦄 Watch entity rich edit field change
🦄 Access lost
Domain-level changes should not be watched (added field, etc)
Formulas changes or Lookups → Ignore
Notifications on your own changes should not be added
No notifications from fibery(auto-linking) , fibery(views)
❌ If some field was deleted, we do not show notification at all about changes in this field.
Notifications shows CURRENT system state, for example, if someone renamed some entity we show current name.
When user is assigned
We have some flow to notifications now when user is assigned to entity.
Now we will just make this user Watch an entity and get all notifications, and remove old assigned user notification flow.
When Entity a user watches is deleted →
Unwatch entity
Send a notification:
The feature “Entity permissions MVP” that you watched has been deleted.
If entity is undeleted, do nothing, it will remain unwatched.
Who changes things
If a usual user change fields, we show this user.
If some Fibery user changes fields, then we can do like in Audit Log. For example:
Fibery (integration)
Fibery (automation)
Who can Watch?
Any user who has access to entity.
🚨 If you lost access to entity → Notifications will not come.
Should we automatically do Unwatch action?
How a user receives notifications?
In a usual way that is configured in Notifications section (Notification center, Email or Slack).
Option 1
Changes are accumulated and batched and send to notification center (every 10? minutes).
I want to receive notification every [X] [minutes].
I want to receive notifications every [30] munites
Notification format should look like a message:
Can we navigate to entities referenced here? For example, Bug added to a Feature and I want to open this bug (Alt + Click).
what about references I don't have access to? Show Untitled?
Teddy Bear changed Feature A
State: Open -> In Dev
[deleted field]: Medium -> High
Product: Some product with a long name
5 mins ago
[Fibery (integration)] deleted reference from
XXX
5 mins ago
Option 2 (THIS)
ALTERNATIVE solution that we have for emoji reactions
When new event is added to a Watched entity, Fibery tries to find previous Unread notification about Watched entity activity and update it:
Add new event, who added it, etc.
Set notification date to now
New notification is created if:
Prev. Watch notification is Read
~~Old notification exists, but 24 hours passed ~~
Old notification is deleted
5 10 fields already accumulated in an event
What to do with email or slack?
Slack Watch notifications
Design
"Watch" activity notifications batch. Figma link
Prototype:
Click "Show 4 more updates"
https://www.figma.com/proto/SKQnRp9mIfnQIpxTy1Dwvn/PA-Communication?page-id=369%3A28223&type=design&node-id=369-28732&viewport=651%2C358%2C0.35&t=Y6mdeqSp9DKsmczl-1&scaling=scale-down-width&starting-point-node-id=369%3A28732&mode=design
Prototype recording
Overall we can just take design from Activity, add Entity name and batch it.
How it matches with existing notification rules?
Watch should be enabled automatically when some event happens
How it affects Inbox?
All these events will have Watch type, so a user will be able to filter by this notification type (after Assigned event type).
~~OR ~~
we can make more granular notification types, like basic field changed, collection item added, etc. However, it looks much more complex…
🦄 Later
https://community.fibery.io/t/watcher-of-an-entity-use-the-assignment-extension/563
Refs/Competitors
ClickUp
Watch action is near Activity area.
https://docs.clickup.com/en/articles/874597-watchers
Linear
Subscribe action is near Activity area. Also there is duplicate in … actions menu.
You can also subscribe other people :c2c6680a-a9f1-44d0-9846-22a6c83efe12:
Jira
Watch action as an icon in top. You can add watchers.
Activity panel has tabs for comments, history, all.
https://support.atlassian.com/jira-software-cloud/docs/watch-share-and-comment-on-an-issue/
Trello
https://help.trello.com/article/799-watching-cards-lists-and-boards
Notion
Page notifications settings are in Updates panel. It is also duplicated in …. menu.
https://www.notion.so/help/updates-and-notifications
https://blog.jetbrains.com/space/2021/08/05/introducing-subscriptions