Webhook documentation: What counts as "Update" event?

Hi there

i want to capture certain “update person” events. question: what counts as an update on a “person” record? i.e. do changes to “interaction” count or “inactive days” also count as update?


and: is it possible to capture only updates to particular fields on a person record?


Best answer by alex 11 July 2022, 04:49

View original

3 replies

Userlevel 5
Badge +3

Any field changes to the person record would count as an update to the "person" record.

Interactions and inactive days don't count as "updates" to the person record.

Think of Inactive Days and Interactions as a metric that is calculated based on activities of a person record (a separate entity), not actual changes/updates to the person record itself.

Also, you can't do a webhook that only triggers when a specific field is updated, but what you can do, is simply filter it out if said field you are looking to have updated is not updated (or rather, filter out unless the specific field is updated to the specific value(s) you're looking for. Works best for dropdown fields, tags, multi-select dropdowns, etc.

Now Copper will pass along in their webhook the prior field value for a few system fields (there's a small handful) like Opportunity "Status" or "Stage", Lead Status, "Contact Type" for people.

But yeah, you'd have to do more of a "filter out if XYZ wasn't updated, and only continue if ABC was updated".

To get a bit more nuanced, a tip we use is appending a tag in this instance (or else you might find yourself in a circular loop any time any other field is updated).

For example, say when you want to trigger an automation (create person in QuickBooks Online) when a specific field is set to something, let's say "Contact Type = Current Customer". I'd recommend to also add a tag unique to that action being completed, e.g. "Added to QBO", then filter it out if it already contains the tag in future people updated triggers. That way you won't get looping automations happening every time a field is updated on that entity (person record).

I could be slightly wrong on some of the granular bits, but this is what I have from memory after using Copper's API extensively across easily 500+ automations over the past 7+ years across dozens of customers 😅

Hi there, I have an observation about this “update” system which I will post as a request separately but which seems relevant here.

When editing a record (e.g. say we get an email with more contact details and want to add phone numbers, secondary email, job title, etc), each time a field is edited this counts as an “update”. This means editing a contact even a little can trigger half a dozen “update” events. This seems to be true for all content types.

That doesn’t sound like an issue until you get to Zapier and realise that every single one of these tiny changes is triggering a Zapier hook and burning through another bunch of tasks. I estimated that one Zap to update a Google sheet when an opportunity is updated could burn through our entire Zapier task allocation just from my team spending a few days doing general edits.

So is there a way to change this so that “update” triggers are only sent every 5 minutes? That way we can complete all the changes to all the fields and then Zapier will get the whole lot in one go?

(Zapier can’t do anything about this because the problem is being caused by Copper sending so many update actions, not their processing of them. Adding a tag also won’t help because that would stop the records syncing after the first time, whereas we want to be able to update records on an ongoing basis.)

Userlevel 5
Badge +3

Hi @mindapples 

This is by design, it's how API webhooks work across most all CRMs.

What is it exactly that you are looking to achieve? Passing what data specifically through to Google Sheets?

2 ways to handle this:

1) What we'd recommend is if it's more of a one-time sync, then at the end of the automation, add a unique tag back to the entity within Copper (XYZ software - data synced), and then filter out the automation if it already contains the tag. (Which you mentioned wouldn't work in your scenario but adding it here for others to see)

2) There's also more complex but flexible ways to achieve this. If just a specific field or two is the actual important data you want to sync over, another way is to store a prior value of the important field you're talking about syncing (you can literally do this as a hidden field within Copper if you don't have too many or too much going on), and then only continue if the prior value doesn't match the current value, as that would mean it's out of sync. Then at the end of the automation, update that hidden field to the new value. As easy as that 🚀

There's way to store last synced times within Google Sheets to only continue if it's after x minutes, but even with that, you're going to trigger a lot of tasks with something like a bulk update. My recommendation #2 should use 0 tasks unless it's actually updating.

Anyway, all I'm saying is there's a whole myriad of ways to fix this, there's a lot involved with automation/integration design (that's why there's a whole industry with people like us who specialize in exactly the scenario you're describing above 😁).

There's absolutely a way to accomplish what you're speaking of doing, it's just more of a custom build is all—don't blame you if you can't get it working though as it has taken me probably 6+ years of exclusively working with API's to build something more custom like this (building to cut down on how often a sync is triggered), it's a complex feature to build.

You can also use a different trigger (like on stage change) and just sync the data when it hits various stages in the process, versus every single update of any field.

Hope this helps!