Hello, bit of a Zapier Newb here and I was wondering if the following is possible?
When a csv file is updated (uploaded to say dropbox and the old one is overwritten ) I want it to trigger something like google sheets which detects its changed and pushes the data (columns and cells) to a live webflow cms item.
So
Dropbox (trigger) Google Sheets (trigger) webflow (Action)
Note ive already got it working from google sheets to webflow cms live item but i cant figure how to make it trigger when the actual csv file is overwritten only when a row or cell is updated on the current csv.
Im trying to update a live item, but i get the Invalid ID (400) problem - i need to select âItemâ in Zapier, but i donât have a variable for âItemâ. Where can i find this?
Not yet, but still hoping this gets possible asap. If updating e-commerce stuff, which is possible, I think updating âregularâ CMS items should be easily possibleâŚ
Ya, I have the same issue⌠Not really sure what to put in the âItemâ field. I put the webflow ID and the test worked⌠but when I update rows it never updates on webflow.
Iâve gotten a little bit further, but unfortunately there is a âwallâ that i hit.
Bottomline:
You can only get the ID of (new) items if you also have a Zap for âcreate new itemâ.
There currently is no way to get newly added items in Google Sheets for example to sync on changes or new rows.
I havenât set this up yet, but i believe you need 2 multi-step Zaps.
A Zap âCreate new itemâ that adds a new Webflow CMS item when a new row is added in Google Sheets. This is the only way to get the (new) Item ID (or _id in the API). When this is being created, you need another step to add this Item ID to your Google Sheet as well, so when doing future updates/changes Webflow knows exactly what Item needs updating.
The second Zap is âUpdate (Live) Itemâ which can check other changes in your (existing) Google Sheet. It should then also have a column with the Item ID, and with that ID you can update a (Live) CMS item in the Webflow CMS.
If you already have items in your CMS/Collection in Webflow, then you need to use the API to retrieve all the Item IDâs (itâs called _id) and add them manually to your Google Sheet. Unfortunately thereâs a limit of 100, but with an extra parameter âOffsetâ you can run the command multiple times if you have more than 100 items.
Then you need to get the (JSON) data merged into a temporary new Google Sheet and (carefully) merge the _idâs with your actual Google Sheet.
I have requested to get more functionality out of this.
I think more people start filling a Webflow Collection manually at first, or do a CSV import. But by doing so, you will get into quite the trouble if you want to sync this collection in the future.
Iâd like to be able to get a new action in Webflow that can find the right Item ID, with the help of the âItem nameâ or possibly other variabel (your own custom ID# f.e.)
The workflow/sync does (only) work properly when you populate your Webflow Collection with Google Sheet data from the start - currently you can only get the Item ID when doing a âCreate Itemâ.
The work around with the API, exporting the data and then reimporting into Google Sheets is quite the hassle, especially if you have more than 100 items.
Thank you for the answer unfortunately I ran into a even bigger wall. My data source is not Google sheets itâs Redash. Which holds a bunch of our live production data from our larger site. Unfortunately we canât have Webflow write to that service, so I canât have Webflow push the row ID to redash, therefore, I donât think this would be possible for me. Iâll have to figure out a manual way of doing it unfortunately. Thanks for your help.
Perhaps you can add a âmiddle-stationâ?
Like let Webflow write to something like Google Sheets, and let Redash read Google Sheets and update itâs database from there?
This is however a nice example of a situation that also has extra needs to read/write Item IDâs.
Please let Webflow know what you would need/want - or Zapier for that matter - they might know of a workaround.
For those looking for a solution to updating live items in a collection with #nocode hereâs how I did it with just Zapier.
Create a form in Webflow to capture data (or spreadsheet or any data source Zapier supports) then setup the first step of your zap get the data.
Create a Webflow collection with whatever data fields you want, but make sure you create a field called âItem IDâ or whatever you prefer and leave that collection field empty and not required (I donât recommend just âIDâ because it will confuse you later).
Use the âCreate Live Itemâ step to turn your data from the first step into collection items. Map it all how you want. You wont link any fields to the âItem IDâ field yet.
Create another step to âUpdate Live Itemâ. This is the third step in your zap (FYI youâll have to pay for a Starter plan to use 3 or more steps). Now in this step choose the data output from the previous âCreate Live Itemâ step and youâll see that the ID of the new live item is now in the list to choose from! (This is why you donât want to label your custom field âIDâ in step 2 above because you wonât be able to tell them apart) Map this ID to the âItemâ field AND map it to your custom âItem IDâ field so you can use it later.
Boom. Thatâs it. Now you can create more zaps that can update live items because youâve saved the Item ID in your own custom field that will show up in any new zap!
@jmonson Thanks for that. The question I have is what if the Item creation in the webflow CMS goes as the last thing in the flow. What would be populated in item ID?
Here is my flow: JotForm submission => Airtable Entry => Webflow Create Live Item (via Zapier). Now the problem is that itâs sort of chicken and egg, as whilst Webflow creates item, it already asks for item id in Zapier, but the entry hasnât been created yet! Wonder how to solve this.
Thanks so much. Your method worked! One thing I should add is that in step 2, you need to not only create an âItem IDâ collection item in Webflow, but also an âItem IDâ field in whatever app or spreadsheet you are trying to connect.