**This article applies to both Google and MSFT 365 customers**

Groove Views Introduction

Groove Views control what data is displayed in Groove's Omnibar when users open an email, calendar event, flow/Omniaction, page in Salesforce, etc. You can customize the fields, objects, and related records for each Salesforce profile, so that your teams can view and update the most relevant Salesforce details while reaching out to clients. Groove views provide a window into Salesforce from wherever you are working.

There are a number of useful Groove Views are already pre-configured for you for the standard objects such as contacts, leads, accounts, opportunities and cases. Admins can modify the default ones as necessary, and add new Groove Views for standard and custom objects based on the records and fields that are most relevant to your team.

Groove Views - Technical Context

(Skip ahead to the configuration)

Groove Views are configured directly in Salesforce, in a custom object called Groove Views which you'll see after you've installed Groove's Managed Package. Note that the admin has to belong to a profile that has "Modify All Data" permissions in order to create or update Groove Views.

Groove Views are configured in SOQL (Salesforce Object Query Language), which allows you to customize the fields and sort results as granularly as you'd like.

Anatomy of a Groove View:

SELECT Name, Title, Account.Name, Account.Industry, Account.Type, Email, Phone, MobilePhone, First_Touch_Date__c, Groove_Outbound_Email_Counter__c, MailingStreet, MailingCity, MailingState, MailingCountry, MailingPostalCode
FROM ContacT
WHERE Email = '{!email}'
ORDER BY LastModifiedDate DESC
LIMIT 2

The SELECT statement that starts the SOQL query determines which fields are being pulled in, while the FROM clause determines which Salesforce Object you're getting these fields from. The WHERE clause in this scenario represents which specific Salesforce record we are pulling data for. ORDER BY allows you to sort the returned results by a field; the most commonly used ones here are Last Modified Date and Created Date. LIMIT allows you to limit the amount of results returned so that every single record that matches your query are returned, just the top few most relevant ones. The limit is recommended so that Groove is searching for a smaller subset of records, and therefore loading much faster than it would without a LIMIT applied.

In the example above, we are pulling Name, Title, Account name and other fields FROM the Contact object, where the Contact's Email address matches the email address of the email, calendar event, or action you are viewing.

Note: In some scenarios, you will see multiple SELECT statements in one Groove View; the best example of this would be in the "Accounts with Associated Opportunities" Groove View:

SELECT name, Type, customer_stage__c, Priority__c, Industry, NumberOfEmployees, Phone, website, Owner.Name,
(SELECT Name, Owner.Name, ProbabilitY, AmounT, StageNamE, CloseDatE, Detailed_Opp_Notes__c FROM OpportunitieS ORDER BY CloseDate DESC LIMIT 2)
FROM AccounT
WHERE Id IN (SELECT AccountId FROM Contact WHERE email = '{!EmailOrDomain}')
ORDER BY LastModifiedDate DESC
LIMIT 2

In the above example, we are pulling in fields from the Account, as well as fields from any opportunities related to the selected account. This subquery notation is very useful when you'd like to pull in data that is from objects related to a primary object.

In the WHERE clause for the default Groove Views, you'll notice either of the following:

  • WHERE Email = '{!email}'

  • WHERE Id IN (SELECT AccountId FROM Contact WHERE email = '{!EmailOrDomain}')

The '{!email}' and '{!EmailOrDomain}' are custom Groove SOQL "placeholders" that we use to match the Groove View to the person whose email you're viewing, or the account/opportunity and custom objects that person is related to. Below are the supported SOQL Placeholders for Groove Views.

Note:

  • For the most part, you should only need to use {!email} placeholder to match Salesforce records based on the email addresses in the thread, event, action, or Salesforce page you're viewing.

  • For matching Salesforce records based on the User who is currently in Omnibar, you would use the {!userid} placeholder. For example, if you wanted to create a view where only the owner of a record could view that object, this would come in handy.

Example A

A view containing the query below would display all contacts that have the same email address as the sender of the email in context.

SELECT name, email, phone
FROM Contact
WHERE email = '{!email}'

Example B

A view containing the query below would display up to five leads owned by the current user that came from somebody with the same email domain as the sender's domain of the email in context (and thus probably from the same company).

SELECT name, email, phone
FROM Lead
WHERE email LIKE '%@{!domain}'
AND ownerId = '{!userid}' LIMIT 5

Unsupported SOQL Idioms

Do not use any kind of SOQL alias notation, as this is not supported by Groove. Here are examples that are not supported and may lead to unexpected results:

SELECT c.Firstname, c.Lastname FROM Contact c WHERE Lastname = 'Smith' 
SELECT Firstname, Lastname FROM Contact c WHERE c.Lastname = 'Smith'
SELECT Firstname, Lastname FROM Contact c, c.Account a WHERE a.name = 'MyriadPubs'

Also note that aggregate functions and keywords are not supported by Groove. If a SOQL query in a Groove View contains such aggregate functions (SUM, AVG, etc.) or keywords (GROUP BY), you won't be able to save it.


Configuring your Groove Views

In SFDC Lightning: Click the App Launcher, and search for Groove Views

In SFDC Classic: Click the '+' icon in the top bar to open all of your objects/apps, and find Groove Views

Once you're in the Groove Views page, switch the view from "Recently Viewed" to "All Groove Views" at the top. You'll see all Groove Views, active or inactive, that are currently configured in your Salesforce. Typically, the title of the Groove View reflects the object(s) that each Groove View is pulling data for. You can either modify one of the existing views or create a new one.

In the example below, the primary object the Groove View is pulling data from is the Account, and we are also pulling in data from Related Opportunities.

In the first couple of lines in the query, we are pulling in Account fields, which in the Omnibar on the right hand side are displayed in the order that you have included them in your query. Underneath the account fields is a section for related opportunities, which is pulling fields from the subquery that references the Opportunity object, on the 3rd and 4th lines of the query in the above screenshot. The additional fields are shown in the Omnibar once you click into one of the related opportunities at the bottom of the Omnbiar view.

If you would like to add another field to your Account Groove View, you simply need to add the API name of the account field to the SELECT statement in the view above. To find the API names of your fields:

  1. Go to Salesforce Setup:

    1. (In Salesforce Lightning): Object Manager > Account > Fields and Relationships

    2. (In Salesforce Classic): Search "Account" > Fields

  2. Find the field you'd like, and copy the API name

  3. Jump back to your Groove View, and edit the query

  4. Add the API name of the field into your query relative to the order you'd like it to show up in your Omnibar view. Make sure there is a comma in between each field name. Then save your query

  5. Open your Omnibar, open the 3 dot menu at the top right, and click "Refresh View".

  6. Search an account using the search bar at the top left, and select it. Your new field should show up in the view!

Example:

Steps 1 - 2

Step 3

Step 4

Step 5

Step 6

Displaying fields for Related Objects

In your Omnibar, you may want to display fields from an object that is connected/related to the current object you're viewing. Some common examples of this are showing related Opportunities on the Account Groove View, and showing related Contact Roles on the Opportunity Groove View.

These are configured by subqueries in the SOQL query:

In the example above, we have added Related Opportunities in the Account Groove View, which pulls in some key data from the opportunities that are related to the account. As you can see on the right side, the related list shows up on in the same view, and you can click in to find the opportunity fields.

Notes

  • In the FROM portion for subqueries, you will need the Relationship Name between the two objects. For standard objects, this typically looks like the "plural" version of the object; in the example above the relationship name between Accounts and Opportunities is simply Opportunities

    SELECT Name,
    (SELECT Name, Owner.name, FROM Opportunities)
    FROM Account
    WHERE...

    • For custom objects, the relationship name typically looks something like: API_Name__r instead of the normal API_Name__c which denotes the custom object:

      (SELECT Name, Finserv__Type__c
      FROM FinServ__HouseholdFinancialGoals__r ORDER BY LastModifiedDate DESC LIMIT 3)
    • To check what the relationship name is between two objects, you can visit Salesforce Workbench

      1. Login, and select Standard and Custom Objects from the first dropdown

      2. In the "Object" dropdown, choose the parent object (the primary object for your Groove View) and click Select

      3. Expand the Child Relationships, and search for the related object you're adding in your subquery

      4. Expand it, and copy the Relationship Name. You will add this to your FROM statement in the subquery of your Groove View

  • When creating Groove Views for related objects, we recommend showing just the key information on related objects in the subquery, and creating a full Groove View for that related object in which you can show more fields/details

Creating Groove Views for Custom Objects

Your Salesforce users and org may be using custom or additional objects that are specific to your team's processes. In the Groove Omnibar, you can also pull in these custom objects as related to the deals you're working or customers you're working with.

For these, the process is very similar. All you need are:

  1. API names of the fields you want to show

  2. API name for the object itself

  3. A field on the custom object connect it to the people you are communicating with (typically via the Email address)

Example - Custom Job Application Object:

SELECT name, Applicant__r.name, Applied_on__c
FROM Job_Application__c
WHERE Applicant__r.email = '{!email}'

For the above example, if you open an email thread with a person who is connected to any Job Opening records in Salesforce, Omnibar will show that in the Related Records section at the top of Omnibar.

Advanced Configuration

Dependent Picklists and Validation Rule Support

For dependent picklists, if a parent picklist is updated, the child picklists are highlighted, and filtered to the relevant values for the users to then choose from.

For validation rules, Omnibar will show the user the same error message you have set up in Salesforce if they run into a validation rule; in order to update multiple fields at a time, each user can click into "Edit Mode" (the pencil icon) to update all required fields before saving.

We recommend adding dependent picklists and fields included in a validation rule one after the other in your Groove View query, so that they show up in that same order for each user who is updating Salesforce records via Omnibar.

Profile Specific Groove Views

Groove Views can be configured for each of your Salesforce Profiles, so that each team is seeing the objects and fields that are most relevant to them. In the Edit Screen for each Groove View, you'll notice "Profile Specific Results":

  1. Displayed to all profiles - select "All profiles get to see this view" in the picklist field "Profile Specific Results"

  2. Displayed to only a subset of all profiles - select "Only display this view to the profiles below." in the picklist field "Profile Specific Results"; then enter the list of all profile IDs (comma separated) in the field "Excluded/Included Profiles".

  3. Displayed to all profiles except a set of profiles - select "Do not display this view to the profiles below." in the picklist field "Profile Specific Results"; then enter the list of all excluded profile IDs (comma separated) in the field "Excluded/Included Profiles".

Display Order

To decide which Groove View is displayed by default when you hover over/open an email, you can configure a Display Order. For example, if you'd like to see fields from Account by default rather than from the Contact, you can include a higher number in the Display Order for the "Associated Accounts" Groove View:

Note: If no display order is configured, the default Display Order prioritizes the objects in the following order: Contacts, Leads, Accounts, Opportunities, then any custom objects you have configured Groove Views for.

Configuring Action Buttons

Groove can also display "Action Buttons" to the user, calling a specific URL. This is useful if you want the user to be able to perform specific tasks under a specific URL. An action button is simply defined by creating a custom field in Salesforce that has an API name that starts with "Groove_". The value of this field usually contains a URL that will be opened when the user opens clicks on the action button.

Note: In order to prevent cross-site scripting attacks, only action buttons will be displayed where the URL starts with "http://" or "https://". Relative URLs or javascript: URLs will not be displayed.

These action buttons can be used for many different purposes including converting leads, creating opportunities, or kicking off Salesforce workflows such as an Approval Request. They can also be used to open other webpages outside of Salesforce; for example an Account Google Search (shown below in Example B), or maybe a link to a specific user in your internal database.

Example A - Groove Out-of-the-box action button

A view containing the query

SELECT DaScoopComposer__Groove_Log_a_Call__c, name, email, phone FROM Contact WHERE email = '{!email}'

would display an Action Button "Log a Call" in every row. The field DaScoopComposer__Groove_Log_a_Call__c is a custom formula field on the contact object containing this formula:

'https://na1.salesforce.com/00T/e?title=Call&who_id=' & id & '&followup=1&tsk5=Call&retURL=%2F' & id & '&ent=Task'

Clicking this button takes the user to the log a call screen in the SFDC UI (on the na1 pod).

Example B - Custom Action Button: Account Google Search

In the example below, we have created a field that will search up the account you're viewing in Google. The field is set up as follows, and the API name is added to our Account related Groove View:

It shows up in the Omnibar as follows:

Limitations

  • Omnibar Views go 2 "levels" deep, which means that you can pull in fields from related objects, but you cannot pull in fields from related objects of related objects.

  • Omnibar views support displaying rich text fields, but editing in rich text is currently not supported.

Did this answer your question?