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.
Do you know which email is which in this list?

(I can use trial an error, but wondered if there was a way to differentiate
)
Added the router.
How do I configure the router?
I think it should be the customer > email one.
For the router:
Row found > Row number exists
Row not found > Row number does not exist.
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.
Phase 1 
If order is a new customer, add customer to customers table and add [email], [program title] to a purchases sheet.
Phase 2
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.