PRODUCTO

Vistas Guardadas: Tu CRM, a Tu Manera

Andres MuguiraFebrero 17, 20266 min de lectura
Saved ViewsFlujo de TrabajoProductividadCRM
← Volver al Blog
Resumir con IA

The Setup Tax

Every morning you open your CRM, apply the same filters, hide the same columns, sort by the same field. Five minutes of configuration before you can start working. Multiply that by 250 working days and you have lost over 20 hours a year just setting up your view. This is what we call the setup tax, and it is the silent productivity killer in every CRM that does not support saved views.

The problem compounds as your data grows. When you have 50 contacts, scanning the full list is fine. When you have 500, you need filters. When you have 2,000, you need filters plus column selection plus sort order plus maybe a search term on top. Recreating that configuration from scratch every session is not just annoying, it is a workflow-breaking interruption that pulls you out of selling mode and into tool-configuration mode. We knew we had to fix this before users hit scale.

The best CRM workflow is the one you never have to think about. Saved views turn a five-minute daily setup ritual into a single click.
ViewSwitcher dropdown with saved views

How Saved Views Work

The ViewSwitcher component sits at the top of both the contacts grid and the opportunities pipeline view. When you click it, a dropdown shows all your saved views plus an option to save the current configuration as a new view. A saved view captures everything about your current grid state: which filters are active, which columns are visible and in what order, the sort column and direction, and the search query if one is entered.

Under the hood, each view is a JSON object stored in the saved_views table in Supabase. The schema is straightforward: an ID, a name, an entity type (contacts or opportunities), the user ID, an organization ID for shared views, a boolean for whether it is starred as the default, and a config JSONB column that holds the serialized grid state. When you select a view, the grid component reads the config, applies the filters, reorders the columns, sets the sort, and re-fetches data from Supabase with the appropriate query parameters. The transition feels instant because we apply the column and sort changes optimistically before the filtered data returns from the server.

Use Cases That Actually Matter

Saved views are only useful if they map to real workflows. Here are the views that our users create most often, based on what we have seen in our own usage and early beta feedback.

The most valuable saved view is not the one that shows your best leads. It is the one that shows the leads you are about to lose.

Implementation Details

Building saved views sounds simple. Save some JSON, load it later. The complexity is in the edge cases. What happens when a user saves a view that includes a column that no longer exists because a custom field was deleted? What happens when a filter references a pipeline stage that was renamed? What happens when two users share an organization and one of them modifies a shared view?

We handle schema drift by validating the config at load time. If a column reference in the config does not match any current column, we silently remove it from the view and display the remaining columns. If a filter references a value that no longer exists (like a deleted pipeline stage), we remove that filter condition and show a subtle toast notification explaining that the view was adjusted. This graceful degradation means saved views never crash or show an error state, they just adapt to the current schema.

For the filter engine itself, we translate the saved filter config into Supabase PostgREST query parameters. A filter like "score > 80 AND last_activity > 7 days ago" becomes .gt('score', 80).gte('last_activity', sevenDaysAgo.toISOString()). Compound filters with OR conditions use Supabase's .or() method. The entire filter-to-query translation lives in a single utility function that both the UI filter builder and the saved view loader use, ensuring consistency between manually applied filters and saved view filters.

Grid configuration with active filters and column settings

Saved Views vs. Spreadsheet Filtering

One of the most common comparisons we hear is "why not just use Google Sheets with filters?" Spreadsheets do have filter views, and for small datasets they work fine. But CRM data is fundamentally different from spreadsheet data in three ways that make dedicated saved views essential.

First, CRM filters need to be dynamic. A filter like "last activity within 7 days" should always be relative to today, not a static date you set once. Spreadsheet filter views save static criteria. Our saved views evaluate relative date expressions at load time, so "this week's hot leads" is always this week, not the week you created the view. Second, CRM data has relationships. Filtering contacts by "has an open deal worth more than $10K" requires joining the contacts table with the opportunities table. Spreadsheets flatten everything into one sheet, losing the relational structure. Third, CRM views need to integrate with other features. When you open a saved view, the AI assistant understands the context and scopes its suggestions to the filtered dataset. Try getting that from a spreadsheet.

Default Views and Daily Workflow

The star icon next to each view name marks it as your default. When you open the contacts or opportunities page, your default view loads automatically instead of the unfiltered "All" view. This means your most important workflow is zero clicks away. Open the app, your hot leads are already on screen, filtered, sorted, and showing exactly the columns you need.

We debated whether to support multiple default views, one per page or one per time of day. We decided against it. A single default per entity type keeps the mental model simple: open contacts, see your default contact view; open opportunities, see your default opportunity view. If you want a different view, it is one click in the ViewSwitcher dropdown. The check icon shows which view is currently active, and the trash icon lets you delete views you no longer need. Creating a new view is just configuring the grid how you want it and clicking "Save View." No modal, no form, just a name input and a save button.

The impact on daily workflow is significant. Users who set up three or four saved views in their first session report that the CRM feels like it was custom-built for their sales process. That is the goal. Not a generic tool that everyone tolerates, but a personalized workspace that each rep configures once and then forgets about because it just works. If you are tired of the daily setup tax in your current CRM, give SalesSheet a try. Your first saved view takes about 30 seconds to create, and it saves you five minutes every day after that.

Prueba SalesSheet Gratis

Sin tarjeta de crédito. Comienza a vender de forma más inteligente hoy.

Comenzar Prueba Gratis