We Made a "Simple" App. It Wasn't.
"Even if it ends up being something that ends the universe, it at least will have been a fun ride. So let's do it."
That's what Karl Meisterheim said when Kurt pitched him on building a Shopify app. Over a year later, Promo Party Pro is live, and the journey from "this should be easy" to "why is the cart API doing that" was anything but smooth. Kurt, Paul Reda, and Karl sit down to talk through the whole thing: why free gift with purchase is Kurt's favorite promo, the edge cases that nearly broke them, the popup cooldown debate that consumed days, and what it actually takes to ship a polished app on Shopify in 2025.
Swym - Wishlists, Back in Stock alerts, & more
getswym.com/kurt
Cleverific - Smart order editing for Shopify
cleverific.com
Zipify - Build high-converting sales funnels
zipify.com/KURT
Apply for Shopify Help
ethercycle.com/apply
See Our Results
ethercycle.com/work
Free Newsletter
kurtelster.com
The Unofficial Shopify Podcast is hosted by Kurt Elster and explores the stories behind successful Shopify stores. Get actionable insights, practical strategies, and proven tactics from entrepreneurs who've built thriving ecommerce businesses.
Kurt Elster • 00:00.001
This episode is brought to you in part by Swim. Here's the thing about wishlist apps. Most of them just sit there. A customer saves a product, and then nothing happens. Swim actually activates that data. When someone wish lists a product, you could trigger price drop or back-in-stock alerts and feed that intent directly into Clavio or your CRM. You're not guessing what people want because they've told you. Plus, customers can share wish lists for gifts and your team can view them to offer personalized service online or in store. And unlike card abandonment, wishlist data is permission-based. These are people raising their hands saying, hey, I want this. Just not right now. Swim's been around for over a decade. It powers 45,000 stores and installs in about five minutes. You can try it for free today at getswim. com slash Kurt. That's G-E-T-S-W-Y-M. com slash Kurt. Today on the unofficial Shopify podcast, we are talking about my favorite promotion, free gift with purchase. Okay, that's a little self-serving. We're actually talking about an app we recently launched, Promo Party Pro, that does, yes, just what I described, free gift with purchase. My favorite promo. And man, building an app for Shopify, this is, you know, one of several we've now built. It's something I greatly enjoy. And so I thought it We talk through it and you know trying to uncover and expose the reality of it. Because even with AI, turns out this isn't easy. It was never easy. It still isn't easy. But I think you know we've From our experience, really built something polished. I'm proud of it. I just want to talk about it, you know, have a chat with my friends here, Paul Rita and Carl Meisterheim, uh, on you on that experience. Mr. Rita. Thank you for joining us. Uh you're, you know, here with me in the office as always. And Carl, I see uh you're living in your car now.
Karl Meisterheim • 02:13.580
I am. I'm in my car office.
Kurt Elster • 02:16.380
Your Karfus. Good.
Paul Reda • 02:19.660
Uh I just want to say uh to the Federal Trade Commission, this episode is brought to you by PromoParty Pro, an app that we made. And if you buy it. We get money. Yes. So that's what I'm saying. That's why we're telling you about this app we made, it's because we'll get money. So everything we're saying we feel is true, however, we're also saying it so we'll get money.
Kurt Elster • 02:42.900
Yeah. Like, you know, we own all of these things. Or paid myself a sponsorship here, but let's be honest.
Paul Reda • 02:48.760
But we're doing that for you, the user. It's good to get that out of the way.
Kurt Elster • 02:51.880
The end user.
Paul Reda • 02:53.720
You will get more money out of this app than we do. That's the goal. Every individual. But if you pool it all together. We'll get more money. Shh. Uh, so uh Kurt, why did we make a free gift for purchase app?
Kurt Elster • 03:10.420
Well, all right, we after making several apps, we had one crowdfunder that's really been quite successful. This generated half a million dollars in revenue for our small agency business. I'm proud of that. That's awesome. I, of course, want more of that. I want to repeat that experience. But it's so hard to come up with an app idea that hasn't been done already. And so I think our the the the difficulty with an app like Crowdfunder, it's too niche, right? There's only it works, it's great. But unless you are in the position of I want to run a Kickstarter style crowdfunding pre-order campaign on my website, oh, and also I want to do that repeatedly, you know, just as a as a an app that you can scale, I I think it hits a limit. And so I have learned from that experience. Like it's gotta be easy, useful, but you know, I want something with broader appeal. And on this show, if you go back through it Nonstop. I repeat, my favorite promotion is free gift with purchase. And after saying it for, I don't know, the hundredth time, it one day finally occurred to me, wait a second. Why don't we build our own free gift with purchase app? Because this certainly there are free gift with purchase apps.
Paul Reda • 04:25.140
There are many. That was gonna be my next question. I was just like, oh, because no other free gift with purchase apps exist?
Kurt Elster • 04:30.940
Yeah, no, there's plenty of choices for you, but none that, you know, works, of course, exactly the way I think it should work. You know, my opinion method, my opinionated way of like, this is how an app should work. based on you know past experience with with other apps and with our own apps. So finally I went, you know, I said the the magical phrase that starts all entrepreneurial journeys, why not me? Right? Well there's a problem. I'm not actually an app developer. And that's where our friend Carl comes in.
Paul Reda • 05:00.740
Well, wait a minute. Let's roll it back for a second. All right. Why is free gift for purchase so good? I know why it's good because I see Hoonigan. Hoonigan used to kill at free game for purchase. Because they would make like limited hoonigan pins that would cost them, I don't know, 10 cents a pin. And then be like those are collector's items. Yeah. And so then it's like, oh, but if you buy a hundred bucks, if you spend a hundred bucks today, you get Our special limited edition pin that's only for sale today, and you'll get it, you know, along free with your purchase And their average order value on those days would skyrocket, because everyone's spending an extra 50 bucks to get the extra 10 cent pin. Hello, free money.
Kurt Elster • 05:40.760
Yeah. I mean ultimately the advantage to a free gift with purchase campaign is it bumps your average order value by giving the customer a entirely optional involuntary excuse to spend more money and be rewarded for it if you want to. That's what I love about it. You know, the with a typical discount promotion, you're just saying, I am taking my stuff and now I'm going to devalue it for you. And if you'd like, you could purchase it.
Kurt Elster • 06:07.160
Yeah.
Kurt Elster • 06:07.560
Where and you know Unless you're you you could do like a tiered campaign, but all right, now I gotta do math in my head. I think like that's the problem with you know that alternative. Free gift of purchase doesn't have that. It's very clear, like spend X, get Y, buy X, get Y. It is clear what the value prop is there. And where I think it really does magic is if they the free gift with purchase is an exclusive item, you know, a limited edition item. And you alluded to that with Hoonigan.
Paul Reda • 06:38.360
The gift should not be for sale on the store. It should be a thing that can only be acquired via you jacking up how much you're putting in your cart.
Kurt Elster • 06:46.600
Yeah. And you know, at the same time, you it doesn't necessarily have to be like limited or exclusive items. It could be stuff that's available in the store.
Paul Reda • 06:53.820
It could be stuff you have on clearance that you're ready to get you're trying to get rid of.
Kurt Elster • 06:58.060
Yes. Where suddenly it's like, all right, I didn't want to pay fifteen bucks for that, but if it's free gift with purchase, all right, now more interested. And so, you know, like um pins and aces, we had Nick Mertz on the show recently. They've run free gift with purchase campaigns for years at this point because, you know, for these reasons. And it's, hey, you know, spend it's usually spend X, get a free ball marker. And you were talking about the hoonigad pins. You know what a ball marker is? Yeah.
Paul Reda • 07:22.600
Like in practice? Oh, I've I've tagged along on many golf rounds.
Kurt Elster • 07:26.680
Wow, the f the physical thing here.
Paul Reda • 07:28.280
I know what it is, yeah.
Kurt Elster • 07:29.000
Yeah, and it To make it, it's an enamel pin without the pin.
Paul Reda • 07:32.599
Yeah. It's a little, it's like a coin, but as a the tiny coin.
Kurt Elster • 07:36.039
Yeah, like a medallion coin. Yeah. It's a it's a dime.
Paul Reda • 07:39.159
I mean literally if you're a cheapskin, you just usually use a dime. If you don't want a special ball marker, you just put it down a dime.
Kurt Elster • 07:45.760
Okay, but they have the license good stuff. Like if I want Stan Marsh bouncing on a part of his anatomy, boom, they got that as a ball marker.
Karl Meisterheim • 07:54.160
The free gift of purchase thing, it reminds me a little bit of I don't know if growing up, getting cereal and there'd always be a little prize in the cereal box.
Paul Reda • 08:03.360
Oh, that's a hundred percent, yeah.
Karl Meisterheim • 08:05.360
Same thing with baseball cards. You get a stick of gum. You have to buy the whole pack of baseball cards. A little bit of delight. The gum's bad, but you get a little bit of delight with something that's just normally happening.
Kurt Elster • 08:16.220
A little bit of delight. Yeah. Yes.
Paul Reda • 08:18.780
All right. Everyone wants to do this. It's been a known thing since the 1950s, according to Carl, because they're packing gum and little toys into boxes of Lucky Charms.
Kurt Elster • 08:29.660
Yeah, you got like a bar of soap with your lucky churbs or whatever in nineteen fifty five.
Paul Reda • 08:32.860
Well you're getting good you're getting packs of gum with your tops.
Kurt Elster • 08:35.419
Getting so like a sample of cigarettes with your Cheerios.
Paul Reda • 08:38.060
Not a thing that ever happened. So Obviously, we are the first people to think of implementing this on Shopify, right? There was no other way for a store owner to make this happen.
Kurt Elster • 08:48.180
Well all right, this is what's funny. In Shopify itself, there is not a way to make this happen.
Paul Reda • 08:52.980
I figured.
Kurt Elster • 08:53.620
I could run a discount. I could do a buy X get Y, so I could get the product to discount. Well don't tell Shopify that it's not built on the Shopify.
Paul Reda • 09:01.120
I'm sure they're aware. They're going to do that and they're going to Sherlock us. We're going to get screwed.
Kurt Elster • 09:04.400
Fundamentally, the reason you need an app for this is because the product doesn't add to the cart on its own. The customer would have to know to go find the right product and add it to cart. Like that and so we don't the messaging is not part of this. The that uh mechanism to add the product is not part of this, just the ability to automatically discount it is there. And so We've tried to run the campaigns that way too. You just end up with a bunch of people going, Hey, I placed an order, but I forgot about my free gift. Can you add it? So and of course, you know This an order editing solution like Cleverific would solve that a little bit. But you know, I don't want to have to get to that place. Hit the sponsor ding on that.
Paul Reda • 09:42.220
Cleverific.
Kurt Elster • 09:43.020
Cha-ching. Yeah. I mean, legit app though, but yes, they are a sponsor.
Paul Reda • 09:47.140
So you need an app to make this happen.
Kurt Elster • 09:49.380
Yeah. I need an app to get to just have the thing add automatically.
Paul Reda • 09:52.500
And as I said previously, we have the first app that lets you do that?
Kurt Elster • 09:55.860
Not the slightest. Not at all. In fact. Many have come before us, but you know, the problem with being having many before us, there's like legacy to it, right? There's features they have that they have to support that don't necessarily fit into you know, how Shopify even looks today or works today. And in building making Crowdfunder a built for Shopify app. We've actually, you know, we've gotten quite good at matching the the user interface that Chumpfla uses. It's called Polaris, you know, and leveraging that. And so it's like I just want this thing to feel just as good and seamless as a Shopify product, which means it's easy to use and it just works. It turns out in practice, that's the hard part.
Paul Reda • 10:36.959
The most consistent, annoying thing about my job currently besides Kurt himself is apps that you go you're like, oh you gotta edit something in unnamed app. And you click on it and it suddenly takes you to a completely different website where you need to log in with your own special login you you have for that app And then you finally get into it and there's a giant right rail navigation with like 40 different things in it. And it's like, oh, oh, no, you see, it's not an app, it's a platform. It's a platform for everything you ever wanted to do. And anytime you gotta go through that shit, it sucks. It's terrible. Like, I want to make one small change on this app on my Shopify store. But no, you actually need to log into this completely different website and fight through 30 layers of menus in order to figure that out.
Kurt Elster • 11:25.600
Where did Recharger Yachtpo hurt you, Paul?
Paul Reda • 11:28.080
Oh, I was thinking about rebuy.
Kurt Elster • 11:29.920
Oh, rebuy. Okay. Yeah.
Paul Reda • 11:31.500
So anytime we make an app, the main thing I care about, it just works. Our apps declare that they will do one thing for you. And then they just do that thing. It's a simple app that does one thing. It does it very well. And that's all it's going to do. We're big, big believers in minimum viable product, the minimum amount for it to be a product. And then we want to keep it as minimum as possible. Because it's less likely to break or be a pain in the ass in your life. Yeah.
Kurt Elster • 11:59.040
It's just gonna happen. I don't let other people build platforms. I just want to make tools that work. I'm just gonna give you like, hey, this screwdriver, it will 100% will not strip this screw.
Paul Reda • 12:07.920
So Carl, we were like, we've decided all the other apps suck, but we're also too stupid to make our own app. We need someone less stupid than us. I'm so brilliant. That led to Karl Meisterheim.
Kurt Elster • 12:20.820
I need someone else to do this for me.
Paul Reda • 12:22.180
And I know there's nothing a developer loves more than someone calling them and saying, all right, I got a great idea for an app. But you gotta build it, but we'll split the buddy. How about that?
Karl Meisterheim • 12:32.259
It it did seem a little Rick and Morty-ish to me when I got that call from Kurt.
Kurt Elster • 12:37.940
Okay, I like that comparison.
Karl Meisterheim • 12:41.060
So it's kinda like that, but I've always enjoyed working with you two and I wanted to get into that space some more anyway, so I thought here's a great opportunity. Even if it ends up being something that ends the universe, it at least will have been a fun ride. So let's do it.
Kurt Elster • 12:52.839
I don't think our apple and the universe, but, you know, I I appreciate you coming along and and helping and building it with us. Is this the first app you've done?
Karl Meisterheim • 13:03.360
No, this is the first public app I've released, but I've done other private apps for clients over the years.
Kurt Elster • 13:11.380
What's the give me one thing that surprised you about the the Shopify public app building experience?
Karl Meisterheim • 13:19.400
Well there's a couple aspects to it that were surprising. I think one was how such a simple idea could take so long to implement, which maybe is a reflection on me as a developer, but I think as we dug into it While the idea at its core is very simple, the complexity really is around state management and the theme side of things in terms of dealing with cart product additions and deletions, all that sort of stuff, and making sure that works.
Kurt Elster • 13:45.440
So with an app like Free Gift with Purchase, I think it is easy to go, well that's easy. You know, anybody could build that. Give me you know some of those edge cases, the stuff that's like, all right, well this is where it actually gets quite complicated to make this, you know, really bulletproof.
Karl Meisterheim • 14:00.959
Yeah, there's a couple of them. I would say the first and foremost in my mind is people might know from my other podcast that I tip my hand as not being a fan of JavaScript. I prefer the full stack or backend environment, Ruby, Ruby and Rails, trying to understand all the different ways that people interact with the cart. And how to make sure that we could capture that information and understand when and when not to fire our own code and to add and remove products. You do that in a way that was reliable and didn't get in the way of the customer what they really wanted to do. That took some thinking and some exploring, right? Because sometimes we want to show our modal, but the customer doesn't really want to see it again. And so how do you determine like what is a reasonable amount? of time between showing it, allowing them to dismiss it, removing the items that we just added for them, you know, making sure that there was some control for the user, but also that we got our functionality across. That's one big one.
Paul Reda • 14:53.100
Well, and also, you know, just in Shopify themes, first we need to support the wide array of themes and how they make the cart appear. And then even within those themes, you could have three different ways of displaying the cart. Is it a mini cart? Is it a drawer? Does it redirect you to the cart page? I mean, uh, one of our early beta testers, they had redirect to the cart page set on. We they would the user would click add to cart. Our little pop-up would fire that would be like, hey, you're gonna get a free gift. Pick your free gift. But They would it would the user would get pushed to the cart page before our pop-up showed up. So it they would never see it at any time. So it's like, oh, okay, well, we gotta think about that.
Kurt Elster • 15:33.720
Here's a word from our sponsor, Zippify. Hey, the holidays are over. Traffic's down, ad costs are still up, and you're staring at Q1 wondering how to keep momentum going. Here's the move. Stop leaving money on the table with every order. One click upsell automatically increases average order value by up to 30% with AI-powered upsells. across your entire customer funnel. Launch pre-purchase and post-purchase upsells for every product in your store in one click. Customers get personalized offers and spend more as a result. Unlike other apps, you only pay for those results, not views. It takes under two minutes to set up and it starts working immediately. Q1 doesn't have to be a slump. Make every order count while you rebuild traffic. Go to zippify. com slash Kurt for your 30-day free trial. That zip ify dot com slash k u r t and let's start the year profitable As either you know an agency using these apps on behalf of a client or a merchant using these apps for their own store, you have to have a a little bit of empathy with the app developers in that The theme developers don't necessarily know what apps you're going to run and how the apps are going to approach it.
Paul Reda • 16:49.459
And the apps definitely aren't sure, you know what theme you're running, how your theme executes this one specific thing. Like it's all different.
Kurt Elster • 16:56.640
And so that like that's a real wild card. And ShopFi does their best to standardize things and say, like, hey, here's here's the best approach, this is best practice, this is what we expect, what we want. If you follow those things, life gets easier. But in practice, in the wild, you're gonna see some strange things in, you know, theme code.
Karl Meisterheim • 17:16.120
So one of the things you have to think about is how to maintain the integrity of what you're presenting to the user in terms of the code you're delivering. And obviously Shopify makes it easy with theme extensions. Like we no longer are in the days where we have to manually edit a shop's theme to insert our little thing or hope the merchant does it correctly. We can programmatically inject all of that, but we don't necessarily have control over is how the thing behaves in terms of the events that it uses, custom events it fires, like you were saying before, the configuration of the cart Um all those actu issues. So in a perfect world we'd be like a fully integrated vertical type of experience where it's very well grafted into every single shop. But what we have to do is figure out since we can't guarantee that, since there's just a bajillion permutations of how that could function, what can we do that makes the most sense? and provides the best experience across the board. And that takes a lot of expertise, like you and Paul having seen so much, being able to work with me to figure out how to do that, I think was one of part of our secret sauce.
Kurt Elster • 18:20.299
Yeah, that I mean being experienced theme developers, you're right, it does it really helps and try to avoid or you know uncover some of the the oddball issues that you can get with theme map embeds. And then you know on the topic of theme map embeds, in the past, performance has been an issue with Shopify. This is a thing like we've all fought with. And they over in recent years have really gone through a lot of effort to make sure that performance is not an issue anymore. And you know how apps approach things, how themes approach things, and those app embeds, I think, are a big part of that. Any issues, Carl, or thoughts on keeping things performant?
Karl Meisterheim • 18:57.100
With this sort of app, discounting logic is all done with functions. And so Shopify by nature and the way that they set up functions forces you to be performant with that. So the actual seeing the discount appear in the cart and in the checkout page, all that stuff is fine. The bigger issue is around interacting with the cart using API, using REST or whatever it is. There we have to be a little more careful, and that really comes down to the logic and how we assess what's in the cart, assess what campaigns might be eligible at that particular point in time and then how we update the state of the cart and do that in a way that's performant because You want to go fast, but you can't go super fast because there's a little bit of lag with the cart API. And so if you try to do that, you quickly get into a state where you're no longer understanding what's actually in the cart and it just gets all wonky. So you even have to introduce delays on purpose in some aspects. So it's it's a tight rope.
Kurt Elster • 19:55.220
Interesting.
Paul Reda • 19:56.519
Yeah, I mean uh again like we said if this sounds simple on its surface.
Kurt Elster • 20:01.799
I thought it would be.
Paul Reda • 20:02.679
Yeah, like I really did. Like the okay, the user, all right, the cart they added the cart totals 50 bucks Add a free gift to the cart. And make it add a gift to the cart, make it free. Done. Oh, yeah, that was easy. Alright. Is the gift already in the cart? Okay, don't add another one. Uh is the gift in stock? Okay, we got to make sure about that. Uh is it over 50 bucks, but then there's a coupon code or a discount on the product? to see if it's actually ends up being under 50 bucks when it hits the cart so that maybe they don't need to get the free gift? Did we fire the free gift pop-up at them already? And they said, psh, I don't want that shit, and they closed it out. Okay. Do they never get the gift ever again now? Or do they get the gift every time they add a new thing to their cart? We don't know. Like all all that sort of stuff just needs to be constantly checked and rechecked and figured out to make sure nothing breaks along the way.
Kurt Elster • 20:55.620
And the thing that eats apps alive is is support, is you know, having to fix the same issue over and over. And so, yeah, and that creates a bad experience for the user too. It's like, hey, I just want to use this thing that advertises itself as being very reliable, and then I run into a roadblock. And so you've got your support, it helps, it fixes it. But you don't want to just be like seeing the same problems over and over again. And so we really went through a lot of effort on thinking like, all right, let's be proactive, let's validate these issues. in advance. And so for with you know setting up free gift with purchase campaigns, one of the mistakes I've seen over and over is the person goes, it's a free gift, so it should be free. And they market zero dollars. What happens when you make it zero dollars?
Paul Reda • 21:39.260
So the so the gift is i it's a free gift But it's a product on your store. That's the only way we can add it to the cart and it could go through checkout and you gotta ship it. It's a product on your store. So they go, well, this is a free gift. So what's the cost? What's the price? Oh, well, it's free. And Shopify has now added unlisted products, which are very hard to get to. Yeah, they're essentially hidden. They're hidden unless you know the URL and you can get to the URL. But I don't know, you know, I don't know if that's 100% right all the time. But if you make it free, if you make it zero dollars, someone's gonna find that and they're gonna put it in their cart and they're gonna buy a hundred of them and now they just bought a hundred of these things for zero dollars. And it's like, well, you gotta make sure you catch that. You gotta cancel the order. You gotta maybe set up set up some sort sort of um you know, warning in your back end that's like, oh, we got a zero dollar order, maybe take a look at that, you know, that sort of stuff. I mean that would happen all the time. So we're we're always like, no, you gotta give it a price. So that's what it's a condition we check for. That's one of the things we check for is does the free gift have a real price on it? Because if you make it zero dollars, you're gonna get you're not gonna like it.
Kurt Elster • 22:44.120
Yeah, you're just inviting abuse. Uh the and so you we check for all right it has a price and then our discount applies to it. Okay, this is the thing I didn't expect. The dis discount combinations are the thing that that people struggle with. You create our support tickets and confuse them. Because in Shopify, I could create a discount I can decide which discounts it combines with. And we use the discounts API. And so it our app just tells Shopify like this is we are responsible for this test this discount and we're running it through Shopify. So like the whole system's aware. Let's say we use a product discount because we're discounting a product. The customer then applies your welcome 15 coupon. What happens?
Paul Reda • 23:30.620
Well now we're now we're under fifty bucks. And so they shouldn't get the free gift anymore, right?
Kurt Elster • 23:35.100
Yeah. Well so now I remove it.
Paul Reda • 23:36.460
Yeah. Okay, that's not what they wanted. Or And now the customer's pissed because it's they're gonna say, well what where'd my free gift go?
Kurt Elster • 23:42.140
Now they're mad. That I can't do anything about. So okay, what about now they've got you know our free gift is there and they've got their welcome fifteen. They still meet the threshold But the discounts aren't set to combine. And so what? Which one takes precedent? Well, the order discount takes precedent. So they get 15 off everything, but now the free gift have a price attached to it. This is the one thing I haven't been able to solve for. You know, how do we know what discounts do and don't combine until we actually apply it? There's just not a way for us in the API to see that in advance and surface that problem. And so yeah, we've I've got a whole help article that's just like, here's how discounts combine in Shopify. You know, if you want them to combine, that is up to you. You have to just check combine on both of them, right? That's it. Not difficult. You know, it's available in our app as an option, and then on your other discounts you gotta set it. But that's just not obvious. And so I'd love a way You know, as a a future feature that we could check that and at the time of a campaign creation go, hey, you have these active discounts And they're not set to combine, you know, just FYI if that's intentional. But I don't think we could do it, can we, Carl?
Karl Meisterheim • 24:50.980
Well, I wouldn't say we can't do it. Uh we'll have to look into it and do a little research figuring out. I mean I think in theory we could look at all the discounts and assess what the combines with options are set. But alluding previously to your and Paul's VOST experience, like some shops have a couple discounts, some have thousands of discounts. Depending on what they're doing, right? And so we'll have to examine whether it's performance, whether it makes sense to even try to do that. And if you do do that, what do you do with that information? Show it to the The admin hope that they take action. You're not going to modify the discounts that you didn't create on their behalf. I don't think he even could. So
Kurt Elster • 25:28.720
Yeah. No, a hundred percent. And so it's just like what seemed like a simple idea, an app that performs a single task. Well, it turns out there's just so many variables when you put them to practice with people that And you have to account for and then have you know paths for. Wow. Suddenly it's like, if this was difficult to build, imagine the gnashing of teeth that occurs when you're trying to maintain a product like Shopify itself. The fact that it works as well as it does, you know, put in perspective, I'm like, wow. Well, they have many Carls. Many carls. We just have one Carl. We got one Carl.
Paul Reda • 26:04.320
I know there's a lot of little Carls running around that house. That's why you're in the that's why you're in the car right now. Yeah, are you hiding from your children?
Karl Meisterheim • 26:12.539
Perhaps. I love them dearly, but they are a little, how should we say, boisterous, so
Paul Reda • 26:17.160
Yeah, I think in the course of making this and in this course of like, all right, we kind of got it. It does what it says on the tin. The biggest fight we had is over the sleep timer. That's funny. Which is okay. Again, added the thing. I added my thing to the cart. The gift, the free gift of purchase thing popped up. Add your free gift. Usually you know, if it's got like variants, like you get a free shirt, you gotta select the size on the shirt that you're gonna get as your free gift. Um, so they have to do something in that box. And, you know, people just see pop-ups all the time. So they immediately click on that X. Yeah, just a knee-jerk reaction. And it's like, okay, well, was that a knee-jerk reaction or do they not want the shirt?
Kurt Elster • 26:57.760
We don't know.
Paul Reda • 26:58.559
We don't know. Okay, they're gonna continue buying. So they bought something else. They're already over the threshold. Now they add another thing to their cart. Do we pop the pop-up up again? Do we annoy them on every single page load on the store?
Kurt Elster • 27:10.880
Well, you're giving up your free gift.
Paul Reda • 27:12.399
What about your free gift, idiot? Don't you want that? What if they don't want it? And now they get mad and they go, I'm sick of this store. I don't the store's a pop up on every page. The store sucks. Yes. And they leave without buying.
Kurt Elster • 27:22.480
A free gift sounds great until you actively know you don't want it and then it's forced upon you. And it's frustrat like for that that user who's in the minority That's frustrating because it to them you're just going, here's a piece of garbage that's gonna stop on your your house on the way to the landfill. That's what they see.
Paul Reda • 27:40.280
Or it's the other way where they're like The pop-up flies up and they're going, ugh, and they closed it right away and they're like, wait a second. They go, wait a minute. Let's say free gift on it. I've done that. I'm like, uh And so then it's like, okay, well then we should annoy them with it and bring it up again so they can get their free gift. But it's like how often do you do that?
Kurt Elster • 27:56.740
And so of course the right answer was it's gotta be a user control.
Paul Reda • 27:59.460
I mean yeah, it's one of those things where it's like, I feel like you're gonna ask twenty people And they'll they they they all give ten different opinions about it. That's what happened. Yeah.
Kurt Elster • 28:09.299
Yeah, I mean ultimately that is what happened and so it became a a user preference in there But even when you go, all right, we're gonna make all these all these uh difficult questions, these squishy ideas, we're gonna make those preferences, they still need defaults. So then what's the default? Yeah. And I I think in our case it it has a cooldown period where like it'll fire again, it's just not gonna do it immediately.
Karl Meisterheim • 28:30.040
Then there's the other case too that you guys brought up, which is What if merchants want to support multiple campaigns at the same time? And what if more than one of those campaigns is actually eligible based on the state of the cart? How do you present that to the Customer. Which we figured out, but it was something to think through.
Paul Reda • 28:47.660
Yeah, in the world of adding a product, all right, they've added multiple products before, but they still haven't hit the threshold. And then they add a final product that puts them over two different free gift with purchase thresholds. What do you do there? Carl, what do we do there? I don't even know.
Karl Meisterheim • 29:04.240
We present them one at a time in a very sensible and coherent manner so they can be in control, have full agency, and decide what they want to do.
Kurt Elster • 29:13.320
I like that. I wish that was the answer to most questions. We put you in control with full agency.
Paul Reda • 29:18.200
We do it right.
Kurt Elster • 29:19.080
Yeah.
Paul Reda • 29:19.480
That's what he said.
Kurt Elster • 29:20.760
Uh we do it right, not wrong. That's easy. I'm just gonna put that up on the board. Mission statement.
Karl Meisterheim • 29:25.240
Do it right. I was just gonna say another aspect that I think we found challenging, working together to develop this is like you alluded to previously, it's a very simple idea. And we want to keep it simple. We want it to be small so it's performant, easy to reason about, whatever. So when we started, we had this conception of like what kind of free gifts we want to offer, what kind of triggers we want to present. As we continued to develop the app, we began to realize there was more complexity in terms of what you guys hoped to see in terms of functionality. A recent example being previously we only supported adding free Git variants within a single product to a campaign. And mentally that's where I went with the data model, right? Was like that's all we ever need to support. It'll be easy, we'll keep it simple. And then you guys brought to me the idea that let's add the ability to add free gift variants across multiple campaigns or across multiple products. for a single campaign. And because of the way that I had chosen to structure the data and because of the way Shopfi works, it took a little bit of doing to make that work. Those are the sort of things you don't necessarily anticipate at the beginning to add complexity to it, but In hindsight, it's worth it and it works well and it just takes a little bit of thinking.
Kurt Elster • 30:33.260
Man, those order change emails suck. They're always like, I ordered the wrong size. I meant to change the shipping address. Oops, I was drunk. Instead of making customers email you that stuff, let them fix it themselves with Cleverific. Cleverific is a self-service portal that lets customers edit their orders without bugging you. That means you get fewer headaches Customers get faster fulfillment and there's fewer returns overall. Everybody wins. Peter Manning New York cut their support tickets by 99% with Cleverific. You want in on that? Get 50% off the PRO Plan. Just $49 a month, exclusively for listeners of the unofficial Shopify podcast. Go to Cleverific. com slash unofficial and use promo code KERT50. Done. Problem solved. That's cleverific.
Paul Reda • 31:21.080
So it's like, you know, instead of it being like this one pin, this is our free gift pin. You instead go, well, you can have any pin for free now. Pick. Yeah, pick. Pick which of the many pen pins we have to be your free gift. Okay, well now they gotta select multiple products. In order to to find what the gift is, and Carl's gotta rewrite the whole thing in order for that to work.
Kurt Elster • 31:41.520
Which uh you did in uh as far as I can tell, a matter of a few days.
Karl Meisterheim • 31:46.160
Yes.
Kurt Elster • 31:46.720
Carl, you is this whole thing vibe-coded?
Karl Meisterheim • 31:49.760
Uh no, not completely, but there are parts of it. I certainly I mean it was good timing, right, when we started on this adventure a little over a year ago, because at that point coding agents were mature enough that you certainly could utilize them for certain tasks. It helps remove a lot of the initial, I guess, inertia of getting started with certain features because it helps propel you into the idea space, the solution space more quickly And then being an experienced software developer is a key asset because what it helps me to do is assess what I'm being presented by the AI. Smelling what's BS, what's not, and then being able to work with that tool to automate the things that it can automate for me, but also being fully in control in terms of the architecture and the structure of the app, making sure that it all makes sense.
Kurt Elster • 32:32.900
Hmm man, I like that answer. Well, I think, you know, there's this idea that like you know AI's a magic button and I could just go, I need an app. It has to do this, go. And I I just don't think it's the case. Well, obviously not. I mean, like, yeah, you could build stuff, but to you know, to build something that could scale, to build something that's secure, to build something that works really well I you I don't think it it's realistic to go, well we're AI is gonna do it entirely on its own. And even now, you know, things like Claude Code are quite exceptional. But there are limits. And yeah, you need you you still need to know how to do the thing you're asking the AI to do, or else how would you know if it did it right? I never worry if an app is reliable. Will this app stay up during our high traffic sale? It's just nothing I ever worry about because in practice it is not a problem. For someone who's not, you know, familiar with modern web architecture, what Why do you think that these scaling problems just don't happen anymore? You know, why aren't like apps and Shopify stores just dropping like flies the moment they have a flash sale?
Karl Meisterheim • 33:41.800
That's an interesting question, Kurt, and I I would don't know if I would share the same conclusion that it doesn't happen anymore. Um I think it happens less, I think for us it's going to not be an issue. And one of the reasons why is, you know, I I've no No stranger to anxiety, especially for things that I build and have responsibility over. And so one of my main principles when writing this was I want to push as much of this off onto other reliable services than anything that we have direct control over. So relying on Shopify, relying on other things. For example, we ingest webhooks. When someone makes a change to a product, if we want to know if they change something about one of our trigger products or forget products, we need to reflect that on the app. So you have to be paying attention to that. However, um I don't want to be responsible for being able to scale and adjust thousands of shops with thousands of webhooks all coming at the same time. And so utilizing services like we use Hook Deck, for example, which helps us provide a robust um third-party solution to ingesting webhooks for us and then giving them to us in a rate that we can handle if and when that becomes a problem. So that's one example. Another is in our compute environment. I know Paul really wanted to pull out his old 46 DX from his closet and have us install the app on that. Now it's okay.
Paul Reda • 35:04.359
But okay, you're both wrong wrong. First, it was a it was an IBM PS1 that had a 486 SX in it. The SX was the cutdown version. It was not as good as the D. Oh, I'm so sorry. Yeah So it could not run Quake, unfortunately.
Karl Meisterheim • 35:20.400
So we use uh a third party cloud compute environment, which allows us to easily scale containers. I mean stuff that's not new, but it's There's lots of other vendors and services and there used to be. So it's not just Amazon, Google Cloud Compute. Microsoft. I don't know why you do that. Or uh Heroku, but there's lots of them, right? And so we can figure out which technology works best for us and scale with it.
Paul Reda • 35:45.039
I mean we did have it running on client stores on Black Friday, right? Our beta testers. Yeah. Yeah, we had beta testers run it on Black Friday. It did not go down. It worked perfectly. Everyone was happy.
Kurt Elster • 35:56.020
And you have like uh sentry set up, you have air monitoring occurring.
Karl Meisterheim • 36:00.500
But that's another thing about my personality is I really want to understand what's happening. I really want to verify that what's happening is true. And so there's a lot of opportunities built into the app for us to inspect what's going on. But yeah, we have automatic triggers. and alerts uh both for performance and also for error rate, things like that. So if something were to go amiss or awry, we would be aware of that quickly and be able to dig in and get it resolved.
Paul Reda • 36:23.299
Carl, Kurt's been making random esoteric demands of you, so what's next on the app? Of things that Kurt just wants to happen for no reason whatsoever.
Kurt Elster • 36:30.740
There's reasons. You know, they just live up here.
Karl Meisterheim • 36:33.500
Yeah, that's a good question, Paul. Um, you know, we sync up on a regular basis in Cadence to kind of assess what are the merchant needs, what are the things that you guys are are leaning into or hearing from our customers about what we'd like to have better. The constant struggle that we face is how to keep this app focused, easy to use, simple, without being tempted to bring in a whole bunch of other stuff, right? And so I think we kind of have that filter every time we talk through wouldn't it be nice if okay, yeah But is that something they really need? Is that really going to bring value? Is this worth adding to the cognitive load of using this app?
Paul Reda • 37:11.580
Whether yeah, what how hard is it for you to implement? Because I mean, you know, when we added the multiple products thing, the question was, well, why can't we just let the store owner just add an entire collection? Just like have it bring up the collection listing. They click on they have a collection called free gifts and they just click on that or everything in the shirt collection. You know, why can't that just happen? And I remember you were like, uh, that's actually a nightmare. So that's why unfortunately our store owners have to click on each individual gift product. Yes, that was a fun one. Because we need to mo you need that need to monitor the collection. You need to see whether a product gets added or removed from that collection. I mean that That exp that does a monster increase in the amount of monitoring and pinging and saving of store data that we need to do.
Kurt Elster • 37:56.260
Yeah, the moment it like when we think through these features, Well, i Carl, you keep track of them in a spreadsheet and what's clever is we rank them as level of effort and priority. And priority is like the squishy one that could change and it's like, okay, you know, how many people does this benefit? really is what we're looking for. Um, but then you know, how difficult is it? Because if its level of effort is high, then potentially it comes at the expense of developing other features at that time. Um, you know, and and if level of effort is high, you kind of assume like, well, this could create additional issues if you haven't thought through it. So it really it it's been interesting. You know, to to think through those things. Yeah. The most I think the the one that involved it was like literally days of discussion was this this stupid cooldown period. Like what You know, if they dismiss the pop-up, what do we do? We tortured ourselves with that.
Paul Reda • 38:50.059
Only if you care as much as we do.
Kurt Elster • 38:53.220
Mm-hmm.
Kurt Elster • 38:54.100
Well, I mean you gotta care. You do. Uh y you're saying it's a joke, but it's like the truly we do, and that's otherwise you wouldn't be passionate about it. Um Yeah. But so what's What's coming down the pipe here, Carl? Yeah, we got future f future ideas. What do you think is missing that you'd love to add?
Karl Meisterheim • 39:13.299
I think one thing that we would consider looking into is how we might be able to do more on the checkout page itself, understanding that the direction things seem to be going, especially with Agenic Commerce. is lending itself to people perhaps interacting with your shop less and being more sort of just in the checkout space as they come to us from whatever tool or AI chatbot or whatever they're gonna do. And so trying to figure out what are the limitations. Shop app Shopify. So there's lots of control that Shopify has over that experience that they don't restrict on other parts of the shop. And so understanding what are the available options to us. what would make sense for our users and um how can we make it work as well as the other parts work. So that's what we're kind of more exploring into right now.
Kurt Elster • 40:01.359
No, I love that. I think checkout extension definitely it feels like you're potentially a heavier lift. It's you know a new set of challenges to explore because part of that performance requirement is you are fairly limited in you know the size and scope of what a checkout extension could do. But yeah, no, that's on our list. That is a a thing I definitely want to add. Checkout extension. Make this thing because right now like it really it does its work inside the theme and the ape the discount API. Now we want to expand it onto a new surface that's the checkout. And to your right, you know, to your point, you're right. It's like There are s so many paths into a a checkout now that just aren't necessarily the online store. And the other hard part, of course, has been marketing promo party. That's why we're here. And it it it we've been at this for uh well over a year now. And so just you know sitting down, the three of us and recording this and talking through it and kind of reliving that experience. It feels good. Like really it went from, hey, here's an idea and then here's a proof of concept to, oh man, here's all the hard problems associated with you gotta solve and you know the interface. And then like, well man, there's documentation that's gotta go with it. And there's an app listing and then there's a uh a website that's gonna go with it and help check like it just spirals.
Paul Reda • 41:16.680
Obviously we wanna get built Built for Shopify. And so we need to like don't we need to have a certain number of views before we can even apply and start thinking about installs, right?
Kurt Elster • 41:24.840
Are gonna hit those metrics next.
Paul Reda • 41:26.520
And then built for Shopify, they're gonna have opinions that of things that we need to do in order to earn that badge. And we're gonna do them because we want that badge.
Kurt Elster • 41:34.220
Yeah, for sure. It's gonna be like, all right, here's, you know, several rounds of a dozen changes each that will get this app in line with what is expected of the Shopify admin experience. And so absolutely, I will grin and need it. You know, just we'll do it. But you know, there's there's thresholds we gotta hit first before we can apply.
Paul Reda • 41:54.160
And so our next goal is for to hit that threshold, and that's up to you, the user. That's up to you, listener. Yeah. We need your help so we can qualify for Build for Shopify. Install our app, give us money, so we can in get a badge that will get us more money.
Kurt Elster • 42:11.980
A little more honest than I am.
Paul Reda • 42:17.099
That's why they come to me. I don't lie to these people. I don't lie to you, the user. That's not what you could do for yourself, but what you could do for me. Man, that's gonna be in the open, the cold open. Oh. Now that's good. Um, but yeah, I think uh install our app. There's a free trial. How long is the free trial? Carl, how long is the free trial? I thought it was on your side. I don't know. Great job advertising.
Kurt Elster • 42:46.280
I knew that would happen too. And I need the thing.
Karl Meisterheim • 42:50.040
Long enough to know you'll love it.
Kurt Elster • 42:51.560
Alright, search promo party pro in the Shopify app store or go to um oh What's the URL?
Paul Reda • 42:59.240
Is it promo is it promo you kept changing it.
Kurt Elster • 43:01.800
We only had two. All right And uh keep it all. Just try that again. Alright, if you want to see what we're so excited about, search promo party pro in the app store. There's a 15-day free trial. and the support. If you have issues with it, absolutely reach out to the support. We are actively developing it. So if the app doesn't work the way you think or expect, You could very well make the case for it, and then Carr Carl Paul and I are gonna argue about it on a Friday and then ultimately end up maybe implementing what you want. So you could be instrumental here.
Paul Reda • 43:32.000
And our promise to you is if you email support, a human being will answer your email and fix your thing for you. If we decide it's worth fixing. But it will be it will be a human that that either accepts or denies your problem.
Kurt Elster • 43:47.200
Yeah. A lovely man named Julian. Julie, it is a great help and well familiar with troubleshooting uh these apps and issues. So, okay, Promo Party Pro, man, Carl, you proud?
Karl Meisterheim • 44:01.080
Very proud, very excited to have done this, see it get out there, and to know that it's only gonna get better as we continue to refine it and uh discover more what people want.
Kurt Elster • 44:10.339
Yeah, Carl, if this app is a success, you won't have to live in your car anymore. Yeah, help Carl move out of his car. He's got kids. There's only so much room in the trunk. Stop. Well that's we're not too bad at that. We'll end it there. Yeah, it's over.