Customizing your notifications

How to use the event matrix in your notification settings — picking which events go to which channels, what locks mean, and how to silence things quickly.

The notification matrix is the page where you decide what gets sent where. This article walks through the controls and the rules behind them. If you haven't connected Discord or Telegram, only the In-app and Email columns will be live — that's fine, the same rules apply.

Where the matrix is

Dashboard → Settings → Notifications. Scroll past the Connected channels card section at the top; the matrix sits below it.

Rows are events grouped by domain (Account & security, Listings, Auctions, UnitVault, Messaging, Network, Reviews, Platform). Columns are the channels you have available — In-app, Email, and any of Discord / Telegram you've connected.

Reading a cell

Each cell at the intersection of an event row and a channel column is one of:

  • Empty checkbox. You can enable this event for this channel. Click to tick it.
  • Ticked checkbox. Currently enabled. Click to untick.
  • Ticked + locked (mandatory). Always on, can't be unticked. Used for sign-in OTPs and verification codes on the email channel.
  • Empty + locked (forbidden). Cannot be enabled on this channel. Hover the lock icon to see the reason — usually "this event class isn't routable to this channel" (e.g., security codes via Discord).
  • Empty + locked (channel not connected). Used when a channel column is visible but you haven't connected it yet. Hover to see "Connect this channel first".

What changes when you tick a cell

Ticking is immediate. You don't need to save — your preferences are stored as you click. The next time the event fires for you, the new settings apply.

If the event already fired before you ticked it, you don't get a retroactive notification. We don't replay past events.

What's default

Defaults depend on the channel.

In-app — almost everything is default-on. The bell icon is your central inbox; we want it to be useful by default.

Email — default-on for high-signal events (account security, your own listings/auctions, direct messages, important reviews) and a small number of mandatory ones. Default-off for low-signal events (likes, follows, comments).

Discord — default-OFF for almost everything when the channel is first connected. The reason: connecting Discord shouldn't suddenly broadcast a flood of activity to your team channel. You opt in event by event. The events that are default-on after connecting are intentionally chosen to be the ones a team would care about (your listings published, your auctions ending, sales).

Telegram — default-on for security state changes (password changed, email changed, new device sign-in), listings you own, vault, reviews. Default-off for likes/follows/auction-bidding-noise. The logic: Telegram is a private 1:1 channel, so there's no broadcast-leak concern, and "Telegram as pager" works best when meaningful events arrive without you having to opt in to each one.

Silencing everything quickly

Three options, in order of how aggressive they are:

  1. Untick a row to silence one event across all channels. Click each cell in that row.
  2. Untick a column to silence one channel for all events. Faster: open the channel's card at the top of the page and click Disconnect. That's a soft-revoke; the row stays and reactivates if you reconnect later.
  3. Untick everything by going row by row. There's no "untick all" button on purpose — silencing every channel for every event is unusual and we'd rather you spot which row matters.

If you just want a temporary break (you're on holiday, you'll come back), the cleanest move is to disconnect Discord/Telegram (if connected) and untick the Email column for the noisy events. Your in-app notifications stay so you can catch up on the bell when you come back.

Why some cells are locked (the long version)

The lock icon means the platform — not your settings — is forcing the cell on or off. Three reasons you might see one:

1. Mandatory (always-on, can't untick)

Specific to email, for events that are the act of using your account: sign-in OTP, email verification code, password-reset link. If you turn these off, you lose the ability to sign in. We don't let you do that.

2. Forbidden (always-off, can't tick) — Discord side

Discord webhooks deliver to a channel, not to you. Every member of that channel sees the message. We block these event classes on Discord:

  • Account & security — broadcasting "John signed in from a new device" to a team channel is a privacy + phishing surface.
  • UnitVault — vault content is private deal documentation by design; broadcasting to a team channel would leak which buyer asked for which doc.
  • Direct messages — broadcasting "you got a message from Maria" leaks who's talking to whom.
  • Legal notices — terms updates, policy updates, compliance notices. These are mandatory notifications that need to reach you; broadcasting to a team channel doesn't satisfy that.

3. Forbidden (always-off, can't tick) — Telegram side

Telegram is a private 1:1 chat with our bot, so most concerns above don't apply. We forbid only the three credential-equivalent events:

  • OTP_LOGIN_REQUESTED — your sign-in OTP.
  • EMAIL_VERIFICATION_REQUESTED — your email-verification link.
  • PASSWORD_RESET_REQUESTED — your password-reset link.

The reason is narrow but important: if your Telegram account is ever compromised (SIM swap, session-token theft, lost device that's still signed in), an attacker who can read your Telegram chat must NOT be able to take over your Haubot account by triggering an OTP / verification / reset and reading the response.

Notice that post-event security signals — PASSWORD_CHANGED, EMAIL_CHANGED, LOGIN_NEW_DEVICE — are not forbidden on Telegram. Those are notifications of state changes that already happened, not a credential-bearing payload, and Telegram-as-pager is exactly the right shape for them ("hey, your password just changed — was that you?").

4. Forbidden because the channel isn't connected

A channel column is visible, but you haven't completed the connect flow. Lock tooltip: "Connect this channel first". Click Connect on the channel card at the top of the page and the column unlocks (within the per-channel allow/forbid rules above).

Send-test from the channel cards

Each channel card has a Send test button after the connection is established. It pushes a one-shot message to the channel ("Haubot connected ✓ — notifications you enable for this channel will appear here.") so you can confirm the channel works without having to wait for a real event. Test sends are rate-limited to 10 per hour across all your channels, so you can't accidentally spam.

If a test fails, the channel card flips to a Failed state with a short reason ("HTTP 404", "Connection refused", etc.). The full delivery log lives server-side; if you suspect something specific, support can read it.

When you change channel preferences in bulk

The matrix is per (event, channel). If you connect a second Discord webhook later, the new connection inherits a fresh set of default-on/off — your previous Discord choices don't transfer. Same for Telegram if you reconnect a different chat.

Disconnect-then-reconnect with the same destination (same webhook URL on Discord, same chat on Telegram) does preserve your matrix choices — we match by a hash of the destination, not by the connection ID, so reactivating an existing connection keeps everything you'd already toggled.

What to do if something goes wrong

  • A notification you expected didn't arrive. Check the matrix cell for that (event, channel). Check the channel card status — is it Failed? If so, disconnect-reconnect tends to fix it; the underlying cause is often that the destination broke (Discord webhook deleted, you blocked the Telegram bot).
  • You're getting too many. Untick the noisy rows. If a channel is the problem (the Discord channel is too chatty), disconnect that channel — the rest keep working.
  • Email is going to spam. The sender is [email protected]. Mark one as Not spam in your client and they should land in the inbox going forward.
  • Settings won't save. This usually means a transient network error. The matrix saves on click; if you saw an error toast, click again.

Where to go next