I see that Shopify Flow can be used to automate workflows.
I want to set up the following workflow:
New order of product A
Shopify adds new row to Google Sheet (e.g. customer name, email, productID)
Glide processes the update and the data is now customer data available in Glide
I quickly realised that if a customer purchases product A this works.
However, if they later purchase product B or purchase products A and B then they could end up with two rows in the Sheet.
I want to limit access to emails in the customers table.
I also don’t want to have duplicate emails in there.
Do I need to do some intermediary data processing to keep customers unique in Google Sheets? Or could I just add a new row for each order and not worry about having duplicate customers?
So those are purchases that will make them users in your app?
What I would do with Integromat/Make:
Add a watcher to watch for new Shopify orders.
Create a Google Sheets search step right after that, searching for the email from the order against your Users sheet.
Add a router.
If a row is found, you can choose to update that row with info from the new order (let’s say if those products are subscriptions, and they upgraded to a higher subscription).
If a row is not found, add a new row.
That way, you can make sure no duplicate rows (assuming emails should not be duplicated) are added.
awesome thanks, FYI this is for a client who already sells products via Shopify and instead of emailing a PDF with links to YT vids they wanted to send customers to an app that had that info instead (content is sports coaching). Got it all working.
In Phase 1 every purchase needs it’s own row, e.g. if customer 1 purchases program A and then program B they will get two rows in the purchases sheet. This works perfectly and allows me to only show programs a customer has purchased when they log in. However, this means every purchase is a new row which takes up a lot of rows (there are currently five programs, 1 customer who busy all programs = 5 rows).
Can I use an array to store which programs a customer has purchased (and output array using an inline list)?
If so, how would the data be structured so that I can only list all programs purchased by a customer?
Anything special I would need to do when updating a row to add a subsequent purchase?
Well theoretically you can expand your structure with more columns (let’s say purchase 1 name, purchase 1 timestamp, purchase 2 name, etc. all the way to purchase 5). Not the cleanest structure in my opinion, but if row count is a problem for you then ok.
Then in Integromat/Make, do a search row step and then a router.
If purchase 1 name is empty then add an update row step to write to purchase 1 name and purchase 1 timestamp.
If purchase 1 name is not empty and purchase 2 name is empty then write to purchase 2 name and purchase 2 timestamp.
If purchase 2 name is not empty and purchase 3 name is empty then write to purchase 3 name and purchase 3 timestamp.
All the way to purchase 5.
For displaying it in an inline list, please adapt this method.