 Actually, I had to change the background colors. I could see the mouse, because it's really far away. And we could turn some of the lights off, but we don't go to sleep. Let's see what we can do. Who went to the keynote today? How was it? I missed it. It was good to watch the recording session. We were rehearsing from yesterday's keynote. My name is Gabriel Parts-Dan, and I'm part of A.B. setup. So far, everything's been amazing. We've got hot mics. We've got the hallways for you. I think we're going to do it. I'll do the hallway for you. And you name it. Gabriel. Gabriel. Thanks a lot. My pleasure. Did the session help you out yesterday? Well, it did. The reason it didn't is because the module that needed the library didn't have Composer setup correctly. So for Composer to work, it has to know that there's a library that's needed, and then it'll just download it. But if the module doesn't? If it's not set up for Composer, it won't. Composer can't do much for you. That's what happens. Yeah, yeah. But now that I have the library there. Composer's not going to keep it up to date. And you might have a small issue when that module eventually does set up Composer correctly. Because it might try to put it in a different location. Where'd you put it? Did you put it in the vendor folder? No, that was my. Yeah, because if you put it in the vendor folder, it wouldn't load. Right. This is not a Composer session. But what happens with Composer is it reads a YAML file, pulls in libraries and dependencies for those libraries, puts them in the vendor folder, and it creates a PHP file that includes all those for you. So even if you threw something else in that vendor folder, the autoloader wouldn't know about it. You should just leave it where it is. Any time you update a module, just read the release notes. Usually they'll note something like, I would definitely open an issue for that. Because it's probably a two or three line fix. It's really easy. We've got about 10 minutes before the session starts. This is for Drupal Commerce. And it will be a site building session, not a front-end dev. Like the pamphlet says, just to let you guys know. So if you're looking for front-end dev, we can touch on it a little bit. But that wasn't necessarily what we had anticipated. So I won't feel bad if you get up and walk out of here. Drupal Commerce does a lot of fun to talk about. It's worth sticking around for. Any questions about Drupal Commerce before we get started, since we got a few minutes? No one? Anyone? Yeah. When you say update, what version? You mean to upgrade to Drupal 8? Oh, you have Drupal 8. Yeah. So if you're running commerce on Drupal 8, you have to use Composer. Yeah. Yeah. I get that. I do. I was very hesitant, too. You guys are the only reason that Drupal is possible. Well, the primary maintainer of Drupal Commerce, Bojan Zvonovich, who will probably be here. We'll see. Key is the reason Drupal.org manages with Composer. Drupal.org now supports Composer packages because of Drupal Commerce. Because, and the reason that is, it's really interesting, the history of Drupal Commerce starts with UberCart. And UberCart was built by Ryan's Rama. And it was very insulated. Lots of user experience and user interface was built one-off for UberCart. And a lot of people wanted flexibility with their e-commerce systems. Imagine that. People have different business needs. And so UberCart became kind of a phoenix between Drupal 6 and 7. And out of the ashes came Drupal Commerce for Drupal 7. And it was a complete rebuild of UberCart using the entity system and all of that other stuff. And we had the same problem with Drupal 7. We had a lot of insulated, very Drupal ideas about how commerce works. But the greater PHP community had lots of things we wanted to use. And Android had open sourced their address information. And the address information was available as a PHP library. But you can usually get somebody to download maybe one or two libraries, a JavaScript library or something like that for your site. But when we started needing like 15 different libraries for Drupal 8, we needed a package manager, somebody that could go in and say, oh, you need this library, which needs this dependency. By the time you're done, you really need something like Composer, unfortunately, to install the Drupal Commerce that is extremely flexible but also complex. That's always funny. We're just chatting here before the session starts. So if you guys have any questions, throw them out there about Drupal Commerce or anything like it. There is already a Drupal 8 version. That's my favorite question. That is a great question. I'm going to open up a tab here. What is it? CommerceKickstart.com? If you go to commercekickstart.com, this wasn't part of the presentation, but I don't know why it shouldn't be. This is the Commerce Kickstart for Drupal 8. And instead of install profile, we have launched a, sorry, yeah, that tab is kind of hiding that. We've launched a interface, kind of like, if anybody remembers jQuery, and where you could say, I want these three things on jQuery, but I don't want anything else. Or Bootstrap has the same idea. You just kind of build it, point and click the pieces you want. So what this does is it lets you choose exactly what kind of modules you would need for your Drupal Commerce setup, the install profile, the distribution, the various payment gateways, and shipping, all of these other things. And then at the end, so let's say we want PayPal, for example, at the very end, data migration. And the plan is to support Shopify, Magento, Woo Commerce, all of those by the end of this, probably in the next year or so. There's a lot of effort going into data migration. You can actually download it right there. You can download. And what you end up downloading is a composer file and a script that you run on the command line, and it'll just install Drupal Commerce for you in the correct way. And it also gives us a vector to continue funding a lot of these Drupal Commerce efforts by allowing payment gateways and shipping gateways and any other modules that might want to be quote unquote featured. It's a way we can feature an open source community like this and fund a lot of the community development that's happening. So it's an interesting change because Commerce Kickstart for Drupal 7 was a Drupal install, and Commerce Kickstart for Drupal 8 is a tool. So hopefully that answers your question. This has been out for maybe four or five months. Yeah, four or five months. It's gone through a couple of changes. It's all on GitHub. You can open up an issue if there's something that's not there. You can actually commit to it. I think it's Node.js or something similar. Drees published a blog post about it. February. Yeah, two months ago. So we actually got a lot of traction from there's a lot of people using it. But hopefully more people could start to use it. CommerceKickstart.com. Not used to having a monitor facing this way and one facing that. So the lines don't quite line up the way you would expect. I think we're going to get started here in a few minutes. Anybody else got any other questions? Since we're all here early? Yeah. So the question is, is it extensible the way WooCommerce is? Yeah. Yeah, so I'm going to say this is a pretty high-level question about Drupal Commerce in general. Is it extensible or is it kind of a one-off thing that just works the way it is? Drupal Commerce, and this is actually a big part of what we're talking about today at today's session, it's built in the same way that Drupal's built so that there's really almost zero opinions about what your data model is or how you want to use it. And the ecosystem of Drupal is built in such a way that your modules all kind of work together. And so they don't, in a lot of things in WordPress and Squarespace and some of these other builders that are out there, these modules actually kind of, you install the blog module and you control the blog through that module. In Drupal, you create a content type with fields that you consider a blog. And then you use views to control how that blog is listed. And you can put lists of that blog, maybe on your homepage, maybe on your product pages. And it just all kind of works together. Drupal Commerce is the same way. They're using the same thing. So if you want to use like a CRM that connects to Drupal, Drupal Commerce will work right out of the box with it. Check out, it'll start doing your thing. User data will get shared and connected and all of that too. In fact, we do a lot. We've done a couple, can't think of it off the top of my head. What's the CRM? The Civ-E-C-R-M? Yeah, Civ-E-C-R-M. Yeah, that's it. Civ-E-C-R-M's a pretty common customer relation management solution that does run alongside Drupal. And there's a lot of really cool stuff you can do with commerce for that. Okay, and there are another statistic right before us. Session starts. There are about 500 Drupal Commerce modules that come up with the keyword commerce for Drupal 8. And there are about 1800 for Drupal 7. In my experience, there's probably closer to like 800, 900 for Drupal 7 and maybe more like 50 or 60 that are really like useful for eight. And you really have to think about it though because a lot of these tools are on like version five or six and we start to integrate some of these other modules that you might have needed for Drupal 7. It just works out of the box for Drupal 8. So that's, when you see a project start to mature, that's what happens. You start getting the simple and obvious things start to become part of the original package. I think we're gonna get started here in another minute. How's our audio guys? Good, okay. I feel like I almost need to like move them because I'm gonna address the screen too. This will be my first time ever presenting sitting down and I'm Italian and it's like impossible for me to not do these big arm circles. So somebody give me a signal if I'm doing that. Make sure you're not gonna knock over the water. Presenting sitting down feels very bizarre. Okay, well I guess we'll just get started on the dot at 10.45 a.m. You are at, I'm gonna start my counter here. So we know. Put up the presentation, take down your numbers. I thought I had it up. So you are at one entry point and this is a session about Drupal Commerce as it relates to the real world. And by that I mean not just a website but how you can use your website to interact with your business, how you can use it to solve physical business problems like getting products to customers, dealing with retail spaces, a number of other doors that your customers might come through. We're talking about this one door that your business owner or maybe you as the business owner can use which is Drupal. Drupal can solve a lot of these problems out of the box. So I did also wanna note and I said this a few minutes ago too. Some more people have come in. In the pamphlet it says this is front end dev. I can touch on that in the Q&A if you guys want to but it was initially billed as site building. So we're gonna look at some modules, how they're configured, talk about, Becky's here to talk a lot about the business use cases as well. So any questions about that before we get started? All right. We good? Yeah. Let's go. Okay. So some quick intros about who we are. So I'm Becky Parasado. I am the director of business development for Acromedia. We're a Drupal commerce house located in Kelowna, British Columbia, Canada. This is my fourth DrupalCon attended but this is my first time speaking at one. And I'm pretty excited about that. I spoke at Pacific Northwest a couple years ago which is a much different kind of vibe, very technical. So excited to be here doing that. I've been working in the Drupal space since about 2010 as a project manager first and now on the business side for about the last three years. Yeah. So and then Josh, my teammate. I'm Josh Miller. I've been in Drupal for entirely too long, a little over 10 years. I've been at DrupalCon a number of times and I've spoken a couple of times. So I'm really excited to be back here and able to share a little bit more about Drupal commerce and really excited to show you some the behind the scenes pieces about how physical things happen with Drupal commerce. So a little bit about what we're gonna talk about today. Firstly, we wanna talk about what defines commerce online, offline and together because that's really the crux of our talk is about how your web store can power your business physically and your physical business can then in turn power your web store. So Josh is going to give us a couple of technical deep dives into a few specific modules. We're gonna talk about point of sale. We're gonna talk about how returns work like actual physical product returns. We're gonna deal with stock and inventory, multi warehousing and fulfillment. So there's a whole gamut of stuff that business owners have to deal with on a day to day business that Drupal commerce can really touch on pretty quickly. And the buzzword omni channel is used all of the time. So we're gonna try to show you through our a few demos throughout the presentation that leveraged the omni channel field. So starting a transaction in one place and completing it or working on it in another place whether it be in a store or online. And then I'm gonna just relate the technical modules to what those business opportunities look like and how we've used them and leveraged them through Drupal and Drupal commerce for finances, accounting, product management, shipping, fulfillment, stock and inventory, all that kind of good stuff back to the business case. And then we're gonna wrap up with a little bit of Q and A if you guys have anything for us at the end. So the first question is really Becky's question. The answer is what defines commerce for business owners and customers? So commerce is pretty widespread for business owners and customers. Commerce means essentially spending money and taking money. This can be online, offline or a combination of the two. Customer-centric transactions is something that we've learned commerce really means and tracking stock and inventory control. So product management and data management are really at the center of everything to do with commerce both online and in a store and then fulfillment. So after the order is taken through the website or through the point of sale, what happens to that product and that customer service rep? What do they have to do to fulfill that order? So really we're just trying to connect the customer's experience seamlessly but also make that experience easier and more affordable to transact for the business owner at the end. And the other question is what is Drupal commerce? So it's a good question to ask right before we talk about some of the details. And it's basically a module that you install on top of Drupal that helps you sell products. That's what it comes down to. It's become a lot more than that and as you might imagine a large content, open source content management system like Drupal, the e-commerce side of things is pretty active and pretty interesting to see what people are doing to solve some of these business problems. But in general what defines Drupal commerce is that it's open source. It's un-opinionated. That means when there is a data model it tries to be very open and flexible. We don't try to tie you to a particular idea like every one of your products has to have a skew. We try not to tie you to a particular idea like you need to have a cart or you need to have checkout. We simply build these pieces that all interact in a certain way but you can turn them on and off and you can modify them like all other Drupal projects. So it's designed to be un-opinionated. It's designed to be flexible. And the best part of it and the thing that I like the most it's community created and community maintained. There's not one company that does everything for Drupal commerce. In fact there are 69 contributors to commerce too. And that's kind of incredible because I'm pretty sure commerce one had something like 15 contributors. So it's really increased over the last couple of years and we've seen a lot more engagement. So that brings us to what we're gonna be talking about specifically today which this slide here has kind of a summary of what we're gonna be going over. I have a few interesting statistics that I shared just before the presentation too. There are almost 1800 modules for Drupal 7 that mention Drupal commerce. That's a lot of modules. There's a lot of stuff you can do. There's a lot of like discount modules. There's a lot of shipping services that you can integrate. And a lot of these Drupal commerce modules are integrating third party services or giving a particular opinion like maybe your checkout needs to have a different UI. That kind of stuff all exists in Drupal 7 and there are currently 500 or so Drupal 8 modules that mention Drupal commerce as well. Same kind of thing and usually there's most of the modules are going to be Drupal 7 and Drupal 8. There's not a lot of Drupal 8 modules being developed currently. That didn't already exist for Drupal 7. I'm sure that will happen as the platform matures a little bit. And one other kind of interesting insight here that I can give you is security is really important both for the business owner but also for just anyone that's doing Drupal commerce. And just since there was a Drupal get-in that happened a few days ago. I don't know if you guys heard about that and you had to update all your sites. The security team has kind of come under a bright light. There are 30 people on the Drupal security team. Of those 30 people, 16 of them have committed to at least one Drupal commerce module. So there's a lot of interest and a lot of security going on with Drupal commerce. Otherwise, I think maybe you can do a little summary too of what you'll be talking about. Sure, so I'm just gonna touch on the business aspects of Drupal commerce, how it can operate the business. Usually when we're qualifying people, not everybody is a good fit to use Drupal commerce. It is very flexible, it is very robust. If you're just selling a single product, it might be too much for you. So how do we gauge that level of need? And I usually think of it from being able to solve a business pain or a problem. So some of the markers that I listened for are, the number one is always about stock and inventory. Is your stock and inventory out of sync across channels? Do you sell on Amazon and eBay? Do you sell in a store and you have a website and somebody's manually updating all of those items? Or you can't track stock because that's too complicated for you. If I hear that, I think right away that you're likely a good candidate to use Drupal commerce because you can centralize that data just through the website but power all of those various channels. Also, people that are paying huge fees, so they're using some massive SaaS platform and they wanna invest that money instead into their own digital roadmap. Drupal commerce is open source like any other part of Drupal. So there's no licensing fee. And also customers that constantly wanna customize parts of their business. So they don't talk about it like customizing a module because they don't use, they don't have that language yet in their toolbox but they wanna customize their workflow. If they wanna customize, then Drupal commerce is likely a good option as long as they know that with customization, you have to choose that over speed to market. So if you can have that conversation, it's typically a good outcome. And also customers that wanna be involved and change their mind a lot, changing your mind in your physical business can be reflected in your online practice and we can change the workflow to match because it's extremely adaptable. So those are the type of business markers that we look for in recommending Drupal commerce as the right solution because it doesn't fit for everybody. Surely businesses that have a really set business model don't change their mind a lot. I mean, come on, that doesn't ever happen. Before we dive into some of the specifics, I just wanted to give you guys a quick overview of some of the modules that are pretty key for Drupal commerce. We have a nice big printout of this at our booth as well where there's actually some notes written on it from other contributors about what the releases are. But on this list at the very top, that's Drupal commerce, which went fully stable for version two in September of 2017. So we've had a number of minor releases and so far, Boyan has done an amazing job at keeping that release schedule with Drupal core and I think that's what is planned from now on. So commerce 2.5 is going to match Drupal 8.5 and so on. So those minor releases twice a year are gonna happen for commerce too, which is good news because Drupal 7 has gone almost a year and a half without a release and that just happened. Drupal 7 had a security release and a future release just a few weeks ago. So we have shipping, UPS, migrates, point of sale. We're gonna run into commerce license. Some people were asking about commerce license earlier in the session. A lot of these modules are all getting worked on right now by community members, by companies that need them and a lot of these already have releases, beta, alpha. Some of them are just dev releases. I'm thinking we're gonna see this chart will look very different six months from now. There's a lot more momentum coming through here. A lot of the key modules that you might be dependent on in 7 as well that you don't see listed here, it could be the case that they've actually been absorbed into core as well, much like Drupal 8. That was a big trend for commerce 2 that a lot of the modules that were essential to setting up your commerce install have now been absorbed into core. Yeah, but for sure the kind of stuff we're talking about after this slide where we're talking about point of sale and that kind of thing, all the sites that are out there right now running this are Drupal 7. They have fulfillment, they have point of sale, but point of sale is about to be released as a release candidate and a lot of the fulfillment and shipping stuff is actually already done. So it's only a matter of weeks, maybe months before we start seeing real live sites doing this for Drupal 8. So the first module that we're gonna give you guys a little walkthrough of is the point of sale. It is the lead developer on it's Sean McCabe. He's one of our teammates at Acro. So in general terms, what is a point of sale or POS? It is the physical hardware combined with some sort of software that is taking the transaction at the till for a customer most typically. I got told that till isn't a word today. Is that a word to y'all? I don't know, I don't know. Register, they took. It's a register and a cashier. Josh said it was a little Canadian. I don't think that's a thing. I don't know what till is. Maybe it's Canadian. If I say till I mean register. So after you see payment from that customer and you complete that transaction, you need to do a few typical things with your register. You need to be able to print a receipt or send a receipt electronically. You need to be able to also conduct returns from that point of sale system, tally money, track your employees often, run stock reports, all of that sort of good stuff. So traditionally a point of sale is set up in the fashion where the web store is completely independent from what's happening in the physical store and that physical point of sale is typically a SaaS platform that you pay a service fee on. So we turn that concept on its head a little bit and turned it into a full on Drupal commerce module that Josh is gonna walk you through. Yeah, so this is our first demo where I'm gonna show you the point of sale in action. But I wanted to just quickly describe kind of what we're doing technically here. We've got a Drupal site and it is running Drupal commerce. Now some people, they don't want an e-commerce site. They just need retail. Other people only have an e-commerce site. Either way, you go to a hosted website and you log in as a Drupal user and then you click on point of sale. At that point, that's where the demo takes over and I'll kind of talk you through what's happening there. So this is an actual website that we're logged into here. So this is Drupal 8. So we're running Drupal 8 and point of sale right here. And to get here, you literally just go over commerce and mouse over point of sale and you click point of sale. Before you actually open up a register for the first time, you have to create a register. You have to create a store in Drupal commerce. When you create a store in Drupal commerce, you're choosing things like a location, like if actual physical address, you're choosing the currency. All these other pieces are already set up or they're assumed to be set up when you install point of sale. And you're registered, you can have more than one register per location. You can imagine a store has multiple locations and multiple registers in each location. So once you've done that, you would select a location, which we've already been selected for us because there's only one location for this store. And then we have two registers. The booth that we're at, we're showing a demo, so I'm not gonna take over their register, but I'm gonna pretend to be the back desk and I'll just go ahead and open the register. Now when I open the register, it starts the drawer, the physical drawer that we have with whatever the float money is. And I've never actually worked retail, but I understand that your drawer actually has money in it to begin with, which makes sense, because you might have to give change and that kind of stuff. And at the end of the day, when you're done, you're gonna need to know how much money is in your cash drawer to see if that multiple cashiers, maybe somebody gave someone the wrong change or there's some sort of discrepancy and this module handles all of that for you because it's tracking the transactions, gives you an end of day report. So this loaded up the last order that I had set up there, so I'm just gonna go ahead and remove that order. This is just essentially what is Point of Sale. It's an order editing interface, but it's designed for a cashier to use and it's also designed to work as a touchscreen as well. So there's kind of big buttons, a lot of the ability to do things like find existing customers is all designed to work within the same interface. So the first thing you might do is you might have like a little barcode scanner and it would either type in a skew number or a product number and then it uses the same catalog data that your e-commerce site has to pull in the correct product variation. And once it does that, it has a price, you can change the quantity. And what you're not seeing here, but you can see at the booth demo is actually also have another customer facing screen that's constantly updating what is in there, essentially their cart or what's being rung up. That's pretty common for retail stores, very uncommon for e-commerce sites to have like a two screen scenario. But you can set up another screen so that when your cashier is doing this, the customer sees kind of a customer facing thing so they can see what's happening. Once you've added a product, this might be a customer relationship thing and we're gonna talk about returns later, but you can actually set a product as a return and the change that they're getting also includes the taxes that they would have paid and then the initial checkout. And you can also edit orders and do returns that way as well. So down here, you can go ahead and select a particular product or customer so you can bring in a new user. And of course, this is all using Drupal so all of these interfaces can be modified as well. Once you've set the customer, you have all that customer data, we can go ahead and do payment. Now payment, of course, we can use credit card, debit, all this other stuff. You can have a payment terminal where somebody might use Apple Pay, you could use a credit card, all of that other stuff. I really like the cash default because first of all, it gives us a really fancy calculator which you don't normally see on a website and it also brings in exactly the right amount of cash which whoever actually holds pennies in their pockets, I don't know. So let's go ahead and say this person gave us 40 bucks. We add payment, the change they get is 3152 and we can go ahead and complete order. Now for some reason, this happens to me all the time because I'm kind of harebrained like this. I forget my wallet at home and I don't actually have a way to pay so maybe somebody needs to park the order. This is a really cool experience though because if you park an order, basically you've already created an order or a cart if you wanna think of it that way and then all the cart abandonment modules that exist for Drupal Commerce can work for your retail space too. So you've already set it to add to your customer data. Now you know this customer was interested in this product and MailChimp for example can take over and remind that customer in a week or two to go back to your website and finish that order. Maybe they have their payment now. So that's one example of a way that these things can all come together. And that's point of sale. Back to the presentation real quick. Real life, this is actually point of sale in the wild and this is one of the things I wanted to do with this presentation to show you guys this is actually working in a real life scenario. This is a small screenshot of that same interface running Drupal 7 on one of our customer's websites. They have two different locations with a register in each location and they're running through maybe 30, 40 orders at the retail space and about 100 orders every day on their e-commerce site. So there's a lot of movement of stock. There's a lot of physical product that's getting ordered and being put into customer's hands. So it actually does work. It's kind of fun to build this thing and then actually see it in action. And one of the things that this customer really likes is the shared customer data but also the inventory. Being able to know that their Amazon integration isn't going to try to sell a product that a customer just bought at this register real time, that was huge for this customer and it just works out of the box because it's one website and it knows where things are. So how this is working from a business perspective, what Drupal Commerce is doing from a business perspective for these customers. Firstly, it's eliminating that service fee and sharing the profit off of each transaction which is pretty common in a POS. And what we're seeing is that customers are basically building out a very custom workflow in the POS even. So things that we wouldn't have ever imagined. So the actual interface that Josh walked you through first showing you the back end of what it looks like from the admin perspective, it's pretty plain. And where we've seen it go is extremely custom. Combining services with physical products and all of those sorts of in-between models happening in the POS. So we're seeing a bit of a case-by-case investment back into their own product which I think is pretty interesting. Some of the ways that I think it's a benefit to the business that Drupal Commerce is helping solve these problems as well is that they're maintaining a single tool. So when you maintain the website, you are also maintaining the point of sale. So it's one code base and you're training your employees on one code base, one tool, one administration system. For the customer service reps that are using it every day, they can access the customer's online shopping history. So that's a pretty big deal. You enter in their email address when they come up to the register in the store. You can see what their purchase history was that they purchased at home online. You can also see if they have anything left in the cart and you can complete that transaction for them in the store. So you can get that by online, pick up in store scenario happening as well. And I think that it's really key to touch on again the fact that we used Apache Solar in this build. It's key to touch on the fact that when you're searching for a product in the point of sale, you're also searching the website and you're also searching the Amazon feed and everything is connected in the way of stocking inventory. If any of you sell on Amazon, you know the penalty that comes and the heading that comes with accidentally selling a product that you don't physically have in stock. So you can see that somebody's returned something, it can be in transit back, you can engage that back into your stock and be already selling it again on the Amazon channel. So that connectivity has become really key with Drupal Commerce in the way of the point of sale system. So those are some of the biggest game changers that we've seen so far in installing it out in the real life scenarios with customers. One technical point there too, if you're aware of what Apache Solar is, it's designed to be a very flexible searching interface that's extremely fast with large sets of data. So if you're working with hundreds of thousands of products or even more than that, or variations of products, then these kinds of interfaces can also benefit from real-time data that's actually updated when somebody purchases it on Amazon or purchases it on your website or purchases it in your store and it's still ridiculously fast for your cashiers, which is one of the big pieces to checking out and a retail space is how fast can you get that money from your customer and get them out the door and that's a really important piece as well. So yeah, so we'll just keep going there. One really interesting version of point of sale that we found on Drupal.org, there's a whole bunch, there's really hundreds of these write-ups of case studies of websites that are being built for Drupal and on Drupal and this one we didn't do, but I found it really interesting, I wanna bring it up. Z Kung Fu, they were $2.5 billion business in China used Drupal 7 and commerce on Drupal 7 and built their own point of sale system that didn't require internet and they said half their sales come through this point of sale system that they built on top of Drupal 7 commerce, which I think is incredible. This is the screenshot that they posted on Drupal.org and it's a very similar situation you've got. It's maybe a little more Ajax-y, a little more clicky there, but they have an entire point of sale system that's being built on top of Drupal and a very large company has said this is critical for me to have total control over the data model and how that works. And it's also scaling. Yeah, all I can think of is really that they're saving the transaction fee on a billion and a half dollars is probably their motivator, which is a pretty strong motivator. I'm sure that paid for the infrastructure to make that work. So Josh is gonna walk us through the returns set up now. Returns in a very general term for a business means that you're gonna add that stock back to the inventory across all of your channels and you're gonna return the money to the customer likely in some fashion and we wanna be able to track this process historically in the customer's account for future reference. And we also need to be able to often do some smaller, more detailed things like produce a return shipping label for the customer from their home so that they can put it on the box and it back. Often in the retail location, they need to reprint the hanging tag so it can be scanned again at the register in the future and we need the in-house inventory, the Amazon inventory, the web inventory and so on and so forth to know where that item is gonna return to. So if they're dealing with multiple warehouses, where is that item going and when is it back? Returns are a really interesting use case because there's two ways to solve them. There's always multiple ways to solve something but we've seen two ways grow organically in the commerce space. Number one, we have a commerce RMA, commerce underscore RMA module and that is just to literally install it and it should just work. It gives your customer the ability to look at their order and return every single product that they've purchased. They essentially fill out a form based on their order and you're notified as the administrator or the store owner that somebody wants to return something and then you can kind of go back and forth with them until everything is resolved. That's the just install it and forget it way of doing things. The more common thing and the thing that I think Becky and I see the most of is very customized business logic that's already existing. Most people are not doing this for the very first time and they already have business processes set up to handle the way returns work, to handle the way their customer service deals with these situations where a product needs to be returned and those kinds of things work really well for Drupal because there are some very generalized modules that you can use like web form and views and all of the form APIs and the fact that orders are fieldable so you could actually add fields to orders to track states of returns. All these customized workflows that businesses tend to have work really well when your tool is something as flexible as Drupal. So basically if you can imagine it, whatever workflow you can imagine, you can build with Drupal and some of the modules that already exist. Either you can build it inside the interface or usually with Drupal 8, you're building a little bit in the interface and a little bit in PHP as well. Oh, something else I wanted to point out is in Drupal 8, commerce point of sale, which I showed you earlier with that checkbox, it supports returns out of the box and returns are really useful when you have a retail space because you can interact with the customer one-on-one. Usually the customer service section of most stores has at least one person there ready to deal with returns and so that return workflow already exists for point of sale. Up here on the left, we have commerce RMA, just kind of an example there. Basically you can select a reason, you can give your customers reasons that they would want to return it. That can kind of modify. If the customer doesn't have the reason they want to return it, they didn't like it. If they don't have that reason, maybe they won't return it. On the right here is a workflow, a customized workflow that we built for a customer. Again, it's a live site that people are actually using and if they've returned it, we have a way for the administrators to add a label for the person to actually print off at home and stick on a box and you can actually, it's hard to see in the way the lighting works in this room, but it actually says view return shipping label and that's a link and you can click it and download it and the line item below that says this item isn't available for returning and the administrators even have a link there because I was logged in as administrator when I screenshotted this, where they can override the fact that somebody might return this. So if somebody calls you up, building in that part of your workflow so you can override those business rules you have can be really helpful. And at the very bottom there, we're actually taking the return postage fee off of the money that we're returning to the customer. Those are the kinds of things you really wanna think through that way you minimize the risk to your business too because if it costs $5 to ship it to your customer, why not let your customer take the hit on that particular return? Maybe you don't want that, maybe that's part of your business rules. So return workflows are surprisingly complex. Like Josh mentioned, I've never seen somebody with an out of the box return workflow so we didn't really attempt to tackle an out of the box workflow with commerce returns. Every customer wants to have a different initiation step as well as an example. So some people require their end user or end customer to request a number or send a picture or all of these sort of different conditions. So really that's how I've seen returns most modified is matching those human steps that happen in their store with what's gonna happen online and allowing either the customer to engage with that, the CSR to engage with that or any of those steps along the way. Allowing a customer to also begin a return online and then come and drop it off in store and complete that in store if they live in the city. That seems to be a really common way that this has been leveraged as well. Some of our customers and I'm sure other Drupal commerce users wanna make it a little bit difficult to complete a return completely on your own at times to discourage a return and allowing for customers to be forced to take the money back in the way of a gift certificate we've seen or only allowing to credit the account. So that type of connectivity can allow for a person to return physically at the register but when they're shopping on that brand's website again and a few months down the road that credit's waiting for them in the website. So none of these conditions are forced upon you with the module but the module is often leveraged and customized to be used in that regard. And then the last part of the return is what happens to that good when it comes back to your warehouse or your store? Do you throw it in a box called returns in the back or do you put it back into the workflow? So what inventory is it going into? Is it going to be sold on Amazon? Does a person need to physically look at it and approve it before it can go back into stock and inventory workflow? Is it going to what warehouse? All of those sorts of conditions can be handled by the brain of Drupal commerce but it's working for your physical business not just for the customer's experience on the web. And a little bit of wisdom that we've learned in trying to help customers go through this physical side of commerce. As a developer, as a business owner, everybody wants to automate what they're doing. You want all of these dominoes so that when the customer does something you don't have to think about it. The problem is, and this is I think a lesson hard learned for us in multiple ways is when you want to automate something that I think is a good desire but you want to check that at the door as much as possible and you want to put as many humans in places. Humans tend to cost a little bit less short term and a little bit more long term but if you put a human factor in place for all of the processes you want to automate and then you do a really good job at documenting those processes and trying to think about what part of that process takes the most time, then try to automate that one piece. Just automate it in piecemeal as opposed to an entire return workflow can save you money upfront but also can help you build something that is sustainable and scalable for your particular business or for your customer's business. And anytime you want to automate something I think that's an initial kind of gut reaction. I just want to be lazy and I want money to come in and I love that reaction. I feel that way too, right? But usually the way to make more money and to do a better job at your business is to really be patient and try to figure out what that workflow is and a good example of that is a client of ours. So Kudo Mobile is one of the big telecoms in Canada. We only have three competitors and they're one of the sisters to the second biggest. So you can imagine the complexity of what they do online in the way of selling phones and plans and attaching customers and their histories to all that. It's a pretty intense Drupal commerce instance but their returns workflow is not reflective of that because of the labor that it would involve with their customer service reps. We, they're taking into consideration about 30 million customers. So what does that look like for returns? It's probably a lot easier for them to just make a return on the phone or initiated in store. So they've handled it quite differently through commerce than maybe a smaller mom and pop shop or a business that might be in the million dollar a year range. Yeah, so they, even though they could probably afford to have a very automated system with all of their business logic, they really just have a single page that tells their customers to send an email call a phone number if they want to initiate a returns process and then their customer service rep handles it from there. And that's, you don't have to have really complicated solutions even if you can afford them. So I think that's kind of the truth and the thing we've learned there. So this is a busy slide. We've clumped together a few modules here because they're quite interdependent. So inventory and multi warehousing, purchase order manager and fulfillment. So these three systems are listed together because they make up a significant part of a business behind the scenes. We have been leveraging Drupal commerce and Drupal commerce has been allowing businesses to automate and connect these portions of their physical businesses and have them relate back to the web and the customer and run them all through that same system. So commerce is being used to run these key pieces of businesses behind the scenes. So things that a customer never experiences how you might imagine a typical web store to behave in Drupal commerce but being powered by the interface of commerce. So Josh is gonna walk us through the details of these three modules. Well you think about it though. Really what we're doing, these are all these industry terms. You have stuff that's your inventory. You need to get that stuff before you can give it to your customer. That's the purchase order manager. And then once you have that stuff and your customers purchase it, you have to get it to your customer. So getting stuff to your customer, that's basically what these three things are talking about. And they're the three hardest parts of working with e-commerce businesses that deal with physical products. So I'm gonna go through some of these pieces, talk a little bit about Drupal 8. I've got a demo here in the middle of it. Inventory, I think most business owners think of it as inventory. In the Drupal commerce world we call it stock. So we have commerce stock, that's the module. And there is a Drupal 8 release that is out there. It's actually not a release, I'm sorry. There is a Drupal 8 module that exists, but it doesn't have an alpha release yet. I'm not sure why. We've kind of bugged the maintainer of that. And they're waiting to do a beta release. The beta release is almost there. And once the beta is released, that means everything's gonna be stable and you can start to depend on upgrades from point to point release. And that beta release I think is coming soon. Right now if you install commerce stock on Drupal 8, you can install a field called stock per skew and it's an integer field and it goes up and down as customers purchase it. In Drupal 7, that basically, that same thing can happen. But the great thing about Drupal 8 is we've completely re-architected it so that it can be transactional so that the stock can actually have multiple warehouses. Because Drupal 8 has lots of stores. We're gonna handle the fact that your two retail locations and your one warehouse are essentially all three warehouses. And when an order comes in, where does that get fulfilled from? And what number, how much of product aid do you really have? Maybe you have three in each location, but only two of them can actually ship. So you only actually have six even though there are nine in stock. Those kinds of really interesting, complicated questions. It gets more complicated the deeper you go. Those are all gonna be handled by the data architecture of commerce stock. The next really I think interesting piece that I can show you and I have a demo of it is the purchase order manager. And this is kind of like going into, I'm looking for my, there we go. This is getting into kind of looking behind the scenes of a store that is purchasing product from vendors and then selling it to another, to an actual customer. So it's pretty common for e-commerce. And what it is when you install this module is you get a list of your purchase orders that you've created, if you have created them. And I've already, I've just created three for fun. And I've got an example vendor here and we have a partially received and two completed. And what's happening here is we're creating, let's see, I'll just dive into one of these so you can see it. Let it load. This is running locally, so in case the wifi didn't work. We have, this is an actual purchase order that we've set up here. We've got two different products that we've ordered from a vendor, three and four. And I've already just pretend said one of each of those have come in. So we're tracking product that's actually come back in from a vendor, given it a date. And if you click activity log, you can even see who actually received those. And if you have warehouses, this is Drupal 7. If you have warehouses set up, you could potentially say which warehouse they were received at. So the activity logs there and you can even receive all and it will go ahead and do the math for you and see and you can complete the purchase order. Whenever you receive quantity from the purchase order manager module, it understands your stock set up and it updates your stock automatically. So if you order 57 of this and 10 of these and you receive them using this module, it just updates those products automatically. We're gonna go ahead and do as part of the demo, gotta go back to this. I'm gonna create a quick purchase order as you can then see how this kind of works. You can make up a purchase order number. You can select from all of your vendors. Then when you create a purchase order like this, you can either save it as a draft or you can email it out to your vendor. So it'll actually create a PDF, attach it and send the stupid email for you. Again, there are parts of this you wanna automate and then there are parts of it that maybe you don't. Down here you can just like point of sale, you can start searching for a particular product and we can add one. And a big part of this interface that I found really interesting is it's not only giving you information about the product and how much it's in stock, but we're also showing you how much is already on order to help you avoid overordering something or maybe you need even more than the last invoice that you sent and they still haven't sent you any stuff. So you can order more like that and you can just say I need one more of those. Down here we have a bulk selection. So if you have thousands or hundreds of thousands of products, it's something that you could go in here and modify the quantity per skew of a particular brand or a category and then you can go ahead and submit the purchase order. This is when the email would be sent to your vendor and once that's happened, you can see that we now have an ordered purchase order and you can go into that particular purchase order and do what I was showing earlier where you can receive a quantity and update that purchase order. So that's just an example of a module that can help automate a physical problem that's actually kind of hard to do. Most companies probably use spreadsheets to do this, but if you can use a module to actually update your e-commerce store, then the stock is just gonna stay up and active. We actually helped a, well we, Josh, helped a customer in developing the purchase order manager and what they were able to eliminate was all of their staff staying for an overnight shift to physically count all of the stock and inventory in their warehouse and then have to make that order in prep for an event like Black Friday. So they came up with this, they could connect it directly to the vendors and it also helped with loss prevention and theft within the business because in receiving stock, nobody ever manually entered that number. It was controlled by the admin that had the power for the login and all that sort of good stuff. So it was economical in a couple of ways for their business which was interesting. Something we hadn't dreamt up, I didn't know that we needed in supporting the commerce ecosystem but turned out to be a pretty valuable tool. And I do wanna mention Shabana Navas is the one that did that module and she was trying to be here but her visa didn't get approved. So we miss you Shabana. The fulfillment section is the last piece that we're gonna talk about here and fulfillment is a pretty complicated process and it's gonna be hard to fit into the five minutes that we're gonna try to fit it into but fulfillment is the piece that you need once the customer has completed checkout then you need to be able to send that particular product to your customer and there is a commerce fulfillment module it's called commerce underscore fulfillment. You basically tell it what size boxes you have and then there's a wizard interface for the business owner where you can select which products from an order go into which particular box and then it actually contacts FedEx or USPS or whoever you've got connected to your site and it gives you a real rate that actually costs you money so be careful with that but commerce fulfillment will actually that you print a label that is specific to the box and how much that box weighs and then you slap that label on it and you send it out and that's really commerce fulfillment. The ability to help automate fulfillment with Drupal commerce is probably one of the biggest time savers that a retailer with a physical store or just an online business can benefit from. If commerce is like this, this is just the tip of the iceberg is what happens online and everything else in the way of being successful that we've discovered is about fulfillment like how efficient can you make that process that happens in the warehouse. So trying to have that conversation with a vendor or with Acro as a vendor as an example or with our customer it's a complete disconnect. We're never going to be able to understand what it is that you guys do in your warehouse so we have to go there and process an order with the customer quite often and see what are the steps and there are some steps that you think why are they like they're hand cutting these labels and stuff, we can easily fix that with software. Like Josh said, doing it in an iterative fashion is much smarter. Don't try to tackle the whole thing at once but the grace of commerce fulfillment is probably the biggest opportunity for businesses to save money and consolidate those practices between the web and the physical store. Also the biggest risk there because you're making a lot of changes to what your people do behaviorally which can be a complicated change management process but definitely the biggest payoff as well. Real quick note too for Drupal 8 commerce to shipping includes all of commerce fulfillment out of the box. So commerce fulfillment is going to die. Commerce shipping's got everything it needs including boxes and everything else that you would need there. I think we're just going to skip over that one and this is the wrap up slide. So basically in leveraging Drupal commerce for an enterprise level site even we're using Drupal commerce on the scale from a relatively average store up into an e-commerce setup where it's basically a headless framework and controlling 10 service calls per every transaction type of a thing. What it comes down to is offering freedom. You can choose to make the software match your business and make your business better instead of having to force your business into the box of whatever SaaS platform you're using or whatever prescribed commerce platform you're using. So we're finding that to be the most common conversation. Also being able to scale and grow as we all know is something that Drupal does very, very, very well. And I always like to talk to people about being able to change your mind down the road. So today what might be the very best tool for you to track for your warehousing as an example? Next year it might be irrelevant or there might be something better, cheaper, faster. So I always say you can always date your third party integrations with Drupal commerce. You don't have to marry any of them and then next year we can upgrade them if you want. You can change them out because it's very API first in how commerce is working. So also we encourage people to use as much or as little of Drupal commerce as they want or need it. I don't believe it to be the be all end all solution end to end for every business. That would be a dishonest approach to having conversations with people. Many businesses do fit into that use case and it is awesome to only have to use that or only get to use that. But being able to say you can use this section of Drupal and Drupal commerce that works well for your business and we compare it and have it talk to this other system that you're already using that seems to be quite effective. There's no sense in rebuilding it for the sake of rebuilding it and just connecting those two. So that's really how Drupal commerce seems to be leveraged most successfully in the business space right now. And from a technical standpoint, we're asking, not even asking, we're on this journey with a lot of our customers and you probably are too. Either you're the business owner or you're one of the builders of a business owner's website. And we're helping them really shift their focus from how is this one tool that runs my website going to connect with my point of sale going to connect with my fulfillment? We're shifting that focus to how can this tool actually help me solve real problems in the real world and maybe the integrations that we need to work on are something else that's maybe an Amazon integration or a MailChimp integration that can help that customer unify that customer experience in a way that can actually help and bolster your business. And that's the piece that I think open source. It can actually be disruptive. And when you disrupt a business, then you can actually start to grow pretty significantly. So I think this is a really cool tool that if we can get more of the community to be a part of, then we can actually start to solve more problems together and we can help a lot of these businesses grow. That's what we have. So we do have questions. We have a little, a few minutes for questions. And if you have a question, I'd ask that you just walk up to the microphone instead of raising your hand that way people can hear what you have to say. Hi, I'm Rowan from University of Wisconsin-Ismono. Does Drupal Commerce support 3D secure? 3D secure, yeah. So any payment gateway that you can install with Drupal Commerce can work with point of sale. The problem with 3D secure is it opens up another browser where you actually physically want the customer to enter their payment information, correct? Is that a good understanding of it? Yeah, you can get around, open up another browser window. It takes you to a different website. It takes you to a different location. Yeah, yeah, yeah. So that payment gateway can work with point of sale, but I would not recommend it because that means you would have to turn your computer or something around to your customer and have them enter the data or you're asking your customer to trust the cashier with their payment information. Yeah, but when I asked the question, it was in reference to online purchase, not all physical. Okay, yeah, online purchases perfectly supported. Okay, all right. Yeah, with 3D secure, yeah. Yeah, how's it going? Two questions. So in a situation, let's say a hypothetical laser tag company or like a laser zone, yeah, like entertainment center. So inventory includes, I got purchase orders for the equipment. I got purchase orders for the supplies to fix the equipment in-house. So I need the inventory and the purchase order management to handle both, not for sale, right? I'm selling admission tickets, I'm not selling equipment. Would these be a good fit for that? Or is there something outside of the commerce ecosystem? Right, right. So the purchase order manager, the module I just showed, would be a fantastic fit for that if it didn't have the assumption that you needed to use stock. That would be a single issue you could open and we could decouple it a little bit and it would work great for you. So otherwise, yeah, I think that's a great use case. Yeah, I'd love to talk more about that then. Yeah, yeah, absolutely. Hi there. Could you talk a little bit about reporting in terms of Drupal commerce and... Yeah, that's a really good, that's a fantastic point. I wish I would have put it in the presentation. Drupal 7 reporting has had its ups and downs for commerce. Reporting is really important for e-commerce people. You need to know how many sales you have. There is a commerce reports module that is open source, it uses views and it produces pretty little graphs and you can see month to month how much you're selling, you can look at taxes, you can do anything you can imagine, you can probably build with views for Drupal 7 and commerce reporting. I get a little nervous about suggesting you use that because it does not scale. If you have a relatively busy e-commerce website, you're looking at a couple hundred thousand orders easily and views kind of chokes on that. It can take up to three or four minutes for these reports to be run. Drupal 8, we know that's a problem, we're working on a solution, we've got a really low level reporting module that I think we've built for our customers and sometimes we'll install it. It's out there on Drupal.org, I don't know what it's called. It might just be commerce reporting or something like that. But the plan, and I think Matt Glammon talked about this at the Chicago Drupal camp. Nice, is it nice camp or is it? Bad camp. No, it's not bad camp. Mid camp, that's it. It's one of those camps. Mid camp, he had a whole presentation on commerce reporting. He showed it off and it is working and it's actually functional right now. And I think there's a good timeline in the next couple of months. We have a client that is very concerned about commerce reporting and they're also very engaged in the community aspects. So they're funding a reporting project right now and working directly with Glammon to develop it. So commerce eight reports, hopefully will be a lot sexier than commerce seven reports. And faster. And the point of sale has its own reporting suite for the basic stuff that you need at the end of the day in a physical store. So running a journal at the end of the day, reporting per... Per register. Per register and per employee, all that theft prevention kind of stuff. So separate reporting, but yes. Thank you. Yeah. Got one more here. I was wondering if you guys ever built anything like for selling classes and things like that? Okay, yeah. So education and dealing with like class load, that kind of thing. Yeah, that kind of thing. And then with that comes, as soon as somebody selects their course and says, yeah, I'm gonna take it. They haven't paid for it yet, right? Can you use the stock module to... You could use the stock module for that. It's always weird when people find use cases for stock and they correlate one-to-one with humans because I don't think of humans as things, but it's really interesting. Yeah, you could do that. You also are running into like probably not just a single invoice, but an invoice that would need multiple payments or a recurring type situation. And there are some recurring modules that are out there. Commerce license would be one possible solution for that as well. I've worked on a few projects where we've sold course registration and it's quite a common use, what you're describing, and also a few integrations with various LMSs to accomplish that as well. So I've seen it, but only in Drupal 7 so far. I haven't tackled one in Drupal 8 yet. LMS is a learning management system. There's an open source version of it. Okay, no or Moodle or something. Moodle, that's it. I feel dumb saying that. It's not loved. I know most people don't really like Moodle, but it does integrate with commerce. Oh really? Are they in D8? Okay, cool. One other thing is the commerce like gift registry, is that like something somebody's working on for Drupal 8? Gift registry. So there is a wish list module. Yeah, I've seen that. Yeah, yeah. Like an actual registry where people... So one of the features of the wish list module, which I'm a maintainer and don't maintain very well, one of the features we want to do is being able to publish your wish list like a registry so other people could purchase it for you. So I built a site where I used the current wish list registry and I had to do a whole bunch of work to actually make it work properly. Yeah, I'm sure you did. In seven? Yeah, in seven. So I was wondering if they were going to do that. Yeah, it's very possible because the wish list module just lists products. There's no reason you can't display it for other customers to be able to purchase for you. One of the things that we like to look at is Amazon and how it deals with things. And the architecture of Commerce Wish List is now built on the way Amazon handles that. The idea of that you could share your wish list with particular people or give it like a public URL that kind of thing. And when somebody, if you ordered like two of one thing, somebody can buy one of those for you and save it. So a lot of the pieces that actually track what happens after somebody might click on that product haven't been built yet, but it would be really, that's something we want to put on the timeline. All right, thanks. Yeah. Let's go with, we have two minutes. So how are we doing anymore? For inventory, interested in serialized and un-serialized equipment. So for example, a phone has a serial number. I've got five Google, you know, pixels. They each have different serial numbers, but I've got five in inventory. Is there a way in inventory right now to track that? Well, right now, since we don't really have a release of Commerce Stock for Drupal 8, I can't really say. I know the architecture is there to handle multiple SKUs, but I don't know, because what you're talking about is, this is a phone model, which would be your SKU, and then there are unique versions of that SKU. What's really great about Drupal Commerce on Drupal 8 is it does handle those use cases where the SKUs aren't the end product that you're actually talking about. Drupal 7, it's really easy. You just select, you just make sure those serial numbers are saved to the line item, and you can track the inventory that way as well. Yeah, so if you're looking for Drupal 7, line items are your friend, which Commerce Customizable Products. Okay, appreciate it. Yeah, yeah. All right, I think that wraps us up. Thank you guys for coming. Thanks, guys. We're right up to Alomar. Do you wanna put up your Sprint slide? Oh, oh, yeah, that's a good point. Hang on, you can't leave yet. Because we're gonna make you come to a Commerce Sprint. Please come to the Sprints on Friday if you haven't, and I'm actually gonna be mentoring in some capacity, and then if you can, as you're leaving here, open your laptops and give us some feedback about this session. Good, bad, or otherwise we wanna get better at what we're doing here. And I've done four Drupal con sessions and I've only had three people give me feedback. Maybe we can make it six, okay? Thanks a lot, guys. Thanks, guys. Yes, I haven't really worked with them. AQUIA's commerce stuff is actually built on to the Commerce, but it is Drupal 7. Yeah, that's a great news case. Yeah. So in a way, it's just fine. How are you doing? Because all of the models we were talking about work with Drupal 7. You made it. How long ago? We were talking to this Commerce Manager. We were really talking about this when you just talked to her. Exactly. They're just the three of us, aren't they?