Ahmed Mobin (@themubeen) header
Ahmed Mobin (@themubeen) profile picture

🚀💰 I help Shopify merchants boost their revenue with cutting-edge apps and themes. #Shopify #Ecommerce #Entrepreneurship

Lahore, Pakistan
Joined March 2017
Photo by Ahmed Mobin (@themubeen)Photo by Ahmed Mobin (@themubeen)Photo by Ahmed Mobin (@themubeen)Photo by Ahmed Mobin (@themubeen)Photo by Ahmed Mobin (@themubeen)Photo by Ahmed Mobin (@themubeen)Photo by Ahmed Mobin (@themubeen)Photo by Ahmed Mobin (@themubeen)Photo by Ahmed Mobin (@themubeen)Photo by Ahmed Mobin (@themubeen)
Shopify Horizon is getting attention, but should every merchant consider switching to it? Not necessarily. Horizon offers a more flexible approach to building Shopify storefronts, giving merchants greater control over layouts, sections and customisation. But a new theme doesn't automatically mean a better shopping experience. Before switching, look at what your current store actually needs. Does it lack flexibility? Are you struggling with customisation? Is your current storefront limiting the experience you want to create? Choose a theme based on your store's requirements, not just what's trending.
11
Not every Shopify theme makes it to the Theme Store. Some get published, others get rejected, and some come back with requested changes. Building a theme is more than creating a great storefront. It also means meeting Shopify's standards for functionality, usability, performance, and code quality. Getting it right takes more than good design.
12
Your product page can be perfect and you can still lose the sale at checkout. Unexpected shipping costs
Too many steps
Unclear delivery info
Limited payment options
A slow mobile experience Sometimes conversion optimization isn’t about adding more. It’s about removing the friction between “I want this” and “I’ve paid for this.”
3
2
85
Your Shopify store might look great on a 27-inch monitor. But how does it feel on a phone? A few mobile UX issues I see often: → Add to Cart button too far up
→ Product options outside the natural thumb zone
→ Tiny tap targets
→ No sticky Add to Cart on long product pages Mobile-first isn’t just about responsive design. It’s about designing for how people actually hold and use their phones. Small UX changes can remove unnecessary friction at the point of purchase.
34
Your Shopify theme can become a digital attic. Every redesign leaves something behind: A section you stopped using.
Custom code from an old campaign.
An integration nobody remembers.
A feature that no longer serves a purpose. Over time, your theme becomes harder to maintain. Before redesigning, clean out the attic first.
29
Your Shopify store doesn't always need a redesign. Sometimes it needs someone to figure out what's actually wrong. Too many apps.
Old custom code.
Unnecessary sections.
Poor mobile UX.
Slow-loading assets. A new theme won't automatically fix any of that. Diagnose first. Redesign second.
22
A client asked: "why is my conversion low? Photos are great, copy is solid, page loads fast." Turned out the shipping info was buried in a collapsed tab. No delivery estimate near the buy button. Customers weren't unsure about the product. They were unsure if it would even show up. Moved delivery info near the price. Conversion moved. Not one photo or word of copy changed. Sometimes the fix isn't better persuasion — it's just answering the question the customer already has.
2
1
31
Started building a tool a few weeks ago. No landing page. No plan. Just annoyed at solving the same client problem manually, again. So I started here instead — Just me using it daily.
Breaking it.
Fixing what breaks.
Using it again. No market research. No validation calls. Just real, repeated use. Turns out that's usually a better filter than any spreadsheet. If it survives me using it every day for a month, it's probably worth showing someone else. If it doesn't, I saved myself a launch.
20
Built a Shopify app feature I was proud of. Clean code, solved a real edge case. Almost no merchant used it. Not a technical failure. A "nobody understood why they needed this in under 2 minutes" failure. That's the actual bar for a good app feature.
2
2
69
Yusuf found his competitor's entire stock count in four seconds. No login. No hack. No password. He had been trying to figure out why a rival store always matched his prices within an hour of every change he made. His friend Bilal had a guess. Bilal: Type your competitor's store URL into the browser. Then add /products.json at the end. Yusuf: That's it? Bilal: That's it. He typed it. The page loaded instantly. Every product. Every variant. Every price. Updated in real time, straight from their store's own backend. Yusuf: This shows everything. Bilal: Everything. Yusuf: Including stock count? Bilal: Depends on their settings. Check yours. Yusuf: Mine? Bilal: Type your own store URL the same way. He did. His entire inventory loaded on the screen in front of him. Quantities per variant. Exact figures. The same data he had spent three years treating like a closely guarded number. Yusuf: Bilal, anyone can see this? Bilal: Anyone. Right now. Without logging in. Yusuf: How long has this been true? Bilal: Since Shopify built the platform. It's part of the storefront API. Public by design. Yusuf: Nobody told me this. Bilal: Most merchants don't know. Yusuf: So the competitor who keeps matching my prices within an hour. Bilal: Probably has a script checking this URL every few minutes. Yusuf: That's not even illegal. Bilal: No. Yusuf sat with that for a moment. Yusuf: So what do I do? I can't turn off my product page. Bilal: You can't hide the data through Shopify's default settings, no. But you can stop making the number visible in obvious places. Round your stock levels in any app that displays "X left in stock." Watch what you put in metafields. And know that if your margins depend on a competitor not knowing your numbers, that protection never existed in the first place. Yusuf: Three years. Bilal: Three years. Yusuf checked four more competitor stores that night. Two had thousands of units sitting unsold. One had a single bestseller carrying the entire store. The fourth had pricing patterns that explained a sale he could never predict. He had spent three years guessing at decisions other store owners were making with full visibility into his numbers, while sitting on the exact same visibility into theirs. He just never knew to look.
1
85
Hana's discount campaign ran for 14 days. The code stopped working on day two. She found out on day sixteen. She had tested the code herself before the campaign launched. Desktop. Chrome. One item in the cart. It applied perfectly. She sent the email to 22,000 subscribers that morning feeling good about it. What she did not test was Safari on iPhone with two items in the cart and a variant selected. That combination broke the discount logic silently. No error message. No notification. The customer reached checkout, the discount did not appear, and most of them left without saying anything. Dev flagged it on a support ticket from a different issue entirely. Dev: Hana, while I was in your store checking the other thing, I noticed your summer discount code isn't applying correctly on mobile. Hana: What do you mean it isn't applying? I tested it before launch. Dev: What did you test it on? Hana: My laptop. Chrome. Dev: With how many items? Hana: One. The hero product. Dev: The code has a minimum order condition set. Two items. But the way it's configured, it conflicts with variant selection on mobile Safari. The discount shows in the cart but drops out at checkout. Hana: How long has this been happening? Dev: When did you launch the campaign? She pulled up the email send date. Hana: Fourteen days ago. Dev said nothing for a moment. Hana: Dev. Dev: Your email open rate was 34%. That is roughly 7,500 people who opened and likely clicked. Mobile accounts for about 70% of your traffic. She did not need him to finish the calculation. 5,000 people on mobile. Discount not applying at checkout. No error. No explanation. Just a price that did not match what they expected after clicking through from an email that promised them something. Most left. Some bought anyway. None of them wrote to tell her the code was broken. That is the part that stays with you. Not the lost revenue. The 5,000 people who clicked, hit a broken promise, and left quietly without saying a word. Hana fixed the code that afternoon. She now tests every discount on mobile, with multiple items, across Safari and Chrome, before any campaign goes live. It takes eleven minutes. Discounts are not set and forget. After setting one up, test it the way your actual customers use it. On mobile. On different browsers. With different cart combinations. If it breaks in checkout, you will not always hear about it. The customers who find a broken promise at checkout do not send a complaint. They just never come back.
85
The video had 4 million views before Layla woke up. She saw the notification at 6:47am and sat up in bed. Her skincare product. A creator she had gifted three months ago and forgotten about. A 12-second clip. Four million views overnight. She opened Shopify. 612 orders. She called James. James: I see it. Don't touch anything yet. Layla: 612 orders James. James: I know. Don't touch anything. Let me look at the TikTok Shop side. Layla: What's wrong with the TikTok Shop side? James: Your Shopify inventory and your TikTok Shop inventory are showing different numbers. You have 310 units in Shopify. TikTok Shop is still showing 480. Layla: Why is it showing 480? James: The native sync has a delay. While you were asleep, TikTok was selling from a number that hadn't updated since before the orders started hitting. You oversold. Layla: How many? James: 214 units. The 214 customers who ordered units that did not exist had two options available to them. Wait for a restock with no confirmed timeline. Or cancel. Layla cancelled 214 orders. 214 cancellation emails went out before 9am. Now here is the part that does not end with the cancellations. TikTok Shop's algorithm tracks cancellation rate. A spike in cancellations signals poor seller reliability. It does not distinguish between a stock error and a bad merchant. The algorithm treats both the same way. Layla's account health score dropped. The same video that was being pushed to millions of people the night before started losing distribution by the afternoon. The creator posted again two weeks later with a different brand's product. Layla had 87 units left from the original stock. She sold them in three hours during the second wave. The rest of the demand went to someone else. The viral moment came once. The inventory sync that would have caught it costs $29 a month. She had looked at it in February and decided it was not worth it yet.
85
They had six weeks of runway left. Neither of them had said it out loud yet. It was past midnight. Zain was staring at the same spreadsheet he had been looking at for three hours. Haris was on the couch with his laptop closed. Haris: We should talk. Zain: I know. Haris: How long have you known? Zain: Four months. Maybe five. Haris: And you didn't say anything. Zain: Neither did you. Haris looked at the ceiling. Haris: I kept thinking we'd figure it out. That something would come through. The Enterprise deal. The Karachi pilot. Something. Zain: I kept thinking the same thing. Haris: So we just... waited. Zain: We just waited. Haris: I'm not angry at you. Zain: I know. Haris: I'm angry that we built something for eighteen months and the thing that killed it wasn't the market or the product. It was that we stopped telling each other the truth. Zain: When did that happen? Haris: I think after the first investor said no. You got quiet after that. I didn't push because I didn't want to make it worse. And then it became normal to not push. Zain: I didn't know you noticed. Haris: I noticed everything. I just didn't say anything because you were already carrying a lot and I didn't want to add to it. Zain: That's exactly what I was doing for you. Neither of them said anything for a while. Haris: So we protected each other right into the ground. Zain: Yeah. Haris: What do we do with six weeks? Zain: We either find a way or we close it properly. But we do it honestly this time. No more waiting for the other one to say it first. Haris: I should have said something in January. Zain: So should I. Haris: Do you regret it? The whole thing? Zain looked at the spreadsheet for a long time. Zain: I regret the silence. Not the building. Haris: Me too. Research published this month confirms that the dominant cause of co-founder breakdown is not strategic disagreement. It is behavioral barrier that never gets named, which then gets misread as a problem of vision, once the pressure is high enough. Zain and Haris had a silence problem, imposing as a lack of vision. And silence, as the research puts it, is not the absence of conflict. It is emotional debt that compounds quietly. Every avoided conversation adds interest. The payment arrives as an executive departure, a board intervention, or two people sitting in an office at midnight realizing they protected each other into the ground. The most important conversation in any partnership is not the one about product or fundraising or market fit. It is the one where someone finally says what they have known for months. Before six weeks becomes the deadline.
36
Noor opened the new app permissions screen for the first time on Wednesday. Eleven apps had access to her store. She recognized seven of them. Noor: Tariq, can you get on a call. Tariq: Sure, give me ten minutes. Noor: Take your time, I'm not going anywhere. Tariq: That sounds ominous. Noor: Shopify rolled out something new. A screen that shows every app with access to my store and what permissions each one has. Tariq: Okay. Noor: There are four apps on here I don't recognize. Tariq: Four? Noor: One has read and write access to customer data. Installed fourteen months ago. Tariq: Fourteen months ago we were still working with that agency. Noor: I let them go in March. Tariq: Did anyone offboard their tooling? Noor: I assumed they did. Or I assumed Shopify did. I genuinely never thought about it again. Tariq: What's the app called? Noor: Something called "Storefront Sync Pro." I've never opened it. I don't know what it does. Tariq: Does it still have access right now, today? Noor: Active. Full customer read and write. Order history. Everything. Tariq: For fourteen months, after the contract ended? Noor: For fourteen months. Tariq: Did they bill you for it? Noor: No charge ever showed up. It's a free tier app I think, or it was tied to their own account. Tariq: So it just sat there. Noor: It just sat there. Reading whatever it wanted to read, the whole time, and I had no way of knowing unless I went looking. Tariq: You weren't going looking. Nobody does. Noor: That's the part that's bothering me. I run a tight store. I check my numbers every day. And this was sitting open the entire time. Tariq: What's the move. Noor: Revoke it right now. Then go through the other three I don't recognize. Tariq: Want me to help you go through the list. Noor: Yes. And Tariq, after this, we're doing this check every quarter. Not waiting for Shopify to build a screen for it. Tariq: Calendar invite going out in five minutes. Noor revoked four apps that afternoon. Two were harmless trial installs from over a year ago. One was the agency's leftover tool. The fourth had no name attached to it that either of them could identify. Shopify's app visibility update lets any merchant see where their apps are active and track permission changes. Neat Digital The access does not announce itself when it goes quiet. It just stays open. Until someone goes looking
1
85
Priya paused her best-performing campaign on Tuesday. The data she needed was sitting in Klaviyo. Leon called her Thursday. Leon: Priya, did you pause the June sale sequence? Priya: Tuesday afternoon. It looked flat. I hadn't heard back from you since Monday. Leon: I'm looking at the numbers now. That sequence generated $8,400 between Sunday and Tuesday morning. Priya: What? Leon: Twenty-three orders. 4.8% conversion rate on that flow. Your best campaign this year. Priya: I paused it because nothing was showing in the Shopify admin. Leon: The admin doesn't show Klaviyo revenue attribution. You were reading the wrong screen. Priya: I messaged you Monday at 9am. Leon: I had four other clients send the same message. I got to you Thursday. Priya: Three days, Leon. Leon: I know. Priya: My campaign sat paused for three days because you were busy and I couldn't see the numbers myself. Leon: Yes. Priya: What did those three days cost? Leon: Based on daily send performance, somewhere between $4,000 and $6,000. Priya: How do I make sure this never happens because of a data delay again. Leon: Shopify launched something this morning. Sidekick App Extensions. Klaviyo is one of the first integrations. You can ask Sidekick inside your admin what any specific campaign generated. Revenue. Orders. Open rate. Real time. Without waiting on me. Priya: Why didn't I have this on Monday. Leon: It launched today. Priya: So starting now, I can check this myself. Leon: Yes. Priya: Set it up before you do anything else today. Leon: Already done. Priya: And Leon. Leon: Yes. Priya: Next time something like this launches, I want to hear it from you before I read it in a release note. The call ended. Sidekick App Extensions are now live across 15 partners including Klaviyo, Loop, and Smile. Any merchant can ask Sidekick about campaign performance, subscription data, and loyalty metrics directly inside the Shopify admin. The gap between making a decision and having the data to make it correctly just closed. The campaigns paused before today had an excuse. The ones paused after today do not.
1
17
Sophie's email hit 47,000 inboxes at 9:15am. The store went dark at 9:27am. She had no plan for that. Almost no one does. That was June 3. Dan: Sophie, pause your ads right now. Sophie: What happened? Dan: Shopify is down. Storefront, checkout, admin, all of it. Check shopifystatus.com. Sophie: I just sent the email campaign. It went out 12 minutes ago. Dan: I know. The ads get the hit first. Every click right now hits a dead store. You have to pause NOW! Sophie: Done. How bad is the email? Dan: How many opens so far? Sophie: 11,400. I can see people clicking through and getting errors. Dan: Those are warm leads landing on a page that doesn't load. Most will not come back. Sophie: Can I resend when it's back up? Dan: You can. Open rates for resend are roughly 30 percent of the original send. The momentum those 11,000 people had, is gone. Sophie: How long will Shopify be down? Dan: No timeline. The status page says investigating. That is all they give during an active incident. Sophie: I had Google and Meta running too. Dan: Check your spend since 9:27. Sophie: $410 in the last 45 minutes. Dan: I am sorry but that's $410 with zero conversions possible. Pause everything pointing to the store. Sophie: Done. Dan, this is the second time this year. Dan: Third time since 2020, at minimum. Sophie: Why don't I have a plan for this. Dan: Because it only matters when it breaks. Shopify restored services at 10:37am. The outage lasted 70 minutes. Sophie's campaign never recovered its open rate. Dan built her a protocol the following morning. Four things. A live monitor on shopifystatus.com with SMS alerts, not email. When a store goes down, you are not checking email. You need something that interrupts you. A second alert for response time exceeding five seconds. A slow store is often the first sign of a broader platform issue and that warning gives a ten to fifteen minute head start. Automated pause rules on every ad account, triggered the moment the monitor fires. A pre-staged holding page and a social media template so customers see a platform issue message, not a broken store. The setup took 45 minutes. Sophie did it on June 4. Shopify has had at least one significant outage every year since 2020. The next one is not a question of if. The 45 minutes to build the protocol is easier before the morning it matters than during it.
2
261
Amara paid $10,764 over three years for something Shopify made native this week. Her developer Kevin had seen the announcement coming for months. Her message arrived at 6:51am. Amara: Did you see Summer Editions? Kevin: I saw it. Amara: The AI merchandising. The recommendation blocks. The upsell engine. Kevin: I know. Amara: That is exactly what I have been paying $299 a month for. Kevin: I know. Amara: Three years, Kevin. Kevin: Amara, the tool was working. Your average order value was up 23% in the first year. Amara: I am not arguing it did not work. I am asking if you knew this was coming. Kevin: I heard there was something in development. I did not know the timeline. Amara: But you knew something was coming. Kevin: Yes. Amara: You earn affiliate commission on that app. Kevin: That is not why I did not tell you. Amara: Then why. Kevin: I kept thinking it was further away than it was. Amara: How much commission over three years. Kevin: Amara. Amara: How much. Kevin: Fourteen hundred dollars total. Amara: You made $1,400. I paid $10,764. Kevin: Yes. Amara: Cancel the app today. Set up the native version. And the next time you hear something like this is coming, I hear it from you first. Kevin: Okay. Amara: Today. Kevin: Today. The call ended. Kevin cancelled the app at 7:23am. He still works with Amara. He thinks about that $1,400 differently now. Shopify is absorbing the app ecosystem into the core platform. A/B testing, merchandising, checkout customization. Features that used to be paid add-ons are becoming native. Before you renew anything in your app stack this month, check what Summer '26 just made free. Then ask who knew first.
2
128
Her client was about to pay $85,000 for something Shopify just announced it would build natively. The announcement came on June 11. The deposit was due June 16. Zara had been working on this proposal for six months. Ethan ran a Shopify Plus store doing $3.8 million a year. His checkout was built on checkout.liquid. Rigid. Bleeding conversions. Zara's proposal was a fully composable headless checkout. Custom UI. Component-level control. Everything he had been asking for since last autumn. She had priced it honestly. Then Shopify's Summer '26 preview dropped. Checkout Components. Generally available for Plus. Native and composable. No headless infrastructure. No custom build. Everything her proposal was going to construct, available inside Shopify's own admin from June 17. She read it twice. Then she picked up the phone. "Ethan." "Zara. Still good for Monday?" "I need to tell you something first." "That sounds expensive." "It is the opposite." A pause on the line. "Shopify announced Summer Editions yesterday. One of the headline features is Checkout Components. It is exactly what I was going to build for you. Natively. Inside your admin. No custom infrastructure required." Silence. "For free?" "Covered under your Plus subscription." Longer silence. "So the $85,000." "You do not need to spend it. Not on this." "Zara. You spent six months on that proposal." "I know." "Why are you calling me?" She did not have a clean answer ready. "Because I want you to still be a client in five years. Not someone who paid me and then figured it out later and never called again." Ethan said nothing for a moment. "Most people in your position would not make this call." "Most people in my position should." He was quiet again. "What do I do with the budget?" "Wait until June 17 when the full showcase drops. See what Checkout Components handles natively. Then tell me what is still missing. We build only that." "And if nothing is missing?" "Then your checkout gets rebuilt for the cost of your Plus subscription." "And you get nothing from this project." "I get a client who trusts me." The call ended. He signed a different contract the following week. Smaller scope. Only the work the platform could not do. Zara turned down $85,000 on a Sunday. That call has sent her seven referrals since. Shopify Summer '26 Editions launches in two days. Over 150 updates. Some of them will make things you already paid for, obsolete. Some will create work that does not exist yet. The ones who understand, which is which before Monday, will be two days ahead of everyone who waits for the announcement.
141
Four years. $1.4 million in annual revenue. Eighteen thousand dollars paid to developers trying to fix a store that was never broken. This is the last conversation Elena had before she decided what to do next. "Marcus, just tell me the truth this time." He had been avoiding this call for three days. "The store is not broken, Elena." "Then why is it not converting." "Your checkout conversion dropped from 2.1% to 0.9% in March of last year. I have been looking at this for eight months." "I know how long you have been looking. I have the invoices." He said nothing. "Every developer I have brought in since January said the same thing. Check the apps. Check the theme. Reduce friction. Fix mobile. I did every single one of those things." "I know." "Eighteen thousand dollars, Marcus." "I know." "And the store still converts at 0.9%." A silence. "Elena, what I am about to tell you I should have said six months ago." She waited. "The drop coincided with a Shopify checkout update. Not only on your store. There are dozens of threads in the Shopify community. Merchants doing a million a year. Merchants doing five million. The same pattern across all of them. Sessions going up. Sales going down. Shopify support giving generic answers to every single one." "So it was never my store." "I cannot say that definitively. But the timing. The pattern. The fact that nothing we changed moved the number even slightly." "You think. After eighteen thousand dollars. You think." He did not argue. "Why didn't you tell me six months ago?" "Because I was not sure. And because I kept believing the next fix would be the one." "Every developer believes the next fix will be the one." "Yes." "That is how the invoices kept coming." "That is not why I kept sending them." "But that is what happened." He could not disagree with that. The silence lasted longer this time. "What do I do now?" "You wait. Some merchants in those threads reported conversion recovering after a later Shopify update." "Some?" "Some." "And the others?" "Some of them are not on Shopify anymore." Elena laughed. Not the good kind. "Four years, Marcus. I wrote every product description myself in the first year. My husband covered our mortgage for eight months while I built this." Nothing to say to that. "Is the store worth saving?" "The business is worth saving. That is a different question." "Is it?" Another silence. "Whatever you decide, the four years are not wasted. The customers are yours. The brand is yours. The products are yours." "The checkout was Shopify's." He did not correct that. "Call me when you decide." She called three days later. She had decided to stay on Shopify. Not because she trusted the platform. Because she had spent four years learning this one. Starting over somewhere else meant learning a new one from scratch. She was tired. She was right.
63