ConversionEX
Services
WorkReviewsAboutContact
Portland, OR

Analytics, Tracking & Data in Portland, OR

Measurement for Portland brands where gross revenue is a misleading number and the return rate decides the month.

Delivered remotely for brands across Portland and Oregon.

Scale · Portland

Why Portland brands come to us for this

  • Revenue reported net of returns and refunds at channel level, so ROAS and MER stop flattering the business
  • Return reasons captured by variant and joined to product, size, width and acquisition source
  • Sales by destination state with running nexus threshold tracking for an Oregon-based seller
  • Subscription cohort reporting: retention by cycle, dunning recovery rate and LTV by acquisition channel
  • Server-side tracking on a first-party subdomain, reconciled against Shopify order data rather than assumed

For most Portland catalogues the reporting problem is not attribution, it is that the headline number is wrong on purpose. Gross revenue on a footwear or technical apparel brand overstates the business by whatever the return rate is, and if returns are not netted out at the channel level then every ROAS, every MER and every test result is inflated by an amount that varies by product. We build the reporting layer so revenue is reported after returns and refunds, split by channel, and reconciled to what Shopify actually banked.

The second layer is the return data itself, which most stores collect uselessly. Return reasons need to be structured, captured at variant level and joined back to the product and the acquisition source, because the useful question is never what your return rate is — it is which style, which size, which width and which ad concept produced it. That single join usually pays for the whole engagement, because it turns a vague margin problem into a specific product page or a specific creative to retire.

Underneath both sits the standard build: server-side tracking through a first-party endpoint, Conversions API and Enhanced Conversions with properly hashed identifiers and clean browser-to-server deduplication, a documented GA4 event schema so a report means the same thing next year, and consent mode wired to your CMP. Boring, and everything else you buy depends on it being right.

Reconciledevery reporting number tied back to Shopify order data before it is published
Net of returnschannel revenue reported after refunds, not on gross checkout value
Documented schemaa written GA4 event and parameter spec, so reports still mean the same thing next year
Local context

Two Oregon-specific things your dashboard should show and probably does not

First, sales by destination state with running totals against economic nexus thresholds. An Oregon business collects no sales tax at home, which makes it very easy to grow into a filing obligation in another state without noticing until it is two years old and expensive. We build the revenue-by-state view with threshold tracking so the trigger is visible as it approaches — the registration and filing decisions stay with your accountant, but nobody should be finding this out retrospectively. Second, subscription cohorts. If a meaningful part of the business is a coffee or club subscription, blended monthly revenue hides everything that matters: retention by signup cohort, churn concentrated at a specific billing cycle, failed-payment recovery rate, and lifetime value by acquisition channel. Those two views plus revenue net of returns give a Portland operator a genuinely different picture of the business than the default Shopify dashboard, and they are the reports we build first.

Scope

What Analytics & Data includes

The same standard of work we run for every client — applied to a Portland brand’s realities.

Full service detail
01

Tracking Audit & Reconciliation

A full event inventory across GA4, Meta, Google Ads, Klaviyo and Shopify, reconciled against order data to quantify exactly where and how much data is lost.

02

Server-Side Tracking

Server-side GTM on a first-party subdomain, resilient to ad blockers and ITP, with deduplication between browser and server events done properly.

03

Conversions API Integration

Meta CAPI, Google Enhanced Conversions and TikTok Events API with hashed identifiers, targeting event match quality of 8 or above.

04

GA4 Event Schema

A documented, consistent eCommerce event and parameter specification across every surface, so reports mean the same thing in six months as they do today.

05

Consent Mode & Privacy

Consent mode v2 wired to your CMP with modelled conversions, plus Shopify's customer privacy API and regional compliance handled correctly.

06

Executive Reporting Layer

One dashboard for blended MER, contribution margin, cohort LTV, new-versus-returning revenue and channel payback. Reconciled to Shopify, refreshed daily.

Scoped and quoted for your Portland store

We do not work off a rate card. Every Portland engagement starts with a fixed statement of work — named deliverables, named dates, one number — written after we have looked at your store, not before. If a smaller first step would serve you better, we will say so.

Get this scoped
How it runs

From kickoff to results

01

Audit & Quantify

We measure the gap between platform-reported and actual orders per channel. Most stores we audit are losing 15-30% of conversion signal before we start.

02

Specification

A written measurement plan: events, parameters, identifiers, consent states and destinations. Signed off before implementation begins.

03

Implement

Server-side container, CAPI, enhanced conversions and consent mode built in a staging environment and validated event by event.

04

Validate

Order-level reconciliation against Shopify for a full week, plus match-quality checks in each platform. We do not sign off on a screenshot of a tag firing.

05

Report & Maintain

Dashboards built, team trained, and monitoring in place to alert on event volume anomalies before someone spots them in a monthly report.

Proof

Analytics & Data results

Anonymised under NDA. Figures pulled from the client’s own analytics.

Consumer Electronics & Accessories

~$9M/yr, 210 SKUs, US + AU · Shopify Plus (migrated from BigCommerce)

Meta ROAS had slid from 3.6x to 1.9x in a year and the team had spent twelve months buying new creative to fix it. The real cause was measurement: the BigCommerce checkout dropped 22% of purchase events and the Conversions API had never been installed, so both ad platforms were optimising on incomplete data. The named constraint: peak season was 14 weeks out, and the replatform had to be live and stable well before Black Friday traffic arrived.

1.9x → 3.4xMeta ROAS, once the 22% event gap closed60 days after server-side tracking went live, spend up 18%. Most of that is signal we recovered, not performance we invented — the honest number is the blended CAC below, which is measured against Shopify orders
-32%customer acquisition cost$44 to $30 blended across Meta and Google
4.1s → 1.7smobile LCPdesktop went 2.9s to 1.2s over the same window
+47%peak-season revenueBlack Friday through Cyber Monday, year over year
Engagement Paid growth audit → migration → paid media retainerTimeframe 6 months
In their words

Clients on this work

GA4/Shopify gap 14% → under 2%

“Paid audit, and worth every dollar. Forty pages on where our measurement was lying to us — duplicate purchase events, CAPI never configured, GA4 and Shopify off by 14% — each one ranked by the revenue it was hiding. No pitch deck at the end. We fixed six of the items ourselves before we ever signed a retainer.”

FounderHome goods brand, ~$3M/yr · Denver, CO
Verified client, 2026
FAQ

Analytics & Data in Portland — your questions

By carrying the order ID through. The acquisition source is recorded against the order at purchase, the refund or return event is joined to the same order later, and the reporting layer nets one against the other by channel and campaign. It has to run on a lag matching your returns window, so the honest version of the report shows a provisional recent period and a settled older one. Once it exists, you can usually see within a quarter which concepts sell the wrong size to the wrong person.

Almost all of it. The default view shows revenue by month, which blends new acquisition with recurring billing and hides the shape of the business. What you want is retention curves by signup cohort, churn broken out by billing cycle number so you can see where people actually leave, involuntary versus voluntary churn separated so failed payments stop being counted as cancellations, skip rate as a positive metric, and LTV by acquisition channel so you can tell which source brings subscribers who stay.

The analytics should at least make the exposure visible. Economic nexus depends on your sales into each state, so a revenue-by-destination-state report with running twelve-month totals against the relevant thresholds turns an invisible risk into something you can see approaching. We build the view and configure Shopify Tax to collect where you are registered. Deciding when to register and how to file is your accountant's call, not ours, and we will say so.

The full server-side build is not always justified at the lower end of the range, and we would rather tell you that than sell it. What every store at any size needs is one reconciled revenue number, correct conversion tracking, and returns visible against channel. Below a certain order volume that can be a much lighter implementation. The point at which the full stack pays for itself is usually when paid media spend is large enough that a fifteen percent signal loss costs more than the work does.

Browser tracking loses 15-30% of conversions to ad blockers, ITP and consent rejections. Server-side sends events from your own infrastructure, which recovers most of that signal. Better signal means better algorithmic bidding, so it usually pays for itself in media efficiency within a quarter.

Four to six weeks for a typical Shopify store, including the validation week. Complex setups with subscriptions, multiple markets or a headless front end run six to ten. The audit and specification phase takes about a third of that and is the part that determines quality.

Yes. We use Shopify's Web Pixels API and customer events for checkout tracking, which is the supported path since checkout.liquid was retired. Order-level data comes through the server side, so checkout tracking no longer depends on scripts Shopify will not let you inject.
Next step

Analytics & Data for your Portland brand.

Thirty minutes with the strategist who would actually run your account. We screen-share your store, read your data live, and tell you the three highest-value things we can see from the outside.

Shopify or Shopify Plus stores doing $150k/mo or moreFounder, CEO or eCommerce lead on the callNo deck and no pitch — we open your store instead

Prefer to write it out? [email protected] gets a real reply the same business day, Mon-Fri, 9am-6pm MT.