If you're coming from a traditional e-commerce platform like Solidus or Magento, working with Shopify can feel like a significant adjustment. Unlike these open platforms where you can modify virtually any aspect of the codebase, Shopify operates more like a black box. You can't simply rewrite core functionality or directly access the underlying systems.
But that doesn't mean customization is impossible. Shopify has evolved to provide specific extension points where developers can inject custom functionality. These carefully designed interfaces allow you to expand Shopify's capabilities while maintaining the platform's stability and security.
Let's take a look at each one of them!
1. Theme Blocks: Customizing the Storefront Experience
When you install apps on your Shopify store, they can expose theme blocks that render within your storefront. This allows you to add new functionality to your theme without directly editing theme files.
Theme blocks come in two main types:
Section Blocks
These render inside existing theme sections. If a section supports app blocks, you can include blocks exposed by your installed apps. The app defines the liquid template that gets rendered, the data being used, and the settings available.
For example, a ratings app might display a star rating block that shows both the average rating and individual reviews.
Embedded Blocks
These are smaller UI elements that aren't specific to a section but appear throughout your site. Examples include helper tags, accessibility features, or customer service elements.
This approach is especially valuable when you don't have control over the theme but need to introduce visual elements. At Nebulab, we've used this for our Sprout app, creating visual elements in merchants' themes by exposing theme logic through app blocks.
For more details on implementing theme blocks, check out Shopify's Theme Blocks documentation.
2. Web Pixels: Tracking Solutions for Checkout
Shopify is transitioning to a new checkout experience that will be fully controlled by the platform. By August 2025, all stores will be required to use this new system, which has significant implications for tracking and analytics.
The primary impact? You'll no longer be able to add custom JavaScript to checkout and order status pages. This limits your ability to track events using client-side tracking.
To address this limitation, Shopify has introduced web pixels - isolated containers that exist around tracking pixels:
App Pixels
These are included with apps you install on your Shopify store. Examples include Instagram or TikTok pixels. Once installed and connected to your ad accounts, they automatically subscribe to relevant events and send data to their respective platforms.
Some, like TikTok, employ a hybrid approach:
- Client-side tracking through the app pixel
- Server-side enrichment by using the app's API credentials to fetch additional order information
Custom Pixels
If you need to send data to a platform that doesn't offer an official Shopify app, you can create custom pixels. These allow you to:
- Subscribe to specific events (like checkout completion)
- Import the tracking platform's pixel
- Use their API to send the data provided by Shopify
This approach creates a unified tracking system across your theme and checkout pages, despite Shopify's checkout limitations.
Learn more about implementing web pixels in our blog post: Web Pixels on Steroids: How To Enrich Your Shopify Analytics.
3. Shopify Flow: Merchant-Controlled Automation
Shopify Flow enables merchants to create their own automation workflows through a user-friendly interface. While Shopify provides many built-in triggers, conditions, and actions, the real power comes from custom extensions.
As developers, we can extend Flow by creating:
- Custom Triggers: Events that initiate workflows (e.g., "subscription created" or "subscription renewed")
- Custom Actions: Operations that can be performed (e.g., "pause subscription")
By exposing these elements to Shopify Flow, we empower merchants to build their own business logic without developer intervention.
For example, a merchant might create a workflow where when a subscription containing a specific product is created, an email notification is sent to their fulfillment team. This creates powerful automation possibilities without custom development for each use case.
For more insights, read our post on Building Custom Shopify Automations.
4. UI Extensions: Customizing Key Experiences
As Shopify takes more control over critical customer touchpoints like checkout and account pages, they're providing UI extensions to maintain customization possibilities. These extensions let you inject custom UI elements at specific points:
Checkout UI Extensions
With Shopify's new checkout experience, you can add custom elements like:
- Product information displays
- Upsell opportunities
- Delivery information
- Custom fields
At Cometeer, we use checkout extensions to display virtual product information, helping customers understand what's in their cart, and to offer relevant upsells.
Account Portal Extensions
As Shopify's new customer account experience gains adoption, UI extensions let you integrate custom functionality. For subscription businesses, this might include subscription management interfaces directly within the customer account.
Like admin UI extensions, these must use Shopify's component libraries and follow their design patterns.
For a hands-on guide, check out our tutorial on How To Build Your First Shopify POS UI Extension.
5. Admin UI Extensions: Enhancing the Shopify Admin
Admin UI extensions allow you to render UI elements at specific points within the existing Shopify admin. Unlike embedded apps, these extensions integrate directly into admin pages like orders, products, or customers.
For example, we implemented an extension at Cometeer that displays coffee mapping details directly on the order page:
- When a customer orders a virtual product (like a coffee box)
- The extension shows which specific coffees were selected
- It displays the scoring logic used to select those coffees
- Operators can see this context without leaving the order view
Admin UI extensions must use Shopify's component libraries, ensuring they maintain the admin's look and feel. This creates a seamless experience where your custom functionality feels like a native part of Shopify.
Learn more about implementing these in our post: Into the Light: Bringing Visibility to Your Shopify Customizations.
6. Embedded Apps: Creating Admin Interfaces
Embedded apps provide the most flexible way to extend Shopify's admin interface. When a merchant installs your app, it appears in their admin navigation. Clicking on it renders an iframe containing your custom interface.
This approach gives you complete control over the UI and functionality, allowing you to build complex interfaces for managing custom data and workflows. For instance, a subscription app might use an embedded app to display:
- All active subscriptions
- Detailed subscription information
- Management controls (pause, cancel, etc.)
While you have freedom in what you render, using Shopify's Polaris component library creates a native-feeling experience that integrates seamlessly with the rest of the admin.
Embedded apps support multiple pages and navigation, making them ideal for complex workflows that require dedicated interfaces.
For a detailed guide on building embedded apps, see Shopify's Embedded App documentation.
7. Shopify Functions: Injecting Custom Logic
Shopify Functions represent the closest thing to the traditional plugin architecture found in open platforms. They allow you to inject custom code directly into Shopify's processing flow at specific extension points.
These functions receive inputs from Shopify, process them according to your logic, and return outputs that influence Shopify's behavior. Current extension points include:
- Discount Functions: Create custom discount types beyond what's available in the admin
- Location Rules: Control which fulfillment locations are chosen during checkout
- Validation Rules: Define when orders can proceed through checkout
Functions come with constraints:
- Limited execution time
- Restricted code size and resource usage
- Must be deterministic
- Written in Rust or JavaScript
- Hosted on Shopify's infrastructure
Despite these limitations, Functions enable powerful customizations. For example, a loyalty program might use a custom discount function to provide member-specific discounts on certain product combinations - something not possible with standard Shopify discounts.
For more information, refer to Shopify's Functions documentation.
Conclusion: Choosing the Right Extension Approach
When extending Shopify, selecting the right approach depends on what you're trying to accomplish:
- For visual customizations: Theme blocks let you inject UI components into the storefront without theme modifications.
- For tracking and analytics: Web pixels provide a standardized way to capture checkout events despite Shopify's checkout restrictions.
- For merchant-controlled workflows: Shopify Flow extensions empower merchants to create their own business logic.
- For checkout and account customization: UI extensions maintain customization as Shopify standardizes these experiences.
- For enhancing standard admin pages: Admin UI extensions integrate directly into existing workflows.
- For complex admin interfaces: Embedded apps give you complete control over custom management interfaces.
- For custom business logic: Shopify Functions let you modify platform behavior at specific points.
The extension landscape continues to evolve as Shopify balances merchant customization needs with platform stability. Staying current with these options ensures you can deliver the custom experiences clients need while working within Shopify's constraints.
Remember that sometimes combining approaches yields the best results. For instance, an embedded app might manage configuration while Shopify Functions implement the actual logic.
If you need expert guidance on your Shopify integration strategy, reach out! At Nebulab, we specialize in building high-performing Shopify store for midmarket and enterprise brands, and we'd love to help you build the e-commerce experience you need to shine.