All Collections
Using Rattle
Rattle AI
Troubleshoot - How does Rattle identify the right Opportunity for my Zoom calls
Troubleshoot - How does Rattle identify the right Opportunity for my Zoom calls

Learn how Rattle matches the correct Opportunity on Salesforce to give you Meeting Intelligence

Sangita Abraham avatar
Written by Sangita Abraham
Updated over a week ago

This article will tell you how Rattle works behind the scenes to identify the relevant Opportunity on Salesforce for your call, and then populate your Meeting Intelligence (MI) summary with relevant data.

If your MI summary does not match the right Opportunity, follow these steps to pinpoint what might have gone wrong

Pre-requisite:

Make sure you've set up Google Calendar (GCal). Rattle needs it to grab email addresses from your meetings. If your organization doesn't use GCal, Rattle can still pull email addresses from Zoom but Gcal is recommended.

Step 1: Using Google calendar

Here's how Rattle goes through GCal to extract information:

  1. Rattle first tries to pull the email address and meeting title from the meeting host's GCal, if that fails then it checks for the same meeting on the Super Admin's GCal, and lastly on the Admins GCals.

  2. At the end of this process, Rattle will have:

    1. the list of external participants

    2. their email addresses

    3. the company's website (extracted from the email address)

    4. and the meeting title.

  3. Using the email addresses, website, or meeting title, Rattle then locates the corresponding Account on Salesforce and proceeds to find the matching Opportunity.

Step 2: Meeting title to the Event object

  1. This process is effective when users have scheduled Salesforce events, before creating a Zoom meeting.

  2. Rattle goes through all the Event objects on Salesforce to find one with the same Zoom meeting title.

  3. Once the relevant event is identified, Rattle locates the Account ID > Account Name and then the Opportunity Name.

  4. If a user has accidentally linked the wrong Account to their Event object, the MI summary will then fire incorrectly.

Step 3: Email address to Contact object

  1. Using the external participant email addresses pulled from GCal in Step 1, Rattle burrows through Salesforce's Contact objects to find a matching email address.

  2. Once found, it follows this path again - Account ID> Account Name > Opportunity Name.

  3. An email address listed with the wrong Account will cause the MI summary to fire with the incorrect Opportunity name.

Step 4: Company website to the Account object

  1. If the previous steps didn't work, Rattle goes through the Account objects looking for a matching website/domain name.

  2. Once the Account is identified, the Opportunity can be found and linked to your Zoom MI summaries.

Summary:

Rattle utilizes GCal to extract email addresses of external participants, the company website, and the Zoom meeting title, making Gcal integration essential. Suppose any of these three pieces of information are inaccurately entered in the Event, Contact, and Account objects. In that case, it can result in the MI selecting the wrong Opportunity and triggering inaccuracies.


SOQL queries for reference

Method 1: Salesforce's Event object

  1. We use the following SOQL query to identify the Event.

SELECT AccountId
FROM Event
WHERE Subject=’zoom-meeting-title’
AND IsDeleted = FALSE
AND (ActivityDate = ${today} OR ActivityDate = ${tomorrow} OR ActivityDate = ${yesterday} )
AND AccountId != null
ORDER BY CreatedDate DESC
LIMIT 1

2. Next the AccountId received above is used to fetch the opportunity.

SELECT Account.Id, Account.Name, Id, Name
FROM Opportunity
WHERE Opportunity.AccountId = '${event.AccountId}'
AND IsClosed = FALSE
AND StageName != 'Closed Lost'
AND StageName != 'Closed Won'
ORDER BY CreatedDate DESC
LIMIT 1

Method 2: Using Zoom

SELECT Account.Id, Account.Name, Id, Name FROM Opportunity
Where Id IN (Select OpportunityId From OpportunityContactRole Where Contact.Email = '${email}')
AND IsClosed = FALSE
AND StageName != 'Closed Lost'
AND StageName != 'Closed Won'
ORDER BY CreatedDate DESC LIMIT 1

Method 3: Using the website

1. To fetch the account from the website domain.

SELECT Id, Name, Website FROM Account WHERE Website LIKE '%${domain}%' ORDER BY CreatedDate DESC LIMIT 1

2. Use the above AccountId to fetch the Opportunity.

SELECT Account.Id, Account.Name, Id, Name
FROM Opportunity
WHERE Opportunity.AccountId = '${event.AccountId}'
AND IsClosed = FALSE
AND StageName != 'Closed Lost'
AND StageName != 'Closed Won'
ORDER BY CreatedDate DESC
LIMIT 1

See also:

Did this answer your question?