Hey @Yaozhong_Kang - thanks for reaching out.
I did some digging based on what you’ve laid out, and the key distinction is how the customer relationship was established. Customers who were already paying for Adlyse through a non-Shopify channel before connecting their store can retain that external subscription. They don’t need to move it to Shopify solely because they later add Shopify as a data source. This matches the existing-customer scenario confirmed in this previous community answer.
Merchants who discover Adlyse through Shopify, connect Shopify before subscribing, or enter the paid service through the Shopify app flow need to use Shopify App Pricing or the Shopify Billing API. The Shopify flow can’t direct them to subscribe externally before connecting as a way around this requirement. Describing the integration as a free connector also doesn’t create an exception when it connects to Adlyse’s own paid service. You can find the applicable requirement under Rule 1.2.1, which you mentioned in your post.
The public requirements don’t separately address upgrades made by an existing externally billed customer after they connect Shopify. I’d include that exact account and upgrade flow in the Test Instructions when resubmitting so it can be reviewed alongside the two billing paths.
That existing-customer treatment isn’t a Billing API exemption. Based on the model described, Adlyse isn’t eligible for an off-platform billing exemption. Being multi-platform, treating Shopify as an optional data source, or offering a free connector to Adlyse’s own paid service doesn’t create an exemption. Shopify-originated paid users must use Shopify App Pricing or the Billing API.
Just to set expectations, this clarification doesn’t replace or override feedback provided during App Review. The App Review team makes the final determination based on the submitted app and its billing flows. When resubmitting, include as much context as possible in the Test Instructions, including how existing customers are identified, how the billing paths are separated, and how upgrades are handled.
Hope this helps!