flowsk.com
For DTC

Attribution for DTC ecommerce brands

Paid social on mobile iOS, considered purchases that take a week, and a checkout on another domain. DTC is the most ITP-exposed category there is — here is the fix, in order.

Aug 4, 2026· 3 min read ·Use cases
Quick answer

≈46% Safari × ≈32% converting after day 7 ≈ 15% uncreditable

For a typical considered-purchase DTC brand, roughly 15% of conversions cannot be credited to the campaign that caused them. They appear as direct or organic, which is why prospecting always looks worse than retargeting and why direct traffic grows whenever you increase spend.

The single highest-leverage fix is not technical: capture the email earlier. The second is a server-set visitor id.

DTC brands buy attention on feeds, on phones, from an audience that is disproportionately iOS in the US, UK, Canada and Australia. Then they ask people to spend $150 on something they have never touched.

That combination — mobile Safari plus a considered purchase — is the exact scenario browser storage handles worst.

What is actually happening

A customer sees your ad on Tuesday, browses three products, and leaves. She thinks about it. On Saturday she gets your abandoned-browse email, comes back, and buys.

Eleven days of consideration is completely normal for a $150 lamp. It is also four days longer than her cookie lived. On Saturday she arrives as a brand new anonymous visitor with no memory of Tuesday’s ad — so Klaviyo takes the credit, Meta shows a modelled conversion it cannot substantiate, and the prospecting campaign that actually created the customer shows a CPA that gets it paused on Monday.

The five symptoms

  1. Retargeting looks phenomenal, prospecting looks broken. Retargeting converts inside the window; prospecting starts journeys that finish outside it.
  2. Direct traffic scales with ad spend. Which is not how direct traffic works.
  3. Meta reports far more conversions than Shopify. View-throughs plus modelling plus a shorter memory than either party admits.
  4. Email appears to drive 30% of revenue. Under last-touch it does. Under first-touch, the same store usually shows 10%.
  5. Repeat customers look new every week. Because to your tracking, they are.

The fix, in order of leverage

1. Capture the email earlier. This is not a tracking change; it is a UX change, and it is the biggest single win available. A pop-up, a quiz, a size guide, a back-in-stock alert — anything that trades value for an email inside the first session. The moment an email is bound, every anonymous session before it retroactively belongs to a person, and every purchase after it inherits the acquiring campaign, forever.

2. Set the visitor id from your server. A first-party Set-Cookie on your store domain is not subject to Safari’s seven-day cap. This is the change that makes a 30-day window actually 30 days. On Shopify it is a theme edit plus a small backend endpoint; on WooCommerce it is a PHP hook.

3. Confirm every order from the webhook. orders/paid fires from Shopify’s servers. No ad blocker, no browser policy, no consent banner participates. Use the order id as the de-duplication key so the client-side event merges with it rather than double counting.

4. Carry the id through checkout. Put the visitor id in a cart attribute so it comes back on the order. That is the only reliable join between the browsing session on your domain and the order created on Shopify’s.

5. Report on first-touch and last-touch side by side. The gap between them is exactly what your prospecting is worth and your last-touch report is currently giving to email.

What changes after

The measurable outcome is not more revenue — it is the same revenue attributed correctly. In practice that means prospecting campaigns stop looking 30–50% worse than they are, email stops looking like a miracle, and the decision to scale or cut a campaign is made against a number that matches your bank.

Then the free calculators become useful, because they finally have a real CAC to work with: break-even ROAS for the multiple you need at your margin, and CAC payback for how long the cash valley lasts before a customer repays their acquisition.

Frequently asked questions

Why does retargeting always beat prospecting in my reports?

Partly because it genuinely converts better on warm audiences, and partly because it converts inside the window. Prospecting starts journeys that finish two weeks later, outside a 7-day Safari cookie. Some of that gap is real performance and some is a measurement artefact — and without a durable identity you cannot tell which.

Where does all my direct traffic come from?

Largely from your paid traffic, one week later. When the identifier expires, a returning customer arrives with no referrer and no campaign attached. If direct grows in step with spend, that is the mechanism.

Does the email pop-up actually help attribution?

Substantially. The email binds every anonymous session before it to a person, so the acquiring campaign survives even when the cookie does not. On most DTC sites it is the single biggest measurement improvement available in an afternoon.

My checkout is on a Shopify domain. Does that break this?

No. Carry the visitor id into the order as a cart attribute and read it back from the orders/paid webhook. That is the join between browsing on your domain and the order created on theirs.

Do I still need the Meta pixel?

Yes. Keep it — that is what Meta optimises on. Just stop using it to decide your budget.

Price it for your own store

Put in your Safari share, your time-to-convert and your AOV. The estimator returns the monthly revenue currently attributed to the wrong channel.

Estimate my loss

Stop guessing which ad made the sale.

Flowsk Signals stitches the anonymous click to the email to the purchase — first-party, server-side, de-duplicated. One snippet, $29/mo, and every conversion comes with a receipt you can inspect.