Shopify’s data platform just got a boost. In the 2026‑10 API release, ShopifyQL now supports Shop Campaigns fields across two core schemas – shop_campaign_insights and sales. This means you can track how specific campaigns drive orders, break down revenue by campaign, and slice performance by country. In this post we’ll unpack the new metrics and dimensions, explain who needs to pay attention, and give you ready‑to‑run query examples.
What’s new in ShopifyQL 2026‑10
Two schemas received upgrades:
• shop_campaign_insights – adds a new metric shop_campaign_orders and two dimensions country and country_code. This lets you see how many orders each campaign generated and where they originated.
• sales – introduces four campaign‑related dimensions (shop_campaign_id, shop_campaign_name, shop_campaign_type, shop_campaign_source). You can now break down total sales, refunds, and net revenue by the exact campaign that drove them.
Who is affected?
Developers building apps, custom reports, or BI integrations will need to update their queries and schema definitions to reference the new fields. If you expose ShopifyQL data through a GraphQL wrapper or a third‑party analytics tool, add the new dimensions to your schema mapping.
Merchants who rely on the native “Reports” or on apps that surface campaign performance will immediately see richer dashboards – no code change required on their side. However, if you’ve built custom dashboards in Looker, Tableau, or Google Data Studio using the old schema, you’ll need to adjust the data source to include the new fields.
How to update your queries
Below are two starter queries that illustrate the new capabilities. Replace the placeholder dates with your reporting window.
sql
SELECT
shop_campaign_name,
country,
SUM(shop_campaign_orders) AS orders,
SUM(total_sales) AS sales_amount
FROM shop_campaign_insights
WHERE date BETWEEN '2024-01-01' AND '2024-01-31'
GROUP BY shop_campaign_name, country
ORDER BY sales_amount DESC;
sql
SELECT
shop_campaign_name,
shop_campaign_type,
SUM(total_sales) AS revenue,
SUM(total_refunds) AS refunds
FROM sales
WHERE date BETWEEN '2024-01-01' AND '2024-01-31'
GROUP BY shop_campaign_name, shop_campaign_type
ORDER BY revenue DESC;
Action checklist for developers
1️⃣ Update your API version to 2026‑10 or later when initializing the ShopifyQL client.
2️⃣ Add the new fields to any schema definitions or TypeScript interfaces you maintain.
3️⃣ Test existing queries with the new dimensions to ensure they still return results (some older queries may need a GROUP BY adjustment).
4️⃣ If you cache query results, extend the cache key to include the new dimension values (e.g., country_code).
5️⃣ Refresh your app’s permission scopes if you expose campaign data to external users – the new fields are covered by the existing read_reports scope.
6️⃣ Update your documentation and onboarding guides to highlight the new campaign metrics.
Practical takeaways for merchants
• Identify top‑performing campaigns at a country level without building a separate app.
• Compare campaign types (e.g., email vs. social) directly in the Sales report.
• Use the new shop_campaign_orders metric to calculate conversion rates per campaign.
• If you run seasonal promotions, slice the data by shop_campaign_source to see which channel drove the most spend.
Conclusion & next steps
The 2026‑10 ShopifyQL update transforms campaign reporting from a high‑level overview into a granular, country‑by‑country, campaign‑type breakdown. Developers should upgrade their API version, incorporate the new fields, and run the sample queries to validate data flow. Merchants can immediately benefit from richer dashboards that pinpoint the exact campaigns moving the needle.
Ready to level up your reporting? Update to API version 2026‑10 today, run the sample queries, and share your new insights with your team. Need help integrating the fields into a custom app? Drop a comment below or reach out to our Shopify developer community.
