Documentation

How CollectionsIQ works

A complete tour of the engine — connecting platforms, the metric & rule language, return-adjusted net ROAS, hysteresis, attribution, and feeds. Screenshots are being added.

CollectionsIQ turns the data you already have — ad performance, Shopify sales, and returns — into Shopify collections that stay current automatically. This page explains each part in detail. For a higher-level tour, see the product overview.

Overview

You define a rule — a condition or a nested group of conditions over your metrics — and CollectionsIQ keeps a Shopify collection populated with exactly the products that match, re-evaluated every day. Rules read from three data families: ad performance (Google & Meta), Shopify sales (orders, units, revenue), and returns (refunds and returned items). The same rule can mix all three.

The guiding principle throughout: store only raw, additive components and derive every ratio at evaluation time. Spend, impressions, revenue, refunded amounts and units are stored; ROAS, CPM, return rate and net ROAS are computed from sums when a rule runs. That keeps every number auditable and lets you define new metrics without re-collecting data.

Home — connection status, collection count, plan, and daily-sync status.

Connecting platforms

From Integrations, connect Google Ads and Meta with read-only access (Google via OAuth, Meta via Facebook Login for Business requesting ads_read). CollectionsIQ never writes to your campaigns. For each platform you pick which ad account to use; Meta merchants can supply a Catalog ID so catalog product ids map cleanly to Shopify products.

Shopify sales and returns flow in automatically once the app has order access — orders and refunds are read into per-product aggregates and a returns ledger. Connecting takes a minute; metrics populate on the next sync (or immediately with Fetch now).

Integrations — Google & Meta connection cards, account selection, and the unmatched-products matcher.

The data model

Two ideas keep the data trustworthy:

Additive components only

We store the raw building blocks per product, per day, per platform — impressions, clicks, spend, conversions, conversion value; and on the Shopify side units sold, gross sales, discounts, refunds, refunded units, orders. Derived metrics are computed from sums (e.g. blended CPM = Σ spend ÷ Σ impressions × 1000), never by averaging ratios.

Source isolation

Every row is tagged live (real synced data) or demo (synthetic data you can load to explore the app). They are kept strictly separate: rules evaluate on live data by default, and demo data can be deleted on its own without touching anything real. You can toggle between them on Insights.

Metrics & custom metrics

Every metric — built-in or your own — is a formula over the base components. Built-ins include CPM, CTR, CPC, ROAS, CVR (ad), net sales, AOV (Shopify), and combined metrics like True ROAS, CPA and margin after ad spend.

In the Metrics panel you can define custom metrics with a small formula language — the base-component names, the operators + − × ÷, and parentheses. For example:

True ROAS = ( gross_sales − discounts − refunds ) ÷ spend
Refund rate = refunded_units ÷ units_sold
Margin after ad spend = ( gross_sales − discounts − refunds − spend ) ÷ ( gross_sales − discounts − refunds )

Formulas are validated live as you type, only reference known components, and guard every division (a zero denominator yields "no value" rather than a misleading number). Once saved, a custom metric is usable in rules exactly like a built-in.

Metrics panel — the formula editor with the component palette and live validation, plus the built-in catalog.

Return-adjusted net ROAS

This is the heart of solving the click-vs-buy paradox. A product's gross ROAS can look great while its kept revenue is poor, because a chunk of units come back. CollectionsIQ accounts for that.

The returns ledger

Refunds are read into an event-level ledger with two dates: the sale date (the cohort the order belongs to) and the refund date (when the money actually moved). Each refund line is classified — only genuine, restocked product returns count toward return rate; shipping refunds, discount adjustments and pre-fulfillment edits are separated out (this alone prevents return rates being overstated several-fold).

Two derivations

If a product doesn't have enough matured data for a reliable rate, CollectionsIQ falls back to its category's rate, then to treating it as gross — it never invents a rate from a thin sample. Both net derivations are available on the ROAS metric as a per-condition return treatment (gross, net-settled, net-predicted).

Net-ROAS and returns metrics require Shopify order access. Where order data isn't yet available, these read as zero on live data — the rest of the engine (ad metrics, gross ROAS, bestsellers) works regardless.

The rule engine

A rule is a match (ALL = AND, or ANY = OR) over a list of conditions and nested sub-groups. Each condition has:

Nested groups

Conditions and groups nest arbitrarily, so a rule reads the way you'd say it:

Match ALL of:
  • True ROAS ≥ 3
  • Match ANY of:
     – Top 20 by units (30d)
     – Blended CPM < $10
  • NOT in collection "Clearance"

Before saving, preview shows the exact set of products the rule selects, so there are no surprises when it publishes.

Rule builder — nested AND/OR groups, the metric picker, return-treatment selector, and the live preview.

Hysteresis (stability)

Collections that change every day churn your storefront and reset ad-platform learning. With hysteresis enabled, a product must pass the rule for several consecutive runs before it's added, and fail for several before it's removed — and you can use a fast test to promote (net-predicted) and an honest test to retain (net-settled). Small oscillations around a threshold no longer flap membership; only sustained changes move products in or out.

Attribution: ad-subject vs basket-rider

Dynamic ads frequently get credit for whatever else lands in the cart. CollectionsIQ resolves, per order, which product the click was actually for (the "ad-subject"), and tags each refund/line accordingly. An attribution scope of ad-subject only judges a product on the returns and revenue of its own ad clicks — so a hero isn't propped up by co-purchased "basket-riders" it didn't earn. Full basket counts everything.

Insights & product matching

The Insights tab shows per-product performance — impressions, clicks, spend, CPM, CTR, per-platform and blended ROAS, plus Shopify net sales as an independent column — with a live/demo toggle. Ad ids that don't automatically map to a Shopify product are listed under unmatched, where you can map them by hand with a typeahead (by name, SKU, or barcode); the mapping is remembered for future syncs.

Insights — the per-product table with per-platform ROAS and the live / demo source toggle.

Feed integration

CollectionsIQ outputs standard Shopify collections, so they drop straight into the feed management app you already use. Any tool that can target or split a feed by collection — DataFeedWatch, Feedonomics, Simprosys, Sales & Orders, and others that support smart collections — can build performance-segmented feeds from them:

Because CollectionsIQ keeps each collection's membership current daily, your feeds follow automatically — no manual list maintenance.

Sync & reliability

A durable, checkpointed pipeline runs every day per store: pull ad metrics, read Shopify sales & refunds, evaluate each rule (with hysteresis where enabled), then reconcile the Shopify collection — adding and removing only what changed. Re-runs are idempotent and safe. You can also trigger a sync on demand, and the app refreshes data in the background when you open it.

Data & privacy

CollectionsIQ stores aggregate per-product metrics, a refunds ledger keyed by Shopify refund ids (no customer identities), and encrypted access tokens. It does not store customer personal data, and it never writes to your ad campaigns. Read-only ad scopes are used for reporting only. See the CollectionsIQ privacy policy, the Terms, and Data deletion.

Install on Shopify   Back to overview