Girman Logo
Let's talk
tech

Delight Your App Users with Customized User Preferences

From dashboard customization to notification control, discover how small preference tweaks can dramatically boost engagement and satisfaction in B2B SaaS apps.

S
Author
Shweta
June 11, 2025
4 min read
Delight Your App Users with Customized User Preferences

User Preferences can significantly enhance the user experience and tailor the application to individual needs.


Here are the 8 common use cases that can be implemented across various B2B SaaS applications:


1.Dashboard Customization:

  1. Allow users to customize their dashboard layout, widgets, and data visualizations.
  2. Example: Users can choose which metrics to display and how to arrange them on the dashboard.


2.Notification Settings:

  1. Enable users to control the frequency and types of notifications they receive (e.g., email, in-app notifications).
  2. Example: Users can choose to receive notifications for new tasks, completed projects, or important updates.


3. Data Filtering and Sorting:

  1. Provide options for users to filter and sort data based on their preferences.
  2. Example: In a project management tool, users can filter tasks by status, priority, or due date.


4. Language and Locale Settings:

  1. Support multiple languages and allow users to select their preferred language and locale.
  2. Example: Users can switch between English and Spanish in a global SaaS application.


5. Accessibility Settings:

  1. Provide options for users with disabilities, such as larger fonts, high-contrast themes, or screen reader compatibility.
  2. Example: Users can adjust font size, color scheme, and keyboard shortcuts.


6. Dark Mode:

  1. Offer a dark mode option for users who prefer a darker interface. Remember this preference.
  2. Example: Users can switch between light and dark modes for improved readability and visual comfort.


7. Default View Settings:

  1. Allow users to set their preferred default view for lists, tables, or dashboards (e.g., card view, list view, table view).
  2. Let user choose which columns to show and in what order and remember it.


8. Onboarding Guidance:

  1. Monitor the user's progress through the onboarding process and provide reminders or additional support as needed.
  2. Analyze user behavior to identify features that the user has not yet explored.
  3. Suggest features that might be relevant based on the user's role, preferences, and usage patterns.


The SQL to create such a User Preference will look like:


CREATE TABLE user_preference (    
id BIGSERIAL PRIMARY KEY,  -- Auto-incrementing ID for the table entry    
user_id BIGINT NOT NULL,  -- ID of the user whose preference is being added    
key VARCHAR(255) NOT NULL,  -- The string to identify the use case being added/modified    
preference JSONB,  -- The JSONB field to store the JSON data of the preference.    
CONSTRAINT fk_user FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE    
);


Sample Values

Here are the appropriate “key” and “preference” values for each of the above use cases:

Dashboard Customization:

Key: "dashboard_layout"

{
 "widgets": [
   "metric1",
   "metric2",
   "metric3"
 ],
 "layout": "grid",
 "positions": [
   {
     "metric1": {
       "x": 0,
       "y": 0
     },
     "metric2": {
       "x": 1,
       "y": 0
     },
     "metric3": {
       "x": 0,
       "y": 1
     }
   }
 ]
}


This preference stores the user's chosen widgets and their positions on the dashboard.


Notification Settings:

Key: "notification_settings"

{
 "email_notifications": true,
 "in_app_notifications": false,
 "frequency": "daily",
 "categories": {
   "new_tasks": true,
   "completed_projects": true,
   "important_updates": false
 }
}

This stores the user's notification preferences, including types of notifications and frequency.


Data Filtering and Sorting:

Key: "task_filter_sort"

{
 "filters": {
   "status": "in_progress",
   "priority": "high",
   "due_date": "next_week"
 },
 "sort_by": "due_date",
 "sort_order": "asc"
}


This stores preferences for filtering and sorting tasks in a project management tool.


Language and Locale Settings:

Key: "language_locale"

{
 "language": "en",
 "locale": "en_US"
}


This stores the user's selected language and locale.


Accessibility Settings:

Key: "accessibility_settings"

{
 "font_size": "large",
 "theme": "high_contrast",
 "screen_reader": true
}

Dark Mode:

Key: "dark_mode"

{  "enabled": true}

This stores whether the user has enabled dark mode.

Default View Settings:

Key: "default_view_settings"Copy

{
 "view_type": "card",
 "columns": [
   "name",
   "priority",
   "status"
 ],
 "column_order": [
   "name",
   "status",
   "priority"
 ]
}

This stores the user's preferred default view and column order for lists or tables.


Onboarding Guidance:

Key: "onboarding_progress"

{
 "completed_steps": [
   "step1",
   "step2"
 ],
 "pending_steps": [
   "step3",
   "step4"
 ],
 "suggested_features": [
   "featureA",
   "featureB"
 ]
}

This stores the user's onboarding progress and suggested features.

Here is the API contract to fetch the list of UserPreference entries for a user:


API Endpoint:

Lists the preferences of the Logged In user

GET /preferences

Header → Authorization: Bearer <token>

(Required for authentication)


GET /api/user/preferences/ \
-h 'Authorization: Bearer <token>'

Response

{
 "preferences": [
   {
     "id": 1,
     "user": 123,
     "key": "dashboard_layout",
     "preference": {
       "widgets": [
         "metric1",
         "metric2",
         "metric3"
       ],
       "layout": "grid",
       "positions": [
         {
           "metric1": {
             "x": 0,
             "y": 0
           },
           "metric2": {
             "x": 1,
             "y": 0
           },
           "metric3": {
             "x": 0,
             "y": 1
           }
         }
       ]
     }
   },
   {
     "id": 2,
     "user": 123,
     "key": "dark_mode",
     "preference": {
       "enabled": true
     }
   },
   {
     "id": 3,
     "user": 123,
     "key": "language_locale",
     "preference": {
       "language": "en",
       "locale": "en_US"
     }
   },
...
...
 ]
}



Read More:

Frappe HR vs Keka HR: A Detailed Comparison

API Rate Limiting with Redis and PostgreSQL

tech
Published June 11, 2025

Schedule a free 30-minute consultation to explore ERPNext

Lets ChatMail Us
S
Author
Shweta
Girman-logo
frappe-partner

Girman Tech is a Frappe Certified Partner in Bangalore, trusted for delivering tailored ERPNext solutions to businesses of all sizes. As an official Frappe and ERPNext Partner in Bangalore, we help companies to streamline operations and grow with open-source ERPNext solutions.

From seamless implementation to customization and ongoing support, our team ensures businesses unlock the full potential of open-source ERP. Based in Bangalore, we serve clients across India and globally with reliable, scalable, and future-ready ERP solutions.

Recognized By

footer_startupindia

BUSINESS

mail

contact@girmantech.com

phone

(+91) 93801 94282

Accounting ERP Software in Bangalore

Accounting ERP Software in Karnataka

HR Contact

mail

careers@girmantech.com

phone

(+91) 7558354540

CONTACT

9380194282

girish@girmantech.com

manish@girmantech.com

ADDRESS

Girman Technologies Pvt Ltd

BRIGADE NORTHRIDGE, PHASE-1, Yelahanka, Bangalore, Karnataka, India 560064

GIRMAN TECH

FOLLOW US