Shopshot's attribution model is deliberately simple. It does not model the customer journey across many touchpoints. It assigns acquisition cost using rules you can hold in your head, and it reports only what it can trace. The result is a CAC and ROAS you can actually defend.
The core rule
Order type | Acquisition cost | How it is set |
New customer, channel known | Channel-specific CAC | That channel's daily spend divided by its new-customer orders |
New customer, channel unknown | Blended CAC | Total spend divided by total new-customer orders |
Returning customer | Zero | You already paid to acquire them |
This is why, in Orders, a repeat purchase can look far more profitable than a first purchase of the same product. That difference is real, and it is the whole reason retention matters.
[Screenshot placeholder] An order drawer's Attributions block showing Acquisition type Paid, Source Meta, and the campaign, with the Marketing / CAC line in the waterfall
CAC is sunk, and separate from order-level costs
Acquisition cost is reported on its own, not folded into the order-level cost of fulfilling an order (COGS, shipping, fees, fulfillment). In the waterfall it sits below Gross Profit and is marked as sunk, because ad spend does not come back if the order is refunded.
SKU-level marketing allocation
When marketing cost is pushed down to products, it is allocated by revenue share: a SKU's marketing cost is proportional to its share of revenue. Shopshot does not claim to know which ad sold which unit, so it uses a transparent split rather than a guess dressed up as precision.
Why your numbers differ from the ad platforms
Actual ROAS uses last-click UTM attribution. Platform-reported ROAS is excluded, because ad platforms self-attribute and frequently claim the same conversion more than once. Both MER and Blended ROAS use Net Sales as the numerator, keeping every marketing metric consistent with each other and with your P&L. Your Shopshot ROAS will usually be lower than the platform's, and it will be the number that actually ties to your bank account.
The Shopshot pixel closes the gap
Shopify captures UTMs at checkout, until it does not. Buy Now buttons, dynamic checkout, an ad click followed by a different product, and multi-session purchases all lose the original source. The Shopshot pixel records a visitor's genuine first-touch UTM on entry and hands it to Shopshot at checkout, so sales Shopify could not attribute get credited to the campaign that earned them. See The Shopshot Pixel.
Common questions
Why is my Shopshot CAC higher than my platform's cost per acquisition? Because Shopshot divides real spend by real new-customer orders, without the platform's self-attributed conversion inflation.
A first order looks unprofitable. Is that a problem? Not necessarily. First orders carry full CAC while later orders from that customer carry none, so the return on an acquisition shows up across the customer's orders over time.
Why do returning customers carry no CAC? Charging acquisition cost again would double-count. You paid once to win them.
Can I use multi-touch attribution instead? No. Shopshot is single-touch by design, because multi-touch models produce confident-looking numbers that cannot be verified against a real order.
Next step
Attribution is only as good as your UTMs. Connect your ad platforms and keep auto-tagging on so channel-specific CAC is available for as many orders as possible. → Integrations: Meta and Google Ads
Related
