WEBVTT
00:00:02.160 --> 00:00:03.520
Dad, how did this get here?
00:00:04.320 --> 00:00:06.480
Didn't we just order it like a few hours ago?
00:00:07.919 --> 00:00:14.080
When my older daughter asked that, I stopped for a second because it is a simple question with a surprisingly deep answer.
00:00:14.640 --> 00:00:24.640
Somewhere between a tap on a screen and a box on our doorstep, invisible systems spin up, data races across networks, decisions get made in milliseconds, and the physical world moves.
00:00:25.359 --> 00:00:31.839
It's fascinating to think what happens when you stream a song, book a hotel room, reserve a flight, or open an app and just expect it to work.
00:00:32.560 --> 00:00:35.759
All this technology is so fun, and I love working in this industry.
00:00:36.960 --> 00:00:39.759
I've spent my career building software and systems that make up the internet.
00:00:40.719 --> 00:00:46.240
I was CTO at Shopify and ServiceNow, NSVP at Slack, and really engineered Cisco Systems.
00:00:46.640 --> 00:00:48.159
And now I'm CTO at Webflow.
00:00:48.799 --> 00:00:53.840
I've helped build data centers, protocols, software and services, and led global teams along the way.
00:00:55.039 --> 00:01:04.879
This podcast is for anyone who wants to understand how our modern world actually works, not just shopping and delivery, but the invisible machinery behind nearly everything we do.
00:01:05.519 --> 00:01:08.719
It is for anyone who's ever wondered how did this get here?
00:01:09.040 --> 00:01:10.400
Or how did that actually happen?
00:01:11.280 --> 00:01:17.599
I'm excited to take you on a journey to take these layers of technology apart and explain them in a clear, grounded way.
00:01:17.760 --> 00:01:22.159
You probably think you connect to Wi-Fi, you're on the internet, and away you go.
00:01:22.959 --> 00:01:24.879
Well, I wish it was that simple.
00:01:25.120 --> 00:01:28.640
I'm Al Meinwand and welcome to Pixels to Packages.
00:01:29.120 --> 00:01:29.840
All right, everyone.
00:01:30.000 --> 00:01:33.040
Welcome back to Pixels to Packages.
00:01:33.120 --> 00:01:36.480
I'm here today, very excited, my friend Farhan Tower.
00:01:36.640 --> 00:01:37.200
Hey Farhan.
00:01:37.920 --> 00:01:38.799
Hey, how are you doing?
00:01:39.280 --> 00:01:39.599
Good.
00:01:39.760 --> 00:01:46.000
So those of you who don't know, Farhan and I worked together for a while at Shopify, know each other pretty well, and it's just really awesome to have you here.
00:01:46.560 --> 00:01:48.799
So today we actually get to talk about commerce.
00:01:48.879 --> 00:01:53.680
Because what I've been doing so far is I've sort of like been laying the groundwork for actually talking about commerce.
00:01:54.079 --> 00:01:57.040
I talked about like DNS and packets and the internet.
00:01:57.439 --> 00:02:02.879
I talked about how browsers work and box model and CSS and JavaScript and HTML.
00:02:03.120 --> 00:02:07.840
I talked about distributive systems and data centers and load balancers and CDNs.
00:02:08.000 --> 00:02:09.680
And I kind of wrapped it all up last time.
00:02:09.759 --> 00:02:10.960
I had this really fun episode.
00:02:11.439 --> 00:02:12.560
You gotta go listen to it, buddy.
00:02:12.800 --> 00:02:17.599
It was um I was in a Waymo connected to cloud code.
00:02:17.759 --> 00:02:21.039
So I was in AI using AI to push AI.
00:02:21.280 --> 00:02:24.800
And that was like this very like recursive sort of thing talking about AI.
00:02:24.960 --> 00:02:33.360
So it was a really fun thing to think about like what was happening inside the Waymo, what was happening inside cloud code, how the inference models were working, how it all used the internet plus cellular.
00:02:33.520 --> 00:02:35.280
I just tried to tie it all together.
00:02:35.520 --> 00:02:41.599
But I know what people who have been listening to this podcast really want to talk about is commerce.
00:02:41.919 --> 00:02:45.599
So tell us a little bit about your role and let's get started.
00:02:45.919 --> 00:02:46.240
Sure.
00:02:46.400 --> 00:02:55.840
Yeah, so it's great that you did all those foundational episodes because we use an entire set of uh uh infrastructure to enable all of the things we do at JavaFy.
00:02:56.000 --> 00:03:17.919
And yeah, so my role is um I'm head of engineering, I've been here seven years, uh, worked on various things from like in-person commerce, like Bueno Sale, to uh online and obviously the growth of online commerce, spent a lot of time in infrastructure um and core engineering, and now of course in AI and AI enablement, but also how do we bring AI to our buyers and our merchants so that they can remove 12 from nowhere close.
00:03:18.319 --> 00:03:21.759
So um happy to see you again and happy to have a conversation wherever you want to go.
00:03:21.840 --> 00:03:27.120
And actually, well, I'm interested in your Waymo thing because were you using cloud code from like mobile or can you pull your laptop?
00:03:27.280 --> 00:03:39.360
Yeah, yeah, I actually uh I uh cooked it up for my ATT phone and I basically was sitting on a laptop, tethered to my 5G, driving through San Francisco in a Waymo.
00:03:39.599 --> 00:03:41.280
So it was like AI and AI and AI.
00:03:41.360 --> 00:03:43.520
It was like it was like you know, inception with AI.
00:03:43.599 --> 00:03:44.240
It's kind of fun.
00:03:44.400 --> 00:03:44.960
I love it.
00:03:45.120 --> 00:03:50.960
It's very so what I know the people are pretty curious about is let's say you hit a Shopify store.
00:03:51.280 --> 00:03:54.000
So pick your favorite store and you hit a short store.
00:03:54.319 --> 00:03:56.159
What actually happens at that point?
00:03:56.319 --> 00:04:02.639
I mean, I know we go through the internet, we hit a load balancer, we have something in your case on Google, you know, Google Cloud.
00:04:02.800 --> 00:04:06.240
But then actually, what happens on the front end and the back end?
00:04:06.319 --> 00:04:08.319
Can you sort of start to tell us that story?
00:04:08.639 --> 00:04:09.360
Yeah, sure.
00:04:09.520 --> 00:04:11.599
So when you are, so you're right.
00:04:11.680 --> 00:04:14.719
So let's let's talk about like uh you know online commerce, right?
00:04:14.800 --> 00:04:15.759
Because this will be awful.
00:04:16.000 --> 00:04:18.000
Go to a you go into a store and you transact there.
00:04:18.160 --> 00:04:32.879
But for online commerce, typically what happens is you have either someone has told you about a brand, you already know about a brand, you might be using the shop app to discover a brand, you might do a Google search or a meta search or Instagram and be like, hey, I'm interested in buying something from the store, just browsing.
00:04:33.120 --> 00:04:37.199
And so what happens is you will go to what we call the storefront.
00:04:37.439 --> 00:04:40.879
It's a place where it's uh surf from our CDM.
00:04:41.040 --> 00:04:42.560
We probably talked about CDMs.
00:04:42.720 --> 00:04:44.079
And yeah, okay.
00:04:44.399 --> 00:04:46.319
And it's typically like like read-only, right?
00:04:46.399 --> 00:04:47.360
Because you're just browsing.
00:04:47.439 --> 00:04:49.680
You might be like clicking on the colors that an item is.
00:04:49.759 --> 00:04:52.720
Let's say you're interested in like shorts, like, okay, what colors does it come in?
00:04:52.879 --> 00:04:53.519
What sizes?
00:04:53.759 --> 00:04:54.800
Can I look at other items?
00:04:54.959 --> 00:04:56.879
So I'm on like, you know, I'm in a web experience.
00:04:57.040 --> 00:05:08.879
I might be on my phone or on a desktop, and I'm just browsing and I'm taking a look at collections, maybe I'm getting recommendations, maybe I'm looking at uh there's also like you know, 3D, right?
00:05:08.959 --> 00:05:13.360
You might be looking at a model and be like, hey, what's the uh size of this thing in my environments?
00:05:13.600 --> 00:05:16.800
Maybe you're using AR, but all those things are served by our storefront.
00:05:16.959 --> 00:05:20.240
And the way that works is it's actually distributed all over the world.
00:05:20.319 --> 00:05:21.920
So you have a good experience no matter where you are.
00:05:22.079 --> 00:05:33.680
So if you are in Australia or you're in the US, we are hopefully giving you a good experience because our CDN has distributed all of the imagery and text and data in a way that allows it to be very close to the buyer.
00:05:33.759 --> 00:05:40.399
So if you're in Australia, you're hitting like a something close to where you are and you're getting those return packets uh from a close location.
00:05:40.560 --> 00:05:43.759
And then you are you're, you know, you I mean, you sometimes happens too.
00:05:43.839 --> 00:05:53.519
You might start in Australia and then get on a plane and then go to uh, you know, New York, and in which case then you'll hopefully be routed to a New York server, and now you're still having a good and fast encouraging.
00:05:53.759 --> 00:06:01.759
And what's cool about that is because it's read-only, we don't have to store that much information about you to kind of move things around, right?
00:06:01.920 --> 00:06:06.399
Because um, you haven't really, you haven't done like an operation like in like an add-to-cart yet.
00:06:06.480 --> 00:06:18.800
You're just like browsing, and of course, we kind of give you a good experience and give you a good personalization recommendation, but you haven't really, if you haven't signed in or you haven't hit add-to-cart, we are in a in a state where we can kind of serve you from anywhere.
00:06:18.959 --> 00:06:29.600
So another interesting thing from a resiliency perspective is if something happens, the server goes down, or there's an infrastructure uh problem somewhere down the stack, we can just serve it from somewhere else.
00:06:29.680 --> 00:06:29.839
Right?
00:06:29.920 --> 00:06:32.959
So if the New York stuff goes down, we can serve you from somewhere close.
00:06:33.120 --> 00:06:39.600
Uh worst case, we can serve you from all across the country, like California, but at least you're still able to like browse and mob around.
00:06:40.000 --> 00:06:43.279
So that's like a storefront, and it's very much like read-only.
00:06:43.360 --> 00:06:45.439
And there's lots of obviously complexities there.
00:06:45.519 --> 00:06:56.480
So for example, um, if we have like a bot attack or a flash sale, which is when, you know, imagine like a Kim Kardashian tweets out, I've got like new um new apparel on skims.
00:06:56.639 --> 00:07:08.800
We might have like a thundering herd come at us, and we use a combination of signals and our CDN to enable that to be a good experience uh for humans and also um for bots, because we have bots that uh also buy.
00:07:08.959 --> 00:07:16.959
And potentially we want to have a good lane for both of those types of users to um be able to hit our storefronts and see what's available on the stores.
00:07:17.360 --> 00:07:19.680
So I'm saying I'm sending it on a lunar browser.
00:07:19.839 --> 00:07:23.759
I hit skims, maybe not me, but somebody hit skims.
00:07:24.079 --> 00:07:31.600
And at that particular point in time, you're routing across the internet, across the fiber, into a data center, into GCP, across the load balancer, hitting your storefront.
00:07:31.759 --> 00:07:33.439
I know it's called storefront renderer.
00:07:33.600 --> 00:07:33.680
Yeah.
00:07:33.839 --> 00:07:35.680
At that particular point, you mentioned something interesting.
00:07:35.759 --> 00:07:37.680
You mentioned get recommendations.
00:07:37.920 --> 00:07:44.160
Is that a different call where like the storefront will now call to a different service through a different network, a different load balancer?
00:07:44.240 --> 00:07:45.759
And and how does that actually work?
00:07:46.000 --> 00:07:53.519
Yeah, so so basically we've got uh the storefront, and then there are things that require more uh intense compute, right?
00:07:53.600 --> 00:08:04.480
So collections is one because you might have a selection called show me everything, you know, like on your as a merchant, you might say, I want to have a collection that's um all new items or all blue items or all items under$10.
00:08:05.040 --> 00:08:07.279
And so the collection might be more compute intensive.
00:08:07.439 --> 00:08:10.079
You might even have smart collections, which lets you do things automatically.
00:08:10.240 --> 00:08:19.519
And so that's an example of another call to a uh to another endpoint inside of Shopify that would return the products uh that may make sense for you.
00:08:19.680 --> 00:08:21.199
It might be recommendations.
00:08:21.439 --> 00:08:26.399
It might be uh, hey, based because maybe you sign in and you're like, oh, we already know you.
00:08:26.480 --> 00:08:30.560
And so we know your size and we know the colors you like or the past products you purchased.
00:08:30.720 --> 00:08:33.600
That would be another endpoint inside of Shopify that would be called.
00:08:33.759 --> 00:08:50.159
So I think that there's easy ways for um us to kind of give you a better experience, but that does require more compute because it's not just serving like you and I hit skims at the beginning, and we're not signed in and there's no you know, cookies, we we should get the exact same experience and we can get hit from hit any server.
00:08:50.480 --> 00:08:58.559
But you're signed in, or if I'm uh already known to that site, there's going to be slight preferential treatment for one way or another.
00:08:58.720 --> 00:09:04.000
And you want that to be happening because you want to have a good experience as a user, and so we have more information about you.
00:09:04.080 --> 00:09:05.440
We can uh tailor the experience.
00:09:05.679 --> 00:09:08.000
Might say, oh, let's show let's show men's items.
00:09:08.159 --> 00:09:09.600
Uh well, maybe to both of us.
00:09:09.679 --> 00:09:16.960
But yeah, uh you've already maybe you want he wants to show you pants that are longer, and uh, I'm in Toronto, maybe he wants to show me things that are more for warm weather.
00:09:17.120 --> 00:09:25.039
And so those are the kinds of things that we can do um once we hit the site, and we can start saying, Okay, well, let's let's try to tailor the experience.
00:09:25.360 --> 00:09:34.159
Yeah, so to put all that together, you hit the site, you think about the recommendations, you think about the cookies and maybe the user preferences, the query parameters for that site.
00:09:34.320 --> 00:09:34.480
Yep.
00:09:34.639 --> 00:09:50.320
That builds the HTML, which comes back across the internet, back to the browser, renders with a box model, and like the boxes on my screen might be different than the boxes on your screen, like you said, because you're getting warmer weather here in Toronto, I'm getting you know cooler weather because I'm in San Francisco or something like that.
00:09:50.559 --> 00:09:51.440
Yep, exactly.
00:09:51.759 --> 00:09:56.320
So those like the more information uh that the user can provide, right?
00:09:56.399 --> 00:10:05.360
Because sometimes you go to the site is you actually click on men's or you click on items under$10, which might be part of a smart collection, and then we can do calculations and serve it to.
00:10:05.519 --> 00:10:17.360
And other times we can do it automatically is you might sign in and we now are saying, okay, let's preferentially give you a different experience because you've now told us uh who you are, and maybe we can use your past purchases on that site for that reason.
00:10:17.679 --> 00:10:18.320
Very cool.
00:10:18.639 --> 00:10:26.480
You know, you know, I've down at the I've turned out the browser, I've turned out my app on my phone, I've got a collection, I'm ready to go buy something now, and I hit add to cart.
00:10:26.720 --> 00:10:28.080
What actually happens there?
00:10:28.240 --> 00:10:30.240
Because that's like the next step in the transaction, right?
00:10:30.320 --> 00:10:34.320
Like it's the store from this one side, then there's cart with the cart promise, right?
00:10:34.399 --> 00:10:35.759
So how does that doesn't actually work?
00:10:35.919 --> 00:10:52.799
Yeah, so actually just one step before that is like there's like we will use um inventory signals and to actually automatically like box out things that are not available because we don't want you to add to cart like something that's you say, okay, I want to get these shoes in size 10, and then you press it and it's like, oh, not available.
00:10:53.200 --> 00:10:55.279
We'd rather show it to you more up front.
00:10:55.519 --> 00:11:02.000
So usually you can filter and say something like, Hey, uh, I'm looking for this size, and maybe I only want to see things that are in stock.
00:11:02.320 --> 00:11:09.600
Or um when you get to that product details page, we call it a PDP, you might already see that size 10 shoe is next out for that color.
00:11:09.679 --> 00:11:12.240
So you might say, Oh, I want white because they don't have blue.
00:11:12.399 --> 00:11:13.120
Oh, they don't have blue.
00:11:13.200 --> 00:11:14.240
Okay, I want to have black.
00:11:14.320 --> 00:11:15.120
Oh, they do have it.
00:11:15.200 --> 00:11:16.799
Now you click add to cart, right?
00:11:16.879 --> 00:11:18.080
So we're getting information.
00:11:18.159 --> 00:11:39.519
And now you can add the cart, you're now doing um an operation that takes you out of like read-only mode into uh uh like a like a set like a session persistence mode because now if you continue shopping or you move around the site, you notice that there are your little uh shopping cart has a little one beside it because now you've added something to the cart.
00:11:39.679 --> 00:11:50.480
So the way that works is we actually can store in your session, so on your in your uh in your browser, actually, and the cookie, that you have added uh this item to your cart.
00:11:50.639 --> 00:12:09.360
And if you go to other parts of the site, if you even go away for a certain period, you might like close to your tab, come back uh let's say days or weeks later, and you go to the same site, you will hopefully see that that item is still in your cart because we noticed that some people, obviously, people want to browse, they want to take time to think about something.
00:12:09.440 --> 00:12:12.879
They come back, like, oh yeah, I wanted to buy those shorts from Skims.
00:12:13.360 --> 00:12:19.279
Let me go back to Skims and they realize that there's some things in their cart from last time, and they go, Oh yeah, I never completed my transaction.
00:12:19.440 --> 00:12:24.320
Maybe they're waiting for free shipping, maybe they're waiting for a sale, maybe they're waiting to bundle more items.
00:12:24.480 --> 00:12:25.440
And so that can happen.
00:12:25.519 --> 00:12:43.279
The other thing that happens in some cases is merchants might use a tool to send you an email because maybe you've signed in, you've added something to your cart, and it might say, Hey, don't forget you've left this in your cart, and I know that I'm guilty of uh of doing that, and then I do I go, oh yeah, and then I go back and actually go back to the store and actually buy it.
00:12:43.360 --> 00:12:49.919
And it tends to be a good loop uh where they might send you an email, and then from the email you might go back to the storefront and then buy that item.
00:12:50.080 --> 00:12:52.720
So you're if it's I've actually gotten texted in the past too.
00:12:52.960 --> 00:12:53.759
Yeah, it's true.
00:12:54.000 --> 00:12:57.679
Yeah, the storefront will the the store will text me, hey, you left this behind, go check it out.
00:12:57.840 --> 00:12:58.000
Yeah.
00:12:58.159 --> 00:12:58.960
So exactly.
00:12:59.039 --> 00:13:07.440
And because because it's known to you, uh, you know, you've already signed in, or other signals can tell you that I wait a sec, you might want to uh complete your transaction.
00:13:07.600 --> 00:13:17.360
So once you add it to cart, this is where it gets tricky because imagine you leave the store and your cookie expires, which case you come back and now you have to kind of start that transaction over.
00:13:17.600 --> 00:13:20.559
Or you have the example, you're in Australia and you get on a plane.
00:13:20.720 --> 00:13:28.320
If you get in Australia and you get on a plane, we might not automatically be able to find your cart because we are routing you now to a closer region.
00:13:28.720 --> 00:13:37.600
So we and that's like a thing that we choose to do because we don't wanna, I don't want to have to look across all sessions across all the world because you're in Europe to determine whether your cart was there or not.
00:13:37.679 --> 00:13:38.559
And that's our decision.
00:13:38.720 --> 00:13:46.559
Or in some cases, maybe we uh decide we do want to do that, which ends up being you know a more expensive operation, but it might be better for the user if we did.
00:13:46.720 --> 00:13:50.720
And of course, as you know, cookies are on your local machine.
00:13:50.960 --> 00:13:56.559
They have a cookie uh expiry based on potentially what's actually in your browser.
00:13:56.720 --> 00:14:09.440
You might actually go in and delete your cookies or get a new machine, switch from desktop to mobile, and for those things, we can sometimes identify, help identify, hey, your cart is still here on this store, and other times we can't.
00:14:09.600 --> 00:14:12.639
So sometimes you're like, wow, this I went to my phone and my cart's still there.
00:14:12.720 --> 00:14:15.279
And other times you're like, oh, I went to my phone and the cart's not there.
00:14:15.440 --> 00:14:27.200
Or in our case, with the shop app, um, which is our uh consumer offering, we can we can um actually help you see uh your cart from a store in the shop app, which helps you uh convert as well.
00:14:27.360 --> 00:14:57.600
And so there are ways that we can kind of give you a good experience based on this now like read, like this write operation that you've done, which is adds something to your and what's fascinating to me about that is like different clients, you know, the phone, the app, the browser, the desktop browser, the laptop browser, they're all sort of connecting into the same back end, and they have that same knowledge of who you are, assumably passing some sort of user, some sort of persistence key that says this cart belongs to Alan, this cart belongs to Farhan, and this is what to bring up when they go back into the app.
00:14:57.759 --> 00:15:06.399
So all that again is happening over HML, over TCP, going into the servers, and it's all like so fast that that's the part that's just fascinating me.
00:15:06.480 --> 00:15:11.360
You know, like you know, this whole podcast, my daughter was like, I ordered something and it showed up an hour later.
00:15:11.440 --> 00:15:12.639
How did that actually happen?
00:15:12.960 --> 00:15:17.840
And just thinking about the the magnitude of all this over the scale of, I don't know, the internet.
00:15:18.159 --> 00:15:19.440
It's just just wild to me.
00:15:19.519 --> 00:15:20.879
It's just really real fun here.
00:15:21.200 --> 00:15:24.639
And there's interesting problems that we as like nerds need to think about.
00:15:24.720 --> 00:15:29.600
So, for example, let's say there's one wear of shorts and now I add it to the cart.
00:15:30.000 --> 00:15:36.080
And then let's say I haven't done anything, and now somebody else actually finds the same pair of shorts and adds it to their cards.
00:15:36.240 --> 00:15:40.399
Because in uh you know reality, those shorts are not sold yet.
00:15:40.639 --> 00:15:43.600
So there's kind of different ways to think about that transaction.
00:15:43.840 --> 00:15:46.639
One way is when I add it to the cart, I can reserve it.
00:15:46.720 --> 00:15:54.000
So if you ever bought tickets from like Ticketmaster, you before you complete the transaction, it'll say, These tickets are yours for the next 10 minutes.
00:15:54.240 --> 00:15:54.559
Yeah, yeah.
00:15:54.639 --> 00:15:57.039
You have to rush to get your credit card to pay from the lick, right?
00:15:57.440 --> 00:15:59.679
You have 10 minutes because it's reserved it for you.
00:15:59.840 --> 00:16:08.000
And for us, we have different strategies that we can think about um where we are like, should we um optimistically lock, right?
00:16:08.080 --> 00:16:11.679
Or I guess tell pessimistic locking because you're locking in in advance, right?
00:16:11.919 --> 00:16:20.559
Uh, or do I want to just be like, okay, I'm okay to tell the user if they get further down the path that it's it's gone, it's been gone since the time you put it in your cart.
00:16:20.720 --> 00:16:24.720
So I put it in my cart, I waited too long, someone else put in their cart and they checked out.
00:16:24.960 --> 00:16:32.720
Yep, now when I go to check out the that the tickets are gone, in my case, the shoes are gone, and now I have to make sure that I'm uh faster next time, right?
00:16:32.799 --> 00:16:39.600
So I just keep picturing like a I just keep picturing like a Black Friday sale and somebody literally taking something out of somebody else's cart along the way.
00:16:39.919 --> 00:16:40.000
Right.
00:16:40.480 --> 00:16:40.720
Same thing.
00:16:40.799 --> 00:16:41.279
You're right, right.
00:16:41.360 --> 00:16:45.519
You're in the you're in the mall and so and you have something in your cart and somebody comes over and takes it from your shopping cart.
00:16:45.679 --> 00:16:48.639
Like that was that's exactly what's happening here.
00:16:48.879 --> 00:16:52.080
And and depending on the brand, it might want to ask you more questions.
00:16:52.159 --> 00:16:56.720
So for example, they might ask you during the cart ad phase, hey, what's your uh post-code?
00:16:56.799 --> 00:16:57.519
What's your zip code?
00:16:57.679 --> 00:17:02.000
And the reason for that is it wanna show you um maybe it's a free shipping offer.
00:17:02.159 --> 00:17:08.000
Maybe it's um, hey, this they want to tune your inventory to some uh warehouse that's closer to you.
00:17:08.240 --> 00:17:13.119
They might want to estimate shipping costs, they might want to estimate taxes.
00:17:13.279 --> 00:17:21.279
So there's a bunch of things, again, depending on the brand, might ask you at that stage, or they might ask you later when you get to the actual checkout, which we will talk about.
00:17:21.440 --> 00:17:27.680
But right now you're in like the I'm I'm in a mall, I was browsing before, now I've got a shopping cart, I'm putting stuff in it.
00:17:27.759 --> 00:17:30.960
And that's what this uh that's why it actually, if you look online, it's shopping cart.
00:17:31.039 --> 00:17:36.960
It's literally the you know, skew morphic design of like, it's a shopping cart, it should feel like a shopping cart, it's now like in my car.
00:17:37.680 --> 00:17:48.160
What's fascinating to me is depending on where I am, and more specifically, depending on where the internet routes me, I might get different mall items, right?
00:17:48.240 --> 00:18:00.640
I might be able to think, you know, I'm sitting in San Francisco, and if I'm using a VPN or I'm using some sort of other connection, or T Speed connection pops up in New York, Shopify might think I'm in a New York mall as opposed to if I'm in a San Francisco mall.
00:18:00.799 --> 00:18:06.559
And that could determine the inventory I see as well as the shipping rates I'd see and all sorts of other things.
00:18:06.640 --> 00:18:09.680
So hey, you can we're you could use a more people.
00:18:09.920 --> 00:18:16.160
For example, uh in Shopify, you might say, Hey, for our New York customers, I want to give them a specific promotion.
00:18:16.400 --> 00:18:16.559
Right.
00:18:16.720 --> 00:18:16.960
Right?
00:18:17.039 --> 00:18:28.319
And and we could do things like we can offer you a bundle discount, we could offer you something, might be able to have a little pop-up and say, Hey, um, for people in New York, we're offering, like, you know, you can buy online and pick it up in store.
00:18:28.480 --> 00:18:29.680
Maybe you want it today.
00:18:29.920 --> 00:18:34.720
Maybe you want to put it in your cart, but I guess you want it today, and it'll say, Oh, let me just pick it up in store.
00:18:34.799 --> 00:18:36.079
And the store is like near you.
00:18:36.160 --> 00:18:42.640
So you might like buy, and I've done this before too, where I buy something, uh, get like an order ID, and then I go to the store and I pick it up the same day.
00:18:42.799 --> 00:18:44.319
You could do the opposite, by the way.
00:18:44.480 --> 00:18:48.960
You can go in store and say, I'm in store, you don't have the thing, or it's too big, ship it to my house.
00:18:49.119 --> 00:18:52.960
And so there's so many different um combinations of things you could do there.
00:18:53.359 --> 00:18:54.640
All right, so we got a cart.
00:18:54.720 --> 00:18:56.640
It kind of depends on where we are on the internet.
00:18:56.799 --> 00:18:58.559
We're connected over the store via the internet.
00:18:58.799 --> 00:19:06.319
We've gotten our browser, we've gotten our HTML back, we've been served up by the CDN, the storefront renderer, and now we're ready to check out.
00:19:06.640 --> 00:19:07.119
Yes.
00:19:07.359 --> 00:19:08.400
So tell me about that.
00:19:08.559 --> 00:19:10.160
Because that seems to be like the next logical step.
00:19:10.400 --> 00:19:13.359
Pull my wallet out, my my virtual wallet out, and I'm ready to go.
00:19:13.680 --> 00:19:20.480
Yeah, and so now you've got uh one or more items in your cart, and you're ready to go to the next phase, which is like I actually want to check out.
00:19:20.640 --> 00:19:24.480
And so this is like in the physical world, this is you walking up to the cashier, right?
00:19:24.720 --> 00:19:30.000
And so what happens here is we now move into the checkout phase where we are doing a couple things.
00:19:30.240 --> 00:19:36.240
One, we want sometimes we there's a bunch of things happening at the browser level and a bunch of things happening at the server level.
00:19:36.480 --> 00:19:44.880
So one, we get to like a checkout page, and that checkout page is one typically where it's like, I need your information, name, address, payment, etc.
00:19:45.200 --> 00:19:49.119
But I also and I also want you to confirm everything, like shipping and everything that's in your card.
00:19:49.279 --> 00:19:54.720
And as and the things that happen to the browser are it might want to pre-fill information.
00:19:54.799 --> 00:20:01.279
So you know when you go to a website, you protect the information and it says, oh, you start to be A and it's an online one, it just completes it for you.
00:20:01.440 --> 00:20:05.359
That's happening on your on your browser because it saved information locally.
00:20:05.599 --> 00:20:10.720
It may also save your credit card locally because it stores it in a secure location inside the browser.
00:20:10.960 --> 00:20:15.119
It might say, Oh, do you want to use this credit card that I have on file?
00:20:15.279 --> 00:20:17.519
You might choose an accelerated payment option.
00:20:17.680 --> 00:20:19.119
Shock pay is one example.
00:20:19.359 --> 00:20:24.240
So you go there, it says, Oh, Alan, you bought from a Shopify store before and you're a Shock Pay user.
00:20:24.559 --> 00:20:34.880
Can I um help you by uh pre-filling your address, pre-filling your credit card, and you can just hit um pay, pay now, and it quickly accelerates you through that process.
00:20:34.960 --> 00:20:37.759
It'll track it in the shop app and kind of give you that great experience.
00:20:37.920 --> 00:20:38.720
You might want to use it.
00:20:38.880 --> 00:20:42.559
By the way, that is a really, really powerful and dangerous button.
00:20:42.720 --> 00:20:44.160
I use it all the time.
00:20:44.480 --> 00:21:00.559
Well, what you learned and what the data shows is that even if you don't use Shop Pay, but the purple button is there, you feel trust with the brand for like, actually, I know this is a legit merchant because uh it's got a purple button and I uh I feel good even if I don't use Shop Pay.
00:21:00.799 --> 00:21:02.400
And then you might want to use another payment method.
00:21:02.480 --> 00:21:13.680
Maybe you're a PayPal fan or a Google Pay or Apple Pay and you like that experience and you want to use one of those uh payment providers, those typically are uh offered as well by the merchant, so you might want to use those, or you might be like, you know what?
00:21:13.839 --> 00:21:17.279
I'm uh this is a gift or a one-time purchase in the store.
00:21:17.440 --> 00:21:18.559
I want to check out as a guest.
00:21:18.640 --> 00:21:23.440
So yes, you've got to give you my email and address so that you can send me a transaction uh notification.
00:21:23.599 --> 00:21:30.160
But I do not want um an ongoing relationship with you because it's a one-time purchase for me, or the opposite.
00:21:30.799 --> 00:21:32.160
I want to sign up for your marketing.
00:21:32.240 --> 00:21:33.440
I'm gonna click on this button.
00:21:33.599 --> 00:21:37.200
I'm a big fan, I want to be on your mailing list, I want to join your loyalty program.
00:21:37.279 --> 00:21:43.920
Like it could be that version too, in which case you give it information and you give it all these permissions uh to uh give you all those things.
00:21:44.079 --> 00:21:45.279
So that's the page.
00:21:45.599 --> 00:21:56.640
So you've got you've filled in all your information, or you've gone through one of these accelerated uh methods, it shows you a final confirmation of everything in your cart and the taxes and duties and shipping and anything else that you might uh care about.
00:21:56.880 --> 00:21:58.079
You hit pay now.
00:21:58.319 --> 00:21:59.279
So what happens there?
00:21:59.440 --> 00:22:04.000
So what What happens is we go through what's called a checkout negotiation.
00:22:04.240 --> 00:22:09.920
This is the final step where we are converting your um your cart into an order.
00:22:10.079 --> 00:22:11.519
And there's lots of things that can happen here.
00:22:11.599 --> 00:22:17.200
One of the things we already mentioned, which is we have to for sure recheck if the inventory is still available.
00:22:17.440 --> 00:22:25.039
So even though we've done these checks, we still do one final check, which is why sometimes you're like, you get there and it's like, oh, it's no longer there.
00:22:25.279 --> 00:22:28.240
Um, this is the equivalent of someone taking it out of your cart.
00:22:28.400 --> 00:22:35.680
And uh because you were glad you had it, but actually it turns out like maybe it's maybe by the way, maybe some some stores actually share inventory with their store store.
00:22:35.839 --> 00:22:39.759
Maybe someone was in the physical store and bought the shoes, and now they don't have it available.
00:22:39.839 --> 00:22:44.160
And you know, if that system is one system, it'll decrement the uh inventory.
00:22:44.480 --> 00:22:48.160
And you are going through this negotiation where we finalize everything.
00:22:48.240 --> 00:22:55.839
We recheck the tax rates, we check the shipping again, we check the inventory, and then we lock it and we convert it to an order.
00:22:56.000 --> 00:23:03.039
And when we're and we're going through that, you see a little spinner, it says, do not hit the back button, do not, you know, PSU3, that can cause another submission.
00:23:03.440 --> 00:23:06.799
And we are final, we call it finalizing the order.
00:23:07.039 --> 00:23:24.000
We finalize it, and what happens is it converts it into an order, which is like now like a read-only uh object, because uh if we do have something called order editing, but it's really like a like a like an appending of the order because I have a history, but we are now turning it into an order.
00:23:24.160 --> 00:23:29.599
We lock in all the you know pricing, shipping, taxes, all the things, the inventory.
00:23:29.680 --> 00:23:40.960
We decrement the inventory so now no one else could take it from you, including in the store, by the way, which can happen sometimes where you have stock in the back room and someone will literally go and tag it and be like, this is now taken.
00:23:41.279 --> 00:23:48.160
And that turns into an order in a way that you will get the email confirmation typically very quickly.
00:23:48.319 --> 00:23:52.240
If you're using your shop app, you'll get like you might get a notification saying now being tracked by shop.
00:23:52.400 --> 00:23:54.640
So you can see that the order was was done.
00:23:54.960 --> 00:23:59.440
And we start, you move into this like fulfillment phase from the merchant side.
00:23:59.599 --> 00:24:07.519
So it will show up in their uh ledger as an order to fulfill, and they will get the same information, which is like here are all the things.
00:24:07.680 --> 00:24:16.400
They might have if it's one item, they might just pack and pick the one item, if it's like five, they might gather like a bundle and put it together for you and then get ready to ship it.
00:24:16.480 --> 00:24:30.480
And what's cool about Shopify is you can not only do that entire operation and click on it and say, I want to fulfill, you can also print out a shipping label and you know, literally affix the label to the package and then get it sent out to you, which is then moving into like tracking.
00:24:31.200 --> 00:24:32.160
Yeah, it's it's fascinating.
00:24:32.240 --> 00:24:42.240
I know when we were working on this together, the most important thing was getting the user from the cart to the checkout and getting the checkout to execute as fast as possible because we all know this, right?
00:24:42.319 --> 00:24:47.839
We're we've we have it in the cart, we're ready to check out, we're like, I don't want to spend a bunch of time at the cashier.
00:24:47.920 --> 00:24:51.039
I just want to like, here's my card, let's go, and then move on to the next thing.
00:24:51.200 --> 00:25:04.400
And I already spend, I know you all spend a lot of time, and we spend a lot of time talking about making that checkout work incredibly fast, making sure the sessions work incredibly fast, making sure the payment providers are tied in through the payment gateways the right way.
00:25:04.640 --> 00:25:11.200
All that is incredibly complicated behind the scenes, and it's all these connections going to all these different places across the internet.
00:25:11.519 --> 00:25:16.880
And as far as you know, I, the buyer, is concerned, like you said, it's pay now, and then boom, done.
00:25:17.119 --> 00:25:20.160
Here's the email, shows up on my app, and I'm good to go.
00:25:20.319 --> 00:25:25.279
It's like it's stunning how quick it all occurs and how many things actually occur behind that button.
00:25:25.599 --> 00:25:29.839
Yeah, and what we didn't actually talk about, actually the payments negotiation.
00:25:30.079 --> 00:25:39.279
Because one of the things that can happen is you might put in an indirect credit card number, or you might uh sometimes this happens, an expired credit card on file, whenever, and it won't go through.
00:25:39.359 --> 00:26:05.599
And so what happens at the payment negotiation stage is that between Shopify and the payment gateway, it could be auth.net, it could be Stripe, it could be PayPal, we have a negotiation where we give the uh encrypted information to the provider in a way that they can actually figure out if this is a ballot card, has the funds, is not fraud brand, all those things, sends us back an authorization, and then we come back to you and say, yes, this has gone through.
00:26:05.680 --> 00:26:10.400
You might see on your phone if you use Apple Pay, whatever, like it shows up as a notification, like this has been paid.
00:26:10.880 --> 00:26:18.960
And that is part of the negotiation because sometimes, you know, if that fails, obviously we don't want the merchant to fulfill an order where the payment hasn't gone through.
00:26:19.119 --> 00:26:24.559
You want to know right away that actually I need to use a different credit card, or I want that in my gift card, et cetera.
00:26:24.720 --> 00:26:29.680
And so um, that's part of that whole negotiation is when it's finalized, the payment has also gone through.
00:26:29.839 --> 00:26:33.279
And uh, we spend a lot of time on authentication race at front.
00:26:33.440 --> 00:26:48.400
So, for example, at Shopify, if a person uses a fraudulent credit card on any one of our millions of sites, we're um hopeful that it'll in uh in real time that that credit card cannot be used once we identify and not be used anywhere else on a Shopify site.
00:26:48.480 --> 00:26:56.240
So the network actually um uh gets smarter over time by just having uh these signals propagate throughout the entire network.
00:26:56.640 --> 00:26:57.279
Very cool.
00:26:57.440 --> 00:27:00.000
No, it's it's really impressive how quick it all occurs.
00:27:00.160 --> 00:27:01.920
Yeah, now we actually get to fulfill, right?
00:27:02.000 --> 00:27:03.680
So we actually get to do the fulfillment part.
00:27:03.920 --> 00:27:10.480
So we actually actually this is yet to the pixels, everything we've talked about so far is all pixels in electrons and you know waves of light.
00:27:10.640 --> 00:27:12.799
But now we're actually talking about like packages.
00:27:12.960 --> 00:27:16.720
So actually fulfilling the packages, and that's fascinating too.
00:27:16.960 --> 00:27:18.960
Yeah, and it depends on the size of the merchant, right?
00:27:19.039 --> 00:27:37.759
So you could be a an entrepreneur who's just started their business and be at home, and you've got this fulfillment page, and I see all these images and videos of people they got like a you know kitchen set up and they've got boxes and labels and products, and they're using the Shopify uh order screen to basically be like, okay, I need to fulfill this order.
00:27:37.920 --> 00:27:39.039
What goes in the box?
00:27:39.200 --> 00:27:40.960
Can I bring my shipping label from here?
00:27:41.200 --> 00:27:47.200
Let me close it, and then they do like, you know, they pack the box, they obviously put their, you know, um personalized touches on it.
00:27:47.279 --> 00:28:07.839
They might write a handwritten note, they close it up, they put the shipping label, and then they can say when they, you know, either it fulfilled there or when it's in transit, but it's already fulfilled from their perspective, and then they literally show these images of boxes at the door that they didn't have to drive to like, you know, UPS or uh Europe, you know, U US Postal Service or FedEx or whatever.
00:28:07.920 --> 00:28:12.720
Uh and then that in their mind it's like it's like now shipped out and then then it goes to like the tracking page.
00:28:12.880 --> 00:28:18.880
Um so but it's it's kind of a visceral experience because for them, this is now also the it was pixels for them, right?
00:28:18.960 --> 00:28:26.160
This is orders are coming in and now it's into packages because they've got it converted into the thing that they're now sending uh their users.
00:28:26.319 --> 00:28:30.319
Now, of course, there's like people who do sell digital goods and things like that where they don't have the package aside.
00:28:30.559 --> 00:28:34.000
But for the people who are selling physical goods, um, there's a fulfillment stage.
00:28:34.079 --> 00:28:51.279
Now, if you're a bigger merchant, you might do anything from work with a warehouse to uh use fulfilled by Amazon, where those orders are automatically flowing into an order management system and then a fulfillment system such that uh there's a third party that's taking care of that for you.
00:28:51.359 --> 00:28:55.279
And they're they might let you know, hey, by the way, these shoes in size 10 are running low.
00:28:55.359 --> 00:29:01.519
You might want to order them from your manufacturer to refill it in the in the warehouse because a lot of people are ordering those.
00:29:01.680 --> 00:29:06.880
They will typically handle that for you, but you're at some large, large scale where um you're not doing that by hand.
00:29:07.200 --> 00:29:11.119
Yeah, I don't picture the Kardashians packing, picking and doing things on their own.
00:29:11.200 --> 00:29:12.160
So no, correct.
00:29:12.240 --> 00:29:15.599
Yeah, they've got the volume to like have like a warehouse and a setup there.
00:29:15.759 --> 00:29:18.480
By the way, go from one warehouse to multiple warehouses.
00:29:18.960 --> 00:29:21.440
How do you, you know, um route?
00:29:21.599 --> 00:29:22.799
It's an interesting problem, right?
00:29:22.880 --> 00:29:25.039
How do you route people to the correct closer warehouse?
00:29:25.119 --> 00:29:30.720
So if you say you want to shoe size 10 and you're in San Francisco, should I show you the ones in New York or not?
00:29:31.200 --> 00:29:38.319
Because there's different delivery um timelines and also delivery cost to send it to you for, right?
00:29:38.400 --> 00:29:48.799
And so those are kinds of things that we want to show you when you hit add to card as well, because uh you might say, like, oh, delivers in three days, and that could depend on where it is in the country and which warehouse it's filling from.
00:29:48.880 --> 00:29:54.240
So again, lots of interesting problems as we as we navigate through like something that looks super simple, which is like ships and create eggs.
00:29:54.559 --> 00:29:55.279
Yeah, I know.
00:29:55.359 --> 00:30:05.839
It it it all seems so simple, but like you said, that parachute or that skims item, it might be in n warehouses across the planet, which one has it in inventory, what's the shipping fees for each one?
00:30:06.079 --> 00:30:08.960
How does it actually get off the shelves into the truck?
00:30:09.119 --> 00:30:14.960
I'm gonna do a whole episode on that because that's a whole different discussion about robots and pick and pack and all sorts of fun stuff.
00:30:15.039 --> 00:30:20.480
You know, I don't think we have time to talk about that today, but that's a whole different topic, which is just fascinating.
00:30:20.880 --> 00:30:30.079
Yeah, yeah, I'll say each each step of the process has its like green path flow, which is super easy and and flows through it.
00:30:30.160 --> 00:30:38.640
Then it has like more like we didn't talk about like checkout shoes and like how do we think about having like, you know, like here you think about this like buying tickets for Taylor Swift concert, right?
00:30:38.720 --> 00:30:45.119
What about buying like again, Kim Kardashian, like apparel and like having a hundred thousand people try to buy at the same time?
00:30:45.200 --> 00:30:49.039
So lots of complexities can occur as the as the stack gets more helpful.
00:30:49.440 --> 00:30:52.799
And then, you know, since we're here in 2026, we gotta talk about AI.
00:30:52.880 --> 00:30:57.759
So now you've mentioned that you know, bots are buying on behalf of people, agents are buying on behalf of people.
00:30:57.920 --> 00:30:59.519
How does that throw itself into the mix?
00:30:59.599 --> 00:31:02.079
How do you think through that agentic commerce?
00:31:02.240 --> 00:31:07.119
If I'm sitting in ChatGPT and say, find me size 10 shoes of this style, go.
00:31:07.279 --> 00:31:09.440
Like, yeah, I know we're all working on that.
00:31:09.519 --> 00:31:10.720
So how does that actually happen?
00:31:11.039 --> 00:31:12.079
Yeah, there's two sides to it.
00:31:12.400 --> 00:31:19.759
There's the the there's the merchant side, which is like, how do I reduce the toil of the merchant, the business owner, when, hey, how do I update my tax settings?
00:31:19.920 --> 00:31:22.079
How should I think about ordering more inventory?
00:31:22.240 --> 00:31:25.599
Can you show me record of what the biggest selling items were for the last week?
00:31:25.759 --> 00:31:30.880
All those things are now enabled by AI inside of Shopify because you quickly ask sidekick these questions.
00:31:31.039 --> 00:31:32.480
And then as a buyer, you're right.
00:31:32.640 --> 00:31:35.039
Do I go to ChatGPT and say, show me shoes?
00:31:35.119 --> 00:31:38.640
Or do you say, hey, I'm getting interested in running, or I want to run a marathon?
00:31:38.799 --> 00:31:40.079
What equipment do I need?
00:31:40.240 --> 00:31:43.359
Or um, what should I buy my daughter for her grade eight graduation?
00:31:43.440 --> 00:31:44.640
And then it starts showing you products.
00:31:44.720 --> 00:31:48.240
So I think that there's very interesting discovery surfaces for that.
00:31:48.319 --> 00:32:07.440
There's obviously like word of mouth and meta and like Instagram and Facebook and and Google searches, but now AI is a new surface for you to like actually discover new products and potentially uh in a very detailed and narrow query, like show me shoes that are size 10 that are cool, or what that buy, you know, to for my hiking trip.
00:32:07.680 --> 00:32:15.599
Um, we're noticing obviously that more and more people are using AI, as you can imagine, and we're starting to see more uh of that kind of traffic appear.
00:32:15.680 --> 00:32:19.920
So we'll see, you know, what uh what size that channel ends up being over time.
00:32:20.319 --> 00:32:29.119
Yeah, I can even imagine going back to my lap last episode, sitting at a Waymo on a cell phone over 5G using Chat GPT to buy something.
00:32:29.279 --> 00:32:32.160
Like it's again how many how many layers of AI can we use?
00:32:32.240 --> 00:32:33.359
But it's all so cool.
00:32:33.599 --> 00:32:36.640
Yeah, and it's so interesting because also the pattern of the user, right?
00:32:36.720 --> 00:32:43.920
So for example, when I get a product recommendation, um, I tend to want to go to the main sites because I want to see like what else you got, right?
00:32:44.079 --> 00:32:45.680
If I'm into this product, what's yeah?
00:32:45.839 --> 00:32:51.200
And then other people we're like, hey, I I you you gave me the exact product, just buy now, right from that surface.
00:32:51.279 --> 00:33:03.119
So I think that's gonna be interesting to see um the various modalities of like just buy it now versus like, hey, like, you know, kind of like one-click buy versus like, hey, I want to see what else you have, what are the colors, what are the sizes before I purchase.
00:33:03.440 --> 00:33:10.640
Yeah, I remember we used to talk about people walking by a store and like literally taking a picture of an item in the window and just saying, just buy me one of these and have it shipped to my ass.
00:33:10.880 --> 00:33:12.319
I don't even want to go in the store.
00:33:12.480 --> 00:33:15.599
And other people might want to browse the store for a while, right?
00:33:15.920 --> 00:33:16.720
Yeah, exactly.
00:33:16.880 --> 00:33:21.039
So you might the difference is like you could also walk by the store and be like, I want that exact shirt.
00:33:21.279 --> 00:33:25.039
Or I go into the store and you see an shirt you like and raised like, oh, that one's nice and that one's nice.
00:33:25.119 --> 00:33:30.160
And so like you kind of like you know, you start figuring out um what you want to buy from that experience of like browsing.
00:33:30.880 --> 00:33:31.200
Yeah.
00:33:31.599 --> 00:33:41.200
I mean, what do you think that is like the is we we've talked about a bunch of different things here, but what do you think is the one thing that people underestimate about commerce in terms of its complexity?
00:33:41.599 --> 00:33:45.119
What's the one thing we're like no one understands how complex this really is.
00:33:45.680 --> 00:33:48.240
What is it that like stands out to you in that in that question?
00:33:48.960 --> 00:33:56.880
Yeah, I mean, I think one thing that's interesting is is the like the uh like it looks easy and I think it should feel easy.
00:33:57.200 --> 00:34:08.239
Um, but the whole point of like why like a Shopify or other services exist is because we're trying to make make the time that you spend on your business focused on the things that are value add for you.
00:34:08.320 --> 00:34:11.119
So if you're like you're building, we let's go back to shoes.
00:34:11.199 --> 00:34:24.000
Let's say you're a bespoke shoe manufacturer, we want you to spend all your time uh like making amazing shoes, researching uh materials and designs and spending all your time there, and talking to customers and telling your story.
00:34:24.079 --> 00:34:24.639
Like that's it.
00:34:24.800 --> 00:34:39.039
We don't want you have to spend time thinking about like, hey, is my site up and how do I configure like point of sale and how do I think about um bots and how do I fulfill with the right shipping labels and how do I think about inventory and choose shipping and duties and taxes and loyalty and all that stuff.
00:34:39.119 --> 00:34:41.039
Like, we want to take a lot of that toil away from you.
00:34:41.199 --> 00:34:51.199
Of course, we want to customize it, but our goal is to like let me spend most of your time on your business so we can uh take that toil and and and do what we're really good at, which is the infrastructure side.
00:34:51.360 --> 00:34:53.360
So I think people underestimate.
00:34:53.440 --> 00:34:56.880
Like I had a I talked to this uh this person who was like, I'm gonna bytecode my storefront.
00:34:56.960 --> 00:34:57.360
I'm like, great.
00:34:57.440 --> 00:35:01.039
They bytecoded it all, they hooked it up, and then they go, This is so cool.
00:35:01.199 --> 00:35:09.840
And I was able to take sales, and then they're like, wait a sec, how do I do fulfillment and orders and tracking and inventory and sales and and then shit, how do I file taxes and like all that stuff?
00:35:10.000 --> 00:35:12.639
And they messaged me and they go, Oh, this is why Shamfy exists.
00:35:12.719 --> 00:35:19.440
Like you can, of course, bytecode, you can still use your bytecoded site and headlessly and um you know set up the APIs to hit Shampai in the back end.
00:35:19.679 --> 00:35:24.880
But the whole reason for the rest of it is because we're trying to make that easy for everybody such that they can focus on their business.
00:35:24.960 --> 00:35:31.920
And now this person is focusing on, unfortunately, taxes and overdose and fulfillment and because they've just byte coded a site.
00:35:32.000 --> 00:35:37.039
So I think I think I think there's a place and time to kind of figure out where you want to spend uh your resources.
00:35:37.280 --> 00:35:39.199
And so if you're gonna invite people to site, cool.
00:35:39.360 --> 00:35:42.480
Just have the APIs hit job and find the backgrounds, you don't have to worry about the rest.
00:35:42.719 --> 00:35:45.679
But um, I think people underestimate the the complexity of commerce.
00:35:45.760 --> 00:35:51.199
The other thing I will say is um just checkout itself is so interesting, right?
00:35:51.360 --> 00:35:56.559
Like I've managed to buy it now versus the the beauty of an entire checkout experience flowing through.
00:35:56.639 --> 00:36:07.519
And so we developed UCP with Google because we felt like when you go to whether it's ChatGPT or Gemini or Cloud or anywhere in the new LLM world and you see a checkout, it should reflect the brand.
00:36:07.679 --> 00:36:14.559
It should be branded, it should have uh complexities of shipping and duties and taxes and all that stuff flow through so you get the full experience.
00:36:14.719 --> 00:36:19.519
Just like you go into a store, you walk into Walmart or you walk into Ala Yoda, they feel different.
00:36:19.840 --> 00:36:22.639
And so that experience should feel different on Run's.
00:36:23.360 --> 00:36:24.559
No, totally makes sense.
00:36:24.719 --> 00:36:25.440
Totally makes sense.
00:36:25.599 --> 00:36:27.119
Well, Farn, this has been fascinating.
00:36:27.199 --> 00:36:28.960
Thanks again, buddy, for joining joining me.
00:36:29.360 --> 00:36:30.159
Love chatting with you.
00:36:30.320 --> 00:36:31.280
Used to do this all the time.
00:36:31.760 --> 00:36:32.239
Uh yeah.
00:36:32.880 --> 00:36:36.639
Thank you everyone for listening to this episode of Pixels to Packages.
00:36:36.800 --> 00:36:41.199
Next time, we're gonna probably talk a little bit more about AI because that seems to be the topic desire.
00:36:41.440 --> 00:36:50.320
A little bit more about logistics and continue to figure out how we get those pixels that Shopify serves that all these merchants uh present to our screens, turning more into packages.
00:36:51.920 --> 00:36:52.480
Thanks for hunting.
00:36:52.719 --> 00:36:53.199
See y'all soon.
00:00:02.160 --> 00:00:03.520
Dad, how did this get here?
00:00:04.320 --> 00:00:06.480
Didn't we just order it like a few hours ago?
00:00:07.919 --> 00:00:14.080
When my older daughter asked that, I stopped for a second because it is a simple question with a surprisingly deep answer.
00:00:14.640 --> 00:00:24.640
Somewhere between a tap on a screen and a box on our doorstep, invisible systems spin up, data races across networks, decisions get made in milliseconds, and the physical world moves.
00:00:25.359 --> 00:00:31.839
It's fascinating to think what happens when you stream a song, book a hotel room, reserve a flight, or open an app and just expect it to work.
00:00:32.560 --> 00:00:35.759
All this technology is so fun, and I love working in this industry.
00:00:36.960 --> 00:00:39.759
I've spent my career building software and systems that make up the internet.
00:00:40.719 --> 00:00:46.240
I was CTO at Shopify and ServiceNow, NSVP at Slack, and really engineered Cisco Systems.
00:00:46.640 --> 00:00:48.159
And now I'm CTO at Webflow.
00:00:48.799 --> 00:00:53.840
I've helped build data centers, protocols, software and services, and led global teams along the way.
00:00:55.039 --> 00:01:04.879
This podcast is for anyone who wants to understand how our modern world actually works, not just shopping and delivery, but the invisible machinery behind nearly everything we do.
00:01:05.519 --> 00:01:08.719
It is for anyone who's ever wondered how did this get here?
00:01:09.040 --> 00:01:10.400
Or how did that actually happen?
00:01:11.280 --> 00:01:17.599
I'm excited to take you on a journey to take these layers of technology apart and explain them in a clear, grounded way.
00:01:17.760 --> 00:01:22.159
You probably think you connect to Wi-Fi, you're on the internet, and away you go.
00:01:22.959 --> 00:01:24.879
Well, I wish it was that simple.
00:01:25.120 --> 00:01:28.640
I'm Al Meinwand and welcome to Pixels to Packages.
00:01:29.120 --> 00:01:29.840
All right, everyone.
00:01:30.000 --> 00:01:33.040
Welcome back to Pixels to Packages.
00:01:33.120 --> 00:01:36.480
I'm here today, very excited, my friend Farhan Tower.
00:01:36.640 --> 00:01:37.200
Hey Farhan.
00:01:37.920 --> 00:01:38.799
Hey, how are you doing?
00:01:39.280 --> 00:01:39.599
Good.
00:01:39.760 --> 00:01:46.000
So those of you who don't know, Farhan and I worked together for a while at Shopify, know each other pretty well, and it's just really awesome to have you here.
00:01:46.560 --> 00:01:48.799
So today we actually get to talk about commerce.
00:01:48.879 --> 00:01:53.680
Because what I've been doing so far is I've sort of like been laying the groundwork for actually talking about commerce.
00:01:54.079 --> 00:01:57.040
I talked about like DNS and packets and the internet.
00:01:57.439 --> 00:02:02.879
I talked about how browsers work and box model and CSS and JavaScript and HTML.
00:02:03.120 --> 00:02:07.840
I talked about distributive systems and data centers and load balancers and CDNs.
00:02:08.000 --> 00:02:09.680
And I kind of wrapped it all up last time.
00:02:09.759 --> 00:02:10.960
I had this really fun episode.
00:02:11.439 --> 00:02:12.560
You gotta go listen to it, buddy.
00:02:12.800 --> 00:02:17.599
It was um I was in a Waymo connected to cloud code.
00:02:17.759 --> 00:02:21.039
So I was in AI using AI to push AI.
00:02:21.280 --> 00:02:24.800
And that was like this very like recursive sort of thing talking about AI.
00:02:24.960 --> 00:02:33.360
So it was a really fun thing to think about like what was happening inside the Waymo, what was happening inside cloud code, how the inference models were working, how it all used the internet plus cellular.
00:02:33.520 --> 00:02:35.280
I just tried to tie it all together.
00:02:35.520 --> 00:02:41.599
But I know what people who have been listening to this podcast really want to talk about is commerce.
00:02:41.919 --> 00:02:45.599
So tell us a little bit about your role and let's get started.
00:02:45.919 --> 00:02:46.240
Sure.
00:02:46.400 --> 00:02:55.840
Yeah, so it's great that you did all those foundational episodes because we use an entire set of uh uh infrastructure to enable all of the things we do at JavaFy.
00:02:56.000 --> 00:03:17.919
And yeah, so my role is um I'm head of engineering, I've been here seven years, uh, worked on various things from like in-person commerce, like Bueno Sale, to uh online and obviously the growth of online commerce, spent a lot of time in infrastructure um and core engineering, and now of course in AI and AI enablement, but also how do we bring AI to our buyers and our merchants so that they can remove 12 from nowhere close.
00:03:18.319 --> 00:03:21.759
So um happy to see you again and happy to have a conversation wherever you want to go.
00:03:21.840 --> 00:03:27.120
And actually, well, I'm interested in your Waymo thing because were you using cloud code from like mobile or can you pull your laptop?
00:03:27.280 --> 00:03:39.360
Yeah, yeah, I actually uh I uh cooked it up for my ATT phone and I basically was sitting on a laptop, tethered to my 5G, driving through San Francisco in a Waymo.
00:03:39.599 --> 00:03:41.280
So it was like AI and AI and AI.
00:03:41.360 --> 00:03:43.520
It was like it was like you know, inception with AI.
00:03:43.599 --> 00:03:44.240
It's kind of fun.
00:03:44.400 --> 00:03:44.960
I love it.
00:03:45.120 --> 00:03:50.960
It's very so what I know the people are pretty curious about is let's say you hit a Shopify store.
00:03:51.280 --> 00:03:54.000
So pick your favorite store and you hit a short store.
00:03:54.319 --> 00:03:56.159
What actually happens at that point?
00:03:56.319 --> 00:04:02.639
I mean, I know we go through the internet, we hit a load balancer, we have something in your case on Google, you know, Google Cloud.
00:04:02.800 --> 00:04:06.240
But then actually, what happens on the front end and the back end?
00:04:06.319 --> 00:04:08.319
Can you sort of start to tell us that story?
00:04:08.639 --> 00:04:09.360
Yeah, sure.
00:04:09.520 --> 00:04:11.599
So when you are, so you're right.
00:04:11.680 --> 00:04:14.719
So let's let's talk about like uh you know online commerce, right?
00:04:14.800 --> 00:04:15.759
Because this will be awful.
00:04:16.000 --> 00:04:18.000
Go to a you go into a store and you transact there.
00:04:18.160 --> 00:04:32.879
But for online commerce, typically what happens is you have either someone has told you about a brand, you already know about a brand, you might be using the shop app to discover a brand, you might do a Google search or a meta search or Instagram and be like, hey, I'm interested in buying something from the store, just browsing.
00:04:33.120 --> 00:04:37.199
And so what happens is you will go to what we call the storefront.
00:04:37.439 --> 00:04:40.879
It's a place where it's uh surf from our CDM.
00:04:41.040 --> 00:04:42.560
We probably talked about CDMs.
00:04:42.720 --> 00:04:44.079
And yeah, okay.
00:04:44.399 --> 00:04:46.319
And it's typically like like read-only, right?
00:04:46.399 --> 00:04:47.360
Because you're just browsing.
00:04:47.439 --> 00:04:49.680
You might be like clicking on the colors that an item is.
00:04:49.759 --> 00:04:52.720
Let's say you're interested in like shorts, like, okay, what colors does it come in?
00:04:52.879 --> 00:04:53.519
What sizes?
00:04:53.759 --> 00:04:54.800
Can I look at other items?
00:04:54.959 --> 00:04:56.879
So I'm on like, you know, I'm in a web experience.
00:04:57.040 --> 00:05:08.879
I might be on my phone or on a desktop, and I'm just browsing and I'm taking a look at collections, maybe I'm getting recommendations, maybe I'm looking at uh there's also like you know, 3D, right?
00:05:08.959 --> 00:05:13.360
You might be looking at a model and be like, hey, what's the uh size of this thing in my environments?
00:05:13.600 --> 00:05:16.800
Maybe you're using AR, but all those things are served by our storefront.
00:05:16.959 --> 00:05:20.240
And the way that works is it's actually distributed all over the world.
00:05:20.319 --> 00:05:21.920
So you have a good experience no matter where you are.
00:05:22.079 --> 00:05:33.680
So if you are in Australia or you're in the US, we are hopefully giving you a good experience because our CDN has distributed all of the imagery and text and data in a way that allows it to be very close to the buyer.
00:05:33.759 --> 00:05:40.399
So if you're in Australia, you're hitting like a something close to where you are and you're getting those return packets uh from a close location.
00:05:40.560 --> 00:05:43.759
And then you are you're, you know, you I mean, you sometimes happens too.
00:05:43.839 --> 00:05:53.519
You might start in Australia and then get on a plane and then go to uh, you know, New York, and in which case then you'll hopefully be routed to a New York server, and now you're still having a good and fast encouraging.
00:05:53.759 --> 00:06:01.759
And what's cool about that is because it's read-only, we don't have to store that much information about you to kind of move things around, right?
00:06:01.920 --> 00:06:06.399
Because um, you haven't really, you haven't done like an operation like in like an add-to-cart yet.
00:06:06.480 --> 00:06:18.800
You're just like browsing, and of course, we kind of give you a good experience and give you a good personalization recommendation, but you haven't really, if you haven't signed in or you haven't hit add-to-cart, we are in a in a state where we can kind of serve you from anywhere.
00:06:18.959 --> 00:06:29.600
So another interesting thing from a resiliency perspective is if something happens, the server goes down, or there's an infrastructure uh problem somewhere down the stack, we can just serve it from somewhere else.
00:06:29.680 --> 00:06:29.839
Right?
00:06:29.920 --> 00:06:32.959
So if the New York stuff goes down, we can serve you from somewhere close.
00:06:33.120 --> 00:06:39.600
Uh worst case, we can serve you from all across the country, like California, but at least you're still able to like browse and mob around.
00:06:40.000 --> 00:06:43.279
So that's like a storefront, and it's very much like read-only.
00:06:43.360 --> 00:06:45.439
And there's lots of obviously complexities there.
00:06:45.519 --> 00:06:56.480
So for example, um, if we have like a bot attack or a flash sale, which is when, you know, imagine like a Kim Kardashian tweets out, I've got like new um new apparel on skims.
00:06:56.639 --> 00:07:08.800
We might have like a thundering herd come at us, and we use a combination of signals and our CDN to enable that to be a good experience uh for humans and also um for bots, because we have bots that uh also buy.
00:07:08.959 --> 00:07:16.959
And potentially we want to have a good lane for both of those types of users to um be able to hit our storefronts and see what's available on the stores.
00:07:17.360 --> 00:07:19.680
So I'm saying I'm sending it on a lunar browser.
00:07:19.839 --> 00:07:23.759
I hit skims, maybe not me, but somebody hit skims.
00:07:24.079 --> 00:07:31.600
And at that particular point in time, you're routing across the internet, across the fiber, into a data center, into GCP, across the load balancer, hitting your storefront.
00:07:31.759 --> 00:07:33.439
I know it's called storefront renderer.
00:07:33.600 --> 00:07:33.680
Yeah.
00:07:33.839 --> 00:07:35.680
At that particular point, you mentioned something interesting.
00:07:35.759 --> 00:07:37.680
You mentioned get recommendations.
00:07:37.920 --> 00:07:44.160
Is that a different call where like the storefront will now call to a different service through a different network, a different load balancer?
00:07:44.240 --> 00:07:45.759
And and how does that actually work?
00:07:46.000 --> 00:07:53.519
Yeah, so so basically we've got uh the storefront, and then there are things that require more uh intense compute, right?
00:07:53.600 --> 00:08:04.480
So collections is one because you might have a selection called show me everything, you know, like on your as a merchant, you might say, I want to have a collection that's um all new items or all blue items or all items under$10.
00:08:05.040 --> 00:08:07.279
And so the collection might be more compute intensive.
00:08:07.439 --> 00:08:10.079
You might even have smart collections, which lets you do things automatically.
00:08:10.240 --> 00:08:19.519
And so that's an example of another call to a uh to another endpoint inside of Shopify that would return the products uh that may make sense for you.
00:08:19.680 --> 00:08:21.199
It might be recommendations.
00:08:21.439 --> 00:08:26.399
It might be uh, hey, based because maybe you sign in and you're like, oh, we already know you.
00:08:26.480 --> 00:08:30.560
And so we know your size and we know the colors you like or the past products you purchased.
00:08:30.720 --> 00:08:33.600
That would be another endpoint inside of Shopify that would be called.
00:08:33.759 --> 00:08:50.159
So I think that there's easy ways for um us to kind of give you a better experience, but that does require more compute because it's not just serving like you and I hit skims at the beginning, and we're not signed in and there's no you know, cookies, we we should get the exact same experience and we can get hit from hit any server.
00:08:50.480 --> 00:08:58.559
But you're signed in, or if I'm uh already known to that site, there's going to be slight preferential treatment for one way or another.
00:08:58.720 --> 00:09:04.000
And you want that to be happening because you want to have a good experience as a user, and so we have more information about you.
00:09:04.080 --> 00:09:05.440
We can uh tailor the experience.
00:09:05.679 --> 00:09:08.000
Might say, oh, let's show let's show men's items.
00:09:08.159 --> 00:09:09.600
Uh well, maybe to both of us.
00:09:09.679 --> 00:09:16.960
But yeah, uh you've already maybe you want he wants to show you pants that are longer, and uh, I'm in Toronto, maybe he wants to show me things that are more for warm weather.
00:09:17.120 --> 00:09:25.039
And so those are the kinds of things that we can do um once we hit the site, and we can start saying, Okay, well, let's let's try to tailor the experience.
00:09:25.360 --> 00:09:34.159
Yeah, so to put all that together, you hit the site, you think about the recommendations, you think about the cookies and maybe the user preferences, the query parameters for that site.
00:09:34.320 --> 00:09:34.480
Yep.
00:09:34.639 --> 00:09:50.320
That builds the HTML, which comes back across the internet, back to the browser, renders with a box model, and like the boxes on my screen might be different than the boxes on your screen, like you said, because you're getting warmer weather here in Toronto, I'm getting you know cooler weather because I'm in San Francisco or something like that.
00:09:50.559 --> 00:09:51.440
Yep, exactly.
00:09:51.759 --> 00:09:56.320
So those like the more information uh that the user can provide, right?
00:09:56.399 --> 00:10:05.360
Because sometimes you go to the site is you actually click on men's or you click on items under$10, which might be part of a smart collection, and then we can do calculations and serve it to.
00:10:05.519 --> 00:10:17.360
And other times we can do it automatically is you might sign in and we now are saying, okay, let's preferentially give you a different experience because you've now told us uh who you are, and maybe we can use your past purchases on that site for that reason.
00:10:17.679 --> 00:10:18.320
Very cool.
00:10:18.639 --> 00:10:26.480
You know, you know, I've down at the I've turned out the browser, I've turned out my app on my phone, I've got a collection, I'm ready to go buy something now, and I hit add to cart.
00:10:26.720 --> 00:10:28.080
What actually happens there?
00:10:28.240 --> 00:10:30.240
Because that's like the next step in the transaction, right?
00:10:30.320 --> 00:10:34.320
Like it's the store from this one side, then there's cart with the cart promise, right?
00:10:34.399 --> 00:10:35.759
So how does that doesn't actually work?
00:10:35.919 --> 00:10:52.799
Yeah, so actually just one step before that is like there's like we will use um inventory signals and to actually automatically like box out things that are not available because we don't want you to add to cart like something that's you say, okay, I want to get these shoes in size 10, and then you press it and it's like, oh, not available.
00:10:53.200 --> 00:10:55.279
We'd rather show it to you more up front.
00:10:55.519 --> 00:11:02.000
So usually you can filter and say something like, Hey, uh, I'm looking for this size, and maybe I only want to see things that are in stock.
00:11:02.320 --> 00:11:09.600
Or um when you get to that product details page, we call it a PDP, you might already see that size 10 shoe is next out for that color.
00:11:09.679 --> 00:11:12.240
So you might say, Oh, I want white because they don't have blue.
00:11:12.399 --> 00:11:13.120
Oh, they don't have blue.
00:11:13.200 --> 00:11:14.240
Okay, I want to have black.
00:11:14.320 --> 00:11:15.120
Oh, they do have it.
00:11:15.200 --> 00:11:16.799
Now you click add to cart, right?
00:11:16.879 --> 00:11:18.080
So we're getting information.
00:11:18.159 --> 00:11:39.519
And now you can add the cart, you're now doing um an operation that takes you out of like read-only mode into uh uh like a like a set like a session persistence mode because now if you continue shopping or you move around the site, you notice that there are your little uh shopping cart has a little one beside it because now you've added something to the cart.
00:11:39.679 --> 00:11:50.480
So the way that works is we actually can store in your session, so on your in your uh in your browser, actually, and the cookie, that you have added uh this item to your cart.
00:11:50.639 --> 00:12:09.360
And if you go to other parts of the site, if you even go away for a certain period, you might like close to your tab, come back uh let's say days or weeks later, and you go to the same site, you will hopefully see that that item is still in your cart because we noticed that some people, obviously, people want to browse, they want to take time to think about something.
00:12:09.440 --> 00:12:12.879
They come back, like, oh yeah, I wanted to buy those shorts from Skims.
00:12:13.360 --> 00:12:19.279
Let me go back to Skims and they realize that there's some things in their cart from last time, and they go, Oh yeah, I never completed my transaction.
00:12:19.440 --> 00:12:24.320
Maybe they're waiting for free shipping, maybe they're waiting for a sale, maybe they're waiting to bundle more items.
00:12:24.480 --> 00:12:25.440
And so that can happen.
00:12:25.519 --> 00:12:43.279
The other thing that happens in some cases is merchants might use a tool to send you an email because maybe you've signed in, you've added something to your cart, and it might say, Hey, don't forget you've left this in your cart, and I know that I'm guilty of uh of doing that, and then I do I go, oh yeah, and then I go back and actually go back to the store and actually buy it.
00:12:43.360 --> 00:12:49.919
And it tends to be a good loop uh where they might send you an email, and then from the email you might go back to the storefront and then buy that item.
00:12:50.080 --> 00:12:52.720
So you're if it's I've actually gotten texted in the past too.
00:12:52.960 --> 00:12:53.759
Yeah, it's true.
00:12:54.000 --> 00:12:57.679
Yeah, the storefront will the the store will text me, hey, you left this behind, go check it out.
00:12:57.840 --> 00:12:58.000
Yeah.
00:12:58.159 --> 00:12:58.960
So exactly.
00:12:59.039 --> 00:13:07.440
And because because it's known to you, uh, you know, you've already signed in, or other signals can tell you that I wait a sec, you might want to uh complete your transaction.
00:13:07.600 --> 00:13:17.360
So once you add it to cart, this is where it gets tricky because imagine you leave the store and your cookie expires, which case you come back and now you have to kind of start that transaction over.
00:13:17.600 --> 00:13:20.559
Or you have the example, you're in Australia and you get on a plane.
00:13:20.720 --> 00:13:28.320
If you get in Australia and you get on a plane, we might not automatically be able to find your cart because we are routing you now to a closer region.
00:13:28.720 --> 00:13:37.600
So we and that's like a thing that we choose to do because we don't wanna, I don't want to have to look across all sessions across all the world because you're in Europe to determine whether your cart was there or not.
00:13:37.679 --> 00:13:38.559
And that's our decision.
00:13:38.720 --> 00:13:46.559
Or in some cases, maybe we uh decide we do want to do that, which ends up being you know a more expensive operation, but it might be better for the user if we did.
00:13:46.720 --> 00:13:50.720
And of course, as you know, cookies are on your local machine.
00:13:50.960 --> 00:13:56.559
They have a cookie uh expiry based on potentially what's actually in your browser.
00:13:56.720 --> 00:14:09.440
You might actually go in and delete your cookies or get a new machine, switch from desktop to mobile, and for those things, we can sometimes identify, help identify, hey, your cart is still here on this store, and other times we can't.
00:14:09.600 --> 00:14:12.639
So sometimes you're like, wow, this I went to my phone and my cart's still there.
00:14:12.720 --> 00:14:15.279
And other times you're like, oh, I went to my phone and the cart's not there.
00:14:15.440 --> 00:14:27.200
Or in our case, with the shop app, um, which is our uh consumer offering, we can we can um actually help you see uh your cart from a store in the shop app, which helps you uh convert as well.
00:14:27.360 --> 00:14:57.600
And so there are ways that we can kind of give you a good experience based on this now like read, like this write operation that you've done, which is adds something to your and what's fascinating to me about that is like different clients, you know, the phone, the app, the browser, the desktop browser, the laptop browser, they're all sort of connecting into the same back end, and they have that same knowledge of who you are, assumably passing some sort of user, some sort of persistence key that says this cart belongs to Alan, this cart belongs to Farhan, and this is what to bring up when they go back into the app.
00:14:57.759 --> 00:15:06.399
So all that again is happening over HML, over TCP, going into the servers, and it's all like so fast that that's the part that's just fascinating me.
00:15:06.480 --> 00:15:11.360
You know, like you know, this whole podcast, my daughter was like, I ordered something and it showed up an hour later.
00:15:11.440 --> 00:15:12.639
How did that actually happen?
00:15:12.960 --> 00:15:17.840
And just thinking about the the magnitude of all this over the scale of, I don't know, the internet.
00:15:18.159 --> 00:15:19.440
It's just just wild to me.
00:15:19.519 --> 00:15:20.879
It's just really real fun here.
00:15:21.200 --> 00:15:24.639
And there's interesting problems that we as like nerds need to think about.
00:15:24.720 --> 00:15:29.600
So, for example, let's say there's one wear of shorts and now I add it to the cart.
00:15:30.000 --> 00:15:36.080
And then let's say I haven't done anything, and now somebody else actually finds the same pair of shorts and adds it to their cards.
00:15:36.240 --> 00:15:40.399
Because in uh you know reality, those shorts are not sold yet.
00:15:40.639 --> 00:15:43.600
So there's kind of different ways to think about that transaction.
00:15:43.840 --> 00:15:46.639
One way is when I add it to the cart, I can reserve it.
00:15:46.720 --> 00:15:54.000
So if you ever bought tickets from like Ticketmaster, you before you complete the transaction, it'll say, These tickets are yours for the next 10 minutes.
00:15:54.240 --> 00:15:54.559
Yeah, yeah.
00:15:54.639 --> 00:15:57.039
You have to rush to get your credit card to pay from the lick, right?
00:15:57.440 --> 00:15:59.679
You have 10 minutes because it's reserved it for you.
00:15:59.840 --> 00:16:08.000
And for us, we have different strategies that we can think about um where we are like, should we um optimistically lock, right?
00:16:08.080 --> 00:16:11.679
Or I guess tell pessimistic locking because you're locking in in advance, right?
00:16:11.919 --> 00:16:20.559
Uh, or do I want to just be like, okay, I'm okay to tell the user if they get further down the path that it's it's gone, it's been gone since the time you put it in your cart.
00:16:20.720 --> 00:16:24.720
So I put it in my cart, I waited too long, someone else put in their cart and they checked out.
00:16:24.960 --> 00:16:32.720
Yep, now when I go to check out the that the tickets are gone, in my case, the shoes are gone, and now I have to make sure that I'm uh faster next time, right?
00:16:32.799 --> 00:16:39.600
So I just keep picturing like a I just keep picturing like a Black Friday sale and somebody literally taking something out of somebody else's cart along the way.
00:16:39.919 --> 00:16:40.000
Right.
00:16:40.480 --> 00:16:40.720
Same thing.
00:16:40.799 --> 00:16:41.279
You're right, right.
00:16:41.360 --> 00:16:45.519
You're in the you're in the mall and so and you have something in your cart and somebody comes over and takes it from your shopping cart.
00:16:45.679 --> 00:16:48.639
Like that was that's exactly what's happening here.
00:16:48.879 --> 00:16:52.080
And and depending on the brand, it might want to ask you more questions.
00:16:52.159 --> 00:16:56.720
So for example, they might ask you during the cart ad phase, hey, what's your uh post-code?
00:16:56.799 --> 00:16:57.519
What's your zip code?
00:16:57.679 --> 00:17:02.000
And the reason for that is it wanna show you um maybe it's a free shipping offer.
00:17:02.159 --> 00:17:08.000
Maybe it's um, hey, this they want to tune your inventory to some uh warehouse that's closer to you.
00:17:08.240 --> 00:17:13.119
They might want to estimate shipping costs, they might want to estimate taxes.
00:17:13.279 --> 00:17:21.279
So there's a bunch of things, again, depending on the brand, might ask you at that stage, or they might ask you later when you get to the actual checkout, which we will talk about.
00:17:21.440 --> 00:17:27.680
But right now you're in like the I'm I'm in a mall, I was browsing before, now I've got a shopping cart, I'm putting stuff in it.
00:17:27.759 --> 00:17:30.960
And that's what this uh that's why it actually, if you look online, it's shopping cart.
00:17:31.039 --> 00:17:36.960
It's literally the you know, skew morphic design of like, it's a shopping cart, it should feel like a shopping cart, it's now like in my car.
00:17:37.680 --> 00:17:48.160
What's fascinating to me is depending on where I am, and more specifically, depending on where the internet routes me, I might get different mall items, right?
00:17:48.240 --> 00:18:00.640
I might be able to think, you know, I'm sitting in San Francisco, and if I'm using a VPN or I'm using some sort of other connection, or T Speed connection pops up in New York, Shopify might think I'm in a New York mall as opposed to if I'm in a San Francisco mall.
00:18:00.799 --> 00:18:06.559
And that could determine the inventory I see as well as the shipping rates I'd see and all sorts of other things.
00:18:06.640 --> 00:18:09.680
So hey, you can we're you could use a more people.
00:18:09.920 --> 00:18:16.160
For example, uh in Shopify, you might say, Hey, for our New York customers, I want to give them a specific promotion.
00:18:16.400 --> 00:18:16.559
Right.
00:18:16.720 --> 00:18:16.960
Right?
00:18:17.039 --> 00:18:28.319
And and we could do things like we can offer you a bundle discount, we could offer you something, might be able to have a little pop-up and say, Hey, um, for people in New York, we're offering, like, you know, you can buy online and pick it up in store.
00:18:28.480 --> 00:18:29.680
Maybe you want it today.
00:18:29.920 --> 00:18:34.720
Maybe you want to put it in your cart, but I guess you want it today, and it'll say, Oh, let me just pick it up in store.
00:18:34.799 --> 00:18:36.079
And the store is like near you.
00:18:36.160 --> 00:18:42.640
So you might like buy, and I've done this before too, where I buy something, uh, get like an order ID, and then I go to the store and I pick it up the same day.
00:18:42.799 --> 00:18:44.319
You could do the opposite, by the way.
00:18:44.480 --> 00:18:48.960
You can go in store and say, I'm in store, you don't have the thing, or it's too big, ship it to my house.
00:18:49.119 --> 00:18:52.960
And so there's so many different um combinations of things you could do there.
00:18:53.359 --> 00:18:54.640
All right, so we got a cart.
00:18:54.720 --> 00:18:56.640
It kind of depends on where we are on the internet.
00:18:56.799 --> 00:18:58.559
We're connected over the store via the internet.
00:18:58.799 --> 00:19:06.319
We've gotten our browser, we've gotten our HTML back, we've been served up by the CDN, the storefront renderer, and now we're ready to check out.
00:19:06.640 --> 00:19:07.119
Yes.
00:19:07.359 --> 00:19:08.400
So tell me about that.
00:19:08.559 --> 00:19:10.160
Because that seems to be like the next logical step.
00:19:10.400 --> 00:19:13.359
Pull my wallet out, my my virtual wallet out, and I'm ready to go.
00:19:13.680 --> 00:19:20.480
Yeah, and so now you've got uh one or more items in your cart, and you're ready to go to the next phase, which is like I actually want to check out.
00:19:20.640 --> 00:19:24.480
And so this is like in the physical world, this is you walking up to the cashier, right?
00:19:24.720 --> 00:19:30.000
And so what happens here is we now move into the checkout phase where we are doing a couple things.
00:19:30.240 --> 00:19:36.240
One, we want sometimes we there's a bunch of things happening at the browser level and a bunch of things happening at the server level.
00:19:36.480 --> 00:19:44.880
So one, we get to like a checkout page, and that checkout page is one typically where it's like, I need your information, name, address, payment, etc.
00:19:45.200 --> 00:19:49.119
But I also and I also want you to confirm everything, like shipping and everything that's in your card.
00:19:49.279 --> 00:19:54.720
And as and the things that happen to the browser are it might want to pre-fill information.
00:19:54.799 --> 00:20:01.279
So you know when you go to a website, you protect the information and it says, oh, you start to be A and it's an online one, it just completes it for you.
00:20:01.440 --> 00:20:05.359
That's happening on your on your browser because it saved information locally.
00:20:05.599 --> 00:20:10.720
It may also save your credit card locally because it stores it in a secure location inside the browser.
00:20:10.960 --> 00:20:15.119
It might say, Oh, do you want to use this credit card that I have on file?
00:20:15.279 --> 00:20:17.519
You might choose an accelerated payment option.
00:20:17.680 --> 00:20:19.119
Shock pay is one example.
00:20:19.359 --> 00:20:24.240
So you go there, it says, Oh, Alan, you bought from a Shopify store before and you're a Shock Pay user.
00:20:24.559 --> 00:20:34.880
Can I um help you by uh pre-filling your address, pre-filling your credit card, and you can just hit um pay, pay now, and it quickly accelerates you through that process.
00:20:34.960 --> 00:20:37.759
It'll track it in the shop app and kind of give you that great experience.
00:20:37.920 --> 00:20:38.720
You might want to use it.
00:20:38.880 --> 00:20:42.559
By the way, that is a really, really powerful and dangerous button.
00:20:42.720 --> 00:20:44.160
I use it all the time.
00:20:44.480 --> 00:21:00.559
Well, what you learned and what the data shows is that even if you don't use Shop Pay, but the purple button is there, you feel trust with the brand for like, actually, I know this is a legit merchant because uh it's got a purple button and I uh I feel good even if I don't use Shop Pay.
00:21:00.799 --> 00:21:02.400
And then you might want to use another payment method.
00:21:02.480 --> 00:21:13.680
Maybe you're a PayPal fan or a Google Pay or Apple Pay and you like that experience and you want to use one of those uh payment providers, those typically are uh offered as well by the merchant, so you might want to use those, or you might be like, you know what?
00:21:13.839 --> 00:21:17.279
I'm uh this is a gift or a one-time purchase in the store.
00:21:17.440 --> 00:21:18.559
I want to check out as a guest.
00:21:18.640 --> 00:21:23.440
So yes, you've got to give you my email and address so that you can send me a transaction uh notification.
00:21:23.599 --> 00:21:30.160
But I do not want um an ongoing relationship with you because it's a one-time purchase for me, or the opposite.
00:21:30.799 --> 00:21:32.160
I want to sign up for your marketing.
00:21:32.240 --> 00:21:33.440
I'm gonna click on this button.
00:21:33.599 --> 00:21:37.200
I'm a big fan, I want to be on your mailing list, I want to join your loyalty program.
00:21:37.279 --> 00:21:43.920
Like it could be that version too, in which case you give it information and you give it all these permissions uh to uh give you all those things.
00:21:44.079 --> 00:21:45.279
So that's the page.
00:21:45.599 --> 00:21:56.640
So you've got you've filled in all your information, or you've gone through one of these accelerated uh methods, it shows you a final confirmation of everything in your cart and the taxes and duties and shipping and anything else that you might uh care about.
00:21:56.880 --> 00:21:58.079
You hit pay now.
00:21:58.319 --> 00:21:59.279
So what happens there?
00:21:59.440 --> 00:22:04.000
So what What happens is we go through what's called a checkout negotiation.
00:22:04.240 --> 00:22:09.920
This is the final step where we are converting your um your cart into an order.
00:22:10.079 --> 00:22:11.519
And there's lots of things that can happen here.
00:22:11.599 --> 00:22:17.200
One of the things we already mentioned, which is we have to for sure recheck if the inventory is still available.
00:22:17.440 --> 00:22:25.039
So even though we've done these checks, we still do one final check, which is why sometimes you're like, you get there and it's like, oh, it's no longer there.
00:22:25.279 --> 00:22:28.240
Um, this is the equivalent of someone taking it out of your cart.
00:22:28.400 --> 00:22:35.680
And uh because you were glad you had it, but actually it turns out like maybe it's maybe by the way, maybe some some stores actually share inventory with their store store.
00:22:35.839 --> 00:22:39.759
Maybe someone was in the physical store and bought the shoes, and now they don't have it available.
00:22:39.839 --> 00:22:44.160
And you know, if that system is one system, it'll decrement the uh inventory.
00:22:44.480 --> 00:22:48.160
And you are going through this negotiation where we finalize everything.
00:22:48.240 --> 00:22:55.839
We recheck the tax rates, we check the shipping again, we check the inventory, and then we lock it and we convert it to an order.
00:22:56.000 --> 00:23:03.039
And when we're and we're going through that, you see a little spinner, it says, do not hit the back button, do not, you know, PSU3, that can cause another submission.
00:23:03.440 --> 00:23:06.799
And we are final, we call it finalizing the order.
00:23:07.039 --> 00:23:24.000
We finalize it, and what happens is it converts it into an order, which is like now like a read-only uh object, because uh if we do have something called order editing, but it's really like a like a like an appending of the order because I have a history, but we are now turning it into an order.
00:23:24.160 --> 00:23:29.599
We lock in all the you know pricing, shipping, taxes, all the things, the inventory.
00:23:29.680 --> 00:23:40.960
We decrement the inventory so now no one else could take it from you, including in the store, by the way, which can happen sometimes where you have stock in the back room and someone will literally go and tag it and be like, this is now taken.
00:23:41.279 --> 00:23:48.160
And that turns into an order in a way that you will get the email confirmation typically very quickly.
00:23:48.319 --> 00:23:52.240
If you're using your shop app, you'll get like you might get a notification saying now being tracked by shop.
00:23:52.400 --> 00:23:54.640
So you can see that the order was was done.
00:23:54.960 --> 00:23:59.440
And we start, you move into this like fulfillment phase from the merchant side.
00:23:59.599 --> 00:24:07.519
So it will show up in their uh ledger as an order to fulfill, and they will get the same information, which is like here are all the things.
00:24:07.680 --> 00:24:16.400
They might have if it's one item, they might just pack and pick the one item, if it's like five, they might gather like a bundle and put it together for you and then get ready to ship it.
00:24:16.480 --> 00:24:30.480
And what's cool about Shopify is you can not only do that entire operation and click on it and say, I want to fulfill, you can also print out a shipping label and you know, literally affix the label to the package and then get it sent out to you, which is then moving into like tracking.
00:24:31.200 --> 00:24:32.160
Yeah, it's it's fascinating.
00:24:32.240 --> 00:24:42.240
I know when we were working on this together, the most important thing was getting the user from the cart to the checkout and getting the checkout to execute as fast as possible because we all know this, right?
00:24:42.319 --> 00:24:47.839
We're we've we have it in the cart, we're ready to check out, we're like, I don't want to spend a bunch of time at the cashier.
00:24:47.920 --> 00:24:51.039
I just want to like, here's my card, let's go, and then move on to the next thing.
00:24:51.200 --> 00:25:04.400
And I already spend, I know you all spend a lot of time, and we spend a lot of time talking about making that checkout work incredibly fast, making sure the sessions work incredibly fast, making sure the payment providers are tied in through the payment gateways the right way.
00:25:04.640 --> 00:25:11.200
All that is incredibly complicated behind the scenes, and it's all these connections going to all these different places across the internet.
00:25:11.519 --> 00:25:16.880
And as far as you know, I, the buyer, is concerned, like you said, it's pay now, and then boom, done.
00:25:17.119 --> 00:25:20.160
Here's the email, shows up on my app, and I'm good to go.
00:25:20.319 --> 00:25:25.279
It's like it's stunning how quick it all occurs and how many things actually occur behind that button.
00:25:25.599 --> 00:25:29.839
Yeah, and what we didn't actually talk about, actually the payments negotiation.
00:25:30.079 --> 00:25:39.279
Because one of the things that can happen is you might put in an indirect credit card number, or you might uh sometimes this happens, an expired credit card on file, whenever, and it won't go through.
00:25:39.359 --> 00:26:05.599
And so what happens at the payment negotiation stage is that between Shopify and the payment gateway, it could be auth.net, it could be Stripe, it could be PayPal, we have a negotiation where we give the uh encrypted information to the provider in a way that they can actually figure out if this is a ballot card, has the funds, is not fraud brand, all those things, sends us back an authorization, and then we come back to you and say, yes, this has gone through.
00:26:05.680 --> 00:26:10.400
You might see on your phone if you use Apple Pay, whatever, like it shows up as a notification, like this has been paid.
00:26:10.880 --> 00:26:18.960
And that is part of the negotiation because sometimes, you know, if that fails, obviously we don't want the merchant to fulfill an order where the payment hasn't gone through.
00:26:19.119 --> 00:26:24.559
You want to know right away that actually I need to use a different credit card, or I want that in my gift card, et cetera.
00:26:24.720 --> 00:26:29.680
And so um, that's part of that whole negotiation is when it's finalized, the payment has also gone through.
00:26:29.839 --> 00:26:33.279
And uh, we spend a lot of time on authentication race at front.
00:26:33.440 --> 00:26:48.400
So, for example, at Shopify, if a person uses a fraudulent credit card on any one of our millions of sites, we're um hopeful that it'll in uh in real time that that credit card cannot be used once we identify and not be used anywhere else on a Shopify site.
00:26:48.480 --> 00:26:56.240
So the network actually um uh gets smarter over time by just having uh these signals propagate throughout the entire network.
00:26:56.640 --> 00:26:57.279
Very cool.
00:26:57.440 --> 00:27:00.000
No, it's it's really impressive how quick it all occurs.
00:27:00.160 --> 00:27:01.920
Yeah, now we actually get to fulfill, right?
00:27:02.000 --> 00:27:03.680
So we actually get to do the fulfillment part.
00:27:03.920 --> 00:27:10.480
So we actually actually this is yet to the pixels, everything we've talked about so far is all pixels in electrons and you know waves of light.
00:27:10.640 --> 00:27:12.799
But now we're actually talking about like packages.
00:27:12.960 --> 00:27:16.720
So actually fulfilling the packages, and that's fascinating too.
00:27:16.960 --> 00:27:18.960
Yeah, and it depends on the size of the merchant, right?
00:27:19.039 --> 00:27:37.759
So you could be a an entrepreneur who's just started their business and be at home, and you've got this fulfillment page, and I see all these images and videos of people they got like a you know kitchen set up and they've got boxes and labels and products, and they're using the Shopify uh order screen to basically be like, okay, I need to fulfill this order.
00:27:37.920 --> 00:27:39.039
What goes in the box?
00:27:39.200 --> 00:27:40.960
Can I bring my shipping label from here?
00:27:41.200 --> 00:27:47.200
Let me close it, and then they do like, you know, they pack the box, they obviously put their, you know, um personalized touches on it.
00:27:47.279 --> 00:28:07.839
They might write a handwritten note, they close it up, they put the shipping label, and then they can say when they, you know, either it fulfilled there or when it's in transit, but it's already fulfilled from their perspective, and then they literally show these images of boxes at the door that they didn't have to drive to like, you know, UPS or uh Europe, you know, U US Postal Service or FedEx or whatever.
00:28:07.920 --> 00:28:12.720
Uh and then that in their mind it's like it's like now shipped out and then then it goes to like the tracking page.
00:28:12.880 --> 00:28:18.880
Um so but it's it's kind of a visceral experience because for them, this is now also the it was pixels for them, right?
00:28:18.960 --> 00:28:26.160
This is orders are coming in and now it's into packages because they've got it converted into the thing that they're now sending uh their users.
00:28:26.319 --> 00:28:30.319
Now, of course, there's like people who do sell digital goods and things like that where they don't have the package aside.
00:28:30.559 --> 00:28:34.000
But for the people who are selling physical goods, um, there's a fulfillment stage.
00:28:34.079 --> 00:28:51.279
Now, if you're a bigger merchant, you might do anything from work with a warehouse to uh use fulfilled by Amazon, where those orders are automatically flowing into an order management system and then a fulfillment system such that uh there's a third party that's taking care of that for you.
00:28:51.359 --> 00:28:55.279
And they're they might let you know, hey, by the way, these shoes in size 10 are running low.
00:28:55.359 --> 00:29:01.519
You might want to order them from your manufacturer to refill it in the in the warehouse because a lot of people are ordering those.
00:29:01.680 --> 00:29:06.880
They will typically handle that for you, but you're at some large, large scale where um you're not doing that by hand.
00:29:07.200 --> 00:29:11.119
Yeah, I don't picture the Kardashians packing, picking and doing things on their own.
00:29:11.200 --> 00:29:12.160
So no, correct.
00:29:12.240 --> 00:29:15.599
Yeah, they've got the volume to like have like a warehouse and a setup there.
00:29:15.759 --> 00:29:18.480
By the way, go from one warehouse to multiple warehouses.
00:29:18.960 --> 00:29:21.440
How do you, you know, um route?
00:29:21.599 --> 00:29:22.799
It's an interesting problem, right?
00:29:22.880 --> 00:29:25.039
How do you route people to the correct closer warehouse?
00:29:25.119 --> 00:29:30.720
So if you say you want to shoe size 10 and you're in San Francisco, should I show you the ones in New York or not?
00:29:31.200 --> 00:29:38.319
Because there's different delivery um timelines and also delivery cost to send it to you for, right?
00:29:38.400 --> 00:29:48.799
And so those are kinds of things that we want to show you when you hit add to card as well, because uh you might say, like, oh, delivers in three days, and that could depend on where it is in the country and which warehouse it's filling from.
00:29:48.880 --> 00:29:54.240
So again, lots of interesting problems as we as we navigate through like something that looks super simple, which is like ships and create eggs.
00:29:54.559 --> 00:29:55.279
Yeah, I know.
00:29:55.359 --> 00:30:05.839
It it it all seems so simple, but like you said, that parachute or that skims item, it might be in n warehouses across the planet, which one has it in inventory, what's the shipping fees for each one?
00:30:06.079 --> 00:30:08.960
How does it actually get off the shelves into the truck?
00:30:09.119 --> 00:30:14.960
I'm gonna do a whole episode on that because that's a whole different discussion about robots and pick and pack and all sorts of fun stuff.
00:30:15.039 --> 00:30:20.480
You know, I don't think we have time to talk about that today, but that's a whole different topic, which is just fascinating.
00:30:20.880 --> 00:30:30.079
Yeah, yeah, I'll say each each step of the process has its like green path flow, which is super easy and and flows through it.
00:30:30.160 --> 00:30:38.640
Then it has like more like we didn't talk about like checkout shoes and like how do we think about having like, you know, like here you think about this like buying tickets for Taylor Swift concert, right?
00:30:38.720 --> 00:30:45.119
What about buying like again, Kim Kardashian, like apparel and like having a hundred thousand people try to buy at the same time?
00:30:45.200 --> 00:30:49.039
So lots of complexities can occur as the as the stack gets more helpful.
00:30:49.440 --> 00:30:52.799
And then, you know, since we're here in 2026, we gotta talk about AI.
00:30:52.880 --> 00:30:57.759
So now you've mentioned that you know, bots are buying on behalf of people, agents are buying on behalf of people.
00:30:57.920 --> 00:30:59.519
How does that throw itself into the mix?
00:30:59.599 --> 00:31:02.079
How do you think through that agentic commerce?
00:31:02.240 --> 00:31:07.119
If I'm sitting in ChatGPT and say, find me size 10 shoes of this style, go.
00:31:07.279 --> 00:31:09.440
Like, yeah, I know we're all working on that.
00:31:09.519 --> 00:31:10.720
So how does that actually happen?
00:31:11.039 --> 00:31:12.079
Yeah, there's two sides to it.
00:31:12.400 --> 00:31:19.759
There's the the there's the merchant side, which is like, how do I reduce the toil of the merchant, the business owner, when, hey, how do I update my tax settings?
00:31:19.920 --> 00:31:22.079
How should I think about ordering more inventory?
00:31:22.240 --> 00:31:25.599
Can you show me record of what the biggest selling items were for the last week?
00:31:25.759 --> 00:31:30.880
All those things are now enabled by AI inside of Shopify because you quickly ask sidekick these questions.
00:31:31.039 --> 00:31:32.480
And then as a buyer, you're right.
00:31:32.640 --> 00:31:35.039
Do I go to ChatGPT and say, show me shoes?
00:31:35.119 --> 00:31:38.640
Or do you say, hey, I'm getting interested in running, or I want to run a marathon?
00:31:38.799 --> 00:31:40.079
What equipment do I need?
00:31:40.240 --> 00:31:43.359
Or um, what should I buy my daughter for her grade eight graduation?
00:31:43.440 --> 00:31:44.640
And then it starts showing you products.
00:31:44.720 --> 00:31:48.240
So I think that there's very interesting discovery surfaces for that.
00:31:48.319 --> 00:32:07.440
There's obviously like word of mouth and meta and like Instagram and Facebook and and Google searches, but now AI is a new surface for you to like actually discover new products and potentially uh in a very detailed and narrow query, like show me shoes that are size 10 that are cool, or what that buy, you know, to for my hiking trip.
00:32:07.680 --> 00:32:15.599
Um, we're noticing obviously that more and more people are using AI, as you can imagine, and we're starting to see more uh of that kind of traffic appear.
00:32:15.680 --> 00:32:19.920
So we'll see, you know, what uh what size that channel ends up being over time.
00:32:20.319 --> 00:32:29.119
Yeah, I can even imagine going back to my lap last episode, sitting at a Waymo on a cell phone over 5G using Chat GPT to buy something.
00:32:29.279 --> 00:32:32.160
Like it's again how many how many layers of AI can we use?
00:32:32.240 --> 00:32:33.359
But it's all so cool.
00:32:33.599 --> 00:32:36.640
Yeah, and it's so interesting because also the pattern of the user, right?
00:32:36.720 --> 00:32:43.920
So for example, when I get a product recommendation, um, I tend to want to go to the main sites because I want to see like what else you got, right?
00:32:44.079 --> 00:32:45.680
If I'm into this product, what's yeah?
00:32:45.839 --> 00:32:51.200
And then other people we're like, hey, I I you you gave me the exact product, just buy now, right from that surface.
00:32:51.279 --> 00:33:03.119
So I think that's gonna be interesting to see um the various modalities of like just buy it now versus like, hey, like, you know, kind of like one-click buy versus like, hey, I want to see what else you have, what are the colors, what are the sizes before I purchase.
00:33:03.440 --> 00:33:10.640
Yeah, I remember we used to talk about people walking by a store and like literally taking a picture of an item in the window and just saying, just buy me one of these and have it shipped to my ass.
00:33:10.880 --> 00:33:12.319
I don't even want to go in the store.
00:33:12.480 --> 00:33:15.599
And other people might want to browse the store for a while, right?
00:33:15.920 --> 00:33:16.720
Yeah, exactly.
00:33:16.880 --> 00:33:21.039
So you might the difference is like you could also walk by the store and be like, I want that exact shirt.
00:33:21.279 --> 00:33:25.039
Or I go into the store and you see an shirt you like and raised like, oh, that one's nice and that one's nice.
00:33:25.119 --> 00:33:30.160
And so like you kind of like you know, you start figuring out um what you want to buy from that experience of like browsing.
00:33:30.880 --> 00:33:31.200
Yeah.
00:33:31.599 --> 00:33:41.200
I mean, what do you think that is like the is we we've talked about a bunch of different things here, but what do you think is the one thing that people underestimate about commerce in terms of its complexity?
00:33:41.599 --> 00:33:45.119
What's the one thing we're like no one understands how complex this really is.
00:33:45.680 --> 00:33:48.240
What is it that like stands out to you in that in that question?
00:33:48.960 --> 00:33:56.880
Yeah, I mean, I think one thing that's interesting is is the like the uh like it looks easy and I think it should feel easy.
00:33:57.200 --> 00:34:08.239
Um, but the whole point of like why like a Shopify or other services exist is because we're trying to make make the time that you spend on your business focused on the things that are value add for you.
00:34:08.320 --> 00:34:11.119
So if you're like you're building, we let's go back to shoes.
00:34:11.199 --> 00:34:24.000
Let's say you're a bespoke shoe manufacturer, we want you to spend all your time uh like making amazing shoes, researching uh materials and designs and spending all your time there, and talking to customers and telling your story.
00:34:24.079 --> 00:34:24.639
Like that's it.
00:34:24.800 --> 00:34:39.039
We don't want you have to spend time thinking about like, hey, is my site up and how do I configure like point of sale and how do I think about um bots and how do I fulfill with the right shipping labels and how do I think about inventory and choose shipping and duties and taxes and loyalty and all that stuff.
00:34:39.119 --> 00:34:41.039
Like, we want to take a lot of that toil away from you.
00:34:41.199 --> 00:34:51.199
Of course, we want to customize it, but our goal is to like let me spend most of your time on your business so we can uh take that toil and and and do what we're really good at, which is the infrastructure side.
00:34:51.360 --> 00:34:53.360
So I think people underestimate.
00:34:53.440 --> 00:34:56.880
Like I had a I talked to this uh this person who was like, I'm gonna bytecode my storefront.
00:34:56.960 --> 00:34:57.360
I'm like, great.
00:34:57.440 --> 00:35:01.039
They bytecoded it all, they hooked it up, and then they go, This is so cool.
00:35:01.199 --> 00:35:09.840
And I was able to take sales, and then they're like, wait a sec, how do I do fulfillment and orders and tracking and inventory and sales and and then shit, how do I file taxes and like all that stuff?
00:35:10.000 --> 00:35:12.639
And they messaged me and they go, Oh, this is why Shamfy exists.
00:35:12.719 --> 00:35:19.440
Like you can, of course, bytecode, you can still use your bytecoded site and headlessly and um you know set up the APIs to hit Shampai in the back end.
00:35:19.679 --> 00:35:24.880
But the whole reason for the rest of it is because we're trying to make that easy for everybody such that they can focus on their business.
00:35:24.960 --> 00:35:31.920
And now this person is focusing on, unfortunately, taxes and overdose and fulfillment and because they've just byte coded a site.
00:35:32.000 --> 00:35:37.039
So I think I think I think there's a place and time to kind of figure out where you want to spend uh your resources.
00:35:37.280 --> 00:35:39.199
And so if you're gonna invite people to site, cool.
00:35:39.360 --> 00:35:42.480
Just have the APIs hit job and find the backgrounds, you don't have to worry about the rest.
00:35:42.719 --> 00:35:45.679
But um, I think people underestimate the the complexity of commerce.
00:35:45.760 --> 00:35:51.199
The other thing I will say is um just checkout itself is so interesting, right?
00:35:51.360 --> 00:35:56.559
Like I've managed to buy it now versus the the beauty of an entire checkout experience flowing through.
00:35:56.639 --> 00:36:07.519
And so we developed UCP with Google because we felt like when you go to whether it's ChatGPT or Gemini or Cloud or anywhere in the new LLM world and you see a checkout, it should reflect the brand.
00:36:07.679 --> 00:36:14.559
It should be branded, it should have uh complexities of shipping and duties and taxes and all that stuff flow through so you get the full experience.
00:36:14.719 --> 00:36:19.519
Just like you go into a store, you walk into Walmart or you walk into Ala Yoda, they feel different.
00:36:19.840 --> 00:36:22.639
And so that experience should feel different on Run's.
00:36:23.360 --> 00:36:24.559
No, totally makes sense.
00:36:24.719 --> 00:36:25.440
Totally makes sense.
00:36:25.599 --> 00:36:27.119
Well, Farn, this has been fascinating.
00:36:27.199 --> 00:36:28.960
Thanks again, buddy, for joining joining me.
00:36:29.360 --> 00:36:30.159
Love chatting with you.
00:36:30.320 --> 00:36:31.280
Used to do this all the time.
00:36:31.760 --> 00:36:32.239
Uh yeah.
00:36:32.880 --> 00:36:36.639
Thank you everyone for listening to this episode of Pixels to Packages.
00:36:36.800 --> 00:36:41.199
Next time, we're gonna probably talk a little bit more about AI because that seems to be the topic desire.
00:36:41.440 --> 00:36:50.320
A little bit more about logistics and continue to figure out how we get those pixels that Shopify serves that all these merchants uh present to our screens, turning more into packages.
00:36:51.920 --> 00:36:52.480
Thanks for hunting.
00:36:52.719 --> 00:36:53.199
See y'all soon.