Full transcript
What's in today
0:00Hey everyone, Jan here, coding with
0:01Jan.com. So, Shopify Editions just
0:04dropped with tons of new updates for
0:06developers, and to understand what they
0:08all mean, we'll break them down with no
0:11one less than the VP of product for
0:13developer platform, admin experience,
0:15analytics, and flow. I'm excited for
0:18this one. Let's have a look. All right,
Meet VP of Product
0:20Ethan, super excited for our talk today.
0:22We have lots of good topics to cover,
0:24and before we dive right in, the last
0:26time [snorts] we spoke, your role at
0:27Shopify was slightly different. You were
0:29director of the developer platform, and
0:31now I also saw keywords like analytics,
0:33Shopify flow, admin experience. So,
0:36yeah, before we dive right in, what does
0:37your day-to-day look like now?
0:39>> Uh yeah, so I basically work on a team
0:41called Shopify Foundations. We work on
0:43the end-to-end developer experience,
0:45think like shopify.dev, dev docs, dev
0:47community,
0:48the the CLI for building apps,
0:52dev dashboard, and then all of the
0:54distribution that developers might do to
0:56things like the app store, also our
0:57partner directory.
0:59I work on a lot of the primitives that
1:00developers use to build their apps, like
1:02things like metafields, meta objects for
1:03storage,
1:05Shopify functions, which is a key
1:06primitive for for doing business logic
1:08at checkout,
1:09our Polaris UI toolkit, all all of those
1:11capabilities for for developers.
1:14Yeah, and then I also work on flow and
1:15analytics, which are kind of like two
1:17merchant power tools, but also are
1:20critical parts of developer capabilities
1:22as well. We have flow triggers and
1:24actions that they can use
1:26to plug into that surface, and now we
1:27have increasing number of like APIs and
1:29capabilities for analytics as well.
1:31>> Okay, that's awesome, because yeah,
1:32today we have a lot of technical topics
1:34as well, and you are a good sparring
1:36partner for that, because you do have
1:37the technical knowledge. Why don't we
1:39dive right in? Apps are a super hot
Webhooks are changing completely
1:41topic right now.
1:42>> Yeah.
1:42>> Lots of people are shipping apps,
1:43especially in the agentic era, and one
1:46of the things I saw on Shopify Editions
1:48is that webhooks are completely rebuilt
1:51from scratch.
1:52>> Yeah.
1:52>> And I think we should catch the audience
1:54up here a little bit, because not
1:55everyone might be aware what webhooks
1:57even are. So, when you build an app and
2:00you need to request data, you can do
2:01that through Shopify's API. Let's say
2:03you need some product data,
2:05but there are also instances where you
2:06need to be notified about certain
2:08events, like an incoming order, right?
2:09Then it would be inefficient to like
2:11query the API every 5 seconds, is there
2:12a new order? Is there a new order? So,
2:14then you subscribe to these webhooks,
2:16which is kind of like Shopify's event
2:17system.
2:18>> That's right.
2:19>> What is changing?
2:20>> What's changing? Yeah, great question.
2:22So, today, uh let's compare before and
2:24after. Um as you described, webhooks, um
2:28current webhooks are a way to be
2:29notified when something happens. So,
2:31let's say, for example, um I want to be
2:33notified um when a price changes. Like,
2:35hey, I do something that involves like
2:37warranties and the price of a product
2:39matters a lot for my use case. Um with
2:42webhooks today, you would subscribe to a
2:43product update webhook, and what we
2:46would do is we would send you this
2:47ginormous payload of
2:49the entire product and everything uh
2:52about that product in its new state.
2:55Um the biggest challenge with today's
2:57webhooks is that the developer is left
3:00figuring out what actually changed. And
3:02so, you get this massive payload of a
3:04product, which could have 60, [snorts]
3:0580, 100 fields on it. Um and what you
3:09really care about is did the price
3:11change?
3:12And so, that puts a lot of work on the
3:13developer to basically store probably
3:16locally some sort of version of like the
3:18before and then look at this webhook and
3:20be like, wait a second, what actually
3:22changed? Oh, wait, the price didn't
3:23change. I don't care. Throw in the
3:25trash, right? Um and so, you're getting
3:28a massive volume of webhooks, um only
3:31which a portion of it you might care
3:32because again, most developers have a
3:34specific use case in mind. They don't
3:35necessarily care about an entire product
3:37being updated.
3:38>> True.
3:38>> So, um enter uh next-gen events, uh
3:42Shopify events. Um and the big There's a
3:45number of a number of things that we've
3:46improved, but I'd say the biggest one is
3:48that um in your subscription, you can
3:51include what is called a trigger. Um
3:53[snorts] and the trigger allows you to
3:55specify the exact field um
3:59uh that you that when that thing
4:01changes, you want to be notified. Um so
4:04you can do a subscription and say,
4:05"Okay, I want to trigger on
4:07variance.price
4:09and I want to trigger on
4:10variance.compare_at_price."
4:12And then when the that event fires, we
4:15will actually tell you specifically what
4:18actually changed. Um and we'll tell you
4:20like, "Hey, okay, you wanted to be
4:22notified if either of these two change.
4:23I'm telling you right now that price
4:25changed or compare_at_price changed."
4:27Um so that's really nice because it just
4:29dramatically for that developer who's
4:31like, "I just want to be notified about
4:33price changes." Now it's like, "Okay, I
4:35can be confident that I'm only going to
4:37get either price changes or
4:38compare_at_price changes."
4:40Um
4:41>> Yes. Yeah, so far so good. I mean, that
4:43sounds awesome. Yeah, you explained it
4:44super thoroughly. I don't even have many
4:46follow-up questions. Yeah.
4:47>> It kind of sounds you can build your own
4:49webhooks now and not not own webhooks,
4:50but you you have a lot more fine-grained
4:52control of when you want to receive
4:53them, also what to receive because if
4:56you subscribe to certain events, then
4:57obviously the payload changes. Is that
4:59correct?
4:59>> Yeah, so so basically you can think of
5:01it as almost like by default, it's kind
5:03of like payloadless. And what you do is
5:06you give us a query, a GraphQL query
5:08that you want to run when it triggers,
5:11and then we'll go pull the data that you
5:13want. And so you basically form up your
5:15own payload. So you'll get a custom
5:17payload. So like maybe, "Hey, when price
5:18changes" I'm making it up "I want to get
5:20the ID uh of the product, the title, and
5:24the status." I don't know. Whatever it
5:26is. Yeah.
5:27>> So it's kind of like the shift that we
5:28saw on the API from when we went from
5:31REST to GraphQL, it's kind of the same
5:33thing for webhooks now, right?
5:34>> Exactly. [clears throat]
5:35Yep. Yeah. It's It's custom GraphQL
5:37queries that basically define your
5:38payload.
5:39>> Yes. Okay, that that's really cool. Um
5:42that's all I want to know about
5:43webhooks. I have two other topics. What
5:45would you What would you like more?
5:46Staying on the app side and my great or
5:49transitioning to sidekick or UCP product
5:51catalog? What's your favorite topic?
5:54>> Or maybe we just do one more thing on
5:55events. So just to kind of close off
5:57that topic, it's available today for the
6:00products resource and for the customers
6:02resource.
6:03Um and our intention is to bring it to
6:05all resources and make it a complete
6:08replacement of the old webhook system.
6:10>> Okay, yeah, that's good to know. I I
6:12have to imagine you rolled this out
6:13gradually. I it only makes sense. Yeah.
Honest take on Sidekick AI
6:15>> Yeah.
6:16>> Okay. And then your favorite topic?
6:17Sidekick first or UCP product catalogs?
6:20>> Uh let's do sidekick.
6:22>> Okay. So, have you used sidekick in in
6:25recent days or weeks? Are you using it a
6:27lot in your day-to-day? Are you do you
6:28have touch points with it?
6:30>> Uh I do. So I mean I I I use it a fair
6:32amount. Like I'm I'm not a merchant
6:34myself, but I I definitely try and use
6:35our products all the time a whole bunch.
6:37Um and so yeah, I I I use sidekick quite
6:39a bit um just to get a feel for like
6:41what it can do. Um I have my own
6:43internal staff shop which I which I use
6:45it again just again to to to run queries
6:47and play around with it.
6:48>> Okay, what do you what do you like most
6:50for? Can you speak on that even? I mean
6:52>> Yeah.
6:53>> You're working on it, but it's you
6:54probably have an opinion, right?
6:56>> Yeah, I do. Um ooh, I like it for a lot
6:58of I mean so
7:00All right. Cheesy but true answer. I I
7:03think one of the things that is getting
7:05really nice about sidekick is that
7:08um its capabilities are just increased
7:09dramatically.
7:11Right. So it used to start off where it
7:12could kind of answer basic questions
7:13about your shop. Um but now you can
7:17um for example say, "Hey, I want to
7:19build an automation that will uh tag all
7:22customers who spend $5,000 or more as
7:24VIP." And that will [snorts] immediately
7:26start to kick off uh the ability to to
7:28to to to to do a workflow to create a
7:30workflow. Um you can ask it analytical
7:32questions. "Hey, um tell me like how
7:35many orders I had in the last 30 days
7:36and how many of them were over again
7:38$5,000."
7:39Um
7:40and so just the capabilities have
7:42increased dramatically. Um
7:45Yeah, I mean I I think like one of my
7:47favorite is probably a lot of the
7:48analytics use cases are really cool
7:51because you know it takes something that
7:53either like you'd have to go write
7:54custom Shopify QL for
7:56or you'd have to go into an editor and
7:59like you know do all these kind of fine
8:01grain selections and now you can just
8:02talk like you normally would to ask
8:04these questions and and just in plain
8:06simple English or whatever your language
8:07is
8:08and
8:09yeah and and Sidekick will just give you
8:10answers and so I don't like I don't like
8:11I find that one just really cool.
8:13>> Yes, I agree. I actually interesting you
8:15mentioned that because I tell this all
8:16the time like the talk to your analytics
8:19aspect of it is really cool because
8:20analytics are kind of not necessarily
8:23frustrating but they can be confusing if
8:25you have like a lot of data points and
8:26now you can just ask hey what's my best
8:28performing marketing channel and then it
8:29gives you like the full breakdown which
8:30is awesome.
8:32Personally I also like it for as you
8:34said documentation and if you have a
8:36question regarding a specific setting or
8:38where to find something in the admin
8:39dashboard.
8:41Theme set theme sections I don't use it
8:43as much to be honest because I'm more of
8:45a fan of having my local development
8:46environment and maybe my own AI of
8:48choice and then some more fine grain
8:50control also with Git commits I think
8:51that's like fair point.
8:53>> Yeah.
8:53>> Um building apps is super interesting
Generating Apps with Sidekick
8:55with Sidekick. You mentioned
8:56automations.
8:58I think a shop like Sidekick is now also
9:00capable of building apps but I haven't
9:02tested it too much yet. This is only
9:05admin extensions or like extension only
9:08apps because there's no real hosting
9:10right? You couldn't set up a server and
9:11then do third party queries or like
9:13what's the deal with that?
9:14>> Yeah there so there's no back there's no
9:15back end to it is the best way to think
9:17of it right? There's no back end hosting
9:18to it so it it is you know think of it
9:21as like front end only apps for from
9:23Sidekick app generation.
9:25You're like hey I want to build a form
9:27of some kind it can go and do that but
9:29right at the moment it does not have any
9:30back end capabilities.
9:32>> Okay that makes sense. But the admin UI
9:34extension check out UI extensions is
9:36that the is that a Because they're
9:37partially hosted on Shopify and then
9:39>> Um not not from Sidekick. Uh
9:42so,
9:43checkout UI extensions are not possible
9:46to do from Sidekick app trend currently.
9:47>> Okay, got it. Okay. But but possibly in
9:49the future.
New Sidekick AI Extensions for Developers
9:50>> Yep.
9:51>> Okay. And yeah, now with additions, I
9:54also saw there are Sidekick app
9:56extensions coming. So, similar to how
9:59you could integrate your app into, let's
10:00say, a product page or like admin UI
10:02extensions. Um
10:05you can now integrate the Sidekick
10:07conversation. Like, how do I have to
10:08imagine this?
10:09>> Yeah. Yeah, so um we announced this in
10:12dev preview at the last edition. Um
10:14we're now GA with it. It's available to
10:17all developers and on all shops. Um
10:20yeah, so I think one of the biggest
10:21things about Sidekick is that like, hey,
10:23let's say I'm a merchant and I utilize a
10:25bunch of apps to run my business.
10:28Um like, I might use Klaviyo for email.
10:31I might use some other app for
10:32subscriptions,
10:33um etc. Um
10:35currently, that data is not really is
10:38not available to Sidekick. It does not
10:40know about that app really doesn't know
10:42Well, previously, today it does. It did
10:44Previously did not know about that app.
10:45It didn't know about that data. So, with
10:47Sidekick app extensions, we solved that
10:48problem. Right? What we enable app
10:50developers to do
10:51um is to implement um you know, one or
10:54two of two extensions. One is a data
10:55extension and the other is an action
10:57extension. Um let's start with a data
10:59extension first. The data extension is
11:00basically a way to answer questions that
11:03a merchant might have about your app
11:05that involve giving back data. So, if we
11:06if we go with example about like, "Hey,
11:08I use some
11:10third-party app for email like Klaviyo
11:12or Seguno or some other." Um I could ask
11:14a question like, "Hey, Sidekick, tell me
11:16how my last campaign called Spring Promo
11:21um went." And
11:23it would then basically figure out,
11:24"Okay, like you probably want to invoke
11:26your app that does um campaigns." Um it
11:29would tell you like, "Hey, we're
11:31searching this app uh as the merchant.
11:34That app would then be passed that
11:36context and it would respond back with
11:38that information and tell you like hey,
11:39the campaign was sent to a million
11:41people. There were 200,000 opens, you
11:44know, whatever, 100,000 clicks
11:47and and these number of purchased. And
11:49so now all that information of the app
11:51becomes available
11:53to the merchant in a really seamless
11:54manner.
11:55>> Okay, yeah, that sounds interesting. So
11:57basically as the app developer, I would
11:58have to create my own API endpoints for
12:01Sidekick to request the data in real
12:03time.
12:04>> Yeah, so basically you create an
12:06extension like you would any other
12:07extension if you're building a checkout
12:09like, you know, it's it's our kind of
12:10same extension
12:11mechanism.
12:13You define a set of routes
12:15that and then for each of the routes
12:17basically what you you tell us in like
12:20in English the description of what is
12:22what that route will solve.
12:25And so you might have a search campaigns
12:27endpoint, you know, routes. You might
12:28have a get campaigns detail endpoint,
12:30things of that nature. So you define all
12:32these basically routes. You tell us what
12:35they do and then we're the ones doing
12:36the orchestration to figure out what to
12:38invoke. Yeah.
12:40>> Yeah, that's that's actually amazing.
12:41Especially the natural language part
12:43because then you don't have to follow
12:43like a super rigid protocol. You can
12:45just describe what it is in plain
12:47language. That's awesome. And hopefully
12:48it also speaks all languages but I think
12:50English might still be the best.
12:51>> Yeah.
12:52>> No, this this is really cool. And also
12:54if you already have an app and you have
12:55something like an analytics page or
12:57similar, most of the queries will
12:59already be implemented on your server
13:00side and then you can just build on this
13:01new API. That's amazing
13:03>> That's exactly right. Yeah,
13:05exactly right. But from a developer
13:06standpoint, the thing I've heard
13:07speaking we've had many developers
13:09who've already implemented it kind of
13:10prior to going GA and they said it was
13:12super simple because like hey, I just
13:14write the extensions. I I, you know,
13:16have the routes and then I'm just
13:17pointing at at existing things that my
13:19app already has.
13:20>> And this is this is only limited to text
13:22data because I mean on my app I could
13:24also maybe display a product or a
13:26similar, right? Is this Is this also
13:28possible in like do we have maybe like
13:30React-based components that are
13:31available in this chat or similar?
13:33>> Yeah, so so we talked about data
13:35extensions, which is again data.
13:38And then we also have action extensions,
13:39so I can action extensions. And what
13:41Sidekick action extensions enable
13:43developers to do is to basically load up
13:47a part of their app.
13:50You know, with it potentially pre-filled
13:52and ready to go for the merchant to
13:53execute some action. So, if we if we
13:56stick with our email example, let's say
13:58a merchant comes into Sidekick and says,
14:00"Hey, I'd like to go and create
14:03a new campaign or a new transactional
14:05mail
14:06using my my email provider or like
14:09Seguno, let's say."
14:11Again, Sidekick interprets that, figures
14:13out, "Okay, hang on. This developer has
14:16registered an action extension. Oh,
14:17okay, it's the create campaign one."
14:20>> [snorts]
14:20>> We would pre-fill it as best we could
14:23based on the data we have from the
14:24developer. And then we don't we don't
14:27actually execute the action on behalf of
14:28the merchant. It's actually very
14:29important that we really insist that for
14:32anything that is not read but is
14:34potentially doing mutations or creating
14:36things, that the merchant is in the
14:38loop. And so we stage everything, but
14:40the merchant will then go and like say,
14:42"Okay, like send." Or whatever it is. Or
14:44create.
14:45>> Yes, okay, that makes sense. Not no YOLO
14:47mode yet for Sidekick.
14:48>> No YOLO mode for Sidekick, yeah.
14:50>> Okay, got it.
New AI Sales Channels unfolding
14:51>> [snorts]
14:51>> Okay, then yeah, okay, this is Sidekick.
14:53Um
14:55Now off to the theme of this year's
14:59Shopify edition. Some people would have
15:00led with that topic, not on this
15:02channel.
15:03Um so, it is everywhere because on the
15:06website it states the way that merchants
15:08are shopping and where they find
15:09products is multiplying.
15:11And I have to imagine this is part of an
15:12evolution we've seen for like many years
15:14now. It started with single channel
15:16where you had your online store in the
15:17past. And then you had multi-channel
15:18online store, maybe Facebook
15:19Marketplace. Then you had omni-channel,
15:21maybe like five market places, POS, B2B
15:24online store.
15:25And now we have a bunch of new channels
15:26with AI. Is that where it's like coming
15:28from?
15:29>> Exactly right. Yeah, it's exactly right.
15:30So like, you know, one of the obviously
15:33the big new set of channels is
15:36agentic channels. Think ChatGPT, Claude,
15:38and others.
15:40But we also see this like
15:42going back to our paradigm, like this
15:43renaissance of new channels and new
15:46consumer experiences that we think are
15:48going to come to light because of these
15:50new capabilities.
15:51And so we we we've got a whole bunch of
15:53things that are tailored to that, one of
15:54which is our catalog API, which which
15:56has gotten a lot better over the recent
15:58weeks and months. Um to help enable
World Wide Product Catalog API
16:00these new these new use cases.
16:02>> Okay, yeah, awesome that you're making
16:04this transition already because these
16:05would have been my next two topics,
16:06catalog API and UCP.
16:08>> Yep.
16:09>> Um I think they kind of go hand in hand,
16:10but here we also have to catch up the
16:11audience a bit. So catalog API, from my
16:14understanding, is basically a huge API
16:17listing all the Shopify products across
16:19millions of stores, make it searchable.
16:21Is that roughly correct?
16:23>> Yep. It's exactly correct. So um it is
16:25it is millions of Shopify merchants,
16:27billions of products
16:29um that are searchable through a single
16:30search endpoint. Um it is search that uh
16:34I I like we think is quite good in terms
16:35of being able to just ask it questions
16:37of like, "Hey, you know, find me all
16:40like where I'm into like pizza making a
16:41lot. Uh find me all pizza ovens that
16:44will fit two pizzas." And it will come
16:45back with answers for you.
16:47Um we also do a lot of things of like
16:49helping to cluster results. So be like,
16:51"Hey, this is a a product a unique
16:55product that is being sold
16:57uh like a UPI
16:58um universal product indicator, and then
17:00here all the like offers behind that
17:03that canonical product." Um
17:06>> Okay, so it so it could almost be like a
17:07price comparison even that case, right?
17:09If it's like a like a branded product,
17:11and then people see the different
17:12offers. Interesting.
17:13>> Yeah. Yeah.
17:14>> Okay, I haven't Yeah, I haven't thought
17:15about it way yet. Um okay, but can you
17:17also like as a developer, can you filter
17:19this these results? For example, if you
17:21only want pizza ovens in Germany, for
17:22example, right? Because US shipping
17:23might be difficult for me. Uh, are there
17:26other capabilities?
17:27>> Yeah, you can do exactly like yeah, so
17:28filter like that you can definitely do
17:29like, "Hey, I only want to see products
17:31that ship to Germany or I only want to
17:32see products that ship to like the US."
17:34You can do that. Um, you can also filter
17:37on price like min price, max price. Um,
17:39you can filter you you can filter things
17:41like color.
17:42Um, so so yeah, there's a whole bunch of
17:45filters and the the rationale like one
17:49of the key things that we think is
17:50interesting like why we think this is
17:52interesting is because we envision a
17:54world where people can create like very
17:56unique bespoke experiences, right? So if
17:58we continue on our our pizza example,
18:01it's [snorts] like, "Hey, like let's
18:02imagine I want to create a site for
18:03pizza making enthusiast and I want to
18:05cover like have a set of books and ovens
18:07and pizza peels and all these sort of
18:09things." I could create a catalog,
18:12define a catalog in the dev dashboard
18:14that that basically
18:16narrows down to a set of shops and a set
18:18of search terms for that, even price
18:21range perhaps, even perhaps like
18:22shipping constraints and then build a
18:25consumer experience on that. Um,
18:27and and that's that we think that's
18:28quite unique. Um,
18:29yeah.
UCP (Universal Commerce Protocol)
18:31>> Yeah, it sounds awesome. Especially like
18:32in the era of AI, you can now spin up
18:34quick websites, quick apps. So I think
18:35it's going to be used a lot.
18:37And [snorts]
18:38yeah, this also gets me to the second
18:39half of it, UCP, because okay, catalog
18:42is one thing, you have all the products
18:43sortable, listed all the data. But UCP
18:46from my understanding is an open
18:47protocol co-built by [snorts] yeah,
18:49Shopify and Google which basically
18:51allows the agents to also build carts,
18:54lead them to check out.
18:56Correct until here? Do you can you fill
18:58in the blanks a little bit?
18:59>> Yeah, yeah, that's right. You you've got
19:01a lot of it. So yeah, UCP, uh, Universal
19:03Commerce Protocol,
19:04um,
19:05which was developed by Google, Shopify,
19:07Wayfair and many others and it has
19:09participation from many others. Um, is
19:12designed to be like the lingua franca,
19:14if you will, of commerce. Um, and so
19:16every storefront that,
19:19um, that implements UCP, today all of
19:21all Shopify stores de facto support UCP,
19:24um, will have that ability to, um, to,
19:29you know, to basically be introspected
19:30and to create a card on it from it and
19:32then do a handoff to a a checkout on on
19:35that, um,
19:36on that merchant site. And so what this
19:38enables uh, folks to do is now I can
19:42agentically, right? Well, I can go query
19:44the Shopify catalog, we offer that
19:46uniquely, but then I can go, um, and
19:49introspect and for anybody that merchant
19:52that supports, um, UCP, um, I can go and
19:55build a card from it, um,
19:57add all the line items, um,
20:00you know, give it give it context, and
20:01that will basically return a card to me
20:04as the agent, um, and then also a a URL
20:08where I can go and continue with that
20:10checkout. Um, and so if you kind of
20:12continue on that example now, I could
20:13actually have products from other
20:15merchants beyond your Shopify ones, and
20:17as long as they speak UCP, as long as
20:19merchants speak UCP, you can then
20:20assemble cards that could get handed off
20:23to those merchants and do that all
20:24within one experience.
20:26>> Okay, I see. Yeah, that's that's really
20:27the beauty of an open protocol, I I
20:29assume.
20:30>> Yeah.
20:30>> Uh, it's the whole point, I guess. And
20:32um, yeah, okay, I mean there are
20:32probably still some challenges around
20:34this, like what if you have mixed cards
20:35from different stores, and then there's
20:37going to be shipping and everything,
20:38right? So
20:40that's something I would need to take
20:41care of in my application, pretty much,
20:42right?
20:43>> Correct, yeah. Yeah, so so I I I think
20:44like, you know, like this is kind of the
20:46the the the early version of it that
20:47enable this like sort of agentic
20:49shopping across many merchants. Uh,
20:51there are still
20:53additional parts that have to be sorted
20:54out.
20:55>> Yeah, sure, but I mean you're you're
20:56basically facilitating the
20:57infrastructure, and then what I build
20:58with it is is kind of upon me, right?
UCP CLI for Developers
21:00>> Exactly.
21:02>> Okay, that makes sense. Um, then also in
21:04terms of building tools, I saw Shopify
21:06has sort of this UCP CLI. I mean CLI is
21:09always like developer tooling, but what
21:11is that or what does that allow me to
21:12do?
21:13>> Yeah, so UCP CLI just makes it really
21:16easy to do these sort of things, right?
21:18So, again, like
21:20all Shopify shops support UCP.
21:24Uh many other many other folks that are
21:25participating in the protocol, their
21:27shops will also be supporting UCP. Um
21:29and so it's a CLI that enables you to do
21:31a a bunch of things. So, first is you
21:32can search our catalog completely
21:33unauthenticated. You can just you say,
21:35"Hey, again, going back to our search,
21:37you from the command line you can go and
21:39search for like uh pizza ovens that fit
21:41two pizzas.
21:42Um
21:43you can give it all the context
21:45filtering that you want, and then it'll
21:46return a set of results.
21:48Um
21:49you can the um
21:52the CLI will enable you to create carts.
21:54You're like, "Hey, I want to create a
21:55cart for this chosen merchant that I
21:57have." You can go and add line items to
21:59it.
22:00Again, it's that context, and when you
22:02create that cart from the CLI, it will
22:04give you back a URL. So, it makes it
22:06really easy as a developer to get
22:08started with UCP, right? Because it's
22:10like, "Okay, I don't need to build all
22:13of the tooling to go and introspect
22:15these things." Think of it almost like,
22:17you know, you think about HTTP, you have
22:18a browser, right? And the browser is
22:20actually implementing HTTP to go and
22:22talk to other servers. The CLI is doing
22:25all that plumbing to help you as an
22:27agent talk to these sites that that
22:29speak UCP.
22:30>> Okay, yeah, that makes a lot of sense. I
22:31also need to play around a lot more with
22:33these things because it's actually quite
22:34interesting, and the use cases are
22:36pretty broad.
22:37Um so, I have to imagine like a lot of
22:38app developers with uh chat apps,
22:40support apps, search engine-based things
22:43are going to use this a lot, I have to
22:44imagine.
22:44>> Yeah. Yeah, like you say, "Hey, I want
22:46to go build again in our example, I want
22:47to go build an agentic experience to
22:49help you search for like pizza-related
22:50things." You can go and you can go and
22:52implement this.
State of Agentic Commerce
22:53>> Yes. Agentic commerce, I keep hearing
22:55this more and more. I mean, it's kind of
22:56like a new emerging topic. It's super
22:58interesting for merchants as well. Do we
23:00already have data on whether buyers are
23:04using like do we see Shopify sales
23:05coming through such
23:07through chat GPT through other agents
23:09too? Is that something we can measure?
23:11>> Uh yes, 100%. So we like something that
23:13we talked about in our last earnings
23:14call publicly. We didn't
23:16it is how much of an increase we've seen
23:18year-over-year in terms of sales that
23:21are happening from a generative channel.
23:22So absolutely it's happening and I think
23:24that like you know
23:26like commerce is I think uniquely suited
23:28in a lot of ways to to a generative
23:30channels, right? Because you have this
23:32ability now to discover products in a
23:34way that would probably hard before,
23:36right? Cuz like now you can be like you
23:38can get into a chat session on say chat
23:41GPT or on Gemini and have a conversation
23:44of like hey, I'm looking for this thing
23:45that will help me cook, you know, pizzas
23:48like from multiple pizzas at a time and
23:51and that sort of thing might have been
23:52hard before like oh, you know, do you
23:53want a gas-powered? Do you want a
23:54wood-fired? You know, a whole bunch of
23:57questions that it might have and now you
23:59can really hone in and then once you
24:01have found it, you just get deep linked
24:02directly to the product and you're ready
24:04to buy.
24:05>> Okay, yeah, because also when I think
24:07about agentic commerce sometimes I think
24:08about fully autonomous shopping which I
24:11wouldn't probably trust for the pizza
24:12oven, but maybe for a USB cable, right?
24:14It's commodity product. You just buy
24:15one, right? It's
24:17the financial risk
24:18>> Yeah.
24:18>> relatively low. Okay, but interesting.
24:20But I mean the the other side of it is
24:22of course building the cards UCP having
24:24my own app for that. No, that's really
24:25cool.
24:26Okay, I think we already covered quite a
24:28few topics, interesting topics
24:30>> Um
24:30>> that I was also personally super
24:31interested in because I didn't have so
24:32much time to research everything yet. So
24:34we covered the UCP product catalog, we
24:36covered sidekick app extensions, we
24:37covered the new webhooks. And I actually
24:40have so many other questions for you to
24:42ask but
24:43or to ask to you. But we also wanted to
24:45limit this to Shopify editions. So are
24:46there any other updates developers
24:48should be aware of? Anything I've been
24:49missing? Were these the highlights? What
24:51do you think?
24:52>> Yeah, I mean I think we we covered a lot
24:54for sure. Other directions we can we can
24:56talk about are static apps
24:59which we enable with like no where you
25:01can basically host apps fully on Shopify
25:04or or Shopify pressing. So so whatever
25:05direction you want to go in with it on.
Static Apps (Shopify Hosted Apps)
25:07>> Uh yes, static apps is great. Good that
25:09you bring that up. Um this has been in
25:11the talks for a while I think. What do
25:13you think? Is it going to Is it going to
25:15cost us? How much is the hosting? How
25:17does it work?
25:18>> Yeah.
25:19Um yeah, so uh it is currently free of
25:21charge. Um so um
25:25let's talk about the use case and like
25:26why why we did this. So we've had admin
25:29extensions. We have um a number of
25:32extensions around the admin that enable
25:34you to kind of configure things.
25:36Um but one of the use cases that we
25:38There are many use cases where you're
25:40like, "Hey, I'm building some kind of
25:42function, right?" Or I'm building some
25:43sort of customization where I need to
25:46give them, you know, a merchant the
25:48ability to go and customize it, right?
25:49So let's let's actually take functions
25:51where it's like, "Hey, uh you know,
25:53maybe it's a discounting scenario where
25:55it's like, 'Hey,
25:56I'm an agency building a custom
25:58discounting for a merchant and there's a
26:00few toggles and configuration that would
26:02be available um in that instance,
26:04right?' So maybe it's like, you know, a
26:06volume-based thing or something or
26:07something of that nature." So in today's
26:09world,
26:11you know, in this use case, an agency or
26:13or sorry, prior, an agency would have to
26:15basically build this app and then likely
26:19host an
26:20host a server that will run an iframe as
26:23the main embedded app to go and do this
26:24configuration. Um static apps eliminates
26:27all that because now with a static app,
26:29um
26:30we give you the ability to have an app
26:32home um that is powered by Shopify's um
26:35UI extensions. And it basically supports
26:37all the components that a menu UI
26:38extension supports. It supports direct
26:39API access. Um and so it just And now
26:43you can take this app HTML, CSS,
26:46JavaScript, even images, we allow you to
26:48to host like static assets.
26:50Um and you can ship it to Shopify and
26:51we'll we fully host and run that app.
26:54Um, and we think it's going to be
26:55uniquely good for the scenarios that I
26:57just spoke about, like with agencies,
26:58where it's like, "Hey, you know, I want
27:00to go build this thing for the merchant,
27:01but I don't want to have to like,
27:02you know, maintain a server like
27:04basically forever,
27:06um, for this like what is a fairly
27:08simple configuration." So, that's
27:10basically, um, static apps in a nutshell
27:11and why why we built it.
27:13>> Okay, so it's so it's more like whole
27:15being able to host
27:17app configuration pages.
27:19>> Yeah. [snorts]
27:20Yeah, I mean, think about like, I mean,
27:21I think you like like that is a use
27:23case. I think there are other use cases,
27:24like configuration pages could be one.
27:26>> [snorts]
27:26>> Uh, like, you know, there could be other
27:28use cases where, you know, maybe I have
27:31a simple editor that I want to give to
27:33merchants to add metadata to products,
27:35right? And I but I want to happen
27:37through a bespoke editor, and then it's
27:38it's hitting a meta field that I'm going
27:39to save on the product, but I I just
27:40prefer to do it through a bespoke editor
27:41because that's what I have. Okay, great.
27:44Hey, that sort of, again, maybe you can
27:46call it configuration, but that sort of
27:47app, um, can now just live fully on
27:50Shopify, merchant gets to use it, and
27:53the agency doesn't have to worry about
27:54like maintaining something and running
27:56something forever.
27:57>> Okay, no, this is really cool. Also,
27:58when I was summarizing it, I I I didn't
27:59want to play it down. I mean, this is
The New App Pricing Model
28:01huge because common problem. I was just
28:03like trying to see if I get it right.
28:05>> Yeah.
28:06>> Uh, no, this is really cool. Um, any
28:08other updates from Editions that are
28:09that are coming to mind?
28:11>> Um, Shopify app pricing, um, is is is
28:14another big update.
28:16>> Okay, what is it?
28:17>> What is it? Um, so,
28:20um,
28:22prior to this, we had, um, the billing
28:24API. Um, the billing API was like fairly
28:28simplistic, um, because it was basically
28:30like a credit and debit mechanism.
28:32Um, and as a result of it, it despite
28:35its like it had good power, uh, but it
28:37would very often create, um, opaque
28:39pricing situations for merchants.
28:41Because, let's say you have an app, and
28:43your app has a monthly recurring in of
28:45whatever, 19 bucks a month, And then you
28:47also have some usage-based fees Uh, um,
28:50that
28:51that that that that that your app is
28:52charging. Like maybe you're again you're
28:53doing email scenarios, and so you're
28:55charging per thousand emails sent or per
28:57thousand SMS sent, which is done on a
28:59usage basis.
29:01With the old billing API,
29:04um that all the usage-based stuff in
29:06particular was quite opaque to merchants
29:09because they wouldn't have an
29:10understanding of what um
29:13of all of of of of of all of all of all
29:14the charges happening.
29:15Which our flat pricing, we basically
29:17took the managed pricing that we already
29:19had, which is which does monthly
29:20recurring charges, and we added a
29:22usage-based
29:24component to it. So now what happens is
29:26a
29:27developer partner will set up their
29:29meters in the partner dashboard and say,
29:31"Hey, I have a meter for emails sent. I
29:34have a meter for SMS sent. And here is
29:36how I charge for those meters." Right?
29:39So again, per thousand emails, I'm
29:41charging 10 cents. Per thousand SMS, I'm
29:43charging 20 cents.
29:45All that information is then displayed
29:47properly on the app store page.
29:50Um and so we we we take all the
29:52information, and then it also cascades
29:54down into the install experience um and
29:56and and beyond.
29:57>> [snorts]
29:58>> Then at runtime, the developer is
30:01incrementing those meters using our app
30:03like using our app event API, not to be
30:06confused with events, but our app event
30:07API allows [snorts] them to increment
30:10those meters for the shop and say,
30:11"Okay, this shop just consumed this
30:14number of emails sent."
30:16We then aggregate all that information
30:19um
30:20and produce
30:21a a monthly bill for the merchant where
30:23we can then show them, "Okay, here's
30:25exactly how it breaks down for emails
30:27you sent, SMSs you you sent, and your
30:30monthly recurring charge." So um
30:33it makes it way simpler for developers
30:35to build the pricing they want, and then
30:37it makes it way better for merchants who
30:40have the transparency
30:41>> [snorts]
30:42>> um into how they're
30:44into how they're getting charged.
30:45>> Okay, I feel this this is really cool.
30:48So I imagine this sort of like the usage
30:50page on my AI tool of choice. I'm not
30:52sure if we can cross-reference other
30:53brands.
30:54>> Yeah. Yeah, yeah.
30:55>> But it shows me like tokens used per
30:57month, right? Tokens per week. And I
30:59kind of imagine like this SMS sent this
31:01month, email sent this month, whatever
31:03it might be.
31:04And then you get like the full breakdown
31:05and price transparency if you want.
31:07>> Exactly.
31:09>> Awesome. I don't have anything in chat,
31:10but
31:11>> Nice. All right, cool.
Wrapping up
31:12>> Cool.
31:13>> [clears throat]
31:13>> Yeah, looking at the clock here, we've
31:14been talking for about half an hour,
31:16which was also the the aim time.
31:18Um so if you don't have any other like
31:20super urgent topics, I think we covered
31:22a lot for one podcast, and I would like
31:24let people digest it and then ask
31:26questions if they have some.
31:27Um but otherwise, I would like thank you
31:29so much for your time. Thank you for
31:31elaborating everything. I think you're
31:32like one of the best partners to
31:34interview about these technical topics.
31:36Um so yeah, really appreciate you taking
31:37the time.
31:38>> Thank you, Jan. This was awesome. Always
31:40wonderful to chat with you. And and so
31:41thank you so much for the opportunity.
31:43>> Thanks so much.