Shopify App Development

Shopify App Review: Conquering 'External Billing' for Free Connector Apps

The Shopify App Store is a vibrant ecosystem, but for developers, navigating its review process can sometimes feel like a high-stakes puzzle. Strict policies, while essential for merchant trust, can lead to frustrating rejections, especially when an app's functionality intersects with external platforms. At Shopping Cart Mover, we often assist businesses in optimizing their Shopify presence, and a common pain point we observe for developers is the "external billing" rejection for seemingly innocuous connector apps.

Distinguishing Shopify in-app experience from external SaaS billing
Distinguishing Shopify in-app experience from external SaaS billing

The "External Billing" Conundrum for Free Connector Apps

Shopify's App Store policies are clear: if your app charges merchants for features or services within the Shopify ecosystem, you must use Shopify's own billing API. This ensures a consistent, secure experience for merchants and allows Shopify to manage transactions. However, what happens when your app is a free connector to an external SaaS platform that does have its own paid tiers? This is where the "external billing" conundrum arises.

Many developers assume that as long as their Shopify app itself doesn't contain any billing links or upgrade prompts, they're in the clear. The core issue, as highlighted in a recent Shopify Community thread by webriy, is the distinction between your external SaaS platform having a billing system and your Shopify app exposing or linking to that system. Shopify's review team is vigilant about preventing "gateway apps" – apps that serve as a front for an external billing system, circumventing Shopify's own mechanisms.

A Real-World Scenario: The BrandKity Experience

webriy’s case with BrandKity: Brand Asset Manager perfectly illustrates this challenge. BrandKity developed a Shopify embedded admin app designed to be a simple, read-only connector. Merchants could connect their existing BrandKity account via an API key, browse assets, and import them into Shopify Files. Crucially, the Shopify connector feature itself was free for all BrandKity users, even those on their Free plan, and merchants were not required to upgrade to any paid BrandKity tier to use the Shopify integration. The app had no billing pages, no navigation items, no upgrade buttons, and no links to external checkout within the embedded app.

Despite this, the app was repeatedly rejected for "external billing." The Shopify review team provided a screencast as evidence, which showed BrandKity’s external dashboard's billing page and an "Upgrade" button leading to a LemonSqueezy checkout. The critical flaw in this evidence, as webriy pointed out, was that the screencast did not demonstrate how to reach that external billing page from within the Shopify embedded app. It merely proved that the external SaaS platform had a billing system, which was never in dispute.

This situation led to a frustrating loop:

  • Initial rejections cited that because the platform had paid tiers, the Shopify app must use Shopify Billing.
  • Later, the explanation shifted to the existence of an "external billing flow" reachable from the app.
  • However, no one from Shopify could provide a screencast starting inside the Shopify app that showed the navigation path to this alleged external billing flow.
  • Communication was further hampered by "no-reply" review emails.

The breakthrough came when Shopify eventually acknowledged that their provided video "solely displays your external BrandKity dashboard" and "does not depict a merchant navigating from the Shopify embedded app to that billing page." This clarification was vital, affirming that the existence of external billing isn't the issue; the in-app accessibility of it is.

Actionable Strategies for Developers: Proving the Negative Space

This case offers invaluable lessons for any developer submitting a connector app to the Shopify App Store. The key often lies in proving what isn't there – the "negative space" of billing flows.

1. Master Your Screencast Submission

As advised by lumine in the thread, your screencast is your most powerful tool. Don't just show your app working; explicitly demonstrate the absence of billing.

  • Start Inside the Shopify App: Your screencast must begin within the Shopify admin, showing the merchant navigating to and opening your embedded app.
  • Thorough Walkthrough: Systematically walk through every page and feature of your embedded app. Hover over every call-to-action (CTA), menu item, and clickable element.
  • Explicit Captions: Use on-screen captions or voiceover to clearly state: "No upgrade prompt here," "This opens a Shopify Files modal, no external navigation," "This API key field does not trigger any billing interaction."
  • Demonstrate Core Functionality: Show the connection succeeding (e.g., API key linking) without any plan-tier interaction.
  • Separate External Demos: If your external SaaS has billing, you might need to provide a separate screencast of that, clearly labeling it as external to the Shopify app experience. This preempts reviewers from assuming a connection.

2. Meticulous App Design and Documentation

Ensure your Shopify app is meticulously designed to avoid any ambiguity regarding external billing.

  • Zero External Billing Links: Double-check that there are absolutely no direct or indirect links, buttons, or redirects from your embedded Shopify app to your external SaaS billing pages, upgrade flows, or payment gateways.
  • Clear Submission Notes: In your app submission notes, explicitly state:
    "This app is a free, read-only connector. It does not contain any in-app billing, upgrade prompts, or links to external billing systems. Merchants are not required to upgrade their external [Your SaaS Name] plan to use this Shopify integration."
  • Focus on Value: Frame your app's purpose purely as an integration tool, emphasizing its utility within the Shopify ecosystem without referencing external monetization.

3. Persistent and Precise Communication with Reviewers

When facing rejection, clarity is paramount.

  • Ask Specific Questions: As webriy did, insist on precise answers: "What exact Shopify app route contains this alleged billing flow? What exact button, menu item, or UI element inside the embedded app opens it? Can Shopify provide a screencast that starts from inside the Shopify app and shows the full path?"
  • Reference Policies: If appropriate, politely reference Shopify's own app store policies to support your claim that your app is compliant.
  • Document Everything: Keep a detailed log of all communications, rejection reasons, and your responses.

Key Takeaways for Shopify Developers

The BrandKity case underscores several critical points for developers:

  • The Burden of Proof is Yours: While Shopify's review process aims to protect merchants, developers bear the responsibility of clearly demonstrating compliance.
  • Distinction is Key: Clearly differentiate between your external SaaS platform's business model and the specific functionality and monetization (or lack thereof) of your Shopify app.
  • Proactive Clarity Prevents Rejection: Anticipate potential misunderstandings and address them explicitly in your submission and demonstration materials.

Conclusion

Navigating the Shopify App Store review process for free connector apps with external SaaS billing can be challenging, but it's far from impossible. By understanding Shopify's core billing policies, meticulously designing your app to avoid any perceived external billing links, and providing crystal-clear, "negative-space" proof in your screencasts, you can significantly increase your chances of a smooth approval. At Shopping Cart Mover, we believe that a well-integrated app is a powerful asset for any Shopify store. Don't let review hurdles deter you from building valuable tools for the Shopify ecosystem.

Share:

Use cases

Explore use cases

Agencies, store owners, enterprise — find the migration path that fits.

Explore use cases