Adding Shopify orders to Google Sheet data source

I see that Shopify Flow can be used to automate workflows.

I want to set up the following workflow:

  1. New order of product A
  2. Shopify adds new row to Google Sheet (e.g. customer name, email, productID)
  3. 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.

4 Likes

Do you know which email is which in this list?
Screen Shot 2022-05-20 at 7.21.02 am

(I can use trial an error, but wondered if there was a way to differentiate :laughing: )

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.

1 Like

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.

1 Like

Great to hear!

Phase 1 :white_check_mark:

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).

:question: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.

2 Likes

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.