Comparison

NetNet vs ShopifyQL

Shopify's own commerce analytics query language, included with your plan

ShopifyQL is a SQL-like query language for Shopify data, available free in the admin editor, the Admin API and a Python SDK. It can answer almost anything about sales, orders and customers. It cannot answer profit questions, because the costs that determine profit — carrier invoices, gateway fees, ad spend — are not Shopify data.

Atul Tirkey, Co-founder, NetNet

Written by Atul Tirkey · Co-founder, NetNet

Updated September 6, 2026 · 3 min read

ShopifyQL is not an app and does not compete with one. It is a query language, and comparing it to a profit tool is really a question about where your data lives.

What it is

A commerce analytics query language with SQL-like syntax, covering schemas for sales, orders, customers, marketing, inventory and payments. It runs in an editor inside the Shopify admin, through the GraphQL Admin API, and via a Python SDK and CLI.

For anyone comfortable writing queries it is genuinely useful, and free. Questions no packaged report anticipated — how did this collection perform in one region across two seasons, which customers bought product A then product B — are a query away rather than a feature request.

The boundary

ShopifyQL can return anything Shopify knows. The limitation is not the language; it is the data available to it.

Shopify does not know what your carrier invoiced. It records the shipping you charged the customer, which is a different number, and it never sees the surcharges and weight adjustments that arrive weeks later.

Shopify does not know your gateway’s fee structure — the percentage, the fixed component, the tax charged on the fee in some markets. Payment data exists; the fee model does not.

Shopify does not know what you spent on advertising. That is in Meta and Google.

Shopify does not know your landed costs — the freight and duty on imported goods that make cost per item an understatement.

No query reaches data the platform never received. This is a boundary of the system, not a shortcoming of the language.

What you can build with it

More than people assume, and less than enough.

Gross profit is reachable: net sales minus cost per item, cut by product, variant, region or period, with far more flexibility than the packaged profit reports offer. If gross margin analysis is your requirement, ShopifyQL does it well and costs nothing.

Below that line you would need to import carrier invoices, model gateway fee structures, pull ad spend from external APIs, attribute refunds back to originating orders, and maintain effective dates on supplier costs — then join all of it back to orders and keep it running.

That is not writing a query. That is building the application, and then maintaining it.

When the query language is the right answer

Three cases, and they are common enough to be worth naming.

One-off analysis. A specific question, asked once, that no report covers. Faster in a query than in any app.

You have a technical person and unusual questions. A team comfortable with the Admin API can go further than packaged reporting allows, and the flexibility is real.

Your margin is simple. Little advertising, predictable domestic shipping, one payment method. The gap between gross profit and net profit is close to constant, so gross margin queries tell you most of what you need.

The maintenance question

Anything built on queries has to be maintained by whoever wrote them, and that is the cost most often underestimated.

A query is written once and then depended on. Schemas change, definitions drift, the person who wrote it moves on, and a reporting layer made of saved queries quietly becomes something nobody wants to touch. That is a manageable cost for one-off analysis and a real one for a standing weekly number.

When it stops being enough

When the costs that move your margin are invoiced by somebody other than Shopify — and for most stores buying traffic and shipping parcels, that is the majority of them.

The tell is a query you cannot finish: any attempt to compute profit after advertising, or margin after real delivery costs, stops at a join to data that does not exist in the schema. At that point the choice is to build the pipeline yourself or use something that has already built it.

Either is defensible. What does not work is treating gross profit from a query as though it were profit, which is the failure this whole comparison exists to prevent.

What ShopifyQL does better

It is free, it is first-party, and it is genuinely powerful within its domain. SQL-like syntax across schemas covering sales, orders, customers, marketing, inventory and payments, available in the admin editor, through the Admin API, and via a Python SDK and CLI. For anyone comfortable writing queries, it answers questions no packaged report anticipates.

What NetNet does better

It is the pipeline the query cannot reach, already built and maintained. Carrier invoices matched back to orders by tracking number, gateway fee structures modelled as rate, flat component and tax on the fee, ad spend pulled from Meta and Google, refunds attributed to originating orders, and effective dates on supplier costs. Assembling that yourself is not writing a query — it is building an application and then owning it when the schema changes.

Capability comparison

NetNet compared with ShopifyQL, capability by capability
Capability NetNet ShopifyQL
What it is A profit application A query language and editor
Data it can reach Shopify plus carriers, gateways and ad platforms Shopify data only
Cost of goods Landed cost per variant, with effective dates Cost per item, as recorded in Shopify
Carrier invoice costs Matched to orders by tracking number Not available — Shopify records shipping charged
Gateway fee modelling Rate, flat fee and tax on fee Payment data available, fee structures not modelled
Ad spend Synced from Meta and Google Not Shopify data
Profit layers Gross profit, contribution margin, marketing profit, net profit Whatever you can express from Shopify data
Flexibility Fixed reports plus exports Any question expressible as a query
Skill required Cost configuration Comfort writing SQL-like queries
Where it runs Embedded Shopify app Admin editor, Admin API, Python SDK and CLI
Cost From $15/month Included with Shopify

Pricing

Published pricing for NetNet and ShopifyQL
Tier NetNet ShopifyQL
Entry $15/month, up to $5K monthly revenue ($49 at $25K) Included with your Shopify plan
Mid $99/month, up to $100K monthly revenue Included
Upper $199/month, up to $250K monthly revenue Included
Trial 14 days, full access Not applicable

ShopifyQL costs nothing beyond your existing plan, so price is not the comparison. The question is whether the data you need lives inside Shopify. If it does, the query language is free and capable. If your margin depends on carrier invoices and gateway deductions, no query reaches them.

Which one fits

Choose ShopifyQL if

  • Your questions can be answered from data Shopify already holds
  • You are comfortable writing SQL-like queries and want maximum flexibility
  • You need one-off analysis rather than a standing report someone checks weekly
  • You want to pull commerce data programmatically through the Admin API

Choose NetNet if

  • The costs eroding your margin are invoiced by carriers and gateways, not by Shopify
  • You need advertising spend measured against order margin
  • You want contribution margin maintained continuously rather than queried
  • Nobody on the team wants to maintain queries as a reporting layer

Frequently asked questions

Can ShopifyQL calculate net profit?

Not meaningfully. It queries Shopify data, and the costs that determine net profit — what a carrier actually invoiced, what a gateway deducted inside a payout, what you spent on advertising — are not in Shopify. A query cannot return data the platform never received.

What is ShopifyQL good for?

Any question answerable from commerce data: sales trends, order patterns, customer behaviour, inventory, marketing and payments. It covers ground packaged reports do not anticipate, and for one-off analysis it is often faster than any app.

Is ShopifyQL free?

Yes, it is part of Shopify. It is available in the admin editor, through the GraphQL Admin API, and via a Python SDK and CLI, with no additional subscription.

Could I build profit reporting on ShopifyQL myself?

Partially. You can get to gross profit using cost per item. Beyond that you would need to import carrier invoices, model gateway fees and pull ad spend from outside Shopify, then join it all back to orders — which is building the application rather than querying one.

Keep reading

Scale profitably.

Know what every order made you.

Install Free on Shopify