Salesforce: Is "Watch Records" the most efficient way to do this?

I have contacts in Salesforce and there are 3 fields on those contacts that, when any of them is updated, Make updates them in Sendinblue.

As you can see below, the scenario is watching records in Salesforce and then filtering on those 3 fields, which means every time a Salesforce contact is updated, it’s using an operation. Is there a better way to do this without wasting operations? Thanks!

Yes you can custom code a webhook into Salesforce, that only triggers when a new record is added: DeveloperForce

Or by using this: salesforce-webhooks - npm

Beside this only lowering the polling (so called timer) is applicable.

2 Likes

Thank you, I’ll post here for others if I get this working at some point.

I am encountering a similar issue with Hubspot as the trigger instead. Zapier’s native functionality includes app triggers that can watch a specific field (like the deal amount, stage, etc…), for changes, and then provoke the sequence of actions that you want to happen after. I’m trying to replicate similar functionality in Make, but it looks like it can only natively watch an entire object/record, and therefore any changes to an object or record will count as a change and therefore result in an operation (which is inefficient).

The types of changes I would like to look for would happen far less frequently than monitoring for all changes, so the workflow is being unnecessarily triggered for general activity (like emails associated with the deal). If you have a polling frequency of 1 minute, for example, then you are more likely to actually trigger it every minute despite no operations being necessary, and that could easily result in some thousands of operations without any actual actions ever taking place.

I explored the webhook option, but at least for HubSpot, this is an extra feature that you need to sign up for their operations plan for. We are already paying a fortune for sales, marketing, and CMS, so it seems crazy to have to purchase this add-on, and odd that Zapier has managed to accomplish this functionality without the end user needing to do anything in their hubspot (salesforce) instance.

Please post back here if you manage to find a work around. I’m also curious about your Get a Contact step. Is this running multiple operations if multiple records were updated, or does it run just one operation, pulling all contacts that match the updated contacts from Salesforce?

I’ll let this run for a couple of weeks to see how many operations I’m using. If necessary, I’ll look at Salesforce webhooks but will probably need to hire help for that.

As for your question about the Get a Contact step, my understanding is that there are 2 settings that influence this. There are the scenario settings, which I have set to the default of 1:

And there’s my Salesforce Watch Records module, set to the default of 2:

So I guess every 15 minutes, this scenario will iterate over a max of 2 contacts (1 x 2). I think I could change either of those settings to increase that number and I don’t understand how to choose which one of them to increase.

Anyway, that’s a long way to get back to your question. For each contact, it will iterate through the whole scenario, including the Get The Contact step, which is a search for just that 1 contact each time. That’s my understanding.

@philthrive - we’ve recently implemented a new Salesforce module that might help you.

Watch Record Fields allows you to specify the fields on a given record that you want to watch, and then only triggers on changes in those fields.

1 Like

Thanks @DavidGurr_Make I’m trying it now, confused about a couple of things: 2023-04-18_12-14-42.mp4

Hey Phil.

I think you need to run the Watch Record Fields module once for the following modules to be able to pick up all the fields. It will know about the standard record fields, but only knows about any you’ve added once it has an example run.

On deleting your old trigger - the main thing you need to do is to drag the little clock/scheduler part of the icon over. Then you can right click and delete the old module.

1 Like

Not working. I’ll stick with the old method, as it’s working fine. Thanks!

Hi Phil. I’m curious - what didn’t work? Moving the clock icon, or picking up your custom fields?

Picking up the custom fields.

Sorry for the delay - I needed to set up a test environment for this and I’ve not had the time to do that until today!

I think the issue is that you’re expecting the field itself to be available for mapping. Instead the Field parameter in the output bundle is set to the name of the field that was caught by Watch Record Fields.

This is as a result of the way the Saleforce API works - rather than returning all fields, it just gives you the value of the field that changed.

Here’s an example of the output for a Salesforce Account record where a custom field Active__c had changed.

1 Like

Hmm, but I want to watch for 4 different fields. If I don’t know which field is going to change, that would be a lot of filters and routers to create/update the correct field in Sendinblue, right?

If I understand your need correctly, if any of your four fields changes you want to update your Sendinblue record.

Is there any reason why you wouldn’t want to just update the entire Sendinblue record if any of those four fields changes? If so, you wouldn’t care which field changed, you could just update the lot.

You’ll need to add a Salesforce Get a Record module after the Watch Record Fields module to get the full record.

It’s one more module than your original scenario, but should be a fewer operations overall as the Watch Record Fields module will only fire on those field updates rather than on any field.

1 Like

Thanks, “Get a Record” was one missing part of the puzzle. I have it almost working, but it seems to think every contact record in Salesforce has recently added an email address, or at least that’s my interpretation of this:

I’m running the scenario every 5 minutes with a 5-record limit and it uses 5 records every time, even though nothing is updating in Salesforce.

That’s odd.

And you definitely did the required setup in Salesforce (see below)?

1 Like

I did do that, yes. And I’ve selected 3 fields to track.

Thanks for confirming.

I’ve reproduced the behaviour - and that’s not what I would expect to see either! I’ve passed it to our support team to investigate and I’ll report back when I hear something.

1 Like

The “Watch Record Fields” for Salesforce doesn’t seem to work.

I am trying to monitor Stage changes for Opportunities, however, when I add my next step to include “Get a Record” to find all the info about an Opportunity, I don’t have the record id needed to pull that info. This leads me to believe that I’ll have to use the “Watch Records” instead and filter out all field changes besides the one I actually care about.

Hi Connor.

Please re-read the earlier messages, starting with this one: Salesforce: Is "Watch Records" the most efficient way to do this? - #12 by DavidGurr_Make

1 Like