# Attribution Reporting Source: https://docs.upstackdata.com/analytics/attribution-reporting Compare attribution models, understand channel credit allocation, configure lookback windows, and read the Upstack attribution dashboard. Attribution reporting answers the question every merchant asks: "Which marketing channels actually drive my revenue?" By analyzing the full customer journey from your first-party data, Upstack Analytics assigns conversion credit across channels using multiple attribution models — giving you an independent, unbiased view of performance. Most merchants discover that their true channel mix looks significantly different from what ad platforms self-report. Attribution reporting helps you reallocate budget toward the channels that genuinely drive incremental revenue. ## Available Attribution Models Upstack Analytics supports four attribution models. Each model uses the same underlying data — identity-resolved customer journeys — but distributes conversion credit differently. | Model | How Credit Is Assigned | Best For | | --------------- | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | | **First-Touch** | 100% credit to the first marketing touchpoint in the journey. | Measuring top-of-funnel acquisition. Which channels bring new customers to your store? | | **Last-Touch** | 100% credit to the final touchpoint before conversion. | Comparing with ad platform reporting (most platforms default to last-touch). | | **Linear** | Equal credit split across all touchpoints in the journey. | Balanced view of the full funnel. Surfaces mid-funnel contributors that single-touch models miss. | | **Time-Decay** | More credit to touchpoints closer to the conversion. Older touchpoints receive progressively less. | Weighted view that respects recency while acknowledging the full journey. | No single model is "correct." Each reveals a different aspect of your marketing performance. The most useful insights come from comparing models side-by-side. ## Comparing Models The attribution dashboard lets you view the same data through multiple models simultaneously. This reveals channels that look different depending on how you measure: **Example comparison for a DTC apparel store:** | Channel | First-Touch Revenue | Last-Touch Revenue | Linear Revenue | Time-Decay Revenue | | -------------- | ------------------- | ------------------ | -------------- | ------------------ | | Meta Ads | \$42,000 | \$31,000 | \$35,500 | \$33,200 | | Google Search | \$18,000 | \$28,000 | \$22,000 | \$24,800 | | Klaviyo Email | \$2,000 | \$19,000 | \$12,500 | \$15,600 | | Organic Social | \$15,000 | \$4,000 | \$9,000 | \$6,400 | | Direct | \$3,000 | \$8,000 | \$6,000 | \$7,000 | In this example, Meta Ads is the strongest acquisition channel (first-touch), Google Search and Klaviyo are strong closers (last-touch), and Organic Social is an underappreciated top-of-funnel contributor that last-touch nearly zeroes out. ## Understanding Channel Credit Channel credit is the aggregated attribution for a marketing channel across all conversions in your selected time period. ### What Counts as a Touchpoint A touchpoint is a session where the visitor arrived through a trackable marketing channel: * **Paid Social** — Session with `utm_source = facebook`, `instagram`, etc. * **Paid Search** — Session with `utm_source = google`, `bing` and `utm_medium = cpc` * **Email** — Session with `utm_source = klaviyo`, `mailchimp`, etc. * **Organic Search** — Session with referrer from a search engine and no paid UTM parameters * **Organic Social** — Session with referrer from a social platform and no paid UTM parameters * **Direct** — Session with no referrer and no UTM parameters ### How Credit Sums Work Within a single attribution model, total attributed revenue equals your actual total revenue. There is no double-counting — this is the fundamental advantage over ad platform self-reporting. If a customer journey has three touchpoints and results in a $90 purchase, the Linear model assigns $30 to each channel. The total attributed is still \$90. Attribution credit only applies to conversions (Purchase events) that occur within the selected lookback window. Changing the lookback window changes the eligible touchpoints and may shift credit between channels. ## Lookback Windows The lookback window defines how far back Upstack searches for qualifying touchpoints before a conversion. | Window | Description | When to Use | | ----------- | -------------------------------------------- | ---------------------------------------------------------------------------------------------- | | **7 days** | Only touchpoints within the past week count. | Short consideration cycle products (impulse buys, low AOV). Fast feedback on recent campaigns. | | **14 days** | Two-week attribution window. | Moderate consideration cycles. Good default for most apparel and accessories stores. | | **28 days** | Four-week attribution window. | Longer consideration cycles (furniture, electronics, high-AOV products). | | **Custom** | Set any number of days (1–90). | When your business has a specific purchase cycle you want to match. | A shorter window gives credit to channels that drive quick conversions. A longer window captures channels that influence early in the journey but convert later. Test different windows to see how your channel mix shifts. ## Reading the Attribution Dashboard The attribution dashboard organizes data into four sections: ### Channel Overview A summary table showing each channel's attributed revenue, conversion count, and ROAS across your selected model and date range. This is your starting point for budget allocation decisions. ### Model Comparison Side-by-side view of all four models for the same time period. Use this to identify channels that vary significantly across models — those are the ones worth investigating further. ### Journey Explorer Drill into individual customer journeys to see the exact sequence of touchpoints. Filter by channel, conversion value, or number of touchpoints. Useful for understanding how your customers actually discover and buy from your store. ### Trend View Attribution credit by channel over time. See how channel performance evolves week-over-week. Identify seasonal patterns, campaign impacts, and long-term shifts in your marketing mix. ## Tips for Actionable Attribution **Start with comparison, not a single model.** Look at where models agree (strong signal) and where they disagree (needs investigation). **Match the lookback window to your product.** A 28-day window for a $15 impulse buy dilutes signal. A 7-day window for a $500 product misses the real journey. **Use first-touch for acquisition budgets.** If you're trying to grow your customer base, first-touch tells you which channels bring net-new visitors. **Use last-touch to benchmark against platforms.** Compare Upstack's last-touch to Meta's self-reported numbers. The gap reveals how much each platform over-claims. **Watch the Linear model for hidden contributors.** Channels that score low on both first-touch and last-touch but appear in Linear are mid-funnel influencers. Cutting them may quietly reduce overall conversion rates. Deeper explanation of how attribution models work and why independent measurement matters. Learn to build custom queries for more granular attribution analysis. # Contribution margin (CM1–CM4) Source: https://docs.upstackdata.com/analytics/configure-contribution-margin Set up contribution margin in Upstack. Enter your product costs and other expenses once, and Upstack shows CM1 through CM4 — your true profit after each layer of costs. Revenue and ROAS tell you what you sold. Contribution margin tells you what you kept. Upstack calculates four tiers of it, each one subtracting more costs: | Tier | What comes out | What it answers | | ------- | -------------------------------------- | ------------------------------------------- | | **CM1** | Product cost (COGS) | Are my products profitable? | | **CM2** | Shipping, fulfillment, payment fees | Am I profitable after delivering the order? | | **CM3** | Marketing and ad spend | Am I profitable after advertising? | | **CM4** | Operating expenses, agency fees, other | Am I profitable as a business? | ## Set it up in three steps In **Shopify Admin → Products**, open a product and fill in **Cost per item** for each variant. That's it — Upstack pulls the costs in automatically. After you enter costs, give Upstack some time to fill in CM1 for your past orders. It happens automatically. Open **Settings → Cost settings** and add what it costs to run the business: shipping, payment fees, order costs, and any fixed or variable costs. Every cost you add gets a category, and the category decides which tier it reduces — the same four tiers as the table above. See [Cost settings](/analytics/cost-settings) for a walkthrough of every cost type. Ad spend from connected platforms (Meta, Google, TikTok) flows in automatically and counts toward CM3. For channels Upstack doesn't connect to — influencers, podcasts, and similar — add the spend under **Settings → Cost settings** as a fixed or variable cost. ## Seeing it in the dashboard The **P\&L** pages in Upstack put your costs into a live profit view: * **P\&L dashboard** — your profit at a glance: revenue, CM1–CM4, and a waterfall chart showing where money goes from gross revenue down to operating profit. * **Income statement** — the full line-by-line breakdown: gross revenue, each deduction group (fulfillment and fees, marketing and ads, operating costs), and the margin left at every tier. Both respect your date range, filters, and comparison period, and they update as soon as your costs change. ## Related Set up product, order, shipping, gateway, fixed, and variable costs in detail. How Upstack attributes conversions and calculates reporting metrics. Compare attribution models and channel credit allocation. Every CM1–CM4 measure you can report on, per order and per customer type. # Set up cost settings Source: https://docs.upstackdata.com/analytics/cost-settings Configure product defaults, product costs, payment processing fees, shipping, order fees, variable costs, and recurring expenses in Upstack so your contribution margin and P&L reflect real profitability. Cost settings are where you tell Upstack what it actually costs to fulfill an order. Once your costs are in, Upstack subtracts them from revenue to give you accurate contribution margin (CM1–CM4) and a real P\&L — not just revenue and ROAS. Cost settings are available to **admin and owner** roles. ## Where to find it Open **Settings → Cost settings**. Every cost category is a collapsible section on that one page — open a section to configure it, and only one stays open at a time. Two things to know before you start: * **Changes apply to past orders too.** When you add or edit a cost, Upstack goes back and recalculates the orders it affects, so your reporting stays consistent. * **You can date every cost.** Most cost lines accept an effective start and end date, so a rate change from last month doesn't rewrite the months before it. ## Where to start **Product defaults** is the one section Upstack flags as required — until it's filled in, its header shows a **Setup** badge, because without it an order can be missing a product cost entirely. A good first pass: 1. **Product defaults** — a fallback COGS % so every product has a cost 2. **Payment processing fees** — what your gateways charge 3. **Shipping** — what it costs to ship an order 4. **Order fees** — any other per-order or per-item fees Add **Product costs**, **Variable costs**, and **Recurring expenses** as you need them. ## Product defaults Two settings that apply when a product is missing its own cost data: * **Default COGS %** — a percentage of the item's sale price (0–100), used as the cost of goods for any product that has no specific cost. * **Handling fee** — a flat amount charged on every unit sold, so a line item with quantity 3 is charged three times. It's a separate cost from COGS, and it has its own fallback: it applies only to products that don't have their own handling fee. Set the Default COGS % first so no order is ever missing a product cost. ## Product costs Per-variant cost overrides. If you maintain **Cost per item** in Shopify, Upstack syncs it automatically — those synced costs are read-only here. You can also enter your own cost for any variant, with effective date ranges; your manual entry takes precedence over the Shopify-synced value. Both **Product Cost** and **Handling Fee** here are per-unit amounts, multiplied by the quantity sold on each order. A variant's handling fee replaces the default Handling Fee — set it to `0` to charge no handling fee for that product. Give each cost entry for a variant a **different start date**. If two entries share one, Upstack warns you in the editor and only one of them is used for any given order. ## Payment processing fees Payment processing fees per gateway, entered as a flat amount plus a percentage: * **Flat Fee** — a fixed amount per transaction (e.g. \$0.30) * **Percent Fee (%)** — a percentage of the order (e.g. 2.9%) Gateway names are discovered from your order history, so you only configure the ones you actually use. ## Shipping Choose how Upstack accounts for shipping cost, using one of three modes: | Mode | When to use it | | -------------------------------- | ------------------------------------------------------- | | **Use Shopify Shipping Charges** | Use the shipping amount already on your Shopify orders | | **Fixed Rate Per Order** | Apply one flat shipping cost to every order | | **Shipping Profiles** | Set rates by country/region — flat, or tiered by weight | With **Shipping Profiles**, each profile matches one or more countries. A profile can be a single **Flat Rate** or **Weight Tiered**, and you can set a default profile as a fallback. If two shipping profiles cover the same country, Upstack shows an **Overlapping Shipping Profiles** warning and uses the first match. Keep country coverage distinct so the right rate always applies. ## Order fees Fees that apply per order, per line item, or per refund — beyond product cost. For each cost line you choose how it's calculated: | Type | What it does | | ------------------------------------------------ | ----------------------------------- | | Per Order / Per Line Item | A flat amount per order or per item | | Per Refund Order / Per Refund Line Item | A flat amount applied on refunds | | By Order Weight | Tiered by the order's weight | | By Order Quantity / By Line Item Quantity | Tiered by how many units | | % of COGS / Shipping / Total / Gross / Net Sales | A percentage of the chosen base | Each cost line gets a **category** (COGS, Fulfillment, Transaction, Marketing, Agency Fees, Opex, or Other), which decides its contribution-margin tier, and a **channel** (Online, POS, or Both). You can also filter a cost so it applies to some orders only: * **By order** — shipping method, payment gateway, tags, or source * **By product** — vendor, type, tags, or category * **By location** — country * **By specific products** — pick the products yourself ## Variable costs Costs that scale with ad spend. Today this is **% of Ad Spend** — a percentage applied to your ad spend, under a **Marketing** or **Opex** category. Useful for agency fees or tools billed as a percentage of spend. By default the percentage applies to all your ad spend. You can narrow it to specific platforms — **Facebook Ads**, **Google Ads**, or **TikTok Ads** — or exclude some of them. ## Recurring expenses Recurring overheads like rent, salaries, and software subscriptions. Set an amount and a **frequency** — Daily, Weekly, Monthly, Quarterly, or Yearly — and a **category** (Marketing, Opex, Agency Fees, or Other). Upstack averages the cost across the period so it shows up correctly in your P\&L. ## How costs roll into contribution margin Each cost's **category** decides which margin tier it reduces: | Tier | Reduced by | | ------- | -------------------------------------- | | **CM1** | Product cost (COGS) | | **CM2** | Shipping, fulfillment, payment fees | | **CM3** | Marketing and ad spend | | **CM4** | Operating expenses, agency fees, other | Recurring expenses and variable costs land in the tier that matches the **category** you give them — a Marketing-category cost reduces CM3, while an Operating expenses, Agency fees, or Other cost reduces CM4. See [Contribution margin](/analytics/configure-contribution-margin) for how the tiers are used across the P\&L dashboard. ## Frequently asked questions Yes. When you add or edit a product cost, product default, order fee, payment processing fee, or shipping rate, Upstack recalculates the past orders that fall inside that cost's date range. Set start and end dates to control exactly which orders a cost applies to. **Variable costs and recurring expenses work differently.** They aren't written onto individual orders — Upstack applies them when it builds your reports, so a change shows up straight away with no recalculation needed. Mostly. Order fees, payment processing fees, shipping, recurring expenses, variable costs, and the Product defaults handling fee each carry their own currency, and Upstack converts them into the order's currency. Per-variant **Product costs** are the exception — those are always in your store's currency. ## Related How CM1–CM4 and the P\&L dashboard use your costs. Read and update cost configuration with the `upstack costs` command. How Upstack attributes conversions and calculates reporting metrics. Manage cost configuration programmatically. # Custom Measures Source: https://docs.upstackdata.com/analytics/custom-measures Build your own metric from a formula over the measures Upstack already tracks, then chart it on any custom dashboard. Build your own metric from a formula over the measures Upstack already tracks — revenue per unit sold, ad spend as a share of revenue, net revenue after ad spend. For example, revenue per unit sold: ```text theme={null} orders.net_revenue / orders.units ``` Each operand (`orders.net_revenue`, `orders.units`) is a base measure you select from a picker, so you never have to remember exact names. Set the format to **Currency** and the result displays as `$23.50`. ## Creating a custom measure Custom measures are scoped to a single pixel and managed from a **custom dashboard**. Creating, editing, and deleting custom measures is available to **admin and owner** roles. Viewers can still chart existing custom measures but won't see the management entry points. On a custom dashboard, click **Custom Measures** in the dashboard toolbar. You can also open it from the **Manage custom measures** link next to the **Metric** field when adding or editing a widget. Click **+ New custom measure** to open the builder. Enter a **Name** (e.g., `Revenue per Unit`) and an optional **Short title** (e.g., `Rev/Unit`) used where space is tight, such as chart legends and compact cards. Add an optional **Description** — it appears in the measure's tooltip. Set the **Format** — Number, Currency, Percentage, or Multiplier — and the value displays accordingly across charts and summary cards. Choose how the summary card totals the measure across your date range: * **Sum** — adds each day's value. Use for amounts, like revenue net of ad spend. * **Average** — recalculates the formula over the whole period. Use for ratios and percentages — averaging a ratio per day gives the wrong number. Upstack picks a sensible default from your formula; change it if needed. Type your formula, using **Insert measure** to add base measures from a searchable, grouped picker. Validation runs as you type — a valid formula shows **Formula is valid.**, and errors explain what to fix. Click **Save**. The measure is enabled by default and immediately available in the measure picker. Use the eye icon in the list to disable a measure without deleting it. ## Writing formulas Formulas support standard arithmetic over base measures and numeric constants: | Element | Allowed | | --------- | ------------------------------------------------------------------------------------ | | Operators | `+` `-` `*` `/` | | Grouping | `(` `)` | | Numbers | Literal constants (e.g., `100`, `0.3`) | | Operands | Base measures inserted from the picker (e.g., `orders.net_revenue`, `channel.spend`) | Some common patterns: | Goal | Formula | Format | | ---------------------------- | --------------------------------------------- | ---------- | | Revenue per unit sold | `orders.net_revenue / orders.units` | Currency | | Ad spend as % of net revenue | `channel.spend / orders.net_revenue * 100` | Percentage | | Net revenue after ad spend | `orders.net_revenue - channel.spend` | Currency | | Gross revenue minus refunds | `orders.gross_revenue - orders.refund_amount` | Currency | ## Using it on a dashboard Once saved and enabled, a custom measure appears in the **Custom** group of the measure picker when you add or edit a widget. It works with Metric, Sparkline, Bar, and Area charts. From there it behaves like a built-in measure: * **Filters** — an orders filter only affects orders measures, an ads filter only affects ad measures. * **Date range, comparison period, and granularity** — same as any other measure on the dashboard. * **Cost settings** — formulas that use cost measures follow your [cost settings](/analytics/cost-settings), just like the built-in cost measures. ## Related The base measures you build custom formulas from. Build reports with measures, dimensions, and filters. Configure costs so margin-based custom measures are accurate. Compare attribution models and channel credit allocation. # Querying Data in Upstack Analytics Source: https://docs.upstackdata.com/analytics/query-guide Query events, sessions, and attribution data in Upstack Analytics — build reports with measures and dimensions, filter by channel and campaign, and export results for further analysis. Upstack Analytics gives you direct access to your identity-resolved, enriched event data. You can explore traffic patterns, measure conversion funnels, compare channel performance, and build custom reports — all from a single dashboard backed by your first-party data. Unlike ad platform dashboards that only show their own ecosystem, Upstack Analytics queries your unified event stream. You see every channel, every touchpoint, and every conversion in one place with consistent measurement. ## What You Can Query Upstack Analytics organizes data into three primary views: ### Events Query raw events with filters and aggregations. Useful for: * Counting events by type over time (e.g., "How many AddToCart events this week?") * Filtering by event properties (e.g., "All Purchase events where `value` > \$100") * Grouping by dimensions (e.g., "PageViews by device type and country") ### Sessions Query session-level metrics that aggregate events into browsing sessions. Useful for: * Understanding engagement patterns (session duration, pages per session, bounce rate) * Comparing session quality across traffic sources * Identifying high-intent sessions that didn't convert ### Attribution Query attribution data that assigns conversion credit across marketing touchpoints. Useful for: * Comparing channel performance across attribution models * Calculating true ROAS per channel * Identifying which campaigns drive the highest-value customers ## Using the Query Builder The Upstack Analytics dashboard provides a visual query builder that lets you construct queries without writing SQL. ### 1. Select Your Measures Measures are the numeric values you want to calculate. Choose one or more: * **Total Events** — Count of events matching your filters * **Unique Visitors** — Distinct identity count * **Revenue** — Sum of Purchase event values * **Conversion Rate** — Purchases divided by sessions * **Average Order Value** — Revenue divided by purchase count See [Measures & Dimensions](/data-dictionary/measures-and-dimensions) for the full list. ### 2. Choose Your Dimensions Dimensions break down your measures into categories: * **Date** — Time-series view (daily, weekly, monthly) * **UTM Source** — Group by traffic source * **Device Type** — Compare mobile vs. desktop * **Country** — Geographic breakdown * **Event Name** — Group by event type ### 3. Set Date Range Select a predefined range or set custom start and end dates: | Preset | Range | | ------------ | ----------------------- | | Today | Current day | | Last 7 days | Rolling 7-day window | | Last 30 days | Rolling 30-day window | | This month | Calendar month to date | | Last month | Previous calendar month | | Custom | Any start and end date | All dates are in UTC. Data is available within minutes of the event occurring. ### 4. Apply Filters Narrow your results with filters on any dimension or event property: * `utm_source = facebook` — Only Facebook traffic * `device_type = mobile` — Only mobile visitors * `event_name = Purchase` — Only purchase events (use PascalCase in queries) * `country = US` — Only US visitors * `value > 50` — Only events with value above \$50 Event names in analytics queries use **PascalCase** (e.g., `Purchase`, `AddToCart`). This is the destination format used in storage. When tracking via the SDK, use **snake\_case** (e.g., `purchase`, `add_to_cart`). Filters can be combined with AND logic. Multiple values for the same field use OR logic (e.g., `utm_source = facebook OR google`). ### 5. Set Grouping Choose how to group your results. You can group by one or more dimensions: * **Single dimension:** Revenue by `utm_source` → bar chart comparing channels * **Two dimensions:** Revenue by `utm_source` and `date` → time series per channel * **No grouping:** Single aggregate number across all matching data ## Reading Results Query results are displayed as both a chart and a data table. You can: * **Toggle chart types** — Line, bar, or table view * **Export data** — Download results as CSV for further analysis * **Save as report** — Save the query configuration for quick access later * **Share** — Generate a shareable link to the report Saved reports update automatically. When you open a saved report, it re-executes the query against the latest data with the same filters, dimensions, and date range logic. ## Common Query Patterns **Conversion funnel:** Select measures for PageViews, AddToCart, InitiateCheckout, and Purchase counts. Group by date to see the funnel over time. **Channel comparison:** Select Revenue and Conversion Rate. Group by `utm_source`. Filter to last 30 days. Compare which channels drive the most efficient revenue. **Device breakdown:** Select Sessions and Bounce Rate. Group by `device_type`. Identify whether mobile experience needs optimization. **Top pages:** Select PageViews and Unique Visitors. Group by `page_path`. Sort by PageViews descending to find your highest-traffic pages. Full reference for every measure and dimension available in the query builder. Define your own metrics and KPIs from a formula over existing measures. Dive deeper into session-level and page-level metrics. Compare attribution models and understand channel credit allocation. Review the standard events that feed your analytics queries. # Session and Page Analytics Source: https://docs.upstackdata.com/analytics/session-and-page-analytics Measure session and page performance in Upstack Analytics — duration, bounce rate, engagement, scroll depth, and pageviews — to diagnose UX issues and rank top-performing content. Session and page analytics help you understand how visitors interact with your store beyond individual events. Sessions group a visitor's events into a single browsing journey. Page metrics reveal which content engages and which drops visitors off. Session analytics are especially useful for identifying where visitors disengage. A high bounce rate on product pages paired with strong AddToCart rates on collection pages might indicate your product pages need stronger calls-to-action. ## Session Metrics A **session** begins when a visitor loads their first page and ends after 30 minutes of inactivity. All events within that window are grouped under a single `session_id`. ### Available Session Metrics | Metric | Description | How It's Calculated | | ---------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------- | | **Session Duration** | Total time spent in the session. | Time between the first and last event in the session. | | **Pages per Session** | Number of distinct pages viewed. | Count of PageView events with unique `page_path` values. | | **Bounce Rate** | Percentage of single-page sessions. | Sessions with exactly one PageView and no other interaction events, divided by total sessions. | | **Engagement Score** | Composite score reflecting session quality. | Weighted combination of pages viewed, time on site, and interaction events (AddToCart, Search, etc.). Scale: 0–100. | | **Session Conversion** | Whether the session included a Purchase. | Binary: `converted` or `not_converted`. | | **Events per Session** | Total number of events fired during the session. | Count of all events in the session. | ### Filtering by Session Properties You can filter analytics data by session-level attributes to isolate specific visitor segments: * **Traffic source** — `utm_source = facebook` shows only sessions from Facebook traffic * **Device type** — `device_type = mobile` isolates mobile browsing behavior * **Geography** — `country = US` limits to US sessions * **New vs. returning** — `is_returning = true` shows only repeat visitors * **Conversion status** — `session_conversion = converted` filters to sessions that resulted in a purchase Combine session filters with any measure to answer targeted questions: * "What is the average session duration for mobile visitors from Facebook who converted?" * "What's the bounce rate for desktop visitors landing on collection pages?" ## Page Metrics Page analytics aggregate data at the `page_path` level, showing how individual pages perform across all sessions. ### Available Page Metrics | Metric | Description | How It's Calculated | | ------------------- | ------------------------------------------------- | -------------------------------------------------------------------------------------------------- | | **Page Views** | Total times the page was viewed. | Count of PageView events for the `page_path`. | | **Unique Visitors** | Distinct visitors who viewed the page. | Count of unique `identity_id` or `session_id` values. | | **Time on Page** | Average time visitors spend on the page. | Difference between the PageView timestamp and the next event's timestamp within the session. | | **Scroll Depth** | How far down the page visitors scroll on average. | Percentage of page height scrolled, captured by the Upstack Pixel. | | **Exit Rate** | Percentage of sessions that ended on this page. | Sessions where this page's PageView was the last event, divided by total PageViews for this page. | | **Entry Rate** | Percentage of sessions that started on this page. | Sessions where this page's PageView was the first event, divided by total PageViews for this page. | Time on Page is calculated from the interval between consecutive events. If the visitor's session ends on a page (no subsequent event), time on page cannot be measured for that visit. These unmeasured visits are excluded from the average. ### Filtering by Page Path Page analytics support filtering by URL path patterns: * **Exact match** — `page_path = /products/classic-tee` * **Starts with** — `page_path starts with /collections/` shows all collection pages * **Contains** — `page_path contains /blog/` shows all blog content ### Common Page Analysis Patterns **Top pages by traffic:** Select Page Views and Unique Visitors. Group by `page_path`. Sort by Page Views descending. Identifies your highest-traffic content. **Landing page quality:** Select Bounce Rate and Entry Rate. Group by `page_path`. Filter to pages with high Entry Rate. A landing page with high traffic but high bounce rate needs optimization. **Product page engagement:** Filter `page_path starts with /products/`. Select Time on Page, Scroll Depth, and the AddToCart rate. Identifies which product pages drive the most engagement. **Content performance:** Filter `page_path starts with /blogs/`. Select Page Views, Time on Page, and Scroll Depth. Longer time on page and deeper scroll depth indicate content that resonates. ## Connecting Sessions to Outcomes Session and page metrics become most powerful when connected to conversion data: | Question | How to Answer | | ----------------------------------------------- | --------------------------------------------------------------------------- | | Which landing pages drive the most revenue? | Group Revenue by `page_path` (entry pages only) | | Do longer sessions convert better? | Compare Session Duration for converted vs. non-converted sessions | | What's the engagement threshold for conversion? | Compare Engagement Score distributions for converting vs. bouncing sessions | | Which pages are in the conversion path? | Look at page sequences for sessions with a Purchase event | Bounce rate can be misleading on its own. A blog post with high bounce rate might still be valuable if it drives email signups (Subscribe events). Always consider bounce rate alongside other engagement signals. Full reference for all available measures and dimensions. Understand how conversions are attributed across marketing channels. # Get order settings Source: https://docs.upstackdata.com/api-reference/account/get-order-settings /api-reference/openapi.yaml get /accounts/api/account/settings/order Return the account's order settings — count flags for pending / voided orders, refund-date attribution, and the list of exclusion filters that drop matching orders from every analytics query. Defaults are applied when the account has no stored `orderSettings` (`countPendingOrders=false`, `countVoidedOrders=false`, `refundDateAttribution=refund_date`, `exclusionFilters=[]`) so the response shape is always complete. **Required scope:** `account:read`. # Get the account Source: https://docs.upstackdata.com/api-reference/account/get-the-account /api-reference/openapi.yaml get /accounts/api/account Return the account that owns this API key — display name, active owners and admins, and the current subscription summary (when present). The authorizer resolves the account from the API key's parent pixel, so no `accountId` is in the path or body. **Required scope:** `account:read`. # Rename the account Source: https://docs.upstackdata.com/api-reference/account/rename-the-account /api-reference/openapi.yaml patch /accounts/api/account Rename the account that owns this API key. Single-field strict allowlist — `accountName` is the only accepted field; any other key in the body is rejected with 400. Emits an `accountUpdated` EventBridge event with `actor: cli:{apiKeyPk}` so downstream consumers can distinguish UI vs API-key mutations. **Required scope:** `account:write`. # Replace order settings Source: https://docs.upstackdata.com/api-reference/account/replace-order-settings /api-reference/openapi.yaml put /accounts/api/account/settings/order Replace the account's order settings in full. **PUT-the-whole-config semantics** — any existing exclusion filter not present in the body is deleted. The server assigns `id`, `createdAt`, and `updatedAt` on new filters (and on nested groups + conditions); entries that already carry an `id` preserve their `createdAt` and get a bumped `updatedAt`. Strict allowlist at every nesting level — extra keys in the body, in a filter, in a group, or in a condition are rejected with 400. Operators must be valid for the chosen field type per `ORDER_EXCLUSION_FIELD_CATALOG` (e.g. `greater_than` on `sourceName` is rejected). Emits an `accountUpdated` EventBridge event with `actor: cli:{apiKeyPk}` and `change: { kind: "orderSettings" }`. **Required scope:** `account:write`. # List channel entities with optional metrics Source: https://docs.upstackdata.com/api-reference/analytics/list-channel-entities-with-optional-metrics /api-reference/openapi.yaml post /db-mgmt/api/query-channel-details List ad accounts, campaigns, ad sets, or ads from the ads-platform integrations connected to your pixel, with optional metric aggregation over a date range. **Required scope:** `analytics:read`. # Run a cohort analysis Source: https://docs.upstackdata.com/api-reference/analytics/run-a-cohort-analysis /api-reference/openapi.yaml post /db-mgmt/api/query-cohort-analysis Cohort an audience by acquisition period and analyze retention or LTV over time. Limited to cohort-specific measures and to weekly / monthly / yearly granularity. **Required scope:** `analytics:read`. # Run an analytics query Source: https://docs.upstackdata.com/api-reference/analytics/run-an-analytics-query /api-reference/openapi.yaml post /db-mgmt/api/query Execute a measures-and-dimensions query against your event stream. Mirrors the in-app query builder. **Required scope:** `analytics:read`. See [Querying Data](/analytics/query-guide) for a guided walkthrough. # Run an attribution query Source: https://docs.upstackdata.com/api-reference/analytics/run-an-attribution-query /api-reference/openapi.yaml post /db-mgmt/api/query-attribution Attribute conversions across marketing touchpoints. Supports first-click, last-click, and any-click models with a fixed-set lookback window. **Required scope:** `analytics:read`. # List available measures Source: https://docs.upstackdata.com/api-reference/catalog/list-available-measures /api-reference/openapi.yaml get /db-mgmt/api/measures Return the catalog of measures available to your pixel — the same list the in-app query builder shows. Use this to discover canonical measure ids before constructing a query or building a dashboard. **Required scope:** `analytics:read`. # List filter fields Source: https://docs.upstackdata.com/api-reference/catalog/list-filter-fields /api-reference/openapi.yaml get /db-mgmt/api/filters Return the catalog of filterable fields available across your query endpoints — field id, label, value type, supported operators, and the endpoint contexts each field applies to. Use this to discover canonical filter ids before constructing a `filters` body on any query endpoint. **Required scope:** `analytics:read`. # Add a cost line Source: https://docs.upstackdata.com/api-reference/costs/add-a-cost-line /api-reference/openapi.yaml post /accounts/api/costs/lines Add a new cost line for one of the five line-typed cost surfaces — `order`, `gateway`, `shipping` (profile rule), `variable`, or `fixed`. The server assigns a ULID for the new line. The `line` body is discriminated by `costType` — see the per-type schemas (`OrderCostLine`, `GatewayCostLine`, `ShippingProfileCostLine`, `VariableCostLine`, `FixedCostLine`) for the shape required by each. Triggers a per-order COGS recalculation downstream — except for `variable` and `fixed`, which apply at aggregate report time and do not require per-order recalc. **Required scope:** `costs:write`. # Delete a cost line Source: https://docs.upstackdata.com/api-reference/costs/delete-a-cost-line /api-reference/openapi.yaml delete /accounts/api/costs/lines/{lineId} Remove a cost line from the named cost config by its ULID. Triggers a per-order COGS recalculation downstream — the deleted line is passed to the recalc trigger so affected orders can be identified. **Required scope:** `costs:write`. # Get cost configuration Source: https://docs.upstackdata.com/api-reference/costs/get-cost-configuration /api-reference/openapi.yaml get /accounts/api/costs Return the account's cost configuration. Use `?type=` to filter to a single cost type; omit it to get the full bag. **Required scope:** `costs:read`. # Update a cost line Source: https://docs.upstackdata.com/api-reference/costs/update-a-cost-line /api-reference/openapi.yaml put /accounts/api/costs/lines/{lineId} Partial-update an existing cost line by its ULID. Only the fields supplied in `updates` are written; omitted fields stay as-is. Triggers a per-order COGS recalculation downstream (except for `variable` and `fixed`). **Required scope:** `costs:write`. # Update shipping cost settings Source: https://docs.upstackdata.com/api-reference/costs/update-shipping-cost-settings /api-reference/openapi.yaml put /accounts/api/costs/shipping-settings Switch the shipping cost attribution method. Pass `fixedRateAmount` when switching to `fixed_rate`; it is not validated as required, and without it no fixed charge applies. Triggers a per-order COGS recalculation downstream. **Required scope:** `costs:write`. # Update the global product override Source: https://docs.upstackdata.com/api-reference/costs/update-the-global-product-override /api-reference/openapi.yaml put /accounts/api/costs/global-product-override Update the default COGS / handling fee applied to product variants that have no per-variant COG line. At least one of `defaultCogs`, `globalHandlingFee`, or `currency` must be supplied. Triggers a per-order COGS recalculation downstream (same SQS message the web UI emits for this change). **Required scope:** `costs:write`. # Build a dashboard from a measure list (preset) Source: https://docs.upstackdata.com/api-reference/dashboards/build-a-dashboard-from-a-measure-list-preset /api-reference/openapi.yaml post /accounts/api/dashboard/views/from-preset High-level builder — pass a list of measures, get back a finished dashboard with auto-laid-out widgets. The backend packs sparkline tiles 4-per-row in the `kpi-grid` layout and fills in sensible defaults for attribution, granularity, date range, and filters. **Required scope:** `dashboards:write`. Designed for AI-driven workflows ("make me a dashboard with NC ROAS, MER, and Facebook CPM"). The [`upstack dashboard view build`](/cli/dashboard-view) CLI command wraps this endpoint. # Create a dashboard view Source: https://docs.upstackdata.com/api-reference/dashboards/create-a-dashboard-view /api-reference/openapi.yaml post /accounts/api/dashboard/views Create a dashboard view from a full `DashboardViewConfiguration` body. For the high-level builder that auto-lays-out widgets from a measure list, see the `POST /api/dashboard/views/from-preset` endpoint. **Required scope:** `dashboards:write`. `createdBy` and `updatedBy` on the resulting record are empty strings — api-key writes intentionally don't store a fake user id. Audit info (`apiKeyPk`) is recorded in CloudWatch logs. # Delete a dashboard view Source: https://docs.upstackdata.com/api-reference/dashboards/delete-a-dashboard-view /api-reference/openapi.yaml delete /accounts/api/dashboard/views/{dashboardViewId} **Required scope:** `dashboards:write`. # Duplicate a dashboard view Source: https://docs.upstackdata.com/api-reference/dashboards/duplicate-a-dashboard-view /api-reference/openapi.yaml post /accounts/api/dashboard/views/{dashboardViewId}/copy Create a copy of an existing view. The copy inherits the source's name and order; rename via `PATCH` afterwards if needed. Body must be empty (an empty object `{}` is accepted; unknown keys are rejected). **Required scope:** `dashboards:write`. # Get a dashboard view Source: https://docs.upstackdata.com/api-reference/dashboards/get-a-dashboard-view /api-reference/openapi.yaml get /accounts/api/dashboard/views/{dashboardViewId} Fetch a single view with its full configuration. **Required scope:** `dashboards:read`. Returns 404 with `{ "message": "Dashboard view not found" }` if the view doesn't exist or belongs to a different pixel — the two paths return an identical body so cross-pixel existence isn't leaked. # List dashboard views Source: https://docs.upstackdata.com/api-reference/dashboards/list-dashboard-views /api-reference/openapi.yaml get /accounts/api/dashboard/views Return a summary list of dashboard views for the authenticated pixel. **Required scope:** `dashboards:read`. # Update a dashboard view Source: https://docs.upstackdata.com/api-reference/dashboards/update-a-dashboard-view /api-reference/openapi.yaml patch /accounts/api/dashboard/views/{dashboardViewId} Partial update — only fields supplied in the body are changed. Pass at least one of `name`, `configuration`, or `order`. Other fields are rejected by the schema. **Required scope:** `dashboards:write`. # Errors Source: https://docs.upstackdata.com/api-reference/errors Error response format, status code reference, and how to handle failures from the Upstack Data API. The Upstack Data API returns errors as JSON responses with a `message` field and the appropriate HTTP status code. ```json theme={null} { "message": "API key does not have the dashboards:write scope" } ``` ## Validation errors `400` responses on validated endpoints also include an `errors` array with per-field detail: ```json theme={null} { "message": "Bad Request", "errors": [ { "message": "name is required", "key": "name", "path": ["name"] } ] } ``` The server-side events API (`POST /tr/api/events`) returns a richer envelope: the same top-level `message`, plus a `requestId` and a structured `error` object with a machine-readable `code` and per-event `details`. See the **Send events via Upstack Conversion API** endpoint (`POST /tr/api/events`) in the API reference for the full shape. ## Status codes | Status | Meaning | | ------ | -------------------------------------------------------------------------------------------- | | `200` | Success. | | `400` | Validation error — see `errors` (or `error.details` on the events API). | | `401` | Missing/invalid `x-api-key` or `x-pixel-id`, revoked key, or expired key. | | `403` | Key is valid but doesn't carry the required scope. | | `404` | Resource not found (or belongs to another pixel — we return 404 rather than leak existence). | | `413` | Request body too large (server-side events API — 128 KB limit). | | `429` | Too many requests — see [Rate limiting](/api-reference/rate-limiting). | | `500` | Server error. Retry; if persistent, file a support ticket with the request id. | ## Handling errors * Treat `4xx` responses as client errors: fix the request, don't retry it as-is. `429` is the exception — retry with backoff as described in [Rate limiting](/api-reference/rate-limiting). * Treat `5xx` responses as transient: retry with exponential backoff. If the error persists, file a support ticket with the request id. * Log the full response body — the `message` (and `requestId` where present) is what support needs to trace the request. # Send events via Upstack Conversion API Source: https://docs.upstackdata.com/api-reference/events/send-events-via-upstack-conversion-api /api-reference/openapi.yaml post /tr/api/events **Upstack Conversion API (CAPI)** — send a batch of tracking events from your server. Events enter the **same collect queue and consumer** as browser pixel events (identity resolution, enrichment, analytics, and destination forwarding). Session handling and edge enrichment still differ from the Cloudflare pixel path. **Match quality.** Send the end user's `ipAddress` yourself — the API never invents it from the gateway connection. Prefer sending `userAgent` and `locale` in the body; if omitted or blank, the API fills them from the `User-Agent` and `Accept-Language` request headers when present. Extra JSON keys are accepted and passed through where they map onto the TrackingEvent envelope (e.g. nested under `userProperties` or `click`). You always send an **array** of events (send one event as an array of one). Each event needs a `name`. An `eventId` is optional but **strongly recommended** — it makes the event idempotent (safe retries and de-duplication); everything else is optional. **Deduplication.** `eventId` is your idempotency key. If the same `eventId` is received again for a pixel within the dedup window, the duplicate is skipped during processing — so retries and webhook loops are safe. Use the same `eventId` you send from your browser Pixel for the same event so they de-duplicate across sources (e.g. Facebook). **Limits.** Up to **100 events** per request; request body up to **128 KB**. Curated string fields (emails, URLs, click ids, userAgent, …) have **no per-field character max** — the request-body size cap is the backstop. `eventProperties` follows the TrackingEvent `data` contract (`TrackingEventData`); known fields are typed when present, and additional keys are allowed. `page.qsp` remains an open object. Trait/address arrays are capped at **100** items. **Required scope:** `events:write`. **Field naming (CAPI body → TrackingEvent envelope).** `userProperties` → `context.identity.traits`; `eventProperties` → `data`; `eventId` → `id`; `identityId` → `context.identity.identityId`; top-level `ipAddress` / `userAgent` / `sessionId` / `locale` / `timezone` / `page` / `campaign` / `click` / `viewport` → `context.properties.*`. **Dual-fire with the browser Pixel.** Use the same `eventId` (and preferably the same `identityId` / `_adtik`) for the browser and server copies of one conversion so downstream dedup and destination match quality treat them as one event. # Introduction Source: https://docs.upstackdata.com/api-reference/introduction Programmatic access to your Upstack Data pixel — authentication, base URLs, scopes, and a curl quickstart. The Upstack Data API lets you query your event data, list the measures catalog, and manage dashboard views from anything that speaks HTTP. The same endpoints power the in-app dashboard and the [`upstack` CLI](/cli/install). If you're scripting against Upstack from a terminal, prefer the [`upstack` CLI](/cli/install) — it wraps these endpoints, handles auth, and adds ergonomics like measure-title resolution. ## Base URL All endpoints in this reference are relative to `https://api.upstackdata.com`, grouped by service path: * `/db-mgmt/api/*` — analytics queries and the measures catalog. * `/accounts/api/*` — dashboard view management. * `/tr/api/*` — server-side event ingestion. These surfaces share the same authentication. ## Authentication Every request carries two headers: | Header | Value | | ------------ | ------------------------------------------------------------------ | | `x-api-key` | Your Upstack API key. Starts with `upstack_`. | | `x-pixel-id` | The pixel id this request targets. One key is scoped to one pixel. | Mint an API key in the dashboard under **Settings → API Keys**. The raw key is shown once at creation — store it securely; we keep only a hash. ```bash theme={null} curl https://api.upstackdata.com/db-mgmt/api/measures \ -H "x-api-key: upstack_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ -H "x-pixel-id: 5f1e6a4f-..." ``` ## Scopes API keys carry one or more scopes. The required scope per endpoint is listed on each endpoint's page. | Scope | Grants | | ------------------ | ------------------------------------------------------------------------------------------------------------------ | | `analytics:read` | `POST /api/query`, `POST /api/query-attribution`, `POST /api/query-cohort-analysis` | | `dashboards:read` | `GET /api/dashboard/views` (list and individual) | | `dashboards:write` | `POST` / `PATCH` / `DELETE` on `/api/dashboard/views`, plus `/copy` and `/from-preset`. Implies `dashboards:read`. | | `events:write` | `POST /tr/api/events` — send server-side tracking events. | The catalog endpoint (`GET /api/measures`) is ungated — any active key can read the measures list. This unblocks discovery use cases (e.g. an LLM looking up canonical measure ids before composing a query). Older keys minted before May 2026 may carry legacy scopes `db_query` or `attribution_query`. These are auto-expanded to `analytics:read` at request time, so existing keys keep working without rotation. Rotate at your convenience to switch to the modern names. ## Errors and rate limits All errors are JSON responses with a `message` field and the appropriate status code. See [Errors](/api-reference/errors) for the full response shape and status code reference, and [Rate limiting](/api-reference/rate-limiting) for how request limits are enforced and how to retry safely. ## Quickstart Discover what measures are available, then build a dashboard from three of them. ```bash theme={null} curl https://api.upstackdata.com/db-mgmt/api/measures \ -H "x-api-key: $UPSTACK_API_KEY" \ -H "x-pixel-id: $UPSTACK_PIXEL_ID" ``` Find the keys you want (e.g. `core.new_customer_roas`, `core.new_customer_mer`, `meta.cpm`). ```bash theme={null} curl -X POST https://api.upstackdata.com/accounts/api/dashboard/views/from-preset \ -H "x-api-key: $UPSTACK_API_KEY" \ -H "x-pixel-id: $UPSTACK_PIXEL_ID" \ -H "Content-Type: application/json" \ -d '{ "name": "NC + Meta Pulse", "widgets": [ { "measure": "core.new_customer_roas", "title": "NC ROAS" }, { "measure": "core.new_customer_mer", "title": "NC MER" }, { "measure": "meta.cpm", "title": "Meta CPM" } ] }' ``` The response returns the full `DashboardView` with auto-laid-out sparkline widgets. Sign in to [app.upstackdata.com](https://app.upstackdata.com) and pick the new view from the view dropdown. For the same flow as a single CLI command, see [`upstack dashboard view build`](/cli/dashboard-view#build). # Add a COG line to a variant Source: https://docs.upstackdata.com/api-reference/products/add-a-cog-line-to-a-variant /api-reference/openapi.yaml post /accounts/api/products/{productId}/{variantId}/cogs Append a new COG line to a variant's `manualCostHistory`. The server assigns a ULID for the new line. Triggers a per-order COGS recalculation downstream. **Required scope:** `costs:write`. # Delete a COG line Source: https://docs.upstackdata.com/api-reference/products/delete-a-cog-line /api-reference/openapi.yaml delete /accounts/api/products/{productId}/{variantId}/cogs/{cogId} Remove a COG line from a variant's history. Triggers a per-order COGS recalculation downstream (the deleted line is passed through to the recalc trigger so affected-orders can be identified). **Required scope:** `costs:write`. # Get the resolved cost for a variant Source: https://docs.upstackdata.com/api-reference/products/get-the-resolved-cost-for-a-variant /api-reference/openapi.yaml get /accounts/api/products/{productId}/{variantId}/cost Returns the effective per-unit cost for a single variant, including which configuration tier supplied it (per-variant COG line, global override, or default fallback). **Required scope:** `costs:read`. # Search products Source: https://docs.upstackdata.com/api-reference/products/search-products /api-reference/openapi.yaml get /accounts/api/products/search Search products by title / SKU / variant. Cursor-paginated. **Required scope:** `costs:read`. # Set a variant's handling fee Source: https://docs.upstackdata.com/api-reference/products/set-a-variants-handling-fee /api-reference/openapi.yaml put /accounts/api/products/{productId}/{variantId}/handling-fee Set the per-variant handling fee. Triggers a per-order COGS recalculation downstream. **Required scope:** `costs:write`. # Update a COG line Source: https://docs.upstackdata.com/api-reference/products/update-a-cog-line /api-reference/openapi.yaml put /accounts/api/products/{productId}/{variantId}/cogs/{cogId} Update an existing COG line by its server-assigned ID. Only the supplied fields are updated; omitted fields stay as-is. Triggers a per-order COGS recalculation downstream. **Required scope:** `costs:write`. # Rate limiting Source: https://docs.upstackdata.com/api-reference/rate-limiting How the Upstack Data API enforces request limits, which headers to watch, and how to retry safely. The Upstack Data API rate limits requests per API key to protect the analytics backend. Limits are applied per key (and therefore per pixel), not per IP address. ## Limits Limits are modest and sized for dashboard and CLI traffic. If you're building a high-volume integration — bulk exports, scheduled backfills — contact support and we can raise your limit. ## Rate limit responses When you exceed the limit, requests return `429 Too Many Requests`: ```json theme={null} { "message": "Too many requests. Retry later." } ``` ## Retrying safely * Retry `429` responses with exponential backoff and jitter, respecting `Retry-After` when the response includes it. * Don't retry `4xx` responses other than `429` — fix the request instead. * Backfill and bulk-export jobs should serialize requests rather than fan out with unbounded concurrency; a small worker pool with backoff will finish faster than a burst that spends its time getting throttled. # Cancelling your subscription Source: https://docs.upstackdata.com/billing/cancelling-your-subscription How to cancel your Upstack Data subscription, what cancellation preserves, and how to cancel one store without affecting others. ## How do I cancel my subscription? It depends on how you're billed. To find out which billing method you have, refer to [How do I identify my billing method?](/billing/how-do-i-identify-my-billing-method). Once you've identified your billing method, see [How do I cancel my subscription?](/billing/how-do-i-cancel-my-subscription) for the cancellation steps. **Good to know** Canceling does **not** delete your Upstack Data account, pixel setup, or integrations. If you reinstall later, your account and settings are preserved. ## Does cancellation stop my next payment? Yes. Cancellation stops all future billing — once the app is uninstalled (Shopify billing) or the subscription is canceled (Stripe billing), no further charges are issued. Any charge already in motion for the current cycle will still complete. ## I have multiple stores. Can I cancel one without affecting the others? Yes. Each store has its own subscription, so canceling one store's plan does not touch your other stores. Uninstall Upstack Data or cancel your subscription from the specific store you want to cancel by following [How do I cancel my subscription?](/billing/how-do-i-cancel-my-subscription). *** ## Related Articles # How can I pause my subscription? Source: https://docs.upstackdata.com/billing/how-can-i-pause-my-subscription Upstack Data subscriptions cannot be paused, but you can stop billing temporarily or pause data collection without canceling. ## Can I pause my subscription for a week or a month? Upstack Data subscriptions cannot currently be paused. If you need to stop billing temporarily, the best option is to cancel by uninstalling the app (Shopify billing) or canceling inside the dashboard (Stripe billing), then reinstall when you're ready. Your configuration is preserved when you reconnect your Shopify store, so you don't have to redo the pixel or integrations. ## Can I pause data collection without canceling? Yes — this is different from pausing billing. If you want to temporarily stop sending events to destinations (for example, during a store freeze or campaign blackout), message us in chat and we can disable event forwarding for a set period while keeping your account active. *** ## Related Articles # How do I cancel my subscription? Source: https://docs.upstackdata.com/billing/how-do-i-cancel-my-subscription Step-by-step instructions to cancel your Upstack Data subscription, whether you're on Stripe direct billing or Shopify billing. ## Step 1: Identify your billing method Upstack Data uses two billing methods. The cancellation steps depend on which one you're on. Log in to your [Upstack Data dashboard](https://app.upstackdata.com/), then go to **Settings → Billing**. Upstack Data dashboard Settings, Billing page If you see a red **Cancel** button, you're on Stripe (direct) billing. Click **Cancel** and confirm when prompted. Once this is done, your subscription is canceled. Red Cancel button shown for Stripe direct billing If you only see plan options and no cancel link, you're on Shopify billing. Follow Step 2 below. Billing page showing only plan options, indicating Shopify billing *** ## Step 2: Cancel your subscription on Shopify billing If you're billed through Shopify, uninstalling the app cancels your subscription. Log in to your Shopify admin, then go to **Settings → Apps**. Shopify admin Settings, Apps page Find **Upstack Data** in the list of installed apps. Upstack Data listed in Shopify installed apps Click the three-dot menu next to the app name, click **Uninstall**, and confirm when prompted. Confirming uninstall of the Upstack Data app in Shopify *** ## Related Articles # How do I identify my billing method? Source: https://docs.upstackdata.com/billing/how-do-i-identify-my-billing-method Determine whether your Upstack Data account is on Stripe direct billing or Shopify billing by checking your billing settings. Upstack Data uses two billing methods. The steps you follow for actions like canceling depend on which one you're on. Log in to your [Upstack Data dashboard](https://app.upstackdata.com/), then go to **Settings → Billing**. Upstack Data dashboard Settings, Billing page If you see a red **Cancel** button, you're on Stripe (direct) billing. Red Cancel button shown for Stripe direct billing If you only see plan options and no cancel link, you're on Shopify billing. Billing page showing only plan options, indicating Shopify billing *** ## Related Articles # How do I update my payment method? Source: https://docs.upstackdata.com/billing/how-do-i-update-my-payment-method Update your card on Upstack Data, with steps for Stripe billing and Shopify billing, plus how to set a default payment method. The steps to update your payment method depend on how your account is billed. Follow the section that applies to you. ## If you're on Stripe billing Log in to your [Upstack Data account](https://app.upstackdata.com/), then go to **Settings → Billing**. Upstack Data dashboard Settings, Billing page Click **Payment Methods**. Payment Methods section of the Upstack Data billing page Click **Add Payment Method** and enter your new card details. Add Payment Method form for entering new card details To use the new payment method as default, click the three dots next to the payment method you want as default, then select **Set as default**. Setting a payment method as default from the three-dot menu ## If you're on Shopify billing Shopify manages payment methods for apps billed through the Shopify App Store. To update your card: 1. Log in to your **Shopify admin**. 2. Go to **Settings → Billing**. 3. Update your payment method there. This change applies to all Shopify app charges, not just Upstack Data. **Not sure which billing type you're on?** Log in to your Upstack Data dashboard and go to the **Billing** page. If you see your card details and invoices listed directly, you're on Stripe billing. If the billing page does not display a payment method, your charges are handled through Shopify. If you run into any issues updating your payment method, start a chat from your dashboard and we can assist you further. *** ## Related Articles # How do I view my past invoices? Source: https://docs.upstackdata.com/billing/how-do-i-view-my-past-invoices View and download past Upstack Data invoices, with steps for Stripe billing and for charges handled through Shopify. ## If you're on Stripe billing (most accounts) Log in to your [Upstack Data account](https://app.upstackdata.com/), then go to **Settings → Billing**. Upstack Data dashboard Settings, Billing page Click the **Billing History** tab to see all of your previous invoices. Billing History tab listing previous invoices Click any invoice to view its details or download it as a PDF. You also receive a PDF copy of each invoice by email every billing cycle. ## If you're on Shopify billing Shopify handles invoicing for apps billed through the Shopify App Store. To view your charges: 1. Log in to your [Shopify admin](https://admin.shopify.com). 2. Go to **Settings → Billing**. 3. Select a billing cycle to see itemized app charges, including Upstack Data. **Not sure which billing type you're on?** Refer to [How do I identify my billing method?](/billing/how-do-i-identify-my-billing-method) to find out which billing method you're on. *** ## Related Articles # Payments, invoices, and billing source Source: https://docs.upstackdata.com/billing/payments-invoices-and-billing-source Manage payment methods, retry failed charges, find past invoices, and determine whether you're billed through Shopify or Stripe. ## Am I billed through Shopify or directly by Upstack Data? Both models exist today. To determine which billing method you're on, refer to [How do I identify my billing method?](/billing/how-do-i-identify-my-billing-method). We're actively migrating all customers to direct credit card billing via Stripe, which gives us better control over plan management and seasonal upgrades. If you're still on Shopify billing and want to switch, contact us at [support@upstackdata.com](mailto:support@upstackdata.com). ## My payment failed. Can you retry it? Yes — message us in chat and we'll manually retry the charge against your stored payment method. If the retry still fails, update your card under **Settings → Billing → Payment method** and we'll run it again. You can also refer to [How do I update my payment method?](/billing/how-do-i-update-my-payment-method) for the steps. ## Where do I view past invoices or charges by month? Refer to [How do I view my past invoices?](/billing/how-do-i-view-my-past-invoices) to view past invoices or charges by month. ## The app says "subscription required" but I already have an active subscription. What's happening? This usually means your account is caught between the old Shopify subscription and the new direct Stripe subscription. Log out of Upstack Data, log back in, and follow the prompts to complete Stripe billing setup. If that doesn't clear the message, contact us at [support@upstackdata.com](mailto:support@upstackdata.com) with your store URL. *** ## Related Articles # Plans and pricing Source: https://docs.upstackdata.com/billing/plans-and-pricing Learn about Upstack Data's available plans and pricing, and what happens to billing when you uninstall during a free trial. ## What plans does Upstack Data offer? For more details on our pricing plans, refer to the pricing section on our website: [upstackdata.com/pricing](https://www.upstackdata.com/pricing). *** ## I uninstalled during the free trial — why do I still see a charge on my upcoming Shopify bill? Uninstalling the app cancels the subscription going forward, but Shopify may still list a pending charge on the next bill if the uninstall happened after the billing cycle started. Contact us with your store URL and the charge amount, and we'll confirm whether it's a real charge or a pending line item that won't collect. *** ## Related Articles # Subscriptions and billing Source: https://docs.upstackdata.com/billing/subscriptions-and-billing Find answers about Upstack Data plans, billing, payments, cancellations, pauses, refunds, trials, and multi-store subscriptions. ## Overview This article answers the questions customers most often ask about Upstack Data plans, billing, payments, cancellations, pauses, refunds, trials, and multi-store subscriptions. Use the sections below to jump to the topic you need. All plan and billing controls live inside your Upstack Data dashboard under the **Billing** page. If you were set up through the Shopify App Store, some actions (like canceling) still happen inside your Shopify admin — see the relevant section below. *** ## Plans and pricing Looking for information on Upstack Data's available plans, pricing tiers, or what happens to billing when you uninstall during a free trial? The plans are listed in full on the Upstack Data pricing page, and common questions about trial charges and Shopify billing are answered separately. For more details, see [Plans and pricing](/billing/plans-and-pricing). *** ## Payments, invoices, and billing source Need help with payment methods, retrying failed charges, finding past invoices, or sorting out whether you're billed through Shopify or Stripe? See [Payments, invoices, and billing source](/billing/payments-invoices-and-billing-source) for more details. *** ## Can I upgrade or downgrade my subscription? You can upgrade or downgrade your plan at any time based on your current order volume, and choose the plan that best suits your use case. For more details, review [Upgrading and downgrading](/billing/upgrading-and-downgrading). *** ## How can I cancel my subscription? If you want to cancel your subscription because of a technical problem, onboarding experience, pricing, or another issue, give us the opportunity to address it by contacting us at [support@upstackdata.com](mailto:support@upstackdata.com). To cancel your subscription without contacting Upstack, refer to [Cancelling your subscription](/billing/cancelling-your-subscription). *** ## How can I pause my subscription? Pausing a subscription is not possible. However, there are alternative methods if you need to stop using Upstack without losing your data and pixels. Review [How can I pause my subscription?](/billing/how-can-i-pause-my-subscription) for the additional steps you can take. *** ## Refunds For inquiries regarding refunds, refer to our [Refund Policy](https://www.upstackdata.com/refund-policy). *** ## Multi-store billing ### Is each store billed separately? Yes. Each Shopify store has its own Upstack Data subscription, and each is billed independently. This also means each store's plan can be sized differently. ### Can I move my subscription from one store to a different store? We can't transfer a Shopify subscription between stores — Shopify ties each subscription to the store that approved it. The workflow is: [cancel on the old store](/billing/how-do-i-cancel-my-subscription), install Upstack Data on the new store using the [complete how-to guide for setting up the Upstack Data app in Shopify](/guides/shopify/complete-how-to-guide-for-setting-up-the-upstack-data-app-in-shopify), and start a subscription there. Message us and we'll coordinate so you don't double-pay during the transition. *** ## Still have a question? **Need help?** If your question isn't answered here, start a chat from the Upstack Data dashboard and include your store URL. We'll look up your subscription and get back to you quickly. # Upgrading and downgrading Source: https://docs.upstackdata.com/billing/upgrading-and-downgrading Change your Upstack Data plan: how to upgrade, how to downgrade, and how to right-size during the Shopify to Stripe migration. ## How do I upgrade my plan? Log in to your [Upstack Data account](https://app.upstackdata.com/), then go to **Settings → Billing → Overview → Change Plan**. Pick the plan you want and click **Upgrade**. ## How do I downgrade to a lower plan? Log in to your [Upstack Data account](https://app.upstackdata.com/), then go to **Settings → Billing → Overview → Change Plan** and click **Downgrade** on the plan you want to move to. Downgrades take effect on the next billing cycle, so you keep access to your current plan's features until then. ## Can I change my plan during the Shopify to Stripe migration? Yes, and this is a good time to right-size. When you log in after uninstalling the Shopify app, you're asked to pick a plan before entering your card details. Pick the tier that matches your current order volume. *** ## Related Articles # upstack account Source: https://docs.upstackdata.com/cli/account Read and rename the Upstack account that owns the configured API key — wraps the public /api/account endpoints. Manage your Upstack account from the command line. Wraps the `/api/account` endpoints — see the [API reference](/api-reference/introduction) and the **Account** group for full request/response shapes. ## Subcommands | Subcommand | Wraps | | --------------------------------------------- | --------------------------------- | | [`show`](#show) | `GET /api/account` | | [`rename`](#rename) | `PATCH /api/account` | | [`settings order show`](#settings-order-show) | `GET /api/account/settings/order` | | [`settings order set`](#settings-order-set) | `PUT /api/account/settings/order` | ## show Print the configured account as JSON — display name, creation date, active owners and admins, and the current subscription summary (when present). ```bash theme={null} upstack account show ``` Sample output: ```json theme={null} { "accountName": "Upstack Data", "createdAt": "2025-08-12T18:22:11.034Z", "owners": [ { "email": "founder@upstackdata.com", "firstName": "Alex", "lastName": "Owner" } ], "admins": [ { "email": "ops@upstackdata.com", "firstName": "Sam", "lastName": "Admin" } ], "subscription": { "plan": { "name": "Growth", "billingFrequency": "monthly", "displayPrice": "$49/mo", "discountedDisplayPrice": "$39/mo", "currency": "USD", "discount": { "code": "LAUNCH20", "type": "percentage", "value": 20, "appliesForBillingIntervals": 6 } }, "status": "active", "currentPeriodEnd": "2026-06-12T00:00:00.000Z", "cancelAtPeriodEnd": false } } ``` **Required scope:** `account:read`. ### Rendering price after a discount Render `discountedDisplayPrice ?? displayPrice` to match the web app's billing page. v2 (Stripe-native) plans may omit `discountedDisplayPrice` even when a discount is present — fall back to `displayPrice` and surface the `discount` summary for context. ## rename Rename the configured account. Prints the current → new transition and prompts for confirmation; pass `--yes` (or `-y`) to skip. ```bash theme={null} upstack account rename --name "Upstack Data" upstack account rename --name "Upstack Data" --yes ``` **Required flags:** | Flag | Description | | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | | `--name ` | New account name. 1–100 chars after trim. Control / zero-width / bidi characters rejected; unicode letters, marks, digits, punctuation, and emoji accepted. | **Optional flags:** | Flag | Description | | ----------- | ----------------------------- | | `-y, --yes` | Skip the confirmation prompt. | **Required scope:** `account:write`. The endpoint is allowlist-only — `accountName` is the single field accepted; any other key in the body is rejected with 400. Renames emit an `accountUpdated` EventBridge event with `actor: cli:{apiKeyPk}` so downstream consumers can distinguish UI vs API-key mutations. ## settings order show Print the account's order settings as JSON — count flags for pending and voided orders, refund-date attribution, and the list of exclusion filters that drop matching orders from every analytics query. ```bash theme={null} upstack account settings order show ``` Sample output: ```json theme={null} { "countPendingOrders": false, "countVoidedOrders": false, "refundDateAttribution": "refund_date", "exclusionFilters": [ { "id": "9f3e1a4f-d2c1-4f1e-9b5a-3c6d7e8f0a1b", "name": "Exclude POS", "enabled": true, "conditionGroups": [ { "id": "...", "logic": "and", "conditions": [ { "id": "...", "field": "sourceName", "operator": "not_equals", "value": "pos" } ] } ], "createdAt": "2026-05-18T10:00:00.000Z", "updatedAt": "2026-05-18T10:00:00.000Z" } ] } ``` **Required scope:** `account:read`. When the account has no stored `orderSettings`, the response is filled with the same defaults the web app uses (`countPendingOrders=false`, `countVoidedOrders=false`, `refundDateAttribution=refund_date`, `exclusionFilters=[]`). ## settings order set **PUT-the-whole-config semantics.** The file you pass replaces the stored `orderSettings` in its entirety — any existing filter not present in the file is deleted. The server assigns `id`, `createdAt`, and `updatedAt` on new filters (and on nested groups + conditions); entries that already carry an `id` preserve their `createdAt` and get a bumped `updatedAt`. ```bash theme={null} upstack account settings order show > order.json $EDITOR order.json upstack account settings order set --from-file order.json upstack account settings order set --from-file order.json --yes ``` The CLI prints a summary (counting flags, refund attribution, filter count) and asks for confirmation; `--yes` skips the prompt. **Required flags:** | Flag | Description | | -------------------- | --------------------------------------------- | | `--from-file ` | JSON file with the full `OrderSettings` body. | **Optional flags:** | Flag | Description | | ----------- | ----------------------------- | | `-y, --yes` | Skip the confirmation prompt. | Example body — "drop POS orders" filter, every `id` optional: ```json theme={null} { "countPendingOrders": false, "countVoidedOrders": false, "refundDateAttribution": "refund_date", "exclusionFilters": [ { "name": "Exclude POS", "enabled": true, "conditionGroups": [ { "logic": "and", "conditions": [ { "field": "sourceName", "operator": "not_equals", "value": "pos" } ] } ] } ] } ``` **Required scope:** `account:write`. Strict allowlist at every nesting level — extra keys in the body, or in a filter, group, or condition are rejected with 400. Operators must be valid for the chosen field type per `ORDER_EXCLUSION_FIELD_CATALOG` (e.g. `greater_than` on `sourceName` → 400). Updates emit an `accountUpdated` EventBridge event with `actor: cli:{apiKeyPk}` and `change: { kind: "orderSettings" }`. # AI agent workflow Source: https://docs.upstackdata.com/cli/ai-agent-workflow Use Claude (or another agent) in your terminal to translate natural-language intent into structured upstack CLI calls. The CLI is intentionally dumb — Claude (or another agent) running in your terminal does the natural-language parsing and constructs structured `upstack` calls. No LLM ever runs server-side in Upstack. ## Example session ```text theme={null} > Claude, make me a dashboard with NC ROAS, MER, and Facebook CPM. $ upstack measures --search "new customer roas" # confirms core.new_customer_roas $ upstack measures --search mer # core.new_customer_mer $ upstack measures --search "facebook cpm" # meta.cpm $ upstack dashboard view build \ --name "NC + Meta Pulse" \ --measures core.new_customer_roas,core.new_customer_mer,meta.cpm # → Created dashboard view 5f1e6a4f-... "NC + Meta Pulse" with 3 widget(s). # Open the dashboard app and select it from the view dropdown. ``` The agent picks measure ids using [`upstack measures`](/cli/measures), then issues a single [`build`](/cli/dashboard-view#build) call. Same result as the [API quickstart](/api-reference/introduction), in one structured command. ## Filters: discover before you construct When the user asks for a scoped query — "MER for new customers only", "spend on Meta campaigns containing 'spring'", etc. — the agent should call [`upstack filters`](/cli/filters) first to enumerate valid filter fields, operators, and contexts before guessing field ids: ```text theme={null} > Claude, show me MER for new customers only, last 30 days. $ upstack filters --search customer --detail # → orders.customer_type, operators include `equals`/`in` $ upstack query \ --measures core.new_customer_mer \ --granularity day \ --date-start 2026-04-01 --date-end 2026-04-30 \ --filter '{"and":[{"field":"orders.customer_type","op":"equals","value":"new_customer"}]}' ``` The field id (`orders.customer_type`), its supported operators, and the set of applicable contexts all come from the discovery endpoint — no hard-coding. ## Why this works * **Discovery is free.** [`upstack measures`](/cli/measures) and [`upstack filters`](/cli/filters) require only `analytics:read`. An agent can introspect what's available before constructing a request. * **The CLI is structured input for the agent's structured output.** Flags are JSON-shaped (`--measures m1,m2,m3`, `--from-file payload.json`). No shell-quoting gymnastics for natural-language prompts. * **Every command can be replayed.** Pass `--from-file` to load a JSON body, then iterate via flags. The agent doesn't need to remember state — it can re-issue. ## What the agent should NOT do * Don't ask the user for their API key over chat. Credentials are already in `~/.upstackrc`; the CLI handles auth automatically. * Don't hand-construct API request bodies in chat. Use the CLI as the structured interface — it's already typed and validated. # Configuration defaults Source: https://docs.upstackdata.com/cli/config-defaults Set per-profile defaults so you don't repeat common flags on every query. Set per-profile defaults so you don't repeat common flags. Defaults are merged into every query: **file values \< defaults \< CLI flags**. ## Usage ```bash theme={null} upstack config set upstack config get [key] upstack config unset ``` ## Supported keys | Key | Description | Example | | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------- | | `timezone` | IANA timezone applied to query date ranges. | `America/New_York` | | `output` | Default output format. | `json`, `table`, or `csv` | | `granularity` | Default granularity for query / cohort commands. | `day` | | `currency` | ISO 4217 code money values are converted to. Without it the server converts to `USD` — set this if your store sells in another currency. See [Reporting currency](/concepts/reporting-currency). | `GBP` | ## Examples ```bash theme={null} upstack config set timezone America/New_York upstack config set output table upstack config set currency GBP upstack config get # print all defaults for the active profile upstack config get granularity # print one key upstack config unset granularity ``` Defaults are stored under the active profile in `~/.upstackrc`: ```json theme={null} { "profiles": { "default": { "apiKey": "upstack_...", "pixelId": "...", "defaults": { "timezone": "America/New_York", "output": "table" } } } } ``` How each default applies per command: | Key | [`query`](/cli/query), [`query-cohort`](/cli/query-cohort), [`query-channel-details`](/cli/query-channel-details) | [`query-attribution`](/cli/query-attribution) | [`saved run`](/cli/saved-queries) | | ------------- | ----------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | --------------------------------- | | `granularity` | Applied | — (no granularity flag) | — | | `timezone` | Applied | Applied | — (use `run` override flags) | | `currency` | Applied | Applied | — (use `run` override flags) | | `output` | Applied | Applied | Applied | # upstack costs Source: https://docs.upstackdata.com/cli/costs Read and update cost configuration from the CLI — global overrides, shipping method, and per-type cost lines (order / gateway / shipping / variable / fixed). Manage cost configuration that drives every margin calculation in the dashboard. Wraps the `/api/costs*` endpoints — see the [API reference](/api-reference/introduction) under the **Costs** group for full request / response shapes. Mutations trigger the same per-order COGS recalculation flow as the web UI — so CLI-driven changes update existing orders identically. ## Subcommands | Subcommand | Wraps | | --------------------------------------------- | ---------------------------------------- | | [`show`](#show) | `GET /api/costs` | | [`global-override set`](#global-override-set) | `PUT /api/costs/global-product-override` | | [`shipping set`](#shipping-set) | `PUT /api/costs/shipping-settings` | | [`lines add`](#lines-add) | `POST /api/costs/lines` | | [`lines update`](#lines-update) | `PUT /api/costs/lines/{lineId}` | | [`lines delete`](#lines-delete) | `DELETE /api/costs/lines/{lineId}` | ## show Print the full cost configuration as JSON, or filter to a single type. ```bash theme={null} upstack costs show upstack costs show --type shipping ``` `--type` values: `global_product_override`, `order`, `gateway`, `shipping`, `variable`, `fixed`. **Required scope:** `costs:read`. ## global-override set Update the default COGS and handling fee. The default COGS applies to variants with no per-variant COG line; the handling fee applies, per unit sold, to variants with no per-variant handling fee. At least one of `--default-cogs`, `--handling-fee`, or `--currency` is required. ```bash theme={null} upstack costs global-override set --default-cogs 5 --handling-fee 1.5 --currency USD upstack costs global-override set --default-cogs 0 --yes ``` The CLI prints a confirmation summary; `--yes` (or `-y`) skips it. **Required scope:** `costs:write`. ## shipping set Switch the shipping cost attribution method. ```bash theme={null} upstack costs shipping set --method fixed_rate --fixed-rate 7.5 --currency USD upstack costs shipping set --method shopify_charges --yes ``` `--method` values: `shopify_charges`, `fixed_rate`, `shipping_profiles`. `--fixed-rate ` sets the per-order rate used with `--method=fixed_rate` — pass it whenever you switch to `fixed_rate` (nothing enforces the pairing, so a `fixed_rate` method without a rate falls back to no fixed charge). **Required scope:** `costs:write`. ## lines add Add a cost line for one of the five line-typed cost surfaces — `order`, `gateway`, `shipping` (profile rule), `variable`, or `fixed`. The line body shape depends on `--type`; supply it as a JSON file via `--from-file`. The server assigns a ULID for the new line. ```bash theme={null} upstack costs lines add --type variable --from-file marketing.json upstack costs lines add --type gateway --from-file shopify-payments.json upstack costs lines add --type fixed --from-file klaviyo-subscription.json ``` Example `marketing.json` for a `variable` line ("% of ad spend"): ```json theme={null} { "name": "Google Ads — % of spend", "type": "pct_ad_spend", "percentRate": 2, "category": "marketing", "channel": "online", "currency": "USD" } ``` Example `shopify-payments.json` for a `gateway` line: ```json theme={null} { "name": "Shopify Payments", "gatewayName": "shopify_payments", "flatAmount": 0.30, "percentRate": 2.9, "currency": "USD" } ``` Example `klaviyo-subscription.json` for a `fixed` line: ```json theme={null} { "name": "Klaviyo subscription", "flatAmount": 500, "frequencyUnit": "month", "frequencyInterval": 1, "category": "opex", "currency": "USD" } ``` See the [API reference](/api-reference/introduction) under **Costs** for the full field set of each cost type (`OrderCostLine`, `GatewayCostLine`, `ShippingProfileCostLine`, `VariableCostLine`, `FixedCostLine`). **Required scope:** `costs:write`. ## lines update Update an existing cost line by its server-assigned ULID. The JSON file contains a partial update — any subset of the fields valid for that cost type. Omitted fields stay as-is. ```bash theme={null} # patch.json: { "percentRate": 2.5 } upstack costs lines update --type variable --line-id 01JZX... --from-file patch.json ``` **Required scope:** `costs:write`. ## lines delete Delete a cost line by its ULID. The CLI prompts for confirmation; `--yes` (or `-y`) skips it. ```bash theme={null} upstack costs lines delete --type variable --line-id 01JZX... upstack costs lines delete --type variable --line-id 01JZX... --yes ``` **Required scope:** `costs:write`. # upstack dashboard view Source: https://docs.upstackdata.com/cli/dashboard-view Manage Upstack dashboard views from the command line — list, show, create, update, copy, delete, organize widgets into sections, pin KPIs, and the high-level preset builder. Manage Upstack dashboard views from the command line. Wraps the `/api/dashboard/views/*` endpoints — see the [API reference](/api-reference/introduction) and the per-endpoint pages under the **Dashboards** group for full request/response shapes. ## Subcommands | Subcommand | Wraps | | -------------------------------- | ---------------------------------------------------------------------------- | | [`list`](#list) | `GET /api/dashboard/views` | | [`show `](#show) | `GET /api/dashboard/views/{id}` | | [`build`](#build) | `POST /api/dashboard/views/from-preset` | | [`create --from-file`](#create) | `POST /api/dashboard/views` | | [`update `](#update) | `PATCH /api/dashboard/views/{id}` | | [`copy `](#copy) | `POST /api/dashboard/views/{id}/copy` | | [`delete `](#delete) | `DELETE /api/dashboard/views/{id}` | | [`section …`](#sections) | `GET` + `PATCH /api/dashboard/views/{id}` (mutates `configuration.sections`) | | [`pin `](#pins) | `PATCH /api/dashboard/views/{id}` (adds widget to Pinned section) | | [`unpin `](#pins) | `PATCH /api/dashboard/views/{id}` (removes from Pinned section) | ## list List dashboard views for the configured pixel. ```bash theme={null} upstack dashboard view list upstack dashboard view list --type view # default upstack dashboard view list --type attribution_view ``` ## show Fetch a single view with its full configuration as JSON. ```bash theme={null} upstack dashboard view show 5f1e6a4f-... ``` ## build The high-level builder — pass a list of measures, get a finished dashboard with auto-laid-out sparkline tiles. The most common command for AI agents and quick "give me a dashboard with these KPIs" workflows. ```bash theme={null} upstack dashboard view build \ --name "NC + Meta Pulse" \ --measures core.new_customer_roas,core.new_customer_mer,meta.cpm ``` Optional flags: | Flag | Description | Default (applied server-side when omitted) | | --------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------ | | `--chart-types ` | One chart type per measure (positional pairing). | `sparkline` for all | | `--type ` | `view`, `attribution_view`, or `pnl_view`. | `view` (CLI) | | `--layout ` | Auto-layout strategy. Only `kpi-grid` today. | `kpi-grid` (CLI) | | `--attribution-model ` | `first_click`, `last_click`, or `any_click`. | `first_click` | | `--attribution-window ` | Attribution lookback. | `30` | | `--granularity ` | `day\|hour\|week\|month\|...` | `day` | | `--date-start --date-end ` | Date range. | last 30 days | | `--from-file ` | JSON file with any of the above. CLI flags override. | | The CLI resolves each measure's friendly `shortTitle` from `GET /api/measures` (cached) before posting, so widget titles read nicely in the web app. ## create Advanced — create a view from a full `DashboardViewConfiguration` body. Use [`build`](#build) instead unless you have a specific configuration to load (e.g. exported from another pixel). ```bash theme={null} upstack dashboard view create --from-file ./my-view.json ``` The file must contain `{ type, name, configuration, order? }`. ## update Partial update — only fields you pass are changed. ```bash theme={null} upstack dashboard view update 5f1e6a4f-... --name "Renamed" upstack dashboard view update 5f1e6a4f-... --order 3 upstack dashboard view update 5f1e6a4f-... --from-file ./partial.json ``` ## copy Duplicate a view. ```bash theme={null} upstack dashboard view copy 5f1e6a4f-... ``` ## delete Delete a view. Prompts for confirmation; `--yes` skips the prompt. ```bash theme={null} upstack dashboard view delete 5f1e6a4f-... --yes ``` ## Sections A view's widgets are grouped into **sections** — labelled blocks the web app renders with a header, optional collapse/hide, per-section density/pacing overrides, and a chosen layout mode. The CLI exposes every section operation the web app supports. Every `section` subcommand follows a `GET → mutate → PATCH` flow internally: it fetches the view's current configuration, applies the mutation locally, then sends the full new configuration back via `PATCH /api/dashboard/views/{id}`. You don't need to construct the JSON yourself. ### section list Print the sections in a view as a table (id, ordinal, layout mode, widget count, title, flags like `pinned` / `hidden` / `collapsed`). ```bash theme={null} upstack dashboard view section list 5f1e6a4f-... ``` ### section add Create a new section. By default, appends to the bottom of the non-pinned sections. ```bash theme={null} upstack dashboard view section add 5f1e6a4f-... --title "Performance" upstack dashboard view section add 5f1e6a4f-... --title "Top KPIs" --position top upstack dashboard view section add 5f1e6a4f-... --title "Detail" --after ``` | Flag | Description | Default | | ------------------------ | --------------------------------------------------------------- | ------------------------------------------------------ | | `--title ` | Section title. | `Section N` — numbered from the current section count. | | `--position top\|bottom` | Where to insert among non-pinned sections. | `bottom` | | `--after <sectionId>` | Insert immediately after this section (overrides `--position`). | | ### section rename / clone / delete ```bash theme={null} upstack dashboard view section rename 5f1e6a4f-... <section-id> --title "Renamed" upstack dashboard view section clone 5f1e6a4f-... <section-id> upstack dashboard view section delete 5f1e6a4f-... <section-id> ``` `clone` deep-copies the section's widgets with fresh ids and appends the new section directly after the source. `delete` migrates any widgets from the deleted section into the first remaining non-pinned section so widgets aren't lost. The Pinned section can't be renamed, cloned, or deleted directly — it's managed via [`pin`/`unpin`](#pins). ### section reorder Move a non-pinned section to a 0-based position among the other non-pinned sections. ```bash theme={null} upstack dashboard view section reorder 5f1e6a4f-... <section-id> --to 0 ``` ### section collapse / expand / hide / unhide Toggle the display state of a section. ```bash theme={null} upstack dashboard view section collapse 5f1e6a4f-... <section-id> upstack dashboard view section expand 5f1e6a4f-... <section-id> upstack dashboard view section hide 5f1e6a4f-... <section-id> upstack dashboard view section unhide 5f1e6a4f-... <section-id> ``` `collapse` keeps the header but hides the section's widgets. `hide` removes the entire section from rendering (config is preserved). ### section layout Set the section's layout mode. Accepted values: `auto`, `1_column`, `2_columns`, `3_columns`, `4_columns` (matches the backend enum exactly; the CLI lowercases input so capitalization in your shell is fine). ```bash theme={null} upstack dashboard view section layout 5f1e6a4f-... <section-id> --mode auto upstack dashboard view section layout 5f1e6a4f-... <section-id> --mode 2_columns ``` ### section density / pacing Per-section overrides for density (`compact` or `normal`) and pacing. Pass `inherit` (density) or `--inherit` (pacing) to clear the override and fall back to view-level `defaultSettings`. ```bash theme={null} upstack dashboard view section density 5f1e6a4f-... <section-id> --density compact upstack dashboard view section density 5f1e6a4f-... <section-id> --density inherit upstack dashboard view section pacing 5f1e6a4f-... <section-id> --enabled upstack dashboard view section pacing 5f1e6a4f-... <section-id> --disabled upstack dashboard view section pacing 5f1e6a4f-... <section-id> --inherit ``` ### section move-widget Move a widget from its current section into another non-pinned section. Use [`pin`/`unpin`](#pins) instead to move widgets in and out of the Pinned section. ```bash theme={null} upstack dashboard view section move-widget 5f1e6a4f-... <widget-id> --to <target-section-id> ``` ### section migrate Legacy views created before sections were introduced have a flat `configuration.widgets` array and no `configuration.sections`. Run `migrate` to wrap those widgets in a single `Main` section so the CLI's other section commands can operate on them. ```bash theme={null} upstack dashboard view section migrate 5f1e6a4f-... ``` Safe to call on views that already have sections (no-op). ## Pins Pinning copies a widget into a dedicated **Pinned** section that always renders first in the view (it has `ordinal: -1` and `sectionType: "PINNED"`). The Pinned section is created on the first `pin` and removed when its last widget is unpinned — you never create or delete it yourself. ```bash theme={null} # Pin: creates a fresh copy in the Pinned section with a new widget id. # The copy carries `sourceWidgetId` linking it back to the original. upstack dashboard view pin 5f1e6a4f-... <widget-id> # Unpin: accepts either the pinned copy's id, or the original widget's id. # The Pinned section is removed once its last widget is unpinned. upstack dashboard view unpin 5f1e6a4f-... <widget-id> ``` Pinning the same widget twice is rejected — call `unpin` first if you want to re-pin a modified original. # upstack dimensions Source: https://docs.upstackdata.com/cli/dimensions List the dimensions available for grouping and filtering queries. Bundled with the CLI — no network call. List the dimensions available for grouping and filtering queries. Bundled with the CLI as static data — no network call. ## Usage ```bash theme={null} upstack dimensions ``` ## Flags | Flag | Description | | ------------------- | --------------------------------------------------------------------------------------------------- | | `--search <term>` | Filter by keyword (matches the dimension key). | | `--category <name>` | Filter by category (e.g. `device`, `page`, `geo`, `traffic`, `ads`, `ecommerce`, `emq`, `session`). | | `--categories` | Print category names + counts only. | ## Examples ```bash theme={null} upstack dimensions --search utm upstack dimensions --category traffic upstack dimensions --categories ``` See [Measures & Dimensions](/data-dictionary/measures-and-dimensions) for full descriptions and example values. # upstack filters Source: https://docs.upstackdata.com/cli/filters List the filter-fields catalog from the command line. Find canonical filter field ids, value types, operators, and applicable contexts before constructing a --filter. List the catalog of filter fields available across every query endpoint. Each entry declares its operators, value type, and the contexts it applies in. Useful for finding canonical filter field ids before constructing a [query](/cli/query), [attribution query](/cli/query-attribution), [cohort analysis](/cli/query-cohort), or [channel-details listing](/cli/query-channel-details). Wraps `GET /api/filters` — see the [API reference](/api-reference/introduction). ## Usage ```bash theme={null} upstack filters ``` The endpoint takes no parameters — the full catalog is returned in one call. Results are cached locally for 1 hour; pass `--no-cache` to refetch. ## Flags | Flag | Description | | ----------------- | ------------------------------------------------------------------------------------- | | `--search <term>` | Filter results by keyword (matches `field` and `label`). | | `--detail` | Include label, description, value type, supported operators, and applicable contexts. | | `--operators` | Show supported operators inline next to each field. | | `--json` | Print the raw response as JSON (one object per field). | | `--no-cache` | Bypass the local 1-hour cache and refetch. | ## Examples ```bash theme={null} upstack filters upstack filters --search utm upstack filters --detail upstack filters --operators upstack filters --json | jq '.[] | select(.applicableContexts | index("attribution"))' ``` ## Narrowing by endpoint context Every entry carries an `applicableContexts` array listing which endpoints it applies to (`query_measures`, `cohort_analysis`, `products_report`, `attribution`, `channel_details`, `emq_analytics`). Use `--detail` to see them inline, or `--json` to narrow with `jq`: ```bash theme={null} # Fields valid on POST /api/query-channel-details upstack filters --json | jq '.[] | select(.applicableContexts | index("channel_details"))' ``` # upstack history Source: https://docs.upstackdata.com/cli/history Inspect or re-run previously executed queries. Every query run is logged locally. Every query run is logged locally to `~/.upstack_history.json`. The CLI doesn't send history anywhere — it's purely a convenience for you. History keeps the last 50 entries; `upstack history` lists the most recent 20. ## Usage ```bash theme={null} upstack history # last 20 entries upstack history --show <id> # inspect a single entry upstack history --rerun <id> # re-run a previous query upstack history --clear # delete all entries ``` ## Flags | Flag | Description | | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | `--show <id>` | Print the command, timestamp, and full parameters for one history entry. Doesn't print the original result — use `--rerun` to fetch fresh results. | | `--rerun <id>` | Re-run a previous query with the same parameters. Useful for "what did yesterday look like, exactly?" | | `--output <format>` | Output format for `--rerun`: `json`, `table`, or `csv`. | | `--file <path>` | Write `--rerun` output to a file instead of stdout. | | `--clear` | Delete all history entries. No confirmation. | # Install the Upstack CLI Source: https://docs.upstackdata.com/cli/install Install the upstack CLI and configure it with an API key and pixel id. The `upstack` CLI is a thin wrapper around the [Upstack API](/api-reference/introduction). It handles authentication, profile management, and a few ergonomics like measure-title resolution that the raw API leaves to the caller. The CLI is designed to be both a human tool and a target for AI agents. See [AI agent workflow](/cli/ai-agent-workflow) for the intended Claude-in-your-terminal use case. ## Install ```bash theme={null} npm install -g @upstackdata/upstack-cli ``` ## Configure ```bash theme={null} upstack init ``` You'll be prompted for: * **API Key** — your Upstack key (starts with `upstack_`). Mint at **Settings → API Keys** in the dashboard. * **Pixel ID** — the pixel uuid the key is scoped to. Credentials live in `~/.upstackrc` with file mode `0600`. ## Verify ```bash theme={null} upstack whoami ``` Prints the active profile, pixel id, and masked API key. If you see your pixel id, you're set — try [`upstack measures`](/cli/measures) next. ## Multiple profiles For additional environments or pixels: ```bash theme={null} upstack init --profile staging upstack init --profile client-b ``` Then pass `--profile <name>` on any command. See [Profiles](/cli/profiles) for the full reference. ## Global flags | Flag | Description | | ------------------ | -------------------------------------------------------------------------- | | `--profile <name>` | Use a named profile for the command. See [Profiles](/cli/profiles). | | `--debug` | Print debug output (request URLs, params, timing) to help diagnose issues. | | `-V, --version` | Print the installed CLI version. | ## Updating The CLI doesn't self-update. It checks npm once a day and prints an update banner when a newer version is available (set `NO_UPDATE_NOTIFIER=1` to suppress). To update: ```bash theme={null} npm install -g @upstackdata/upstack-cli ``` The CLI also supports a server-driven minimum-version gate: if the API reports a minimum version and the installed CLI is older, commands exit with an upgrade instruction instead of running. # upstack measures Source: https://docs.upstackdata.com/cli/measures List the measures catalog from the command line. Find canonical measure ids before building a query or dashboard. List the measures available to your pixel. Useful for finding canonical measure ids before constructing a [query](/cli/query) or [building a dashboard](/cli/dashboard-view#build). Wraps `GET /api/measures` — see the [API reference](/api-reference/introduction). ## Usage ```bash theme={null} upstack measures ``` Results are cached locally for 1 hour. Pass `--no-cache` to refetch. ## Flags | Flag | Description | | ------------------- | ------------------------------------------------------------------------------- | | `--search <term>` | Filter by keyword (matches `key`, `title`, and `shortTitle`). | | `--category <name>` | Filter by category (e.g. `Core`). | | `--categories` | Print category names + counts only (no individual measures). | | `--detail` | Include title, description, formula, category, and value type for each measure. | | `--no-cache` | Bypass the local 1-hour cache and refetch. | ## Examples ```bash theme={null} upstack measures --search "new customer roas" upstack measures --category Core upstack measures --categories upstack measures --detail --search mer ``` # upstack products Source: https://docs.upstackdata.com/cli/products Browse products and manage per-variant costs — handling fee + COGS history — from the CLI. Browse products + variants in the configured catalog and manage per-variant cost data. Wraps the `/api/products*` endpoints — see the [API reference](/api-reference/introduction) under the **Products** group for full request / response shapes. Mutations fire the same per-order COGS recalculation as the web UI. ## Subcommands | Subcommand | Wraps | | --------------------------------------- | ----------------------------------------------------------- | | [`search`](#search) | `GET /api/products/search` | | [`cost`](#cost) | `GET /api/products/{productId}/{variantId}/cost` | | [`handling-fee set`](#handling-fee-set) | `PUT /api/products/{productId}/{variantId}/handling-fee` | | [`cogs add`](#cogs-add) | `POST /api/products/{productId}/{variantId}/cogs` | | [`cogs update`](#cogs-update) | `PUT /api/products/{productId}/{variantId}/cogs/{cogId}` | | [`cogs delete`](#cogs-delete) | `DELETE /api/products/{productId}/{variantId}/cogs/{cogId}` | ## search Search products by title / SKU / variant. Cursor-paginated. ```bash theme={null} upstack products search -q "shirt" upstack products search -q "shirt" --page-size 50 upstack products search --cursor "<nextCursor from previous response>" ``` `--page-size` accepts 1–100 (default 20). Pass the `nextCursor` from the response into `--cursor` to page. **Required scope:** `costs:read`. ## cost Show the resolved cost breakdown for a single variant — the per-unit effective cost, handling fee, and which configuration tier supplied it (per-variant COG line, global override, or default fallback). ```bash theme={null} upstack products cost --product-id prd_123 --variant-id var_456 ``` **Required scope:** `costs:read`. ## handling-fee set Set the per-variant handling fee, charged on every unit sold. Must be `>= 0`. Setting it replaces the global default handling fee for this variant — use `0` to charge no handling fee. ```bash theme={null} upstack products handling-fee set --product-id prd_123 --variant-id var_456 --fee 2 upstack products handling-fee set --product-id prd_123 --variant-id var_456 --fee 0 --yes ``` **Required scope:** `costs:write`. ## cogs add Append a new COG line to a variant's manual cost history. The server assigns a ULID for the new line. ```bash theme={null} upstack products cogs add \ --product-id prd_123 --variant-id var_456 \ --cost 5 --start 2026-01-01 \ --description "Q1 batch" upstack products cogs add \ --product-id prd_123 --variant-id var_456 \ --cost 6 --start 2026-04-01 --end 2026-06-30 ``` `--end` is optional — omit for an open-ended interval. **Required scope:** `costs:write`. ## cogs update Update an existing COG line by its server-assigned ID. Pass any combination of `--cost`, `--start`, `--end`, `--description`. Use `--end null` to clear an end date (make the line open-ended). ```bash theme={null} upstack products cogs update \ --product-id prd_123 --variant-id var_456 --cog-id cog_abc \ --cost 7 upstack products cogs update \ --product-id prd_123 --variant-id var_456 --cog-id cog_abc \ --end null ``` **Required scope:** `costs:write`. ## cogs delete Delete a COG line by its ID. The CLI prompts for confirmation; `--yes` (or `-y`) skips it. ```bash theme={null} upstack products cogs delete \ --product-id prd_123 --variant-id var_456 --cog-id cog_abc ``` **Required scope:** `costs:write`. # Profiles Source: https://docs.upstackdata.com/cli/profiles Switch between API keys, pixels, and environments using named profiles. Profiles let you keep multiple `(API key, pixel id)` configurations side-by-side — e.g. one for production and one for staging, or one per client. ## Create a profile ```bash theme={null} upstack init --profile staging upstack init --profile client-b ``` ## Use a profile Pass `--profile <name>` on any command. Without `--profile`, the `default` profile is used. ```bash theme={null} upstack --profile staging query --measures revenue \ --date-start 2026-04-01 --date-end 2026-04-30 upstack whoami --profile staging ``` ## List profiles ```bash theme={null} upstack profiles ``` Prints all configured profile names, marking the active one with `(active)`. ## Remove a profile ```bash theme={null} upstack logout --profile staging ``` Removes credentials for the named profile from `~/.upstackrc`. If it was the last profile, the file is deleted. ## Storage All profiles live in `~/.upstackrc` (mode `0600`) under a `profiles` map. There is no environment-specific URL — the API base URL is baked into the CLI build: ```json theme={null} { "profiles": { "default": { "apiKey": "upstack_...", "pixelId": "..." }, "staging": { "apiKey": "upstack_...", "pixelId": "..." } } } ``` `upstack init` and `upstack whoami` print the API key masked (`*****` followed by the last 5 characters). # upstack query Source: https://docs.upstackdata.com/cli/query Run a measures-and-dimensions query from the command line. Wraps POST /api/query. Run a measures-and-dimensions query against your event stream. Wraps `POST /api/query` — see the [API reference](/api-reference/introduction). ## Usage ```bash theme={null} upstack query \ --measures orders.gross_revenue,tracked.purchases \ --dimensions utm_source \ --date-start 2026-04-01 \ --date-end 2026-04-30 ``` ## Required flags | Flag | Description | | ----------------------------------------------------- | --------------------------------------------------------------------------------- | | `--measures <m1,m2,...>` | Comma-separated canonical measure ids (see [`upstack measures`](/cli/measures)). | | `--granularity <g>` | `none`, `second`, `minute`, `hour`, `day`, `week`, `month`, `quarter`, or `year`. | | `--date-start <YYYY-MM-DD>` `--date-end <YYYY-MM-DD>` | Date range. | ## Optional flags | Flag | Description | Default | | ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | | `--dimensions <d1,d2,...>` | Comma-separated dimension ids. Max 5. | | | `--filter <json>` | Canonical [Filter](/cli/filters) as JSON. See the [Filters](#filters) section below for the shape. | | | `--compare-start <YYYY-MM-DD>` `--compare-end <YYYY-MM-DD>` | Optional comparison period. Must not overlap the primary date range. | | | `--timezone <tz>` | IANA timezone (e.g. `America/New_York`). | `UTC` | | `--currency <code>` | ISO 4217 code to convert money measures to. See [Reporting currency](/concepts/reporting-currency). | `USD` (server default; a [`config set currency`](/cli/config-defaults) value is sent instead) | ## Shared flags All query commands ([`query`](/cli/query), [`query-attribution`](/cli/query-attribution), [`query-cohort`](/cli/query-cohort)) support these: | Flag | Description | Default | | -------------------- | ----------------------------------------------------------------------- | ------- | | `-i, --interactive` | Build the query step-by-step with prompts. | | | `--output <format>` | `json`, `table`, or `csv`. | `json` | | `--file <path>` | Write output to a file instead of stdout. | | | `--from-file <path>` | Load query parameters from a JSON file. CLI flags override file values. | | ## Examples ```bash theme={null} # Gross revenue by day, last 30 days upstack query --measures orders.gross_revenue --granularity day \ --date-start 2026-04-01 --date-end 2026-04-30 # CSV output, broken down by UTM source upstack query --measures orders.gross_revenue,tracked.purchases \ --dimensions utm_source --granularity day \ --date-start 2026-04-01 --date-end 2026-04-30 \ --output csv --file ./april-by-source.csv # Scope to web/POS orders for new customers via canonical filter upstack query --measures orders.gross_revenue --granularity day \ --date-start 2026-04-01 --date-end 2026-04-30 \ --filter '{"and":[{"field":"orders.source_name","op":"in","value":["web","pos"]},{"field":"orders.customer_type","op":"equals","value":"new_customer"}]}' # Interactive upstack query -i ``` ## Filters `--filter` takes a canonical Filter JSON object. The shape is a recursive `{ and | or | not }` group tree with leaves of the form `{ field, op, value }`: ```json theme={null} { "and": [ { "field": "orders.source_name", "op": "in", "value": ["web", "pos"] }, { "field": "orders.customer_type", "op": "equals", "value": "new_customer" } ] } ``` Field ids are namespaced (`orders.*`, `channel.*`, `attribution.*`, `emq.*`) and each one is only valid in certain contexts. Run [`upstack filters --detail`](/cli/filters) to list every field with its operators and applicable contexts before constructing a filter. ## Save a query for reuse ```bash theme={null} upstack saved create morning-report --command query --from-file ./params.json upstack saved run morning-report ``` See [`upstack saved`](/cli/saved-queries) for the full reference. # upstack query-attribution Source: https://docs.upstackdata.com/cli/query-attribution Run an attribution query from the command line. Wraps POST /api/query-attribution. Run an attribution query. Wraps `POST /api/query-attribution` — see the [API reference](/api-reference/introduction). ## Usage ```bash theme={null} upstack query-attribution \ --dimension utm_source \ --model first_click \ --window 30 \ --date-start 2026-04-01 \ --date-end 2026-04-30 ``` ## Required flags | Flag | Description | | ----------------------------------------------------- | ------------------------------------------------------------------------------ | | `--dimension <d>` | Dimension to attribute by (e.g. `utm_source`, `utm_campaign`). | | `--model <m>` | `first_click`, `last_click`, or `any_click`. | | `--window <days>` | Attribution window. One of `1`, `7`, `14`, `30`, `60`, `90`, `-1` (unlimited). | | `--date-start <YYYY-MM-DD>` `--date-end <YYYY-MM-DD>` | Date range. | ## Optional flags | Flag | Description | Default | | --------------------------- | ------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------- | | `--filter <json>` | Canonical [Filter](/cli/query#filters) as JSON. `attribution.utm_*` fields and `orders.*` fields apply here. | | | `--timezone <tz>` | IANA timezone. | `UTC` | | `--currency <code>` | ISO 4217 code to convert money measures to. See [Reporting currency](/concepts/reporting-currency). | `USD` (server default; a [`config set currency`](/cli/config-defaults) value is sent instead) | | `--value-source <s>` | `orders` or `events`. | `orders` | | `--conversion-event <name>` | Required when `--value-source=events`; otherwise optional — the server defaults it to `purchase`. | `purchase` | See [`upstack query`](/cli/query#shared-flags) for the shared output / interactive / from-file flags. ## Examples ```bash theme={null} # First-click attribution by UTM source, last 30 days upstack query-attribution \ --dimension utm_source --model first_click --window 30 \ --date-start 2026-04-01 --date-end 2026-04-30 # Last-click, unlimited window, event-based valuation upstack query-attribution \ --dimension utm_campaign --model last_click --window -1 \ --value-source events --conversion-event signup_completed \ --date-start 2026-04-01 --date-end 2026-04-30 # Scope to one UTM source via canonical filter upstack query-attribution \ --dimension utm_campaign --model last_click --window 30 \ --date-start 2026-04-01 --date-end 2026-04-30 \ --filter '{"and":[{"field":"attribution.utm_source","op":"equals","value":"google"}]}' # Interactive upstack query-attribution -i ``` Run [`upstack filters --detail`](/cli/filters) to see every field valid in the `attribution` context with its operators. # upstack query-channel-details Source: https://docs.upstackdata.com/cli/query-channel-details List ad accounts, campaigns, ad sets, or ads with optional metrics from the command line. Wraps POST /api/query-channel-details. List ad accounts, campaigns, ad sets, or ads — with optional metric aggregation — from the ads-platform integrations connected to your pixel. Wraps `POST /api/query-channel-details` — see the [API reference](/api-reference/introduction). The **grain** is controlled by `--dimensions`: * omit it for **account grain** (the default; one row per ad account across every connected platform — Facebook, Google, TikTok), * pass exactly one of `campaign`, `adset`, or `ad` for that grain. When `--date-start` / `--date-end` are omitted, the response is an entity-only listing (no metric aggregation). To scope by ad platform, use a canonical filter on `channel.resource_source` (not a dimension). ## Usage ```bash theme={null} upstack query-channel-details --granularity day ``` ## Required flags | Flag | Description | | ------------------- | ------------------------------------------ | | `--granularity <g>` | `hour`, `day`, `week`, `month`, or `year`. | ## Optional flags | Flag | Description | Default | | ----------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ----------------- | | `--dimensions <grain>` | `campaign`, `adset`, or `ad`. Omit for account grain. | (account) | | `--date-start <YYYY-MM-DD>` `--date-end <YYYY-MM-DD>` | Date range. Required together with `--measures` (entity-list-only when absent). | | | `--measures <m1,m2,...>` | Comma-separated measure ids (e.g. `channel.spend`, `channel.impressions`, `meta.cpm`). | | | `--filter <json>` | Canonical [Filter](/cli/filters) as JSON. | | | `--timezone <tz>` | IANA timezone. | `UTC` | | `--currency <code>` | ISO 4217 code to convert money measures to. Ad-account budgets stay native. See [Reporting currency](/concepts/reporting-currency). | `USD` | | `--limit <n>` | Max rows returned (1–500). | `50` | | `--offset <n>` | Skip the first N rows. | `0` | | `--sort-by <field>` | One of `sourceUpdatedAt`, `sourceCreatedAt`, `resourceName`. | `sourceUpdatedAt` | | `--sort-direction <dir>` | `asc` or `desc` (case-insensitive). | `desc` | See [`upstack query`](/cli/query#shared-flags) for the shared output / from-file flags. ## Examples ```bash theme={null} # Top 50 ad accounts across all connected platforms (listing-only) upstack query-channel-details --granularity day # Campaigns with spend + impressions for April upstack query-channel-details \ --dimensions campaign \ --granularity day \ --date-start 2026-04-01 --date-end 2026-04-30 \ --measures channel.spend,channel.impressions # Scope to one Facebook ad account via canonical filter upstack query-channel-details \ --dimensions campaign --granularity day \ --filter '{"and":[{"field":"channel.account_id","op":"equals","value":"<account_id>"}]}' # Drill from a specific campaign down to its ad sets upstack query-channel-details \ --dimensions adset --granularity day \ --filter '{"and":[{"field":"channel.campaign_id","op":"equals","value":"<campaign_id>"}]}' ``` ## See also * [`upstack filters`](/cli/filters) — discover valid filter fields, operators, and applicable contexts (every `channel.*` field is valid here). * [`upstack measures`](/cli/measures) — list measure ids available across all query endpoints. # upstack query-cohort Source: https://docs.upstackdata.com/cli/query-cohort Run a cohort analysis from the command line. Wraps POST /api/query-cohort-analysis. Run a cohort analysis — cohort an audience by acquisition period and analyze retention or LTV over time. Wraps `POST /api/query-cohort-analysis` — see the [API reference](/api-reference/introduction). ## Usage ```bash theme={null} upstack query-cohort \ --measures orders.ltv_cohort_gross_revenue \ --granularity week \ --date-start 2026-01-01 \ --date-end 2026-04-30 ``` ## Required flags | Flag | Description | | ----------------------------------------------------- | ---------------------------------------- | | `--measures <m1,m2,...>` | One or more cohort-specific measure ids. | | `--granularity <g>` | `week`, `month`, or `year`. | | `--date-start <YYYY-MM-DD>` `--date-end <YYYY-MM-DD>` | Date range. | ## Cohort-only measures This endpoint only accepts these measure ids: | Measure id | What it computes | | --------------------------------- | ------------------------------------- | | `orders.ltv_cohort_gross_revenue` | Cohorted gross revenue over time. | | `orders.ltv_cohort_net_revenue` | Cohorted net revenue (after refunds). | | `orders.customers_cohort` | Customer count per cohort. | | `orders.avg_order_value_cohort` | Cohort AOV. | | `orders.cohort_retention_percent` | Retention rate per cohort. | | `orders.cohort_cm1` / `cm2` | Cohort contribution margins. | ## Optional flags | Flag | Description | Default | | ------------------- | -------------------------------------------------------------------------------------------------------- | ------- | | `--filter <json>` | Canonical [Filter](/cli/query#filters) as JSON. `orders.*` fields apply in this context. | | | `--timezone <tz>` | IANA timezone. | `UTC` | | `--currency <code>` | ISO 4217 code to convert cohort money values to. See [Reporting currency](/concepts/reporting-currency). | `USD` | See [`upstack query`](/cli/query#shared-flags) for the shared output / interactive / from-file flags. Cohort results are always returned as JSON — other `--output` values print a warning and fall back to `json`. ## Examples ```bash theme={null} # Weekly LTV cohort upstack query-cohort \ --measures orders.ltv_cohort_gross_revenue,orders.cohort_retention_percent \ --granularity week \ --date-start 2026-01-01 --date-end 2026-04-30 # Interactive upstack query-cohort -i ``` # upstack saved Source: https://docs.upstackdata.com/cli/saved-queries Cache query parameters locally for reuse. Run, list, inspect, and delete saved queries. Cache query parameters locally for reuse. Saved queries live in `~/.upstack_saved/`, one JSON file per query. ## Subcommands ### `create <name>` ```bash theme={null} upstack saved create morning-report --command query --from-file ./params.json ``` | Flag | Description | | ---------------------- | --------------------------------------------------------------------------------------- | | `--command <c>` | Required. One of `query`, `query-attribution`, `query-cohort`, `query-channel-details`. | | `--from-file <path>` | JSON file with the query parameters. | | `--description <text>` | Optional description for the saved query. | | `--force` | Overwrite if a saved query with this name already exists. | You can also pass query parameters inline as flags (e.g. `--measures orders.gross_revenue`, `--date-start 2026-04-01`, `--filter '{"and":[...]}'`) — they're merged with the file values; flags override file values. Every query flag the underlying command accepts works here, including the attribution flags (`--dimension`, `--model`, `--window`, `--value-source`, `--conversion-event`) and, for `query-channel-details`, `--limit`, `--offset`, `--sort-by`, and `--sort-direction`. Run [`upstack filters --detail`](/cli/filters) to discover valid filter fields before constructing a `--filter` value. ### `list` ```bash theme={null} upstack saved list ``` ### `show <name>` Inspect a saved query without running it. ```bash theme={null} upstack saved show morning-report ``` ### `run <name>` Re-run a saved query. ```bash theme={null} upstack saved run morning-report upstack saved run morning-report --output csv --file ./today.csv # override output on the fly ``` Override parts of the saved query without editing it: | Flag | Description | | ----------------------------------------- | ------------------------------------------------------------------------------------ | | `--date-start <date>` `--date-end <date>` | Replace the saved date range (each end is kept independently if only one is passed). | | `--timezone <tz>` | Override the timezone. | | `--currency <code>` | Override the currency. | | `--output <format>` | `json`, `table`, or `csv`. | | `--file <path>` | Write output to a file instead of stdout. | Only the `output` [config default](/cli/config-defaults) applies to `run` — the saved parameters are passed through as stored. ### `delete <name>` ```bash theme={null} upstack saved delete morning-report ``` # How Attribution Models Measure Marketing Performance Source: https://docs.upstackdata.com/concepts/attribution-and-reporting Compare attribution models in Upstack Analytics — first-touch, last-touch, and multi-touch — and see how each assigns conversion credit across marketing channels for accurate ROAS reporting. Attribution is the practice of determining which marketing touchpoints deserve credit for a conversion — and by how much. <Tip> Merchants using Upstack Analytics report finding 15–30% of their ad spend allocated to channels that appear profitable in-platform but underperform when measured with independent multi-touch attribution. </Tip> ## Why It Matters Every ad platform marks itself as the hero. Meta claims the sale. Google claims the same sale. Klaviyo takes credit too. When you add up each platform's reported revenue, the total exceeds your actual revenue by 2–3x. This is the double-counting problem — and it makes budget allocation guesswork. The root cause is that ad platforms use self-attributed, last-click models scoped to their own ecosystem. They can't see the full customer journey, so they assign full credit to their own touchpoint. A shopper who clicked a Meta ad on Monday, a Google ad on Wednesday, and a Klaviyo email on Friday appears as three separate conversions across three dashboards. Independent attribution — measured from your own first-party data — eliminates double-counting. When you own the data pipeline from click to purchase, you can apply consistent models across every channel and allocate credit based on the actual customer journey, not each platform's self-serving view. ## How It Works Upstack Analytics operates at the **Understand** stage of the data pipeline. It queries the identity-resolved, enriched event stream stored in your analytics warehouse to build a unified view of each customer's journey. **Attribution models** determine how conversion credit is distributed: * **First-touch** — 100% credit goes to the touchpoint that originally acquired the customer. Useful for measuring top-of-funnel acquisition channels. * **Last-touch** — 100% credit goes to the final touchpoint before conversion. Mirrors how most ad platforms report by default. * **Linear (multi-touch)** — Credit is split equally across all touchpoints in the journey. Surfaces mid-funnel contributors that single-touch models ignore. * **Time-decay (multi-touch)** — Touchpoints closer to conversion receive more credit. Balances recency with full journey visibility. **Lookback windows** control how far back Upstack searches for qualifying touchpoints. A 7-day window attributes purchases only to clicks within the past week. A 28-day window captures longer consideration cycles common in higher-AOV stores. **Channel credit** aggregates touchpoint-level attribution up to the channel level (Meta, Google, Klaviyo, organic, direct) so you can compare true ROAS and CPA across your entire marketing mix in a single view. ## Key Terms | Term | Definition | | --------------------------------- | -------------------------------------------------------------------------------------------------------------- | | **Attribution model** | A rule set that determines how conversion credit is divided among marketing touchpoints. | | **First-touch attribution** | Assigns all credit to the first interaction in the customer journey. | | **Last-touch attribution** | Assigns all credit to the final interaction before conversion. | | **Multi-touch attribution (MTA)** | Distributes credit across multiple touchpoints based on a weighting rule (linear, time-decay, position-based). | | **Lookback window** | The time period within which touchpoints are eligible for attribution credit. | | **ROAS (Return on Ad Spend)** | Revenue generated per dollar of ad spend — the primary efficiency metric for paid channels. | <CardGroup> <Card title="Analytics Dashboard Guide" icon="chart-line" href="/analytics/query-guide"> Walk through the Upstack Analytics dashboard and its key reports. </Card> <Card title="Identity Resolution" icon="fingerprint" href="/pixel/identity-resolution"> Learn how Upstack ID builds the unified customer journey that attribution depends on. </Card> </CardGroup> # How Conversion API Forwarding Improves Ad Platform Signal Quality Source: https://docs.upstackdata.com/concepts/conversion-api-forwarding Forward conversion events to Meta CAPI, TikTok, Google Ads, and other ad platforms via server-to-server delivery with strong match keys — improving EMQ scores and Smart Bidding signal. Conversion API forwarding sends your store's conversion events directly from Upstack's servers to ad platform servers — bypassing the browser entirely and delivering the identity signals that algorithms need to optimize. <Tip> Merchants forwarding through Upstack Signal consistently achieve Meta Event Match Quality (EMQ) scores of 8.0+ across all standard events, compared to the 3–5 range typical of browser pixels alone. </Tip> ## Why It Matters Ad platforms like Meta and TikTok have shifted to server-side conversion APIs as the primary signal source for their bidding algorithms. Meta's Conversions API (CAPI), TikTok's Events API, and similar endpoints now carry more weight than browser pixels in auction optimization and measurement. But sending events to these APIs is only half the problem. What matters is **signal quality** — how well each event can be matched back to a user on the ad platform. Meta quantifies this as Event Match Quality (EMQ), a 1–10 score reflecting how many match keys (hashed email, phone, IP, user agent, click ID) are present on each event. A PageView with only IP and user agent might score a 3. A Purchase with hashed email, phone, and `fbclid` scores a 9. Low EMQ means the platform can't attribute conversions to ad clicks, so your reported ROAS drops, your Custom Audiences shrink, and the algorithm loses the feedback loop it needs to find more buyers. Upstack Signal solves this by combining identity-resolved events with a full set of match keys before delivery. ## How It Works Upstack Signal operates at the **Activate** stage of the data pipeline. After events have been captured (Upstack Pixel), resolved (Upstack ID), and enriched (Upstack Enrichment), Signal formats and delivers them to each configured destination. The forwarding process follows three steps: 1. **Match key assembly** — Upstack attaches every available identifier to the event: hashed email (`em`), hashed phone (`ph`), first-party click IDs (`fbclid`, `ttclid`), IP address, user agent, and external ID. Identity resolution ensures these fields are populated even for events that were originally anonymous. 2. **Schema transformation** — Each destination has its own event schema. Upstack Signal maps your canonical events to the exact format each API expects — `Purchase` becomes a Meta `Purchase` event with `value`, `currency`, and `content_ids` in the right structure. 3. **Reliable delivery** — Events are queued via SQS with automatic retry and dead-letter handling. If Meta's API returns a transient error, the event is retried with exponential backoff. Permanent failures are logged for troubleshooting without data loss. Delivery is server-to-server. No browser tag, no JavaScript, no ad blocker risk. ## Key Terms | Term | Definition | | ----------------------------- | ------------------------------------------------------------------------------------------------------------------- | | **Conversion API (CAPI)** | A server-to-server interface for sending conversion events to an ad platform (e.g., Meta Conversions API). | | **Event Match Quality (EMQ)** | Meta's 1–10 score reflecting how well an event's identity signals match a Facebook user profile. | | **Match keys** | Hashed identity fields (email, phone, address) attached to each event to enable ad platform matching. | | **Click ID** | A platform-specific parameter (`fbclid`, `ttclid`, `gclid`) appended to ad URLs that links a click to a conversion. | | **Dead-letter queue** | A queue where events that fail delivery after all retries are stored for inspection. | <CardGroup> <Card title="Set Up Meta CAPI" icon="meta" href="/quickstart/connect-a-destination"> Connect Upstack Signal to Meta's Conversions API step by step. </Card> <Card title="Destinations Overview" icon="bullseye-arrow" href="/destinations/catalog/overview"> See all supported forwarding destinations and their configuration options. </Card> </CardGroup> # How Data Enrichment Strengthens Events and Customer Profiles Source: https://docs.upstackdata.com/concepts/data-enrichment Enrich tracking events with customer metadata, identity match keys, and contextual data to improve destination match quality, attribution accuracy, and downstream analytics. Data enrichment appends additional context — customer metadata, geographic data, and behavioral attributes — to raw events and identity profiles before they reach destinations or your analytics warehouse. <Tip> Enriched events carry more match keys, which directly raises Event Match Quality (EMQ) scores on platforms like Meta — turning a 5 into an 8 without changing your tracking setup. </Tip> ## Why It Matters A raw event captured at the edge contains the basics: URL, timestamp, IP address, user agent, and whatever identifiers the visitor volunteered. That's enough to record that *something* happened, but it's not enough for downstream systems to do their best work. Conversion APIs score events based on match key completeness. An `AddToCart` event with only an IP address and user agent will match poorly on Meta. The same event enriched with hashed email, phone number, city, and zip code matches at a significantly higher rate — improving both reported conversions and algorithm optimization. Enrichment also improves your own analytics. Customer lifetime value calculations become more accurate when events carry purchase history and order frequency. Segmentation becomes more granular when profiles include geographic and behavioral attributes. Every system downstream of enrichment — forwarding, attribution, reporting — benefits from richer input data. ## How It Works Upstack Enrichment operates at the **Enrich** stage of the data pipeline, after identity resolution and before forwarding or warehouse storage. Enrichment draws from three sources: * **Identity graph** — Once Upstack ID resolves a visitor, Enrichment pulls all known identifiers associated with that profile (email, phone, address) and attaches them to the current event. An anonymous `PageView` gains match keys from a previous checkout on another device. * **Shopify customer data** — Order history, customer tags, total spend, and order count are synced from Shopify and attached to resolved profiles. These fields feed both forwarding destinations (as customer parameters) and analytics (for cohort and LTV calculations). * **Event context** — Geographic data derived from IP (city, region, country, postal code), device classification (mobile, desktop, tablet), and referrer parsing (UTM parameters, landing page) are appended to every event at processing time. Enrichment is automatic. Once Upstack Pixel is capturing events and Upstack ID is resolving identities, every event flowing through the pipeline is enriched before it reaches any destination or warehouse table. ## Key Terms | Term | Definition | | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------ | | **Match key** | A hashed identity field (email, phone, address) used by ad platforms to link a conversion event to a user profile. | | **Customer metadata** | Attributes from Shopify (total spend, order count, customer tags) attached to a resolved identity profile. | | **Event context** | Non-identity attributes appended at processing time: geography, device type, UTM parameters, referrer. | | **Profile enrichment** | The process of augmenting an identity graph node with additional data from first-party and platform sources. | | **EMQ (Event Match Quality)** | Meta's score reflecting how well an event's identity signals can be matched to a user — directly improved by enrichment. | <CardGroup> <Card title="Conversion API Forwarding" icon="arrow-right-arrow-left" href="/concepts/conversion-api-forwarding"> See how enriched events improve signal quality when forwarded to ad platforms. </Card> <Card title="Identity Resolution" icon="fingerprint" href="/pixel/identity-resolution"> Understand the identity layer that enrichment depends on. </Card> </CardGroup> # Destinations vs data sources: a complete guide Source: https://docs.upstackdata.com/concepts/destinations-vs-data-sources Destinations send data to ad platforms and email tools; data sources pull data from them. Configure both to power unified attribution, ROAS reporting, and event enrichment in Upstack Data. Two of the most important concepts in Upstack Data are **destinations** and **data sources** (referred to in the dashboard as **Sources**). They sound similar but serve opposite functions — and understanding the difference is essential for setting up your account correctly and getting accurate attribution data. ## The core distinction <CardGroup> <Card title="Destinations" icon="arrow-right-from-bracket" href="/destinations/catalog/overview"> Platforms Upstack **sends** event data **to**. When a customer views a product, adds to cart, or purchases, Upstack captures the event, enriches it with identity data, and pushes it to your destinations via server-side APIs. </Card> <Card title="Data sources (Sources)" icon="arrow-right-to-bracket" href="/sources/catalog/overview"> Platforms Upstack **pulls** data **from** for reporting and analytics. To show which campaigns are driving revenue and at what cost, Upstack pulls in your ad spend, impressions, and click data from each platform. </Card> </CardGroup> Think of it this way: * **Destinations** = Upstack pushing data **OUT** (events going to ad platforms and marketing tools). * **Sources** = Upstack pulling data **IN** (spend and performance data for your dashboard). ## Why the distinction matters You might wonder why these are separate. After all, Meta is both a destination (Upstack sends purchase events to it) and a source (Upstack pulls spend data from it). They're configured separately because they serve different purposes and require different permissions: * **Sending events** (destination) requires write access to a platform's conversion API — like [Meta CAPI](/destinations/catalog/meta-capi) or [Google Ads](/destinations/catalog/google-ads) offline conversions. This is about feeding the ad platform real-time conversion data for optimization. * **Pulling spend data** (source) requires read access to a platform's reporting API. This is about bringing performance data into Upstack's [attribution dashboard](/concepts/attribution-and-reporting) so you can see the full picture in one place. You can connect a platform as a destination without connecting it as a source, and vice versa. But for the complete picture — events flowing out and spend data flowing in — you'll want both. ## Available destinations Destinations receive enriched event data from Upstack via server-side APIs. Each destination gets relevant ecommerce events along with identity parameters for user matching. | Destination | API used | Events sent | Identity data sent | | -------------- | ------------------------------ | ----------------------------------------------------------------- | ---------------------------------------------------------- | | **Meta CAPI** | Conversions API | Purchase, AddToCart, ViewContent, InitiateCheckout, custom events | Hashed email, phone, name, IP, user agent, `fbclid`, `fbp` | | **Google Ads** | Offline / Enhanced Conversions | Purchase, conversion events | `gclid`, hashed email, phone | | **TikTok** | Events API | Purchase, AddToCart, ViewContent, funnel events | Hashed email, phone, IP, user agent, `ttclid` | | **Pinterest** | Conversions API | Purchase, AddToCart, ViewContent | Hashed email, click ID, IP, user agent | | **Klaviyo** | Klaviyo API | Browse, cart, purchase events for flow triggering | Email, customer properties, event metadata | | **Snapchat** | Conversions API | Purchase, conversion events | Hashed email, phone, IP, click ID | | **Omnisend** | Omnisend API | Browse, cart, purchase events | Email, customer properties, event metadata | | **Webhooks** | Custom HTTP | Any configured event | Full enriched payload | <Note> GA4 is no longer a supported destination for new connections and is being deprecated. </Note> ## Available data sources Data sources provide Upstack with the information it needs to build your attribution dashboard and calculate key metrics like ROAS. | Data source | Data pulled | Used for | | -------------------------------------------------------- | ----------------------------------------------------------------- | -------------------------------------------------------------------------------------- | | **[Shopify](/sources/catalog/shopify)** | Orders, revenue, products, customer data, refunds | Revenue attribution, order-level reporting, customer classification (new vs returning) | | **[Facebook Ads (Meta)](/sources/catalog/facebook-ads)** | Campaign spend, impressions, clicks, campaign/ad set/ad structure | ROAS calculation, spend-to-revenue comparison, campaign-level attribution | | **[Google Ads](/sources/catalog/google-ads)** | Campaign spend, impressions, clicks, campaign structure | ROAS calculation, spend-to-revenue comparison, campaign-level attribution | | **[TikTok](/sources/catalog/tiktok)** | Campaign spend, impressions, clicks, campaign structure | ROAS calculation, spend-to-revenue comparison, campaign-level attribution | ## How they work together The real power of Upstack comes from destinations and sources working in tandem: <Steps> <Step title="Events go OUT via destinations"> A customer makes a purchase. Upstack captures the event, enriches it with identity data, and sends it to Meta via CAPI, Google via offline conversions, and any other connected destinations. </Step> <Step title="Spend data comes IN via sources"> Upstack pulls your daily ad spend, campaign structure, and performance metrics from Meta, Google, TikTok, and Shopify. </Step> <Step title="The attribution dashboard combines both"> Upstack's [Analytics](/concepts/attribution-and-reporting) matches revenue from Shopify orders (attributed through its own model) against spend data from your ad platforms. This gives you a unified view: how much you spent on each channel, how much revenue each channel drove, and your true ROAS — without relying on each platform's self-reported numbers. </Step> </Steps> Without destinations connected, your ad platforms don't receive enriched conversion data and can't optimize effectively. Without sources connected, your Upstack dashboard can't show spend or calculate ROAS. You need both for the full picture. ## Setup priority order If you're configuring Upstack for the first time, here's the recommended order: <Steps> <Step title="Phase 1 — Critical (Day 1)"> 1. **Meta as a destination** — get enriched events flowing to your highest-spend platform. 2. **Google Ads as a destination** — second-highest priority for most brands. 3. **Shopify as a source** — usually connected automatically during installation. See [Connect a destination](/quickstart/connect-a-destination) for the step-by-step. </Step> <Step title="Phase 2 — Important (Day 1–2)"> 4. **Meta as a source** — pull spend data so your dashboard can calculate ROAS. 5. **Google Ads as a source** — same reason. 6. **Klaviyo as a destination** — if you use Klaviyo for email/SMS marketing. </Step> <Step title="Phase 3 — Expand (Week 1)"> 7. **TikTok, Pinterest, Snapchat, Omnisend as destinations** — connect any additional platforms you advertise on or use for marketing automation. 8. **TikTok as a source** — to see TikTok spend in your dashboard alongside Meta and Google. </Step> </Steps> ## Common confusion <AccordionGroup> <Accordion title="I connected Facebook — why don't I see spend data?"> Connecting Facebook as a **destination** ([Meta CAPI](/destinations/catalog/meta-capi)) only sets up event sending. You also need to connect [Facebook Ads as a source](/sources/catalog/facebook-ads) to pull in spend and campaign data for your attribution dashboard. </Accordion> <Accordion title="My attribution dashboard shows revenue but no ROAS"> ROAS requires both revenue data (from Shopify) and spend data (from ad platform sources). If you haven't connected your ad platforms as sources, Upstack can't calculate ROAS. See [Attribution and reporting](/concepts/attribution-and-reporting). </Accordion> <Accordion title="Do I need to connect Shopify as a destination?"> No. Shopify is a **source** — Upstack pulls order data from it. Shopify isn't a destination because you don't send tracking events to Shopify; events originate from Shopify. </Accordion> </AccordionGroup> ## Frequently asked questions <AccordionGroup> <Accordion title="Can a platform be both a destination and a source?"> Yes. Meta, Google Ads, and TikTok are all both destinations (Upstack sends events to them) and sources (Upstack pulls spend data from them). They're configured separately because they use different APIs and permissions. </Accordion> <Accordion title="What happens if I only connect destinations but not sources?"> Your ad platforms will receive enriched event data and optimize more effectively, but your Upstack attribution dashboard won't be able to show spend or calculate ROAS. You'll still see revenue attribution, but without the cost side of the equation. </Accordion> <Accordion title="What happens if I only connect sources but not destinations?"> Your Upstack dashboard will show spend data, but your ad platforms won't receive enriched server-side events from Upstack. You'd miss out on improved match quality, better optimization signals, and the core value of server-side tracking. </Accordion> <Accordion title="Do sources update in real time?"> Ad spend data is typically pulled on a regular schedule (daily or more frequently) rather than in real time. There may be a short delay between when spend occurs on the ad platform and when it appears in your Upstack dashboard. </Accordion> </AccordionGroup> ## Related <CardGroup> <Card title="Destinations overview" icon="arrow-right-from-bracket" href="/destinations/catalog/overview"> Every supported destination and its configuration options. </Card> <Card title="Sources overview" icon="arrow-right-to-bracket" href="/sources/catalog/overview"> Every supported data source and how each one is connected. </Card> <Card title="Connect a destination" icon="plug" href="/quickstart/connect-a-destination"> Step-by-step setup for your first destination. </Card> <Card title="Attribution and reporting" icon="chart-line" href="/concepts/attribution-and-reporting"> How Upstack combines event data and spend data to attribute revenue. </Card> <Card title="What are destinations?" icon="circle-question" href="/what-are-destinations"> A focused deep-dive on destinations. </Card> <Card title="What are data sources?" icon="circle-question" href="/what-are-data-sources"> A focused deep-dive on sources. </Card> </CardGroup> # How post-purchase upsells are tracked Source: https://docs.upstackdata.com/concepts/how-post-purchase-upsells-are-tracked How Upstack Data tracks post-purchase upsells, subscription renewals, quiz and lead events, and custom events without double-counting conversions. If you use a post-purchase upsell app (AfterSell, Zipify, Funnelish, and similar), the upsell creates a separate Shopify order after the original purchase. Since the purchase event has already been sent to your ad platform, its value can't be updated. Upstack Data handles this by: 1. Sending the original purchase event with the original order value at checkout. 2. Blocking the upsell order from being sent as a second purchase event. 3. Firing a separate **Upsell Purchase** custom event with only the upsell amount. This prevents double-counting while still capturing upsell value separately. <Tip> To see total ROAS including upsells, create a custom metric in Meta Ads Manager that adds Purchase value and Upsell Purchase value together, then divides by original purchase count — giving you a blended AOV and ROAS. </Tip> <Note> **Why not send the combined value?** The purchase event fires at checkout, before the upsell offer is presented. There's no way to wait for the upsell decision without losing browser-side tracking data, and sending a second standard purchase would cause duplicates. The separate event is the cleanest approach. </Note> ## How subscription renewals are tracked For stores using subscription apps (Loop, Skio, ReCharge, Bold, and similar), Upstack separates initial purchases from renewals: * **Initial subscription purchase** — sent as a standard Purchase event, attributed normally. * **Recurring payments** — automatically excluded from ad platforms. Sending them as standard purchases would inflate reported conversions and misrepresent campaign performance. In your Upstack dashboard, total revenue includes both initial and recurring payments. The exclusion only applies to what's sent to ad platforms as an attribution signal. ## Quiz funnels and custom lead events If your store uses a quiz funnel, Upstack Data can send events at each stage: * **Quiz Question Answered** — fires for each question answered. * **Quiz Completed** — fires when the visitor finishes the quiz. * **Quiz Lead** — fires when the visitor submits their email. These events help ad platforms identify high-intent visitors and find similar audiences. You can also assign dollar values to prioritize higher-value prospects. Quiz events require your developer to implement triggers on your site. Upstack Data provides the event schema; your team wires it into the quiz flow. ## Event mapping for restricted categories For stores in restricted categories (health and wellness, CBD, supplements), Facebook may flag or restrict accounts that send certain product data. Upstack Data mitigates this by stripping sensitive information — such as product titles, URLs, and product paths — from events sent to Meta. This reduces the risk of account flags while maintaining event match quality through other identifiers (email, phone, IP, External ID). ## Do I need to rebuild my campaigns for custom events? No. Custom events are sent alongside standard events, so your campaigns can continue optimizing for Purchase. Events like NC Purchase and Upsell Purchase appear as additional Ads Manager columns for reporting. You only need a new campaign if you want to optimize toward a specific custom event. <Note> Need help setting up quiz events, understanding custom event data, or configuring upsell tracking? Reach out to our support team. </Note> ## Related guides <CardGroup> <Card title="Install Upstack on Shopify" icon="shop" href="/quickstart/install-on-shopify"> Set up the Upstack Data tracking pixel on your Shopify store. </Card> <Card title="Connect a destination" icon="plug" href="/quickstart/connect-a-destination"> Forward upsell and purchase events to Meta, TikTok, and other ad platforms. </Card> <Card title="Custom events" icon="bolt" href="/guides/custom-events/how-to-create-custom-event-triggers"> Learn how to send custom events like quiz completions and leads. </Card> <Card title="Event taxonomy" icon="list" href="/event-tracking/event-taxonomy"> Understand all standard events Upstack tracks, including Purchase and Upsell Purchase. </Card> </CardGroup> # Upstack Data Platform Architecture Source: https://docs.upstackdata.com/concepts/platform-architecture A technical overview of how Upstack Data's infrastructure processes marketing events — from Cloudflare edge capture through identity resolution, enrichment, forwarding, and analytics. Upstack Data is a five-stage pipeline that captures raw storefront events, resolves visitor identities, enriches events with customer context, forwards high-quality signals to ad platforms, and stores everything in an analytics warehouse you can query. <Tip> Understanding the pipeline architecture helps you diagnose where data quality issues originate and how each Upstack product contributes to your marketing data stack. </Tip> ## Why It Matters Most marketing data stacks are assembled from disconnected tools — a pixel here, a CAPI integration there, a separate analytics platform. Each tool operates on its own copy of the data, with its own identity model, its own event schema, and its own gaps. Upstack replaces that patchwork with a single pipeline. Every event flows through the same sequence of stages, accumulating identity and context at each step. This means your conversion APIs receive the same enriched events that your attribution models analyze — no reconciliation, no duplicate schemas, no conflicting identity logic. A unified pipeline also makes debugging straightforward. If a conversion isn't appearing in Meta, you can trace the event from capture through resolution, enrichment, and forwarding to pinpoint exactly where the signal was lost. ## How It Works The pipeline has five stages, each handled by a dedicated Upstack product. ```mermaid theme={null} flowchart LR A["🏪 Shopify\nStorefront"] --> B["⚡ Upstack Pixel\n(Cloudflare Edge)"] B --> C["🔗 Upstack ID\n(Identity Resolution)"] C --> D["📦 Upstack Enrichment\n(Data Enrichment)"] D --> E["📡 Upstack Signal / Flows\n(Forwarding)"] D --> F["📊 Upstack Analytics\n(Warehouse & Reporting)"] ``` ### 1. Capture — Upstack Pixel Shopper interactions on your Shopify storefront generate events (page views, add-to-cart, checkout, purchase). The Upstack theme extension sends these as first-party requests to **Cloudflare Workers** at the edge. Bot traffic is filtered, a durable first-party cookie is set, and events are normalized into a canonical schema. Latency is sub-50 ms with zero impact on storefront performance. ### 2. Resolve — Upstack ID Raw events enter the **AWS backend** where the identity resolution engine matches anonymous sessions to known customers. Deterministic matching (email, phone, login) creates hard links. Session stitching retroactively attributes anonymous events once a visitor identifies themselves. Cross-device linking merges profiles when the same identifier appears on multiple devices. ### 3. Enrich — Upstack Enrichment Resolved events are augmented with customer metadata from Shopify (order history, LTV, customer tags), geographic context from IP geolocation, and all available identity fields from the identity graph. After this stage, events carry the full set of match keys needed for high-quality forwarding. ### 4. Activate — Upstack Signal & Upstack Flows Enriched events are queued via **Amazon SQS** and delivered server-to-server to configured destinations: Meta CAPI, TikTok Events API, Google, Klaviyo, Pinterest, Snapchat, and others. Upstack Flows handles Klaviyo-specific flow recovery. Each destination adapter transforms events into the platform's required schema. Delivery includes automatic retry with exponential backoff and dead-letter queues for failed events. ### 5. Understand — Upstack Analytics Every event is also written to **SingleStore**, a high-performance analytics database. Upstack Analytics queries this warehouse to build attribution reports, calculate ROAS by channel, and surface customer journey insights — all from the same identity-resolved, enriched events that your destinations received. ## Infrastructure Summary | Layer | Technology | Role | | ----------------------- | ------------------- | ----------------------------------------------------------- | | **Edge** | Cloudflare Workers | Event capture, bot filtering, cookie management | | **Compute** | AWS Lambda | Identity resolution, enrichment, forwarding, API handlers | | **Queue** | Amazon SQS | Async event delivery with retry and dead-letter handling | | **Identity store** | PostgreSQL, Neptune | Identity graph storage and traversal | | **Analytics warehouse** | SingleStore | High-speed analytical queries for attribution and reporting | | **Configuration** | DynamoDB | Destination configs, account settings, subscription data | ## Key Terms | Term | Definition | | --------------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Edge layer** | The Cloudflare-based infrastructure that captures events close to the visitor for low-latency, high-reliability collection. | | **Canonical schema** | The standardized event format used internally across all pipeline stages. | | **Dead-letter queue** | A holding queue for events that fail delivery after all retry attempts, preserving data for debugging. | | **Identity graph** | The data structure mapping all known identifiers to unified customer profiles. | | **Match keys** | Hashed identity fields attached to events that ad platforms use to link conversions to user profiles. | <CardGroup> <Card title="Server-Side Tracking" icon="server" href="/concepts/server-side-tracking"> Deep dive into the Capture stage. </Card> <Card title="Identity Resolution" icon="fingerprint" href="/pixel/identity-resolution"> Deep dive into the Resolve stage. </Card> <Card title="Data Enrichment" icon="layer-plus" href="/concepts/data-enrichment"> Deep dive into the Enrich stage. </Card> <Card title="Conversion API Forwarding" icon="arrow-right-arrow-left" href="/concepts/conversion-api-forwarding"> Deep dive into the Activate stage. </Card> <Card title="Attribution & Reporting" icon="chart-mixed" href="/concepts/attribution-and-reporting"> Deep dive into the Understand stage. </Card> <Card title="Install Upstack Pixel" icon="rocket" href="/quickstart/install-on-shopify"> Get started with the first pipeline stage. </Card> </CardGroup> # How reporting currency works Source: https://docs.upstackdata.com/concepts/reporting-currency How Upstack converts orders and ad spend into one reporting currency using historical daily exchange rates — and which numbers stay in their own currency. If you sell in more than one currency, the raw numbers can't simply be added together. Upstack converts every money value into one **reporting currency** before totalling it, so a revenue figure always means one thing. <Tip> Set your reporting currency in **Settings → Account**. Every dashboard query uses it, so the numbers you see are already converted. </Tip> ## Rates are historical, not current Each amount is converted at the rate for **the day that amount happened** — the order's date for revenue and costs, the spend date for ad spend. That makes reports reproducible: run the same April report in June and you get the same numbers you got in April. ## Ad account budgets are different Budget figures — daily budget, budget remaining, amount spent — aren't tied to a single date the way an order is. They're converted at **today's rate**, and each row keeps the ad account's own currency alongside. ## What doesn't get converted * **Counts and percentages** — order counts, sessions, conversion % have no currency. * **Ratios built from money** — ROAS, MER, CPA, CPM are computed from already-converted amounts, so they come out the same whichever currency you use. ## Costs you enter yourself Most costs — order fees, payment processing fees, shipping, fixed and recurring costs — let you pick the currency you actually pay them in. Per-variant **product costs** are the exception: they're always in your shop currency. Everything is converted when it appears in reports, so changing your reporting currency never rewrites what you entered. ## Related <CardGroup> <Card title="Timezones" icon="clock" href="/concepts/timezones"> The companion setting — which calendar day a row belongs to. </Card> <Card title="Cost settings" icon="coins" href="/analytics/cost-settings"> Where you enter costs, each in its own currency. </Card> </CardGroup> # What Is Server-Side Tracking and Why Does It Matter? Source: https://docs.upstackdata.com/concepts/server-side-tracking Server-side tracking captures accurate marketing data despite ad blockers, iOS privacy changes, and browser restrictions — outperforming client-side pixels for ad attribution and ROAS. Server-side tracking moves data collection from the visitor's browser to a server you control, eliminating the reliability problems that plague traditional JavaScript pixels. <Tip> Stores using Upstack Pixel's server-side tracking typically recover 20–40% of events that client-side scripts miss due to ad blockers and Intelligent Tracking Prevention (ITP). </Tip> ## Why It Matters Traditional client-side pixels depend on JavaScript executing inside a visitor's browser. That model is breaking. Safari's ITP caps cookie lifetimes at 7 days (or 24 hours for link-decorated traffic). Firefox blocks known trackers by default. Ad blockers strip tracking scripts before they load. iOS 14.5+ App Tracking Transparency further limits signal availability across the Apple ecosystem. For Shopify merchants, every lost event is a lost signal — attribution gaps widen, retargeting audiences shrink, and ad platform algorithms receive incomplete conversion data. The downstream cost compounds: Meta's algorithm optimizes toward the wrong audience, ROAS reporting becomes unreliable, and you over-invest in channels that only *appear* to perform. Server-side tracking sidesteps these problems entirely. Because the data collection happens at the server layer — outside the browser sandbox — ad blockers, cookie restrictions, and JavaScript failures have no effect on data capture. ## How It Works Upstack Pixel operates at the **Capture** stage of the data pipeline. When a shopper interacts with your Shopify storefront, the Upstack theme extension fires lightweight first-party requests to Cloudflare's edge network — the same infrastructure that serves your site assets. At the edge, Upstack performs three critical steps before the event enters the pipeline: 1. **Bot filtering** — Known bot signatures and suspicious traffic patterns are stripped so only human interactions proceed. 2. **First-party cookie management** — A durable first-party cookie is set under your store's domain, immune to ITP restrictions because it is issued server-side. 3. **Event normalization** — Raw interaction data is transformed into a canonical event schema, ready for identity resolution and forwarding downstream. Because Cloudflare Workers execute in the same data center region as the visitor, latency stays under 50 ms and has zero impact on storefront performance. ## Key Terms | Term | Definition | | ----------------------------------------- | ----------------------------------------------------------------------------------------------------- | | **Client-side pixel** | A JavaScript tag running in the visitor's browser — vulnerable to blockers and cookie restrictions. | | **Server-side tracking** | Data collection handled by a server, outside the browser sandbox. | | **ITP (Intelligent Tracking Prevention)** | Apple's Safari feature that limits cookie lifetimes and blocks cross-site tracking. | | **First-party cookie** | A cookie set under your store's own domain, subject to fewer restrictions than third-party cookies. | | **Bot filtering** | Automated removal of non-human traffic before events enter your data pipeline. | | **Edge network** | A globally distributed server layer (Cloudflare) where Upstack processes events close to the visitor. | <CardGroup> <Card title="Quick Start: Install Upstack Pixel" icon="rocket" href="/quickstart/install-on-shopify"> Get server-side tracking running on your Shopify store in under 10 minutes. </Card> <Card title="Events Taxonomy" icon="list-tree" href="/event-tracking/event-taxonomy"> See every event Upstack Pixel captures and its schema. </Card> </CardGroup> # How Timezones Work in Upstack Data Source: https://docs.upstackdata.com/concepts/timezones Learn how Upstack Data handles timezones across your dashboard, reports, and integrations — and how to configure your preferred timezone. Upstack Data uses your configured timezone to display all dates and times throughout the dashboard. This ensures your analytics, reports, and date filters align with your business hours. <Tip> During onboarding, Upstack automatically detects your timezone from your Shopify store (if connected) or your browser. You can change it anytime in Settings. </Tip> ## How Timezones Affect Your Dashboard Your timezone setting determines how dates and times appear across Upstack Data: * **Date filters** — When you select "Today" or "Last 7 Days," the boundaries are calculated in your configured timezone. * **Charts and reports** — Daily metrics roll up at midnight in your timezone, so revenue attributed to "June 1" reflects orders placed between 12:00 AM and 11:59 PM in your local time. * **Event timestamps** — Individual events display in your timezone for easier interpretation. * **Scheduled reports** — Any automated reports use your timezone for "daily" boundaries. <Note> Your data is stored internally in UTC for accuracy and consistency. The timezone setting only controls how that data is displayed to you. </Note> ## Timezone Detection When you first set up Upstack Data, the system automatically detects your timezone: | Condition | Detected Timezone | | --------------------------- | ------------------------------------- | | **Shopify store connected** | Your Shopify store's timezone setting | | **No Shopify connection** | Your browser's local timezone | This automatic detection ensures your dashboard immediately reflects your business's operating hours without manual configuration. ## Configuring Your Timezone You can view and change your timezone at any time from the dashboard settings. ### Where to Find Timezone Settings 1. Click **Settings** in the left sidebar 2. Select **Dashboard** 3. Locate the **Timezone** dropdown 4. Select your preferred timezone from the list 5. Click **Save Changes** The timezone list includes all standard IANA timezone identifiers (e.g., `America/New_York`, `Europe/London`, `Asia/Tokyo`). You can search by city name or region to quickly find your timezone. ## Ad Platform Data and Timezones When Upstack Data pulls performance data from your connected ad platforms (Meta, Google, TikTok, etc.), each platform reports metrics in the ad account's configured timezone. Upstack normalizes this data to UTC internally, then displays it in your configured timezone. This means your dashboard shows a unified view regardless of how each ad platform is configured — all metrics appear in your chosen timezone. ## Common Questions <AccordionGroup> <Accordion title="What happens if I change my timezone?"> Changing your timezone updates how existing data is displayed. The underlying data remains unchanged — only the presentation shifts. For example, if you switch from Pacific Time to Eastern Time, an event that appeared at "9:00 PM" will now show as "12:00 AM" the next day. </Accordion> <Accordion title="Should my timezone match my Shopify store?"> In most cases, yes. Matching timezones ensures your Upstack revenue reports align with Shopify's reporting, making reconciliation straightforward. If your business operates across multiple timezones, choose the timezone where most decisions are made or where your headquarters is located. </Accordion> <Accordion title="Does timezone affect attribution?"> Timezone affects when conversion windows begin and end. A 7-day attribution window starting "today" uses your configured timezone to determine the boundary. For consistency, keep your timezone setting stable once configured. </Accordion> <Accordion title="Why is my data showing a different date than expected?"> This usually happens when your Upstack timezone differs from your ad platform or Shopify timezone. An order placed at 11 PM Eastern on June 1 would appear as June 2 in a Pacific Time dashboard. Aligning your timezone setting typically resolves these discrepancies. </Accordion> </AccordionGroup> <CardGroup> <Card title="Attribution Reporting" icon="chart-line" href="/analytics/attribution-reporting"> Understand how Upstack Data attributes revenue to marketing touchpoints. </Card> <Card title="Analytics Query Guide" icon="magnifying-glass-chart" href="/analytics/query-guide"> Learn how to query and analyze your marketing data. </Card> <Card title="Reporting Currency" icon="money-bill-transfer" href="/concepts/reporting-currency"> See how money values are converted, and why the day a row belongs to decides its exchange rate. </Card> </CardGroup> # Tracking Method: how events reach each destination Source: https://docs.upstackdata.com/concepts/tracking-method Every destination can get events from the visitor's browser, from Upstack's servers, or both. What each option means and when to change it. Every destination has a **Tracking Method** setting. It controls how that one destination receives your events. There are three options. **Browser + Server** (default, recommended). Upstack does two things. It loads the destination's own tracking tag on your store, and it sends the same events to the destination from Upstack's servers. The destination sees the event twice, matches the two copies, and counts one conversion. **Server.** Upstack sends events to the destination from its servers. The destination's tag never loads on your store. **Browser.** Upstack only loads the destination's tag. The tag reports events from the visitor's browser, the same way it would if you had installed it yourself. Not every destination offers all three options. The main destinations have all three modes; some have fewer. Check the destination's page in the [destinations catalog](/destinations/catalog) to see which options it supports. <Warning> Changing this setting never turns off Upstack tracking. Your dashboards, reports, and every other destination keep working exactly as before. It only changes how this one destination gets its events. </Warning> ## Which option to pick **Browser + Server** is the recommended way to run every destination, and it is the default. The browser path can be blocked by ad blockers and browser privacy settings. The server path cannot. With both running, a blocked browser event still arrives from the server. Switch to **Server** if you don't want the destination's tag loading in the browser. ## Questions <AccordionGroup> <Accordion title="I changed the setting but my store still loads the tag."> It takes some time for the change to fully roll out to your store. Wait, reload your store, and check again. If it still hasn't changed, [contact support](/troubleshooting/support). </Accordion> </AccordionGroup> ## Related <CardGroup> <Card title="Server-side tracking" icon="server" href="/concepts/server-side-tracking"> Why sending events from a server is more reliable than sending them from a browser. </Card> <Card title="All destinations" icon="grid-2" href="/destinations/catalog"> Every destination Upstack can send events to. </Card> </CardGroup> # Measures and Dimensions Reference Source: https://docs.upstackdata.com/data-dictionary/measures-and-dimensions Reference of every measure (numeric metric) and dimension (groupable attribute) in Upstack Analytics — definitions, calculation logic, valid combinations, and the events each is derived from. Measures and dimensions are the building blocks of every Upstack Analytics query. **Measures** are the numeric values you calculate (revenue, event counts, conversion rates). **Dimensions** are the categories you group by (date, traffic source, device type). <Tip> Start with a measure you care about (e.g., Revenue), add a dimension to break it down (e.g., `utm_source`), and apply filters to focus your analysis. Most useful reports use 1–2 measures and 1–2 dimensions. </Tip> ## Measures Measures are aggregate calculations across your event data. Select one or more measures in the query builder to define what you want to calculate. <Tip> Need a metric that isn't listed here? Build your own from a formula over these measures with [Custom Measures](/analytics/custom-measures). </Tip> | Name | Type | Description | Unit | | ----------------------- | ------- | ------------------------------------------------------------------------------------------ | ------------------------ | | `total_events` | measure | Total count of events matching the query filters. | count | | `unique_visitors` | measure | Count of distinct resolved identities (or anonymous session IDs for unresolved visitors). | count | | `sessions` | measure | Count of distinct browsing sessions. A session ends after 30 minutes of inactivity. | count | | `page_views` | measure | Count of PageView events. | count | | `purchases` | measure | Count of Purchase events. | count | | `revenue` | measure | Sum of `value` from Purchase events. | currency (store default) | | `conversion_rate` | measure | Ratio of sessions with at least one Purchase to total sessions. Expressed as a percentage. | percentage | | `avg_order_value` | measure | Mean `value` across Purchase events. Calculated as `revenue / purchases`. | currency (store default) | | `bounce_rate` | measure | Percentage of sessions with only a single PageView and no further interaction. | percentage | | `session_duration` | measure | Average time between the first and last event in a session. | seconds | | `add_to_cart_rate` | measure | Ratio of sessions with at least one AddToCart event to total sessions. | percentage | | `cart_abandonment_rate` | measure | Ratio of sessions with AddToCart but no Purchase to sessions with AddToCart. | percentage | | `avg_pages_per_session` | measure | Mean number of PageView events per session. | count | <Note> Currency-based measures (`revenue`, `avg_order_value`) use the currency from the Purchase event's `currency` field. If your store transacts in multiple currencies, values are reported in the original currency unless you enable currency normalization in settings. </Note> ## Dimensions Dimensions define how measures are grouped and broken down. Select one or more dimensions to segment your data. ### Time Dimensions | Name | Type | Description | Granularity | | ------------- | --------- | --------------------------------------------------------------------- | ----------- | | `date` | dimension | Calendar date of the event. | day | | `week` | dimension | ISO week of the event. | week | | `month` | dimension | Calendar month of the event. | month | | `hour_of_day` | dimension | Hour (0–23) when the event occurred. Useful for time-of-day analysis. | hour | | `day_of_week` | dimension | Day of the week (Monday–Sunday). | day | ### Traffic Dimensions | Name | Type | Description | Example Values | | -------------- | --------- | -------------------------------------------------------------- | -------------------------------------------------- | | `utm_source` | dimension | UTM source parameter from the landing page URL. | `facebook`, `google`, `klaviyo` | | `utm_medium` | dimension | UTM medium parameter. | `cpc`, `email`, `organic` | | `utm_campaign` | dimension | UTM campaign parameter. | `summer_sale_2026`, `retargeting_q1` | | `utm_content` | dimension | UTM content parameter for ad-level breakdown. | `hero_banner`, `sidebar_ad` | | `utm_term` | dimension | UTM term parameter for keyword-level analysis. | `cotton+tee`, `running+shoes` | | `referrer` | dimension | HTTP referrer domain that sent the visitor. | `google.com`, `facebook.com`, `direct` | | `channel` | dimension | Aggregated traffic channel derived from UTM and referrer data. | `Paid Social`, `Organic Search`, `Email`, `Direct` | ### Content Dimensions | Name | Type | Description | Example Values | | -------------- | --------- | ------------------------------------------------------------------ | ---------------------------------------------- | | `page_path` | dimension | URL path of the page (without domain or query string). | `/products/classic-tee`, `/collections/summer` | | `event_name` | dimension | Name of the event type. Stored in PascalCase (destination format). | `PageView`, `Purchase`, `AddToCart` | | `content_type` | dimension | Type of content involved in the event. | `product`, `product_group` | <Note> **Event name formats:** When calling the SDK, use `snake_case` (e.g., `add_to_cart`). Upstack transforms these to `PascalCase` for destinations and analytics storage. </Note> ### Visitor Dimensions | Name | Type | Description | Example Values | | -------------- | --------- | -------------------------------------------------------- | --------------------------------- | | `device_type` | dimension | Device category detected from user agent. | `mobile`, `desktop`, `tablet` | | `country` | dimension | Visitor's country, derived from IP geolocation. | `US`, `GB`, `CA`, `AU` | | `region` | dimension | Visitor's state or region. | `California`, `Ontario`, `London` | | `is_returning` | dimension | Whether the visitor has been seen in a previous session. | `true`, `false` | ### Destination Dimensions | Name | Type | Description | Example Values | | ----------------- | --------- | ---------------------------------------------------------------- | --------------------------------------- | | `destination` | dimension | The forwarding destination the event was sent to. | `meta_capi`, `tiktok`, `klaviyo`, `ga4` | | `delivery_status` | dimension | Whether the event was successfully delivered to the destination. | `delivered`, `failed`, `pending` | ## Combining Measures and Dimensions Here are practical examples of how measures and dimensions work together: | Goal | Measures | Dimensions | Result | | ----------------------------- | ----------------------------------------------- | -------------- | ---------------------------------------------------- | | Daily revenue trend | `revenue` | `date` | Line chart of revenue per day | | Channel ROAS comparison | `revenue`, `purchases` | `utm_source` | Table comparing revenue and purchase count by source | | Mobile vs. desktop conversion | `conversion_rate`, `sessions` | `device_type` | Bar chart comparing conversion rates | | Top landing pages | `page_views`, `bounce_rate` | `page_path` | Table of pages sorted by traffic with bounce rate | | Hourly traffic pattern | `sessions` | `hour_of_day` | Bar chart showing when visitors arrive | | Campaign performance | `revenue`, `conversion_rate`, `avg_order_value` | `utm_campaign` | Full campaign performance table | <CardGroup> <Card title="Query Guide" icon="magnifying-glass-chart" href="/analytics/query-guide"> Learn how to build queries, set date ranges, and apply filters. </Card> <Card title="Session & Page Analytics" icon="chart-line" href="/analytics/session-and-page-analytics"> Explore session-level and page-level metrics in detail. </Card> <Card title="Custom Measures" icon="calculator" href="/analytics/custom-measures"> Define your own metrics and KPIs from a formula over these measures. </Card> </CardGroup> # All destinations Source: https://docs.upstackdata.com/destinations/catalog Every event destination Upstack Data supports — ad platforms, email and SMS tools, analytics, and notifications. Click any card for setup guides. <div> Every destination that receives your enriched events server-side. Click any card for setup guides. ## Ad platforms <CardGroup> <Card title="Meta CAPI" icon="meta" href="/destinations/catalog/meta-capi"> Send conversions and identity-enriched events to Meta via the Conversions API. </Card> <Card title="Google Ads" icon="google" href="/destinations/catalog/google-ads"> Forward purchase conversions to Google Ads with a dedicated Upstack conversion goal. </Card> <Card title="TikTok" icon="tiktok" href="/destinations/catalog/tiktok"> Send funnel events to TikTok via the Events API for conversion-optimized campaigns. </Card> <Card title="Pinterest" icon="pinterest" href="/destinations/catalog/pinterest"> Send conversion events to Pinterest via the Conversions API and Pinterest tag. </Card> <Card title="Snapchat" icon="snapchat" href="/destinations/catalog/snapchat"> Send purchase and funnel events to Snapchat via the Conversions API. </Card> <Card title="Reddit Ads" icon="reddit" href="/destinations/catalog/reddit"> Send conversion events to Reddit via the Conversions API. </Card> <Card title="LinkedIn Ads" icon="linkedin" href="/destinations/catalog/linkedin"> Track conversions for LinkedIn Ads with the Insight Tag and click-ID tracking. </Card> <Card title="Microsoft Ads" icon="microsoft" href="/destinations/catalog/bing"> Send conversions to Microsoft Advertising via UET and the Conversions API. </Card> <Card title="AppLovin" icon="applovin" href="/destinations/catalog/applovin"> Send events to AppLovin Axon for mobile and web campaign optimization. </Card> <Card title="Outbrain" icon="outbrain" href="/destinations/catalog/outbrain"> Send conversion events to Outbrain with click-ID tracking. </Card> <Card title="NewsBreak" icon="newsbreak" href="/destinations/catalog/newsbreak"> Send conversion postbacks to NewsBreak via click-ID tracking. </Card> <Card title="Taboola" icon="taboola" href="/destinations/catalog/taboola"> Send conversion events to Taboola with click-ID tracking. </Card> </CardGroup> ## Email & SMS <CardGroup> <Card title="Klaviyo" icon="klaviyo" href="/destinations/catalog/klaviyo"> Sync enriched events to Klaviyo and power abandonment flows. </Card> <Card title="Omnisend" icon="envelope" href="/destinations/catalog/omnisend"> Send customer and order events to Omnisend for email automation. </Card> <Card title="Sendlane" icon="envelope" href="/destinations/catalog/sendlane"> Send events to Sendlane for email automation. </Card> <Card title="Loops" icon="loop" href="/destinations/catalog/loops"> Send events to Loops for lifecycle email. </Card> </CardGroup> ## Analytics <CardGroup> <Card title="PostHog" icon="chart-bar" href="/destinations/catalog/posthog"> Send product events to PostHog for analysis. </Card> <Card title="GA4" icon="chart-line" href="/destinations/catalog/ga4"> Forward events to Google Analytics 4. No longer available for new connections. </Card> </CardGroup> ## Notifications <CardGroup> <Card title="Slack" icon="slack" href="/destinations/catalog/slack"> Send event notifications to Slack channels via Block Kit templates. </Card> <Card title="Webhooks" icon="webhook" href="/destinations/catalog/webhooks"> Deliver events to any endpoint via signed webhooks. </Card> </CardGroup> </div> # AppLovin Axon Source: https://docs.upstackdata.com/destinations/catalog/applovin Track AppLovin Axon conversions from your storefront with Upstack Data — automatic event mapping, click-ID capture, and identity enrichment. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> ## What it does Upstack tracks AppLovin through the **Axon Pixel** on your storefront. Upstack captures storefront events — page views, product views, add-to-carts, checkouts, and purchases — and reports them to AppLovin with the `aleid` click identifier attached, so Axon can tie conversions back to the ads that drove them. <Note> You only need your **Pixel ID (Event Key)** to set this up. See [How to configure the AppLovin destination](/destinations/catalog/applovin/how-to-configure-applovin-destination-in-upstack-data). </Note> ## Tracking Method <Note> AppLovin currently receives events from the browser only. See [Tracking Method](/concepts/tracking-method) for more details. </Note> ## How it works The Upstack Pixel captures each event on your storefront and enriches it with identity and click-ID data. Upstack then loads the Axon Pixel and reports the event to AppLovin with the `aleid` click ID attached. Because Upstack owns the event capture, every AppLovin event carries the same identity data as the rest of your tracking — you do not maintain a separate Axon tag or a second set of event mappings. ## Setup guides <CardGroup> <Card title="Onboarding guide" icon="route" href="/destinations/catalog/applovin/complete-how-to-guide-for-onboarding-applovin-in-upstack-data"> End-to-end walkthrough for connecting AppLovin to Upstack Data. </Card> <Card title="Configure destination" icon="sliders" href="/destinations/catalog/applovin/how-to-configure-applovin-destination-in-upstack-data"> Configure the AppLovin Axon destination inside Upstack Data. </Card> <Card title="Find Pixel ID" icon="magnifying-glass" href="/destinations/catalog/applovin/how-to-find-applovin-pixel-id"> Locate your Axon Pixel ID (Event Key) in the AppLovin dashboard. </Card> </CardGroup> ## Event mapping Upstack maps storefront events to AppLovin Axon standard events automatically: | Upstack event | AppLovin event | Key parameters | | ------------------ | ------------------ | ----------------------------------------------------- | | `PageView` | `page_view` | `url`, `referrer` | | `ViewContent` | `view_item` | `items`, `value`, `currency` | | `AddToCart` | `add_to_cart` | `items`, `value`, `currency` | | `RemoveFromCart` | `remove_from_cart` | `items`, `value`, `currency` | | `ViewCart` | `view_cart` | `items`, `value`, `currency` | | `InitiateCheckout` | `begin_checkout` | `items`, `value`, `currency` | | `AddPaymentInfo` | `add_payment_info` | `payment_type`, `value`, `currency` | | `Purchase` | `purchase` | `transaction_id`, `value`, `tax`, `shipping`, `items` | | `Search` | `search` | `search_term` | | `Lead` | `generate_lead` | `value`, `currency` | | `SignUp` | `sign_up` | `method` | | `Subscribe` | `subscribe` | `value`, `currency` | Every event includes user data parameters (`email`, `phone`, `client_id`) when available. AppLovin click IDs (`aleid`) captured by the Upstack Pixel are included for deterministic matching. User matching requires at least one identifier: `aleid`, `axwrt`, `client_id`, `email`, `phone`, or `user_id`. ## FAQ <AccordionGroup> <Accordion title="How do I know events are reaching AppLovin?"> Open the AppLovin Axon Dashboard, navigate to your pixel's Events section, and check for recent events. Upstack also surfaces delivery status inside the destination settings. </Accordion> <Accordion title="Do I need to keep my own Axon tag on the storefront?"> No. Upstack loads the Axon Pixel for you once the destination is configured. If you already load Axon through your theme, Google Tag Manager, or another app, remove that copy — two tags with the same Pixel ID can double-count events. </Accordion> <Accordion title="What if my event match rate is low?"> AppLovin's match rate depends on how much identity data each event carries. Common causes of low match quality: * **Missing `aleid`** — AppLovin ads should link directly to your storefront so the click ID lands in the URL and is captured by the Upstack Pixel. * **Anonymous visitors** — events from visitors without email or phone have fewer keys to match against. Match rates improve as more identified customers convert. * **Missing checkout fields** — make sure your Shopify checkout collects email and phone; both are strong match keys. </Accordion> </AccordionGroup> ## Troubleshooting <AccordionGroup> <Accordion title="Events not appearing in AppLovin Dashboard"> If events aren't appearing after 10 minutes of confirmed store traffic, check the basics first. **Steps to fix:** 1. Go to **Event Destinations → AppLovin** 2. Verify the **Pixel ID (Event Key)** is correct — no extra spaces, no truncated characters 3. Confirm the destination status is **Healthy** 4. Confirm the Pixel ID in Upstack matches the pixel you are checking in the Axon Dashboard </Accordion> <Accordion title="Events appear, but conversions aren't attributed to ads"> Attribution needs the `aleid` click ID, which is captured from the landing-page URL. **Steps to fix:** 1. Click one of your live AppLovin ads and confirm `aleid` appears in the destination URL 2. Check that the ad links directly to your storefront rather than through a redirect that strips query parameters 3. Confirm the Upstack Pixel is installed on the landing page — see [Verify events](/quickstart/verify-events) </Accordion> </AccordionGroup> <Note> For additional troubleshooting beyond AppLovin-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/destination-shows-disconnected). </Note> ## Related <CardGroup> <Card title="Identity resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack matches anonymous visitors to known customers for higher match rates. </Card> <Card title="Verify events" icon="circle-check" href="/quickstart/verify-events"> Confirm events are firing from your storefront before checking the destination. </Card> <Card title="Events not reaching destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> <Card title="All destinations" icon="grid-2" href="/destinations/catalog"> Every destination Upstack can send events to. </Card> </CardGroup> # Complete How-To Guide for Onboarding AppLovin in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/applovin/complete-how-to-guide-for-onboarding-applovin-in-upstack-data Onboard AppLovin Axon in Upstack Data — locate your Pixel ID (Event Key), configure the destination, and verify events are reaching the Axon Dashboard. <Info> **New to Upstack?** Follow the [getting started guide](/quickstart/install-on-shopify) for a streamlined onboarding walkthrough. </Info> <Tip> * Configure the **AppLovin destination** in Upstack Data with your **Pixel ID** (Event Key). * Verify events appear in the **AppLovin Axon Dashboard** Events section within 5-10 minutes. * Monitor match quality improvements as more identified customers convert. </Tip> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to an **AppLovin Axon** account * A configured **Axon Pixel** in the [AppLovin Dashboard](https://dash.applovin.com/) <Steps> <Step title="Locate your AppLovin Pixel ID (Event Key)"> In the AppLovin Dashboard, navigate to **Account → General → Keys** to find your **Event Key** (Pixel ID). Help guide: [How to find your AppLovin Pixel ID →](/destinations/catalog/applovin/how-to-find-applovin-pixel-id) </Step> <Step title="Remove any existing Axon tag from your storefront"> Upstack loads the Axon Pixel for you. If you already load Axon through your theme, Google Tag Manager, or another app, remove that copy first — two tags firing the same Pixel ID can double-count events. </Step> <Step title="Configure the AppLovin destination in Upstack Data"> In the Upstack dashboard, navigate to **Event Destinations** and add an **AppLovin** destination using your **Pixel ID**. Help guide: [How to configure the AppLovin destination in Upstack Data →](/destinations/catalog/applovin/how-to-configure-applovin-destination-in-upstack-data) </Step> <Step title="Verify the full setup is healthy"> Confirm each piece of the setup is working: * In the Upstack dashboard, **Event Destinations** shows your AppLovin destination as **Healthy** (green). * In the [AppLovin Axon Dashboard](https://dash.applovin.com/), the Events section shows recent events arriving. * Events appear within 5-10 minutes of storefront activity. If anything is unhealthy, check the corresponding help guide above for troubleshooting steps. </Step> </Steps> ## What to expect after setup ### Event delivery timeline * **Events start appearing** in the AppLovin Dashboard within 5-10 minutes of storefront activity. * **Match quality improves** as more identified customers (with email/phone at checkout) convert. ### Reporting differences * Your **AppLovin campaign performance** will likely improve after a few days as the algorithm receives more complete conversion data. * Conversion volume may fluctuate during the first 48 hours while AppLovin adjusts to the new event source. <Note> **Need help?** If you encounter any issues during setup or events aren't appearing after 15 minutes, contact our [support team](/troubleshooting/support) with your **AppLovin Pixel ID** and we'll help diagnose the problem. </Note> # How to Configure AppLovin Destination in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/applovin/how-to-configure-applovin-destination-in-upstack-data Configure the AppLovin Axon destination in Upstack Data with your Pixel ID (Event Key) to track Axon conversions from your storefront. <Tip> * In the Upstack dashboard, go to **Event Destinations** and click **+ New Destination**. * Select **AppLovin Axon**. * Enter your **Pixel ID** (Event Key from AppLovin Dashboard). * Click **Create Configuration** and verify the destination shows **Healthy**. </Tip> <Note> **What this setup enables** Setting up the AppLovin destination in Upstack Data loads the Axon Pixel on your storefront and attributes conversions against your campaigns. Your Pixel ID is the only AppLovin credential you need. </Note> ## Tracking Method <Note> AppLovin currently receives events from the browser only. See [Tracking Method](/concepts/tracking-method) for more details. </Note> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to an **AppLovin Axon** account * A configured **Axon Pixel** in the [AppLovin Dashboard](https://dash.applovin.com/) — see [How to find your AppLovin Pixel ID](/destinations/catalog/applovin/how-to-find-applovin-pixel-id) ## Configuration steps <Steps> <Step title="Sign in to Upstack Data"> Sign in to Upstack Data at [app.upstackdata.com](https://app.upstackdata.com/pixel/event-destinations). </Step> <Step title="Open the destination configuration"> In the Upstack dashboard, navigate to **Event Destinations**. Click **+ New Destination** in the top-right of the page. In the **Select a Destination** popup, click **AppLovin Axon**, then click **Next**. </Step> <Step title="Enter your Pixel ID"> **Pixel ID** — the Event Key identifier for your Axon pixel. Find this in the AppLovin Dashboard under Account → General → Keys. <Note> **Need help finding it?** See [How to find your AppLovin Pixel ID](/destinations/catalog/applovin/how-to-find-applovin-pixel-id). </Note> </Step> <Step title="Configure optional settings"> **Send User Data** — Toggle this on to include hashed user data for improved match quality. </Step> <Step title="Create the configuration"> Click the **Create Configuration** button. You should see a confirmation message and the AppLovin destination will appear in your **Event Destinations** list. </Step> <Step title="Verify the destination is healthy"> In the Upstack dashboard, the AppLovin destination card should display **Healthy** with a green status indicator within 5 minutes. If the status shows **Unhealthy**, confirm your **Pixel ID** is correct — no leading or trailing spaces, and no truncated characters. </Step> </Steps> # How to Find your AppLovin Pixel ID Source: https://docs.upstackdata.com/destinations/catalog/applovin/how-to-find-applovin-pixel-id Find your AppLovin Axon Pixel ID (Event Key) in the AppLovin Dashboard — required to configure the Upstack Data AppLovin destination. <Tip> * Sign in to the [AppLovin Dashboard](https://dash.applovin.com/). * Navigate to **Account → General → Keys**. * Locate your **Event Key** (this is your Pixel ID). * Copy the Event Key and paste it into your Upstack AppLovin destination configuration. </Tip> <Note> **What is an AppLovin Pixel ID?** Your **AppLovin Pixel ID** (also called the **Event Key**) is a unique identifier that Upstack Data uses to send conversion data to your AppLovin Axon account. It is the only AppLovin credential the destination needs. </Note> ## Prerequisites Before you start, you need: * Access to an **AppLovin** account at [dash.applovin.com](https://dash.applovin.com/) * An Axon pixel already set up (or follow the steps below to create one) ## Steps to find your AppLovin Pixel ID <Steps> <Step title="Sign in to the AppLovin Dashboard"> Sign in to the AppLovin Dashboard at [dash.applovin.com](https://dash.applovin.com/). </Step> <Step title="Navigate to Account Settings"> Click on your account menu (typically in the top-right corner) and select **Account** or navigate directly to account settings. </Step> <Step title="Open the Keys section"> In the Account settings, navigate to **General → Keys**. This section contains your API keys, including the Event Key (Pixel ID). </Step> <Step title="Locate your Event Key (Pixel ID)"> Find the **Event Key** in the Keys section. **Example format:** A string of alphanumeric characters (e.g., `abc123def456ghi789`) This Event Key is your Pixel ID that you'll use in Upstack Data. </Step> <Step title="Copy and paste into Upstack Data"> Copy your Event Key and paste it into the **Pixel ID** field in your Upstack AppLovin destination setup. <Tip> Ensure there are no extra spaces before or after the ID. Copy the exact value shown in the dashboard. </Tip> </Step> <Step title="Save the configuration"> Click **Create Configuration** to save the destination. </Step> <Step title="Verify the destination is healthy"> In the Upstack dashboard, navigate to **Event Destinations**. Your AppLovin destination should display **Healthy** with a green status indicator within 5 minutes. If the status shows **Unhealthy**, double-check that the Pixel ID matches exactly what you see in the AppLovin Dashboard (correct format, no whitespace). </Step> </Steps> <Note> **Next step:** [How to configure the AppLovin destination in Upstack Data](/destinations/catalog/applovin/how-to-configure-applovin-destination-in-upstack-data) </Note> # Microsoft Advertising Conversions API Source: https://docs.upstackdata.com/destinations/catalog/bing Send conversion events to Microsoft Advertising (Bing Ads) via the Conversions API for ad campaign optimization, audience building, and attribution — powered by Upstack Signal. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> ## What it does Microsoft Advertising's Conversions API (CAPI) is the server-side counterpart to the Universal Event Tracking (UET) Tag. Upstack Signal forwards storefront events — page views, product views, add-to-carts, and purchases — directly to Microsoft's servers, bypassing browser restrictions like ad blockers, ITP, and cookie limits. Server-side delivery gives Microsoft's algorithm a fuller picture of the conversions your ads actually drove, which improves campaign optimization, audience modeling, and attribution accuracy. Match rates from server-side events are consistently higher than browser-only tracking because each event carries hashed customer data and the `msclkid` click identifier when available. <Note> Microsoft's Conversions API is currently in **pilot program**. Contact your Microsoft Advertising account manager to enroll before enabling server-side tracking in Upstack. </Note> ## How it works Upstack runs as a dual-tracking layer alongside the Microsoft UET Tag. The Upstack Pixel captures events in the browser and forwards each event to Upstack's edge infrastructure, where it is hashed, enriched with identity and click-ID data, and sent to the Microsoft Conversions API as a server-side event with a shared `eventId`. Microsoft deduplicates server events against matching browser UET Tag events using that `eventId`, so you do not double-count conversions as long as both sources use the same UET Tag ID. PII (`email`, `phone`) is hashed with SHA-256 before delivery, as required by the Conversions API. <Warning> Unlike Meta and Google, Microsoft **does not support address-level enhanced matching**. Only email and phone are accepted for identity matching. </Warning> ## Setup guides <CardGroup> <Card title="Onboarding guide" icon="route" href="/destinations/catalog/bing/complete-how-to-guide-for-onboarding-microsoft-ads"> End-to-end walkthrough for connecting Microsoft Advertising to Upstack Data. </Card> <Card title="Configure destination" icon="sliders" href="/destinations/catalog/bing/how-to-configure-microsoft-ads-destination"> Configure the Microsoft Advertising destination inside Upstack Data. </Card> <Card title="Find UET Tag ID" icon="magnifying-glass" href="/destinations/catalog/bing/how-to-find-uet-tag-id"> Locate your UET Tag ID in Microsoft Advertising. </Card> <Card title="Create Event Goals" icon="bullseye" href="/destinations/catalog/bing/how-to-create-event-goals"> Create Event Goals to track specific conversion types. </Card> <Card title="Enable CAPI" icon="server" href="/destinations/catalog/bing/how-to-enable-conversions-api"> Enroll in the CAPI pilot and generate your auth token. </Card> <Card title="Enable click ID tracking" icon="link" href="/destinations/catalog/bing/how-to-enable-msclkid-tracking"> Ensure msclkid is captured and stored for attribution. </Card> </CardGroup> ## Event mapping Upstack maps storefront events to Microsoft Advertising events automatically: | Upstack event | Microsoft event | Key match data | | ------------------ | ---------------- | ----------------------------------------------- | | `PageView` | `pageLoad` | URL, referrer, user agent | | `ViewContent` | `view_item` | `itemIds`, `value`, `currency` | | `AddToCart` | `add_to_cart` | `itemIds`, `value`, `currency` | | `InitiateCheckout` | `begin_checkout` | `value`, `currency` | | `Purchase` | `purchase` | `value`, `currency`, `transactionId`, `itemIds` | | `Lead` | `lead` | `email`, `phone` | | `Search` | `search` | `searchTerm` | | `SignUp` | `sign_up` | `email` | <Note> Microsoft uses **free-form event names** rather than predefined standard events. Event matching is done via Event Goals configured in the Microsoft Advertising UI. </Note> PII is hashed with SHA-256 before it leaves Upstack. Upstack includes every available match key on every event — hashed `email`, hashed `phone`, `msclkid` (Microsoft click ID), `ip_address`, and `user_agent` — to maximize match quality. ## FAQ <AccordionGroup> <Accordion title="What is the difference between UET Tag ID and CAPI Auth Token?"> The **UET Tag ID** identifies your Microsoft Advertising tracking tag — it's the same ID used for browser-side tracking via the UET Tag. The **CAPI Auth Token** is a Bearer token that authenticates server-side API requests. You need both: the Tag ID to identify your account, and the auth token to authorize server-side event submission. </Accordion> <Accordion title="How do I enroll in the CAPI pilot program?"> Contact your Microsoft Advertising account manager or Microsoft Advertising support to request enrollment in the Conversions API pilot. Once enrolled, the auth token option becomes available in your UET Tag settings. </Accordion> <Accordion title="How do I know events are reaching Microsoft?"> Open Microsoft Advertising → **Tools** → **UET Tags** → select your tag → **Tag Status**. Server-side events appear alongside browser events. Upstack also surfaces delivery status inside the destination settings and Event Debugger. </Accordion> <Accordion title="Will I see duplicate conversions if I run both the UET Tag and Conversions API?"> No — as long as the UET Tag ID in Upstack matches your browser UET Tag. Upstack sends a shared `eventId` on every server-side event, and Microsoft's deduplication logic matches events by `eventId` and keeps only one. </Accordion> <Accordion title="Why do events need to be within 7 days?"> Microsoft's Conversions API rejects events older than 7 days. This is stricter than other platforms (Meta allows 7 days, Google allows 90 days). Ensure your event pipeline processes events promptly. </Accordion> <Accordion title="What if my event match rate is low?"> Microsoft's match rate depends on how much identity data each event carries. Common causes of low match quality: * **Missing `msclkid`** — Microsoft ads should link directly to your storefront so the click ID lands in the URL and is captured by the Upstack Pixel. * **Anonymous visitors** — events from visitors without email have fewer keys to match against. Match rates improve as more identified customers convert. * **Missing checkout fields** — make sure your Shopify checkout collects email and phone; they're the strongest server-side match keys. </Accordion> </AccordionGroup> ## Troubleshooting <AccordionGroup> <Accordion title="Events not appearing in Microsoft Advertising"> **Check these in order:** 1. Verify UET Tag ID is correct in Upstack destination settings 2. Verify CAPI auth token is valid (test in Event Debugger) 3. Check event timestamp is within 7 days 4. Ensure Event Goals are configured in Microsoft Advertising UI </Accordion> <Accordion title="401 Unauthorized errors"> Your CAPI auth token is invalid or expired. Generate a new token in Microsoft Advertising UET Tag settings and update your Upstack destination configuration. </Accordion> <Accordion title="400 Validation errors"> Common validation issues: * `eventType` must be "pageLoad" or "custom" * `eventTime` must be UNIX seconds (not milliseconds) within 7 days * `em` and `ph` must be valid SHA-256 hex strings (64 characters) * `eventSourceUrl` is required for pageLoad events </Accordion> </AccordionGroup> ## Related <CardGroup> <Card title="Meta Conversions API" icon="meta" href="/destinations/catalog/meta-capi"> Server-side tracking for Meta (Facebook/Instagram) ads. </Card> <Card title="Google Ads" icon="google" href="/destinations/catalog/google-ads"> Send conversion events to Google Ads for campaign optimization. </Card> <Card title="TikTok Events API" icon="tiktok" href="/destinations/catalog/tiktok"> Server-side event delivery to TikTok for attribution. </Card> <Card title="Pinterest Conversions API" icon="pinterest" href="/destinations/catalog/pinterest"> Track conversions on Pinterest campaigns with server-side events. </Card> </CardGroup> # Complete How-To Guide for Onboarding Microsoft Advertising in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/bing/complete-how-to-guide-for-onboarding-microsoft-ads Onboard Microsoft Advertising (Bing Ads) in Upstack Data — locate your UET Tag ID, generate your CAPI auth token, configure the destination, and verify server-side conversion forwarding. <Info> **New to Upstack?** Follow the [getting started guide](/quickstart/install-on-shopify) for a streamlined onboarding walkthrough. </Info> <Tip> * Configure the **Microsoft Advertising destination** in Upstack Data with your **UET Tag ID** and **CAPI Auth Token**. * Ensure Auto-tagging or manual `msclkid` tracking is enabled in your campaigns. * Verify events appear in **Microsoft Advertising → Tools → UET Tags → Tag Status**. * Monitor attribution improvements over 7-10 days of campaign traffic. </Tip> <Warning> **CAPI Pilot Program:** Microsoft's Conversions API is currently in pilot. Contact your Microsoft Advertising account manager to enroll before enabling server-side tracking in Upstack. </Warning> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to a **Microsoft Advertising** account * Your **UET Tag ID** from Microsoft Advertising * Enrollment in the **Conversions API pilot program** * Your **CAPI Auth Token** (generated after pilot enrollment) * Active Microsoft Advertising campaigns with msclkid tracking enabled <Steps> <Step title="Enroll in the Conversions API pilot"> Contact your Microsoft Advertising account manager or Microsoft Advertising support to request enrollment in the Conversions API pilot program. Once enrolled, the auth token generation option becomes available in your UET Tag settings. Help guide: [How to enable the Conversions API →](/destinations/catalog/bing/how-to-enable-conversions-api) </Step> <Step title="Find your UET Tag ID"> Locate your UET Tag ID in the Microsoft Advertising dashboard under Tools → UET Tags. This numeric ID identifies your tracking tag. Help guide: [How to find your UET Tag ID →](/destinations/catalog/bing/how-to-find-uet-tag-id) </Step> <Step title="Create Event Goals"> Create Event Goals in Microsoft Advertising to track specific conversion types (purchase, add\_to\_cart, etc.) that Upstack will send via CAPI. Help guide: [How to create Event Goals →](/destinations/catalog/bing/how-to-create-event-goals) </Step> <Step title="Enable msclkid tracking"> Ensure Auto-tagging is enabled or configure manual msclkid tracking in your campaigns so click IDs are captured for attribution. Help guide: [How to enable msclkid tracking →](/destinations/catalog/bing/how-to-enable-msclkid-tracking) </Step> <Step title="Configure the Microsoft Advertising destination in Upstack Data"> In the Upstack dashboard, navigate to **Event Destinations** and add a **Microsoft Advertising** destination using your **UET Tag ID** and **CAPI Auth Token**. Help guide: [How to configure the Microsoft Advertising destination →](/destinations/catalog/bing/how-to-configure-microsoft-ads-destination) </Step> <Step title="Verify the full setup is healthy"> Confirm each piece of the setup is working: * In the Upstack dashboard, **Event Destinations** shows your Microsoft Advertising destination as **Healthy** (green). * In Microsoft Advertising → **Tools** → **UET Tags** → select your tag → **Tag Status**, server-side events appear alongside browser events. * Test with a real ad click — clicking your own ad and completing a purchase should generate a tracked conversion within 5-10 minutes. If anything is unhealthy, check the corresponding help guide above for troubleshooting steps. </Step> </Steps> ## What to expect after setup ### Attribution with msclkid Microsoft Advertising attributes conversions using the `msclkid` click identifier when available, plus hashed email and phone for enhanced matching: | Scenario | Attribution | | ------------------------------------------------------ | ---------------------------------- | | User clicks ad with `msclkid`, converts same session | ✅ Attributed | | User clicks ad with `msclkid`, converts within 90 days | ✅ Attributed (if cookie persists) | | Known customer with email, no click ID | ✅ Attributed via enhanced matching | | User visits directly without ad click | ❌ Cannot be attributed | | User clears cookies between click and conversion | ⚠️ Depends on email/phone matching | ### Conversion reporting timeline * **Initial conversions** start appearing in Microsoft Advertising within 5-10 minutes of real ad clicks and purchases. * **Full attribution picture** emerges over 7-10 days as more users complete the click → conversion journey. * **Server-side events** appear with a "Server" indicator in UET Tag Status. ### Deduplication Microsoft deduplicates based on `eventId`. Upstack sends a shared `eventId` on every server-side event, and Microsoft's deduplication logic matches events by `eventId` and keeps only one. As long as the UET Tag ID in Upstack matches your browser UET Tag, you won't see duplicate conversions. <Note> **Need help?** If you encounter any issues during setup or don't see conversions appearing after confirming ad clicks, contact our [support team](/troubleshooting/support) with your **UET Tag ID** and we'll help diagnose the problem. </Note> # How to Configure Microsoft Advertising Destination in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/bing/how-to-configure-microsoft-ads-destination Configure the Microsoft Advertising (Bing Ads) destination inside Upstack Data with your UET Tag ID and CAPI Auth Token. <Info> **Prerequisites:** You need your [UET Tag ID](/destinations/catalog/bing/how-to-find-uet-tag-id) and [CAPI Auth Token](/destinations/catalog/bing/how-to-enable-conversions-api) before configuring this destination. </Info> ## Tracking Method <Note> **Tracking Method** is set to **Browser + Server** by default, and this is the recommended way to run Microsoft Advertising: Upstack loads the Microsoft UET tag on your storefront and also sends events server-side, and the two copies are deduplicated. If you don't want to load the Microsoft UET tag in the browser, switch the Tracking Method to **Server**. See [Tracking Method](/concepts/tracking-method). </Note> ## Steps <Steps> <Step title="Open Upstack Data dashboard"> Log in to [app.upstackdata.com](https://app.upstackdata.com) and select your store. </Step> <Step title="Navigate to Event Destinations"> In the left sidebar, click **Integrations** → **Event Destinations**. </Step> <Step title="Add Microsoft Advertising destination"> Click **+ Add Destination** and select **Microsoft Advertising** from the list of available destinations. </Step> <Step title="Enter your UET Tag ID"> Paste your **UET Tag ID** (numeric value) in the Tag ID field. Don't have it? [Find your UET Tag ID →](/destinations/catalog/bing/how-to-find-uet-tag-id) </Step> <Step title="Enter your CAPI Auth Token"> Paste your **CAPI Auth Token** in the Auth Token field for server-side event delivery. Don't have it? [Generate your CAPI Auth Token →](/destinations/catalog/bing/how-to-enable-conversions-api) </Step> <Step title="Save and verify"> Click **Save** to activate the destination. The destination status should show **Healthy** (green) within a few minutes if the credentials are valid. </Step> </Steps> ## Configuration fields | Field | Required | Description | | ------------------- | -------- | -------------------------------------------------------- | | **UET Tag ID** | Yes | Your Microsoft Advertising UET Tag ID (numeric) | | **CAPI Auth Token** | Yes | Bearer token for authenticating server-side API requests | ## Troubleshooting <AccordionGroup> <Accordion title="Destination shows Unhealthy status"> **Common causes:** * Invalid or expired CAPI Auth Token — regenerate in Microsoft Advertising * Incorrect UET Tag ID — verify in Microsoft Advertising → Tools → UET Tags * Account not enrolled in CAPI pilot — contact your Microsoft Advertising account manager </Accordion> <Accordion title="Events not appearing in Microsoft Advertising"> 1. Verify the destination status is Healthy in Upstack 2. Check that Event Goals are configured in Microsoft Advertising 3. Wait 5-10 minutes for events to propagate 4. Use the Upstack Event Debugger to confirm events are being sent </Accordion> </AccordionGroup> <Note> **Need help?** Contact our [support team](/troubleshooting/support) with your UET Tag ID and we'll help troubleshoot. </Note> # How to Create Event Goals in Microsoft Advertising Source: https://docs.upstackdata.com/destinations/catalog/bing/how-to-create-event-goals Create Event Goals in Microsoft Advertising to track specific conversion types sent by Upstack Data via the Conversions API. **Event Goals** in Microsoft Advertising define which events count as conversions for your campaigns. Upstack sends events like `purchase`, `add_to_cart`, and `view_item` — you need corresponding Event Goals to track them. <Note> Microsoft uses **free-form event names** rather than predefined standard events. Event matching is done via Event Goals configured in the Microsoft Advertising UI. </Note> ## Steps <Steps> <Step title="Sign in to Microsoft Advertising"> Go to [ads.microsoft.com](https://ads.microsoft.com) and sign in to your account. </Step> <Step title="Navigate to Conversion Goals"> In the top navigation, click **Tools** → **Conversion Goals** (under Conversion tracking). </Step> <Step title="Create a new goal"> Click **+ Create conversion goal** and select **Event** as the goal type. </Step> <Step title="Configure the goal"> Fill in the goal settings: * **Goal name:** Use a descriptive name (e.g., "Upstack Purchase", "Upstack Add to Cart") * **Event name:** Enter the exact event name Upstack sends (see mapping table below) * **Revenue value:** Configure how revenue is tracked (use event value for purchases) * **Attribution window:** Set your desired click-through and view-through windows </Step> <Step title="Save the goal"> Click **Save** to create the Event Goal. Repeat for each event type you want to track. </Step> </Steps> ## Event name mapping Create Event Goals for these Upstack events: | Upstack event | Event name to use | Recommended settings | | ------------------ | ----------------- | -------------------------------------- | | `Purchase` | `purchase` | Revenue: Use event value, Primary goal | | `AddToCart` | `add_to_cart` | Revenue: Fixed value or event value | | `ViewContent` | `view_item` | Revenue: None or fixed value | | `InitiateCheckout` | `begin_checkout` | Revenue: Use event value | | `Lead` | `lead` | Revenue: Fixed value | | `Search` | `search` | Revenue: None | | `SignUp` | `sign_up` | Revenue: Fixed value | | `PageView` | `pageLoad` | Revenue: None | ## Goal settings recommendations ### Primary vs. secondary goals * **Primary goal:** Purchase events — these are used for campaign optimization * **Secondary goals:** Add to cart, view content — useful for analysis but don't directly influence bidding ### Attribution windows * **Click-through window:** 30 days (default) — conversions attributed to ad clicks * **View-through window:** 1 day — conversions attributed to ad impressions without clicks ### Revenue tracking For purchase events, select **Use the revenue value from conversions** to pass the actual order value from Upstack. ## Verification After creating Event Goals: 1. Wait for Upstack to send some events (may take a few hours depending on store traffic) 2. Check **Tools** → **UET Tags** → select your tag → **Tag Status** 3. Verify events appear with the correct event names <Note> **Need help?** Contact our [support team](/troubleshooting/support) if events aren't being tracked correctly. </Note> # How to Enable the Microsoft Advertising Conversions API Source: https://docs.upstackdata.com/destinations/catalog/bing/how-to-enable-conversions-api Enroll in the Microsoft Advertising Conversions API pilot program and generate your CAPI Auth Token for server-side event delivery. Microsoft's **Conversions API (CAPI)** enables server-side event delivery alongside the browser UET Tag. Server-side events bypass ad blockers and browser restrictions, improving match rates and attribution accuracy. <Warning> **Pilot Program:** The Conversions API is currently in pilot. You must be enrolled in the pilot program before you can generate an auth token. </Warning> ## Step 1: Enroll in the CAPI pilot <Steps> <Step title="Contact Microsoft Advertising"> Reach out to your Microsoft Advertising account manager or contact [Microsoft Advertising support](https://about.ads.microsoft.com/en-us/resources/support) to request enrollment in the Conversions API pilot program. Include your: * Microsoft Advertising account ID * UET Tag ID * Business use case (server-side conversion tracking via Upstack Data) </Step> <Step title="Wait for enrollment confirmation"> Microsoft will review your request and enable CAPI access for your account. This typically takes 1-2 business days. You'll receive an email confirmation when enrolled. </Step> </Steps> ## Step 2: Generate your CAPI Auth Token Once enrolled in the pilot: <Steps> <Step title="Sign in to Microsoft Advertising"> Go to [ads.microsoft.com](https://ads.microsoft.com) and sign in to your account. </Step> <Step title="Navigate to UET Tags"> In the top navigation, click **Tools** → **UET Tags**. </Step> <Step title="Select your UET Tag"> Click on the UET Tag you want to use for server-side tracking. </Step> <Step title="Access CAPI settings"> In the tag details, look for the **Conversions API** or **Server-side tracking** section. This section only appears if your account is enrolled in the CAPI pilot. </Step> <Step title="Generate auth token"> Click **Generate token** or **Create auth token**. A Bearer token will be generated. **Copy this token immediately** — it may not be shown again. </Step> <Step title="Save the token securely"> Store the auth token securely. You'll need it when configuring the Microsoft Advertising destination in Upstack Data. </Step> </Steps> ## Token management ### Token expiration CAPI auth tokens may have an expiration date. Check your Microsoft Advertising account for token validity and regenerate if needed. ### Token rotation If you need to rotate your token: 1. Generate a new token in Microsoft Advertising 2. Update the token in your Upstack destination settings 3. The old token will continue working briefly to allow for transition ## Troubleshooting <AccordionGroup> <Accordion title="I don't see the CAPI option in UET Tag settings"> Your account is not yet enrolled in the Conversions API pilot. Contact your Microsoft Advertising account manager to request enrollment. </Accordion> <Accordion title="My token isn't working"> **Common causes:** * Token was copied incorrectly (check for extra spaces or truncation) * Token has expired — generate a new one * Account CAPI access was revoked — contact Microsoft Advertising support </Accordion> </AccordionGroup> ## Next steps Once you have your CAPI Auth Token: * [Configure the destination in Upstack Data →](/destinations/catalog/bing/how-to-configure-microsoft-ads-destination) * [Create Event Goals →](/destinations/catalog/bing/how-to-create-event-goals) # How to Enable msclkid Tracking for Microsoft Advertising Source: https://docs.upstackdata.com/destinations/catalog/bing/how-to-enable-msclkid-tracking Ensure msclkid (Microsoft Click ID) is captured and stored for attribution in Microsoft Advertising campaigns. The **msclkid** (Microsoft Click ID) is a unique identifier appended to your landing page URLs when users click on Microsoft Advertising ads. Upstack captures this click ID and includes it with server-side events for accurate attribution. ## How msclkid works 1. User clicks your Microsoft ad 2. Microsoft appends `msclkid=XXXXXXXX` to the landing page URL 3. Upstack Pixel captures the `msclkid` from the URL 4. Upstack stores the `msclkid` in a first-party cookie 5. When the user converts, Upstack sends the `msclkid` with the server-side event 6. Microsoft matches the event to the original ad click ## Enable Auto-tagging (recommended) Auto-tagging automatically appends `msclkid` to all ad click URLs. This is the recommended approach. <Steps> <Step title="Sign in to Microsoft Advertising"> Go to [ads.microsoft.com](https://ads.microsoft.com) and sign in to your account. </Step> <Step title="Navigate to Account Settings"> Click on your account name in the top navigation → **Account settings**. </Step> <Step title="Enable Auto-tagging"> Under **Tracking**, find the **Auto-tagging** option. Toggle it **ON** to automatically append msclkid to all ad URLs. </Step> <Step title="Save changes"> Click **Save** to apply the setting. </Step> </Steps> ## Manual tracking (alternative) If you need manual control over click ID tracking, add the `msclkid` parameter to your campaign tracking templates. ### Campaign-level tracking template Add to your campaign's **Tracking template** field: ``` {lpurl}?msclkid={msclkid} ``` Or if you already have URL parameters: ``` {lpurl}&msclkid={msclkid} ``` ### Account-level tracking template Apply to all campaigns by setting the template at the account level: 1. Go to **Account settings** → **Tracking** 2. Add your tracking template with the `{msclkid}` parameter ## Verify msclkid is working <Steps> <Step title="Click one of your ads"> Search for a term that triggers your ad and click through to your landing page. </Step> <Step title="Check the URL"> Look at the URL in your browser. You should see `msclkid=XXXXXXXX` as a URL parameter. Example: `https://yourstore.com/products/item?msclkid=abc123def456...` </Step> <Step title="Check Upstack Pixel Helper"> If you have the [Upstack Pixel Helper](/guides/shopify/how-to-install-upstack-data-pixel-helper) installed, open it and verify that the `msclkid` is being captured. </Step> </Steps> ## Troubleshooting <AccordionGroup> <Accordion title="msclkid not appearing in URLs"> **Common causes:** * Auto-tagging is disabled — enable it in Account settings * Final URL excludes query parameters — check your ad configuration * Landing page redirects strip parameters — ensure redirects preserve query strings </Accordion> <Accordion title="msclkid appearing but not being tracked"> **Check these:** * Upstack Pixel is installed and active on your landing page * No JavaScript errors blocking the Upstack Pixel * Cookie consent is granted (if using consent mode) </Accordion> <Accordion title="Attribution not working despite msclkid"> **Verify:** * The destination is configured with the correct UET Tag ID * Event Goals are created in Microsoft Advertising * Events are reaching Microsoft (check UET Tag Status) </Accordion> </AccordionGroup> ## Cookie persistence Upstack stores the `msclkid` in a first-party cookie to preserve attribution across sessions. The cookie persists for 90 days by default, matching Microsoft's conversion attribution window. <Note> **Privacy considerations:** First-party cookies are more resilient to browser restrictions than third-party cookies, but may still be affected by ITP (Safari) and other privacy features. Server-side delivery helps maintain attribution accuracy in these cases. </Note> ## Next steps Once msclkid tracking is enabled: * [Configure the destination in Upstack Data →](/destinations/catalog/bing/how-to-configure-microsoft-ads-destination) * [Create Event Goals →](/destinations/catalog/bing/how-to-create-event-goals) # How to Find Your UET Tag ID in Microsoft Advertising Source: https://docs.upstackdata.com/destinations/catalog/bing/how-to-find-uet-tag-id Locate your Universal Event Tracking (UET) Tag ID in Microsoft Advertising for use with Upstack Data. Your **UET Tag ID** is a numeric identifier for your Microsoft Advertising tracking tag. You'll need this ID to configure the Microsoft Advertising destination in Upstack Data. ## Steps <Steps> <Step title="Sign in to Microsoft Advertising"> Go to [ads.microsoft.com](https://ads.microsoft.com) and sign in to your account. </Step> <Step title="Navigate to UET Tags"> In the top navigation, click **Tools** → **UET Tags** (under Conversion tracking). </Step> <Step title="Find your UET Tag"> Locate your existing UET Tag in the list. If you don't have one, click **Create UET tag** to create a new one. </Step> <Step title="Copy the Tag ID"> The **Tag ID** is displayed in the list view or tag details. It's a numeric value (e.g., `12345678`). Copy this ID — you'll need it when configuring the Microsoft Advertising destination in Upstack Data. </Step> </Steps> ## Where to find the Tag ID The UET Tag ID appears in several places: * **UET Tags list:** The ID column shows the numeric Tag ID for each tag * **Tag details:** Click on a tag name to view its details, including the Tag ID * **UET Tag code snippet:** The Tag ID appears in the JavaScript snippet as part of the `uetq` initialization ## If you don't have a UET Tag If you don't have an existing UET Tag: 1. Click **Create UET tag** in the UET Tags section 2. Give your tag a descriptive name (e.g., "Upstack Tracking") 3. Optionally add a description 4. Click **Save** 5. Copy the new Tag ID <Note> **Important:** Use the same UET Tag ID for both your browser UET Tag and Upstack server-side delivery to ensure proper event deduplication. </Note> ## Next steps Once you have your UET Tag ID: * [Generate your CAPI Auth Token →](/destinations/catalog/bing/how-to-enable-conversions-api) * [Configure the destination in Upstack Data →](/destinations/catalog/bing/how-to-configure-microsoft-ads-destination) # Google Analytics 4 (deprecated) Source: https://docs.upstackdata.com/destinations/catalog/ga4 The Google Analytics 4 destination has been deprecated and is no longer available for new connections. <Warning> **This destination is deprecated.** The Google Analytics 4 connection is no longer available for new setups. Existing connections will continue to function but are not actively maintained. </Warning> ## Why this was deprecated Upstack's Google Analytics 4 destination has been deprecated. We recommend using GA4's native installation through your Shopify store or Google Tag Manager for analytics tracking. ## Alternatives For server-side conversion tracking, use the platform-specific destinations that drive ad optimization: <CardGroup> <Card title="Meta Conversions API" href="/destinations/catalog/meta-capi"> Server-side conversion delivery to Meta Ads. </Card> <Card title="Google Ads" href="/destinations/catalog/google-ads"> Server-side conversion delivery to Google Ads. </Card> <Card title="Custom Webhooks" href="/destinations/catalog/webhooks"> Build custom integrations with your own analytics pipeline. </Card> <Card title="See all destinations" href="/destinations/catalog/overview"> Browse the full list of supported destinations. </Card> </CardGroup> ## Existing connections If you have an existing GA4 destination configured in Upstack, it will continue to operate. Contact [support@upstackdata.com](mailto:support@upstackdata.com) if you need to make changes to your configuration. # Google Ads Source: https://docs.upstackdata.com/destinations/catalog/google-ads Forward purchase conversions to Google Ads via server-side API with Enhanced Conversions match keys — improving Smart Bidding signal, attribution accuracy, and Performance Max optimization. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> ## What it does Google Ads relies on conversion signal to power Smart Bidding, Performance Max, and any campaign that optimizes toward purchases. Upstack Signal forwards every Shopify purchase to your Google Ads account server-side, attached to a dedicated Upstack conversion goal that Google's bidder can optimize against. Server-side delivery means conversions reach Google even when the browser-side gtag is blocked by ad blockers, ITP, or cookie restrictions. Each event carries the original click identifier (`gclid` or `gbraid`/`wbraid`) plus hashed customer data, so Google can match the conversion back to the ad interaction that drove it. The result is more complete conversion data inside Google Ads, sharper Smart Bidding decisions, and reporting that reflects the conversions your campaigns actually produced. ## How it works Google Ads uses a primary/secondary conversion goal architecture. Primary goals drive bidding — Smart Bidding optimizes toward whatever is marked primary. Secondary goals are observation-only: they appear in reports but do not influence the bidder. Upstack creates its own purchase goal in your account so you can compare it side-by-side with your existing goal before promoting it to primary. Upstack hashes customer data — `email`, `phone`, `first_name`, `last_name`, `city`, `state`, `zip`, `country` — with SHA-256 before sending it to Google's API. Google uses these match keys the same way Enhanced Conversions does, so you do not need to configure Enhanced Conversions for web on the Upstack goal itself. <Warning> Your Google Ads account does need enhanced conversions switched on at the account level before Google will accept customer data over the API. It is a one-time setup, and server-side forwarding will not deliver anything until it is done. The [Conversions API setup guide](/destinations/google-ads/how-to-set-up-google-ads-server-side-conversions-api-in-upstack-data) walks through both settings to check. </Warning> ## Primary vs secondary conversion rollout When Upstack creates a conversion action in your Google Ads account, don't immediately make it your primary goal. Start it as a **secondary** conversion (reporting only) and run it alongside your existing setup for **7–14 days**. Compare purchase counts during this window — Upstack should track equal or higher volume due to enhanced identity matching. Once validated, promote the Upstack conversion to **primary** and demote the old one. This protects your Smart Bidding from disruption during the transition and gives the bidder a clean signal to retrain against. <Tip> Smaller accounts may need longer than 14 days to accumulate enough conversions for Smart Bidding to retrain confidently. Wait until the Upstack goal has logged conversions across a full bidding window before promoting it. </Tip> ## Setup guides <CardGroup> <Card title="Onboarding guide" icon="route" href="/destinations/catalog/google-ads/complete-how-to-guide-for-onboarding-google-ads-in-upstack-data"> End-to-end walkthrough for connecting Google Ads to Upstack Data. </Card> <Card title="Configure destination" icon="sliders" href="/destinations/catalog/google-ads/how-to-configure-google-ads-destination-in-upstack-data"> Configure the Google Ads destination inside Upstack Data. </Card> <Card title="Server-side Conversions API setup" icon="server" href="/destinations/catalog/google-ads/how-to-set-up-google-ads-server-side-conversions-api-in-upstack-data"> Connect Google Ads with OAuth and map events to conversion actions for server-side forwarding. </Card> <Card title="Find conversion ID and label" icon="magnifying-glass" href="/destinations/catalog/google-ads/how-to-get-your-google-ads-conversion-id-and-label"> Locate the conversion ID and label values Upstack needs. </Card> <Card title="Create purchase goal" icon="bullseye" href="/destinations/catalog/google-ads/how-to-create-a-new-upstack-data-purchase-goal-in-google-ads"> Create the dedicated Upstack purchase conversion goal in Google Ads. </Card> <Card title="Enable primary goal" icon="circle-check" href="/destinations/catalog/google-ads/how-to-enable-the-google-ads-upstack-purchase-goal-and-switch-to-primary-optimization-goal"> Promote the Upstack goal to primary so Smart Bidding optimizes against it. </Card> <Card title="Connect Google Ads account (source)" icon="plug" href="/guides/integrations/how-to-connect-your-google-ads-account-in-upstack-data-integrations"> Connect Google Ads as a campaign data source for attribution reporting. </Card> </CardGroup> ## FAQ <AccordionGroup> <Accordion title="What's the difference between primary and secondary conversion goals?"> Primary goals drive Smart Bidding — Google optimizes toward them. Secondary goals are observation-only and appear in reports but do not influence the bidder. New Upstack goals start as secondary so you can compare their volume and quality against your existing goal before switching them to primary. </Accordion> <Accordion title="Why does Upstack create a new conversion goal instead of using my existing one?"> Pointing Upstack at your existing goal would mix Upstack's server-side conversions with whatever source is already firing into it (gtag, Shopify's native tag, GTM), which makes deduplication and quality comparison impossible. A dedicated Upstack goal keeps the data clean and lets you A/B the two goals before promoting Upstack to primary. </Accordion> <Accordion title="How do I migrate from a manual conversion goal to Upstack?"> Run both goals in parallel for at least one full conversion window. Keep your existing goal as primary and Upstack as secondary, confirm the volume and value reconcile, then follow the "Enable primary goal" guide to swap them. After the swap, demote your old goal to secondary so it stops influencing Smart Bidding. </Accordion> <Accordion title="Why doesn't Upstack support Enhanced Conversions directly?"> Upstack already sends the same hashed match keys Enhanced Conversions uses (`email`, `phone`, name, address) on every server-side event, so Google's match-rate logic applies automatically. Configuring Enhanced Conversions for web on top of the Upstack goal would not add data, and on the wrong goal it can cause duplicate or conflicting match logic. That is separate from the account-level enhanced conversions setup, which you do need. Google will not accept customer data over the API until the account has agreed to the terms and has enhanced conversions for leads turned on. The [Conversions API setup guide](/destinations/google-ads/how-to-set-up-google-ads-server-side-conversions-api-in-upstack-data) covers both. </Accordion> <Accordion title="When should I switch the Upstack goal to primary?"> Once the Upstack goal has logged conversions across a full bidding window (typically 7–14 days) and the volume and value reconcile within a few percent of your existing goal, it is safe to promote Upstack to primary. Smaller accounts may need longer to accumulate enough signal for Smart Bidding to retrain. </Accordion> </AccordionGroup> ## Related <CardGroup> <Card title="Conversion API forwarding" icon="lightbulb" href="/concepts/conversion-api-forwarding"> How Upstack Signal forwards events to ad platforms via server-to-server APIs. </Card> <Card title="Attribution and reporting" icon="chart-line" href="/concepts/attribution-and-reporting"> How Upstack attributes conversions back to the campaigns that drove them. </Card> <Card title="Events not reaching destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # Complete How-To Guide for Onboarding Google Ads in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/google-ads/complete-how-to-guide-for-onboarding-google-ads-in-upstack-data Onboard Google Ads in Upstack Data — create a purchase goal with Enhanced Conversions, connect your account, and forward server-side conversions for accurate Smart Bidding signal. <Info> **New to Upstack?** Follow the [getting started guide](/quickstart/install-on-shopify) for a streamlined onboarding walkthrough. </Info> <Tip> **Quick Summary** * Create a new Purchase conversion goal named **"Purchase - UpstackData"** in [Google Ads](https://ads.google.com). * Configure the goal with a **30-day click-through window and Enhanced Conversions enabled**. * Set up the Google Ads destination in the Upstack dashboard with your **Conversion ID and Conversion Label**. * Switch the goal to **Primary optimization** after 4–7 days. </Tip> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * **Admin** or **Manager** access to a **Google Ads** account * Permission to create or edit **conversion actions** in Google Ads <Steps> <Step title="Create a New Purchase Conversion Goal"> Help guide to complete this step: [How to Create a New Upstack Data Purchase Goal in Google Ads →](/destinations/catalog/google-ads/how-to-create-a-new-upstack-data-purchase-goal-in-google-ads) </Step> <Step title="Create and Configure Google Ads Pixel Destination in Upstack Data"> Help guide to complete this step: [How to Configure Google Ads Pixel Destination in Upstack Data →](/destinations/catalog/google-ads/how-to-configure-google-ads-destination-in-upstack-data) Where to find your Google Conversion ID and Label: [​How to Get Your Google Ads Conversion ID and Label →](/destinations/catalog/google-ads/how-to-get-your-google-ads-conversion-id-and-label) </Step> <Step title="Enable the Google Ads Upstack Purchase Goal and Switch to Primary Optimization Goal"> <Note> When creating a new Purchase Goal in Google Ads (Purchase - Upstack Data), we initially will set this as the secondary goal, for observation only. We advise to make this goal Primary after 4-7 days to allow the Goal to become active. All other Purchase goals are then set to secondary when Upstack becomes **Primary.** </Note> Help guide to complete this step: [How to Enable the Google Ads Upstack Purchase Goal and Switch to Primary Optimization Goal →](/destinations/catalog/google-ads/how-to-enable-the-google-ads-upstack-purchase-goal-and-switch-to-primary-optimization-goal) </Step> </Steps> <Tip> **Optional: enable server-side forwarding.** For maximum coverage, also turn on the Google Ads Conversions API so Upstack forwards events server-side even when the browser pixel is blocked. See [How to Set Up Google Ads Server-Side Conversions API in Upstack Data →](/destinations/catalog/google-ads/how-to-set-up-google-ads-server-side-conversions-api-in-upstack-data). </Tip> ## Verify the Setup After completing all three steps: * In the Upstack dashboard, navigate to **Events Destination** at [app.upstackdata.com/pixel/event-destinations](https://app.upstackdata.com/pixel/event-destinations) and confirm the Google Ads destination shows as **Healthy**. * In Google Ads, go to **Goals → Conversions → Summary** and confirm **"Purchase - UpstackData"** is listed and (after 4–7 days) marked **Primary**. * Place a test order on your store and check that the conversion appears in Google Ads within 24–48 hours. <Note> **Need help?** If you encounter any issues during setup or don't see expected improvements after 10 days, contact our support team with your Google Ads **Conversion ID** and **Conversion Label** and we'll help diagnose the problem. </Note> # How to Configure Google Ads Destination in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/google-ads/how-to-configure-google-ads-destination-in-upstack-data Configure the Google Ads destination in Upstack Data with your Conversion ID and Conversion Label to forward server-side purchases with Enhanced Conversions match keys. <Tip> **Quick Summary** * In the Upstack dashboard, click **"+ New Destination"** and select Google Ads. * In Google Ads, find your conversion under **Goals → Conversions → Summary**. * Open **Tag Setup** to reveal your **Conversion ID** and **Conversion Label**. * Paste both values into the Upstack dashboard and **Create Configuration**. </Tip> ## Tracking Method <Note> **Tracking Method** is set to **Browser + Server** by default, and this is the recommended way to run Google Ads. The two paths work independently — there is no deduplication between them. The browser tag forwards your purchase to the Conversion ID and Conversion Label configured above. The server side is configured separately in **Event Conversion Mappings**, where you can map as many events to conversion actions as you want. If you don't want to load the Google Ads tag in the browser, switch the Tracking Method to **Server**. See [Tracking Method](/concepts/tracking-method). </Note> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * **Admin** or **Manager** access to a **Google Ads** account * An existing **Purchase conversion action** in Google Ads (or follow [How to Create a New Upstack Data Purchase Goal in Google Ads](/destinations/catalog/google-ads/how-to-create-a-new-upstack-data-purchase-goal-in-google-ads) first) ## Configuration Steps <Steps> <Step title="Sign in to Upstack Data"> Sign in to Upstack Data at [app.upstackdata.com](https://app.upstackdata.com). </Step> <Step title="Add a new Google Ads destination"> * In the Upstack dashboard, navigate to **Events Destination** ([app.upstackdata.com/pixel/event-destinations](https://app.upstackdata.com/pixel/event-destinations)) * Click **"+ New Destination"** in the top-right corner of the page <img alt="Add New Destination" /> * In the **Select a Destination** popup, click **"Google Ads"** * Click **Next** <img alt="Select Google Ads destinations" /> </Step> <Step title="Find your conversion in Google Ads"> * In a new tab, sign in to [Google Ads](https://ads.google.com) * In the left-hand menu, navigate to **Goals → Conversions → Summary** <img alt="Google Ads menu with Goals and Conversions Summary options" /> *`Google Ads Conversions Summary Page`* Find your primary Purchase conversion (usually named **"Purchase - UpstackData"**) and click to open it. <img alt="Primary Purchase conversion event in Google Ads Conversions list" /> *`Example Primary Conversion Event`* <Note> **Note:** Your conversion may be named differently. Look for the primary event linked to your purchase conversion. </Note> </Step> <Step title="Open Tag Setup to reveal your IDs"> On the conversion detail page, scroll down to the **Tag Setup** section and click **"Use Google Tag Manager"**. <Note> For a step-by-step walkthrough, see [How to Get Your Google Ads Conversion ID and Label →](/destinations/catalog/google-ads/how-to-get-your-google-ads-conversion-id-and-label). </Note> <img alt="Tag Setup section with Use Google Tag Manager option" /> Google Ads displays your **Conversion ID** and **Conversion Label**. * **Conversion ID** — starts with `AW-` followed by 9–10 digits (e.g., `AW-123456789`) * **Conversion Label** — 11-character alphanumeric string (e.g., `ABc1d2EFG3h`) <img alt="Google Tag Manager showing Conversion ID and Conversion Label values" /> </Step> <Step title="Enter your Conversion ID and Conversion Label"> Back in the Upstack dashboard: * In the **Conversion ID** field, paste your full Conversion ID from Google Ads (e.g., `AW-123456789`). The `AW-` prefix is required. * In the **Conversion Label** field, paste your Conversion Label from Google Ads (e.g., `ABc1d2EFG3h`). <img alt="Upstack Google Ads destination form with Conversion ID and Label fields" /> </Step> <Step title="Create the configuration"> Click the **Create Configuration** button to save the setup. <img alt="Create Configuration button to save Google Ads destination" /> <Note> **Success! 🎉** You should see a confirmation message and the Google Ads destination will appear as **"Healthy"** in your destinations list. </Note> <img alt="Google Ads destination showing Healthy status in destinations list" /> </Step> </Steps> ## Verify the Setup To confirm the destination is working: * In the Upstack dashboard, the Google Ads destination should show **Healthy** status under **Events Destination**. * Place a test order on your store and check Google Ads **Goals → Conversions → Summary** within 24–48 hours to confirm the conversion is recorded. If the destination shows **Unhealthy** or no conversions arrive, double-check that: * The **Conversion ID** starts with `AW-` and matches the value shown in Google Ads. * The **Conversion Label** was copied without leading or trailing spaces. * The conversion action in Google Ads is enabled and not paused. If issues persist, contact Upstack Data support with your **Conversion ID** and **Conversion Label**. # How to Create a New Upstack Data Purchase Goal in Google Ads Source: https://docs.upstackdata.com/destinations/catalog/google-ads/how-to-create-a-new-upstack-data-purchase-goal-in-google-ads Create an Upstack Data purchase conversion goal in Google Ads with Enhanced Conversions enabled — required for server-side conversion forwarding from Upstack to Google. <Tip> **Quick Summary** * In Google Ads, navigate to **Goals → Conversions → Summary** and click **"+ Create conversion action"**. * Select **Conversions on a website**. * Choose **Purchase** as the goal type and select **Set up manually using a code**. * Name the conversion **"Purchase - UpstackData"**, set **Click-through conversion window** to **30 days**, and enable **Enhanced Conversions**. * **Save** to generate your Conversion ID and Conversion Label. </Tip> ## Prerequisites Before you start, you need: * **Admin** or **Manager** access to a **Google Ads** account * Permission to create conversion actions in Google Ads ## Step-by-Step Instructions <Steps> <Step title="Sign in to Google Ads"> Sign in to [Google Ads](https://ads.google.com). </Step> <Step title="Open the Conversions summary"> In the left-hand menu, navigate to **Goals → Conversions → Summary**. <img alt="Google Ads left menu with Goals, Conversions, and Summary navigation" /> </Step> <Step title="Create a new conversion action"> * Click the **"+ Create conversion action"** button * Select **"Conversions on a website"** by ticking the checkbox on the right side of the panel * Click **Save and continue** <img alt="Create conversion action button in Conversions Summary" /> <img alt="Select Conversions on a website option with checkbox" /> </Step> <Step title="Configure the Purchase goal"> * Select **"Purchase"** as the goal/conversion action * In the **"Choose an event to measure Purchase"** panel, under **"Create a new conversion action"**, select **"Set up manually using a code"** * Click **"Conversion settings"** to expand the section * Set the **Conversion name** to **"Purchase - UpstackData"** * Set **Click-through conversion window** to **30 days** <img alt="Set up manually using a code option with Purchase goal selected" /> `Example - select **Set up manually using a code** and **Purchase** as the Goal/Conversion action` <img alt="Conversion name field with Purchase UpstackData and 30 day window" /> `Example - Conversion name: **Purchase - UpstackData** and Click-through conversion window: **30 days**` </Step> <Step title="Enable Enhanced Conversions"> Check the **"Use enhanced conversion for conversion action"** option to enable **Enhanced Conversions**. Click **Done** to save the changes and close the panel. <img alt="Enhanced Conversions checkbox enabled for conversion action" /> <Note> **Note:** Enhanced Conversions improves match rates by using first-party customer data securely. </Note> </Step> <Step title="Save the configuration"> Click **Save and Continue** to complete the setup. <img alt="Save and Continue button to complete conversion setup" /> <Note> *If your Google Ads interface looks different, see:* ​\*\*[How to Create a Purchase Goal in Google Ads Using the Google Ads Tag (For Different Interface) →](/destinations/catalog/google-ads/how-to-create-a-purchase-goal-in-google-ads-using-the-google-ads-tag-for-different-interface)\*\* </Note> </Step> </Steps> ## What You'll Receive After saving, Google Ads displays: * **Conversion ID** — starts with `AW-` followed by 9–10 digits (e.g., `AW-123456789`) * **Conversion Label** — 11-character alphanumeric string (e.g., `ABc1d2EFG3h`) Use these values in your Upstack Data destination configuration. ## Verify the Setup To confirm the goal was created correctly: * Return to **Goals → Conversions → Summary** in Google Ads — the new **"Purchase - UpstackData"** conversion should appear in the list with a status of **Inactive** (it will become **Active** once it receives data). * Confirm the **Click-through conversion window** is **30 days** and **Enhanced Conversions** is enabled on the conversion's detail page. If the conversion is missing, refresh the page and check that you saved the action. If issues persist, contact Upstack Data support. # How to Enable the Google Ads Upstack Purchase Goal and Switch to Primary Optimization Goal Source: https://docs.upstackdata.com/destinations/catalog/google-ads/how-to-enable-the-google-ads-upstack-purchase-goal-and-switch-to-primary-optimization-goal Promote the Upstack Data purchase goal from secondary to primary in Google Ads after 4–7 days of data — switching optimization to server-side conversions for better Smart Bidding performance. <Tip> **Quick Summary** * Wait 4–7 days after creating the **"Purchase - UpstackData"** goal so Google can collect baseline data. * In Google Ads, navigate to **Goals → Summary** and click **Edit goals**. * Open the **Conversion action optimization** section. * Set **"Purchase - UpstackData"** as **Primary** and switch all other Purchase goals to **Secondary**. * Click **Save**. </Tip> ## Prerequisites Before you start, you need: * **Admin** or **Manager** access to the **Google Ads** account * The **"Purchase - UpstackData"** conversion already created and live for **4–7 days** (see [How to Create a New Upstack Data Purchase Goal in Google Ads →](/destinations/catalog/google-ads/how-to-create-a-new-upstack-data-purchase-goal-in-google-ads)) ## Importance of this Step <Note> When creating the **"Purchase - UpstackData"** goal in Google Ads, we initially set it as **Secondary** for observation only. This allows Google to collect baseline data without disrupting current optimization. After 4–7 days, switching to **Primary** activates the goal as the optimization target with sufficient data. </Note> ## Steps to Switch Your Purchase Goal <Steps> <Step title="Sign in to Google Ads"> Sign in to [Google Ads](https://ads.google.com). </Step> <Step title="Open the Goals summary"> In the left-hand menu, navigate to **Goals → Summary**. <img alt="Google Ads left menu with Goals and Summary navigation selected" /> </Step> <Step title="Find the Purchase conversions list"> On the Goals Summary page, scroll down to the **Purchase** conversion list. <img alt="Google Ads Goals Summary page showing Purchase conversion list" /> </Step> <Step title="Open the goal settings"> Click **Edit goals** to open the goal settings panel. <img alt="Edit goals button in Google Ads conversion settings" /> </Step> <Step title="Expand Conversion action optimization"> Click **"Conversion action optimization"** to expand the section. <img alt="Conversion action optimization section expanded in goal settings" /> </Step> <Step title="Set Purchase - UpstackData as Primary"> Set **"Purchase - UpstackData"** as **Primary**. <img alt="Purchase UpstackData goal set as Primary conversion action" /> </Step> <Step title="Set other Purchase goals to Secondary"> Set all other Purchase goals to **Secondary**. <Warning> Ensure only **one Primary** Purchase conversion goal is active at a time. </Warning> <img alt="Other Purchase goals switched to Secondary status" /> <img alt="Goal list showing Purchase UpstackData as Primary with others as Secondary" /> `Example: Purchase - UpstackData is Primary and other Purchase conversions are Secondary` </Step> <Step title="Save the changes"> Click **Save** to apply the new settings. <img alt="Save button to apply goal optimization changes in Google Ads" /> </Step> </Steps> ## Verify the Setup To confirm the switch was applied: * Return to **Goals → Summary** in Google Ads — **"Purchase - UpstackData"** should be labelled **Primary** and all other Purchase goals should be labelled **Secondary**. * Open one of your active Search or Performance Max campaigns and confirm it is optimizing against the new Primary goal. If the goal still appears as Secondary, refresh the page and re-open **Edit goals** to confirm the change saved. If issues persist, contact Upstack Data support. # How to Get Your Google Ads Conversion ID and Label Source: https://docs.upstackdata.com/destinations/catalog/google-ads/how-to-get-your-google-ads-conversion-id-and-label Find your Google Ads Conversion ID and Conversion Label from an existing purchase conversion — both required to configure the Upstack Data Google Ads destination. <Tip> **Quick Summary** * In Google Ads, navigate to **Goals → Conversions → Summary**. * Click your **Purchase conversion** to open its detail page. * Scroll to **Tag Setup** and click **"Use Google Tag Manager"**. * Copy the **Conversion ID** (`AW-` followed by 9–10 digits) and the **Conversion Label** (11-character alphanumeric string). </Tip> ## Prerequisites Before you start, you need: * **Admin** or **Manager** access to a **Google Ads** account * An existing Purchase conversion action (e.g., **"Purchase - UpstackData"**). If you haven't created one yet, see [How to Create a New Upstack Data Purchase Goal in Google Ads →](/destinations/catalog/google-ads/how-to-create-a-new-upstack-data-purchase-goal-in-google-ads). ## Steps to Find Your Conversion ID and Label <Steps> <Step title="Sign in to Google Ads"> Sign in to [Google Ads](https://ads.google.com). </Step> <Step title="Open the Conversions summary"> In the left-hand menu, navigate to **Goals → Conversions → Summary**. <img alt="Google Ads left menu with Goals, Conversions, and Summary options" /> </Step> <Step title="Open your Purchase conversion"> Find and click your **"Purchase - UpstackData"** conversion (or your existing purchase conversion). <img alt="Purchase UpstackData conversion in Conversions Summary list" /> </Step> <Step title="Scroll to Tag Setup"> On the conversion detail page, scroll down to the **Tag Setup** section. <img alt="Tag Setup section" /> </Step> <Step title="Click Use Google Tag Manager"> Click **"Use Google Tag Manager"**. <img alt="Use Google Tag Manager button in Tag Setup section" /> `Use Google Tag Manager button` </Step> <Step title="Copy your Conversion ID and Conversion Label"> Google Ads displays: * **Conversion ID** — starts with `AW-` followed by 9–10 digits (e.g., `AW-123456789`) * **Conversion Label** — 11-character alphanumeric string (e.g., `ABc1d2EFG3h`) <img alt="Conversion ID and Conversion Label values displayed in GTM setup" /> Copy both values, then paste them into your Google Ads destination in the Upstack dashboard ([app.upstackdata.com/pixel/event-destinations](https://app.upstackdata.com/pixel/event-destinations)). Click **Create Configuration** in the Upstack dashboard to save the setup. <img alt="Upstack Google Ads destination form with ID and Label fields filled" /> </Step> </Steps> ## Verify the Setup To confirm you copied the correct values: * The **Conversion ID** should match the format `AW-` + 9–10 digits. * The **Conversion Label** should be exactly 11 characters (letters and digits, no spaces). * After saving in the Upstack dashboard, the Google Ads destination should appear as **Healthy** under **Events Destination**. If the destination shows **Unhealthy**, re-open the **Tag Setup** in Google Ads to confirm both values were copied without leading or trailing spaces. If issues persist, contact Upstack Data support. # How to Set Up Google Ads Server-Side Conversions API in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/google-ads/how-to-set-up-google-ads-server-side-conversions-api-in-upstack-data Connect Google Ads with OAuth and map your tracked events to conversion actions so Upstack forwards purchases server-side via the Google Ads Conversions API — independent of the browser pixel. <Tip> **Quick Summary** * Open your Google Ads destination in Upstack and set **Tracking Method** to **Browser + Server**. * Click **Connect Google Ads** and grant Upstack offline access during the Google consent screen. * Select the **Google Ads account** you want to forward conversions to. * In **Event Conversion Mappings**, link each tracked event to a conversion action — use **Create & Link** to create dedicated Upstack conversion actions automatically. * Save the configuration and confirm the destination shows **Healthy**. </Tip> ## What the Conversions API path adds The browser pixel (Conversion ID and Conversion Label) tracks your **primary** conversion from the visitor's browser. The server-side **Conversions API** runs alongside it: Upstack sends each tracked event directly to Google Ads server-to-server, attached to its own dedicated conversion action. Server-side delivery reaches Google even when the browser pixel is blocked by ad blockers, ITP, or cookie restrictions, and it carries the original click identifier (`gclid`, `gbraid`, or `wbraid`) plus SHA-256 hashed customer data for Enhanced Conversions match-rate uplift. <Note> The Conversions API and the browser pixel run **independently and in parallel**. Enabling server-side forwarding does not change or disable your pixel — the pixel keeps tracking your primary conversion using the **Conversion ID** on the destination. </Note> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * An existing **Google Ads destination** in Upstack with the **Conversion ID** and **Pixel ID** already filled in. If you haven't set those yet, follow [How to Configure Google Ads Destination in Upstack Data →](/destinations/catalog/google-ads/how-to-configure-google-ads-destination-in-upstack-data) first. * **Admin** or **Manager** access to a **Google Ads** account, with permission to create or edit **conversion actions** * The Google account you sign in with during OAuth must have access to the Google Ads account you want to forward to (including the manager/MCC account, if you use one) * **Enhanced conversions** switched on in the Google Ads account. Step 2 below shows what to check ## Setup Steps <Steps> <Step title="Open your Google Ads destination"> Sign in to Upstack Data at [app.upstackdata.com](https://app.upstackdata.com), navigate to **Events Destination** ([app.upstackdata.com/pixel/event-destinations](https://app.upstackdata.com/pixel/event-destinations)), and open your **Google Ads** destination. If you haven't created the destination yet, add it first using [How to Configure Google Ads Destination in Upstack Data →](/destinations/catalog/google-ads/how-to-configure-google-ads-destination-in-upstack-data). </Step> <Step title="Check enhanced conversions on the Google Ads account"> In Google Ads, go to **Goals → Conversions → Settings** and open the **Enhanced conversions** section. Two things need to be true before Upstack can deliver anything: 1. The **customer data terms** are accepted. If you see a prompt to review and agree, accept it. 2. **Enhanced conversions for leads** is turned on. Both are one-time account settings and both are required, even if you only send purchases. Upstack attaches hashed email, phone, and address to every server-side event, and Google refuses the whole upload if either is missing. <Note> Using a manager (MCC) account? Check the account that owns the conversion actions, not the manager account. </Note> </Step> <Step title="Turn on server-side delivery"> Set the destination's **Tracking Method** to **Browser + Server** (the default) or **Server**. The server-side connection panel appears below the pixel fields. See [Tracking Method](/concepts/tracking-method). </Step> <Step title="Connect Google Ads with OAuth"> In the **Connect Google Ads** card, click **Connect Google Ads**. A Google consent screen opens. Sign in with a Google account that has access to your Google Ads account and grant the requested permissions. <Warning> You must grant **offline access** so Google returns a refresh token. If you skip or revoke that permission, Upstack shows the error *"Google did not return a refresh token. Make sure you grant offline access."* — reconnect and accept all requested scopes. </Warning> On success the panel updates to **Google Ads Server-Side Connected** with the connection timestamp. </Step> <Step title="Select your Google Ads account"> Under **Google Ads Account**, choose the account you want to forward conversions to. The dropdown lists every account your connected Google login can access, shown as **Account Name (10-digit ID)**. <Note> If you manage accounts through a manager (MCC) account, pick the individual advertising account that owns the conversions — not the manager account itself. </Note> </Step> <Step title="Map events to conversion actions"> The **Event Conversion Mappings** table loads pre-filled with common events so you can map them quickly: * **Purchase** * **NC Purchase** (new customer purchase) * **Subscription Initial Purchase** * **Subscription Recurring Purchase** * **Add to Cart** * **Initiate Checkout** For each row, set the **Conversion Action** the event should report to: * **Pick an existing action** from the dropdown, or * Choose **+ Create new in Google Ads** to create a dedicated conversion action for that event (named *" - Upstack (Server-side)"*). Use **+ Add Mapping** to add a row for a custom event (type the event name into the event combobox), and the trash icon to remove any event you don't want to forward. <Tip> To set up everything at once, fill in the event names you want and click **Create & Link**. Upstack creates a dedicated Google Ads conversion action for every row that doesn't have one yet and links it for server-side forwarding. Remove any rows you don't need **before** clicking it. </Tip> </Step> <Step title="Save the configuration"> Save the destination. You need at least one complete mapping (an event name **and** a conversion action) for server-side forwarding to start. <Note> If no row has both an event and a conversion action, Upstack shows *"No server-side events will be forwarded yet."* The pixel keeps running regardless — only server-side forwarding is paused until you complete a mapping. </Note> </Step> </Steps> ## Promote new conversion actions carefully Conversion actions that Upstack creates start as **secondary** (observation-only) goals. As with any new Google Ads conversion, run them alongside your existing setup for **7–14 days** and confirm the volume reconciles before promoting one to **primary**. See [How to Enable the Google Ads Upstack Purchase Goal and Switch to Primary Optimization Goal →](/destinations/catalog/google-ads/how-to-enable-the-google-ads-upstack-purchase-goal-and-switch-to-primary-optimization-goal). ## Verify the Setup After saving: * The Google Ads destination should show **Healthy** under **Events Destination** in the Upstack dashboard. * Place a test order on your store, then check **Goals → Conversions → Summary** in Google Ads within 24–48 hours and confirm the mapped conversion action records the event. ## FAQ & Troubleshooting <AccordionGroup> <Accordion title="I finished setup but no conversions are arriving"> Re-check step 2. The most common cause is the Google Ads account missing one of the two enhanced conversions settings. Google rejects the whole upload rather than individual events, so an account that is not fully set up receives nothing at all rather than a reduced number of conversions. </Accordion> <Accordion title="Do I still need the pixel Conversion ID and Pixel ID?"> They power the browser pixel, which tracks your primary conversion. The Conversions API is an additional server-side path that forwards events to their own conversion actions, so it does not replace the pixel. They are only required while the browser pixel is on, which is the default. If you set the destination’s **Tracking Method** to **Server**, both fields become optional. See [Tracking Method](/concepts/tracking-method). </Accordion> <Accordion title="Why does Upstack create separate conversion actions instead of using my pixel conversion?"> Sending server-side events into the same conversion the pixel fires would mix two sources into one goal and make deduplication and quality comparison impossible. Dedicated server-side conversion actions keep the data clean and let you compare them against your existing goals before promoting any to primary. </Accordion> <Accordion title="I got an error that the conversion action name already exists."> Google reserves the names of conversion actions even after they're removed, so creating *"Purchase - Upstack (Server-side)"* can fail if one existed before (*"A Google Ads conversion action named … already exists in this account"*). Give the action a different display name and try again. </Accordion> <Accordion title="A conversion action shows '— removed in Google Ads'."> The action was deleted on the Google Ads side after it was mapped in Upstack. Pick a different existing action or create a new one for that event, then save. </Accordion> <Accordion title="I use a manager (MCC) account — does that work?"> Yes. Connect with a Google login that can access the account through the manager account, then select the individual advertising account that owns the conversions. Upstack handles the manager-account context when it forwards events. </Accordion> <Accordion title="How do I turn off server-side forwarding?"> Click **Disconnect** in the connection panel. This clears the stored OAuth connection, the selected account, and all event mappings. The browser pixel keeps tracking your primary conversion. </Accordion> </AccordionGroup> ## Related <CardGroup> <Card title="Configure destination" icon="sliders" href="/destinations/catalog/google-ads/how-to-configure-google-ads-destination-in-upstack-data"> Set the pixel Conversion ID and Pixel ID on the Google Ads destination. </Card> <Card title="Enable primary goal" icon="circle-check" href="/destinations/catalog/google-ads/how-to-enable-the-google-ads-upstack-purchase-goal-and-switch-to-primary-optimization-goal"> Promote a conversion to primary so Smart Bidding optimizes against it. </Card> <Card title="Conversion API forwarding" icon="lightbulb" href="/concepts/conversion-api-forwarding"> How Upstack Signal forwards events to ad platforms via server-to-server APIs. </Card> <Card title="Events not reaching destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # Klaviyo Source: https://docs.upstackdata.com/destinations/catalog/klaviyo Forward identity-resolved customer events and profiles to Klaviyo to power email and SMS automation, recover 30-50% more abandoned cart and checkout revenue with Upstack-enhanced flows. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> ## What it does Klaviyo is connected through Upstack Flows, the product that handles event delivery to marketing automation platforms. Upstack Flows sends enriched event and profile data to Klaviyo so its flows — abandoned cart, browse abandonment, checkout abandonment, post-purchase — fire on a much larger pool of visitors than Shopify and Klaviyo's native integration can identify on their own. The practical impact is more recovered revenue. Anonymous visitors that Shopify cannot match to an email get matched by Upstack's identity resolution and pushed into Klaviyo as enriched profiles, which means more abandoned cart flows fire, more browse abandonment emails send, and more SMS messages reach the inbox. ## How it works Upstack Flows posts events to Klaviyo's API as **custom metrics** and creates or updates Klaviyo **profiles** with identity data resolved by Upstack ID. When the Upstack Pixel sees an anonymous visitor add to cart, identity resolution attempts to match the session to a known customer — using cookies, click IDs, and cross-session behavioral data — and attaches the email before the event is forwarded to Klaviyo. Klaviyo then has enough information to trigger flows that would otherwise never fire. Profiles synced from Upstack include standard properties (`$first_name`, `$last_name`, `$city`, `$region`) plus custom properties from Upstack's identity resolution, so they are immediately usable for segmentation. ## How Upstack works with Klaviyo Klaviyo already knows many of your customers. Upstack builds on that: anyone who clicks a Klaviyo email gets looked up and resolved through Upstack's identity engine. * **Identity enrichment.** Upstack hooks into Klaviyo to attach resolved identity data to every event it sends. * **Re-identification.** When a returning visitor can't be identified by standard Klaviyo tracking — cookies expired, new device, different browser — Upstack re-identifies them and fires enriched events back to Klaviyo. * **Backup abandonment flows.** These enriched events trigger a second set of abandonment flows that only fire for visitors Klaviyo couldn't identify on its own. * **Result.** Roughly 40% more people flow back through your abandonment sequences. <Info> The Upstack team handles Klaviyo flow setup during onboarding. They'll request access to your Klaviyo account and configure UTM tracking, flow cloning, triggers, and exclusion filters. The setup guides above describe what gets configured so you understand the setup. </Info> ## Best practices <Tip> **Expand to 5-email sequences.** Many brands run 1–2 emails per abandonment flow. Adding more touchpoints captures revenue from slower decision-makers. </Tip> <Tip> **Reduce the re-entry window.** Drop from 14 days to roughly 5 days. If someone comes back and abandons again, put them back in the flow — they're still shopping. </Tip> <Warning> **Disable flows from previous tools.** If you previously used Elevar, Triple Whale, or another tool that created secondary Klaviyo flows, disable those flows before enabling Upstack's. Running both causes duplicate emails. </Warning> ## Setup guides <CardGroup> <Card title="Klaviyo onboarding guide" icon="route" href="/destinations/catalog/klaviyo/complete-how-to-guide-for-onboarding-klaviyo-in-upstack-data"> End-to-end walkthrough for connecting Klaviyo to Upstack Data. </Card> <Card title="Configure Klaviyo destination" icon="sliders" href="/destinations/catalog/klaviyo/how-to-configure-klaviyo-destination-in-upstack-data"> Configure the Klaviyo destination inside Upstack Data. </Card> <Card title="Generate Klaviyo API key" icon="key" href="/destinations/catalog/klaviyo/how-to-generate-klaviyo-api-key-for-upstack-data"> Create a Klaviyo private API key with the right scopes for Upstack. </Card> <Card title="Set up abandonment flows" icon="bell" href="/destinations/catalog/klaviyo/abandonment-flows/complete-guide-to-setting-up-upstack-abandonment-flows-in-klaviyo"> Build the recommended Klaviyo flows powered by Upstack-enriched events. </Card> <Card title="Clone standard flows" icon="copy" href="/destinations/catalog/klaviyo/abandonment-flows/how-to-clone-your-standard-flows-in-klaviyo"> Clone Klaviyo's standard flows as a starting point for Upstack-powered versions. </Card> <Card title="Cross-flow exclusion filters" icon="filter" href="/destinations/catalog/klaviyo/abandonment-flows/how-to-add-cross-flow-exclusion-filters-in-klaviyo"> Prevent the same visitor from receiving overlapping flow messages. </Card> <Card title="Enable UTM tracking" icon="link" href="/destinations/catalog/klaviyo/abandonment-flows/how-to-enable-utm-tracking-in-klaviyo"> Tag Klaviyo flow links with UTMs so attribution flows back into Upstack. </Card> </CardGroup> ## Event mapping | Upstack event | Klaviyo metric | Key properties | Notes | | ------------------ | ------------------ | ------------------------------------------------------------ | --------------------------------------- | | `ViewContent` | `Viewed Product` | `ProductName`, `ProductID`, `Price`, `ImageURL` | Powers browse abandonment flows | | `AddToCart` | `Added to Cart` | `ProductName`, `ProductID`, `Price`, `Quantity`, `CartValue` | Powers abandoned cart flows | | `InitiateCheckout` | `Started Checkout` | `CartValue`, `ItemCount`, `CheckoutURL` | Powers checkout abandonment flows | | `Purchase` | `Placed Order` | `OrderID`, `Revenue`, `Items`, `DiscountCodes` | Powers post-purchase and win-back flows | Upstack also syncs profile properties (`$first_name`, `$last_name`, `$city`, `$region`) plus custom properties derived from identity resolution. These are available for Klaviyo segmentation immediately after sync. ## FAQ <AccordionGroup> <Accordion title="How does Upstack increase the number of abandoned cart flows that fire?"> Shopify can only fire Klaviyo's abandoned cart flow when it knows the visitor's email — typically because the visitor logged in or reached the email step in checkout. Upstack identifies many more visitors than that by matching anonymous sessions to known customer profiles using cookies, click IDs, and cross-session behavior. When Upstack identifies an anonymous cart with an email, it forwards an enriched `Added to Cart` event to Klaviyo, which lets the abandoned cart flow fire on visitors that Shopify could not identify. </Accordion> <Accordion title="Will I see duplicate events if Klaviyo's native Shopify integration is also active?"> You can. The recommended approach is to disable the Klaviyo metrics in Shopify's native integration that overlap with the events Upstack is forwarding (`Viewed Product`, `Added to Cart`, `Started Checkout`, `Placed Order`). Keep the native integration enabled for any events Upstack is not handling. </Accordion> <Accordion title="What permissions does the Klaviyo API key need?"> Upstack only needs three scopes on the private API key: `Events: Write`, `Profiles: Write`, and `Lists: Write`. Avoid using a full-access key — least-privilege scopes keep the integration safe. The setup guide above walks through generating the key with the correct scopes. </Accordion> <Accordion title="Are new profiles created in Klaviyo, or only existing ones updated?"> Both, by default. When Upstack identifies a visitor with an email that does not yet exist in Klaviyo, it creates a new Klaviyo profile. When the email already exists, Upstack enriches the existing profile with new properties and event history. You can disable either behavior in the destination settings. </Accordion> <Accordion title="How do I know events are arriving in Klaviyo?"> In Klaviyo, open **Analytics → Metrics**. Upstack-forwarded events appear as custom metrics (for example, `Added to Cart` from Upstack) and start populating within a few minutes of storefront activity. To trace a specific visitor, find the profile in Klaviyo and check the **Activity Feed**. </Accordion> </AccordionGroup> ## Troubleshooting <AccordionGroup> <Accordion title="Upstack events not appearing in Klaviyo"> If events are showing in the Upstack Live Event Stream but not arriving in Klaviyo: **Steps to fix:** 1. Confirm the Klaviyo destination shows **Active** (green) in the Upstack dashboard 2. Verify your Private API key has the required scopes (`Events: Write`, `Profiles: Write`, `Lists: Write`) — read-only keys cannot receive events 3. In Klaviyo, go to **Analytics → Metrics** and search for events containing "Upstackified" — they may be arriving under a different name than expected 4. If the destination status is red, disconnect and reconnect with a fresh API key </Accordion> <Accordion title="Duplicate abandonment emails"> Customers receiving emails from both your standard flows and Upstack flows means mutual exclusion filters are missing or misconfigured. **Steps to fix:** 1. Open both the standard and Upstack versions of the flow in Klaviyo 2. Verify each flow has a cross-flow exclusion filter: "Has received email 0 times in last 7 days where Flow = \[other flow name]" 3. If filters are in place but duplicates persist, check that the flow names in the filters match exactly (including the " - Upstack Data" suffix) 4. Disable flows from previous tools (Elevar, Triple Whale) if they are still active </Accordion> </AccordionGroup> <Note> For additional troubleshooting beyond Klaviyo-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/destination-shows-disconnected). </Note> ## Related <CardGroup> <Card title="Data enrichment" icon="magnifying-glass-plus" href="/concepts/data-enrichment"> How Upstack Enrichment improves visitor identification — the foundation of Flows recovery. </Card> <Card title="Identity resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack ID connects anonymous sessions to known customers with email addresses. </Card> <Card title="Destinations overview" icon="arrow-right-from-bracket" href="/destinations/catalog/overview"> How Upstack Signal and Upstack Flows power different types of destinations. </Card> <Card title="Events not reaching destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # How to boost Klaviyo abandonment revenue with Upstack Source: https://docs.upstackdata.com/destinations/catalog/klaviyo/abandonment-flows/boost-klaviyo-abandonment-revenue Recover 30-40% more abandoned cart, browse, and checkout sessions by enabling Upstack's identity resolution alongside Klaviyo's native tracking. Upstack's Klaviyo identity enrichment identifies returning visitors that Klaviyo's native tracking misses, then pushes those profiles to Klaviyo in real time so your abandonment flows trigger for sessions that would otherwise be lost. Brands using this setup typically see 30–40% more profiles entering abandonment flows, directly increasing revenue from browse, cart, and checkout abandonment emails. This guide explains how the enrichment works, how to set up the "waterfall" flow architecture alongside your existing Klaviyo flows, and best practices for maximizing incremental revenue without over-messaging customers. ## The problem: Klaviyo misses returning visitors Klaviyo's abandonment flows are among the highest-revenue automated flows for DTC brands. But they only trigger when Klaviyo can identify who the visitor is, and Klaviyo's native tracking has significant blind spots. ### When Klaviyo loses identity * **Cross-device sessions.** A customer clicks your Instagram ad on their phone, browses products, then switches to their laptop. Klaviyo's browser cookie on the phone has no connection to the laptop session — that session is anonymous and no flow triggers. * **Cookie expiration.** Safari and most iOS browsers expire first-party cookies set via JavaScript within 7 days. A customer who visited 8 days ago and returns today looks like a brand-new anonymous visitor. * **In-app browser to default browser.** A customer taps a link in the Instagram or Facebook app, which opens an in-app browser with isolated cookie storage. When they later open Safari or Chrome on the same device, the session doesn't carry over. * **Ad blocker interference.** Klaviyo's client-side tracking JavaScript can be blocked by ad blockers, which roughly 30% of desktop users run. These visitors are completely invisible to Klaviyo's identification system. The cumulative effect: Klaviyo's native tracking typically identifies only 60–70% of visitors who could be matched to a known profile. The remaining 30–40% browse, add to cart, or start checkout — and leave without triggering any abandonment flow. ## How Upstack's Klaviyo identity enrichment works Upstack's [identity resolution](/pixel/identity-resolution) engine operates server-side, independent of the visitor's browser. It identifies returning visitors using signals that survive the limitations Klaviyo's client-side tracking faces: <Steps> <Step title="Server-side identity matching"> When a visitor arrives, Upstack matches server-side signals — IP address, user agent, device fingerprint, and hashed identifiers from previous sessions — against its identity graph. This works even when cookies are expired, the device is different, or the browser is blocking tracking scripts. </Step> <Step title="Session stitching"> Upstack connects fragmented sessions across devices and browsers into a single identity. The customer who browsed on their phone and returned on their laptop is recognized as the same person. </Step> <Step title="Real-time profile push to Klaviyo"> When Upstack identifies a visitor that Klaviyo doesn't recognize, it pushes the resolved profile — including email, browsing activity, and cart contents — to Klaviyo via API in real time. This enables Klaviyo flows to trigger for sessions that would otherwise be anonymous. </Step> </Steps> The result: abandonment flows fire for a significantly larger pool of identified sessions, without changing anything about your email content or flow logic. ## The "waterfall" flow architecture The recommended setup runs Upstack-triggered flows alongside your existing Klaviyo-native flows — not instead of them. Klaviyo's native tracking catches what it can, and Upstack catches what Klaviyo misses. <Tip> **Don't replace your native Klaviyo flows.** They serve different visitor pools. The goal is to add incremental coverage, not swap one set of flows for another. </Tip> ### How it works ``` Visitor arrives on your store │ ├── Klaviyo identifies them (cookie match, logged in, etc.) │ └── Native Klaviyo flow triggers → abandonment email sent │ └── Klaviyo does NOT identify them └── Upstack identifies them server-side └── Pushes profile to Klaviyo └── Upstack-triggered flow fires → abandonment email sent ``` Both paths lead to the same outcome — an abandonment email — but they catch different pools of visitors. The mutual exclusion window (covered below) prevents anyone from receiving both. ## Setup steps For complete onboarding, see [Onboarding Klaviyo in Upstack Data](/destinations/catalog/klaviyo/complete-how-to-guide-for-onboarding-klaviyo-in-upstack-data) and [Setting up Upstack abandonment flows in Klaviyo](/destinations/catalog/klaviyo/abandonment-flows/complete-guide-to-setting-up-upstack-abandonment-flows-in-klaviyo). The summary below covers the conceptual setup. <Steps> <Step title="Connect Klaviyo as a destination in Upstack"> Configure the Klaviyo destination so Upstack can push identified profiles and event data. Full instructions: [Klaviyo destination](/destinations/catalog/klaviyo). Once connected, Upstack begins sending identified profiles and their event data to Klaviyo when it resolves visitors that Klaviyo's native tracking missed. </Step> <Step title="Clone your Browse Abandonment flow"> 1. In Klaviyo, navigate to **Flows** and find your existing Browse Abandonment flow. 2. Clone the flow. 3. Rename the clone with the **` - Upstack Data`** suffix — for example, `Browse Abandonment - Upstack Data` — so you can distinguish it from the standard flow. Detailed walkthrough: [How to clone your standard flows in Klaviyo](/destinations/catalog/klaviyo/abandonment-flows/how-to-clone-your-standard-flows-in-klaviyo). </Step> <Step title="Change the trigger to the Upstackified Klaviyo metric"> In the cloned flow, edit the trigger and change the source to the matching Upstack-emitted Klaviyo metric: * Browse Abandonment → **Viewed Product - Upstackified** * Cart Abandonment → **Added to Cart - Upstackified** * Checkout Abandonment → **Started Checkout - Upstackified** * Site Abandonment → **Active on Site - Upstackified** Upstack pushes these events to Klaviyo for sessions identified server-side rather than by Klaviyo's native tracking. </Step> <Step title="Add a 30-minute delay offset"> In the Upstack copy of the flow, add **+30 minutes** to the first wait step compared to the standard flow (for example, `1 hour` becomes `1 hour 30 minutes`). This serves two purposes: * It gives Klaviyo's native tracking time to identify the visitor on its own. If Klaviyo picks them up within those 30 minutes, the mutual exclusion filter (next step) prevents the Upstack flow from sending. * It aligns with the typical window in which visitors are most likely to return on their own, before the abandonment email is most effective. </Step> <Step title="Set mutual exclusion filters"> Add a profile filter on each flow's trigger so visitors don't receive abandonment emails from both flows: 1. On the **standard** flow, add: **Has received email 0 times in last 7 days where Flow = `[Upstack copy of the flow]`** (for example, `Abandoned Cart - Upstack Data`). 2. On the **Upstack copy** of the flow, add the reverse filter: **Has received email 0 times in last 7 days where Flow = `[Standard flow]`** (for example, `Abandoned Cart`). This 7-day mutual exclusion window prevents over-messaging. Detailed walkthrough: [Add cross-flow exclusion filters in Klaviyo](/destinations/catalog/klaviyo/abandonment-flows/how-to-add-cross-flow-exclusion-filters-in-klaviyo). </Step> <Step title="Repeat for Cart, Checkout, and Site Abandonment"> Follow the same process for your Cart Abandonment, Checkout Abandonment, and Site Abandonment flows: clone with the ` - Upstack Data` suffix, change the trigger to the corresponding `*- Upstackified` event, add the 30-minute delay offset, and set mutual exclusion filters in both directions. </Step> <Step title="Match email content and step structure"> Your Upstack-triggered flows should use the same email templates, timing between steps, and step statuses (live/draft/manual) as your native flows. The visitor experience should be identical regardless of which flow they entered through — the only difference is how they were identified. </Step> <Step title="Set flows live and monitor"> 1. Set each Upstack flow to **Live** status. 2. Monitor performance over the first 7 days to verify events are flowing and emails are sending. </Step> </Steps> <Warning> **Mutual exclusion filters are required.** Without them, a customer identified by both Klaviyo and Upstack will receive duplicate abandonment emails. Always configure the 7-day exclusion in both directions. </Warning> ## Expected results Brands implementing the waterfall setup typically see: | Metric | Before enrichment | After enrichment | | ----------------------------------- | ----------------- | ---------------- | | Profiles entering abandonment flows | Baseline | +30–40% | | Browse abandonment flow revenue | Baseline | +25–35% | | Cart abandonment flow revenue | Baseline | +20–30% | | Total email-attributed revenue | Baseline | Measurable lift | The exact lift depends on your existing Klaviyo identification rate, traffic volume, and how much of your audience shops across multiple devices or returns after cookie expiration. Brands with high mobile and social media traffic see the largest improvement because those channels produce the most cross-device and in-app browser sessions. ## Best practices ### Run both flow sets in parallel — indefinitely Don't turn off your native Klaviyo flows when Upstack flows are running. They serve different visitor pools. Disabling native flows means you lose coverage for the visitors Klaviyo already identifies successfully. ### Track attribution separately Use UTM parameters to distinguish Upstack-triggered emails from native Klaviyo emails: * Native flow: `utm_source=klaviyo&utm_medium=email&utm_campaign=browse_abandon` * Upstack flow: `utm_source=klaviyo&utm_medium=email&utm_campaign=browse_abandon_upstack` This lets you measure incremental revenue contribution separately from your existing Klaviyo revenue — critical for understanding ROI. ### Monitor flow performance weekly In your first month, check these metrics weekly for each Upstack flow: * **Flow entry rate.** How many profiles are entering the Upstack flows? If it's near zero, the Klaviyo connection or trigger configuration may need attention. * **Email open and click rates.** These should be comparable to your native flows. If significantly lower, the identified profiles may be lower quality or the timing may need adjustment. * **Revenue per recipient.** The key metric. Compare this between native and Upstack flows to understand incremental value. * **Unsubscribe rate.** Monitor closely in the first two weeks. If Upstack flows show elevated unsubscribes, consider extending the delay or tightening exclusion filters. ### Adjust the delay window if needed The 30-minute delay is a starting point. If you find significant overlap between native and Upstack flows (visible as a high exclusion filter rate on the Upstack side), extend the delay to 45 or 60 minutes. If you're seeing very little overlap, you can shorten it to 15 minutes to trigger faster. ## Frequently asked questions <AccordionGroup> <Accordion title="Will Upstack replace my existing Klaviyo flows?"> No. Upstack's Klaviyo enrichment is designed to run alongside your existing flows, not replace them. Your native Klaviyo flows continue to catch visitors that Klaviyo identifies on its own. Upstack flows catch the visitors Klaviyo misses. Both run in parallel with mutual exclusion filters to prevent overlap. </Accordion> <Accordion title="How does Upstack identify visitors that Klaviyo can't?"> Upstack uses server-side identity resolution — matching visitors through a combination of server-side signals (IP, user agent, device fingerprint, hashed identifiers) against an identity graph built from previous sessions. This works independent of browser cookies, so it survives cross-device transitions, cookie expiration, and in-app browser isolation that break Klaviyo's client-side tracking. </Accordion> <Accordion title="Will this cause customers to receive duplicate emails?"> Not if you set up mutual exclusion filters correctly. The 7-day exclusion window ensures that a customer identified by both Klaviyo and Upstack only receives one abandonment email. The 30-minute delay on Upstack flows gives Klaviyo's native tracking first priority. </Accordion> <Accordion title="How long does it take to see results?"> You should see profiles entering Upstack flows within 24 hours of going live. Meaningful revenue data typically requires 7–14 days of flow activity, depending on your traffic volume and conversion rates. </Accordion> <Accordion title="Can I use Upstack identity enrichment for flows other than abandonment?"> Yes. While abandonment flows are the highest-impact use case, Upstack's identified profiles can trigger any Klaviyo flow — win-back campaigns, post-purchase sequences, or custom flows based on specific browsing behavior. The same waterfall principle applies. </Accordion> </AccordionGroup> ## Related <CardGroup> <Card title="Klaviyo destination" icon="plug" href="/destinations/catalog/klaviyo"> Configure the Klaviyo destination to enable identity-enriched profile delivery. </Card> <Card title="Onboarding Klaviyo in Upstack" icon="rocket" href="/destinations/catalog/klaviyo/complete-how-to-guide-for-onboarding-klaviyo-in-upstack-data"> End-to-end Klaviyo onboarding inside Upstack. </Card> <Card title="Set up Upstack abandonment flows" icon="bolt" href="/destinations/catalog/klaviyo/abandonment-flows/complete-guide-to-setting-up-upstack-abandonment-flows-in-klaviyo"> Step-by-step Klaviyo flow setup with cloning, delays, and exclusions. </Card> <Card title="Clone your standard flows" icon="copy" href="/destinations/catalog/klaviyo/abandonment-flows/how-to-clone-your-standard-flows-in-klaviyo"> Detailed clone procedure for each standard abandonment flow. </Card> <Card title="Cross-flow exclusion filters" icon="filter" href="/destinations/catalog/klaviyo/abandonment-flows/how-to-add-cross-flow-exclusion-filters-in-klaviyo"> Configure mutual exclusion between native and Upstack flows. </Card> <Card title="Identity resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack's server-side identity engine works. </Card> </CardGroup> # Complete Guide to Setting Up Upstack Abandonment Flows in Klaviyo Source: https://docs.upstackdata.com/destinations/catalog/klaviyo/abandonment-flows/complete-guide-to-setting-up-upstack-abandonment-flows-in-klaviyo Set up Upstack-enhanced abandonment flows in Klaviyo — clone standard flows, swap triggers, add cross-flow exclusions, and recover 30-50% more browse, cart, and checkout abandonment revenue. <Tip> **Quick Summary** * In Klaviyo, enable account-wide UTM tracking under **Account → Settings → Other → UTM Tracking** * Locate the **standard abandonment flow** in **Flows** * **Enable UTM tracking for every Email and SMS node** inside the standard flow * **Clone** the standard flow * Rename the clone with the **` - Upstack Data`** suffix → switch trigger to the corresponding `*- Upstackified` Klaviyo metric * Open the standard and Upstack copies of the flow **side-by-side** * **Add a 30-minute delay** to the Upstack copy * Set cross-flow exclusion filters to **7 days** (or 14 days if preferred) * Adjust re-entry timing to **7 days** * Set the Upstack copy of the flow to **Live** * **Match the live/draft status of every step** in the Upstack copy to the standard flow </Tip> ## Prerequisites Before you start, you need: * The **Klaviyo destination configured in Upstack Data** ([learn how](/destinations/catalog/klaviyo/how-to-configure-klaviyo-destination-in-upstack-data)) * Existing **standard abandonment flows** in your Klaviyo account (Browse, Cart, Checkout, Site) * **Admin (manager) access** to the store's Klaviyo account * Confirm the following Upstack-emitted events appear in Klaviyo under **Analytics → Metrics**: * **Viewed Product - Upstackified** * **Added to Cart - Upstackified** * **Started Checkout - Upstackified** * **Active on Site - Upstackified** ## Important Terms <Note> * **Standard flow** → the existing abandonment flow already in the brand/store's Klaviyo account. * **Upstack copy of the flow** → the cloned and modified version triggered by Upstack Data's `*- Upstackified` events. Always identifiable by the ` - Upstack Data` name suffix. </Note> ## Configuration Steps <Steps> <Step title="Sign in to Klaviyo"> Sign in to **[Klaviyo](https://www.klaviyo.com/login)**. </Step> <Step title="Enable account-wide UTM tracking"> In Klaviyo, click your **profile icon** in the bottom-left navigation and go to **Settings → Other → UTM Tracking**, then ensure UTM tracking is toggled on. Detailed walkthrough: [How to enable UTM tracking in Klaviyo](/destinations/catalog/klaviyo/abandonment-flows/how-to-enable-utm-tracking-in-klaviyo). </Step> <Step title="Locate the standard abandonment flows"> * In Klaviyo, go to **Flows** in the left navigation. * Use the search bar and type **`abandon`**. * Identify the four standard abandonment flows: * **Cart Abandonment** * **Browse Abandonment** * **Site Abandonment** * **Checkout Abandonment** <img alt="Klaviyo Flows page showing search results for abandonment flows" /> </Step> <Step title="Enable UTM tracking on every Email and SMS node"> <Note> Before cloning, make sure **Enable UTM Tracking** is checked on **every Email and SMS node** inside the standard flow. The setting is copied into the clone, so enabling it now saves rework. </Note> * In **Flows**, open the standard flow. <img alt="Klaviyo standard abandonment flow open in flow editor" /> * Click an **Email** or **SMS** node. * In the right-hand details panel, check **Enable UTM Tracking**. * Click **Save**. <img alt="Email node settings panel with Enable UTM Tracking checkbox" /> <Warning> Repeat this step for **every Email and SMS node** inside the standard flow. </Warning> </Step> <Step title="Clone the standard flow"> Clone each standard flow and rename the clone with the ` - Upstack Data` suffix (for example, `Abandoned Cart - Upstack Data`). When cloning, change the trigger to the corresponding `*- Upstackified` event: * Browse Abandonment → **Viewed Product - Upstackified** * Cart Abandonment → **Added to Cart - Upstackified** * Checkout Abandonment → **Started Checkout - Upstackified** * Site Abandonment → **Active on Site - Upstackified** Detailed walkthrough: [How to clone your standard flows in Klaviyo](/destinations/catalog/klaviyo/abandonment-flows/how-to-clone-your-standard-flows-in-klaviyo). </Step> <Step title="Open the standard and Upstack copies side-by-side"> To make comparing settings easier, keep: * The **standard flow** in one browser tab. * The **Upstack copy of the flow** in another tab. </Step> <Step title="Add a 30-minute delay to the Upstack copy"> In the **Upstack copy of the flow**, add **+30 minutes** to the first wait step compared to the standard flow. *Example: `1 hour` → `1 hour 30 minutes`* <img alt="Wait step configured with 1 hour 30 minutes delay in Upstack flow" /> </Step> <Step title="Add cross-flow exclusion filters"> <Note> **Purpose:** Prevent someone from entering both the standard and Upstack copies within a 7-day window, which would result in duplicate emails. </Note> Add a filter on each flow's trigger: * On the **standard flow**: **Has received email 0 times in last 7 days where Flow = `[Upstack copy of the flow]`** * On the **Upstack copy of the flow**: **Has received email 0 times in last 7 days where Flow = `[Standard flow]`** Detailed walkthrough: [How to add cross-flow exclusion filters in Klaviyo](/destinations/catalog/klaviyo/abandonment-flows/how-to-add-cross-flow-exclusion-filters-in-klaviyo). </Step> <Step title="Turn on the Upstack copy of the flow"> * Open the **Upstack copy of the flow**. * In the top-right of the page, click the **Review and turn on** button. <img alt="Review and turn on button in Klaviyo flow editor" /> * In the right-side panel that appears, set **Flow status** to **Live**. * Select **Update status now**. * Click **Save**. <img alt="Flow status panel with Live option selected and Save button" /> </Step> <Step title="Match step statuses to the standard flow"> * In the **standard flow**, note which steps are **Live** vs **Draft / Manual**. * In the **Upstack copy of the flow**, set each corresponding step to the **same status**. * Double-check that every step's status matches the standard flow before continuing. </Step> <Step title="Verify the setup"> * Confirm the Upstack copy of the flow is **Live** and that step statuses mirror the standard flow exactly. * In Klaviyo, open **Analytics → Metrics** and confirm the corresponding `*- Upstackified` event is recording activity (within minutes of live traffic). * In **Flows**, open the Upstack copy and check the **Analytics** tab over the first 24–48 hours to confirm profiles are entering the flow. * Spot-check a recipient profile to confirm they did **not** also receive the standard flow's email within the same 7-day window. </Step> </Steps> ## Best Practices * Always confirm timing and messaging changes between the standard flow and the Upstack copy. * Test triggers to ensure the `*- Upstackified` events are firing correctly. * Monitor reporting weekly after launch to assess performance. <Warning> **Repeat every step** for **each** standard abandonment flow: Cart, Browse, Site, and Checkout Abandonment. </Warning> <Note> **Need help or found an issue?** If you encounter any issues or have questions while following this guide, you may reach out to us at **[support@upstackdata.com](mailto:support@upstackdata.com)** </Note> # How to Add Cross-Flow Exclusion Filters in Klaviyo Source: https://docs.upstackdata.com/destinations/catalog/klaviyo/abandonment-flows/how-to-add-cross-flow-exclusion-filters-in-klaviyo Add cross-flow exclusion filters in Klaviyo so the same shopper can't enter multiple Upstack abandonment flows within overlapping windows — preventing over-emailing and duplicate sends. ## Why this Step Matters <Note> The purpose of cross-flow exclusion filters is to **prevent someone from entering both the standard flow and the Upstack copy of the flow within a set timeframe.** This avoids overlapping or duplicate messages, ensuring a smoother customer experience, reducing message fatigue, and keeping your reporting data clean. </Note> ## Prerequisites Before you start, you need: * The **Klaviyo destination configured in Upstack Data** * **Existing standard abandonment flows** in your Klaviyo account (Browse, Cart, Checkout, Site) * The **Upstack copy of each abandonment flow** already cloned and renamed with the ` - Upstack Data` suffix ([learn how](/destinations/catalog/klaviyo/abandonment-flows/how-to-clone-your-standard-flows-in-klaviyo)) * Admin (manager) access to the store's Klaviyo account <Note> **Key terms used below:** * **Standard flow** → the original abandonment flow in your Klaviyo account (for example, `Abandoned Cart`). * **Upstack copy of the flow** → the cloned version triggered by Upstack Data's `*- Upstackified` events, named with the ` - Upstack Data` suffix (for example, `Abandoned Cart - Upstack Data`). </Note> ## Part 1: Add the exclusion filter to the standard flow * Open the **standard flow** (for example, `Abandoned Cart`) in Klaviyo. * Click the **Trigger** card at the top of the flow. <img alt="Klaviyo flow editor with Trigger card selected at top of flow" /> * Go to **Profile filters** and click **Edit**. * Scroll to the bottom of the existing profile filters and click **+ AND**. <img alt="Profile filters section with Edit button and AND condition option" /> * Select the condition: **What someone has done (or not done)**. * Choose **Person has** → **Received Email**. * Set the count and timeframe: **zero times** → **in the last 7 days** *(or 14 days if preferred)*. * Click **Where** and add: **Flow** **equals** the **Upstack copy of this flow**. For example: `Flow equals Abandoned Cart - Upstack Data`. Read as: **Has received email 0 times in last 7 days where Flow = `Abandoned Cart - Upstack Data`**. * Click **Save**. <img alt="Cross-flow exclusion filter configured with zero emails in last 7 days" /> ## Part 2: Add the reverse exclusion filter to the Upstack copy of the flow * Open the **Upstack copy of the flow** (for example, `Abandoned Cart - Upstack Data`) in Klaviyo. * Click the **Trigger** card at the top of the flow. <img alt="Upstack copy of flow with Trigger card selected for editing" /> * Go to **Profile filters** and click **Edit**. * Scroll to the bottom of the existing profile filters and click **+ AND**. <img alt="Profile filters Edit panel with AND condition button" /> * Select the condition: **What someone has done (or not done)**. * Choose **Person has** → **Received Email**. * Set the count and timeframe: **zero times** → **in the last 7 days** *(or 14 days if preferred)*. * Click **Where** and add: **Flow** **equals** the **standard flow**. For example: `Flow equals Abandoned Cart`. Read as: **Has received email 0 times in last 7 days where Flow = `Abandoned Cart`**. * Click **Save**. <img alt="Reverse exclusion filter referencing the standard flow name" /> ## Part 3: Verify both filters are in place * On the **standard flow** trigger, confirm the profile filter references the **Upstack copy** name (for example, `Abandoned Cart - Upstack Data`). * On the **Upstack copy of the flow** trigger, confirm the profile filter references the **standard flow** name (for example, `Abandoned Cart`). * Spot-check a recipient profile after going live: confirm they only receive an email from one of the two flows within the 7-day window. <Note> **Done 🎉** Repeat both Part 1 and Part 2 for **each** abandonment flow pair: Cart, Browse, Site, and Checkout. For the full setup walkthrough, see [How to set up your Upstack abandonment flows in Klaviyo](/destinations/catalog/klaviyo/abandonment-flows/complete-guide-to-setting-up-upstack-abandonment-flows-in-klaviyo). </Note> <Note> **Need help or found an issue?** If you encounter any issues or have questions while following this guide, reach out to us at **[support@upstackdata.com](mailto:support@upstackdata.com)**. </Note> # How to Clone your Standard Flows in Klaviyo Source: https://docs.upstackdata.com/destinations/catalog/klaviyo/abandonment-flows/how-to-clone-your-standard-flows-in-klaviyo Clone your existing Klaviyo standard abandonment flows so the Upstack-enhanced versions inherit your branding, copy, and timing — preserving your design while triggering on Upstack events. ## Prerequisites Before you start, you need: * The **Klaviyo destination configured in Upstack Data** * **Existing standard abandonment flows** in your Klaviyo account (Browse, Cart, Checkout, Site) * **Admin (manager) access** to the store's Klaviyo account * The following Upstack-emitted events present in Klaviyo (under **Analytics → Metrics**): * **Viewed Product - Upstackified** * **Added to Cart - Upstackified** * **Started Checkout - Upstackified** * **Active on Site - Upstackified** <Note> **Key terms:** * **Standard flow** → the existing abandonment flow in the brand/store's Klaviyo account (for example, `Abandoned Cart`). * **Upstack copy of the flow** → the cloned and modified version triggered by Upstack Data's `*- Upstackified` events. Always identifiable by the ` - Upstack Data` name suffix (for example, `Abandoned Cart - Upstack Data`). </Note> ## Trigger mapping Use this mapping when changing the trigger on the cloned flow: | Standard flow | Upstack trigger event | | -------------------- | ----------------------------------- | | Browse Abandonment | **Viewed Product - Upstackified** | | Cart Abandonment | **Added to Cart - Upstackified** | | Checkout Abandonment | **Started Checkout - Upstackified** | | Site Abandonment | **Active on Site - Upstackified** | ## Configuration Steps <Steps> <Step title="Sign in to Klaviyo"> Sign in to **[Klaviyo](https://www.klaviyo.com/login)**. </Step> <Step title="Clone the standard flow"> * In the left navigation, go to **Flows** and open the **standard flow** you want to clone. * In the far-right column of the flow's row, click the **vertical three-dot (kebab) menu** and select **Clone**. <img alt="Klaviyo flows list with kebab menu showing Clone option for a flow" /> * A right-side panel will slide in, prompting you to specify the **new flow name** for the clone. * Name the clone the same as the original, plus the **` - Upstack Data`** suffix. For example: `ABC | Pre | Added to Cart | Flow | Abandoned Cart` becomes `ABC | Pre | Added to Cart | Flow | Abandoned Cart - Upstack Data`. * Click **Continue**. <img alt="Clone flow panel with name field showing Upstack Data suffix" /> * Change the **Trigger** to the matching `*- Upstackified` Klaviyo metric using the **Trigger mapping** table above (for example, **Viewed Product - Upstackified** for Browse Abandonment). * Save by clicking **Clone Flow**. <img alt="Clone Flow button with Upstackified trigger event selected" /> * A confirmation modal will let you know you'll receive a notification once the cloned flow is ready to edit. Click **Got it** to proceed. <img alt="Confirmation modal indicating cloned flow will be ready to edit" /> </Step> <Step title="Verify the clone"> * Once Klaviyo finishes cloning, open the new flow and confirm: * The flow name ends with **` - Upstack Data`**. * The **Trigger** is set to the correct `*- Upstackified` event from the trigger mapping table above. * The flow is in **Draft** status (you'll set it Live later in the [setup guide](/destinations/catalog/klaviyo/abandonment-flows/complete-guide-to-setting-up-upstack-abandonment-flows-in-klaviyo)). </Step> </Steps> <Note> **Done 🎉** Repeat these steps for **each** standard abandonment flow: **Cart, Browse, Site, and Checkout Abandonment**. For the full setup walkthrough, see [How to set up your Upstack abandonment flows in Klaviyo](/destinations/catalog/klaviyo/abandonment-flows/complete-guide-to-setting-up-upstack-abandonment-flows-in-klaviyo). </Note> <Note> **Need help or found an issue?** If you encounter any issues or have questions while following this guide, reach out to us at **[support@upstackdata.com](mailto:support@upstackdata.com)**. </Note> # How to Enable UTM Tracking in Klaviyo Source: https://docs.upstackdata.com/destinations/catalog/klaviyo/abandonment-flows/how-to-enable-utm-tracking-in-klaviyo Enable UTM tracking in Klaviyo so emails sent from Upstack-enhanced abandonment flows attribute their conversions correctly back to the email channel in Upstack Analytics. ## Prerequisites Before you start, you need: * The **Klaviyo destination configured in Upstack Data** * **Admin (manager) access** to the store's Klaviyo account * The following Upstack-emitted events present in Klaviyo (under **Analytics → Metrics**): * **Viewed Product - Upstackified** * **Added to Cart - Upstackified** * **Started Checkout - Upstackified** * **Active on Site - Upstackified** ## Configuration Steps <Steps> <Step title="Sign in to Klaviyo"> Sign in to **[Klaviyo](https://www.klaviyo.com/login)**. </Step> <Step title="Open the UTM Tracking settings"> * In Klaviyo, click your **profile icon / account name** in the bottom-left navigation. * Go to **Settings → Other → UTM Tracking**. <img alt="Klaviyo Settings menu with UTM Tracking option under Other section" /> </Step> <Step title="Enable account-wide UTM tracking"> * At the bottom of the UTM parameter list, toggle on **Automatically add UTM parameters to links**. * Click the **Add UTM parameter** button. * Set **UTM Parameter Name** to **`up_kprofile_id`**, then set both the **Campaign value** and the **Flow value** to **Klaviyo profile id**. * Confirm the UTM parameter named **Campaign (`utm_campaign`)** is enabled, with **Campaign value** set to **Campaign name** and **Flow value** set to **Flow name**. * Confirm the UTM parameter named **Id (`utm_id`)** is enabled, with **Campaign value** set to **Campaign name (campaign id)** and **Flow value** set to **Flow message name (flow message id)**. * Click **Save** in the top-right of the page. <img alt="Klaviyo UTM Tracking settings with up_kprofile_id parameter configured" /> </Step> <Step title="Verify UTM tracking is enabled"> * Reload the **Settings → Other → UTM Tracking** page and confirm: * **Automatically add UTM parameters to links** is toggled **on**. * The **`up_kprofile_id`**, **`utm_campaign`**, and **`utm_id`** parameters are all enabled with the values configured above. * Send yourself a test email from any flow and confirm the links in the email contain `up_kprofile_id`, `utm_campaign`, and `utm_id` query parameters. </Step> </Steps> <Note> **Done 🎉** Continue with the full setup walkthrough: [How to set up your Upstack abandonment flows in Klaviyo](/destinations/catalog/klaviyo/abandonment-flows/complete-guide-to-setting-up-upstack-abandonment-flows-in-klaviyo). </Note> <Note> **Need help or found an issue?** If you encounter any issues or have questions while following this guide, reach out to us at **[support@upstackdata.com](mailto:support@upstackdata.com)**. </Note> # Complete How-To Guide for Onboarding Klaviyo in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/klaviyo/complete-how-to-guide-for-onboarding-klaviyo-in-upstack-data Onboard Klaviyo in Upstack Data — generate the Private API key, configure the destination, and clone abandonment flows to lift triggered abandoned cart, checkout, and browse revenue 40%+. <Info> **New to Upstack?** Follow the [getting started guide](/quickstart/install-on-shopify) for a streamlined onboarding walkthrough. </Info> <Tip> **Quick Summary** Complete Klaviyo integration requires three essential steps plus a critical follow-up for maximum value from your setup. * Generate a **Klaviyo Private API key** with Full Access in Klaviyo. * Connect Klaviyo in the **[Upstack dashboard](https://app.upstackdata.com/pixel/event-destinations)** using the Klaviyo Private API key. * Contact **[support@upstackdata.com](mailto:support@upstackdata.com)** to activate Upstack abandonment flows. </Tip> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to a **Klaviyo** account * The ability to generate a **Klaviyo Private API key** with Full Access ([learn how to generate one](/destinations/catalog/klaviyo/how-to-generate-klaviyo-api-key-for-upstack-data)) ## Part 1: Generate a Klaviyo Private API key * Sign in to **[Klaviyo](https://www.klaviyo.com/login)**. * Click your **profile icon** in the bottom-left navigation. * Go to **Settings → Account → API Keys**. * Click the **Create Private API Key** button. * Name the new key **`UpstackData`**. * Under *Select Access Level*, choose **Full Access Key**. * Click **Create**. * Copy and save the Klaviyo Private API key immediately. It starts with `pk_` followed by alphanumeric characters (for example, `pk_aBcDeFgHiJkLmNoPqRsTuVwXyZ012345678`). <img alt="Klaviyo API Keys page with Create Private API Key button" /> **`Important:`** `This key will only be shown once.` Need a more detailed walkthrough? See [How to generate a Klaviyo Private API key for Upstack Data](/destinations/catalog/klaviyo/how-to-generate-klaviyo-api-key-for-upstack-data). ## Part 2: Configure the Klaviyo destination in the Upstack dashboard * Sign in to **[Upstack Data](https://app.upstackdata.com)**. * In the Upstack dashboard, navigate to **[Pixel → Event Destinations](https://app.upstackdata.com/pixel/event-destinations)**. * Click **+ New Destination** in the top-right of the page. * In the *Select a Destination* popup, choose **Klaviyo** and click **Next**. * Paste your **Klaviyo Private API key** into the *Private API Key* field. * Click **Create Configuration**. <img alt="Upstack Event Destinations page with Klaviyo configuration form" /> **`Success!`** `Klaviyo is now connected to Upstack Data.` Need a more detailed walkthrough? See [How to configure the Klaviyo destination in Upstack Data](/destinations/catalog/klaviyo/how-to-configure-klaviyo-destination-in-upstack-data). ## Part 3: Verify the connection * In the Upstack dashboard, go to **Pixel → Event Destinations**. * Confirm the **Klaviyo** destination is listed with a **Healthy** status. * In Klaviyo, go to **Analytics → Metrics** and confirm Upstack-emitted events (for example, **Viewed Product - Upstackified**, **Added to Cart - Upstackified**, **Started Checkout - Upstackified**, **Active on Site - Upstackified**) begin appearing within a few minutes of live traffic. <Warning> After completing the Klaviyo setup, contact **[support@upstackdata.com](mailto:support@upstackdata.com)** to request your Upstack abandonment flows be set up. These additive flows improve your abandonment capture by **up to 40% or more**. </Warning> # How to Configure Klaviyo Destination in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/klaviyo/how-to-configure-klaviyo-destination-in-upstack-data Configure the Klaviyo destination in Upstack Data with your Klaviyo Private API key and verify identity-resolved events sync to power abandonment flow recovery. <Tip> **Quick Summary** * In the **[Upstack dashboard](https://app.upstackdata.com/pixel/event-destinations)**, go to **Pixel → Event Destinations** and click **+ New Destination** * Select **Klaviyo** from the destination options * Enter your **Klaviyo Private API key** * Click **Create Configuration** and verify the destination is **Healthy** </Tip> ## Tracking Method <Note> Klaviyo always receives events server-side. The **Enable Browser Pixel** checkbox (off by default) controls whether Klaviyo's own web tracking also loads on your storefront. See [Tracking Method](/concepts/tracking-method). </Note> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to a **Klaviyo** account * A **Klaviyo Private API key** with Full Access ([learn how to generate one](/destinations/catalog/klaviyo/how-to-generate-klaviyo-api-key-for-upstack-data)) ## Configuration Steps <Steps> <Step title="Sign in to Upstack Data"> Sign in to **[Upstack Data](https://app.upstackdata.com)**. </Step> <Step title="Open the Event Destinations page"> * In the Upstack dashboard, navigate to **Pixel → Event Destinations** (or open it directly: **[Event Destinations](https://app.upstackdata.com/pixel/event-destinations)**). * Click **+ New Destination** in the top-right of the page. <img alt="Add New Destination" /> * In the *Select a Destination* popup, click **Klaviyo**. * Click **Next**. <img alt="Select Klaviyo as Destination" /> </Step> <Step title="Enter your Klaviyo Private API key"> Paste your **Klaviyo Private API key** into the *Private API Key* field. The key starts with `pk_` followed by alphanumeric characters (for example, `pk_aBcDeFgHiJkLmNoPqRsTuVwXyZ012345678`). <img alt="Klaviyo destination configuration form with Private API Key field" /> `Important: Ensure there are no extra spaces before or after the key.` <Note> Need to generate the key first? See [How to generate a Klaviyo Private API key for Upstack Data](/destinations/catalog/klaviyo/how-to-generate-klaviyo-api-key-for-upstack-data). </Note> </Step> <Step title="Create the configuration"> Click the **Create Configuration** button to save the setup. <img alt="Create Configuration button to save Klaviyo destination setup" /> <Note> **Success! 🎉** You should see a confirmation message and the Klaviyo destination will appear as **Healthy** in your destinations list. </Note> <img alt="Klaviyo destination showing Healthy status in destinations list" /> </Step> <Step title="Verify events are flowing to Klaviyo"> * In the Upstack dashboard, return to **Pixel → Event Destinations** and confirm the **Klaviyo** row shows a **Healthy** status. * In Klaviyo, navigate to **Analytics → Metrics** and confirm Upstack-emitted events (for example, **Viewed Product - Upstackified**, **Added to Cart - Upstackified**, **Started Checkout - Upstackified**, **Active on Site - Upstackified**) appear within a few minutes of live traffic on your store. </Step> </Steps> <Warning> After completing setup, contact **[support@upstackdata.com](mailto:support@upstackdata.com)** to request your Upstack abandonment flows be set up. These additive flows improve your abandonment capture by **up to 40% or more**. </Warning> # How to Generate Klaviyo API Key for Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/klaviyo/how-to-generate-klaviyo-api-key-for-upstack-data Generate a Klaviyo Private API key with Full Access permissions to authenticate the Upstack Data Klaviyo destination and enable identity-enriched event sync. <Tip> **Quick Summary** * In Klaviyo, navigate to **Settings → Account → [API Keys](https://www.klaviyo.com/create-private-api-key)** * Click **Create Private API Key** * Name it **`UpstackData`** and select **Full Access Key** * **Copy and save** the key securely (it starts with `pk_`) </Tip> ## Prerequisites Before you start, you need: * Admin access to a **Klaviyo** account (required to create Private API keys) * Permission to grant **Full Access** to API keys ## Steps to Generate the Klaviyo Private API key <Steps> <Step title="Sign in to Klaviyo"> Sign in to **[Klaviyo](https://www.klaviyo.com/login)**. </Step> <Step title="Open the API Keys settings"> * Click your **profile icon** in the bottom-left navigation. * Go to **Settings → Account → [API Keys](https://www.klaviyo.com/create-private-api-key)**. <img alt="Klaviyo profile icon and Settings menu in bottom-left navigation" /> `Settings menu` <img alt="Klaviyo Account settings with API Keys option" /> `API keys menu` </Step> <Step title="Create a new Private API key"> Click the **Create Private API Key** button. <img alt="Create Private API Key button in Klaviyo" /> </Step> <Step title="Configure key name and access level"> * Name your Klaviyo Private API key **`UpstackData`**. * Under *Select Access Level*, choose **Full Access Key**. * Click the **Create** button. <img alt="API key creation form with name field and Full Access Key selected" /> <Warning> Full Access is required for all Upstack Data features to work properly. </Warning> </Step> <Step title="Copy and save your Klaviyo Private API key"> Copy the generated key immediately. It starts with `pk_` followed by alphanumeric characters (for example, `pk_aBcDeFgHiJkLmNoPqRsTuVwXyZ012345678`). <img alt="Generated Klaviyo Private API key with copy button" /> <Warning> This key will only be shown once. Store it securely — you will need it to configure the Klaviyo destination in the Upstack dashboard. </Warning> </Step> <Step title="Verify the key was created"> * Return to **Settings → Account → API Keys** in Klaviyo. * Confirm the new **`UpstackData`** key appears in the list with **Full Access** permissions. * Continue to [How to configure the Klaviyo destination in Upstack Data](/destinations/catalog/klaviyo/how-to-configure-klaviyo-destination-in-upstack-data) to paste the key into the Upstack dashboard. </Step> </Steps> # Klaviyo integration and abandonment flows Source: https://docs.upstackdata.com/destinations/catalog/klaviyo/klaviyo-integration-and-abandonment-flows How the Upstack Klaviyo integration works, why Klaviyo misses some visitors, how cloned abandonment flows recover more revenue, and how to troubleshoot them. ## How does the Klaviyo integration work? Upstack connects to Klaviyo through a private API key — create a full-access key in Klaviyo and add it in the Upstack dashboard. That's the entire connection step. Once connected, Upstack: 1. Uses Klaviyo profile data to enrich events sent to Meta, improving Event Match Quality scores. 2. Re-identifies returning visitors that Klaviyo no longer recognizes, putting them back through your abandonment flows. ## Why does Klaviyo miss some visitors? When someone opts in (for example, enters their email for a discount), Klaviyo records their identity in that browser session. If they return later in a different browser — say they clicked an ad in the Instagram app and come back in Safari — Klaviyo treats them as unknown, and their activity won't trigger an abandonment flow. Upstack's identity resolution reconnects that visitor to their known profile and sends the information back to Klaviyo, which then triggers the flow as expected. ## How do the cloned abandonment flows work? The Upstack team clones your existing flows and sets them up in a waterfall: 1. Your standard Klaviyo flow fires first (unchanged). 2. After a 30-minute delay, the Upstack flow fires. 3. Anyone who received one flow is excluded from the other. No duplicate emails. The cloned flows use the same content, design, and steps as your originals — the only differences are the trigger event, the delay, and the exclusion filters. ## Which flows are cloned? Up to four, depending on your setup: browse abandonment, cart abandonment, site abandonment, and checkout abandonment. After setup, you'll have two versions of each in Klaviyo — the standard one and the Upstack Data one. ## What improvement should I expect? Most stores see a 30–40% increase in abandonment flow volume — meaning that many more people are identified and entering flows. This translates directly to additional recovered revenue from emails that wouldn't have been sent otherwise. The improvement compounds over time as Upstack builds a larger visitor profile. ## Who sets up the flows? The Upstack team handles flow cloning for you. During onboarding, you invite the team to your Klaviyo account. Setup is typically completed within 48 to 72 hours. Your existing flows remain unchanged. ## Troubleshooting * **Flows not sending emails** — Verify both the standard and Upstack flows are set to Live in Klaviyo, and that each email step matches the status of the original. * **Low volume on Upstack flows** — Expected in the first few days. If volume stays low after two weeks, confirm no other tool (for example, Triple Whale) is running conflicting flows. If you run into issues, reach out to [support@upstackdata.com](mailto:support@upstackdata.com). * **Duplicate emails** — Check that exclusion windows are set correctly (recommended: 7 days) and that both flows reference each other in their filters. # LinkedIn Ads Destination Source: https://docs.upstackdata.com/destinations/catalog/linkedin Track LinkedIn ad conversions from your storefront with Upstack Data — automatic event mapping, click-ID capture, and identity enrichment. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> ## What it does Upstack tracks LinkedIn through the **LinkedIn Insight Tag** on your storefront. Upstack captures storefront events — page views, product views, add-to-carts, checkouts, and purchases — and reports them to LinkedIn with the `li_fat_id` click identifier attached, so LinkedIn can tie conversions back to the ads that drove them. <Note> You only need your **Partner ID** to set this up. See [How to configure the LinkedIn destination](/destinations/catalog/linkedin/how-to-configure-linkedin-destination-in-upstack-data). </Note> ## Tracking Method <Note> LinkedIn currently receives events from the browser only. See [Tracking Method](/concepts/tracking-method) for more details. </Note> ## How it works The Upstack Pixel captures each event on your storefront and enriches it with identity and click-ID data. Upstack then loads the LinkedIn Insight Tag and reports the event to LinkedIn. Because Upstack owns the event capture, every LinkedIn event carries the same identity data as the rest of your tracking — you do not maintain a separate Insight Tag or a second set of event mappings. ## Setup guides <CardGroup> <Card title="Onboarding guide" icon="route" href="/destinations/catalog/linkedin/complete-how-to-guide-for-onboarding-linkedin-in-upstack-data"> End-to-end walkthrough for connecting LinkedIn to Upstack Data. </Card> <Card title="Configure destination" icon="sliders" href="/destinations/catalog/linkedin/how-to-configure-linkedin-destination-in-upstack-data"> Configure the LinkedIn destination inside Upstack Data. </Card> <Card title="Find Partner ID" icon="magnifying-glass" href="/destinations/catalog/linkedin/how-to-find-linkedin-partner-id"> Locate your LinkedIn Partner ID in Campaign Manager. </Card> <Card title="Enable click ID tracking" icon="link" href="/destinations/catalog/linkedin/how-to-enable-linkedin-click-id-tracking"> Enable enhanced conversion tracking for `li_fat_id` click IDs. </Card> </CardGroup> ## Event mapping Upstack maps storefront events to LinkedIn standard events automatically: | Upstack event | LinkedIn event | | ---------------------------------------- | ---------------- | | `PageView` | `PAGE_VIEW` | | `ViewContent` | `VIEW_CONTENT` | | `AddToCart` | `ADD_TO_CART` | | `AddToWishlist` | `ADD_TO_LIST` | | `InitiateCheckout` | `START_CHECKOUT` | | `Purchase`, `NC Purchase`, `RC Purchase` | `PURCHASE` | | `Search` | `SEARCH` | | `Lead` | `LEAD` | | `SignUp`, `CompleteRegistration` | `SIGN_UP` | | `Subscribe` | `SUBSCRIBE` | | `Contact` | `CONTACT` | PII is hashed with SHA-256 before it leaves Upstack. Upstack includes every available match key on every event — hashed `email`, `li_fat_id` (LinkedIn click ID), `ip_address`, and `user_agent` — to maximise match quality. ## FAQ <AccordionGroup> <Accordion title="What is the Partner ID?"> The **Partner ID** is the numeric identifier for your LinkedIn ad account's Insight Tag. You'll find it in Campaign Manager → **Data** → **Signals Manager**. It is the only LinkedIn credential the destination needs. </Accordion> <Accordion title="Do I need to keep my own Insight Tag on the storefront?"> No. Upstack loads the Insight Tag for you once the destination is configured. If you already load it through your theme, Google Tag Manager, or another app, remove that copy — two tags with the same Partner ID can double-count events. </Accordion> <Accordion title="What if my event match rate is low?"> LinkedIn's match rate depends on how much identity data each event carries. Common causes of low match quality: * **Missing `li_fat_id`** — enable click ID tracking so the identifier is captured from the landing-page URL. * **Anonymous visitors** — events from visitors without an email have fewer keys to match against. Match rates improve as more identified customers convert. * **Missing checkout fields** — make sure your Shopify checkout collects email. </Accordion> </AccordionGroup> ## Troubleshooting <AccordionGroup> <Accordion title="Events not appearing in Campaign Manager"> If events aren't appearing after 10 minutes of confirmed store traffic, check the basics first. **Steps to fix:** 1. Go to **Event Destinations → LinkedIn Ads** 2. Verify the **Partner ID** is correct — numeric, no extra spaces 3. Confirm the destination status is **Healthy** 4. In Campaign Manager, check **Data → Signals Manager → Signal Diagnostics** for events with status "Received" </Accordion> <Accordion title="Events appear, but conversions aren't attributed to ads"> Attribution needs the `li_fat_id` click ID, which is captured from the landing-page URL. **Steps to fix:** 1. Click one of your live LinkedIn ads and confirm `li_fat_id` appears in the destination URL 2. Check that the ad links directly to your storefront rather than through a redirect that strips query parameters 3. See [How to enable LinkedIn click ID tracking](/destinations/catalog/linkedin/how-to-enable-linkedin-click-id-tracking) </Accordion> </AccordionGroup> <Note> For additional troubleshooting beyond LinkedIn-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/destination-shows-disconnected). </Note> ## Related <CardGroup> <Card title="Identity resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack matches anonymous visitors to known customers for higher match rates. </Card> <Card title="Verify events" icon="circle-check" href="/quickstart/verify-events"> Confirm events are firing from your storefront before checking the destination. </Card> <Card title="Events not reaching destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> <Card title="All destinations" icon="grid-2" href="/destinations/catalog"> Every destination Upstack can send events to. </Card> </CardGroup> # Complete How-To Guide for Onboarding LinkedIn Ads in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/linkedin/complete-how-to-guide-for-onboarding-linkedin-in-upstack-data Onboard LinkedIn Ads in Upstack Data — locate your Partner ID, configure the destination, and enable click ID tracking. <Info> **New to Upstack?** Follow the [getting started guide](/quickstart/install-on-shopify) for a streamlined onboarding walkthrough. </Info> <Tip> * Configure the **LinkedIn destination** in Upstack Data with your **Partner ID**. * Enable **Enhanced Matching** to send hashed user data for improved attribution. * Enable **Enhanced Conversion Tracking** to capture `li_fat_id` click IDs. * Verify events appear in **LinkedIn Campaign Manager → Data → Signal Diagnostics**. </Tip> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to a **LinkedIn Ads** account with the **Campaign Manager** role * Shopify owner/staff access (if applicable) <Steps> <Step title="Find your LinkedIn Partner ID"> Your **Partner ID** identifies your LinkedIn ad account and Insight Tag installation. You'll need this to configure the Upstack destination. Help guide: [How to find your LinkedIn Partner ID →](/destinations/catalog/linkedin/how-to-find-linkedin-partner-id) </Step> <Step title="Remove any existing Insight Tag from your storefront"> Upstack loads the LinkedIn Insight Tag for you. If you already load it through your theme, Google Tag Manager, or another app, remove that copy first — two tags with the same Partner ID can double-count events. </Step> <Step title="Configure the LinkedIn destination in Upstack Data"> In the Upstack dashboard, navigate to **Event Destinations** and add a **LinkedIn Ads** destination using your **Partner ID**. Help guide: [How to configure the LinkedIn destination in Upstack Data →](/destinations/catalog/linkedin/how-to-configure-linkedin-destination-in-upstack-data) </Step> <Step title="Enable LinkedIn click ID tracking"> <Note> **Optional but recommended.** Enabling enhanced conversion tracking allows LinkedIn to capture the `li_fat_id` click ID, which significantly improves match rates. </Note> Help guide: [How to enable LinkedIn click ID tracking →](/destinations/catalog/linkedin/how-to-enable-linkedin-click-id-tracking) </Step> <Step title="Verify the full setup is healthy"> Confirm each piece of the setup is working: * In the Upstack dashboard, **Event Destinations** shows your LinkedIn destination as **Healthy** (green). * In [LinkedIn Campaign Manager](https://www.linkedin.com/campaignmanager/) → **Data** → **Signals Manager** → **Signal Diagnostics**, events appear with status "Received." * The **Match Quality** column shows match rates — these will improve over the next 1-2 weeks. If anything is unhealthy, check the corresponding help guide above for troubleshooting steps. </Step> </Steps> ## What to expect after setup ### Match quality timeline * **Match quality** scores start to improve in 2-3 days and normalize over 1-2 weeks. * The **Purchase** match quality sees the biggest improvement, because checkout-time events carry the strongest match keys. * Match rates improve as more identified customers convert. ### Reporting differences * Conversion volume may fluctuate during the first 48 hours while LinkedIn adjusts to the new event source. * Match quality depends on how much identity data each event carries — the `li_fat_id` click ID is the strongest signal, so make sure click ID tracking is enabled. <Note> **Need help?** If you encounter any issues during setup or don't see expected match quality improvements after 2 weeks, contact our [support team](/troubleshooting/support) with your **LinkedIn Partner ID** and we'll help diagnose the problem. </Note> # How to Configure LinkedIn Destination in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/linkedin/how-to-configure-linkedin-destination-in-upstack-data Configure the LinkedIn Ads destination in Upstack Data — enter your Partner ID to track LinkedIn conversions from your storefront. <Tip> * Navigate to **Event Destinations** in your Upstack dashboard. * Add a **LinkedIn Ads** destination with your **Partner ID**. * Enable **Enhanced Matching** to send hashed user data for improved attribution. * Verify the destination shows **Healthy** status after saving. </Tip> ## Tracking Method <Note> LinkedIn currently receives events from the browser only. See [Tracking Method](/concepts/tracking-method) for more details. </Note> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Your **LinkedIn Partner ID** — see [How to find your LinkedIn Partner ID](/destinations/catalog/linkedin/how-to-find-linkedin-partner-id) ## Steps to configure the LinkedIn destination <Steps> <Step title="Open Event Destinations in Upstack"> Sign in to your [Upstack Data dashboard](https://app.upstackdata.com) and navigate to **Event Destinations** from the left sidebar. </Step> <Step title="Add a new destination"> Click **+ Add Destination** and select **LinkedIn Ads** from the destination catalog. </Step> <Step title="Enter your Partner ID"> Paste your **LinkedIn Partner ID** into the **Partner ID** field. <Tip> Your Partner ID is a numeric value (e.g., `123456`) found in LinkedIn Campaign Manager → Data → Signals Manager. Ensure there are no extra spaces. </Tip> </Step> <Step title="Enable Enhanced Matching (recommended)"> Toggle **Enable Enhanced Matching** to send hashed user data to LinkedIn for improved ad attribution. <Note> Enhanced Matching sends SHA-256 hashed email addresses. The data is hashed before it leaves your Upstack account. </Note> </Step> <Step title="Save the configuration"> Click **Create Configuration** (or **Save Changes** if editing) to save the destination. Upstack loads the LinkedIn Insight Tag on your storefront alongside Upstack's own event capture. </Step> <Step title="Verify the destination is healthy"> In the Upstack dashboard, navigate to **Event Destinations**. Your LinkedIn destination should display **Healthy** with a green status indicator within 5 minutes. If the status shows **Unhealthy**, double-check: * Partner ID is correct (numeric, no spaces) * Your LinkedIn user has the required permissions </Step> </Steps> ## Configuration fields reference | Field | Required | Description | | ---------------------------- | -------- | ---------------------------------------------- | | **Partner ID** | Yes | Your LinkedIn Partner ID from Campaign Manager | | **Enable Enhanced Matching** | No | Send hashed email for improved attribution | <Note> **Next step:** [How to enable LinkedIn click ID tracking](/destinations/catalog/linkedin/how-to-enable-linkedin-click-id-tracking) </Note> # How to Enable LinkedIn Click ID Tracking Source: https://docs.upstackdata.com/destinations/catalog/linkedin/how-to-enable-linkedin-click-id-tracking Enable LinkedIn li_fat_id click ID tracking so Upstack Data can capture the strongest LinkedIn match signal and attribute server-side conversions to ad clicks. <Tip> * Turn on **Enhanced Conversion Tracking** in your LinkedIn Insight Tag settings. * LinkedIn appends `li_fat_id` to your landing page URLs on ad clicks. * Upstack captures and stores `li_fat_id` automatically and sends it with every conversion event. * No URL changes are required — enabling the setting is enough. </Tip> <Note> **What is `li_fat_id`?** `li_fat_id` is LinkedIn's **first-party ad tracking click ID**. When a member clicks your ad, LinkedIn appends `li_fat_id` to your landing page URL. It is the strongest match signal LinkedIn supports — events that carry `li_fat_id` match to campaign data far more reliably than events matched on hashed email or IP alone. Upstack stores the value in a first-party cookie and includes it on every server-side Conversions API event. </Note> ## Prerequisites Before you start, you need: * The **LinkedIn Insight Tag** installed and active on your storefront * **Campaign Manager** access to your LinkedIn Ads account * Your LinkedIn destination already configured in Upstack — see [How to configure the LinkedIn destination](/destinations/catalog/linkedin/how-to-configure-linkedin-destination-in-upstack-data) ## Steps to enable click ID tracking <Steps> <Step title="Sign in to Campaign Manager"> Sign in to [LinkedIn Campaign Manager](https://www.linkedin.com/campaignmanager/) and select your ad account. </Step> <Step title="Open the Insight Tag settings"> Click **Data** → **Signals Manager** and open your **Insight Tag**. </Step> <Step title="Enable Enhanced Conversion Tracking"> Turn on **Enhanced Conversion Tracking** (sometimes labeled **First-party ad tracking** or **Enable click ID**). <Note> This setting authorizes LinkedIn to append the `li_fat_id` parameter to URLs when members click your ads. It does not require any code changes — Upstack reads the parameter automatically. </Note> </Step> <Step title="Save the changes"> Click **Save**. The setting takes effect for new ad clicks immediately. </Step> <Step title="Verify the click ID is captured"> To confirm `li_fat_id` is being captured: 1. Click one of your LinkedIn ads (or open a landing page URL containing `li_fat_id=...`). 2. In your browser's developer tools, check that a first-party cookie storing the LinkedIn click ID is set. 3. Generate a test conversion and confirm match quality improves in **Signals Manager → Signal Diagnostics** over the following days. **Example URL after an ad click:** ``` https://yourstore.com/products/widget?li_fat_id=abc123-def456-7890 ``` </Step> </Steps> ## How Upstack captures the click ID Once Enhanced Conversion Tracking is enabled: 1. **Member clicks ad** → LinkedIn appends `li_fat_id=...` to the landing page URL. 2. **Upstack Pixel loads** → captures `li_fat_id` from the URL and stores it in a first-party cookie. 3. **Visitor converts** → Upstack includes the stored `li_fat_id` with the conversion event. 4. **Event sent to LinkedIn** → LinkedIn matches the conversion to the original ad click for accurate attribution. ## Troubleshooting ### `li_fat_id` not appearing in URLs If the click ID isn't being appended after clicking an ad: 1. Confirm **Enhanced Conversion Tracking** is saved and enabled on the Insight Tag. 2. Verify the Insight Tag is firing on your landing pages (Upstack fires it alongside server-side events). 3. Allow time — the setting applies to new ad clicks, not historical traffic. ### Match quality not improving If match quality stays low after enabling click ID tracking: 1. Confirm the **Partner ID** in Upstack matches the Insight Tag's Partner ID. 2. Ensure ads link directly to your storefront so `li_fat_id` lands in the URL (avoid intermediate redirects that strip parameters). 3. Match quality builds over 1–2 weeks as more identified visitors convert. <Note> For a complete walkthrough, see the [LinkedIn onboarding guide](/destinations/catalog/linkedin/complete-how-to-guide-for-onboarding-linkedin-in-upstack-data). </Note> # How to Find your LinkedIn Partner ID Source: https://docs.upstackdata.com/destinations/catalog/linkedin/how-to-find-linkedin-partner-id Find your LinkedIn Partner ID in Campaign Manager Signals Manager — required to configure the Upstack Data LinkedIn destination for server-side conversion forwarding. <Tip> * Sign in to [LinkedIn Campaign Manager](https://www.linkedin.com/campaignmanager/) and open **Data** → **Signals Manager**. * Select your **Insight Tag** to open its details. * Copy the numeric **Partner ID** (e.g., `123456`). * Paste it into your Upstack LinkedIn destination configuration. </Tip> <Note> **What is a LinkedIn Partner ID?** Your **Partner ID** is the numeric identifier for your LinkedIn Insight Tag on your storefront. Upstack uses it to associate server-side Conversions API events with your ad account so LinkedIn can deduplicate them against the Insight Tag and attribute conversions to your campaigns. Each LinkedIn ad account has one Partner ID. </Note> ## Prerequisites Before you start, you need: * Access to a **LinkedIn Ads** account at [linkedin.com/campaignmanager](https://www.linkedin.com/campaignmanager/) * The **Campaign Manager** or **Account Manager** role on the ad account * The **LinkedIn Insight Tag** created in your account (or follow the create steps below) ## Steps to find your LinkedIn Partner ID <Steps> <Step title="Sign in to Campaign Manager"> Sign in to [LinkedIn Campaign Manager](https://www.linkedin.com/campaignmanager/) and select the ad account you want to track conversions for. </Step> <Step title="Open Signals Manager"> In the top navigation, click **Data** → **Signals Manager**. The Signals Manager lists your **Insight Tag** and any conversion signals associated with the account. </Step> <Step title="Find or create your Insight Tag"> **If you already have an Insight Tag**, it appears in the Signals Manager — proceed to the next step. **If you need to create one:** * Click **Create Insight Tag** * Choose **I will install the tag myself** (Upstack fires the tag for you) * Save and return to the Signals Manager </Step> <Step title="Locate your Partner ID"> Open your Insight Tag details. The **Partner ID** is displayed as a numeric value. **Example format:** `123456` You can also find it embedded in the Insight Tag code as `partner_id` (e.g., `_linkedin_partner_id = "123456";`). </Step> <Step title="Copy and paste into Upstack Data"> Copy your Partner ID and paste it into the **Partner ID** field in your Upstack LinkedIn destination setup. <Tip> Ensure there are no extra spaces before or after the ID. The Partner ID is numeric only — no letters or prefixes. </Tip> </Step> <Step title="Verify the destination is healthy"> In the Upstack dashboard, navigate to **Event Destinations**. Your LinkedIn destination should display **Healthy** with a green status indicator within 5 minutes. If the status shows **Unhealthy**, double-check that the Partner ID matches exactly what you see in Campaign Manager (numeric only, no whitespace). </Step> </Steps> <Note> **Next step:** [How to configure the LinkedIn destination](/destinations/catalog/linkedin/how-to-configure-linkedin-destination-in-upstack-data) </Note> # Loops Source: https://docs.upstackdata.com/destinations/catalog/loops Forward identity-resolved customer events to Loops to trigger email automations, transactional emails, and marketing campaigns based on real-time e-commerce activity. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> Loops is connected through **Upstack Flows**, the product that handles event delivery to marketing automation platforms. Upstack identifies visitors that standard tracking misses — turning anonymous browse and cart abandonment sessions into actionable Loops contacts with email addresses attached. This means more automated email workflows fire, more transactional messages reach the right customers, and you recover revenue that would otherwise be invisible. ## Tracking Method <Note> Loops receives events server-side only. See [Tracking Method](/concepts/tracking-method) for more details. </Note> ## How It Works When a visitor takes an action on your store, Upstack: 1. Captures the event through the Upstack Pixel and matches it to a known visitor profile using Upstack's identity resolution. 2. If the visitor is identified (email available), enriches the event with the contact's email and any other known properties. 3. Sends the event to Loops using your Loops API key as a trackable event that can trigger automations. 4. Optionally creates or updates the contact in Loops so it can be segmented and used in campaigns. The result: email automations fire for visitors that standard tracking misses. ## Supported Events | Upstack Event | Loops Event | Key Properties | Use Case | | ------------------ | ------------------ | ------------------------------------------------------------ | -------------------- | | `ViewContent` | `Viewed Product` | `ProductName`, `ProductID`, `Price`, `ImageURL` | Browse abandonment | | `AddToCart` | `Added to Cart` | `ProductName`, `ProductID`, `Price`, `Quantity`, `CartValue` | Abandoned cart | | `InitiateCheckout` | `Started Checkout` | `CartValue`, `ItemCount`, `CheckoutURL` | Checkout abandonment | | `Purchase` | `Placed Order` | `OrderID`, `Revenue`, `Items`, `DiscountCodes` | Post-purchase flows | Upstack also syncs profile properties including name, email, and location data. These are available for Loops segmentation immediately after sync. ## Credentials | Field | Required | Description | | ------- | -------- | ------------------------------------------------------------- | | API Key | Yes | Your Loops API key for authenticating event and contact syncs | <Info> Your Loops API key can be found in your Loops account under **Settings → API**. Generate a key with write access to events and contacts. </Info> ## Set Up Loops <Steps> <Step title="Get your Loops API key"> 1. Log in to your [Loops account](https://loops.so/) 2. Navigate to **Settings → API** 3. Click **Create API Key** if you don't have one 4. Copy the API key — you'll need it in the next step </Step> <Step title="Add Loops as a destination in Upstack"> 1. In the Upstack dashboard, go to **Destinations** 2. Click **Add Destination** and select **Loops** 3. Paste your Loops API key in the **API Key** field 4. Click **Save** to enable the destination </Step> <Step title="Verify events are flowing"> 1. Trigger a test action on your store (view a product, add to cart) 2. In Loops, check **Events** to see incoming events 3. In Upstack, check the Live Event Stream to confirm events show as delivered to Loops </Step> </Steps> ## FAQ <AccordionGroup> <Accordion title="What is Loops?"> Loops is an email marketing and automation platform designed for modern SaaS and e-commerce businesses. It allows you to create automated email sequences triggered by user behavior, send transactional emails, and manage marketing campaigns — all through a simple API-first interface. </Accordion> <Accordion title="How is this different from connecting Loops directly to Shopify?"> Standard Shopify integrations only see visitors that Shopify has identified — typically logged-in customers or shoppers who have entered an email at checkout. Upstack's identity resolution matches anonymous sessions to known customer profiles using cookies, click IDs, and cross-session behavioral data, then sends those events to Loops with the contact's email attached. This lets your automated workflows fire for many more visitors. </Accordion> <Accordion title="What permissions does the Loops API key need?"> The Loops API key must have permission to write events and contacts. When creating your API key in Loops, ensure it has the scopes required to send events and create or update contacts. </Accordion> <Accordion title="How long does it take for events to appear in Loops?"> Once the destination is active, events typically appear in Loops within a few minutes. You can verify by triggering a test action on your store (such as adding a product to cart) and checking the Events section in Loops. </Accordion> <Accordion title="Can I send custom events to Loops?"> Yes. Any event tracked by the Upstack Pixel can be configured to forward to Loops. Contact support if you need to send custom events beyond the standard e-commerce events. </Accordion> </AccordionGroup> ## Troubleshooting <AccordionGroup> <Accordion title="Events not appearing in Loops"> If events show in the Upstack Live Event Stream but aren't arriving in Loops: **Steps to fix:** 1. Confirm the Loops destination shows **Active** (green) in the Upstack dashboard 2. Verify your API key is valid — try regenerating it in Loops if you're unsure 3. Check the Events section in Loops — events may appear under a different name than expected 4. If the destination status is red, disconnect and reconnect with a fresh API key </Accordion> <Accordion title="Contacts not being created in Loops"> If events are arriving but contacts aren't being created: **Steps to fix:** 1. Ensure the API key has permission to create contacts 2. Verify that Upstack has resolved an email address for the visitor — anonymous events without an email won't create contacts 3. Check if the contact already exists in Loops under a different email or identifier </Accordion> </AccordionGroup> <Note> For additional troubleshooting beyond Loops-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/destination-shows-disconnected). </Note> ## Related <CardGroup> <Card title="Data Enrichment" icon="magnifying-glass-plus" href="/concepts/data-enrichment"> How Upstack Enrichment improves visitor identification — the foundation of Flows recovery. </Card> <Card title="Identity Resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack ID connects anonymous sessions to known customers with email addresses. </Card> <Card title="Klaviyo Destination" icon="envelope" href="/destinations/catalog/klaviyo"> Sync events and contacts to Klaviyo using the same Upstack Flows pipeline. </Card> <Card title="Events Not Reaching Destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # Meta Conversions API (CAPI) Source: https://docs.upstackdata.com/destinations/catalog/meta-capi Send server-side conversion events to Meta Ads with Upstack Signal — improve Event Match Quality and campaign optimization. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> ## What it does Meta's Conversions API (CAPI) lets you send conversion events directly from a server to Meta, instead of relying solely on the browser-side Pixel. Upstack Signal forwards every storefront event — page views, product views, add-to-carts, checkouts, and purchases — to your Meta Pixel via CAPI, enriched with hashed customer data and click identifiers. For most Shopify merchants, Meta CAPI is the highest-impact destination you can connect. Events captured server-side reach Meta even when the browser Pixel is blocked by ad blockers, ITP, or cookie restrictions, which means Meta's algorithm sees a fuller picture of the conversions your ads actually drove. The practical result is higher Event Match Quality (EMQ), more accurate ROAS reporting inside Meta Ads Manager, and stronger optimization signal for campaigns that depend on conversion events. ## How it works Upstack Signal runs as a dual-tracking layer. The Upstack Pixel captures events in the browser and forwards each one to Upstack's edge infrastructure, where it is hashed, enriched with identity and attribution data, and then sent to Meta's Conversions API as a server-side event with a shared `event_id`. Meta deduplicates against any matching browser Pixel event using that ID, so you do not double-count. Every event carries the strongest available match keys — hashed `email`, `phone`, `first_name`, `last_name`, `city`, `state`, `zip`, `country`, plus `fbc`, `fbp`, and `external_id` — so Meta can attribute the conversion to the right user and ad interaction. ## Setup guides <CardGroup> <Card title="Onboarding guide" icon="route" href="/destinations/catalog/meta-capi/complete-how-to-guide-for-onboarding-facebook-meta-in-upstack-data"> End-to-end walkthrough for connecting Meta to Upstack Data. </Card> <Card title="Configure pixel destination" icon="sliders" href="/destinations/catalog/meta-capi/how-to-configure-facebook-meta-ads-pixel-destination-in-upstack-data"> Configure the Meta Pixel destination inside Upstack Data. </Card> <Card title="Find Pixel Dataset ID" icon="magnifying-glass" href="/destinations/catalog/meta-capi/how-do-i-find-my-facebook-ads-pixel-dataset-id"> Locate your Meta Pixel Dataset ID in Events Manager. </Card> <Card title="Generate CAPI key" icon="key" href="/destinations/catalog/meta-capi/how-to-generate-my-facebook-conversion-api-key"> Generate a Conversions API access token in Meta. </Card> <Card title="Update CAPI key" icon="rotate" href="/destinations/catalog/meta-capi/how-to-update-facebook-meta-conversion-api-key"> Rotate or replace your existing CAPI access token. </Card> <Card title="Disable Shopify FB data sharing" icon="ban" href="/destinations/catalog/meta-capi/how-to-disable-facebook-and-instagram-data-sharing-in-shopify"> Turn off Shopify's native Facebook integration to prevent duplicate events. </Card> <Card title="Approve custom events" icon="circle-check" href="/destinations/catalog/meta-capi/how-to-approve-facebook-meta-custom-events"> Approve Upstack's custom events inside Meta Events Manager. </Card> </CardGroup> ## Event mapping Upstack maps storefront events to Meta standard events automatically: | Upstack event | Meta standard event | Key match data | | ------------------ | ------------------- | -------------------------------------------------- | | `PageView` | `PageView` | URL, referrer, user agent | | `ViewContent` | `ViewContent` | `content_ids`, `content_type`, `value`, `currency` | | `AddToCart` | `AddToCart` | `content_ids`, `value`, `currency` | | `InitiateCheckout` | `InitiateCheckout` | `value`, `currency`, `num_items` | | `Purchase` | `Purchase` | `value`, `currency`, `order_id`, `content_ids` | PII is hashed with SHA-256 before it leaves Upstack. Upstack includes every available match key on every event — `em`, `ph`, `fn`, `ln`, `ct`, `st`, `zp`, `country`, `fbc`, `fbp`, `external_id` — to maximize EMQ. ## FAQ <AccordionGroup> <Accordion title="What is Event Match Quality (EMQ) and why does it matter?"> EMQ is Meta's score (1–10) for how reliably it can match a conversion event back to a Meta user. Higher EMQ means Meta's algorithm has more signal to optimize against, which lowers cost per acquisition and improves ROAS. Server-side delivery via CAPI typically lifts EMQ by 20–35% compared to a browser-only Pixel because the events carry more match keys and are not blocked by browser restrictions. </Accordion> <Accordion title="Why send events through CAPI when I already have the Meta Pixel?"> The browser Pixel is blocked or degraded by ad blockers, Safari ITP, iOS privacy features, and third-party cookie restrictions. CAPI runs server-to-server, so it is not affected by any browser-side limitation. Meta itself recommends running CAPI alongside the Pixel for redundancy and higher data quality. </Accordion> <Accordion title="Will my events be counted twice if I run both the Pixel and CAPI?"> No. Upstack sends a shared `event_id` on every server-side event, and Meta deduplicates against the matching browser Pixel event with the same ID. As long as the Pixel ID in Upstack matches the Pixel ID firing in your storefront, deduplication is automatic. </Accordion> <Accordion title="Do I need to disable Shopify's native Facebook integration?"> Yes — if Shopify is also sending purchase events to the same Meta Pixel, you'll see duplicates that Meta cannot deduplicate (Shopify does not emit a matching `event_id`). Follow the guide above to disable Facebook & Instagram data sharing in Shopify before activating Upstack's Meta destination. </Accordion> <Accordion title="How do I verify CAPI events are arriving in Meta?"> Open Meta Events Manager, select your Pixel, and check the **Overview** and **Test Events** tabs. Server-side events show up with a "Server" badge. Upstack also surfaces delivery status and EMQ inside the destination settings in your dashboard. </Accordion> </AccordionGroup> ## Related <CardGroup> <Card title="Conversion API forwarding" icon="lightbulb" href="/concepts/conversion-api-forwarding"> How Upstack Signal forwards events to ad platforms via server-to-server APIs. </Card> <Card title="Identity resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack matches anonymous visitors to known customers for higher match rates. </Card> <Card title="TikTok Events API" icon="tiktok" href="/destinations/catalog/tiktok"> Set up TikTok's Events API as another server-side destination alongside Meta. </Card> <Card title="Events not reaching destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # Complete How-To Guide for Onboarding Facebook (Meta) in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/complete-how-to-guide-for-onboarding-facebook-meta-in-upstack-data Onboard Facebook (Meta) Ads in Upstack Data — connect your Pixel and Conversions API, disable duplicate tracking, configure NC-ROAS, and verify events flow through to Meta Events Manager. <Info> **New to Upstack?** Follow the [getting started guide](/quickstart/install-on-shopify) for a streamlined onboarding walkthrough. </Info> <Tip> * Configure the **Meta destination** in Upstack Data with your **Pixel ID** and **CAPI token**. * Disable **Facebook & Instagram data sharing** in Shopify to prevent duplicate events. * Set up the **NC Purchase** custom conversion and share it with your ad accounts. * Add **NC-ROAS** and other new-customer columns to Meta Ads Manager. * Monitor **Event Match Quality** improvements over 7–10 days. </Tip> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to a **Meta Business Manager** account * A configured **Meta Pixel** in [Meta Events Manager](https://business.facebook.com/events_manager) * A **CAPI token** generated from that pixel — see [How to generate your CAPI token](/destinations/catalog/meta-capi/how-to-generate-my-facebook-conversion-api-key) * Shopify owner/staff access (for the duplicate-events cleanup step) <Steps> <Step title="Configure the Meta destination in Upstack Data"> In the Upstack dashboard, navigate to **Event Destinations** and add a **Facebook Advertising** destination using your **Pixel ID** (15–16 digit number, no prefix) and **CAPI token** (starts with `EAA`). Help guide: [How to configure the Meta Pixel destination in Upstack Data →](/destinations/catalog/meta-capi/how-to-configure-facebook-meta-ads-pixel-destination-in-upstack-data) </Step> <Step title="Disable Facebook & Instagram data sharing in Shopify"> <Warning> You must disable all other Meta pixel integrations to prevent duplicate events. Multiple active pixels inflate conversion metrics and harm campaign optimization. </Warning> Help guide: [How to disable Facebook and Instagram data sharing in Shopify →](/destinations/catalog/meta-capi/how-to-disable-facebook-and-instagram-data-sharing-in-shopify) **Additional pixels to check and disable:** * Native Shopify Facebook & Instagram sales channel pixel * Third-party Facebook pixel apps in Shopify * Manual pixel code in your theme files (`theme.liquid`, header snippets) * Facebook pixel tags inside Google Tag Manager </Step> <Step title="Set up new-customer purchase metrics in Meta Ads Manager"> **Key metrics you'll configure:** * **NC-ROAS** (New Customer Return on Ad Spend) — revenue from new customers only * **NC-CPA** (New Customer Cost Per Acquisition) — cost to acquire each new customer Help guide: [How to set up new-customer purchase metrics in Meta Ads Manager →](/destinations/catalog/meta-capi/complete-how-to-guide-for-setting-up-new-customer-purchase-metrics-in-facebook-meta-ads-manager) </Step> <Step title="Verify the full setup is healthy"> Confirm each piece of the setup is working: * In the Upstack dashboard, **Event Destinations** shows your Meta destination as **Healthy** (green). * In [Meta Events Manager](https://business.facebook.com/events_manager), the pixel shows recent events with the **Server** connection label. * In Meta Ads Manager, the **NC Purchase** custom conversion is visible and the **NC-ROAS** custom metric appears in your column layout. If anything is unhealthy, check the corresponding help guide above for troubleshooting steps. </Step> </Steps> ## What to expect after setup ### Event Match Quality timeline * **Event Match Quality (EMQ)** scores start to improve in 2–3 days and normalize over 7–10 days. * You can typically expect a 1–2 point increase on lower-funnel events (PageView, ViewContent, AddToCart). * The **Purchase** EMQ score will remain largely unchanged — at checkout, all match parameters (email, name, address) are already being sent to Meta. ### Normal warnings and notifications **Red triangle ⚠️ warnings in Meta Events Manager** You may see new warnings appear next to your events in Meta Events Manager during the first few days. These are **normal** and **require no action**. They appear because: * Meta detects the change in data source from the Shopify sales channel to Upstack Data * Meta recognizes a different set of parameter configurations * Meta's algorithm is adjusting to the new data format <img alt="Meta Events Manager showing warning triangles during initial data adjustment" /> <Note> **What to do:** Monitor your events to confirm they're firing correctly, but avoid making changes based solely on these warnings. </Note> <Note> **Need help?** If you encounter any issues during setup or don't see expected improvements after 10 days, contact our support team with your **Meta Pixel ID** and we'll help diagnose the problem. </Note> # Complete How-To Guide for Setting up New Customer Purchase Metrics in Facebook (Meta) Ads Manager Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/complete-how-to-guide-for-setting-up-new-customer-purchase-metrics-in-facebook-meta-ads-manager Set up the New Customer Purchase conversion in Facebook (Meta) Ads Manager to optimize campaigns for first-time buyers and report NC-ROAS alongside total ROAS. <Tip> * Verify the **ncPurchase** event in [Meta Events Manager](https://business.facebook.com/events_manager). * Create the **NC Purchase** custom conversion and optimize it for **Purchase**. * Share the custom conversion with every Meta ad account that needs it. * In [Meta Ads Manager](https://adsmanager.facebook.com), customize columns to add NC Purchase metrics. * Create the **NC-ROAS** custom metric: `NC Purchase Conversion Value ÷ Amount spent`. </Tip> ## Prerequisites Before you start, you need: * The **Meta destination** configured in Upstack Data — see [How to configure the Meta Pixel destination](/destinations/catalog/meta-capi/how-to-configure-facebook-meta-ads-pixel-destination-in-upstack-data) * At least one real new-customer purchase already processed so the **ncPurchase** event appears in Meta Events Manager * Admin access to the **Meta Business Manager** that owns the pixel and to every ad account you'll share the conversion with ## What you'll achieve After completing all three parts below, **Meta Ads Manager** will display new-customer metrics — **NC-ROAS** (New Customer Return on Ad Spend), **Cost per NC Purchase**, and **Total NC Purchases** — directly in your campaigns, ad sets, and ads tables. ## Setup process overview Set up new-customer purchase tracking in three parts. Complete them in order — later steps depend on earlier ones. ### Part 1 — Verify the ncPurchase event Before you can create any custom conversions, the **ncPurchase** event must be verified in Meta Events Manager. Guide to complete this step: [How to verify the NC Purchase event in Meta Events Manager →](/destinations/catalog/meta-capi/how-to-verify-the-nc-purchase-event-in-facebook-meta-events-manager) ### Part 2 — Create and share the custom conversion Once **ncPurchase** is verified, create the **NC Purchase** custom conversion and share it with your ad accounts. Guide to complete this step: [How to create and share the NC Purchase custom conversion →](/destinations/catalog/meta-capi/how-to-create-and-share-nc-purchase-custom-conversion-in-facebook-meta) ### Part 3 — Add metrics to Meta Ads Manager Configure your Ads Manager columns to display the NC Purchase metrics and create the **NC-ROAS** custom metric. Guide to complete this step: [How to add NC Purchase metrics and NC-ROAS to Meta Ads Manager →](/destinations/catalog/meta-capi/how-to-add-nc-purchase-metrics-and-nc-roas-to-facebook-meta-ads-manager) ## Verify the setup is complete Once you've finished all three parts, confirm: * In [Meta Events Manager](https://business.facebook.com/events_manager), the **ncPurchase** event has no red triangle warning and is listed as **Active**. * In **Custom Conversions**, **NC Purchase** is shared with the ad accounts you selected. * In your Meta Ads Manager column layout, **NC Purchase (Total)**, **NC Purchase (Cost)**, and **NC-ROAS** are all visible. <Note> **Done 🎉** Initially, the new columns may show **0** or **—** because Meta does **not** retroactively attribute custom conversions from before they were created. Data starts populating for new-customer purchases that occur **after** the conversion was created and shared. Allow 24–48 hours of new traffic before judging the values. </Note> # Health and Wellness Custom Event Mappings Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/health-and-wellness-custom-event-mappings Map Upstack Data events to Meta Custom Events for Health and Wellness brands so server-side conversions reach Meta CAPI without violating Meta's restricted-category rules. ## Prerequisites Before you start, you need: * A configured **Health & Wellness container** in Upstack Data (created and activated by support) * Admin access to a **Meta Business Manager** account * Your store domain **verified and approved** in [Meta Events Manager](https://business.facebook.com/events_manager) → **Domains** * Access to email so you can request aliasing activation from Upstack support ## Configuration steps ### Part 1 — Set up domain aliasing and configure the Health & Wellness container 1. **Set up and activate your Health & Wellness container.** Confirm the container has been fully created and activated by Upstack support before continuing. 2. **Verify and approve your store domain in Meta Events Manager.** * In [Meta Events Manager](https://business.facebook.com/events_manager), navigate to **Domains** in the left-hand menu. * Add your store domain and complete Meta's domain verification process (DNS or meta-tag). * Domain approval is **required** before aliasing can be applied. 3. **Apply domain aliasing (Health & Wellness scrubbing).** Once your domain has been verified, Upstack implements aliasing so events from your store are properly tracked under the Health & Wellness container. 4. **Enable custom event optimization.** After aliasing is active, you can optimize ad campaigns for the custom purchase event **`UPSTACK_HW_6117d13b`** (the Health & Wellness alias for the Purchase event). See the full mapping in Part 2 below. 5. **Request domain aliasing activation for standard funnel events.** After completing domain verification, email [support@upstackdata.com](mailto:support@upstackdata.com) and ask us to enable domain aliasing for your standard funnel events. ### Part 2 — Health & Wellness custom event mappings Below are the Health & Wellness pixel mappings. Standard event names are remapped to opaque `UPSTACK_HW_*` custom event names so Meta does not associate them with restricted Health & Wellness categories. ```text theme={null} Health & Wellness Pixel Mappings ================================ PageView -> PageView ViewContent -> ViewContent ViewCategory -> view_category AddToCart -> UPSTACK_HW_de792bda InitiateCheckout -> UPSTACK_HW_d823e4ff Purchase -> UPSTACK_HW_6117d13b Lead -> UPSTACK_HW_289161cb Schedule -> UPSTACK_HW_5a3811fb Complete Registration -> UPSTACK_HW_895b83ff Contact -> UPSTACK_HW_4c62e638 Invite Meeting Scheduled -> UPSTACK_HW_529b7e00 AddPaymentInfo -> UPSTACK_HW_9984f5f9 AddShippingInfo -> UPSTACK_HW_3c4012cc All Purchase -> UPSTACK_HW_f0e986fc NC Purchase -> UPSTACK_HW_fa2b3354 RC Purchase -> UPSTACK_HW_5ec76558 ``` ### Part 3 — Approve the custom events in Meta #### Why event approval is required <Note> Custom events showing ⚠️ red triangle warnings must be approved in Meta Events Manager. Until approved, the events won't be available for ad delivery optimization, audiences, or campaign reporting. The approval flow simply confirms that you acknowledge the custom event is legitimate for your business. </Note> Help guide to complete this step: [How to approve Meta custom events →](/destinations/catalog/meta-capi/how-to-approve-facebook-meta-custom-events) ### Verify the setup is working After approval, confirm the Health & Wellness mappings are flowing correctly: * In [Meta Events Manager](https://business.facebook.com/events_manager), open your pixel and confirm the `UPSTACK_HW_*` events appear in the events list with the **Server** connection label. * None of the listed events should show a red triangle warning. * In **Custom Conversions**, you can now create conversions targeting `UPSTACK_HW_6117d13b` for Purchase optimization. # How do I find my Facebook Ads Pixel (Dataset) ID? Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/how-do-i-find-my-facebook-ads-pixel-dataset-id Find your Facebook (Meta) Pixel/Dataset ID in Meta Events Manager to configure the Upstack Data Meta Ads destination for server-side tracking. <Tip> * Sign in to [Meta Events Manager](https://business.facebook.com/events_manager) and locate your pixel. * Click the pixel name, then open the **Settings** tab. * Copy the **Pixel ID** — a 15–16 digit number, no prefix (e.g., `123456789012345`). * Paste it into your Upstack Meta destination configuration. </Tip> <Note> **What is a Meta Pixel ID?** Your **Meta Pixel ID** (sometimes shown as "Dataset ID" inside Meta Events Manager) is a 15–16 digit number Upstack Data uses to send conversion data to your Meta ad account. Meta Pixel IDs have **no prefix** — that's how they differ from Google Ads conversion IDs (which start with `AW-`). </Note> ## Prerequisites Before you start, you need: * Access to a **Meta Business Manager** account * A pixel already created in [Meta Events Manager](https://business.facebook.com/events_manager) (or follow the create-pixel steps below) ## Steps to find your Meta Pixel ID <Steps> <Step title="Sign in to Meta Events Manager"> Sign in to Meta Events Manager at [business.facebook.com/events\_manager](https://business.facebook.com/events_manager). </Step> <Step title="Find or create your pixel"> **If you already have a pixel**, you'll see it listed in the left-hand **Data Sources** panel — proceed to the next step. **If you need to create one:** * Click the green **Connect Data Sources** button * Select **Web** * Click **Next** or **Get Started** * Follow the instructions to create a new Meta Pixel <img alt="Meta Events Manager with Connect Data Sources button" /> <img alt="Select Web as data source type in Meta Events Manager" /> </Step> <Step title="Open the pixel overview"> In the **Data Sources** list, click the pixel's name. You'll land on the pixel's **Overview** page. </Step> <Step title="Locate your Pixel ID"> On the pixel **Overview** page, click the **Settings** tab in the left-hand menu. On the **Settings** tab, locate **Dataset ID** at the top of the page. This is your **Pixel ID** — a 15–16 digit number with no prefix. <img alt="Meta Pixel Settings page showing Dataset ID at the top" /> **Example format:** `123456789012345` </Step> <Step title="Copy and paste into Upstack Data"> Copy your Pixel ID and paste it into the **Pixel ID** field in your Upstack Meta destination setup. <img alt="Upstack Meta destination configuration with Pixel ID field" /> <Tip> Ensure there are no extra spaces before or after the ID. The value should be exactly 15 or 16 digits with no `AW-` or other prefix. </Tip> </Step> <Step title="Save the configuration"> Click **Create Configuration** to save the destination. <img alt="Create Configuration button to save Meta destination setup" /> </Step> <Step title="Verify the destination is healthy"> In the Upstack dashboard, navigate to **Event Destinations**. Your Meta destination should display **Healthy** with a green status indicator within 5 minutes. If the status shows **Unhealthy**, double-check that the Pixel ID matches exactly what you see in Meta Events Manager (no prefix, no whitespace). </Step> </Steps> <Note> **Next step:** [How to generate your CAPI token](/destinations/catalog/meta-capi/how-to-generate-my-facebook-conversion-api-key) </Note> # How Domain Aliasing Works for Health & Wellness Tracking Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/how-domain-aliasing-works-for-health-wellness-tracking Bypass Meta's Health & Wellness domain flag with Upstack's alias domain — replacing event source URLs so server-side events deliver cleanly without triggering category restrictions. ### The Short Version Meta's Health & Wellness flag lives on your **domain**, not your pixel. Any pixel that receives events from a flagged domain inherits the flag — even a brand-new pixel. Domain aliasing solves this by routing all events through a clean, unflagged domain so Meta never associates your new pixel with the restricted one. ### Why the Flag Is Domain-Level (and Why That Matters) When Meta flags a store under Health & Wellness, the flag is applied to the **root domain** (e.g., `yourstore.com`). This is a critical detail that catches many brands off guard. Here's what it means in practice: **Creating a new pixel doesn't help.** If you create a fresh pixel and start sending events from `yourstore.com`, that new pixel gets flagged too. The flag follows the domain, not the pixel ID. **Subdomains don't help.** Sending events from `shop.yourstore.com` or `checkout.yourstore.com` still traces back to the same root domain. Meta's systems resolve subdomains to their parent. **Changing your Shopify domain doesn't help (usually).** If you switch from a `.myshopify.com` domain to a custom domain, you're still operating on a domain that Meta can flag. And if the custom domain was already flagged, it stays flagged regardless of what platform it's on. **The flag doesn't expire on its own.** There is no known timeline for Meta to automatically remove a Health & Wellness flag. Some brands have reported flags persisting for months or longer, even after removing products. This is why aliasing is essential — it's the only way to present Meta with a domain that has no H\&W history. ### How Domain Aliasing Works Domain aliasing is straightforward in concept: every event sent to Meta reports a different domain as its origin. Instead of Meta seeing events from `yourstore.com`, it sees events from `youraliasdomain.com` — a clean domain with no flag history. ### The Technical Mechanics Every Conversions API event sent to Meta includes a field called `event_source_url`. This tells Meta which web page the event came from. In a normal setup, this would be something like: <Note> **Before aliasing:** `event_source_url`: `https://yourstore.com/products/daily-vitamin-pack` </Note> With aliasing active, Upstack replaces this field before sending the event: <Note> **After aliasing:** `event_source_url`: `https://youraliasdomain.com/` </Note> Meta receives the event, checks the `event_source_url`, and associates it with the alias domain — which is clean, compliant, and unflagged. ### What Meta's Bot Sees Meta doesn't just accept the `event_source_url` at face value. Its compliance bot periodically visits the domain to verify what's there. When it visits your alias domain, it finds: * A simple, compliant landing page with a generic headline and an image * No health or wellness product content * No supplement terminology * No links to your flagged store This is exactly what Meta expects to see from a non-H\&W domain. The events pass through without triggering any flags. ### What Doesn't Change Aliasing only affects the `event_source_url` field in the CAPI payload. Everything else remains accurate: * **User identifiers** (hashed email, phone, click ID) still match the real customer * **Event timing** still reflects when the action actually happened * **Conversion values** still reflect real purchase amounts * **Attribution** still connects the conversion to the correct ad click The alias domain is purely a compliance layer. It doesn't affect the accuracy of your tracking or the quality of your attribution data. ### What Makes a Good Alias Domain The alias domain needs to satisfy Meta's compliance checks without raising any red flags. ### It Must Be a Root Domain `youraliasdomain.com` works. `alias.yourstore.com` does not. Meta resolves subdomains to their root, so a subdomain of a flagged domain is still associated with the flag. The alias must be an entirely separate root domain. ### It Must Be New to Meta The domain should have no prior history with Meta's ad system. Don't reuse an old domain, a domain from a previous brand, or a domain that was ever connected to a Meta pixel. Register something fresh. ### It Must Have a Compliant Landing Page When Meta's bot visits, it needs to find a page that looks like a normal, non-health website. A single page with a generic headline and a stock image is sufficient. The page does not need to be functional — no forms, no checkout, no navigation. What to avoid on the page: * Health, wellness, supplement, or medical terminology * Product images of pills, capsules, powders, or health products * Links to your real store * Any content that could be interpreted as health-related ### It Must Stay Live Meta's bot can revisit the alias domain at any time. If the domain expires or the landing page goes down, Meta may flag the events as coming from an invalid source, which could disrupt your tracking. ### How Aliasing Fits into the Full Solution Domain aliasing handles one specific problem: preventing the flagged domain from tainting your new pixel. But it works in tandem with the other three components: **Without server-side-only tracking,** the browser pixel would still fire from your real domain, sending the real `event_source_url` directly to Meta — bypassing the alias entirely. **Without data sanitization,** even though the domain looks clean, the event payload would still contain product names and URLs from your flagged store. Meta's classifiers could flag the content regardless of the source domain. **Without custom event mappings,** standard event names like "Purchase" or "AddToCart" on a store that sells health products could still draw scrutiny from automated systems. All four layers need to be in place. Aliasing is the visible "front door" — it determines what domain Meta associates with your pixel. The other three components ensure that everything behind that front door is also clean. ### Common Questions ### Will Meta eventually flag the alias domain too? As long as the alias domain's landing page stays compliant and the event data sent from it is sanitized (which Upstack handles automatically), there is no reason for Meta to flag it. The alias domain never has health/wellness content, and the events from it never contain flaggable product data. ### Can I use the same alias domain for multiple stores? Generally no. Each store should have its own alias domain to avoid cross-contamination. If Meta were to flag one store's alias domain for any reason, you wouldn't want it to affect your other stores. ### Does the alias domain need SSL/HTTPS? Yes. Meta expects `event_source_url` values to use HTTPS. Most modern hosting providers and domain registrars include free SSL certificates, so this is usually automatic. ### Can I use the alias domain for anything else? It's best to keep the alias domain dedicated solely to this purpose. Don't use it for email marketing, other ad platforms, or any purpose that could generate content Meta might scrutinize. The simpler and cleaner it stays, the better. ### What happens to the alias domain if I stop using Upstack? The alias domain is yours — you registered it. If you stop using Upstack, you can let it expire or repurpose it. However, if you plan to continue running Meta ads for a health/wellness brand, you'll need some form of domain aliasing regardless of what tracking solution you use. ### What You Need to Do You're responsible for registering the alias domain and setting up the landing page. Upstack handles the technical aliasing — replacing the `event_source_url` in every CAPI event. For step-by-step instructions: [How to Set Up an Alias Domain for Health & Wellness Tracking →](/guides/health-wellness/setup-alias-domain-health-wellness) ### Related Articles * [How Upstack Data Solves Health & Wellness Restrictions](/guides/health-wellness/how-upstack-solves-health-wellness-restrictions) * [How to Set Up an Alias Domain for Health & Wellness Tracking](/guides/health-wellness/setup-alias-domain-health-wellness) * [How to Set Up a Health & Wellness Pixel for Meta](/guides/health-wellness/setup-health-wellness-pixel-for-meta) # How to Add NC Purchase Metrics and NC-ROAS to Facebook (Meta) Ads Manager Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/how-to-add-nc-purchase-metrics-and-nc-roas-to-facebook-meta-ads-manager Add NC Purchase metrics and create NC-ROAS in Facebook (Meta) Ads Manager to measure new-customer revenue and optimize campaigns for first-time buyers. <Tip> * Sign in to [Meta Ads Manager](https://adsmanager.facebook.com) and open any campaigns table. * Click **Columns → Customize columns**. * Under **Custom Conversions**, add **NC Purchase** (Total + Cost). * Click **Create custom metric** and define **NC-ROAS = NC Purchase Conversion Value ÷ Amount spent**. * Click **Apply** to save the column layout. </Tip> ## Prerequisites Before you start, you need: * The **NC Purchase** custom conversion already created **and** shared with the ad account you're configuring — see [How to create and share the NC Purchase custom conversion](/destinations/catalog/meta-capi/how-to-create-and-share-nc-purchase-custom-conversion-in-facebook-meta) * Admin or campaign-management access to the Meta ad account you want to update columns for ## What you'll achieve After completing this setup, you'll see new-customer metrics — **NC-ROAS** (New Customer Return on Ad Spend), **Cost per NC Purchase**, and **Total NC Purchases** — directly in Meta Ads Manager. ## Part 1 — Add NC Purchase metrics to columns <Steps> <Step title="Open Customize columns in Meta Ads Manager"> Sign in to Meta Ads Manager at [adsmanager.facebook.com](https://adsmanager.facebook.com), select the ad account you want to configure, then on the campaigns/ad sets/ads table click **Columns** in the toolbar above the table and select **Customize columns**. <img alt="Meta Ads Manager Columns dropdown with Customize columns option" /> </Step> <Step title="Add the NC Purchase metrics"> In the **Customize columns** dialog, scroll the left-hand category list to **Custom Conversions** and select your **NC Purchase** conversion (it may be named **NewCustomerPurchase** depending on how you created it). Check both checkboxes that appear: * **Total** — total number of new-customer purchases attributed * **Cost** — cost per new-customer purchase <img alt="Customize columns showing NC Purchase conversion with Total and Cost checkboxes" /> </Step> </Steps> ## Part 2 — Set up the NC-ROAS custom metric <Steps> <Step title="Open Create custom metric"> Inside the **Customize columns** dialog, click **Create custom metric** in the bottom-left. <img alt="Create custom metric button in Customize columns dialog" /> </Step> <Step title="Configure the NC-ROAS formula"> Fill in the new-metric form: * **Name:** `NC-ROAS` * **Formula:** `NC Purchase Conversion Value` ÷ `Amount spent` * Click **Create metric** <Warning> Check **Everyone with access to this Business** if you want the metric to be available to your whole team. </Warning> <img alt="NC-ROAS custom metric formula with conversion value divided by amount spent" /> </Step> <Step title="Add NC-ROAS to your columns and apply"> Back in **Customize columns**, find **NC-ROAS** under **Custom metrics** and check it so it appears in your table. Click **Apply** in the bottom-right of the dialog to save the column layout. <img alt="Apply button to save column layout with NC-ROAS added" /> </Step> <Step title="Verify the new columns appear"> Your Ads Manager table should now show three new columns: * **NC Purchase (Total)** — number of new customers acquired * **NC Purchase (Cost)** — cost per new customer * **NC-ROAS** — return on ad spend from new customers <Warning> Initially, the new columns may show **0** or **—** because Meta does **not** retroactively attribute custom conversions from before they were created. Data populates for conversions that occur **after** the conversion was created and shared. Allow 24–48 hours of new traffic before judging the values. </Warning> </Step> </Steps> # How to Approve Facebook (Meta) Custom Events Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/how-to-approve-facebook-meta-custom-events Approve custom events in Facebook (Meta) Events Manager so they become eligible for ad campaign optimization, custom audiences, and conversion reporting. ## Why event approval is required <Note> Custom events showing the ⚠️ red triangle warning in Meta Events Manager must be approved (acknowledged and confirmed) before Meta will use them for ad delivery optimization or campaign targeting. </Note> <Tip> * Sign in to [Meta Events Manager](https://business.facebook.com/events_manager2) and open the affected pixel. * Click the **custom event** (or its red triangle icon) and choose **Manage status**. * Click **I acknowledge**, then **Confirm the custom event**, then **Confirm**. * Refresh the events list and confirm the red triangle is gone. </Tip> ## Prerequisites Before you start, you need: * Access to the same **Meta Business Manager** that owns the pixel firing the custom event * Editor or admin permissions on the pixel/dataset in Meta Events Manager * At least one fired instance of the custom event (so it appears in the events list) ## Step-by-step instructions <Steps> <Step title="Sign in to Meta Events Manager"> Sign in to Meta Events Manager at [business.facebook.com/events\_manager2](https://business.facebook.com/events_manager2) and select the pixel containing the custom event. <img alt="Meta Events Manager showing pixel with custom events" /> </Step> <Step title="Open the custom event for review"> On the pixel **Overview** tab, locate the custom event with the ⚠️ warning. Click either: * The **name** of the custom event, or * The **red triangle ⚠️** warning icon next to it Then click **Review** (or open **Manage status**). <img alt="Custom event with red triangle warning icon in events list" /> <img alt="Manage status option for reviewing custom event" /> </Step> <Step title="Acknowledge the event"> In the review dialog, click **I acknowledge**. <Note> This confirms you understand this is a custom event you've intentionally created (in this case, sent by Upstack Data). </Note> <img alt="I acknowledge button in custom event review dialog" /> </Step> <Step title="Confirm the custom event"> Complete the final approval: * Click **Confirm the custom event** * Click **Confirm** to finalize <img alt="Confirm the custom event button to finalize approval" /> </Step> <Step title="Verify the warning is cleared"> Refresh the **Overview** tab. The ⚠️ red triangle should no longer appear next to the event, and its status should read **Active**. The event is now approved and available as an optimization or targeting event in **Meta Ads Manager**. </Step> </Steps> # How to Configure Facebook (Meta) Ads Pixel Destination in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/how-to-configure-facebook-meta-ads-pixel-destination-in-upstack-data Configure the Facebook (Meta) Ads destination in Upstack Data with your Pixel ID and Conversion API key to enable dual tracking via browser pixel and server-side CAPI. <Tip> * In the Upstack dashboard, go to **Event Destinations** and click **+ New Destination**. * Select **Facebook Advertising**. * Enter your **Meta Pixel ID** (15–16 digit number, no prefix). * Paste your **CAPI token** (starts with `EAA`). * Click **Create Configuration** and verify the destination shows **Healthy**. </Tip> <Note> **What this setup enables** Setting up the Meta Ads Pixel destination in Upstack Data enables dual tracking via browser pixel and server-side Conversions API (CAPI), ensuring accurate conversion data despite iOS restrictions and ad blockers. </Note> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to a **Meta Business Manager** account * A configured **Meta Pixel** in [Meta Events Manager](https://business.facebook.com/events_manager) — see [How to find your Meta Pixel ID](/destinations/catalog/meta-capi/how-do-i-find-my-facebook-ads-pixel-dataset-id) * A **Conversions API access token** — see [How to generate your CAPI token](/destinations/catalog/meta-capi/how-to-generate-my-facebook-conversion-api-key) ## Tracking Method <Note> **Tracking Method** is set to **Browser + Server** by default, and this is the recommended way to run Meta: Upstack loads the Meta tag on your storefront and also sends events server-side, and the two copies are deduplicated. If you don't want to load the Meta tag in the browser, switch the Tracking Method to **Server**. See [Tracking Method](/concepts/tracking-method). </Note> ## Configuration steps <Steps> <Step title="Sign in to Upstack Data"> Sign in to Upstack Data at [app.upstackdata.com](https://app.upstackdata.com/pixel/event-destinations). </Step> <Step title="Open the destination configuration"> In the Upstack dashboard, navigate to **Event Destinations**. Click **+ New Destination** in the top-right of the page. <img alt="Add New Destination" /> In the **Select a Destination** popup, click **Facebook Advertising**, then click **Next**. <img alt="Facebook Pixel Configuration" /> </Step> <Step title="Enter your Pixel ID and CAPI token"> Fill in the form: 1. **Meta Pixel ID** — the 15–16 digit number, no prefix (e.g., `123456789012345`). Meta Pixel IDs do **not** have an `AW-` prefix; that prefix belongs to Google Ads. 2. **CAPI token** — starts with `EAA`, approximately 190 characters long. <img alt="Meta destination form with Pixel ID and Conversions API fields" /> <Note> **Need help finding these?** * [How to find your Meta Pixel ID](/destinations/catalog/meta-capi/how-do-i-find-my-facebook-ads-pixel-dataset-id) * [How to generate your CAPI token](/destinations/catalog/meta-capi/how-to-generate-my-facebook-conversion-api-key) </Note> </Step> <Step title="Create the configuration"> Click the **Create Configuration** button. <img alt="Create Configuration button to save Meta destination" /> You should see a confirmation message and the Meta destination will appear in your **Event Destinations** list. <img alt="Meta destination showing Healthy status in Event Destinations list" /> </Step> <Step title="Verify the destination is healthy"> In the Upstack dashboard, the Meta destination card should display **Healthy** with a green status indicator within 5 minutes. If the status shows **Unhealthy**: * Confirm your **Pixel ID** is correct (15–16 digits, no leading/trailing spaces, no prefix). * Confirm your **CAPI token** is the full string starting with `EAA`. * See [How to update your CAPI token](/destinations/catalog/meta-capi/how-to-update-facebook-meta-conversion-api-key) if your token may have expired. </Step> </Steps> # How to Connect your Facebook Ads Account in Upstack Data Integrations Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/how-to-connect-your-facebook-ads-account-in-upstack-data-integrations Connect your Facebook Ads account to Upstack Data so spend, impressions, and clicks pull into the dashboard for unified channel-level ROAS and attribution reporting. <Tip> * Sign in to Upstack Data at [app.upstackdata.com](https://app.upstackdata.com) and navigate to **Data Integrations**. * On the **Facebook ads** card, open the **kebab menu** (3 dots) → click **Connect**. * Authorize with Facebook and select the **ad account** you want to connect. * Click **Save** and verify the integration shows **Healthy**. </Tip> <Note> **Purpose of this setup** Connecting your Facebook ads account is required to access performance data at the account, campaign, ad set, and ad levels, which powers your dashboards and attribution reporting. </Note> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin or advertiser access to the **Facebook ad account** you want to connect * A Facebook user account that can sign in via OAuth on this browser ## Configuration steps <Steps> <Step title="Sign in to Upstack Data"> Sign in to Upstack Data at [app.upstackdata.com](https://app.upstackdata.com), then navigate to **Data Integrations** in the left-hand menu (or open it directly at [app.upstackdata.com/pixel/integrations](https://app.upstackdata.com/pixel/integrations)). <img alt="Upstack dashboard with Data Integrations menu option" /> </Step> <Step title="Open the Facebook ads connector"> On the **Data Integrations** page, find the **Facebook ads** card and click the **kebab menu** (3 dots) in the top-right of the card, then click **Connect**. <img alt="Facebook ads card with kebab menu showing Connect option" /> If the Facebook account shown is correct, click **Connect** or **Reconnect**. <img alt="Facebook account confirmation with Connect button" /> If the Facebook account shown is **not** the one that has access to your ad account, click **Log into another account**. <img alt="Log into another account option for different Facebook user" /> </Step> <Step title="Select the Facebook ad account"> A popup displays every ad account linked to your Facebook user. Select the **Facebook ad account** you want Upstack Data to read performance data from. <img alt="Facebook ad account selection popup with available accounts" /> </Step> <Step title="Save the configuration"> Click the **Save** button. <img alt="Save button to confirm Facebook ads connection" /> <img alt="Facebook ads integration showing successful connection" /> </Step> <Step title="Verify the integration is healthy"> In the Upstack dashboard, the **Facebook ads** integration card should display **Healthy** with a green status indicator within 5 minutes. If the status shows **Unhealthy** or **Reconnect required**: * Confirm the Facebook user that authorized the connection still has access to the ad account. * Re-run the **Connect** flow and re-grant all requested permissions when prompted. </Step> </Steps> # How to Create and Share NC Purchase Custom Conversion in Facebook (Meta) Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/how-to-create-and-share-nc-purchase-custom-conversion-in-facebook-meta Create and share an NC Purchase custom conversion in Facebook (Meta) Events Manager to attribute new-customer revenue to ads and share the metric across ad accounts. <Tip> * Sign in to [Meta Events Manager](https://business.facebook.com/events_manager) and open **Custom Conversions → Create custom conversion**. * Name the conversion **NC Purchase** and select the **ncPurchase** event. * Choose **Purchase** as the optimization event and add a URL rule of **doesn't contain `doesnotexist`**. * Share the conversion with every ad account that needs to use it. </Tip> <Note> **What you'll create** A custom conversion that tracks **new-customer** purchases, so you can optimize campaigns for customer acquisition rather than repeat purchases. </Note> ## Prerequisites Before you start, you need: * The **Meta destination** configured in Upstack Data — see [How to configure the Meta Pixel destination](/destinations/catalog/meta-capi/how-to-configure-facebook-meta-ads-pixel-destination-in-upstack-data) * The **ncPurchase** event verified in Meta Events Manager — see [How to verify the NC Purchase event](/destinations/catalog/meta-capi/how-to-verify-the-nc-purchase-event-in-facebook-meta-events-manager) * Admin access to the Meta Business Manager and to every ad account you plan to share the conversion with ## Part 1 — Create the NC Purchase custom conversion <Steps> <Step title="Sign in to Meta Events Manager"> Sign in to Meta Events Manager at [business.facebook.com/events\_manager](https://business.facebook.com/events_manager). </Step> <Step title="Open Custom Conversions"> In the left-hand menu, click **Custom Conversions**, then click **Create custom conversion** in the top-right. <img alt="Meta Events Manager Custom Conversions page with Create button" /> </Step> <Step title="Name and select the event"> In the **Create a custom conversion** dialog: * **Name:** `NC Purchase` * **Event:** select **ncPurchase** <Note> If you don't see **ncPurchase** in the Event dropdown, return to Meta Events Manager and verify the event first. See [How to verify the NC Purchase event](/destinations/catalog/meta-capi/how-to-verify-the-nc-purchase-event-in-facebook-meta-events-manager). </Note> </Step> <Step title="Set the optimization event"> In the **Choose a standard event for optimization** field, select **Purchase**. This tells Meta to optimize delivery using its Purchase model when this custom conversion is used. </Step> <Step title="Configure URL rules"> Under **Rules**: 1. Choose **URL** as the parameter 2. Select **doesn't contain** as the condition 3. Type `doesnotexist` in the value field 4. Press **Enter** until the value becomes a light-grey tag 5. Click **Create** <Note> **Why this rule?** Since no URL on your store contains `doesnotexist`, this rule effectively matches every page — so the custom conversion fires for the **ncPurchase** event across your entire site. </Note> <img alt="Custom conversion URL rule configuration with doesnotexist condition" /> </Step> </Steps> ## Part 2 — Share with ad accounts <Steps> <Step title="Open the share menu"> On the **Custom Conversions** page, find the **NC Purchase** conversion you just created. Click the **dropdown** (kebab menu) on the right of the row, then click **Share**. <img alt="NC Purchase conversion row with kebab menu showing Share option" /> </Step> <Step title="Choose Share with an Ad Account"> In the share dialog, click **Share with an Ad Account**. <img alt="Share dialog with Share with an Ad Account option" /> </Step> <Step title="Select the ad accounts"> Check every ad account that needs to use this custom conversion. <img alt="Ad account selection list with checkboxes" /> <img alt="Multiple ad accounts selected for sharing" /> </Step> <Step title="Confirm sharing"> Click **Share Custom Conversion** to confirm. <img alt="Share Custom Conversion button to confirm sharing" /> </Step> <Step title="Verify the conversion is shared and active"> Back on the **Custom Conversions** page, the **NC Purchase** row should show: * **Status:** Active (no warning icon) * **Shared with:** the ad accounts you selected Open one of those ad accounts in **Ads Manager** and confirm **NC Purchase** appears in the **Custom Conversions** list when you customize columns or pick a conversion event for a campaign. </Step> </Steps> ## What's next? After creating and sharing the conversion, set up reporting: [Set up NC-ROAS metrics in Ads Manager →](/destinations/catalog/meta-capi/how-to-add-nc-purchase-metrics-and-nc-roas-to-facebook-meta-ads-manager) # How to Disable Facebook and Instagram Data Sharing in Shopify Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/how-to-disable-facebook-and-instagram-data-sharing-in-shopify Disable Shopify's Facebook and Instagram sales channel pixel to stop duplicate Meta Pixel events and let Upstack Data deliver clean server-side conversions to Meta CAPI. <Tip> * Sign in to your Shopify admin at [admin.shopify.com](https://admin.shopify.com). * Open **Sales channels → Facebook & Instagram → Settings**. * Under **Share data**, click **Change**. * Toggle **Share data** to **Off** and click **Save**. </Tip> <Warning> Most causes of duplicate events are because you have more than one Facebook integration active on your site. Disable the **Facebook & Instagram sales channel data sharing** in Shopify and confirm no other Facebook pixel apps (or theme-injected pixels) are installed. </Warning> ## Prerequisites Before you start, you need: * Owner or staff access to your **Shopify admin** with permission to edit sales channels * The **Facebook & Instagram sales channel** installed in Shopify (if it's not installed, there's nothing to disable) * A configured Meta destination in Upstack Data so the pixel keeps firing after you disable Shopify's native integration — see [How to configure the Meta Pixel destination](/destinations/catalog/meta-capi/how-to-configure-facebook-meta-ads-pixel-destination-in-upstack-data) ## Steps to disable Facebook and Instagram data sharing in Shopify <Steps> <Step title="Sign in to Shopify"> Sign in to your Shopify admin at [admin.shopify.com](https://admin.shopify.com). </Step> <Step title="Open the Facebook & Instagram sales channel"> In the Shopify admin, click **Sales channels** in the left-hand menu, select **Facebook & Instagram**, then click the **Settings** tab. *Tip: You can also use the top search bar to jump directly to the Facebook & Instagram sales channel.* <img alt="Shopify admin with Facebook & Instagram sales channel selected" /> </Step> <Step title="Open the Share data settings"> On the Facebook & Instagram **Settings** page, locate the **Share data** section and click **Change**. <img alt="Facebook & Instagram Settings page with Share data section and Change button" /> </Step> <Step title="Toggle off data sharing"> Toggle **Share data** to **Off**. <img alt="Share data toggle switched to Off position" /> </Step> <Step title="Save your changes"> With **Share data** now set to **Off**, click the **Save** button at the bottom of the page. <img alt="Save button to confirm Share data changes" /> </Step> <Step title="Verify data sharing is disabled"> After saving, the Facebook & Instagram **Settings** page should now show **Share data: Off**. <img alt="Facebook & Instagram Settings showing Share data Off confirmation" /> Within 24 hours, you should also see duplicate-event warnings clear in **Meta Events Manager**. If duplicates persist, also check for: * Third-party Facebook pixel apps in Shopify * Manual pixel code in your theme files (`theme.liquid`, header snippets) * Facebook pixel tags inside Google Tag Manager </Step> </Steps> <Note> **Need help?** If duplicate events continue after disabling Shopify's native integration, contact our support team with your Pixel ID and we'll help diagnose the source. </Note> ## Related Articles <CardGroup> <Card title="Configure Meta Pixel destination" href="/destinations/catalog/meta-capi/how-to-configure-facebook-meta-ads-pixel-destination-in-upstack-data" /> <Card title="Duplicate events troubleshooting" href="/troubleshooting/duplicate-purchase-events" /> <Card title="Enable theme app extension" href="/guides/shopify/how-to-ensure-upstack-data-theme-app-extension-is-enabled" /> <Card title="Complete Meta onboarding guide" href="/destinations/catalog/meta-capi/complete-how-to-guide-for-onboarding-facebook-meta-in-upstack-data" /> </CardGroup> # How to Generate my Facebook Conversion API Key? Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/how-to-generate-my-facebook-conversion-api-key Generate a Facebook (Meta) Conversion API access token in Meta Events Manager and paste it into Upstack Data to enable server-side conversion forwarding via CAPI. <Tip> * Sign in to [Meta Events Manager](https://business.facebook.com/events_manager) and open your pixel. * Open the **Settings** tab and scroll to the **Conversions API** section. * Click **Generate access token** and copy the token immediately — it is shown only once. * Paste the **CAPI token** (starts with `EAA`) into your Upstack Meta destination. </Tip> <Note> **What is a CAPI token?** A **Conversions API (CAPI) token** is a Meta access token that lets Upstack Data send conversions from your server to Meta, improving accuracy for iOS users and ad-blocked traffic. </Note> ## Prerequisites Before you start, you need: * **Admin access** (or full access) to a **Meta Business Manager** account * A pixel already created in [Meta Events Manager](https://business.facebook.com/events_manager) — see [How to find your Meta Pixel ID](/destinations/catalog/meta-capi/how-do-i-find-my-facebook-ads-pixel-dataset-id) * An Upstack Data account ready to receive the token ([sign in](https://app.upstackdata.com)) ## Steps to generate your CAPI token <Steps> <Step title="Sign in to Meta Events Manager"> Sign in to Meta Events Manager at [business.facebook.com/events\_manager](https://business.facebook.com/events_manager). </Step> <Step title="Find or create your pixel"> **If you already have a pixel**, you'll see it listed in the **Data Sources** panel — proceed to the next step. **If you need to create one:** * Click the green **Connect Data Sources** button * Select **Web** * Click **Next** or **Get Started** * Follow the instructions to create a new Meta Pixel <img alt="Meta Events Manager with Connect Data Sources button" /> <img alt="Select Web as data source type in Meta Events Manager" /> </Step> <Step title="Open the pixel overview"> In the **Data Sources** list, click your pixel's name. You'll land on the pixel's **Overview** page. </Step> <Step title="Navigate to the Settings tab"> On the pixel **Overview** page, click the **Settings** tab in the left-hand menu. <img alt="Meta Pixel Settings tab in left-hand navigation" /> </Step> <Step title="Generate the access token"> On the **Settings** tab, scroll down to the **Conversions API** section and click **Generate access token**. <img alt="Conversions API section with Generate access token button" /> </Step> <Step title="Copy your CAPI token"> Copy the value of the access token shown in the dialog. This is your **CAPI token**. <Warning> The token is shown **only once** — copy it immediately to a secure location. If you close the dialog without copying, you'll need to generate a new one. </Warning> <img alt="Generated CAPI access token dialog with copy option" /> **Token format:** starts with `EAA`, approximately 190 characters long (e.g., `EAAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...`). </Step> <Step title="Add the token to Upstack Data"> Sign in to Upstack Data at [app.upstackdata.com](https://app.upstackdata.com/pixel/event-destinations) and open your **Meta** destination under **Event Destinations**. Paste the token into the **Conversions API token** field. <img alt="Upstack Meta destination with Conversions API token field" /> <Warning> The CAPI token is sensitive — store it securely. The token is tied to a single Meta ad account and cannot be reused across accounts. </Warning> </Step> <Step title="Verify the destination is healthy"> In the Upstack dashboard, the Meta destination card should show **Healthy** with a green status indicator within 5 minutes. If the status shows **Unhealthy**: * Confirm the token starts with `EAA` and was pasted in full (no truncation, no whitespace). * Confirm the Pixel ID matches the pixel you generated the token for. </Step> </Steps> <Note> **Need help with the Pixel ID?** See [How to find your Meta Pixel ID](/destinations/catalog/meta-capi/how-do-i-find-my-facebook-ads-pixel-dataset-id). </Note> ## Related Articles <CardGroup> <Card title="Find your Meta Pixel ID" href="/destinations/catalog/meta-capi/how-do-i-find-my-facebook-ads-pixel-dataset-id" /> <Card title="Configure Meta Pixel destination" href="/destinations/catalog/meta-capi/how-to-configure-facebook-meta-ads-pixel-destination-in-upstack-data" /> <Card title="Update Facebook CAPI key" href="/destinations/catalog/meta-capi/how-to-update-facebook-meta-conversion-api-key" /> <Card title="Connection errors and disconnections" href="/troubleshooting/integration-connection-errors-and-disconnections" /> </CardGroup> # How to Update Facebook (Meta) Conversion API Key? Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/how-to-update-facebook-meta-conversion-api-key Rotate or update your Facebook (Meta) Conversion API access token in Upstack Data to keep server-side events flowing into Meta CAPI without breaking pixel health. ## Overview <Note> If you've seen warnings like *"My Conversions API is not getting any events"* or received an email that your *Meta Pixel is unhealthy*, it means your CAPI token needs to be refreshed. This guide walks you through updating your Meta CAPI token in Upstack Data so events flow correctly, attribution stays accurate, and your pixel remains healthy. </Note> <Tip> * Sign in to Upstack Data at [app.upstackdata.com](https://app.upstackdata.com/pixel/event-destinations) and open **Event Destinations**. * Click your **Meta destination** to edit it. * Paste a fresh **CAPI token** (starts with `EAA`) into the **Conversions API token** field. * Click **Update Configuration** and verify the destination shows **Healthy**. </Tip> ## Prerequisites Before you start, you need: * An active Upstack Data account with a Meta destination already configured * A new **CAPI token** generated from [Meta Events Manager](https://business.facebook.com/events_manager) — see [How to generate your CAPI token](/destinations/catalog/meta-capi/how-to-generate-my-facebook-conversion-api-key) * The token copied to your clipboard (it is shown only once when generated) ## Configuration steps <Steps> <Step title="Sign in to Upstack Data"> Sign in to Upstack Data at [app.upstackdata.com](https://app.upstackdata.com/pixel/event-destinations). In the Upstack dashboard, navigate to **Event Destinations**. <img alt="Upstack dashboard Event Destinations page" /> </Step> <Step title="Open your Meta destination"> In the **Event Destinations** list, click your **Meta destination** to edit it. <img alt="Meta destination card in Event Destinations list" /> Paste your new **CAPI token** into the **Conversions API token** field. Replace the existing value entirely. <img alt="Meta destination edit form with CAPI token field" /> <Note> The CAPI token starts with `EAA` and is approximately 190 characters long. Leave the **Pixel ID** unchanged (15–16 digit number, no prefix). </Note> <Note> **Need help finding these?** * [How to generate your CAPI token](/destinations/catalog/meta-capi/how-to-generate-my-facebook-conversion-api-key) * [How to find your Meta Pixel ID](/destinations/catalog/meta-capi/how-do-i-find-my-facebook-ads-pixel-dataset-id) </Note> </Step> <Step title="Save the updated configuration"> Click **Update Configuration** to save the change. <img alt="Update Configuration button to save Meta destination changes" /> </Step> <Step title="Verify the destination is healthy"> In the Upstack dashboard, the Meta destination card should display **Healthy** with a green status indicator within 5 minutes. If the status still shows **Unhealthy**: * Confirm the new CAPI token starts with `EAA` and was pasted in full (no truncation or whitespace). * Confirm the user who generated the token has admin access to the Meta Business Manager that owns the pixel. * See [Why is my Meta EMQ panel showing zeros?](/destinations/catalog/meta-capi/why-is-my-meta-emq-panel-showing-zeros-0-0-10) for token-permission troubleshooting. </Step> </Steps> # How to Verify the NC Purchase Event in Facebook (Meta) Events Manager Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/how-to-verify-the-nc-purchase-event-in-facebook-meta-events-manager Verify the NC Purchase event arrives in Facebook (Meta) Events Manager from Upstack Data — confirm event match quality, deduplication, and new-customer attribution before enabling optimization. <Tip> * Sign in to [Meta Events Manager](https://business.facebook.com/events_manager) and open the pixel connected to Upstack Data. * On the **Overview** tab, find the **ncPurchase** event in the events list. * Hover over the event to reveal **Review**, or open **Manage status** and click **Review**. * Acknowledge and confirm the event so the red triangle warning clears. </Tip> <Note> **What is the New Customer (NC) Purchase event?** The **NC Purchase** (`ncPurchase`) event is a custom event sent by Upstack Data that fires when a first-time customer makes a purchase. The event must be verified in Meta Events Manager before you can create custom conversions or track new-customer metrics in Meta Ads Manager. </Note> ## Prerequisites Before you start, you need: * The **Meta destination** configured in Upstack Data — see [How to configure the Meta Pixel destination](/destinations/catalog/meta-capi/how-to-configure-facebook-meta-ads-pixel-destination-in-upstack-data) * At least one real new-customer purchase already processed so the **ncPurchase** event is visible in Meta Events Manager * Access to the same Meta Business Manager that owns the pixel ## Steps to verify the ncPurchase event <Steps> <Step title="Sign in to Meta Events Manager"> Sign in to Meta Events Manager at [business.facebook.com/events\_manager](https://business.facebook.com/events_manager) and open the pixel that Upstack Data is sending events to. </Step> <Step title="Locate the ncPurchase event"> On the pixel **Overview** tab, scroll the events list until you see **ncPurchase**. If you don't see it, wait a few hours after your first new-customer purchase or contact support. </Step> <Step title="Open the review flow"> Use either of the following: * **Option A:** Hover over the **ncPurchase** row to reveal the **Review** button, then click **Review**. <img alt="ncPurchase event row with Review button on hover" /> * **Option B:** Click **Manage status** in the top-right of the events list, then click **Review** next to **ncPurchase**. <img alt="Manage status dropdown with Review option for ncPurchase" /> </Step> <Step title="Acknowledge and confirm"> In the review dialog, click **I acknowledge**, then click **Confirm the custom event** and **Confirm** to finalize. See [How to approve Meta custom events](/destinations/catalog/meta-capi/how-to-approve-facebook-meta-custom-events) for the full approval flow with screenshots. </Step> <Step title="Verify the event is approved"> Refresh the **Overview** tab. The red triangle warning next to **ncPurchase** should be gone, and the event status should read **Active** (or no warning icon). Once verified, you can use **ncPurchase** when creating custom conversions in Meta. </Step> </Steps> ## What's next? After verifying the ncPurchase event, you can: * [Create and share the NC Purchase custom conversion](/destinations/catalog/meta-capi/how-to-create-and-share-nc-purchase-custom-conversion-in-facebook-meta) * [Set up NC-ROAS metrics in Ads Manager](/destinations/catalog/meta-capi/how-to-add-nc-purchase-metrics-and-nc-roas-to-facebook-meta-ads-manager) # "Low Rate of Pixel Events Covered by Conversions API" in Meta Events Manager Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/low-rate-of-pixel-events-covered-by-conversions-api-in-meta-events-manager Why this Meta Events Manager warning is normal for Upstack customers, why no action is needed, and why you should not set up the Conversions API Gateway. <Note> **Short answer: this is normal and you can disregard it.** No action is needed. Your events are already being sent through the Conversions API by Upstack Data. Do not click "Review solution" and do not set up Meta's Conversions API Gateway — doing so will cause duplicate events. </Note> ### What You're Seeing In **Meta Events Manager**, under "Top errors affecting your performance" (or the Diagnostics tab), you see a warning that looks like this: <img alt="Meta Events Manager warning showing low rate of pixel events covered by Conversions API" /> The warning reads: <Note> **Low rate of pixel events covered by Conversions API** Try the Conversions API Gateway demo to improve your coverage rate and get better reporting accuracy. Advertisers with a 75 percent coverage rate saw lower cost per result versus Pixel alone for events. </Note> Next to it there is a blue **Review solution** button. ### Why You Don't Need to Do Anything This is one of Meta's standard recommendations, shown across many ad accounts, and for Upstack Data customers it's a false positive. Here's why you can safely ignore it: * **Upstack is already sending your events through the Conversions API.** Every event we track is sent twice — once from the browser pixel and once server-side through CAPI — with a shared `event_id` so Meta deduplicates them into a single event. * **The "Review solution" flow is designed for advertisers who don't have CAPI set up.** That is not you. Meta shows the same prompt to every account that dips below their target coverage rate, regardless of whether a CAPI integration is already running. * **Your reporting, attribution, and optimization are unaffected.** The warning does not impact how Meta counts your conversions or optimizes your ad delivery. ### What You Should NOT Do <Warning> Do NOT set up any additional Conversions API integration on top of Upstack. This includes: </Warning> * **Do not click "Review solution"** or start Meta's Conversions API Gateway demo * **Do not install Meta's Conversions API Gateway** (the Cloudflare-hosted CAPI forwarder) * **Do not enable CAPI through the Shopify Facebook & Instagram sales channel** * **Do not install any third-party CAPI app** (for example, other tracking tools that also offer server-side Meta events) Adding another CAPI sender alongside Upstack will cause the **same event to be sent twice without matching deduplication IDs**. Meta will count those as separate events, which inflates your reported conversions, distorts cost per result, and can confuse ad delivery optimization. ### Why Meta Shows This Warning Anyway Meta's "coverage rate" compares two event streams on the same pixel: browser events (fired by the Meta Pixel JavaScript) and server events (sent via the Conversions API). When the ratio of matched browser-to-server events drops below roughly 75 percent on a rolling window, Meta surfaces this warning. A few reasons you can see this warning even though Upstack is working correctly: * **Measurement noise.** Meta's coverage math is not always perfect, especially on low-volume days or when events arrive out of order. Short dips below the threshold are common and self-correct over time. * **Rolling window lag.** The metric is calculated over a trailing 7-day window, so recent fixes (new token, new setup) take a few days to show up in the score. * **Browser events from non-Upstack sources.** If another tool on your site is firing browser pixel events that Upstack doesn't see — for example, a raw pixel in your Shopify theme, a GTM tag, or a landing page builder — those events have no matching server-side pair, which lowers coverage. See "When to contact us" below. None of these require you to add more CAPI coverage. They require (at most) cleaning up duplicate browser-side sources, which we can help with. ### When to Contact Us You only need to reach out if you see one of the following, which would suggest a real issue rather than normal measurement drift: * Your Meta destination inside Upstack Data is flagged as **"needs attention"** or shows as unhealthy * Your **Event Match Quality (EMQ) scores** drop sharply in the Upstack dashboard * Your reported Meta conversions are meaningfully different from your actual orders in Shopify or WooCommerce * You suspect another pixel is firing alongside Upstack and want help identifying it Otherwise, no action is required — the warning can stay in your Events Manager without affecting your performance. ### Related Articles * [Why is my Meta EMQ Panel Showing Zeros (0.0/10)?](/destinations/catalog/meta-capi/why-is-my-meta-emq-panel-showing-zeros-0-0-10) * [How to Configure Facebook (Meta) Ads Pixel Destination in Upstack Data](/destinations/catalog/meta-capi/how-to-configure-facebook-meta-ads-pixel-destination-in-upstack-data) * [How to Generate my Facebook Conversion API Key](/destinations/catalog/meta-capi/how-to-generate-my-facebook-conversion-api-key) * [How to Update Facebook (Meta) Conversion API Key](/destinations/catalog/meta-capi/how-to-update-facebook-meta-conversion-api-key) <Note> **Still have questions?** If you're unsure whether the warning in your account is normal or something to worry about, message our support team with your Pixel ID and store URL. We'll check your CAPI event stream and confirm everything is healthy. </Note> # Set up NC & RC Purchase events in Meta Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/set-up-nc-and-rc-purchase-events-in-meta Configure NC Purchase, RC Purchase, and subscription events in Meta Events Manager and Ads Manager to optimize for new customer acquisition and retention. Custom events give ad platforms more specific signals to optimize against. The most impactful is **NC Purchase** — it tells Meta to find buyers who've never purchased from you before, instead of optimizing toward repeat customers. Without it, Meta's algorithm treats a first-time buyer and a fifth-time buyer as equally valuable conversions. ## New customer purchase (NC Purchase) NC Purchase fires only when an order comes from a customer with no prior Shopify order history. This enables NC CPA and NC ROAS reporting directly in Meta Ads Manager — two metrics that separate prospecting performance from retargeting performance. ### Set up in Facebook <Steps> <Step title="Wait for the first event"> Once Upstack is live, the first NC Purchase event appears in Meta Events Manager within minutes for active stores. You need at least one event before you can proceed. See [How to verify the NC Purchase event in Facebook Events Manager](/destinations/catalog/meta-capi/how-to-verify-the-nc-purchase-event-in-facebook-meta-events-manager) for a walkthrough. </Step> <Step title="Acknowledge the event"> Go to **Events Manager → find NC Purchase → Review → Acknowledge/Confirm**. This tells Meta to start processing NC Purchase as a recognized event. </Step> <Step title="Create a custom conversion"> In Events Manager, go to **Custom Conversions → Create**. Set the event to **NC Purchase** and give it a clear name (e.g., "Upstack NC Purchase"). See [How to create and share NC Purchase custom conversion in Facebook](/destinations/catalog/meta-capi/how-to-create-and-share-nc-purchase-custom-conversion-in-facebook-meta) for detailed steps. <Info> You need **Business Manager admin access** (not just ad account admin) to create custom conversions. If you run ads through an agency ad account, switch the Events Manager view to your own Business Manager before creating the conversion. </Info> </Step> <Step title="Add reporting columns"> In Ads Manager, add **NC CPA** and **NC ROAS** as columns in your reporting view. These metrics let you evaluate prospecting performance independently from retargeting. See [How to add NC Purchase metrics and NC ROAS to Facebook Ads Manager](/destinations/catalog/meta-capi/how-to-add-nc-purchase-metrics-and-nc-roas-to-facebook-meta-ads-manager) for column configuration. </Step> </Steps> <Note> Attribution is forward-looking only — Meta does not backfill historical data for new event types. NC Purchase metrics start populating from the moment the custom conversion is created. </Note> For the complete end-to-end walkthrough, see [Complete guide to setting up NC Purchase metrics in Facebook Ads Manager](/destinations/catalog/meta-capi/complete-how-to-guide-for-setting-up-new-customer-purchase-metrics-in-facebook-meta-ads-manager). <Accordion title="When to use NC Purchase vs. standard Purchase"> Custom purchase events supplement the standard `Purchase` event — they don't replace it. Keep standard `Purchase` active alongside the custom events so Meta's baseline models still receive every order. | Scenario | Recommended event | | ---------------------------------------------- | ------------------------------------ | | General ROAS optimization | Standard `Purchase` | | Scaling new customer acquisition | `nc_purchase` | | Prospecting campaigns targeting cold audiences | `nc_purchase` | | Retargeting campaigns for existing customers | `rc_purchase` or standard `Purchase` | | Brand awareness / top-of-funnel | Standard `Purchase` (broader signal) | | Measuring retention campaign performance | `rc_purchase` | **Allow a learning phase.** When you switch an ad set from standard Purchase to `nc_purchase`, it re-enters Meta's learning phase. Meta needs roughly 50 optimization events per week to exit learning, so start with your highest-spend or highest-volume campaign first if new-customer volume is low. **Compare before shifting budget.** Run `nc_purchase`-optimized campaigns alongside standard Purchase-optimized campaigns for 2–4 weeks and compare new-customer rate, CAC, and ROAS before committing. </Accordion> ## Returning customer purchase (RC Purchase) RC Purchase is the inverse of NC Purchase: it fires only when an order comes from a customer **with existing Shopify order history**. Together, the two events partition every order into acquisition vs. retention signals, which you can use separately in audience building, retargeting, and retention measurement. Classification uses the same Shopify-order-history check as NC Purchase — if the customer has zero prior completed orders, Upstack fires `nc_purchase`; if they have one or more, it fires `rc_purchase`. The standard `Purchase` event still fires for every order regardless of customer status, so baseline reporting is unaffected. ### Why it matters * **Build retargeting audiences that exclude first-time buyers.** Feed `rc_purchase` into custom audiences of recent repeat customers for win-back campaigns, loyalty offers, or cross-sells. * **Measure retention, not just acquisition.** Treat `rc_purchase` volume and value as a direct signal of how well retention campaigns (email, SMS, paid retargeting) are performing. * **Avoid over-indexing on repeat buyers in prospecting.** Pairing `rc_purchase` with `nc_purchase` makes it obvious when a "Purchase-optimized" campaign is really just retargeting existing customers. ### Set it up RC Purchase uses the **same four steps as NC Purchase above** — wait for the first event, acknowledge it, create a custom conversion, and add it to your reporting. Only two things differ: * **Creating the custom conversion:** select **RC Purchase** as the event (name it e.g. "Upstack RC Purchase"), set the category to **Purchase**, and leave the value at its default so Meta uses the order value sent with the event. * **Using it:** make the RC Purchase custom conversion the optimization event for **retargeting and retention** ad sets, or add it as a measurement column alongside NC CPA / NC ROAS to see acquisition and retention side by side. <Tip> Enable `nc_purchase` and `rc_purchase` together — running only one leaves half the acquisition-vs-retention segmentation on the table. </Tip> ## Subscription events For subscription brands, Upstack handles subscription events automatically. No manual setup is required. | Event | When it fires | Sent to Meta? | | ---------------------- | ------------------------ | --------------------------- | | Subscription Initial | First subscription order | Yes — counted as a purchase | | Subscription Recurring | Renewal orders | No — excluded from Meta | <Warning> **Why recurring subscriptions are excluded from Meta:** Sending renewal orders as purchase events tells Meta's algorithm that existing customers are converting. This shifts optimization toward retargeting instead of prospecting — the algorithm learns to chase people who were going to buy anyway. Only the initial subscription triggers a purchase event so Meta stays focused on finding new subscribers. </Warning> ## Advanced configuration <Accordion title="Category-specific events"> If you sell across multiple product categories (e.g., apparel and skincare), you can fire purchase events scoped to each category — `apparel_purchase`, `skincare_purchase`, and so on — then create a category-specific custom conversion in Meta for each and optimize ad sets per product line. Set these up yourself with [global event mappings](/guides/custom-events/global-event-mappings): add a condition on the product category and map it to a new event name. </Accordion> <Accordion title="Order source exclusions"> Not every order should feed back into Meta or Google's optimization. Some sources would pollute your conversion data. To configure exclusions, go to **Settings → Order Source Exclusions** and select the sources you want to block: * **TikTok Shop orders** * **Loop** (returns/exchanges) * **Matrixify** (bulk imports) * **Draft Orders** * **POS** (in-store transactions) Recurring subscription orders are excluded automatically. Initial subscription orders **are** sent — these represent genuine new-customer acquisitions. Sources only appear in the exclusion list if you have orders from them. If you don't see a source listed, you haven't had any orders from it yet. <Tip> Send more data to Facebook, not less. Even TikTok Shop orders help Meta find similar customers — the algorithm benefits from volume. Only exclude a source if the orders don't represent real customer acquisition (e.g., wholesale imports) or would actively mislead optimization (e.g., POS sales unrelated to your online ad spend). </Tip> </Accordion> ## Next step <CardGroup> <Card title="Configure contribution margin" icon="arrow-right" href="/analytics/configure-contribution-margin"> Set up COGS, transaction fees, and marketing spend so the P\&L dashboard reflects real profitability. </Card> </CardGroup> ## Related <CardGroup> <Card title="Complete NC Purchase setup guide" icon="book" href="/destinations/catalog/meta-capi/complete-how-to-guide-for-setting-up-new-customer-purchase-metrics-in-facebook-meta-ads-manager"> End-to-end walkthrough for NC Purchase, custom conversions, and reporting columns in Meta Ads Manager. </Card> <Card title="Verify NC Purchase events" icon="circle-check" href="/destinations/catalog/meta-capi/how-to-verify-the-nc-purchase-event-in-facebook-meta-events-manager"> Confirm NC Purchase events are arriving in Meta Events Manager and recognized correctly. </Card> <Card title="Connect a destination" icon="plug" href="/quickstart/connect-a-destination"> Set up Meta CAPI as your first server-side destination for high-quality conversion events. </Card> <Card title="Verify end-to-end delivery" icon="list-check" href="/quickstart/verify-end-to-end"> Confirm the complete pipeline works — from storefront event to destination delivery. </Card> </CardGroup> # What is FBC / Facebook Click ID? Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/what-is-fbc-facebook-click-id Learn what Facebook's FBC and FBP cookies are, how Upstack sends them via the Conversions API, why FBC expires, and what causes missing or modified values. When someone clicks a Facebook ad, Facebook appends `fbclid` to the URL (for example, `?fbclid=abc123`). Facebook's pixel script reads it and stores it as a first-party cookie (`_fbc`) with a version prefix, timestamp, and click ID value. * **FBCLID** is the URL parameter. * **FBC** is the cookie that stores it. Upstack includes the FBC cookie value when sending events via the Conversions API (CAPI). Facebook compares it against its records — mismatches trigger diagnostics warnings. <Tip> Upstack also preserves click IDs across sessions and devices via its identity graph. A visitor who clicked a Facebook ad last week and returns today via Google can still have their original click ID restored. </Tip> ## FBC expiry Facebook click IDs are valid for 90 days. After that, Facebook considers them expired. Upstack stores click IDs beyond this window so returning visitors can still be matched, but if Facebook no longer recognizes the value, it may trigger a "Modified FBC" diagnostic. ## FBP (Facebook Browser ID) FBC ties to a specific ad click, but Facebook also sets a second first-party cookie called `_fbp`. FBP identifies the browser regardless of whether the visitor came from an ad. Both are sent with every Conversions API event. ## FBC is one of Facebook's strongest matching signals FBC directly links a conversion back to a specific ad click, which is why it carries more weight than email or phone for attribution. A high percentage of missing or modified FBC values can reduce your Event Match Quality score in Events Manager. ## Common reasons FBC goes missing * **Redirects** (age gates, A/B tests, language selectors) can strip the `fbclid` parameter before the pixel reads it. * **Ad blockers** can prevent the cookie from being set in the browser — which is why Upstack also sends events server-side. ## Related Articles <CardGroup> <Card title="Modified FBC value warning" href="/troubleshooting/server-sending-modified-fbc-value-in-events-manager" /> <Card title="Generate Facebook CAPI key" href="/destinations/catalog/meta-capi/how-to-generate-my-facebook-conversion-api-key" /> <Card title="Configure Meta Pixel destination" href="/destinations/catalog/meta-capi/how-to-configure-facebook-meta-ads-pixel-destination-in-upstack-data" /> <Card title="Attribution mismatch troubleshooting" href="/troubleshooting/upstack-meta-conversions-dont-match" /> </CardGroup> # Why is my Meta EMQ Panel Showing Zeros (0.0/10)? Source: https://docs.upstackdata.com/destinations/catalog/meta-capi/why-is-my-meta-emq-panel-showing-zeros-0-0-10 Fix Meta EMQ panel zero scores (0.0/10) in Upstack — caused by an access token missing Dataset Quality API permissions. Generate a new token with the right scopes to restore EMQ visibility. # Symptom Your **Meta Event Match Quality (EMQ) panel** inside Upstack Data is showing **0.0/10** across all events (Purchase, Initiate Checkout, View Content, etc.), even though events may still be flowing through to Meta and attribution looks normal. You may also see a notification in Upstack reading something like: <Note> **Meta Pixel destination needs attention. Please check your Meta destination configuration.** </Note> # Why this happens In most cases, a 0.0/10 EMQ score is a **timing issue** — Meta hasn't calculated a score yet. Upstack polls Meta's **Dataset Quality API** hourly to read EMQ scores and display them in the UI, and if Meta has nothing to return, Upstack shows `0.0`. But a persistent 0.0/10 can also indicate a configuration problem — a missing permission on your Meta access token, a pixel ID mismatch, or events not reaching Meta at all. The accordions below cover every cause we see, ordered roughly from most to least common. ## Possible causes <AccordionGroup> <Accordion title="You just connected the destination (most common)"> Meta does not calculate EMQ scores instantly. After you connect your Meta pixel as a destination in Upstack, it takes **24 to 48 hours** for Meta to receive enough events, process them, and generate a score. During this window, EMQ will read 0.0/10 — this is normal and not a sign of a broken configuration. **Fix:** Wait 48 hours after connecting before troubleshooting. If events are visible in [Meta Events Manager](https://business.facebook.com/events_manager) with the "Server" connection label, EMQ will populate on Meta's schedule. </Accordion> <Accordion title="No purchase events have occurred since connecting"> EMQ is calculated per event type, and the Purchase event is the one most people check first. If your store hasn't had any real orders since Upstack was connected, there are no purchase events for Meta to score — so the Purchase EMQ will stay at 0.0/10. **Fix:** Wait for real customer orders to flow through. Test orders and draft orders generally don't trigger the same scoring behavior as real checkouts, so don't rely on them for EMQ evaluation. </Accordion> <Accordion title="Low event volume — Meta hasn't generated a score yet"> Even when events are arriving at Meta, the scoring system needs a minimum volume before it will produce an EMQ reading. New or low-traffic stores can sit at 0.0/10 for longer than 48 hours simply because Meta doesn't have enough data points. **Fix:** If server events are visible in Events Manager but EMQ is still 0.0, continue to let volume build up. Scores typically appear once a handful of events per event type have been processed. </Accordion> <Accordion title="The Pixel ID is misconfigured"> If the Facebook Pixel ID configured in Upstack doesn't match a valid pixel in your Meta Business Manager, events are either rejected or sent to the wrong pixel — and no EMQ score will appear for the pixel you're watching. **Fix:** Verify the pixel ID in both places: 1. In [Meta Events Manager](https://business.facebook.com/events_manager), go to **Data Sources** and confirm the ID of the pixel you expect to receive events. 2. Compare it to the Pixel ID saved on your Upstack Meta destination. 3. If the two don't match, update the ID in Upstack and save the destination. </Accordion> <Accordion title="Events aren't reaching Meta at all"> A 0.0/10 across every event type — with **no server events visible in Events Manager** — usually means events aren't being delivered, not that scoring hasn't happened. Common causes: the destination isn't fully connected, the access token is invalid, or Shopify's native Facebook integration is interfering with Upstack's pipeline. **Fix:** 1. In [Events Manager](https://business.facebook.com/events_manager), open the **Overview** tab and filter for **Server** events. If none are arriving, the issue is upstream of EMQ scoring. 2. Confirm the Upstack Meta destination is saved, active, and not flagged as unhealthy. 3. If Shopify's native Facebook data sharing is enabled, disable it — Upstack handles server-side delivery with stronger identity enrichment, and running both can cause conflicts. </Accordion> <Accordion title="Access token is missing ads_read / ads_management scopes"> This is the most common *configuration* cause (as opposed to a timing cause). Events are flowing and attribution works normally, but Upstack can't read EMQ scores back from Meta because the access token doesn't have the permissions required by the Dataset Quality API. When this happens, the token is **valid and refreshing successfully**, but Meta returns an empty/permission-denied response to the EMQ read call and Upstack stores `0.0` as the last known score. After two consecutive failed hourly pulls, Upstack's destination health manager flags the destination as unhealthy and fires the "needs attention" notification. **Which permissions are required** Per [Meta's Dataset Quality API documentation](https://developers.facebook.com/docs/marketing-api/conversions-api/dataset-quality-api/), the access token used to read EMQ data must include, at minimum: * `ads_read` * Either `ads_management` **or** `business_management` In addition, the **user (or system user) that generated the token** must have the **Partial access → Use events dataset** permission on the pixel/dataset inside Meta Business Manager. Tokens generated with only the basic Conversions API scope (enough to *send* events) will **not** be enough to *read* Dataset Quality metrics. This is especially common on tokens generated a long time ago or generated by a user who no longer has full access to the Business Manager. **Fix: generate a new CAPI token and update the destination** <Steps> <Step title="Generate a new CAPI token in Meta Events Manager"> * Sign in to [Meta Events Manager](https://business.facebook.com/events_manager) at `business.facebook.com/events_manager`. * In the **Data Sources** panel, select the **pixel/dataset** that is showing zeros in Upstack. * Click **Settings** in the left-hand menu inside the pixel. * Scroll to the **Conversions API** section. * Click **Generate access token**. * Copy the token immediately — Meta only shows it once. The token starts with `EAA` and is approximately 190 characters long. <Warning> The user generating the token **must be an admin** (or have full access) on the Meta Business Manager that owns the pixel. If the token is generated by a user with only partial or assigned access, it may still be missing the `ads_read` / `ads_management` scopes and the EMQ panel will continue to read zero. </Warning> </Step> <Step title="Update the CAPI token in the Upstack dashboard"> * Sign in to Upstack Data at [app.upstackdata.com](https://app.upstackdata.com/pixel/event-destinations). * Navigate to **Event Destinations** and open your **Meta** destination. * Paste the new token into the **Conversions API token** field, replacing the existing value. * Leave the **Pixel ID** unchanged (15–16 digit number, no prefix). * Click **Update Configuration**. </Step> <Step title="Wait for the next hourly pull and verify"> Upstack queries Meta's Dataset Quality API **once per hour**. After saving the new token, your EMQ scores should populate on the next scheduled pull (within 1–2 hours). After 1–2 hours, in the Upstack dashboard: * The **EMQ panel** should display non-zero scores (typically 6.0–10.0/10). * The Meta destination card should show **Healthy** with a green status indicator. * The **"Meta Pixel destination needs attention"** notification should clear. If the scores are still 0.0/10 after 2 hours, contact support so we can trigger a manual refresh and verify the token permissions. </Step> </Steps> </Accordion> </AccordionGroup> # How to confirm the fix worked * The EMQ panel inside Upstack should now show **non-zero scores** (typically 6.0–10.0/10 depending on the richness of your event data) * The **"Meta Pixel destination needs attention"** notification should clear * The destination health indicator should return to **healthy/green** # Related Articles [How to find my Upstack Data Pixel ID?](/resources/how-to-find-my-upstack-data-pixel-id) <Note> **Still seeing zeros?** If you've generated a new token from an admin account and the EMQ panel is still reading 0.0/10 after a couple of hours, contact our support team. The most common edge cases are: (1) the token was generated by a user without full Business Manager access, (2) the pixel is owned by a different Business Manager than the one the token is scoped to, or (3) your app doesn't have the Dataset Quality API feature enabled. We can diagnose all of these quickly. </Note> # NewsBreak Ads Source: https://docs.upstackdata.com/destinations/catalog/newsbreak Send conversion events to NewsBreak's postback API for native advertising campaign optimization — powered by Upstack Signal. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> ## What it does NewsBreak's Server-to-Server Postback API is the conversion tracking method for their native advertising platform. Unlike other ad platforms, NewsBreak uses a simple GET-based postback rather than a full browser pixel SDK. Upstack Signal forwards purchases, add-to-carts, and other conversion events directly to NewsBreak's servers, bypassing browser ad blockers and giving NewsBreak's algorithm stronger signal for campaign optimization. Server-side delivery means conversions reach NewsBreak even when browser tracking is blocked by ad blockers, ITP, or cookie restrictions. Each event carries the click identifier (`nbclid`) captured from ad clicks so NewsBreak can match the conversion back to the ad interaction that drove it. <Warning> **Important limitation:** Unlike Meta, TikTok, Google, Reddit, and other ad platforms, NewsBreak does **NOT** support enhanced matching via hashed email, phone, or other PII. Attribution relies **solely on the click ID (`nbclid`)** captured from ad clicks. Events without a click ID cannot be attributed and are skipped. </Warning> ## How it works Upstack Signal captures and stores the NewsBreak click ID when visitors land from a NewsBreak ad. When a visitor takes an action on your store: 1. Captures the NewsBreak click ID (`nbclid`) when the visitor lands from a NewsBreak ad. 2. Stores the click ID in a first-party cookie for attribution across sessions. 3. On conversion events, sends the event to NewsBreak's postback endpoint with the click ID. 4. Logs the response so you can monitor delivery status from the Upstack dashboard. **Attribution model:** NewsBreak uses last-click attribution based solely on the `nbclid` parameter. Cross-device conversions, cookieless conversions, and conversions from returning visitors whose cookies expired **cannot be attributed** to NewsBreak campaigns. ## Tracking Method <Note> **Tracking Method** is set to **Browser + Server** by default, and this is the recommended way to run NewsBreak: Upstack loads the NewsBreak tag on your storefront and also sends events server-side, and the two copies are deduplicated. If you don't want to load the NewsBreak tag in the browser, switch the Tracking Method to **Server**. See [Tracking Method](/concepts/tracking-method). </Note> ## Event mapping Upstack maps storefront events to NewsBreak postback event types automatically: | Upstack event | NewsBreak event | Key parameters | Notes | | ------------------ | ------------------- | -------------------------------- | ------------------------ | | `Purchase` | `complete_payment` | `callback`, `nb_value` (revenue) | Primary conversion event | | `NC Purchase` | `complete_payment` | `callback`, `nb_value` (revenue) | New customer purchase | | `AddToCart` | `add_to_cart` | `callback` (click ID) | Cart additions | | `InitiateCheckout` | `initiate_checkout` | `callback` (click ID) | Checkout started | | `Lead` | `submit_form` | `callback` (click ID) | Form submissions | | `SignUp` | `subscribe` | `callback` (click ID) | Account registration | | `Subscribe` | `subscribe` | `callback` (click ID) | Newsletter signup | | `AddToWishlist` | `add_to_wishlist` | `callback` (click ID) | Wishlist additions | Every event includes the NewsBreak click ID (`nbclid`) when available. **Events without a click ID are skipped** because NewsBreak cannot attribute them to any campaign. <Note> NewsBreak only supports conversion events. Page views, content views, and browsing events are not supported. Revenue is only sent for purchase events via the `nb_value` parameter. </Note> ## FAQ <AccordionGroup> <Accordion title="Why is there no browser pixel for NewsBreak?"> NewsBreak does not provide a public JavaScript SDK like Meta (`fbq`) or TikTok (`ttq`). Their recommended integration method is server-side postbacks using the click ID captured from your landing page URL. Upstack handles all server-side delivery automatically once you configure the destination. </Accordion> <Accordion title="What if a visitor doesn't have a NewsBreak click ID?"> Without a click ID, NewsBreak cannot attribute the conversion to an ad click. This typically happens when visitors arrive through organic traffic or when the `nbclid` parameter is stripped from URLs (e.g., by link shorteners or redirects). Upstack will skip sending events for visitors without a captured click ID to avoid errors. </Accordion> <Accordion title="How do I verify events are arriving in NewsBreak?"> Open NewsBreak Ad Manager, navigate to **Tools → Event Management**, and check that events are appearing. Server-side events should start appearing within 5–10 minutes of storefront activity. Note that test events won't show up in the dashboard — conversions only register when a real user clicks on your ad. </Accordion> <Accordion title="Why are my attribution rates lower than other platforms?"> NewsBreak does not support enhanced matching with hashed PII (email, phone, IP, user-agent). Attribution relies **solely** on the click ID (`nbclid`). If a visitor clears cookies, uses a different device, or the click ID expires, the conversion cannot be attributed. This is a platform limitation, not an Upstack issue. </Accordion> <Accordion title="Does NewsBreak support event deduplication?"> NewsBreak does not have built-in event deduplication like Meta or TikTok. Instead, configure your events in NewsBreak's Event Management with the appropriate counting mode: "Every" (all conversions) or "Once" (unique users only). Since Upstack is server-side only, there is no browser pixel that could fire duplicate events. </Accordion> <Accordion title="What are NewsBreak's rate limits?"> NewsBreak enforces rate limits based on your account tier: | Tier | QPS | QPM | QPD | | -------- | --- | ----- | --------- | | Basic | 10 | 600 | 864,000 | | Advanced | 20 | 1,200 | 1,728,000 | | Premium | 30 | 1,800 | 2,592,000 | Upstack automatically handles rate limiting with exponential backoff and retries failed events. For high-volume accounts, contact NewsBreak about upgrading your tier. </Accordion> </AccordionGroup> ## Troubleshooting <AccordionGroup> <Accordion title="No conversions appearing in NewsBreak dashboard"> If events aren't appearing after confirmed store traffic: **Steps to fix:** 1. Verify your campaign URL suffix includes `nbclid=__CALLBACK_PARAM__` 2. Confirm the Upstack destination shows **Active** (green) 3. Check that the `_nbclid` cookie is being set on your storefront (inspect browser cookies) 4. Test with a real ad click — test traffic without `nbclid` in the URL won't generate events 5. Wait up to 24 hours — NewsBreak may take time to process and display events </Accordion> <Accordion title="No conversions attributed to ads"> Conversions are showing in NewsBreak but not attributed to campaigns: **Steps to fix:** 1. Verify your NewsBreak ad URLs use the correct macro: `?nbclid=__CALLBACK_PARAM__` 2. Confirm the event type in Upstack matches the event configured in NewsBreak Event Management 3. Check that you're not using link shorteners or redirects that strip URL parameters 4. Verify the attribution window in NewsBreak hasn't expired for old click IDs </Accordion> <Accordion title="Low attribution rate compared to other platforms"> This is expected due to NewsBreak's click-ID-only attribution model. **To maximize attribution:** * Ensure all campaigns include `nbclid=__CALLBACK_PARAM__` in the URL suffix * Verify the Upstack Pixel is loading on all pages to capture click IDs * Check that first-party cookies are not being blocked by browser settings * Note that cross-device and returning-visitor conversions will not be attributed </Accordion> <Accordion title="Rate limit errors (code 4034)"> If you see rate limit errors in Upstack logs: **Steps to fix:** 1. Upstack automatically retries with exponential backoff — most rate limit errors resolve on their own 2. If errors persist during peak traffic, consider spreading campaigns across time zones 3. Contact NewsBreak support ([adsupport@newsbreak.com](mailto:adsupport@newsbreak.com)) about upgrading to Advanced or Premium tier for higher limits </Accordion> </AccordionGroup> <Note> For additional troubleshooting beyond NewsBreak-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/destination-shows-disconnected). </Note> ## Related <CardGroup> <Card title="Conversion API forwarding" icon="lightbulb" href="/concepts/conversion-api-forwarding"> How Upstack Signal forwards events to ad platforms via server-to-server APIs. </Card> <Card title="Identity resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack matches anonymous visitors to known customers for higher match rates. </Card> <Card title="Outbrain destination" icon="rectangle-ad" href="/destinations/catalog/outbrain"> Set up Outbrain — another native advertising platform with click-ID-only attribution. </Card> <Card title="Events not reaching destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # Omnisend Source: https://docs.upstackdata.com/destinations/catalog/omnisend Forward identity-resolved customer events and profiles to Omnisend to power email and SMS automation, abandoned cart recovery flows, and workflow triggers via the Omnisend API. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> Omnisend is connected through **Upstack Flows**, the product that handles event delivery to marketing automation platforms. The key value: Upstack identifies visitors that Shopify and Omnisend's native integration miss — turning anonymous browse and cart abandonment sessions into actionable Omnisend contacts with email addresses attached. This means more abandoned cart workflows fire, more browse abandonment messages send, and you recover revenue that would otherwise be invisible. ## How It Works When a visitor takes an action on your store, Upstack: 1. Captures the event through the Upstack Pixel and matches it to a known visitor profile using Upstack's identity resolution. 2. If the visitor is identified (email available), enriches the event with the contact's email and any other known properties. 3. Sends the event to Omnisend using your Omnisend API key as a trackable activity that can trigger workflows. 4. Optionally creates or updates the contact in Omnisend so it can be segmented and messaged. The result: abandoned cart and browse abandonment workflows fire for visitors that Shopify's native tracking misses. ## Set Up Omnisend Follow the onboarding guide for the full end-to-end setup, or jump to a specific step. <CardGroup> <Card title="Onboarding guide" icon="book" href="/destinations/catalog/omnisend/complete-how-to-guide-for-onboarding-omnisend-in-upstack-data"> Complete step-by-step walkthrough for connecting Omnisend to Upstack. </Card> <Card title="Configure destination" icon="sliders" href="/destinations/catalog/omnisend/how-to-configure-omnisend-pixel-destination-in-upstack-data"> Add and configure the Omnisend destination inside the Upstack dashboard. </Card> <Card title="Generate API key" icon="key" href="/destinations/catalog/omnisend/how-to-generate-your-omnisend-api-key"> Generate the Omnisend API key Upstack uses to sync events and contacts. </Card> </CardGroup> ## FAQ <AccordionGroup> <Accordion title="How is this different from Omnisend's native Shopify integration?"> Omnisend's native Shopify integration only sees visitors that Shopify has identified — typically logged-in customers or shoppers who have entered an email at checkout. Upstack's identity resolution matches anonymous sessions to known customer profiles using cookies, click IDs, and cross-session behavioral data, then sends those events to Omnisend with the contact's email attached. This lets your abandoned cart and browse abandonment workflows fire for many more visitors. </Accordion> <Accordion title="Will I get duplicate events if I keep Omnisend's native Shopify integration?"> Possibly. If both Upstack and Omnisend's native integration send the same event types, Omnisend may record both. The recommended approach is to disable the corresponding events in Omnisend's native integration for any event types Upstack is configured to send, and keep the native integration only for events you're not routing through Upstack. </Accordion> <Accordion title="What permissions does the Omnisend API key need?"> The Omnisend API key must have permission to write events and contacts. Use a key with the minimum scope required — Upstack does not need account management or billing permissions. Step-by-step instructions are in [Generate API key](/destinations/catalog/omnisend/how-to-generate-your-omnisend-api-key). </Accordion> <Accordion title="How long does it take for events to appear in Omnisend?"> Once the destination is active, events typically appear in Omnisend within 5 minutes. You can verify by triggering a test action on your store (such as adding a product to cart) and checking the contact's activity feed in Omnisend. </Accordion> </AccordionGroup> ## Related <CardGroup> <Card title="Data Enrichment" icon="magnifying-glass-plus" href="/concepts/data-enrichment"> How Upstack Enrichment improves visitor identification — the foundation of Flows recovery. </Card> <Card title="Identity Resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack ID connects anonymous sessions to known customers with email addresses. </Card> <Card title="Klaviyo Destination" icon="envelope" href="/destinations/catalog/klaviyo"> Sync events and contacts to Klaviyo using the same Upstack Flows pipeline. </Card> <Card title="Events Not Reaching Destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # Complete How-To Guide for Onboarding Omnisend in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/omnisend/complete-how-to-guide-for-onboarding-omnisend-in-upstack-data Onboard Omnisend in Upstack Data — generate the Omnisend API key, configure the destination, and forward identity-enriched events to power email and SMS automation flows. <Tip> **Quick Summary** * Sign in to [Omnisend](https://app.omnisend.com) and generate an **API key** * Sign in to your [Upstack dashboard](https://app.upstackdata.com) * **Configure the Omnisend destination** using your API key * Click **Create Configuration** and verify the destination shows as **Healthy** </Tip> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to your [Omnisend](https://app.omnisend.com) account * Permission to create API keys in Omnisend ## Onboarding Steps <Steps> <Step title="Generate your Omnisend API key"> <Note> An **Omnisend API key** is a unique credential generated in your Omnisend account that allows Upstack Data to securely access and interact with your Omnisend data. It is a long alphanumeric string, typically structured as a 64-character secret followed by a `-` and a short identifier (for example, `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxx`). </Note> Help guide to complete this step: [How to Generate your Omnisend API Key →](/destinations/catalog/omnisend/how-to-generate-your-omnisend-api-key) </Step> <Step title="Configure the Omnisend destination in your Upstack dashboard"> Help guide to complete this step: [How to Configure Omnisend Pixel Destination in Upstack Data →](/destinations/catalog/omnisend/how-to-configure-omnisend-pixel-destination-in-upstack-data) </Step> <Step title="Verify the Omnisend destination is healthy"> In your [Upstack dashboard](https://app.upstackdata.com/pixel/event-destinations), open **Events Destination** and confirm the **Omnisend** destination shows a **Healthy** status. Then, in [Omnisend](https://app.omnisend.com), open **Audience** or **Reports** and confirm contacts and events from Upstack Data are arriving as expected. </Step> </Steps> <Note> **Need help?** If you encounter any issues during setup or don't see expected improvements after 10 days, contact our support team with your Omnisend API key and we'll help diagnose the problem. </Note> # How to Configure Omnisend Pixel Destination in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/omnisend/how-to-configure-omnisend-pixel-destination-in-upstack-data Configure the Omnisend destination in Upstack Data with your Omnisend API key — forwarding browse, cart, checkout, and purchase events to power email and SMS automation triggers. <Tip> **Quick Summary** * In the Upstack dashboard, open **Events Destination** and click **+ New Destination** * Select **Omnisend** from the destination options * Enter your generated **Omnisend API key** * Click **Create Configuration** and verify the destination shows as **Healthy** </Tip> <Note> **What this setup enables** Configuring Omnisend as a destination in Upstack Data ensures accurate tracking of customer events, consolidates attribution reporting, and provides more reliable data to optimize ad performance. </Note> ## Tracking Method <Note> Omnisend receives events server-side only. See [Tracking Method](/concepts/tracking-method). </Note> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to your [Omnisend](https://app.omnisend.com) account * Your Omnisend **API key** ([how to generate it](/destinations/catalog/omnisend/how-to-generate-your-omnisend-api-key)) ## Configuration Steps <Steps> <Step title="Sign in to your Upstack dashboard"> Sign in to [Upstack Data](https://app.upstackdata.com) and open the [Events Destination](https://app.upstackdata.com/pixel/event-destinations) page. </Step> <Step title="Add a new Omnisend destination"> In the **Events Destination** page, click **+ New Destination** in the top-right of the page. <img alt="Add New Destination" /> In the **Select a Destination** popup, click **Omnisend**, then click **Next**. <img alt="Select a Destination popup with Omnisend option highlighted" /> </Step> <Step title="Enter your Omnisend API key"> In the configuration form, paste your generated **Omnisend API key** into the **API key** field. The API key is a long alphanumeric string, typically formatted as a 64-character secret followed by a `-` and a short identifier (for example, `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxx`). <img alt="Omnisend destination configuration form with API key field" /> </Step> <Step title="Create the configuration"> Click the **Create Configuration** button at the bottom of the form. <img alt="Create Configuration button at bottom of Omnisend destination form" /> <Note> **Success! 🎉** You should see a confirmation message and the Omnisend destination will appear as **Healthy** in your destinations list. </Note> <Note> Here's a help guide on **[How to Generate your Omnisend API Key →](/destinations/catalog/omnisend/how-to-generate-your-omnisend-api-key)** </Note> </Step> <Step title="Verify the destination is sending events"> Back in the [Events Destination](https://app.upstackdata.com/pixel/event-destinations) page, confirm the new **Omnisend** destination shows a **Healthy** status. Then, in [Omnisend](https://app.omnisend.com), open **Audience** or **Reports** and confirm contacts and events from Upstack Data are arriving as expected. New events typically appear within a few minutes after a test purchase or page view. </Step> </Steps> # How to Generate your Omnisend API Key Source: https://docs.upstackdata.com/destinations/catalog/omnisend/how-to-generate-your-omnisend-api-key Generate or locate your Omnisend API key in the Omnisend dashboard — required to authenticate the Upstack Data Omnisend destination and forward server-side events. <Tip> **Quick Summary** * Sign in to [Omnisend](https://app.omnisend.com) * Open **Store settings → API** * Click **+ Create API key**, name it `UpstackData`, then click **Create API key** * **Copy** the generated API key and store it securely (Omnisend only shows it once) * Paste the API key into the Omnisend destination form in your Upstack dashboard </Tip> <Note> What is an **Omnisend API key**? An **Omnisend API key** is a unique credential generated in your Omnisend account that allows Upstack Data to securely access and interact with your Omnisend data. It is a long alphanumeric string, typically structured as a 64-character secret followed by a `-` and a short identifier (for example, `xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxx`). </Note> ## Prerequisites Before you start, you need: * Admin access to your [Omnisend](https://app.omnisend.com) account * Permission to create API keys in Omnisend * A secure place to store the generated API key (Omnisend only displays it once) ## Steps to Generate the API Key <Steps> <Step title="Sign in to Omnisend"> Sign in to [Omnisend](https://app.omnisend.com) to open your dashboard. In the left-hand menu, click **Store settings**, then go to the **API** tab. <img alt="Omnisend left menu with Store settings option highlighted" /> <img alt="Omnisend Store settings page with API tab selected" /> </Step> <Step title="Create a new API key"> On the **API** settings page, click the **+ Create API key** button. <img alt="Omnisend API settings page with Create API key button" /> Enter `UpstackData` as the API key name, then click **Create API key**. <img alt="Create API key dialog with UpstackData name entered" /> </Step> <Step title="Copy and save your API key"> Click the **Copy API key** button to copy the generated API key, then store it securely (for example, in a password manager). Paste the API key into the **API key** field when [configuring the Omnisend destination](/destinations/catalog/omnisend/how-to-configure-omnisend-pixel-destination-in-upstack-data) in your Upstack dashboard. <Warning> This API key is only shown once — copy it immediately. The API key is sensitive: anyone with it can read and write data in your Omnisend account, so store it in a secure location and never share it. </Warning> <img alt="Omnisend API key generated with Copy API key button" /> </Step> <Step title="Verify the API key format"> Confirm the value you copied is a long alphanumeric string with no extra spaces — typically a 64-character secret followed by a `-` and a short identifier. You can paste it into the **API key** field when configuring the Omnisend destination in your Upstack dashboard. </Step> </Steps> <Note> Here's a help guide on **[How to Configure Omnisend Pixel Destination in Upstack Data →](/destinations/catalog/omnisend/how-to-configure-omnisend-pixel-destination-in-upstack-data)** </Note> # Outbrain Amplify Source: https://docs.upstackdata.com/destinations/catalog/outbrain Send conversion events to Outbrain's Unified Pixel API for native advertising campaign optimization — powered by Upstack Signal. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> ## What it does Outbrain's Unified Pixel API is the server-side counterpart to the Outbrain browser pixel. Upstack Signal forwards storefront events — page views, product views, add-to-carts, and purchases — directly to Outbrain's servers for native advertising campaign optimization. Server-side delivery means conversions reach Outbrain even when the browser-side pixel is blocked by ad blockers, ITP, or cookie restrictions. Each event carries the click identifier (`obclid`) captured from ad clicks so Outbrain can match the conversion back to the ad interaction that drove it. <Warning> **Important limitation:** Unlike Meta, TikTok, Google, Reddit, and other ad platforms, Outbrain does **NOT** support enhanced matching via hashed email, phone, or other PII. Attribution relies **solely on the click ID (`obclid`)** captured from ad clicks. Events without a click ID cannot be attributed and are skipped. </Warning> ## How it works Upstack Signal runs as a dual-tracking layer alongside the Outbrain browser pixel. The Upstack Pixel captures events in the browser and forwards each one to Upstack's edge infrastructure, where it is enriched with the Outbrain click ID from cookie storage and sent to Outbrain's Unified Pixel API as a server-side event. Unlike other ad platforms, Outbrain's deduplication relies on the `orderId` field rather than a shared `event_id`. Always include a transaction ID on purchase events to prevent double-counting when running both browser pixel and server-side delivery. **Attribution model:** Outbrain uses last-click attribution based solely on the `obclid` parameter. Cross-device conversions, cookieless conversions, and conversions from returning visitors whose cookies expired **cannot be attributed** to Outbrain campaigns. ## Setup guides <CardGroup> <Card title="Onboarding guide" icon="route" href="/destinations/catalog/outbrain/complete-how-to-guide-for-onboarding-outbrain-in-upstack-data"> End-to-end walkthrough for connecting Outbrain to Upstack Data. </Card> <Card title="Configure destination" icon="sliders" href="/destinations/catalog/outbrain/how-to-configure-outbrain-destination-in-upstack-data"> Configure the Outbrain destination inside Upstack Data. </Card> <Card title="Find Marketer ID" icon="magnifying-glass" href="/destinations/catalog/outbrain/how-to-find-outbrain-marketer-id"> Locate your Outbrain Marketer ID in the Amplify Dashboard. </Card> <Card title="Configure click ID tracking" icon="link" href="/destinations/catalog/outbrain/how-to-configure-outbrain-click-id-tracking"> Add the click ID parameter to your campaign URL suffix. </Card> </CardGroup> ## Event mapping Upstack maps storefront events to Outbrain events automatically: | Upstack event | Outbrain event | Key parameters | Notes | | ------------- | -------------- | --------------------------------------- | ---------------------------------------- | | `Purchase` | `Conversion` | `orderValue`, `currency`, `orderId` | Primary conversion event | | `Lead` | `Lead` | `orderValue`, `orderId` | Lead form submissions | | `SignUp` | `Sign_Up` | `orderId` | Account registration | | `AddToCart` | `AddToCart` | `productId`, `productValue`, `currency` | Cart additions | | `ViewContent` | `Content_View` | `productId`, `productValue` | Product page views (disabled by default) | | `PageView` | `PAGE_VIEW` | — | Page load (disabled by default) | Every event includes the Outbrain click ID (`obclid`) when available. **Events without a click ID are skipped** because Outbrain cannot attribute them to any campaign. ## Field mapping | Upstack field | Outbrain field | Type | Notes | | -------------------- | -------------- | ------ | --------------------------- | | `data.value` | `orderValue` | number | Transaction amount | | `data.currency` | `currency` | string | ISO 4217 (USD, EUR, GBP) | | `data.transactionId` | `orderId` | string | Unique ID for deduplication | | `item.id` | `productId` | string | Product SKU | | `item.name` | `productName` | string | Product name | | `item.category` | `category` | string | Product category | | `item.quantity` | `quantity` | number | Number of items | ## FAQ <AccordionGroup> <Accordion title="How do I verify events are arriving in Outbrain?"> Open Outbrain Amplify Dashboard, navigate to **Conversions**, and check that events are appearing. Server-side events should start appearing within 5–10 minutes of storefront activity. Note that test events won't show up in the dashboard — conversions only register when a real user clicks on your ad in the Outbrain widget. </Accordion> <Accordion title="Why are my attribution rates lower than other platforms?"> Outbrain does not support enhanced matching with hashed PII (email, phone, IP, user-agent). Attribution relies **solely** on the click ID (`obclid`). If a visitor clears cookies, uses a different device, or the click ID expires (after 30 days), the conversion cannot be attributed. This is a platform limitation, not an Upstack issue. </Accordion> <Accordion title="Will my events be counted twice if I run both the pixel and server-side?"> Outbrain deduplicates based on the `orderId` field. Always include a unique transaction ID on purchase events. If you're sending events from multiple sources (Upstack, GTM, direct pixel), ensure they all use the same `orderId` for the same transaction. </Accordion> <Accordion title="Do event names need to match exactly?"> Yes — event names are **case-sensitive** and must exactly match the conversion name configured in your Outbrain Amplify dashboard. `Purchase` ≠ `purchase` ≠ `PURCHASE`. Verify the exact spelling in Amplify → Conversions before configuring Upstack. </Accordion> <Accordion title="What happens if the click ID is missing?"> Events without an Outbrain click ID are **skipped** and not sent to Outbrain. This is intentional — Outbrain cannot attribute conversions without a click ID, so sending them would inflate your event volume without improving attribution. Ensure your campaign URL suffix includes `obclid={{ob_click_id}}` so the Upstack Pixel can capture click IDs. </Accordion> </AccordionGroup> ## Troubleshooting <AccordionGroup> <Accordion title="No conversions appearing in Outbrain dashboard"> If events aren't appearing after confirmed store traffic: **Steps to fix:** 1. Verify your campaign URL suffix includes `obclid={{ob_click_id}}` 2. Confirm the Upstack destination shows **Active** (green) 3. Check that the Marketer ID matches your Amplify account 4. Test with a real ad click — test traffic without `obclid` in the URL won't generate events </Accordion> <Accordion title="Invalid Marketer ID error"> The Marketer ID (also called OB\_ADV\_ID or Pixel ID) must be the 32-character hexadecimal string from Amplify. **Steps to fix:** 1. Go to Amplify Dashboard → Settings → Tracking 2. Copy the full Marketer ID (no spaces, no extra characters) 3. Update the destination in Upstack with the correct ID </Accordion> <Accordion title="Low attribution rate compared to other platforms"> This is expected due to Outbrain's click-ID-only attribution model. **To maximize attribution:** * Ensure all campaigns include `obclid={{ob_click_id}}` in the URL suffix * Verify the Upstack Pixel is loading on all pages to capture click IDs * Check that first-party cookies are not being blocked by browser settings * Note that cross-device and returning-visitor conversions will not be attributed </Accordion> </AccordionGroup> <Note> For additional troubleshooting beyond Outbrain-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/destination-shows-disconnected). </Note> ## Related <CardGroup> <Card title="Conversion API forwarding" icon="lightbulb" href="/concepts/conversion-api-forwarding"> How Upstack Signal forwards events to ad platforms via server-to-server APIs. </Card> <Card title="Identity resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack matches anonymous visitors to known customers for higher match rates. </Card> <Card title="Meta CAPI destination" icon="meta" href="/destinations/catalog/meta-capi"> Set up Meta's Conversions API — supports enhanced matching unlike Outbrain. </Card> <Card title="Events not reaching destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # Complete How-To Guide for Onboarding Outbrain in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/outbrain/complete-how-to-guide-for-onboarding-outbrain-in-upstack-data Onboard Outbrain Amplify in Upstack Data — locate your Marketer ID, configure the click ID tracking, and set up the destination for server-side conversion forwarding. <Info> **New to Upstack?** Follow the [getting started guide](/quickstart/install-on-shopify) for a streamlined onboarding walkthrough. </Info> <Tip> * Configure the **Outbrain destination** in Upstack Data with your **Marketer ID**. * Add `obclid={{ob_click_id}}` to your **campaign URL suffix** to capture click IDs. * Verify events appear in **Outbrain Amplify Dashboard → Conversions**. * Monitor attribution improvements over 7-10 days of campaign traffic. </Tip> <Warning> **Critical limitation:** Unlike Meta, TikTok, and Reddit, Outbrain does **NOT** support enhanced matching with hashed email or phone. Attribution relies **solely on click ID (`obclid`)**. Events from visitors without a click ID are skipped — they cannot be attributed to any campaign. </Warning> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to an **Outbrain Amplify** account * Your **Outbrain Marketer ID** from [Amplify Dashboard → Settings → Tracking](https://amplify.outbrain.com/) * Active Outbrain campaigns with click ID tracking configured <Steps> <Step title="Configure click ID tracking in your campaigns"> Add the click ID parameter to your campaign tracking URLs so Upstack can capture and store the click ID for attribution. **Add to your campaign URL suffix:** ``` obclid={{ob_click_id}} ``` Help guide: [How to configure Outbrain click ID tracking →](/destinations/catalog/outbrain/how-to-configure-outbrain-click-id-tracking) </Step> <Step title="Find your Outbrain Marketer ID"> Locate your Marketer ID (also called OB\_ADV\_ID) in the Outbrain Amplify dashboard. This 32-character hexadecimal string identifies your account for conversion tracking. Help guide: [How to find your Outbrain Marketer ID →](/destinations/catalog/outbrain/how-to-find-outbrain-marketer-id) </Step> <Step title="Configure the Outbrain destination in Upstack Data"> In the Upstack dashboard, navigate to **Event Destinations** and add an **Outbrain** destination using your **Marketer ID**. Help guide: [How to configure the Outbrain destination in Upstack Data →](/destinations/catalog/outbrain/how-to-configure-outbrain-destination-in-upstack-data) </Step> <Step title="Verify the full setup is healthy"> Confirm each piece of the setup is working: * In the Upstack dashboard, **Event Destinations** shows your Outbrain destination as **Healthy** (green). * In [Outbrain Amplify Dashboard](https://amplify.outbrain.com/), the **Conversions** page shows recent events. * Test with a real ad click — clicking your own ad and completing a purchase should generate a tracked conversion within 5-10 minutes. If anything is unhealthy, check the corresponding help guide above for troubleshooting steps. </Step> </Steps> ## What to expect after setup ### Attribution limitations Unlike other ad platforms (Meta, TikTok, Reddit, Google), Outbrain only attributes conversions when a click ID is present: | Scenario | Attribution | | ----------------------------------------------------- | ------------------------------------------ | | User clicks ad with `obclid`, converts same session | ✅ Attributed | | User clicks ad with `obclid`, converts within 30 days | ✅ Attributed (if cookie persists) | | User visits directly without ad click | ❌ Skipped (no click ID) | | User clears cookies between click and conversion | ❌ Skipped (click ID lost) | | User clicks on mobile, converts on desktop | ❌ Skipped (different device/cookie) | | Known customer with email, no click ID | ❌ Skipped (email not used for attribution) | ### Conversion reporting timeline * **Initial conversions** start appearing in Amplify within 5-10 minutes of real ad clicks and purchases. * **Full attribution picture** emerges over 7-10 days as more users complete the click → conversion journey. * **Lower attribution rates** compared to Meta/TikTok are expected — this reflects Outbrain's click-only attribution model, not a tracking issue. ### Deduplication Outbrain deduplicates based on `orderId`. If you're running both the Outbrain browser pixel and Upstack server-side delivery, ensure both send the same `orderId` value for the same transaction to avoid double-counting. <Note> **Need help?** If you encounter any issues during setup or don't see conversions appearing after confirming ad clicks, contact our [support team](/troubleshooting/support) with your **Outbrain Marketer ID** and we'll help diagnose the problem. </Note> # How to Configure Outbrain Click ID Tracking Source: https://docs.upstackdata.com/destinations/catalog/outbrain/how-to-configure-outbrain-click-id-tracking Add the Outbrain click ID parameter to your campaign URL suffix — required for server-side conversion attribution via Upstack Data. <Tip> * Open your campaign in **Outbrain Amplify Dashboard**. * Navigate to the **Tracking** or **URL Parameters** section. * Add `obclid={{ob_click_id}}` to your **URL suffix** or tracking template. * Save and verify URLs include the click ID on ad clicks. </Tip> <Warning> **This step is critical.** Outbrain does **NOT** support enhanced matching with email or phone. Attribution relies **solely** on the click ID (`obclid`). Without this parameter in your campaign URLs, Upstack cannot attribute any conversions to Outbrain — all events will be skipped. </Warning> <Note> **What is the Outbrain click ID?** The **click ID** (also called `ob_click_id` or `obclid`) is a unique identifier that Outbrain generates for each ad click. When a user clicks your ad, Outbrain appends this ID to your landing page URL. Upstack captures and stores this ID in a first-party cookie, then includes it with every conversion event so Outbrain can match the conversion back to the original ad click. </Note> ## Prerequisites Before you start, you need: * Access to an **Outbrain Amplify** account at [amplify.outbrain.com](https://amplify.outbrain.com/) * Campaign edit permissions * Active or draft campaigns to update ## Steps to configure click ID tracking <Steps> <Step title="Sign in to Outbrain Amplify"> Sign in to Outbrain Amplify at [amplify.outbrain.com](https://amplify.outbrain.com/). </Step> <Step title="Open your campaign"> Navigate to **Campaigns** and select the campaign you want to configure. Click **Edit** or **Settings** to access the campaign configuration. </Step> <Step title="Find the URL parameters section"> Look for **Tracking**, **URL Parameters**, **URL Suffix**, or **Tracking Template** in the campaign settings. This is where you add parameters that Outbrain will append to your landing page URLs. </Step> <Step title="Add the click ID parameter"> Add the following to your URL suffix: ``` obclid={{ob_click_id}} ``` **If you already have other tracking parameters** (like UTM tags), append the click ID with an ampersand: ``` utm_source=outbrain&utm_medium=native&utm_campaign={{campaign_name}}&obclid={{ob_click_id}} ``` <Tip> The `{{ob_click_id}}` placeholder is a dynamic macro that Outbrain replaces with the actual click ID when a user clicks your ad. </Tip> </Step> <Step title="Save the campaign"> Click **Save** or **Apply** to save your changes. </Step> <Step title="Verify the configuration"> To verify the click ID is being appended: 1. Preview your ad or click on it from a test placement 2. Check the landing page URL in your browser's address bar 3. Confirm you see `obclid=v1-abc123...` (a long alphanumeric string starting with `v1-`) **Example URL after click:** ``` https://yourstore.com/products/widget?utm_source=outbrain&obclid=v1-abc123xyz789def456ghi789jkl012 ``` </Step> <Step title="Update all active campaigns"> Repeat steps 2-5 for **all your active Outbrain campaigns**. <Warning> Any campaign missing the `obclid` parameter will not have its conversions attributed. Make sure to update all campaigns, including existing ones. </Warning> </Step> </Steps> ## How Upstack captures the click ID Once your campaigns are configured: 1. **User clicks ad** → Outbrain appends `obclid=v1-...` to the landing page URL 2. **Upstack Pixel loads** → Captures the `obclid` from the URL and stores it in a first-party cookie (`_obclid`) 3. **User converts** → Upstack includes the stored click ID with the conversion event 4. **Event sent to Outbrain** → Outbrain matches the conversion to the original ad click The click ID cookie expires after 30 days, matching Outbrain's attribution window. ## Alternative parameter name Outbrain also recognizes `ob_click_id` as a URL parameter name. Both work identically: * `obclid={{ob_click_id}}` ✅ Recommended (shorter) * `ob_click_id={{ob_click_id}}` ✅ Also works Upstack captures both parameter names automatically. ## Troubleshooting ### Click ID not appearing in URL If the click ID isn't being appended after clicking your ad: 1. Verify the URL suffix is saved correctly in the campaign settings 2. Check for typos — the macro must be exactly `{{ob_click_id}}` 3. Clear your browser cache and try clicking the ad again 4. Contact Outbrain support if the issue persists ### Conversions not being attributed If you've configured the click ID but conversions aren't appearing in Amplify: 1. Verify the Upstack Pixel is loading on your landing pages (check browser dev tools) 2. Confirm the `_obclid` cookie is being set after ad clicks 3. Check that your Upstack destination shows **Healthy** status 4. Wait 5-10 minutes — conversions aren't instant <Note> **Next step:** [How to configure the Outbrain destination in Upstack Data](/destinations/catalog/outbrain/how-to-configure-outbrain-destination-in-upstack-data) </Note> # How to Configure Outbrain Destination in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/outbrain/how-to-configure-outbrain-destination-in-upstack-data Configure the Outbrain destination in Upstack Data to forward server-side conversion events to Outbrain's Unified Pixel API for native advertising attribution. <Tip> * Navigate to **Event Destinations** in the Upstack dashboard. * Click **Add Destination** and select **Outbrain**. * Enter your **Marketer ID** (32-character hexadecimal string from Amplify). * Save the configuration and verify the destination shows **Healthy**. </Tip> <Note> **What is the Outbrain Marketer ID?** Your **Outbrain Marketer ID** (also called **OB\_ADV\_ID** or **Pixel ID**) is a unique 32-character hexadecimal identifier that tells Upstack which Outbrain account should receive your conversion events. Find it in [Amplify Dashboard → Settings → Tracking](https://amplify.outbrain.com/). </Note> ## Tracking Method <Note> Outbrain offers two Tracking Method options: **Browser + Server** (default, recommended) and **Server** — there is no browser-only option. Upstack sends events server-side either way; on **Server**, the Outbrain tag stops loading on your storefront. See [Tracking Method](/concepts/tracking-method). </Note> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Your **Outbrain Marketer ID** — see [How to find your Outbrain Marketer ID](/destinations/catalog/outbrain/how-to-find-outbrain-marketer-id) * Click ID tracking configured in your campaigns — see [How to configure Outbrain click ID tracking](/destinations/catalog/outbrain/how-to-configure-outbrain-click-id-tracking) ## Steps to configure the Outbrain destination <Steps> <Step title="Sign in to Upstack Data"> Sign in to your Upstack Data account at [app.upstackdata.com](https://app.upstackdata.com). </Step> <Step title="Navigate to Event Destinations"> In the left-hand navigation, click **Event Destinations**. </Step> <Step title="Add a new destination"> Click the **Add Destination** button in the top-right corner. In the destination picker, select **Outbrain** from the list of available destinations. </Step> <Step title="Enter your Marketer ID"> In the **Outbrain Marketer ID** field, paste your Marketer ID from the Outbrain Amplify dashboard. **Example format:** `00abc123def456789012345678901234` (32 hexadecimal characters) <Tip> Ensure there are no extra spaces before or after the ID. The value should be exactly 32 characters. </Tip> </Step> <Step title="Configure event settings (optional)"> By default, Upstack forwards **Purchase**, **Lead**, **SignUp**, and **AddToCart** events to Outbrain. High-volume events like **PageView** and **ViewContent** are disabled by default to avoid unnecessary API calls — you can enable them if needed for your use case. </Step> <Step title="Save the configuration"> Click **Create Configuration** to save the destination. </Step> <Step title="Verify the destination is healthy"> In the Upstack dashboard, navigate to **Event Destinations**. Your Outbrain destination should display **Healthy** with a green status indicator within 5 minutes. If the status shows **Unhealthy**, double-check: * The Marketer ID is exactly 32 hexadecimal characters * No extra whitespace or special characters * The ID matches what you see in Amplify → Settings → Tracking </Step> </Steps> <Warning> **Remember:** Outbrain only attributes conversions when a click ID (`obclid`) is present. Make sure your campaign URLs include `obclid={{ob_click_id}}` — see [How to configure Outbrain click ID tracking](/destinations/catalog/outbrain/how-to-configure-outbrain-click-id-tracking). </Warning> <Note> **Next step:** [Complete onboarding guide](/destinations/catalog/outbrain/complete-how-to-guide-for-onboarding-outbrain-in-upstack-data) for the full setup walkthrough. </Note> # How to Find Your Outbrain Marketer ID Source: https://docs.upstackdata.com/destinations/catalog/outbrain/how-to-find-outbrain-marketer-id Find your Outbrain Marketer ID in the Amplify Dashboard — required to configure the Upstack Data Outbrain destination for server-side conversion forwarding. <Tip> * Sign in to [Outbrain Amplify Dashboard](https://amplify.outbrain.com/). * Navigate to **Settings → Tracking** (or **Account Settings → Pixel**). * Locate the **Marketer ID** (also called OB\_ADV\_ID or Pixel ID). * Copy the 32-character hexadecimal string and paste it into Upstack. </Tip> <Note> **What is an Outbrain Marketer ID?** Your **Outbrain Marketer ID** (also known as **OB\_ADV\_ID** or **Advertiser ID**) is a unique 32-character hexadecimal identifier that Upstack Data uses to send conversion data to your Outbrain account. This ID is also embedded in the Outbrain pixel code if you've installed it manually. </Note> ## Prerequisites Before you start, you need: * Access to an **Outbrain Amplify** account at [amplify.outbrain.com](https://amplify.outbrain.com/) * Account admin or campaign manager permissions ## Steps to find your Outbrain Marketer ID <Steps> <Step title="Sign in to Outbrain Amplify"> Sign in to Outbrain Amplify at [amplify.outbrain.com](https://amplify.outbrain.com/). If you have multiple accounts, select the account you want to connect to Upstack. </Step> <Step title="Navigate to Settings"> Click your account name or profile icon in the top-right corner, then select **Settings**. Alternatively, look for a **Settings** or **Account Settings** option in the navigation menu. </Step> <Step title="Open Tracking settings"> In the Settings menu, click **Tracking** or **Pixel** to view your tracking configuration. This page contains your Outbrain pixel installation code and Marketer ID. </Step> <Step title="Locate your Marketer ID"> Look for the **Marketer ID**, **OB\_ADV\_ID**, **Advertiser ID**, or **Pixel ID** field. **Example format:** `00abc123def456789012345678901234` The Marketer ID is a 32-character hexadecimal string (letters a-f and numbers 0-9 only). <Tip> If you see the pixel installation code, the Marketer ID is the value assigned to `OB_ADV_ID` in the JavaScript snippet: ```javascript theme={null} var OB_ADV_ID = '00abc123def456789012345678901234'; ``` </Tip> </Step> <Step title="Copy the Marketer ID"> Copy the full 32-character Marketer ID. <Warning> Make sure to copy the complete ID with no extra spaces or characters. The ID must be exactly 32 hexadecimal characters. </Warning> </Step> <Step title="Paste into Upstack Data"> In the Upstack dashboard, navigate to **Event Destinations → Add Destination → Outbrain**. Paste the Marketer ID into the **Outbrain Marketer ID** field. </Step> <Step title="Save and verify"> Click **Create Configuration** to save the destination. Your Outbrain destination should display **Healthy** with a green status indicator within 5 minutes. If the status shows **Unhealthy**, double-check that the Marketer ID was copied correctly without extra whitespace. </Step> </Steps> ## Troubleshooting ### Can't find the Marketer ID in Settings If you don't see a Tracking or Pixel section in Settings: 1. Check if you have admin permissions — campaign-level users may not see account settings 2. Look for **Events** or **Conversions** in the navigation menu 3. Contact your Outbrain account manager if you still can't locate it ### Marketer ID validation fails in Upstack If Upstack reports an invalid Marketer ID: 1. Verify the ID is exactly 32 characters 2. Confirm it contains only hexadecimal characters (0-9, a-f) 3. Remove any extra spaces, quotes, or special characters 4. Re-copy from the Amplify dashboard <Note> **Next step:** [How to configure Outbrain click ID tracking](/destinations/catalog/outbrain/how-to-configure-outbrain-click-id-tracking) — required for attribution to work. </Note> # Event destinations Source: https://docs.upstackdata.com/destinations/catalog/overview Event destinations send your conversion events and customer data from Upstack Data to ad platforms, analytics tools, and automation systems. Event destinations are integrations that receive data **from** Upstack Data. When a visitor views a product, adds to cart, or completes a purchase, Upstack forwards that event — enriched with identity and attribution data — to the platforms where you need it most. ## Browser-side vs. server-side tracking Most ad platforms support two ways of receiving conversion data: | Method | How it works | Strengths | Limitations | | ------------------------ | ------------------------------------------------------- | --------------------------------------------------------- | -------------------------------------------------------------------------- | | **Browser-side (pixel)** | JavaScript tag fires in the visitor's browser | Easy to set up; real-time | Blocked by ad blockers, ITP, and cookie restrictions; limited data quality | | **Server-side (CAPI)** | Your server sends events directly to the platform's API | Resistant to ad blockers; richer data; higher match rates | Requires server infrastructure and identity resolution | Upstack destinations use **server-side delivery** — events are sent from Upstack's infrastructure directly to each platform's conversion API. This means your data reaches ad networks even when browser pixels are blocked, giving you significantly higher event match rates and more accurate optimization signals. <Tip> Upstack still installs a lightweight browser pixel on your Shopify storefront to capture events in real time. The pixel feeds events into Upstack, which then forwards them server-side to your destinations. You get the speed of browser collection **and** the reliability of server delivery. </Tip> ## Upstack products that power event destinations Destinations are configured through two Upstack products depending on the platform type: * **Upstack Signal** handles conversion API forwarding to ad platforms (Meta CAPI, Google Ads, TikTok, Pinterest, Snapchat, Reddit, AppLovin, LinkedIn, Microsoft/Bing, Outbrain, Taboola, NewsBreak). Signal enriches each event with hashed PII, click IDs, and attribution parameters before delivery so platforms can match conversions to the right ad interactions. * **Upstack Flows** handles event delivery to marketing automation and data platforms (Klaviyo, Omnisend, Sendlane, Loops, Attentive, PostHog, Slack, webhooks). Flows lets you map Upstack events to platform-specific actions — for example, triggering a Klaviyo flow when a high-intent visitor abandons checkout. ## Available event destinations ### Ad Platforms <CardGroup> <Card title="Meta CAPI" icon="meta" href="/destinations/catalog/meta-capi"> Send conversion events to Facebook and Instagram via the Conversions API for improved ad optimization. </Card> <Card title="Google Ads" icon="google" href="/destinations/catalog/google-ads"> Forward conversion events to Google Ads for Smart Bidding and audience building. </Card> <Card title="TikTok" icon="tiktok" href="/destinations/catalog/tiktok"> Send conversion events to TikTok via the Events API for campaign optimization and audience building. </Card> <Card title="Pinterest" icon="pinterest" href="/destinations/catalog/pinterest"> Send conversion events to Pinterest via the Conversions API for campaign optimization. </Card> <Card title="Snapchat" icon="snapchat" href="/destinations/catalog/snapchat"> Send conversion events to Snapchat via the Conversions API for campaign optimization. </Card> <Card title="Reddit Ads" icon="reddit" href="/destinations/catalog/reddit"> Forward conversion events to Reddit's Conversions API to recover ad-blocker losses and improve EMQ. </Card> <Card title="AppLovin" icon="mobile" href="/destinations/catalog/applovin"> Send conversion events to AppLovin for mobile app install campaign optimization. </Card> <Card title="LinkedIn Ads" icon="linkedin" href="/destinations/catalog/linkedin"> Forward B2B conversion events to LinkedIn's Conversions API for campaign optimization. </Card> <Card title="Microsoft/Bing Ads" icon="microsoft" href="/destinations/catalog/bing"> Send conversion events to Microsoft Advertising via the Conversions API. </Card> <Card title="Outbrain" icon="bullhorn" href="/destinations/catalog/outbrain"> Forward conversion events to Outbrain for native advertising optimization. </Card> <Card title="Taboola" icon="rectangle-ad" href="/destinations/catalog/taboola"> Send conversion events to Taboola for native advertising campaign optimization. </Card> <Card title="NewsBreak" icon="newspaper" href="/destinations/catalog/newsbreak"> Forward conversion events to NewsBreak for news feed advertising optimization. </Card> </CardGroup> ### Email & SMS Marketing <CardGroup> <Card title="Klaviyo" icon="envelope" href="/destinations/catalog/klaviyo"> Sync customer events and properties to Klaviyo for email/SMS automation, segmentation, and flow triggers. </Card> <Card title="Omnisend" icon="envelope-open-text" href="/destinations/catalog/omnisend"> Sync customer events and profiles to Omnisend for email/SMS automation and abandonment flows. </Card> <Card title="Sendlane" icon="paper-plane" href="/destinations/catalog/sendlane"> Send customer events to Sendlane for email marketing automation. </Card> <Card title="Loops" icon="rotate" href="/destinations/catalog/loops"> Send customer events to Loops for automated email marketing workflows. </Card> </CardGroup> ### Analytics <CardGroup> <Card title="PostHog" icon="chart-simple" href="/destinations/catalog/posthog"> Send events to PostHog for product analytics and feature flags. </Card> </CardGroup> ### Notifications & Integrations <CardGroup> <Card title="Slack" icon="slack" href="/destinations/catalog/slack"> Send real-time notifications to Slack channels for orders, events, and alerts. </Card> <Card title="Webhooks" icon="webhook" href="/destinations/catalog/webhooks"> Deliver raw event payloads to any HTTP endpoint for custom integrations and data warehouses. </Card> </CardGroup> ### Deprecated <CardGroup> <Card title="Google Analytics 4" icon="chart-line" href="/destinations/catalog/ga4"> GA4 destination is deprecated. Use native GA4 installation instead. </Card> </CardGroup> ## How destination delivery works When an event enters Upstack (from a source like Shopify), the delivery pipeline runs automatically: 1. **Identity enrichment** — the event is matched to a customer profile and enriched with hashed email, phone, and any available click IDs (`fbc`, `fbp`, `ttclid`, `gclid`). 2. **Destination mapping** — Upstack maps the event to each destination's expected schema (for example, `Purchase` becomes a Meta `Purchase` event with the correct currency, value, and content IDs). 3. **Server-side delivery** — the enriched, mapped event is sent to the destination's API from Upstack's infrastructure. 4. **Delivery confirmation** — Upstack logs the response from each destination so you can monitor match rates and troubleshoot failures from the dashboard. <Note> Each destination can be independently enabled or disabled without affecting other destinations. You can also filter which events are sent to each destination from the destination's settings page. </Note> # Pinterest Ads Source: https://docs.upstackdata.com/destinations/catalog/pinterest Send conversion events to Pinterest's Conversions API for ad campaign optimization, audience building, and attribution. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> Pinterest's Conversions API is the server-side counterpart to the Pinterest Pixel. Upstack sends purchases, add-to-carts, and other conversion events directly to Pinterest from your account, bypassing browser ad blockers and giving Pinterest's algorithm stronger signal for ad optimization. Server-side delivery consistently achieves higher event match rates than browser-only tracking. Combined with the Pinterest browser pixel, the two work together — Pinterest's deduplication logic keeps only one conversion when the same event arrives from both sources. ## How It Works When a visitor takes an action on your store, Upstack: 1. Captures the event through the Upstack Pixel and matches it to a known visitor profile. 2. Enriches the event with hashed PII (email, phone) and click IDs (`epik`) when available. 3. Sends the enriched event to Pinterest's Conversions API using your Pinterest Pixel Tag ID and Conversions API access token. 4. Logs the response so you can monitor delivery and match rates from the Upstack dashboard. ## Set Up Pinterest Follow the onboarding guide for the full end-to-end setup, or jump to a specific step. <CardGroup> <Card title="Onboarding guide" icon="book" href="/destinations/catalog/pinterest/complete-how-to-guide-for-onboarding-pinterest-in-upstack-data"> Complete step-by-step walkthrough for connecting Pinterest to Upstack. </Card> <Card title="Configure destination" icon="sliders" href="/destinations/catalog/pinterest/how-to-configure-pinterest-destination-in-upstack-data"> Add and configure the Pinterest destination inside the Upstack dashboard. </Card> <Card title="Find Pixel Tag ID" icon="magnifying-glass" href="/destinations/catalog/pinterest/how-to-find-pinterest-pixel-tag-id"> Locate an existing Pinterest Pixel Tag ID in your Pinterest Ads account. </Card> <Card title="Create Pixel Tag ID" icon="plus" href="/destinations/catalog/pinterest/how-to-create-a-new-pinterest-pixel-tag-id"> Create a new Pinterest Pixel Tag if you don't already have one. </Card> <Card title="Find Advertiser ID" icon="id-card" href="/destinations/catalog/pinterest/how-to-find-pinterest-advertiser-id"> Locate the Pinterest Advertiser ID required to identify your ad account. </Card> <Card title="Generate API access token" icon="key" href="/destinations/catalog/pinterest/how-to-generate-pinterest-conversion-api-key-access-token"> Generate the Conversions API access token Upstack uses to send events. </Card> <Card title="Disable Shopify data sharing" icon="ban" href="/destinations/catalog/pinterest/how-to-disable-pinterest-data-sharing-in-shopify"> Turn off Shopify's native Pinterest data sharing to prevent duplicate events. </Card> </CardGroup> ## FAQ <AccordionGroup> <Accordion title="Do I still need the Pinterest browser pixel?"> You don't need the browser pixel for Upstack to send events — server-side delivery works on its own. However, running both gives Pinterest the strongest signal. As long as the Pinterest Pixel Tag ID matches between your browser pixel and the Upstack destination, Pinterest's deduplication logic prevents double-counting. </Accordion> <Accordion title="Why disable Shopify's native Pinterest data sharing?"> Shopify's built-in Pinterest integration also forwards events to Pinterest. If both Shopify and Upstack are sending the same events without coordination, Pinterest can count conversions twice. Disabling Shopify's native sharing lets Upstack handle delivery exclusively, with the browser pixel for real-time signal and the Conversions API for reliability. See [Disable Shopify data sharing](/destinations/catalog/pinterest/how-to-disable-pinterest-data-sharing-in-shopify). </Accordion> <Accordion title="What's the difference between the Pixel Tag ID and the Advertiser ID?"> The **Pixel Tag ID** identifies a specific tracking pixel inside your Pinterest account. The **Advertiser ID** identifies the ad account that owns the pixel. Upstack needs both: the Pixel Tag ID to attribute events to the correct pixel, and the Advertiser ID to send them on behalf of the right ad account. </Accordion> <Accordion title="How long does it take for events to appear in Pinterest?"> Once the destination is active, events typically appear in Pinterest's Events Manager within 5-10 minutes. The first events confirm the connection is working — match quality and conversion attribution build over the following 24-48 hours as Pinterest correlates events to ad clicks. </Accordion> </AccordionGroup> ## Related <CardGroup> <Card title="Conversion API Forwarding" icon="lightbulb" href="/concepts/conversion-api-forwarding"> How Upstack Signal forwards events to ad platforms via server-to-server APIs. </Card> <Card title="Identity Resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack ID matches anonymous visitors to known customers for higher match rates. </Card> <Card title="Destinations Overview" icon="arrow-right-from-bracket" href="/destinations/overview"> Browse all available destinations and how Upstack delivers data to each. </Card> <Card title="Events Not Reaching Destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # Complete How-To Guide for Onboarding Pinterest in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/pinterest/complete-how-to-guide-for-onboarding-pinterest-in-upstack-data Onboard Pinterest in Upstack Data — generate the Pinterest Conversions API token, locate your Pixel and Advertiser IDs, configure the destination, and disable Shopify's duplicate Pinterest pixel. <Tip> **Quick Summary** * **Locate and copy** your **Pinterest Pixel Tag ID** and **Advertiser ID** * **Generate and copy** your **Pinterest Conversion API key** * **Create and configure** the Pinterest destination in your Upstack dashboard * **Disable Pinterest data sharing** in Shopify </Tip> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to your Pinterest Business account * A Shopify store admin account (only required for the data-sharing step) ## Onboarding Steps <Steps> <Step title="Find and copy your Pixel Tag ID"> <Note> What is a **Pinterest Pixel Tag ID?** A **Pinterest Pixel Tag ID** is a unique identifier assigned to your Pinterest Pixel, which tracks user actions (like page views, add-to-cart, or purchases) on your website. It's what you use to connect your site activity with Pinterest Ads for measurement and optimization. The ID is a 13-digit number (for example, `2613000000000`). </Note> Help guide to complete this step: [How to Find Pinterest Pixel Tag ID →](/destinations/catalog/pinterest/how-to-find-pinterest-pixel-tag-id) </Step> <Step title="Find and copy your Advertiser ID"> <Note> What is a **Pinterest Advertiser ID?** A **Pinterest Advertiser ID** is a unique numeric identifier assigned to your Pinterest Business advertising account. It is typically a 12-digit number (for example, `549000000000`). </Note> Help guide to complete this step: [How to Find Pinterest Advertiser ID →](/destinations/catalog/pinterest/how-to-find-pinterest-advertiser-id) </Step> <Step title="Generate your Conversion API key"> <Note> What is a **Pinterest Conversion API key** (access token)? A **Pinterest Conversion API key** (access token) is a secure credential that lets your server send conversion events, like purchases or sign-ups, directly to Pinterest. It improves tracking accuracy, attribution, and data security compared to the standard Pixel. The token starts with `pina_` and is roughly 90+ characters long. </Note> Help guide to complete this step: [How to Generate Pinterest Conversion API Key →](/destinations/catalog/pinterest/how-to-generate-pinterest-conversion-api-key-access-token) </Step> <Step title="Create and configure the Pinterest destination in your Upstack dashboard"> <Note> Integrating Pinterest with Upstack Data centralizes tracking, improves attribution, and enables better campaign optimization and reporting. </Note> Help guide to complete this step: [How to Configure Pinterest Destination in Upstack Data →](/destinations/catalog/pinterest/how-to-configure-pinterest-destination-in-upstack-data) </Step> <Step title="Disable Pinterest data sharing in Shopify"> <Warning> Turning off Pinterest data sharing helps avoid duplicate or conflicting conversions, keeping Upstack Data as your one reliable source of accurate performance data. </Warning> Help guide to complete this step: [How to Disable Pinterest Data Sharing →](/destinations/catalog/pinterest/how-to-disable-pinterest-data-sharing-in-shopify) </Step> <Step title="Verify the Pinterest destination is healthy"> In your [Upstack dashboard](https://app.upstackdata.com/pixel/event-destinations), open **Events Destination** and confirm the **Pinterest** destination shows a **Healthy** status. Then, in [Pinterest Business](https://business.pinterest.com), open **Conversions → Pinterest tag** and confirm events are arriving from your Conversions API integration. </Step> </Steps> <Note> **Need help?** If you encounter any issues during setup or don't see expected improvements after 10 days, contact our support team and we'll help diagnose the problem. </Note> # How to Configure Pinterest Destination in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/pinterest/how-to-configure-pinterest-destination-in-upstack-data Configure the Pinterest destination in Upstack Data with your Pinterest Conversions API key, Pixel ID, and Advertiser ID to forward server-side conversions to Pinterest CAPI. <Tip> **Quick Summary** * In the Upstack dashboard, open **Events Destination** and click **+ New Destination** * Select **Pinterest** from the destination options * Enter your **Pixel Tag ID**, **Advertiser ID**, and **Conversion API key** * Paste your **Conversion API key** * Click **Create Configuration** and verify the destination shows as **Healthy** </Tip> ## Tracking Method <Note> **Tracking Method** is set to **Browser + Server** by default, and this is the recommended way to run Pinterest: Upstack loads the Pinterest tag on your storefront and also sends events server-side, and the two copies are deduplicated. If you don't want to load the Pinterest tag in the browser, switch the Tracking Method to **Server**. See [Tracking Method](/concepts/tracking-method). </Note> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to your Pinterest Business account * Your Pinterest **Pixel Tag ID** ([how to find it](/destinations/catalog/pinterest/how-to-find-pinterest-pixel-tag-id)) * Your Pinterest **Advertiser ID** ([how to find it](/destinations/catalog/pinterest/how-to-find-pinterest-advertiser-id)) * Your Pinterest **Conversion API key** ([how to generate it](/destinations/catalog/pinterest/how-to-generate-pinterest-conversion-api-key-access-token)) ## Configuration Steps <Steps> <Step title="Sign in to your Upstack dashboard"> Sign in to [Upstack Data](https://app.upstackdata.com) and open the [Events Destination](https://app.upstackdata.com/pixel/event-destinations) page. </Step> <Step title="Add a new Pinterest destination"> In the **Events Destination** page, click **+ New Destination** in the top-right of the page. <img alt="Add New Destination" /> In the **Select a Destination** popup, click **Pinterest**, then click **Next**. <img alt="Select Pinterest from destination options in popup" /> </Step> <Step title="Enter your Pinterest credentials"> Fill out the form with the following: 1. **Pinterest Pixel Tag ID** — a 13-digit number, for example `2613000000000` 2. **Advertiser ID** — a 12-digit numeric ID, for example `549000000000` 3. **Conversion API key** — the access token starting with `pina_` <img alt="Pinterest destination form with Pixel Tag ID, Advertiser ID, and CAPI key fields" /> <Note> ***Need help finding these?*** **[How to Find Pinterest Pixel Tag ID →](/destinations/catalog/pinterest/how-to-find-pinterest-pixel-tag-id)** **[How to Generate Pinterest Conversion API Key →](/destinations/catalog/pinterest/how-to-generate-pinterest-conversion-api-key-access-token)** **[How to Find Pinterest Advertiser ID →](/destinations/catalog/pinterest/how-to-find-pinterest-advertiser-id)** </Note> </Step> <Step title="Create the configuration"> Click the **Create Configuration** button at the bottom of the form. <img alt="Create Configuration button to save Pinterest destination" /> <Note> **Success! 🎉** You should see a confirmation message and the Pinterest destination will appear as **Healthy** in your destinations list. </Note> </Step> <Step title="Verify the destination is sending events"> Back in the [Events Destination](https://app.upstackdata.com/pixel/event-destinations) page, confirm that the new **Pinterest** destination shows a **Healthy** status. Then, in [Pinterest Business](https://business.pinterest.com), open **Conversions → Pinterest tag** and confirm that events are being received from your Conversions API integration. New events typically appear within a few minutes after a test purchase or page view. </Step> </Steps> # How to Create a New Pinterest Pixel (Tag) ID Source: https://docs.upstackdata.com/destinations/catalog/pinterest/how-to-create-a-new-pinterest-pixel-tag-id Create a new Pinterest Pixel (Tag) ID in Pinterest Ads Manager — required to configure the Upstack Data Pinterest destination and forward conversions via Pinterest CAPI. <Tip> **Quick Summary** * Sign in to [Pinterest Business](https://business.pinterest.com) and open **Manage business → Conversions** * Under **Pinterest tag**, click **Tag manager** * Start the tag setup and follow the instructions for your chosen installation method * **Copy** your new **Pinterest Pixel Tag ID** * Install the tag on your website and verify it is firing </Tip> ## What is a Pinterest Pixel Tag ID? <Note> A **Pinterest Pixel Tag ID** is a unique identifier assigned to your Pinterest Pixel, which tracks user actions (like page views, add-to-cart, or purchases) on your website. It's what you use to connect your site activity with Pinterest Ads for measurement and optimization. The ID is a 13-digit number (for example, `2613000000000`). </Note> ## Prerequisites Before you start, you need: * Admin access to your Pinterest Business account * The ability to install code on your website (or admin access to a supported integration partner such as Shopify or WooCommerce) ## Steps to Create a New Pixel Tag ID <Steps> <Step title="Sign in to Pinterest Business"> Sign in to [Pinterest Business](https://business.pinterest.com). </Step> <Step title="Open Tag manager"> In the top-left of the page, click the **Menu icon** (three horizontal lines). Under **Manage business**, select **Conversions**. <img alt="" /> Under **Pinterest tag**, click **Tag manager**. <img alt="" /> </Step> <Step title="Start the tag setup"> In the **Pinterest Tag** section, click **Get Started** if this is your first tag, or click **Add code** to create an additional tag. <img alt="" /> You will be prompted to choose your installation method: * **Integration partner** (for example, Shopify, WooCommerce) * **Email instructions** to a developer * **Manual setup** (for direct code installation) Follow the setup instructions for your chosen method. <img alt="" /> <Note> **Choose Manual Setup (if applicable)** * Click **Skip** in the bottom-right of the page to proceed with manual setup. * Pinterest will generate a **base tag code snippet** for you. </Note> </Step> <Step title="Copy the Pinterest Pixel Tag ID"> Once created, your Pinterest tag will appear in **Tag manager** with a 13-digit Pixel Tag ID (for example, `2613000000000`). Copy the Pixel Tag ID — this is what you'll enter when configuring the Pinterest destination in your Upstack dashboard. </Step> <Step title="Install the tag on your website"> Paste the base tag code into the `<head>` section of every page on your website. Add **event codes** to track specific actions (for example, `AddToCart`, `Signup`, `Checkout`). </Step> <Step title="Verify the installation"> Use the [Pinterest Tag Helper Chrome Extension](https://chrome.google.com/webstore/detail/pinterest-tag-helper) to confirm your tag is firing correctly on your website. You can also confirm event delivery in **Pinterest Business → Conversions → Pinterest tag**, where new events typically appear within a few minutes. </Step> </Steps> # How to Disable Pinterest Data Sharing in Shopify Source: https://docs.upstackdata.com/destinations/catalog/pinterest/how-to-disable-pinterest-data-sharing-in-shopify Disable Shopify's Pinterest sales channel data sharing to stop duplicate Pinterest pixel events and let Upstack Data deliver clean server-side conversions to Pinterest CAPI. <Tip> **Quick Summary** * In Shopify admin, open **Settings → Apps and sales channels** * Find **Pinterest** and click the **three-dot (⋮) menu** * Select **Uninstall** and confirm in the popup </Tip> If you're using **Upstack Data** for Pinterest event tracking, you need to uninstall the **Pinterest Sales Channel** from your Shopify store to remove Shopify's native pixel tracking. <Warning> Disabling Pinterest data sharing is crucial to prevent duplicate events, which can distort reporting and attribution. It ensures Pinterest only receives clean, accurate data through Upstack Data for reliable insights and better ad optimization. </Warning> ## Prerequisites Before you start, you need: * Admin access to your Shopify store ([Shopify admin](https://admin.shopify.com)) * The Pinterest Sales Channel currently installed in Shopify * A configured Pinterest destination in your [Upstack dashboard](https://app.upstackdata.com/pixel/event-destinations) ([setup guide](/destinations/catalog/pinterest/how-to-configure-pinterest-destination-in-upstack-data)) ## Why You Should Disable Pinterest Data Sharing Shopify's Pinterest Sales Channel automatically enables both catalog and pixel tracking, without allowing you to manage them separately. It can cause duplicate events because it sends conversion data from both your browser and server. When combined with Upstack Data's server-side tracking, this may inflate conversions, ROAS, and event counts. Disabling Pinterest's own data-sharing features allows Upstack Data to: * Ensure consistent and deduplicated event tracking * Improve attribution accuracy across platforms * Maintain reliable performance reporting ## Steps to Disable Pinterest Data Sharing in Shopify <Steps> <Step title="Sign in to Shopify admin"> Sign in to [Shopify admin](https://admin.shopify.com) for the store where Pinterest is installed. </Step> <Step title="Open Apps and sales channels"> In the left-hand menu, click **Settings**, then select **Apps and sales channels**. <img alt="Shopify admin Settings menu with Apps and sales channels selected" /> </Step> <Step title="Uninstall the Pinterest sales channel"> Locate **Pinterest** in the list, click the **three-dot (⋮) menu**, then select **Uninstall**. <img alt="Pinterest sales channel with three-dot menu showing Uninstall option" /> A confirmation window will appear. Review the warning, then click **Uninstall** in the bottom-right of the dialog. <img alt="Shopify uninstall confirmation dialog for Pinterest sales channel" /> </Step> <Step title="Verify Pinterest is no longer connected"> Refresh the **Apps and sales channels** page and confirm **Pinterest** no longer appears in the list of installed channels. Then, in your [Upstack dashboard](https://app.upstackdata.com/pixel/event-destinations), confirm the **Pinterest** destination is still **Healthy** and continuing to send events through Upstack Data. </Step> </Steps> <Note> Uninstalling the Pinterest app in Shopify is important because it helps **prevent duplicate tracking and data conflicts** between Pinterest's native integration and Upstack Data. </Note> <Note> **Need Help?** If you encounter any issues during setup, contact our support team and we'll help diagnose the problem. </Note> # How to Find Pinterest Advertiser ID Source: https://docs.upstackdata.com/destinations/catalog/pinterest/how-to-find-pinterest-advertiser-id Find your Pinterest Advertiser ID in Pinterest Business Manager — required (alongside the Pixel ID and CAPI token) to configure the Upstack Data Pinterest destination. <Tip> **Quick Summary** * Sign in to [Pinterest Business](https://business.pinterest.com) * In the top-right of the page, click your **Business account name** and select your business * In the left-hand menu, open **Ad Accounts** * Select the ad account you want to use, then **copy** the **Advertiser ID** </Tip> ## What is a Pinterest Advertiser ID? <Note> A **Pinterest Advertiser ID** is a unique numeric identifier assigned to your Pinterest Business advertising account. It is typically a 12-digit number (for example, `549000000000`). </Note> ## Prerequisites Before you start, you need: * Admin access to your Pinterest Business account * At least one Pinterest ad account associated with your business ## Steps to Find Your Advertiser ID <Steps> <Step title="Sign in to Pinterest Business"> Sign in to [Pinterest Business](https://business.pinterest.com). </Step> <Step title="Open Ad Accounts"> In the top-right of the page, click your **Business account name**. <img alt="" /> From the dropdown, select your business name. <img alt="" /> In the left-hand menu, click **Ad Accounts**. <img alt="" /> </Step> <Step title="Copy the Advertiser ID"> Select the ad account you want to connect to Upstack Data. The **Advertiser ID** is displayed next to the ad account name as a 12-digit numeric value (for example, `549000000000`). Copy the **Advertiser ID** — you'll paste it into the Pinterest destination form in your Upstack dashboard. <img alt="" /> </Step> <Step title="Verify the Advertiser ID"> Confirm the value you copied is a 12-digit number with no extra characters or spaces. You can paste it into the **Advertiser ID** field when [configuring the Pinterest destination](/destinations/catalog/pinterest/how-to-configure-pinterest-destination-in-upstack-data) in your Upstack dashboard. </Step> </Steps> <Note> ***Need help finding these?*** **[How to Find Pinterest Pixel Tag ID →](/destinations/catalog/pinterest/how-to-find-pinterest-pixel-tag-id)** **[How to Generate Pinterest Conversion API Key →](/destinations/catalog/pinterest/how-to-generate-pinterest-conversion-api-key-access-token)** </Note> # How to Find Pinterest Pixel (Tag) ID Source: https://docs.upstackdata.com/destinations/catalog/pinterest/how-to-find-pinterest-pixel-tag-id Find your Pinterest Pixel (Tag) ID in Pinterest Ads Manager — required to configure the Upstack Data Pinterest destination for server-side conversion forwarding. <Tip> **Quick Summary** * Sign in to [Pinterest Business](https://business.pinterest.com) * Open **Manage business → Conversions**, then under **Pinterest tag** click **Tag manager** * **Locate and copy** your Pinterest Pixel Tag ID (a 13-digit number) </Tip> ## What is a Pinterest Pixel Tag ID? <Note> A **Pinterest Pixel Tag ID** is a unique identifier assigned to your Pinterest Pixel, which tracks user actions (like page views, add-to-cart, or purchases) on your website. It's what you use to connect your site activity with Pinterest Ads for measurement and optimization. The ID is a 13-digit number (for example, `2613000000000`). </Note> ## Prerequisites Before you start, you need: * Admin access to your Pinterest Business account * An existing Pinterest tag (if you don't have one yet, follow [How to Create a New Pinterest Pixel Tag ID](/destinations/catalog/pinterest/how-to-create-a-new-pinterest-pixel-tag-id) first) ## Steps to Find Your Pixel Tag ID <Steps> <Step title="Sign in to Pinterest Business"> Sign in to [Pinterest Business](https://business.pinterest.com). </Step> <Step title="Open Tag manager"> In the top-left of the page, click the **Menu icon** (three horizontal lines). Under **Manage business**, select **Conversions**. <img alt="" /> Under **Pinterest tag**, click **Tag manager**. <img alt="" /> </Step> <Step title="Copy your Pixel Tag ID"> If you already have a tag, you'll see it listed under **Pinterest Tag** with a 13-digit ID (for example, `2613000000000`). **Copy** the Pinterest tag — this is your **Pinterest Pixel Tag ID** for the Upstack Data integration. <img alt="" /> <Note> **No tag yet?** If you don't see a Pinterest tag listed, you need to create one first. [How to Create a New Pinterest Pixel Tag ID →](/destinations/catalog/pinterest/how-to-create-a-new-pinterest-pixel-tag-id) </Note> </Step> <Step title="Verify the Pixel Tag ID"> Confirm the value you copied is a 13-digit number with no extra characters or spaces. You can paste it into the **Pixel Tag ID** field when [configuring the Pinterest destination](/destinations/catalog/pinterest/how-to-configure-pinterest-destination-in-upstack-data) in your Upstack dashboard. </Step> </Steps> <Note> ***Need help finding these?*** **[How to Generate Pinterest Conversion API Key →](/destinations/catalog/pinterest/how-to-generate-pinterest-conversion-api-key-access-token)** **[How to Find Pinterest Advertiser ID →](/destinations/catalog/pinterest/how-to-find-pinterest-advertiser-id)** </Note> # How to Generate Pinterest Conversion API Key (Access Token) Source: https://docs.upstackdata.com/destinations/catalog/pinterest/how-to-generate-pinterest-conversion-api-key-access-token Generate a Pinterest Conversions API access token in Pinterest Ads Manager — required to authenticate the Upstack Data Pinterest destination and forward server-side conversions. <Tip> **Quick Summary** * Sign in to [Pinterest Business](https://business.pinterest.com) * Open **Manage business → Conversions** * Under **Conversion API**, click **Set up API** * Click **Generate new token** and copy the token (it starts with `pina_`) * Store the token securely — you will paste it into the Pinterest destination form in your Upstack dashboard </Tip> ## What is a Pinterest Conversion API key (access token)? <Note> A **Pinterest Conversion API key** (access token) is a secure credential that lets your server send conversion events, like purchases or sign-ups, directly to Pinterest. It improves tracking accuracy, attribution, and data security compared to the standard Pixel. The token starts with `pina_` and is roughly 90+ characters long (for example, `pina_AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA`). </Note> ## Prerequisites Before you start, you need: * Admin access to your Pinterest Business account * At least one Pinterest ad account associated with your business * A secure place to store the generated token (Pinterest only displays it once) ## Steps to Generate the Conversion API Key <Steps> <Step title="Sign in to Pinterest Business"> Sign in to [Pinterest Business](https://business.pinterest.com). </Step> <Step title="Open the Conversions API setup"> In the top-left of the page, click the **Menu icon** (three horizontal lines). Under **Manage business**, select **Conversions**. <img alt="" /> Under **Conversion API**, click **Set up API**. <img alt="" /> </Step> <Step title="Generate the conversion access token"> Scroll to the **Generate conversion access token** section, then click **Generate new token**. <img alt="" /> </Step> <Step title="Copy and save your Conversion API key"> The generated token is your **Pinterest Conversion API key**. It starts with `pina_`. **Copy** the generated token and **store** it securely. You will paste this token into the Pinterest destination form in your Upstack dashboard. <Warning> Pinterest does not store personal tokens — copy it now and save it to a secure location such as a password manager. The same token can be reused across multiple ad accounts under your user ID. </Warning> <img alt="" /> `The generated token starts with pina_` <img alt="" /> </Step> <Step title="Verify the token format"> Confirm the value you copied starts with `pina_` and contains no extra spaces. You can paste it into the **Conversion API key** field when [configuring the Pinterest destination](/destinations/catalog/pinterest/how-to-configure-pinterest-destination-in-upstack-data) in your Upstack dashboard. </Step> </Steps> <Note> ***Need help finding these?*** **[How to Find Pinterest Pixel Tag ID →](/destinations/catalog/pinterest/how-to-find-pinterest-pixel-tag-id)** **[How to Find Pinterest Advertiser ID →](/destinations/catalog/pinterest/how-to-find-pinterest-advertiser-id)** </Note> # PostHog Source: https://docs.upstackdata.com/destinations/catalog/posthog Forward identity-resolved customer events to PostHog for product analytics, session recordings, and feature flags. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> PostHog is an open-source product analytics platform. Upstack forwards enriched e-commerce events to PostHog so you can analyze customer behavior, track conversion funnels, and replay user sessions — all powered by Upstack's identity resolution. ## How it works When a visitor takes an action on your store, Upstack: 1. Captures the event through the Upstack Pixel and matches it to a known visitor profile using Upstack's identity resolution. 2. Enriches the event with identity data (distinct ID, email, IP, user agent, device info). 3. Sends the event to PostHog using your Project API Key via the PostHog Capture API. 4. PostHog records the event against the visitor's distinct ID for analytics, funnels, and session replays. The result: unified product analytics where anonymous visitors are resolved to their identities, giving you cleaner funnels and more complete user journeys. ## Tracking Method <Note> PostHog always runs in **Browser + Server** mode: Upstack loads the PostHog snippet on your storefront and also sends events server-side. See [Tracking Method](/concepts/tracking-method). </Note> ## Set up PostHog <Steps> <Step title="Get your PostHog Project API Key"> In PostHog, go to **Project Settings → Project API Key**. The key starts with `phc_` followed by alphanumeric characters. </Step> <Step title="Note your data region"> PostHog offers two data regions: * **US** — Data hosted in the United States (`us.posthog.com`) * **EU** — Data hosted in the European Union (`eu.posthog.com`) Select the region that matches where your PostHog project is hosted. </Step> <Step title="Add the destination in Upstack"> In the Upstack dashboard, go to **Destinations → Add Destination → PostHog**. Enter: * **Project API Key** — Your PostHog project API key (starts with `phc_`) * **Data Region** — Select US or EU based on your PostHog project location </Step> <Step title="Optional: Configure additional settings"> * **Enable Auto Capture** — Automatically capture pageviews and clicks * **Enable Session Recording** — Enable session recording for user replays (requires PostHog session recording to be configured) </Step> <Step title="Save and verify"> Save the destination. Visit your store, trigger an event (view a product, add to cart), and verify the event appears in PostHog under **Activity → Live Events**. </Step> </Steps> ## Credentials | Field | Required | Description | | ------------------------ | -------- | -------------------------------------------------------------------------------------------------- | | Project API Key | Yes | Your PostHog project API key. Found in **Project Settings → Project API Key**. Starts with `phc_`. | | Data Region | Yes | The region where your PostHog data is hosted: `US` or `EU`. | | Enable Auto Capture | No | Automatically capture pageviews and clicks. | | Enable Session Recording | No | Enable session recording for user replays. | ## Event mapping Upstack automatically maps e-commerce events to PostHog events with enriched properties. | Upstack event | PostHog event | Description | | ------------------ | ------------------- | -------------------------------- | | `PageView` | `$pageview` | Page view on any storefront page | | `ViewContent` | `view_item` | Product detail page view | | `ViewCategory` | `view_category` | Category or collection page view | | `ViewCart` | `$pageview` | Cart page view | | `AddToCart` | `add_to_cart` | Product added to cart | | `InitiateCheckout` | `initiate_checkout` | Checkout started | | `Purchase` | `purchase` | Order completed | | `Search` | `search` | Search performed on storefront | | `SignUp` | `sign_up` | Account created | | `Lead` | `lead` | Lead form submitted | ## Event properties Each event sent to PostHog includes enriched properties from Upstack's identity resolution: | Property | PostHog field | Description | | ---------------- | -------------- | ---------------------------------------------- | | Distinct ID | `distinct_id` | Upstack identity ID (resolved across sessions) | | Current URL | `$current_url` | Page URL where the event occurred | | Referrer | `$referrer` | Referring URL | | IP Address | `$ip` | Visitor IP address | | User Agent | `$user_agent` | Browser user agent string | | Browser | `$browser` | Browser name | | Device Type | `$device_type` | Device type (desktop, mobile, tablet) | | Operating System | `$os` | Operating system name | | Email | `email` | Customer email (when identified) | ### E-commerce properties For purchase and cart events, additional e-commerce properties are included: | Property | Description | | -------------- | --------------------------------------------------------------------------------------------------------------------------------- | | `value` | Total value of the event | | `currency` | Currency code (e.g., USD) | | `order_id` | Order ID (for purchases) | | `search_query` | Search query (for search events) | | `items` | Array of product items with `product_id`, `product_name`, `product_brand`, `product_category`, `price`, `quantity`, and `variant` | ## FAQ <AccordionGroup> <Accordion title="What is the difference between Upstack and PostHog's native Shopify integration?"> PostHog's native integration only sees visitors that Shopify can identify. Upstack's identity resolution matches anonymous sessions to known customer profiles using cookies, click IDs, and cross-session behavioral data. This means your PostHog funnels and cohorts include visitors that would otherwise be anonymous. </Accordion> <Accordion title="How does Upstack identify users in PostHog?"> Upstack uses its identity resolution engine to assign a consistent `distinct_id` to each visitor. This ID persists across sessions, devices, and browsers when Upstack can resolve the visitor's identity. Anonymous visitors receive a temporary ID that Upstack attempts to merge when the visitor is later identified. </Accordion> <Accordion title="Will I see duplicate events if I also have PostHog installed via another method?"> Possibly. If you have PostHog's JavaScript snippet or another integration sending the same events, you may see duplicates. Consider disabling overlapping event types in either Upstack or your other PostHog integration to avoid duplication. </Accordion> <Accordion title="How quickly do events appear in PostHog?"> Events typically appear in PostHog within 1-2 minutes of occurring on your storefront. Check **Activity → Live Events** in PostHog to verify events are arriving. </Accordion> <Accordion title="Can I use PostHog session recordings with Upstack?"> PostHog session recordings require PostHog's JavaScript snippet to be installed on your storefront. Upstack sends server-side events to PostHog, which can be correlated with session recordings if you have both installed. Enable "Session Recording" in the Upstack destination settings to include session replay metadata. </Accordion> </AccordionGroup> ## Troubleshooting <AccordionGroup> <Accordion title="Events not appearing in PostHog"> If events are showing in the Upstack Live Event Stream but not arriving in PostHog: **Steps to fix:** 1. Confirm the PostHog destination shows **Active** (green) in the Upstack dashboard 2. Verify your Project API Key is correct and starts with `phc_` 3. Check that you selected the correct data region (US or EU) matching your PostHog project 4. In PostHog, go to **Activity → Live Events** and look for events from Upstack 5. If the destination status is red, disconnect and reconnect with a fresh API key </Accordion> <Accordion title="Events showing with wrong distinct_id"> If events appear in PostHog but users aren't being properly identified: **Steps to fix:** 1. Verify Upstack's identity resolution is working by checking the Live Event Stream for resolved identities 2. Check that your PostHog project's person identification settings match how Upstack sends distinct IDs 3. Allow 24-48 hours for Upstack to build identity profiles for new visitors </Accordion> </AccordionGroup> <Note> For additional troubleshooting beyond PostHog-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/destination-shows-disconnected). </Note> ## Related <CardGroup> <Card title="Identity Resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack ID connects anonymous sessions to known customers. </Card> <Card title="Destinations Overview" icon="arrow-right-from-bracket" href="/destinations/catalog/overview"> How Upstack Signal and Upstack Flows power different types of destinations. </Card> <Card title="Custom Events" icon="code" href="/guides/custom-events/how-to-create-custom-event-triggers"> Send custom events to PostHog and other destinations. </Card> <Card title="Events Not Reaching Destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # Reddit Conversions API Source: https://docs.upstackdata.com/destinations/catalog/reddit Forward identity-resolved conversion events to the Reddit Conversions API to recover the 30-50% of conversions lost to ad blockers and improve Reddit Ads Event Match Quality and ROAS. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> ## What it does Reddit's Conversions API (CAPI) is the server-side counterpart to the Reddit Pixel. The browser pixel loses 30-50% of conversion events to ad blockers, iOS privacy restrictions, and cross-device journeys. Upstack Signal forwards every storefront event — page views, product views, add-to-carts, and purchases — to Reddit's Conversions API as a server-side event with strong match keys. For DTC brands running Reddit Ads, CAPI is essential. Reddit's algorithm only optimizes on what it sees. When half the conversions never make it back, the algorithm starves and your real ROAS hides behind degraded data. Server-side delivery via Upstack restores the full conversion picture so Reddit can optimize against accurate signal. The practical result is higher Event Match Quality (EMQ), more accurate ROAS reporting inside Reddit Ads Manager, and stronger optimization signal for campaigns that depend on conversion events. ## How it works Upstack Signal runs as a dual-tracking layer. The Upstack Pixel captures events in the browser and forwards each one to Upstack's edge infrastructure, where it is hashed, enriched with identity and attribution data, and then sent to Reddit's Conversions API as a server-side event with a shared `conversion_id`. Reddit deduplicates against any matching browser Pixel event using that ID, so you do not double-count. Every event carries the strongest available match keys — hashed `email`, `phone_number`, `external_id`, plus `rdt_cid` (Reddit click ID), `user_agent`, and `ip_address` — so Reddit can attribute the conversion to the right user and ad interaction. ## Setup guides <CardGroup> <Card title="Onboarding guide" icon="route" href="/destinations/catalog/reddit/complete-how-to-guide-for-onboarding-reddit-in-upstack-data"> End-to-end walkthrough for connecting Reddit Ads to Upstack Data. </Card> <Card title="Configure pixel destination" icon="sliders" href="/destinations/catalog/reddit/how-to-configure-reddit-destination-in-upstack-data"> Configure the Reddit destination inside Upstack Data. </Card> <Card title="Find Pixel ID" icon="magnifying-glass" href="/destinations/catalog/reddit/how-to-find-reddit-pixel-id"> Locate your Reddit Pixel ID in Reddit Ads Manager Events Manager. </Card> <Card title="Generate CAPI token" icon="key" href="/destinations/catalog/reddit/how-to-generate-reddit-conversion-api-token"> Generate a Conversions API access token in Reddit Ads Manager. </Card> <Card title="Update CAPI token" icon="rotate" href="/destinations/catalog/reddit/how-to-update-reddit-conversion-api-token"> Rotate or replace your existing Reddit CAPI access token. </Card> <Card title="Remove duplicate Reddit pixels" icon="ban" href="/destinations/catalog/reddit/how-to-disable-existing-reddit-pixel-in-shopify"> Remove existing Reddit pixel installations from Shopify to prevent duplicate events. </Card> </CardGroup> ## Event mapping Upstack maps storefront events to Reddit standard events automatically: | Upstack event | Reddit standard event | Key match data | | ------------------ | ------------------------- | ------------------------------------------------ | | `PageView` | `PageVisit` | URL, referrer, user agent | | `ViewContent` | `ViewContent` | `products`, `value`, `currency` | | `AddToCart` | `AddToCart` | `products`, `value`, `currency` | | `InitiateCheckout` | `Purchase` (intermediate) | `value`, `currency`, `itemCount` | | `Purchase` | `Purchase` | `value`, `currency`, `transactionId`, `products` | PII is hashed with SHA-256 before it leaves Upstack. Upstack includes every available match key on every event — `em` (hashed email), `ph` (hashed phone), `external_id`, `rdt_cid`, `user_agent`, and `ip_address` — to maximize EMQ. ## FAQ <AccordionGroup> <Accordion title="Why does Reddit need the Conversions API?"> Reddit's browser pixel loses 30-50% of conversion events to ad blockers, iOS privacy restrictions (ITP), and cross-device buyer journeys (e.g., browse on mobile, purchase on desktop). The Conversions API runs server-to-server, bypassing browser limitations entirely. Reddit officially recommends running both Pixel and CAPI together, with CAPI providing the reliable backbone. </Accordion> <Accordion title="What is Reddit Event Match Quality (EMQ)?"> Reddit's EMQ score (visible in Reddit Ads Manager) measures how reliably Reddit can match a conversion event back to a Reddit user. Higher EMQ means better optimization, lower CPA, and higher ROAS. Server-side delivery via CAPI typically lifts EMQ scores significantly because events carry hashed PII and click IDs that browser-only events lose. </Accordion> <Accordion title="Will my events be counted twice if I run both the Pixel and CAPI?"> No. Upstack sends a shared `conversion_id` on every server-side event, and Reddit deduplicates against the matching browser Pixel event with the same ID. As long as the Pixel ID in Upstack matches the Pixel ID firing in your storefront, deduplication is automatic. </Accordion> <Accordion title="Do I need to remove my existing Reddit pixel from Shopify?"> If you already have a Reddit pixel installed via Shopify Customer Events, theme.liquid, or a third-party app, that pixel will keep firing browser-side. As long as the Pixel ID matches the one configured in Upstack, deduplication via `conversion_id` prevents double-counting. However, if you have **multiple** Reddit pixels installed (a common cause of inflated metrics), follow the [remove duplicate Reddit pixels guide](/destinations/catalog/reddit/how-to-disable-existing-reddit-pixel-in-shopify) to consolidate to a single pixel before activating Upstack. </Accordion> <Accordion title="How do I verify CAPI events are arriving in Reddit?"> Open Reddit Ads Manager → **Events Manager** → select your pixel. The **Overview** tab shows recent events with a **Server** badge for CAPI events and a **Browser** badge for pixel events. The **EMQ** column shows match quality scores. Upstack also surfaces delivery status and EMQ inside the destination settings in your dashboard. </Accordion> <Accordion title="What are the typical results from adding Reddit CAPI?"> Brands running Reddit Ads with Upstack's CAPI integration typically see EMQ scores climb within 7-10 days and a 20-40% increase in tracked conversions vs. browser-only pixel. This translates to more accurate ROAS reporting (often revealing campaigns that looked unprofitable were actually performing well) and stronger Reddit Ads campaign optimization. </Accordion> </AccordionGroup> ## Related <CardGroup> <Card title="Conversion API forwarding" icon="lightbulb" href="/concepts/conversion-api-forwarding"> How Upstack Signal forwards events to ad platforms via server-to-server APIs. </Card> <Card title="Identity resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack matches anonymous visitors to known customers for higher match rates. </Card> <Card title="Meta Conversions API" icon="meta" href="/destinations/catalog/meta-capi"> Set up Meta CAPI as another server-side destination alongside Reddit. </Card> <Card title="Events not reaching destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # Complete How-To Guide for Onboarding Reddit Ads in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/reddit/complete-how-to-guide-for-onboarding-reddit-in-upstack-data Onboard Reddit Ads in Upstack Data — locate your Pixel ID, generate the Conversions API token, configure the destination, and remove duplicate Reddit pixels in Shopify. <Info> **New to Upstack?** Follow the [getting started guide](/quickstart/install-on-shopify) for a streamlined onboarding walkthrough. </Info> <Tip> * Configure the **Reddit destination** in Upstack Data with your **Pixel ID** and **Conversions API access token**. * Remove duplicate **Reddit pixel installations** in Shopify to prevent inflated metrics. * Verify events appear in **Reddit Ads Manager → Events Manager** with a **Server** badge. * Monitor **Event Match Quality (EMQ)** improvements over 7-10 days. </Tip> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to a **Reddit Ads** account * A configured **Reddit Pixel** in [Reddit Ads Manager Events Manager](https://ads.reddit.com/) * A **Conversions API access token** generated from that pixel — see [How to generate your Reddit CAPI token](/destinations/catalog/reddit/how-to-generate-reddit-conversion-api-token) * Shopify owner/staff access (for the duplicate-pixel cleanup step, if applicable) <Steps> <Step title="Configure the Reddit destination in Upstack Data"> In the Upstack dashboard, navigate to **Event Destinations** and add a **Reddit** destination using your **Pixel ID** (typically prefixed with `t2_`) and **Conversions API access token**. Help guide: [How to configure the Reddit destination in Upstack Data →](/destinations/catalog/reddit/how-to-configure-reddit-destination-in-upstack-data) </Step> <Step title="Remove duplicate Reddit pixel installations"> <Warning> Reddit does not have a native Shopify sales channel like Meta or TikTok, but many brands install the Reddit pixel manually via theme.liquid, Customer Events, or third-party apps. Multiple active pixels with the same Pixel ID cause inflated metrics that Reddit cannot deduplicate without a shared `conversion_id`. </Warning> Help guide: [How to remove duplicate Reddit pixel installations in Shopify →](/destinations/catalog/reddit/how-to-disable-existing-reddit-pixel-in-shopify) **Common installation locations to check:** * Shopify **Settings → Customer Events** for any custom Reddit pixel scripts * Theme files (`theme.liquid`, header snippets) for hardcoded `rdt('init')` calls * Third-party Reddit pixel apps in Shopify * Reddit pixel tags inside Google Tag Manager </Step> <Step title="Verify the full setup is healthy"> Confirm each piece of the setup is working: * In the Upstack dashboard, **Event Destinations** shows your Reddit destination as **Healthy** (green). * In [Reddit Ads Manager Events Manager](https://ads.reddit.com/), the pixel shows recent events with a **Server** badge for CAPI events. * The **Event Match Quality (EMQ)** column in Reddit's Events Manager shows a score for each event type — these will improve over the next 7-10 days. If anything is unhealthy, check the corresponding help guide above for troubleshooting steps. </Step> </Steps> ## What to expect after setup ### Event Match Quality timeline * **Event Match Quality (EMQ)** scores start to improve in 2-3 days and normalize over 7-10 days. * You can typically expect a 20-40% increase in tracked conversions vs. the browser pixel alone, since CAPI captures conversions lost to ad blockers and iOS restrictions. * The **Purchase** EMQ score sees the biggest improvement because checkout-time events carry the strongest match keys (hashed email, phone, address). ### Reporting differences * Your **Reddit Ads Manager ROAS** will likely **increase** after a few days as Reddit attributes more conversions to ads. Many brands discover their Reddit campaigns were performing 20-40% better than the browser-pixel data suggested. * Conversion volume may temporarily fluctuate during the first 48 hours as Reddit's deduplication logic adjusts to receiving both pixel and CAPI events. <Note> **Need help?** If you encounter any issues during setup or don't see expected EMQ improvements after 10 days, contact our [support team](/troubleshooting/support) with your **Reddit Pixel ID** and we'll help diagnose the problem. </Note> # How to Configure Reddit Destination in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/reddit/how-to-configure-reddit-destination-in-upstack-data Configure the Reddit Ads destination in Upstack Data with your Pixel ID and Conversions API access token to enable dual tracking via browser pixel and server-side CAPI. <Tip> * In the Upstack dashboard, go to **Event Destinations** and click **+ New Destination**. * Select **Reddit Ads**. * Enter your **Reddit Pixel ID** (typically prefixed with `t2_`). * Paste your **Conversions API access token**. * Click **Create Configuration** and verify the destination shows **Healthy**. </Tip> <Note> **What this setup enables** Setting up the Reddit destination in Upstack Data enables dual tracking via browser pixel and server-side Conversions API (CAPI), recovering the 30-50% of conversions lost to ad blockers, iOS restrictions, and cross-device journeys. </Note> ## Tracking Method <Note> **Tracking Method** is set to **Browser + Server** by default, and this is the recommended way to run Reddit: Upstack loads the Reddit Pixel on your storefront and also sends events server-side, and the two copies are deduplicated. If you don't want to load the Reddit Pixel in the browser, switch the Tracking Method to **Server**. See [Tracking Method](/concepts/tracking-method). </Note> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to a **Reddit Ads** account * A configured **Reddit Pixel** in [Reddit Ads Manager Events Manager](https://ads.reddit.com/) — see [How to find your Reddit Pixel ID](/destinations/catalog/reddit/how-to-find-reddit-pixel-id) * A **Conversions API access token** — see [How to generate your Reddit CAPI token](/destinations/catalog/reddit/how-to-generate-reddit-conversion-api-token) ## Configuration steps <Steps> <Step title="Sign in to Upstack Data"> Sign in to Upstack Data at [app.upstackdata.com](https://app.upstackdata.com/pixel/event-destinations). </Step> <Step title="Open the destination configuration"> In the Upstack dashboard, navigate to **Event Destinations**. Click **+ New Destination** in the top-right of the page. In the **Select a Destination** popup, click **Reddit Ads**, then click **Next**. </Step> <Step title="Enter your Pixel ID and CAPI token"> Fill in the form: 1. **Reddit Pixel ID** — the identifier for your Reddit pixel. Reddit Pixel IDs are typically prefixed with `t2_` (e.g., `t2_abc123def`). 2. **Conversions API access token** — a secure key generated from Reddit Ads Manager Events Manager. <Warning> The Conversions API token is a non-expiring secure key. Store it securely and never expose it client-side. If the token is compromised, generate a new one and follow the [update CAPI token guide](/destinations/catalog/reddit/how-to-update-reddit-conversion-api-token). </Warning> <Note> **Need help finding these?** * [How to find your Reddit Pixel ID](/destinations/catalog/reddit/how-to-find-reddit-pixel-id) * [How to generate your Reddit CAPI token](/destinations/catalog/reddit/how-to-generate-reddit-conversion-api-token) </Note> </Step> <Step title="Create the configuration"> Click the **Create Configuration** button. You should see a confirmation message and the Reddit destination will appear in your **Event Destinations** list. </Step> <Step title="Verify the destination is healthy"> In the Upstack dashboard, the Reddit destination card should display **Healthy** with a green status indicator within 5 minutes. If the status shows **Unhealthy**: * Confirm your **Pixel ID** is correct (typically prefixed with `t2_`, no leading/trailing spaces). * Confirm your **Conversions API token** was pasted in full (no truncation, no whitespace). * Confirm the token was generated for the same ad account as the Pixel ID. * See [How to update your Reddit CAPI token](/destinations/catalog/reddit/how-to-update-reddit-conversion-api-token) if your token may have been rotated. </Step> </Steps> # How to Remove Duplicate Reddit Pixel Installations in Shopify Source: https://docs.upstackdata.com/destinations/catalog/reddit/how-to-disable-existing-reddit-pixel-in-shopify Remove duplicate Reddit pixel installations from Shopify Customer Events, theme.liquid, and third-party apps to prevent inflated conversion metrics when activating Upstack Data. <Tip> * Reddit does **not** have a native Shopify sales channel like Meta or TikTok — Reddit pixels on Shopify are typically installed manually. * If multiple Reddit pixels with the same ID are firing, conversions get counted more than once. * Consolidate to a **single** browser pixel installation, then let Upstack handle server-side delivery via CAPI. * Reddit deduplicates the browser pixel and CAPI events automatically using the shared `conversion_id`. </Tip> <Note> **Why this matters** Unlike Meta or TikTok, Shopify does not have a native Reddit sales channel pixel. Brands typically install the Reddit pixel via Shopify Customer Events, theme.liquid edits, third-party apps, or Google Tag Manager. When **multiple** Reddit pixels with the same Pixel ID are firing on the same page, Reddit cannot deduplicate them without a shared `conversion_id`, which results in inflated conversion counts and degraded campaign optimization. Once you activate Upstack's Reddit destination, the Upstack Pixel handles browser-side capture and forwards a deduplicated server-side event to Reddit CAPI. Any **additional** Reddit pixel installations on the same store should be removed. </Note> ## Prerequisites Before you start, you need: * Shopify owner or staff access with **Customize Theme** and **Customer Events** permissions * A list of all your existing Reddit pixel installations (theme code, apps, GTM tags) * Your Reddit Pixel ID — see [How to find your Reddit Pixel ID](/destinations/catalog/reddit/how-to-find-reddit-pixel-id) ## Common locations to check Reddit pixels can be installed in any of these places. Check each one: | Location | How to access | | -------------------------- | ---------------------------------------------------------------------------------- | | Shopify Customer Events | **Settings → Customer Events** in Shopify admin | | Theme files | **Online Store → Themes → Edit Code** — look in `theme.liquid` and header snippets | | Third-party apps | **Apps** in Shopify admin — search for "Reddit" | | Google Tag Manager | GTM workspace → **Tags** — filter by "Reddit" | | Checkout extension scripts | Plus stores: **Settings → Checkout → Order status page additional scripts** | ## Steps to remove duplicate Reddit pixels <Steps> <Step title="Inventory all current Reddit pixel installations"> Before removing anything, document every place a Reddit pixel is firing: 1. **Customer Events**: Go to Shopify admin → **Settings → Customer Events** and check for any custom pixels referencing `rdt(` or `reddit`. 2. **Theme code**: Open **Online Store → Themes → Edit Code** and search the entire theme for `rdt(` or `redditstatic`. 3. **Apps**: Look for any Reddit-branded apps under **Apps** in the Shopify admin. 4. **GTM**: If you use Google Tag Manager, search for tags with names containing "Reddit" or scripts referencing the Reddit pixel. Make a list of every location and the Pixel ID each one references. </Step> <Step title="Identify the canonical Reddit pixel"> Decide which **single** Reddit pixel installation will remain. Recommended order of preference: 1. **Shopify Customer Events** — most reliable, fires on checkout pages, easiest to maintain. 2. **Theme.liquid** — works for older themes that don't support Customer Events. 3. **Third-party app** — only if the app provides functionality you need beyond pixel firing. All other installations will be removed in the next steps. </Step> <Step title="Remove duplicate Customer Event pixels"> In Shopify admin, go to **Settings → Customer Events**. For each Reddit-related custom pixel that is **not** your canonical installation: 1. Click the pixel to open its details. 2. Click **Disconnect** or **Delete** in the top-right. 3. Confirm the action. <Warning> Disconnecting a custom pixel stops it from firing immediately. There is no undo, so confirm you have a backup of the script if you may need it later. </Warning> </Step> <Step title="Remove Reddit pixel code from theme files"> Open **Online Store → Themes → Edit Code** and search the theme for `rdt(` and `redditstatic`. For any matches that are **not** your canonical installation: 1. Open the file containing the code. 2. Delete the Reddit pixel script block (typically wrapped in `<script>` tags). 3. Save the file. Common files to check: `theme.liquid`, `layout/theme.liquid`, `snippets/header.liquid`, `snippets/google-analytics.liquid`. </Step> <Step title="Uninstall duplicate Reddit pixel apps"> Go to **Apps** in the Shopify admin and locate any Reddit pixel apps that are not your canonical installation. Click **Delete** to uninstall the app. Confirm by reviewing app data deletion in the popup. </Step> <Step title="Remove duplicate GTM Reddit tags"> If you use Google Tag Manager, sign in to your workspace and navigate to **Tags**. Filter for "Reddit" or search for tags referencing `redditstatic.com` or `rdt(`. For each tag that duplicates your canonical pixel: 1. Click the tag to open it. 2. Click the trash icon (top-right) to delete it. 3. **Submit** and **Publish** a new GTM workspace version to deploy the change. </Step> <Step title="Verify only one Reddit pixel is firing"> Open your storefront in a new browser tab with the [Reddit Pixel Helper Chrome extension](https://chromewebstore.google.com/) installed (search "Reddit Pixel Helper" in the Chrome Web Store). Navigate through your store: home page, product page, add-to-cart, and checkout. The Pixel Helper should show **exactly one** pixel firing per event. If you see duplicates, return to the previous steps and remove the additional installation. </Step> <Step title="Activate Upstack's Reddit destination"> Once duplicates are removed, your single browser pixel and Upstack's CAPI integration will work together cleanly. Reddit will deduplicate using the shared `conversion_id`. Confirm the Upstack Reddit destination is **Healthy** in your dashboard. See [How to configure the Reddit destination](/destinations/catalog/reddit/how-to-configure-reddit-destination-in-upstack-data) if it isn't already set up. </Step> </Steps> <Note> **What if I want Upstack to be the only Reddit data source?** You can also remove **all** browser-side Reddit pixel installations and let Upstack handle 100% of Reddit tracking server-side. This works, but you'll lose real-time pixel signal in Reddit's Events Manager. The recommended setup is to keep one browser pixel and let Upstack add the CAPI layer on top. </Note> # How to Find your Reddit Pixel ID Source: https://docs.upstackdata.com/destinations/catalog/reddit/how-to-find-reddit-pixel-id Find your Reddit Pixel ID in Reddit Ads Manager Events Manager — required to configure the Upstack Data Reddit destination for server-side conversion forwarding. <Tip> * Sign in to [Reddit Ads Manager](https://ads.reddit.com/) and open the **Events Manager**. * Below **Events Overview**, locate the **Pixel ID** (typically prefixed with `t2_`). * Copy the Pixel ID and paste it into your Upstack Reddit destination configuration. </Tip> <Note> **What is a Reddit Pixel ID?** Your **Reddit Pixel ID** is a unique identifier Upstack Data uses to send conversion data to your Reddit Ads account. Reddit Pixel IDs are typically prefixed with `t2_` (e.g., `t2_abc123def`) and are sometimes referred to as your Account ID inside Reddit's developer documentation. </Note> ## Prerequisites Before you start, you need: * Access to a **Reddit Ads** account at [ads.reddit.com](https://ads.reddit.com/) or [business.reddit.com](https://business.reddit.com/) * A pixel already created in Reddit Ads Manager Events Manager (or follow the create-pixel steps below) ## Steps to find your Reddit Pixel ID <Steps> <Step title="Sign in to Reddit Ads Manager"> Sign in to Reddit Ads Manager at [ads.reddit.com](https://ads.reddit.com/) or [business.reddit.com](https://business.reddit.com/). </Step> <Step title="Open Events Manager"> Click the menu (top-left corner) and select **Ads** → **Events Manager**. Alternatively, click **Events Manager** directly in the left-hand navigation menu. </Step> <Step title="Find or create your pixel"> **If you already have a pixel**, you'll see it under **Events Overview** — proceed to the next step. **If you need to create one:** * Click **Create New Pixel** or **Set Up Pixel** * Follow Reddit's setup wizard to create a new Reddit Pixel * Once created, return to the Events Manager </Step> <Step title="Locate your Pixel ID"> Below **Events Overview** (or under your pixel's settings), locate the **Pixel ID**. **Example format:** `t2_abc123def` The Pixel ID is the same value as your Reddit Account ID and starts with the prefix `t2_`. </Step> <Step title="Copy and paste into Upstack Data"> Copy your Pixel ID and paste it into the **Pixel ID** field in your Upstack Reddit destination setup. <Tip> Ensure there are no extra spaces before or after the ID. The value should include the `t2_` prefix. </Tip> </Step> <Step title="Save the configuration"> Click **Create Configuration** to save the destination. </Step> <Step title="Verify the destination is healthy"> In the Upstack dashboard, navigate to **Event Destinations**. Your Reddit destination should display **Healthy** with a green status indicator within 5 minutes. If the status shows **Unhealthy**, double-check that the Pixel ID matches exactly what you see in Reddit Ads Manager (correct prefix, no whitespace). </Step> </Steps> <Note> **Next step:** [How to generate your Reddit CAPI token](/destinations/catalog/reddit/how-to-generate-reddit-conversion-api-token) </Note> # How to Generate your Reddit Conversions API Token Source: https://docs.upstackdata.com/destinations/catalog/reddit/how-to-generate-reddit-conversion-api-token Generate a Reddit Conversions API access token in Reddit Ads Manager — required to authenticate the Upstack Data Reddit destination and forward server-side conversions via Reddit CAPI. <Tip> * Sign in to [Reddit Ads Manager](https://ads.reddit.com/) and open **Events Manager**. * Click the **Conversions API** tab in the left-hand menu. * Click **+ Generate Access Token**. * Name the token (e.g., "Upstack Data") and click **Generate**. * Copy the token immediately and paste it into your Upstack Reddit destination. </Tip> <Note> **What is a Reddit Conversions API token?** A **Conversions API access token** is a non-expiring secure key that allows Upstack Data to send conversion event data to Reddit's Conversions API. The token can be used by any administrator for any ad account within your business. Reddit recommends using this token over OAuth for Conversions API access. </Note> ## Prerequisites Before you start, you need: * **Admin access** to a **Reddit Ads** account * A pixel already created in [Reddit Ads Manager Events Manager](https://ads.reddit.com/) — see [How to find your Reddit Pixel ID](/destinations/catalog/reddit/how-to-find-reddit-pixel-id) * An Upstack Data account ready to receive the token ([sign in](https://app.upstackdata.com)) ## Steps to generate your Reddit CAPI token <Steps> <Step title="Sign in to Reddit Ads Manager"> Sign in to Reddit Ads Manager at [ads.reddit.com](https://ads.reddit.com/) or [business.reddit.com](https://business.reddit.com/). </Step> <Step title="Open Events Manager"> Click the menu (top-left corner) and select **Ads** → **Events Manager**. </Step> <Step title="Open the Conversions API settings"> In the left-hand menu of the Events Manager, click the **Conversions API** tab. This opens the Conversions API settings page where access tokens are managed. </Step> <Step title="Generate the access token"> In the **Conversions access token** section, click the **+ Generate Access Token** button. A pop-up window will appear prompting you to name the token. </Step> <Step title="Name your token"> Enter an easily identifiable name for the token (e.g., `Upstack Data` or `Upstack CAPI`). <Tip> A descriptive name makes it easier to identify which integration the token belongs to if you generate multiple tokens for different platforms or environments. </Tip> Click **Generate** to create the token. </Step> <Step title="Copy your CAPI token"> Reddit will display the access token — a string of letters and numbers. <Warning> Copy the token immediately to a secure location. Reddit may not show the full token again after you close the dialog. If lost, you'll need to generate a new one. </Warning> The token is a **non-expiring** secure key, so it does not need to be refreshed periodically. However, you should rotate it if you suspect it has been compromised. </Step> <Step title="Add the token to Upstack Data"> Sign in to Upstack Data at [app.upstackdata.com](https://app.upstackdata.com/pixel/event-destinations) and open your **Reddit** destination under **Event Destinations**. Paste the token into the **Conversions API access token** field. <Warning> The Conversions API token is sensitive — store it securely. Treat it like a password and never expose it in client-side code or share it publicly. </Warning> </Step> <Step title="Verify the destination is healthy"> In the Upstack dashboard, the Reddit destination card should show **Healthy** with a green status indicator within 5 minutes. If the status shows **Unhealthy**: * Confirm the token was pasted in full (no truncation, no whitespace). * Confirm the token was generated for the same Reddit Ads account as the Pixel ID. * Confirm the **Pixel ID** matches the pixel you generated the token for. </Step> </Steps> <Note> **Need help with the Pixel ID?** See [How to find your Reddit Pixel ID](/destinations/catalog/reddit/how-to-find-reddit-pixel-id). </Note> # How to Update your Reddit Conversions API Token Source: https://docs.upstackdata.com/destinations/catalog/reddit/how-to-update-reddit-conversion-api-token Rotate or update your Reddit Conversions API access token in Upstack Data to keep server-side events flowing into Reddit CAPI without breaking pixel health. <Tip> * Generate a new Reddit CAPI token in [Reddit Ads Manager Events Manager](https://ads.reddit.com/) → **Conversions API**. * Sign in to Upstack Data and open your Reddit destination under **Event Destinations**. * Replace the existing token with the new value and save. * Verify the destination shows **Healthy** within 5 minutes. </Tip> <Note> **When to update the Reddit CAPI token** Reddit Conversions API tokens are **non-expiring**, so they don't need routine rotation. Update the token only when: * The token has been compromised or accidentally exposed * An administrator has revoked the token in Reddit Ads Manager * You're consolidating multiple tokens into a single managed credential * The Upstack Reddit destination shows **Unhealthy** with an authentication error </Note> ## Prerequisites Before you start, you need: * **Admin access** to a **Reddit Ads** account * An Upstack Data account with an existing Reddit destination ([sign in](https://app.upstackdata.com)) ## Steps to update your Reddit CAPI token <Steps> <Step title="Generate a new Reddit CAPI token"> Follow the [generate Reddit CAPI token guide](/destinations/catalog/reddit/how-to-generate-reddit-conversion-api-token) to create a new access token in Reddit Ads Manager. Use a descriptive name like `Upstack Data (rotated YYYY-MM-DD)` to track when the token was issued. <Warning> Copy the new token immediately — Reddit may not show the full token again after you close the generation dialog. </Warning> </Step> <Step title="Open the Reddit destination in Upstack Data"> Sign in to Upstack Data at [app.upstackdata.com](https://app.upstackdata.com/pixel/event-destinations). Navigate to **Event Destinations** and click your existing **Reddit** destination to open its configuration. </Step> <Step title="Replace the access token"> In the **Conversions API access token** field, clear the existing token and paste the new one. Do not change the **Pixel ID** unless you are also moving to a new pixel — the token must be generated for the ad account that owns the Pixel ID. </Step> <Step title="Save the updated configuration"> Click **Save** or **Update Configuration**. Upstack will validate the new token by sending a test event to Reddit's Conversions API. </Step> <Step title="Verify the destination is healthy"> The Reddit destination card should display **Healthy** with a green status indicator within 5 minutes. If the status shows **Unhealthy**: * Confirm the new token was pasted in full (no truncation, no whitespace). * Confirm the token was generated for the same Reddit Ads account as the Pixel ID. * In Reddit Ads Manager → Events Manager → Conversions API, confirm the token is still listed (not revoked). </Step> <Step title="Revoke the old token (optional)"> Once the new token is verified working, return to Reddit Ads Manager → Events Manager → **Conversions API** and revoke the old token. Revoking the old token prevents accidental future use and reduces the surface area for credential leaks. </Step> </Steps> <Note> **Still seeing issues?** Contact our [support team](/troubleshooting/support) with your **Reddit Pixel ID** and we'll help diagnose the problem. </Note> # Sendlane Source: https://docs.upstackdata.com/destinations/catalog/sendlane Forward identity-resolved customer events to Sendlane to power email and SMS automation, abandoned cart recovery, and browse abandonment workflows. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> Sendlane is connected through **Upstack Flows**, the product that handles event delivery to marketing automation platforms. Upstack identifies visitors that Shopify and Sendlane's native tracking miss — turning anonymous browse and cart abandonment sessions into actionable Sendlane contacts. This means more abandoned cart workflows fire, more browse abandonment messages send, and you recover revenue that would otherwise be invisible. ## Tracking Method <Note> Sendlane receives events server-side only. See [Tracking Method](/concepts/tracking-method) for more details. </Note> ## How It Works When a visitor takes an action on your store, Upstack: 1. Captures the event through the Upstack Pixel and matches it to a known visitor profile using Upstack's identity resolution. 2. Looks up the contact in Sendlane by email or Sendlane contact ID to verify they exist. 3. If the contact is found, enriches the event with cart/product data and sends it to Sendlane as a custom event. 4. The custom event can trigger Sendlane automations like abandoned cart flows, browse abandonment sequences, and post-purchase campaigns. The result: abandoned cart and browse abandonment workflows fire for visitors that Shopify's native tracking misses. <Info> Sendlane events are only sent for contacts that already exist in Sendlane. This ensures your automations target real, opt-in subscribers and keeps your deliverability healthy. </Info> ## Required Credentials To connect Sendlane to Upstack, you need two credentials from your Sendlane account: | Credential | Description | Where to Find | | --------------------- | --------------------------------------------- | -------------------------------------------- | | **API Access Token** | Authenticates API requests to Sendlane | Sendlane → Settings → API | | **Integration Token** | Identifies custom events for your integration | Sendlane → Integrations → Custom Integration | <Steps> <Step title="Generate API Access Token"> In Sendlane, go to **Settings → API** and generate a new API token. Copy the token — you'll need it in the next step. </Step> <Step title="Create Custom Integration"> In Sendlane, go to **Integrations → Custom Integration** and create a new integration. Copy the **Integration Token** provided. </Step> <Step title="Configure in Upstack"> In the Upstack dashboard, go to **Destinations → Add Destination → Sendlane** and paste both credentials. </Step> </Steps> ## Event Mapping Upstack forwards the following events to Sendlane as custom events: | Upstack Event | Sendlane Event | Key Properties | Use Case | | ------------------------------- | ---------------------------------------------- | ------------------------------------------------------------- | ----------------------------- | | `ViewContent` | `product-viewed-upstackified` | `product_id`, `product_name`, `product_img_url`, `variant_id` | Browse abandonment flows | | `AddToCart` | `added-to-cart-upstackified` | `line_items`, `subtotal`, `total`, `currency` | Abandoned cart flows | | `InitiateCheckout` | `checkout-started-upstackified` | `checkout_id`, `line_items`, `subtotal`, `total`, `currency` | Checkout abandonment flows | | `Purchase` | `order-placed-upstackified` | `order_id`, `line_items`, `total`, `currency`, `discounts` | Post-purchase flows, win-back | | `SubscriptionRecurringPurchase` | `subscription-recurring-purchase-upstackified` | `order_id`, `line_items`, `total`, `currency` | Subscription renewal flows | Each event includes line item details such as `product_id`, `variant_id`, `sku`, `product_name`, `quantity`, `item_price`, `product_img_url`, and `product_url`. ## Best Practices <Tip> **Build abandonment automations on Upstack events.** Create Sendlane automations triggered by the `-upstackified` events (e.g., `added-to-cart-upstackified`) to capture visitors that your standard tracking misses. </Tip> <Tip> **Use cross-flow exclusions.** If you have both standard Sendlane automations and Upstack-powered automations, add exclusion filters to prevent the same customer from receiving duplicate messages. </Tip> <Warning> **Disable overlapping integrations.** If you previously used another attribution tool that sends similar events to Sendlane, disable those integrations before enabling Upstack to avoid duplicate events and messages. </Warning> ## FAQ <AccordionGroup> <Accordion title="How is this different from Sendlane's native Shopify integration?"> Sendlane's native Shopify integration only sees visitors that Shopify has identified — typically logged-in customers or shoppers who have entered an email at checkout. Upstack's identity resolution matches anonymous sessions to known customer profiles using cookies, click IDs, and cross-session behavioral data, then sends those events to Sendlane. This lets your abandoned cart and browse abandonment workflows fire for many more visitors. </Accordion> <Accordion title="What happens if a contact doesn't exist in Sendlane?"> Upstack only sends events for contacts that already exist in Sendlane. If the visitor's email isn't found in your Sendlane account, the event is skipped. This keeps your Sendlane account clean and ensures events only target real subscribers. </Accordion> <Accordion title="Will I get duplicate events if I keep Sendlane's native Shopify integration?"> Possibly. If both Upstack and Sendlane's native integration track the same event types, Sendlane may record both. The recommended approach is to disable the corresponding events in Sendlane's native integration for any event types Upstack is configured to send. </Accordion> <Accordion title="What permissions does the Sendlane API token need?"> The Sendlane API token must have permission to read contacts and send custom events. Use a token with the minimum scope required — Upstack does not need account management or billing permissions. </Accordion> <Accordion title="How long does it take for events to appear in Sendlane?"> Once the destination is active, events typically appear in Sendlane within 5 minutes. You can verify by triggering a test action on your store (such as adding a product to cart) and checking the contact's activity feed in Sendlane. </Accordion> </AccordionGroup> ## Troubleshooting <AccordionGroup> <Accordion title="Events not appearing in Sendlane"> If events are showing in the Upstack Live Event Stream but not arriving in Sendlane: **Steps to fix:** 1. Confirm the Sendlane destination shows **Active** (green) in the Upstack dashboard 2. Verify your API Access Token is valid and has not expired 3. Check that the contact exists in Sendlane — events are only sent for existing contacts 4. Verify the Integration Token matches the custom integration you created in Sendlane 5. If the destination status is red, disconnect and reconnect with fresh credentials </Accordion> <Accordion title="Custom events not triggering automations"> If events are arriving in Sendlane but not triggering your automations: **Steps to fix:** 1. Verify your automation is set to trigger on the correct event name (e.g., `added-to-cart-upstackified`, not `Added to Cart`) 2. Check that the automation is active and not paused 3. Ensure the contact meets any segment or filter conditions on the automation 4. Review the contact's activity feed to confirm the event was received </Accordion> </AccordionGroup> <Note> For additional troubleshooting beyond Sendlane-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/destination-shows-disconnected). </Note> ## Related <CardGroup> <Card title="Data Enrichment" icon="magnifying-glass-plus" href="/concepts/data-enrichment"> How Upstack Enrichment improves visitor identification — the foundation of Flows recovery. </Card> <Card title="Identity Resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack ID connects anonymous sessions to known customers with email addresses. </Card> <Card title="Klaviyo Destination" icon="envelope" href="/destinations/catalog/klaviyo"> Similar email/SMS marketing integration for Klaviyo users. </Card> <Card title="Events Not Reaching Destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # Slack Source: https://docs.upstackdata.com/destinations/catalog/slack Send real-time event notifications to Slack channels for purchases, leads, and other key conversions. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> ## Tracking Method <Note> Slack receives events server-side only. See [Tracking Method](/concepts/tracking-method) for more details. </Note> ## What it does The Slack destination sends real-time notifications to any Slack channel when events occur on your store. Get instant alerts for purchases, new leads, abandoned carts, or any custom event — delivered directly to your team's Slack workspace. Unlike ad platform destinations that optimize campaigns, Slack notifications are designed for visibility. See every high-value conversion the moment it happens, celebrate wins with your team, or monitor for unusual activity. ## How it works When a matching event occurs, Upstack: 1. Evaluates the event against your configured event templates and conditions. 2. Renders a Block Kit message using the template's placeholder values (order ID, customer email, revenue, etc.). 3. POSTs the formatted message to your Slack webhook URL. 4. Logs the delivery status to the Upstack event debugger. Each event template can have its own conditions — for example, only notify on purchases over \$100, or only alert when a specific product is purchased. ## Supported events Slack notifications can be triggered by any standard or custom event: | Event | Use case | | ------------------ | ------------------------------------------------------- | | `Purchase` | Celebrate new orders, track high-value conversions | | `InitiateCheckout` | Monitor checkout abandonment in real-time | | `AddToCart` | Track product interest and cart activity | | `Lead` | Get notified of form submissions and newsletter signups | | `ViewContent` | Monitor traffic to key pages | | Custom events | Trigger on any event you define | ## Setup instructions ### Step 1: Create a Slack Incoming Webhook 1. Go to [Slack API Apps](https://api.slack.com/apps) and click **Create New App**. 2. Choose **From scratch**, name your app (e.g., "Upstack Notifications"), and select your workspace. 3. Under **Features**, click **Incoming Webhooks** and toggle it **On**. 4. Click **Add New Webhook to Workspace** and select the channel where notifications should appear. 5. Copy the **Webhook URL** — it looks like `https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX`. ### Step 2: Configure the Slack destination in Upstack 1. In the Upstack dashboard, go to **Destinations** and click **Add Destination**. 2. Select **Slack** from the destination list. 3. Paste your **Webhook URL** from Step 1. 4. Create one or more **Event Templates** to define which events trigger notifications and how they're formatted. ### Step 3: Create event templates Each template maps a source event to a Slack message: * **Source Event**: The event type that triggers this template (e.g., `Purchase`). * **Template**: The Block Kit message structure with placeholders like `{{data.order_id}}` and `{{data.value}}`. * **Conditions** (optional): Filter criteria — only send when conditions are met. ## Example message format Slack messages use Block Kit for rich formatting. Here's an example purchase notification: ```json theme={null} { "blocks": [ { "type": "header", "text": { "type": "plain_text", "text": "🎉 New Purchase!" } }, { "type": "section", "fields": [ { "type": "mrkdwn", "text": "*Order ID:*\n{{data.order_id}}" }, { "type": "mrkdwn", "text": "*Revenue:*\n${{data.value}}" }, { "type": "mrkdwn", "text": "*Customer:*\n{{data.email}}" }, { "type": "mrkdwn", "text": "*Source:*\n{{context.utm_source}}" } ] }, { "type": "context", "elements": [ { "type": "mrkdwn", "text": "via Upstack Data" } ] } ] } ``` Placeholders like `{{data.order_id}}` are replaced with actual event values at send time. ## Use cases <CardGroup> <Card title="Purchase alerts" icon="bell"> Get notified in Slack the moment a purchase completes. Include order value, customer info, and attribution source. </Card> <Card title="Lead notifications" icon="user-plus"> Alert your sales team when a lead form is submitted. Route different lead types to different channels. </Card> <Card title="High-value order alerts" icon="trophy"> Use conditions to only notify on orders above a threshold — celebrate the big wins. </Card> <Card title="Abandoned cart monitoring" icon="cart-shopping"> Track checkout initiations in real-time to spot abandonment patterns. </Card> </CardGroup> ## FAQ <AccordionGroup> <Accordion title="Where do I find my Slack webhook URL?"> Create an Incoming Webhook in your Slack workspace settings. Go to [Slack API Apps](https://api.slack.com/apps), create or select an app, enable Incoming Webhooks, and add a new webhook to your desired channel. The URL is generated automatically. </Accordion> <Accordion title="Can I send to multiple Slack channels?"> Each Slack destination has one webhook URL (one channel). To send to multiple channels, create multiple Slack destinations with different webhook URLs and configure each with the appropriate event templates. </Accordion> <Accordion title="How do conditions work?"> Conditions let you filter which events trigger a notification. For example, you can configure a template to only fire when `data.value` is greater than 100, or when `data.currency` equals "USD". Conditions support AND/OR logic for complex filtering. </Accordion> <Accordion title="What placeholders can I use in templates?"> Any field from the tracking event is available as a placeholder. Common examples: * `{{data.order_id}}` — Order ID * `{{data.value}}` — Order value * `{{data.email}}` — Customer email * `{{data.currency}}` — Currency code * `{{context.utm_source}}` — UTM source * `{{context.page_url}}` — Page URL where event occurred </Accordion> <Accordion title="What happens if the Slack webhook fails?"> Failed deliveries are logged to the Upstack event debugger. Upstack uses SQS-based retry with exponential backoff for transient failures. If the webhook URL is invalid or the Slack app is deleted, events will fail permanently and appear in your delivery logs. </Accordion> </AccordionGroup> ## Related <CardGroup> <Card title="Webhooks destination" icon="webhook" href="/destinations/catalog/webhooks"> Send raw event payloads to any HTTP endpoint for custom integrations. </Card> <Card title="Standard events reference" icon="bolt" href="/event-tracking/event-taxonomy/standard-events"> Full reference for all event types and properties available in templates. </Card> <Card title="Custom events" icon="code" href="/guides/custom-events/how-to-create-custom-event-triggers"> Create custom events to trigger Slack notifications for any action. </Card> <Card title="Destinations overview" icon="arrow-right-from-bracket" href="/destinations/catalog/overview"> How Upstack delivers events to all destination types. </Card> </CardGroup> # Snapchat Ads Source: https://docs.upstackdata.com/destinations/catalog/snapchat Send conversion events to Snapchat's Conversions API for ad campaign optimization, audience building, and attribution. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> Snapchat's Conversions API is the server-side counterpart to the Snap Pixel. Upstack sends purchases, add-to-carts, and other conversion events directly to Snapchat from your account, bypassing browser ad blockers and giving Snap's algorithm stronger signal for ad optimization. Server-side delivery consistently achieves higher event match rates than browser-only tracking. Combined with the Snap browser pixel, the two work together — Snapchat's deduplication logic keeps only one conversion when the same event arrives from both sources. ## How It Works When a visitor takes an action on your store, Upstack: 1. Captures the event through the Upstack Pixel and matches it to a known visitor profile. 2. Enriches the event with hashed PII (email, phone) and Snap click IDs (`scclid`) when available. 3. Sends the enriched event to Snapchat's Conversions API using your Snap Pixel ID and Conversions API token. 4. Logs the response so you can monitor delivery and match rates from the Upstack dashboard. ## Set Up Snapchat Follow the onboarding guide for the full end-to-end setup, or jump to a specific step. <CardGroup> <Card title="Onboarding guide" icon="book" href="/destinations/catalog/snapchat/complete-how-to-guide-for-onboarding-snapchat-in-upstack-data"> Complete step-by-step walkthrough for connecting Snapchat to Upstack. </Card> <Card title="Configure destination" icon="sliders" href="/destinations/catalog/snapchat/how-to-configure-snapchat-pixel-destination-in-upstack-data"> Add and configure the Snapchat destination inside the Upstack dashboard. </Card> <Card title="Get Pixel ID" icon="magnifying-glass" href="/destinations/catalog/snapchat/how-to-get-my-snapchat-pixel-id"> Locate the Snap Pixel ID in your Snapchat Ads account. </Card> <Card title="Generate Conversion API token" icon="key" href="/destinations/catalog/snapchat/how-to-generate-my-snapchat-conversion-api-token"> Generate the Conversions API token Upstack uses to send events. </Card> <Card title="Disable Shopify data sharing" icon="ban" href="/destinations/catalog/snapchat/how-to-disable-snapchat-data-sharing-in-shopify"> Turn off Shopify's native Snapchat data sharing to prevent duplicate events. </Card> </CardGroup> ## FAQ <AccordionGroup> <Accordion title="Do I still need the Snap browser pixel?"> You don't need the browser pixel for Upstack to send events — server-side delivery works on its own. However, running both gives Snap the strongest signal. As long as the Snap Pixel ID matches between your browser pixel and the Upstack destination, Snapchat's deduplication logic prevents double-counting. </Accordion> <Accordion title="Why disable Shopify's native Snapchat data sharing?"> Shopify's built-in Snapchat integration also forwards events to Snap. If both Shopify and Upstack are sending the same events without coordination, Snapchat can count conversions twice. Disabling Shopify's native sharing lets Upstack handle delivery exclusively, with the browser pixel for real-time signal and the Conversions API for reliability. See [Disable Shopify data sharing](/destinations/catalog/snapchat/how-to-disable-snapchat-data-sharing-in-shopify). </Accordion> <Accordion title="How long does it take for events to appear in Snapchat?"> Once the destination is active, events typically appear in Snap Events Manager within 5-10 minutes. The first events confirm the connection is working — match quality and conversion attribution build over the following 24-48 hours as Snap correlates events to ad clicks. </Accordion> <Accordion title="What permissions does the Conversions API token need?"> The Snapchat Conversions API token must have permission to send events on behalf of your ad account. Generate the token with the minimum scope required for sending conversion events — Upstack does not need management or spending permissions. Step-by-step instructions are in [Generate Conversion API token](/destinations/catalog/snapchat/how-to-generate-my-snapchat-conversion-api-token). </Accordion> </AccordionGroup> ## Related <CardGroup> <Card title="Conversion API Forwarding" icon="lightbulb" href="/concepts/conversion-api-forwarding"> How Upstack Signal forwards events to ad platforms via server-to-server APIs. </Card> <Card title="Identity Resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack ID matches anonymous visitors to known customers for higher match rates. </Card> <Card title="Destinations Overview" icon="arrow-right-from-bracket" href="/destinations/overview"> Browse all available destinations and how Upstack delivers data to each. </Card> <Card title="Events Not Reaching Destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # Complete How-To Guide for Onboarding Snapchat in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/snapchat/complete-how-to-guide-for-onboarding-snapchat-in-upstack-data Onboard Snapchat Ads in Upstack Data — locate your Snapchat Pixel ID, generate the Conversion API access token, configure the destination, and disable Shopify's duplicate Snapchat pixel. <Tip> **Quick Summary** * Locate and copy your **Snapchat Pixel ID** * Generate and copy your **Snapchat Conversion API Token** * Create and **configure the Snapchat destination** in your Upstack dashboard * **Disable Snapchat data sharing** in Shopify </Tip> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to your Snapchat Ads account ([Snapchat Ads Manager](https://ads.snapchat.com)) * A Shopify store admin account (only required for the data-sharing step) ## Onboarding Steps <Steps> <Step title="Find and copy your Snapchat Pixel ID"> <Note> A **Snapchat Pixel ID** is a unique identifier for your Snapchat Pixel in the format of a 32-character UUID, for example `00000000-0000-0000-0000-000000000000`. </Note> Help guide to complete this step: [How to Get my Snapchat Pixel ID →](/destinations/catalog/snapchat/how-to-get-my-snapchat-pixel-id) </Step> <Step title="Generate and copy your Conversion API Token"> <Note> A **Snapchat Conversion API Token** is a long alphanumeric secret (typically 100+ characters) that authorizes Upstack Data to send server-side events on your behalf. </Note> <Warning> Store your token on secure backend servers and do not share it. You will need it when configuring the Snapchat destination in your Upstack dashboard. When generating new tokens, remove old ones as soon as you confirm they are no longer needed. </Warning> Help guide to complete this step: [How to Generate my Snapchat Conversion API Token →](/destinations/catalog/snapchat/how-to-generate-my-snapchat-conversion-api-token) </Step> <Step title="Create and configure the Snapchat destination in your Upstack dashboard"> Help guide to complete this step: [How to Configure Snapchat Pixel Destination in Upstack Data →](/destinations/catalog/snapchat/how-to-configure-snapchat-pixel-destination-in-upstack-data) </Step> <Step title="Disable Snapchat data sharing in Shopify"> <Warning> Disabling Snapchat data sharing is crucial to prevent duplicate events, which can distort reporting and attribution. It ensures Snapchat only receives clean, accurate data through Upstack Data for reliable insights and better ad optimization. </Warning> Help guide to complete this step: [How to Disable Snapchat Data Sharing in Shopify →](/destinations/catalog/snapchat/how-to-disable-snapchat-data-sharing-in-shopify) </Step> <Step title="Verify the Snapchat destination is healthy"> In your [Upstack dashboard](https://app.upstackdata.com/pixel/event-destinations), open **Events Destination** and confirm the **Snapchat** destination shows a **Healthy** status. Then, in [Snapchat Ads Manager](https://ads.snapchat.com), open **Events Manager** for your pixel and confirm events are arriving from your Conversions API integration. </Step> </Steps> <Note> **Need help?** If you encounter any issues during setup or don't see expected improvements after 10 days, contact our support team with your Snapchat Pixel ID and Conversion API Token, and we'll help diagnose the problem. </Note> # How to Configure Snapchat Pixel Destination in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/snapchat/how-to-configure-snapchat-pixel-destination-in-upstack-data Configure the Snapchat destination in Upstack Data with your Snapchat Pixel ID and Conversion API access token to forward server-side conversions to Snapchat CAPI. <Tip> **Quick Summary** * In the Upstack dashboard, open **Events Destination** and click **+ New Destination** * Select **Snapchat** from the destination options * Enter your **Snapchat Pixel ID** and **Conversion API Token** * Paste your **Snapchat Conversion API Token** * Click **Create Configuration** and verify the destination shows as **Healthy** </Tip> ## Tracking Method <Note> **Tracking Method** is set to **Browser + Server** by default, and this is the recommended way to run Snapchat: Upstack loads the Snap Pixel on your storefront and also sends events server-side, and the two copies are deduplicated. If you don't want to load the Snap Pixel in the browser, switch the Tracking Method to **Server**. See [Tracking Method](/concepts/tracking-method). </Note> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to your Snapchat Ads account ([Snapchat Ads Manager](https://ads.snapchat.com)) * Your Snapchat **Pixel ID** ([how to get it](/destinations/catalog/snapchat/how-to-get-my-snapchat-pixel-id)) * Your Snapchat **Conversion API Token** ([how to generate it](/destinations/catalog/snapchat/how-to-generate-my-snapchat-conversion-api-token)) ## Configuration Steps <Steps> <Step title="Sign in to your Upstack dashboard"> Sign in to [Upstack Data](https://app.upstackdata.com) and open the [Events Destination](https://app.upstackdata.com/pixel/event-destinations) page. </Step> <Step title="Add a new Snapchat destination"> In the **Events Destination** page, click **+ New Destination** in the top-right of the page. <img alt="Add New Destination" /> In the **Select a Destination** popup, click **Snapchat**, then click **Next**. <img alt="Select Snapchat from destination options in popup" /> </Step> <Step title="Enter your Snapchat credentials"> Fill out the form with the following: 1. **Snapchat Pixel ID** — a 32-character UUID, for example `00000000-0000-0000-0000-000000000000` 2. **Snapchat Conversion API Token** — the long alphanumeric token (typically 100+ characters) generated in Snapchat Business Manager <img alt="Snapchat destination form with Pixel ID and CAPI token fields" /> <Note> ***Need help finding these?*** **[How to Get my Snapchat Pixel ID →](/destinations/catalog/snapchat/how-to-get-my-snapchat-pixel-id)** **[How to Generate my Snapchat Conversion API Token →](/destinations/catalog/snapchat/how-to-generate-my-snapchat-conversion-api-token)** </Note> </Step> <Step title="Create the configuration"> Click the **Create Configuration** button at the bottom of the form. <img alt="Create Configuration button to save Snapchat destination" /> <Note> **Success! 🎉** You should see a confirmation message and the Snapchat destination will appear as **Healthy** in your destinations list. </Note> </Step> <Step title="Verify the destination is sending events"> Back in the [Events Destination](https://app.upstackdata.com/pixel/event-destinations) page, confirm the new **Snapchat** destination shows a **Healthy** status. Then, in [Snapchat Ads Manager](https://ads.snapchat.com), open **Events Manager** for your pixel and confirm events are arriving from your Conversions API integration. New events typically appear within a few minutes after a test purchase or page view. </Step> </Steps> # How to Disable Snapchat Data Sharing in Shopify Source: https://docs.upstackdata.com/destinations/catalog/snapchat/how-to-disable-snapchat-data-sharing-in-shopify Disable Shopify's Snapchat sales channel data sharing to stop duplicate Snapchat pixel events and let Upstack Data deliver clean server-side conversions to Snapchat CAPI. <Tip> **Quick Summary** * In Shopify admin, open the **Sales channels** section * Select **Snapchat Ads**, then open the **Settings** tab * Open the **Data sharing** tab and find the **Pixel ID** section * Click **Disconnect** to unlink the Snapchat Pixel from Shopify </Tip> <Warning> Disabling Snapchat data sharing is crucial to prevent duplicate events, which can distort reporting and attribution. It ensures Snapchat only receives clean, accurate data through Upstack Data for reliable insights and better ad optimization. </Warning> ## Prerequisites Before you start, you need: * Admin access to your Shopify store ([Shopify admin](https://admin.shopify.com)) * The Snapchat Ads sales channel currently installed in Shopify * A configured Snapchat destination in your [Upstack dashboard](https://app.upstackdata.com/pixel/event-destinations) ([setup guide](/destinations/catalog/snapchat/how-to-configure-snapchat-pixel-destination-in-upstack-data)) ## Steps to Disable Snapchat Data Sharing in Shopify <Steps> <Step title="Sign in to Shopify admin"> Sign in to [Shopify admin](https://admin.shopify.com) for the store where the Snapchat Ads sales channel is installed. </Step> <Step title="Open the Snapchat Ads sales channel"> In the left-hand menu, click **Sales channels**, then select **Snapchat Ads**. (You can also use the search bar at the top of Shopify admin to locate the Snapchat Ads sales channel.) Make sure you are on the **Settings** tab of the Snapchat Ads sales channel. </Step> <Step title="Open the Data sharing tab"> In the Snapchat Ads settings, click the **Data sharing** tab. Scroll to the **Pixel ID** section and find your connected Snapchat Pixel. <img alt="Snapchat Ads Data sharing tab showing Pixel ID section with Disconnect option" /> </Step> <Step title="Disconnect the Snapchat Pixel from Shopify"> Click **Disconnect** next to the connected Pixel ID to unlink it from Shopify, then confirm the action in the dialog. </Step> <Step title="Verify Snapchat is no longer sharing data through Shopify"> Refresh the **Data sharing** tab and confirm the Pixel ID section no longer shows a connected pixel. Then, in your [Upstack dashboard](https://app.upstackdata.com/pixel/event-destinations), confirm the **Snapchat** destination is still **Healthy** and continuing to send events through Upstack Data. </Step> </Steps> <Note> **Need Help?** If you encounter any issues during setup, contact our support team and we'll help diagnose the problem. </Note> # How to Generate my Snapchat Conversion API Token? Source: https://docs.upstackdata.com/destinations/catalog/snapchat/how-to-generate-my-snapchat-conversion-api-token Generate a Snapchat Conversion API access token in Snapchat Ads Manager — required to authenticate the Upstack Data Snapchat destination for server-side conversion forwarding. <Tip> **Quick Summary** * Sign in to [Snapchat Business Manager](https://business.snapchat.com) * Open the **Business Details** page * Click **Generate Token** * **Copy and save** the generated **Conversion API Token** immediately (Snapchat only displays it once) * Paste the token into the Snapchat destination form in your Upstack dashboard </Tip> ## What is a Snapchat Conversion API Token? <Note> A **Snapchat Conversion API Token** is a secure credential generated in Snapchat Business Manager that authorizes platforms like Upstack Data to send conversion events directly to Snapchat's Conversions API. It is a long alphanumeric string, typically 100+ characters long. </Note> It enables server-side event tracking to reduce reliance on browser pixels, improves attribution by capturing conversions lost to ad blockers, privacy restrictions, or cookies, and boosts ad performance by providing Snapchat with more complete and reliable conversion data. ## Prerequisites Before you start, you need: * Admin access to your Snapchat Ads account * At least one Snapchat Pixel created ([how to create one](/destinations/catalog/snapchat/how-to-get-my-snapchat-pixel-id)) * A secure place to store the generated token (Snapchat only displays it once) ## Steps to Generate the Conversion API Token <Steps> <Step title="Sign in to Snapchat Business Manager"> Sign in to [Snapchat Business Manager](https://business.snapchat.com). </Step> <Step title="Open Business Details"> In the left-hand menu, click **Business Details**. <img alt="" /> </Step> <Step title="Generate the Conversion API Token"> On the **Business Details** page, click **Generate Token**. <img alt="" /> **Copy** the generated Conversion API Token immediately. Then paste it into the **Conversion API Token** field when [configuring the Snapchat destination](/destinations/catalog/snapchat/how-to-configure-snapchat-pixel-destination-in-upstack-data) in your Upstack dashboard. <img alt="" /> <Warning> Snapchat only shows the token once — copy it now and save it to a secure location such as a password manager. Store the token on secure backend servers and do not share it. When generating new tokens, remove old ones as soon as you confirm they are no longer needed. </Warning> </Step> <Step title="Verify the token format"> Confirm the value you copied is a long alphanumeric string (typically 100+ characters) with no extra spaces. You can paste it into the **Conversion API Token** field when configuring the Snapchat destination in your Upstack dashboard. </Step> </Steps> <Note> ***Need help finding this?*** **[How to Get my Snapchat Pixel ID →](/destinations/catalog/snapchat/how-to-get-my-snapchat-pixel-id)** </Note> # How to Get my Snapchat Pixel ID? Source: https://docs.upstackdata.com/destinations/catalog/snapchat/how-to-get-my-snapchat-pixel-id Find your Snapchat Pixel ID in Snapchat Ads Manager — required to configure the Upstack Data Snapchat destination and forward server-side conversions to Snapchat CAPI. <Tip> **Quick Summary** * Sign in to [Snapchat Ads Manager](https://ads.snapchat.com) * Open **Events Manager → Pixels** (or **Pixels** in the left-hand menu) * If a pixel exists, copy the **Pixel ID** displayed under the pixel name * If no pixel exists, click **Create Pixel**, name it `Upstack Data`, then **Create** and copy the new Pixel ID * Paste the Pixel ID into the Snapchat destination form in your Upstack dashboard </Tip> ## What is a Snapchat Pixel ID? <Note> A **Snapchat Pixel ID** is a unique identifier assigned to your Snapchat Pixel when you create it in Snapchat Ads Manager. It is a 32-character UUID, for example `00000000-0000-0000-0000-000000000000`. </Note> Its purpose is to: * **Identify your pixel** so Snapchat knows which ad account and campaigns the data belongs to * **Track on-site actions** such as page views, purchases, and sign-ups * **Send event data to Snapchat Ads Manager** for reporting, audience building, and optimization * **Improve targeting and attribution** by connecting user activity on your website with your Snapchat ads ## Prerequisites Before you start, you need: * Admin access to your Snapchat Ads account ([Snapchat Ads Manager](https://ads.snapchat.com)) * Permission to create or view pixels in your ad account ## Steps to Find Your Snapchat Pixel ID <Steps> <Step title="Sign in to Snapchat Ads Manager"> Sign in to [Snapchat Ads Manager](https://ads.snapchat.com), then open **Events Manager → Pixels** (or click **Pixels** in the left-hand menu). <img alt="Snapchat Ads Manager with Events Manager and Pixels menu" /> If you already have a pixel, find the **Pixel ID** for the pixel you want to connect with Upstack Data — it appears beneath the pixel name as a 32-character UUID. <img alt="Snapchat Pixel showing Pixel ID beneath pixel name" /> </Step> <Step title="Create a new pixel (only if you don't have one)"> From the **Pixels** page in Snapchat Ads Manager, click **Create Pixel**. <img alt="Create Pixel button in Snapchat Pixels page" /> <img alt="Create Pixel form with name field" /> Type `Upstack Data` as the pixel name, then click **Create**. <img alt="Pixel name field with Upstack Data entered" /> </Step> <Step title="Copy your Pixel ID"> The **Pixel ID** is displayed beneath the pixel name as a 32-character UUID, for example `00000000-0000-0000-0000-000000000000`. **Copy** the Pixel ID. <img alt="Pixel ID displayed beneath pixel name with copy option" /> <Warning> Keep your Snapchat Pixel ID confidential. It is a unique identifier for your account and can be used to track conversions and user behavior on your website. </Warning> </Step> <Step title="Verify the Pixel ID"> Confirm the value you copied is a 32-character UUID with no extra spaces. You can paste it into the **Snapchat Pixel ID** field when [configuring the Snapchat destination](/destinations/catalog/snapchat/how-to-configure-snapchat-pixel-destination-in-upstack-data) in your Upstack dashboard. </Step> </Steps> <Note> ***Need help finding this?*** **[How to Generate my Snapchat Conversion API Token →](/destinations/catalog/snapchat/how-to-generate-my-snapchat-conversion-api-token)** </Note> # Taboola Source: https://docs.upstackdata.com/destinations/catalog/taboola Send conversion events to Taboola's S2S API for native advertising campaign optimization — powered by Upstack Signal. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> ## What it does Taboola is a native advertising platform that displays sponsored content recommendations on publisher websites. Upstack Signal forwards storefront events — page views, product views, add-to-carts, and purchases — directly to Taboola's Server-to-Server (S2S) Conversion API for campaign optimization. Server-side delivery means conversions reach Taboola even when the browser-side pixel is blocked by ad blockers, ITP, or cookie restrictions. Each event carries the click identifier (`tblci`) captured from ad clicks so Taboola can match the conversion back to the ad interaction that drove it. <Warning> **Important limitation:** Taboola does **NOT** support enhanced matching via hashed email, phone, or other PII. Attribution relies **solely on the click ID (`tblci`)** captured from ad clicks. Events without a click ID cannot be attributed and are skipped. </Warning> ## How it works Upstack Signal runs as a dual-tracking layer alongside the Taboola browser pixel. The Upstack Pixel captures events in the browser and forwards each one to Upstack's edge infrastructure, where it is enriched with the Taboola click ID from cookie storage and sent to Taboola's S2S API as a server-side event. **S2S priority for deduplication:** When both the browser pixel and S2S report the same event, Taboola keeps the S2S event and deduplicates the pixel event. This makes server-side preferred for accurate attribution. **API behavior:** Taboola's S2S API returns HTTP 204 No Content for **all** requests, including invalid ones. There is no validation feedback from the API — use Taboola Backstage Test Events for verification. **Authentication:** Unlike Meta, TikTok, and Google APIs, Taboola's S2S API is unauthenticated. Events are attributed via the click ID only. ## Tracking Method <Note> **Tracking Method** is set to **Browser + Server** by default, and this is the recommended way to run Taboola: Upstack loads the Taboola tag on your storefront and also sends events server-side, and the two copies are deduplicated. If you don't want to load the Taboola tag in the browser, switch the Tracking Method to **Server**. See [Tracking Method](/concepts/tracking-method). </Note> ## Setup ### Prerequisites * A Taboola Backstage account with active campaigns * The Upstack Pixel installed on your storefront * Campaign URLs configured with the `tblci` click ID parameter ### Required credentials | Field | Description | Where to find | | ---------- | ------------------------------- | --------------------------------------- | | Account ID | Your numeric Taboola Account ID | Backstage → Account dropdown → Tracking | ### Configuration steps 1. In Upstack, navigate to **Settings** → **Destinations** 2. Click **Add Destination** and select **Taboola** 3. Enter your **Account ID** (numeric only) 4. Click **Save** ### Configure click ID tracking For Taboola to attribute conversions, your campaign URLs must include the click ID parameter: 1. In Taboola Backstage, go to **Campaigns** → select your campaign 2. Add `?tblci={click_id}` to your destination URL (or `&tblci={click_id}` if URL already has parameters) 3. The Upstack Pixel will automatically capture and store the `tblci` value <Note> The `tblci` parameter is case-sensitive. Ensure your URL uses lowercase `tblci`. </Note> ## Event mapping Upstack maps storefront events to Taboola events automatically: | Upstack event | Taboola event | Key parameters | Notes | | ---------------------- | ----------------------- | -------------------------------- | ------------------------------ | | `Purchase` | `make_purchase` | `revenue`, `currency`, `orderid` | Primary conversion event | | `InitiateCheckout` | `start_checkout` | `revenue`, `currency` | Checkout initiation | | `AddToCart` | `add_to_cart` | `quantity` | Cart additions | | `ViewContent` | `view_content` | — | Product page views | | `PageView` | `page_view` | — | Page load | | `Lead` | `lead` | `revenue` | Lead form submissions | | `SignUp` | `complete_registration` | — | Account registration | | `CompleteRegistration` | `complete_registration` | — | Account registration | | `Search` | `search` | — | Site search | | `Subscribe` | `subscribe` | — | Newsletter/subscription signup | Every event includes the Taboola click ID (`tblci`) when available. **Events without a click ID are skipped** because Taboola cannot attribute them to any campaign. <Warning> **Event names are case-sensitive.** Taboola event names must exactly match the conversion name configured in Taboola Realize. Upstack sends lowercase snake\_case names (e.g., `make_purchase`, `add_to_cart`). </Warning> ## Field mapping | Upstack field | Taboola field | Type | Notes | | -------------------------------------- | ------------- | ------ | ----------------------------------------- | | `context.properties.click.tblci` | `click-id` | string | **Required.** Click ID from ad click | | `data.value` | `revenue` | number | Conversion value (decimal, no commas) | | `data.currency` | `currency` | string | ISO 4217 (USD, EUR, GBP) — case-sensitive | | `data.orderId` or `data.transactionId` | `orderid` | string | Transaction ID for deduplication | | Aggregated from `items` | `quantity` | number | Total quantity across all items | | Event timestamp | `timestamp` | number | Milliseconds since Unix epoch | ## FAQ <AccordionGroup> <Accordion title="How do I verify events are arriving in Taboola?"> Open Taboola Backstage, navigate to **Tracking** → **Test Events**, and check that events are appearing. Note that Taboola's API returns 204 for all requests (even invalid ones), so the Test Events view is the only way to confirm events are being processed correctly. </Accordion> <Accordion title="Why are my attribution rates lower than other platforms?"> Taboola does not support enhanced matching with hashed PII (email, phone, IP, user-agent). Attribution relies **solely** on the click ID (`tblci`). If a visitor clears cookies, uses a different device, or the click ID expires, the conversion cannot be attributed. This is a platform limitation, not an Upstack issue. </Accordion> <Accordion title="Will my events be counted twice if I run both the pixel and server-side?"> No. When both the browser pixel and S2S report the same event, Taboola keeps the S2S event and deduplicates the pixel event. Including an `orderid` on purchase events further improves deduplication. </Accordion> <Accordion title="Do event names need to match exactly?"> Yes — event names are **case-sensitive** and must exactly match the conversion name configured in Taboola Realize. Upstack sends standard lowercase snake\_case names like `make_purchase`, `add_to_cart`, etc. </Accordion> <Accordion title="What happens if the click ID is missing?"> Events without a Taboola click ID are **skipped** and not sent to Taboola. This is intentional — Taboola cannot attribute conversions without a click ID, so sending them would inflate your event volume without improving attribution. Ensure your campaign URLs include `tblci={click_id}` so the Upstack Pixel can capture click IDs. </Accordion> <Accordion title="Why does the API always return 204?"> Taboola's S2S API returns HTTP 204 No Content for **all** requests, including those with invalid data. This is by design. Use Taboola Backstage Test Events to verify events are being processed correctly. </Accordion> </AccordionGroup> ## Troubleshooting <AccordionGroup> <Accordion title="No conversions appearing in Taboola Backstage"> If events aren't appearing after confirmed store traffic: **Steps to fix:** 1. Verify your campaign URL includes `tblci={click_id}` 2. Confirm the Upstack destination shows **Active** (green) 3. Check that the Account ID matches your Backstage account 4. Test with a real ad click — test traffic without `tblci` in the URL won't generate events 5. Check Taboola Backstage → Tracking → Test Events for any incoming events </Accordion> <Accordion title="Invalid Account ID"> The Account ID must be a numeric string (digits only). **Steps to fix:** 1. Go to Taboola Backstage → Account dropdown → Tracking 2. Copy the numeric Account ID (no spaces, no extra characters) 3. Update the destination in Upstack with the correct ID </Accordion> <Accordion title="Low attribution rate compared to other platforms"> This is expected due to Taboola's click-ID-only attribution model. **To maximize attribution:** * Ensure all campaigns include `tblci={click_id}` in the URL * Verify the Upstack Pixel is loading on all pages to capture click IDs * Check that first-party cookies are not being blocked by browser settings * Note that cross-device and returning-visitor conversions will not be attributed </Accordion> <Accordion title="Events appear to send but don't show in Backstage"> Remember that Taboola's API returns 204 for all requests, even invalid ones. **Steps to fix:** 1. Verify event names match exactly what's configured in Taboola Realize (case-sensitive) 2. Ensure the `click-id` parameter is being sent correctly (hyphenated, not underscored) 3. Check that revenue values don't contain commas 4. Verify currency codes are uppercase ISO 4217 (USD, not usd) </Accordion> </AccordionGroup> <Note> For additional troubleshooting beyond Taboola-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/destination-shows-disconnected). </Note> ## Related <CardGroup> <Card title="Conversion API forwarding" icon="lightbulb" href="/concepts/conversion-api-forwarding"> How Upstack Signal forwards events to ad platforms via server-to-server APIs. </Card> <Card title="Identity resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack matches anonymous visitors to known customers for higher match rates. </Card> <Card title="Outbrain destination" icon="rectangle-ad" href="/destinations/catalog/outbrain"> Set up Outbrain's native advertising API — similar click-ID-only attribution model. </Card> <Card title="Events not reaching destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # TikTok Events API Source: https://docs.upstackdata.com/destinations/catalog/tiktok Send conversion events to TikTok via the Events API for campaign optimization, audience building, and attribution — powered by Upstack Signal. <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> ## What it does TikTok's Events API is the server-side counterpart to the TikTok Pixel. Upstack Signal forwards storefront events — page views, product views, add-to-carts, checkouts, and purchases — directly to TikTok's servers, bypassing browser restrictions like ad blockers, ITP, and cookie limits. Server-side delivery gives TikTok's algorithm a fuller picture of the conversions your ads actually drove, which improves campaign optimization, audience modeling, and attribution accuracy. Match rates from server-side events are consistently higher than browser-only tracking because each event carries hashed customer data and the `ttclid` click identifier when available. <Note> Unlike Meta and Google Ads, TikTok uses **token-based auth** instead of OAuth. You'll paste a Pixel ID and an Events API access token into the Upstack destination — there is no OAuth handshake to step through. </Note> ## How it works Upstack runs as a dual-tracking layer alongside the TikTok Pixel. The Upstack Pixel captures events in the browser and forwards each event to Upstack's edge infrastructure, where it is hashed, enriched with identity and click-ID data, and sent to the TikTok Events API as a server-side event with a shared `event_id`. TikTok deduplicates server events against matching browser Pixel events using that `event_id`, so you do not double-count conversions as long as both sources use the same Pixel ID. PII (`email`, `phone`, `external_id`) is hashed with SHA-256 before delivery, as required by the Events API. ## Setup guides <CardGroup> <Card title="Onboarding guide" icon="route" href="/destinations/catalog/tiktok/complete-how-to-guide-for-onboarding-tiktok-ads-in-upstack-data"> End-to-end walkthrough for connecting TikTok to Upstack Data. </Card> <Card title="Configure pixel destination" icon="sliders" href="/destinations/catalog/tiktok/how-to-configure-tiktok-ads-pixel-destination-in-upstack-data"> Configure the TikTok Pixel destination inside Upstack Data. </Card> <Card title="Find Pixel ID" icon="magnifying-glass" href="/destinations/catalog/tiktok/how-to-find-your-tiktok-ads-pixel-id"> Locate your existing TikTok Pixel ID in Events Manager. </Card> <Card title="Create Pixel ID" icon="plus" href="/destinations/catalog/tiktok/how-to-create-new-tiktok-ads-pixel-id"> Create a new TikTok Pixel for your store. </Card> <Card title="Generate API token" icon="key" href="/destinations/catalog/tiktok/how-to-generate-your-tiktok-api-access-token"> Generate the Events API access token Upstack uses to send events. </Card> <Card title="Disable Shopify TikTok data sharing" icon="ban" href="/destinations/catalog/tiktok/how-to-disable-tiktok-data-sharing-in-shopify"> Turn off Shopify's native TikTok integration to prevent duplicate events. </Card> </CardGroup> ## Event mapping Upstack maps storefront events to TikTok standard events automatically: | Upstack event | TikTok event | Key parameters | Notes | | ------------------ | ------------------ | ------------------------------------------------- | ------------------------------------------------------ | | `PageView` | `ViewContent` | `url`, `referrer` | TikTok has no generic PageView — mapped to ViewContent | | `ViewContent` | `ViewContent` | `content_id`, `content_type`, `value`, `currency` | Product page views | | `AddToCart` | `AddToCart` | `content_id`, `content_type`, `value`, `currency` | Cart additions with product details | | `InitiateCheckout` | `InitiateCheckout` | `value`, `currency`, `quantity` | Checkout started | | `Purchase` | `CompletePayment` | `content_id`, `value`, `currency`, `order_id` | Completed orders with revenue | Every event includes user data parameters (`email`, `phone`, `external_id`) when available, hashed with SHA-256. TikTok click IDs (`ttclid`) captured by the Upstack Pixel are included for deterministic matching. ## FAQ <AccordionGroup> <Accordion title="How do I know events are reaching TikTok?"> Open TikTok Events Manager, select your Pixel, and check the **Overview** and **Test Events** tabs. Server-side events appear with a "Server" source badge, typically within 5–10 minutes of storefront activity. Upstack also surfaces delivery status inside the destination settings. </Accordion> <Accordion title="Will I see duplicate conversions if I run both the TikTok Pixel and the Events API?"> No — as long as the Pixel ID in Upstack matches the Pixel ID firing in your storefront's TikTok browser Pixel (`ttq.load`). Upstack sends a shared `event_id` on every server-side event, and TikTok's deduplication logic matches events by `event_id` and keeps only one. If you see duplicates, the Pixel IDs almost always differ between the two sources. </Accordion> <Accordion title="What if my event match rate is low?"> TikTok's match rate depends on how much identity data each event carries. Common causes of low match quality: * **Missing `ttclid`** — TikTok ads should link directly to your storefront so the click ID lands in the URL and is captured by the Upstack Pixel. * **Anonymous visitors** — events from visitors without email or phone have fewer keys to match against. Match rates improve as more identified customers convert. * **Missing checkout fields** — make sure your Shopify checkout collects email and phone; both are strong server-side match keys. </Accordion> <Accordion title="Do I need to disable Shopify's native TikTok integration?"> Yes — if Shopify is also sending events to the same TikTok Pixel, you'll see duplicates that TikTok cannot deduplicate (Shopify does not emit a matching `event_id`). Follow the guide above to disable TikTok data sharing in Shopify before activating Upstack's TikTok destination. </Accordion> <Accordion title="Can I send only specific event types to TikTok?"> Yes. Each destination supports event filtering — you can choose to forward only purchases, only standard events, or any custom subset. Excluded events are dropped at the Upstack level and are not retried. </Accordion> </AccordionGroup> ## Advanced configuration <Accordion title="TikTok Shop orders"> If you sell through TikTok Shop, those orders flow into Shopify as fulfilled orders. Upstack processes them like any other Shopify order, which means they get sent to all your active destinations — including Meta. **Should you exclude TikTok Shop orders from other destinations?** Upstack gives you the option via **Settings → Order Source Exclusions**, where you can block orders by source. However, sending TikTok Shop orders to Meta is generally beneficial — more conversion data helps Meta's algorithm find similar high-value customers, regardless of where the original purchase happened. If you still want to exclude them: 1. Go to **Upstack → Settings → Order Source Exclusions**. 2. Add TikTok Shop as a blocked source. 3. Orders originating from TikTok Shop will no longer fire to other destinations. </Accordion> ## Troubleshooting <AccordionGroup> <Accordion title="Events not appearing in TikTok Events Manager"> If events aren't appearing after 10 minutes of confirmed store traffic, check the basics first. **Steps to fix:** 1. Go to **Integrations → Destinations → TikTok** 2. Verify the **Pixel ID** and **Access Token** are correct (no extra spaces or truncated characters) 3. Confirm the destination status is Active (green) 4. If the token was revoked or expired, generate a new one in TikTok Business Center and update the destination </Accordion> <Accordion title="Duplicate conversions in TikTok"> If you see inflated conversion counts, another TikTok event source is likely still active. **Steps to fix:** 1. Check for the TikTok Shopify sales channel — disable its data sharing / pixel component 2. Look for third-party pixel apps (Omega, Mega TikTok Pixel) and uninstall them 3. Inspect your theme code for manual TikTok pixel snippets in the `<head>` section 4. After removing duplicate sources, monitor TikTok Events Manager for 24 hours to confirm counts normalize </Accordion> <Accordion title="Low match quality scores"> TikTok's match quality measures how well server events match to TikTok users. **Common causes:** * **High anonymous traffic** — Events from visitors who haven't logged in or provided contact info have fewer matching parameters. Match quality improves as more identified customers generate events. * **Incorrect pixel ID** — If the pixel ID doesn't match the one associated with your ad account, events arrive but can't be matched to campaign data. Match quality typically improves over 1–2 weeks as Upstack's identity resolution builds visitor profiles. </Accordion> </AccordionGroup> <Note> For additional troubleshooting beyond TikTok-specific issues, see [Troubleshooting: Events Not Reaching Destination](/troubleshooting/destination-shows-disconnected). </Note> ## Related <CardGroup> <Card title="Conversion API forwarding" icon="lightbulb" href="/concepts/conversion-api-forwarding"> How Upstack Signal forwards events to ad platforms via server-to-server APIs. </Card> <Card title="Identity resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack matches anonymous visitors to known customers for higher match rates. </Card> <Card title="Meta CAPI destination" icon="meta" href="/destinations/catalog/meta-capi"> Set up Meta's Conversions API as another server-side destination alongside TikTok. </Card> <Card title="Events not reaching destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # Complete How-To Guide for Onboarding TikTok Ads in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/tiktok/complete-how-to-guide-for-onboarding-tiktok-ads-in-upstack-data Onboard TikTok Ads in Upstack Data — locate your TikTok Pixel ID, generate the API access token, configure the destination, and disable Shopify's duplicate TikTok sales channel pixel. <Info> **New to Upstack?** Follow the [getting started guide](/quickstart/install-on-shopify) for a streamlined onboarding walkthrough. </Info> <Tip> **Quick Summary** * Create and configure the **TikTok Ads destination** in the Upstack dashboard with browser Pixel and Conversions API (CAPI). * **Disable TikTok Sales Channel data sharing in Shopify** to prevent duplicate events. * **Monitor** Event Match Quality improvements over 7–10 days. * Expect a **1–2 point increase** on upper-funnel events. * **Ignore "Update Recommended"** warnings — they are normal and require no action. </Tip> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to your **TikTok Business Center** * A **TikTok Pixel** configured in TikTok Events Manager (or follow [How to Create New TikTok Ads Pixel ID →](/destinations/catalog/tiktok/how-to-create-new-tiktok-ads-pixel-id) first) * Admin access to your **Shopify** store (to disable the TikTok Sales Channel data sharing) <Steps> <Step title="Create and Configure TikTok Ads Pixel Destination in Upstack Data"> <Note> **Purpose:** Enable Upstack Data to send data via browser pixel and CAPI to TikTok Ads for improved tracking accuracy. </Note> Help guide to complete this step: [How to Configure TikTok Ads Pixel Destination in Upstack Data →](/destinations/catalog/tiktok/how-to-configure-tiktok-ads-pixel-destination-in-upstack-data) </Step> <Step title="Disable TikTok Sales Channel Data Sharing in Shopify"> <Warning> You must disable all other TikTok Ads Pixels/Integrations to prevent duplicate conversions and events. </Warning> Help guide to complete this step: [How to Disable TikTok Data Sharing in Shopify →](/destinations/catalog/tiktok/how-to-disable-tiktok-data-sharing-in-shopify) </Step> </Steps> ## What to Expect After Setup ### Event Match Quality Timeline * **Days 1-3: Initial Improvement** * Event Match Quality scores begin improving * Data starts flowing through both pixel and CAPI * **Days 7-10: Normalization** * Scores stabilize at improved levels * Full benefit of dual tracking realized ### Expected Score Improvements * **Upper/Mid-Funnel Events (1-2 point increase typical):** * **Page View** - Better user matching * **View Content** - Improved product tracking * **Add to Cart** - Enhanced cart data * **Purchase Event:** * **No change expected** - Already optimized since all customer data (email, name, address) is sent at purchase ### Normal Warnings **"Update Recommended" Notifications** * You may see warnings in TikTok Events Manager showing **"Update Recommended"** next to events. <Note> **This is NORMAL and NO ACTION is needed.** These appear because: * TikTok detects configuration changes * The system recognizes new data sources * The integration method has changed </Note> ## Verify the Setup After completing both steps: * In the Upstack dashboard, navigate to **Events Destination** at [app.upstackdata.com/pixel/event-destinations](https://app.upstackdata.com/pixel/event-destinations) and confirm the TikTok destination shows as **Healthy**. * In [TikTok Events Manager](https://ads.tiktok.com/i18n/events_manager/home), open your **UpstackData** Pixel and confirm events are arriving via both **Browser** and **Server (CAPI)**. * Place a test order on your store and confirm the **Purchase** event appears in TikTok Events Manager within a few minutes. If the destination shows **Unhealthy** or events do not arrive, double-check the **Pixel ID** and **Access Token** values, then contact Upstack Data support if issues persist. # How to Configure TikTok Ads Pixel Destination in Upstack Data Source: https://docs.upstackdata.com/destinations/catalog/tiktok/how-to-configure-tiktok-ads-pixel-destination-in-upstack-data Configure the TikTok Ads destination in Upstack Data with your Pixel ID and API access token to enable dual tracking via browser pixel and server-side Events API for higher match quality. <Tip> **Quick Summary** * Sign in to the Upstack dashboard and click **"+ New Destination"**. * Select **TikTok** from the destination options. * Enter your **TikTok Pixel ID** and **Access Token**. * Paste your **API access token** for server-side tracking. * Click **Create Configuration** to activate the integration. </Tip> ## Tracking Method <Note> **Tracking Method** is set to **Browser + Server** by default, and this is the recommended way to run TikTok: Upstack loads the TikTok Pixel on your storefront and also sends events server-side, and the two copies are deduplicated. If you don't want to load the TikTok Pixel in the browser, switch the Tracking Method to **Server**. See [Tracking Method](/concepts/tracking-method). </Note> ## Prerequisites Before you start, you need: * An active Upstack Data account ([sign up](https://app.upstackdata.com)) * Admin access to your **TikTok Business Center** * A **TikTok Pixel** configured under **Events Manager → Data sources** (see [How to Create New TikTok Ads Pixel ID →](/destinations/catalog/tiktok/how-to-create-new-tiktok-ads-pixel-id)) * Your **TikTok Pixel ID** ([How to Find your TikTok Ads Pixel ID →](/destinations/catalog/tiktok/how-to-find-your-tiktok-ads-pixel-id)) * A generated **Access Token** ([How to Generate Your TikTok API Access Token →](/destinations/catalog/tiktok/how-to-generate-your-tiktok-api-access-token)) ## Configuration Steps <Steps> <Step title="Sign in to Upstack Data"> Sign in to Upstack Data at [app.upstackdata.com](https://app.upstackdata.com). </Step> <Step title="Add a new TikTok destination"> * In the Upstack dashboard, navigate to **Events Destination** ([app.upstackdata.com/pixel/event-destinations](https://app.upstackdata.com/pixel/event-destinations)) * Click **"+ New Destination"** in the top-right corner of the page <img alt="Add New Destination" /> * In the **Select a Destination** popup, click **"TikTok"** * Click **Next** <img alt="Select Tiktok Ads destination" /> </Step> <Step title="Enter your Pixel ID and Access Token"> Fill in the form fields: 1. **TikTok Pixel ID** — 20-character alphanumeric string (e.g., `C2A3B4C5D6E7F8G9H0I1`). Also called the Dataset ID. 2. **Access Token** — long alphanumeric string starting with letters/numbers, generated from TikTok Events Manager <img alt="TikTok destination form with Pixel ID and Access Token fields" /> <Note> ***Need help finding these?*** **[How to Find your TikTok Ads Pixel ID →](/destinations/catalog/tiktok/how-to-find-your-tiktok-ads-pixel-id)** **[How to Generate Your TikTok API Access Token →](/destinations/catalog/tiktok/how-to-generate-your-tiktok-api-access-token)** </Note> </Step> <Step title="Create the configuration"> Click the **Create Configuration** button. <img alt="Create Configuration button to save TikTok destination" /> <Note> **Success! 🎉** You should see a confirmation message and the TikTok destination will appear as **"Healthy"** in your destinations list. </Note> </Step> </Steps> ## Verify the Setup To confirm the destination is working: * In the Upstack dashboard, the TikTok destination should show **Healthy** status under **Events Destination**. * In [TikTok Events Manager](https://ads.tiktok.com/i18n/events_manager/home), open your Pixel and confirm events are arriving via both **Browser** and **Server (CAPI)**. * Place a test order on your store and check that the **Purchase** event appears in TikTok Events Manager within a few minutes. If the destination shows **Unhealthy** or no events arrive, double-check that: * The **Pixel ID** is exactly 20 characters with no spaces. * The **Access Token** was copied immediately after generation (TikTok shows it only once) and contains no leading or trailing spaces. If issues persist, contact Upstack Data support. # How to Create New TikTok Ads Pixel ID Source: https://docs.upstackdata.com/destinations/catalog/tiktok/how-to-create-new-tiktok-ads-pixel-id Create a new TikTok Ads Pixel ID in TikTok Ads Manager to track website conversions, measure ad performance, and feed Upstack Data's TikTok Events API destination. <Tip> **Quick Summary** * In TikTok Events Manager, click **"+ Connect data source"**. * Select **Web** as the data source type. * Name your Pixel **"UpstackData"**. * Enter your website URL and complete setup. </Tip> ## Prerequisites Before you start, you need: * Admin access to your **TikTok Business Center** * A **TikTok Ads Manager** account linked to your Business Center * The URL of the website where the Pixel will be installed ## Pixel Creation Process <Steps> <Step title="Sign in to TikTok Events Manager"> * Sign in to [TikTok Events Manager](https://ads.tiktok.com/i18n/events_manager/home) * In the top navigation, click **Tools → Events** <img alt="TikTok Ads Manager with Tools and Events menu options" /> </Step> <Step title="Start creating a new Pixel"> * In TikTok Events Manager, click **"+ Connect data source"** in the upper-left corner of the page (or the **Connect Data Sources** button in the center of the screen if no data sources exist yet) * Select **Web** and click **Next** <img alt="Connect data source button in TikTok Events Manager" /> <img alt="Select Web as data source type" /> </Step> <Step title="Name your Pixel"> * Set the Pixel name to **"UpstackData"** * Click **Create** <img alt="Pixel name field with UpstackData entered" /> </Step> <Step title="Add your website"> * Enter your business website URL * Click **Next** <img alt="Website URL input field for TikTok Pixel setup" /> </Step> <Step title="Finish the Pixel setup"> * Choose an installation method (partner integration or manual code) * Configure tracking events * Install the Pixel code on your website * Verify the Pixel code using TikTok's Pixel Helper or TikTok Events Manager * When everything is confirmed, click **Finish** to complete setup <img alt="Finish button to complete TikTok Pixel setup" /> <Note> Your new TikTok Pixel is ready to integrate with Upstack Data. </Note> </Step> </Steps> ## Verify the Setup To confirm the Pixel was created: * In TikTok Events Manager, navigate to **Tools → Events → Data sources** — your **UpstackData** Pixel should appear in the list. * Open the Pixel and confirm it has a **Pixel ID** (a 20-character alphanumeric string, e.g., `C2A3B4C5D6E7F8G9H0I1`). Next steps: * [How to Find your TikTok Ads Pixel ID →](/destinations/catalog/tiktok/how-to-find-your-tiktok-ads-pixel-id) * [How to Generate Your TikTok API Access Token →](/destinations/catalog/tiktok/how-to-generate-your-tiktok-api-access-token) If the Pixel does not appear after creation, refresh the page or contact Upstack Data support. # How to Disable TikTok Data Sharing in Shopify Source: https://docs.upstackdata.com/destinations/catalog/tiktok/how-to-disable-tiktok-data-sharing-in-shopify Disable Shopify's TikTok sales channel pixel to stop duplicate TikTok conversion events and let Upstack Data deliver clean server-side conversions to TikTok Events API. <Tip> **Quick Summary** * Sign in to your Shopify admin and open the **Sales channels** menu. * Open the **TikTok** sales channel and click **Settings**. * In **Data sharing → Customer Data Sharing**, click **Disconnect** on the connected TikTok Pixel. * Confirm the disconnection in the popup. </Tip> ## Prerequisites Before you start, you need: * Admin access to your **Shopify** store * The **TikTok** sales channel installed in Shopify with an active TikTok Pixel connection * Your Upstack Data TikTok destination already configured ([How to Configure TikTok Ads Pixel Destination in Upstack Data →](/destinations/catalog/tiktok/how-to-configure-tiktok-ads-pixel-destination-in-upstack-data)) <Warning> Duplicate TikTok events typically occur when multiple TikTok Pixel integrations are active on your site. You must disable TikTok Sales Channel data sharing and ensure no other TikTok Pixel apps are installed. </Warning> ## Steps to Disable TikTok Data Sharing in Shopify <Steps> <Step title="Sign in to Shopify"> Sign in to your [Shopify admin](https://admin.shopify.com/). </Step> <Step title="Open the TikTok sales channel settings"> * In the Shopify admin sidebar, click **Sales channels** * Select **TikTok**, then click the **Settings** tab *Tip: You can also use the Shopify admin search to locate the TikTok sales channel.* <img alt="Shopify sidebar with TikTok Sales Channel Settings" /> <img alt="TikTok sales channel Settings tab in Shopify admin" /> </Step> <Step title="Open Data sharing"> In the TikTok sales channel settings, click the **Data sharing** tab in the left-hand menu. <img alt="Share Data section with Disconnect button" /> </Step> <Step title="Disconnect the TikTok Pixel"> * Scroll to the **Customer Data Sharing** section and locate your connected TikTok Pixel * Click the **Disconnect** button <img alt="Customer Data Sharing section showing connected TikTok Pixel with Disconnect button" /> </Step> <Step title="Confirm the disconnection"> * A confirmation window appears explaining how disconnecting the Pixel affects tracking * Click **Disconnect** again in the lower-right corner to confirm <img alt="Disconnect confirmation popup for TikTok Pixel" /> </Step> </Steps> ## Verify the Setup To confirm data sharing is disabled: * Return to **Sales channels → TikTok → Settings → Data sharing** in Shopify and confirm the **Customer Data Sharing** section no longer shows a connected Pixel. * Place a test order on your store and check [TikTok Events Manager](https://ads.tiktok.com/i18n/events_manager/home) — you should see exactly **one** Purchase event arriving from your Upstack Data integration (not duplicates). If duplicate events continue: * Check the Shopify **Apps** menu for any other TikTok Pixel apps and remove them. * Inspect your theme for hard-coded TikTok Pixel snippets and remove them. <Note> **Need help?** If you encounter any issues, contact our support team and we'll help diagnose the problem. </Note> # How to Find your TikTok Ads Pixel ID Source: https://docs.upstackdata.com/destinations/catalog/tiktok/how-to-find-your-tiktok-ads-pixel-id Find your TikTok Ads Pixel ID in TikTok Ads Manager — required to configure the Upstack Data TikTok destination for server-side conversion forwarding via TikTok Events API. <Tip> **Quick Summary** * Sign in to TikTok Events Manager. * Open **Data sources** and select your **UpstackData** Pixel. * Copy the **Pixel ID** displayed on the Pixel overview page (a 20-character alphanumeric string). </Tip> ## Prerequisites Before you start, you need: * Admin access to your **TikTok Business Center** * A **TikTok Pixel** already created (see [How to Create New TikTok Ads Pixel ID →](/destinations/catalog/tiktok/how-to-create-new-tiktok-ads-pixel-id) if you haven't created one yet) ## What is a TikTok Pixel ID? <Note> A **TikTok Pixel ID** is a unique identifier automatically assigned to your TikTok Pixel when you create it in TikTok Events Manager. </Note> Its purpose is to: * **Identify your Pixel** and connect it to the correct TikTok ad account and campaigns * **Track user actions on your website** such as views, clicks, sign-ups, and purchases * **Send event data back to TikTok Events Manager** for reporting, audience creation, and optimization * **Improve attribution and targeting** by linking website activity to your TikTok ads ## Configuration Steps <Steps> <Step title="Sign in to TikTok Events Manager"> * Sign in to [TikTok Events Manager](https://ads.tiktok.com/i18n/events_manager/home) * In the top navigation, click **Tools → Events** <img alt="TikTok Ads Manager with Tools and Events menu options" /> </Step> <Step title="Open your UpstackData Pixel"> * In TikTok Events Manager, click **Data sources** in the left-hand menu * Find your **UpstackData** Pixel in the list and click its name to open the Pixel overview page <img alt="TikTok Events Manager Data sources menu in left sidebar" /> <img alt="UpstackData Pixel listed in TikTok Data sources" /> <Note> **Note:** If you haven't created a Pixel yet, see [How to Create New TikTok Ads Pixel ID →](/destinations/catalog/tiktok/how-to-create-new-tiktok-ads-pixel-id) first. </Note> </Step> <Step title="Copy your Pixel ID"> * On the Pixel overview page, locate the **Pixel ID** at the top of the page (next to the Pixel name) * Click the copy icon to copy the **Pixel ID** to your clipboard * Paste it into the **TikTok Pixel ID** field in the Upstack dashboard at [app.upstackdata.com/pixel/event-destinations](https://app.upstackdata.com/pixel/event-destinations) <img alt="TikTok Pixel overview page showing Pixel ID with copy button" /> <Note> **Format:** The Pixel ID is a 20-character alphanumeric string (e.g., `C2A3B4C5D6E7F8G9H0I1`). </Note> </Step> </Steps> ## Verify the Setup To confirm you copied the correct value: * The **Pixel ID** should be exactly 20 characters with no spaces. * In the Upstack dashboard, after saving the destination it should show as **Healthy** under **Events Destination**. <Note> **Next step:** [How to Generate Your TikTok API Access Token →](/destinations/catalog/tiktok/how-to-generate-your-tiktok-api-access-token) </Note> # How to Generate Your TikTok API Access Token Source: https://docs.upstackdata.com/destinations/catalog/tiktok/how-to-generate-your-tiktok-api-access-token Generate a TikTok Events API access token in TikTok Ads Manager — required to authenticate the Upstack Data TikTok destination and sync server-side conversions and ads data. <Tip> **Quick Summary** * Sign in to TikTok Events Manager. * Open **Data sources** and select your **UpstackData** Pixel. * Open the **Settings** tab and scroll to **Events API**. * Click **"Generate access token"**. * Copy the **Access Token** immediately — it is shown only once. </Tip> ## Prerequisites Before you start, you need: * Admin access to your **TikTok Business Center** * A **TikTok Pixel** already created (see [How to Create New TikTok Ads Pixel ID →](/destinations/catalog/tiktok/how-to-create-new-tiktok-ads-pixel-id)) * Permission to manage Events API settings on the Pixel ## What is a TikTok Access Token? <Note> A **TikTok Access Token** is a secure credential that lets platforms like Upstack Data connect to your TikTok Ads account to sync performance data, enable server-side tracking via the Conversions API (CAPI), and improve attribution and optimization. </Note> ## Configuration Steps <Steps> <Step title="Sign in to TikTok Events Manager"> * Sign in to [TikTok Events Manager](https://ads.tiktok.com/i18n/events_manager/home) * In the top navigation, click **Tools → Events**, then open **Data sources** * Click your **UpstackData** Pixel to open its overview page <img alt="TikTok Events Manager showing Data sources with UpstackData Pixel" /> <Note> **Note:** If you haven't created a Pixel yet, see [How to Create New TikTok Ads Pixel ID →](/destinations/catalog/tiktok/how-to-create-new-tiktok-ads-pixel-id) first. </Note> </Step> <Step title="Open the Settings tab"> On the Pixel overview page, click the **Settings** tab. <img alt="TikTok Pixel Settings tab in the overview page" /> </Step> <Step title="Generate the Access Token"> On the **Settings** tab: * Scroll down to the **Events API** section * Click the **"Generate access token"** button <img alt="Events API section with Generate access token button" /> </Step> <Step title="Copy your Access Token"> * Click the copy icon next to the generated **Access Token** — it is a long alphanumeric string starting with letters/numbers * Paste it into the **Access Token** field in the Upstack dashboard at [app.upstackdata.com/pixel/event-destinations](https://app.upstackdata.com/pixel/event-destinations) <img alt="Generated TikTok access token with copy button" /> <Warning> The Access Token is shown **only once**. Copy and store it securely immediately. If you lose it, you'll need to generate a new one. </Warning> </Step> </Steps> ## Verify the Setup To confirm the Access Token works: * In the Upstack dashboard, after saving your TikTok destination it should show as **Healthy** under **Events Destination**. * In TikTok Events Manager, return to the Pixel **Settings → Events API** section — the token should be listed as active. If the destination is **Unhealthy**: * Re-check that the **Access Token** was pasted with no leading or trailing spaces. * Confirm the **Pixel ID** matches the Pixel that owns the token. * Generate a new token if needed and update it in the Upstack dashboard. <Note> **Need to find your Pixel ID?** See [How to Find your TikTok Ads Pixel ID →](/destinations/catalog/tiktok/how-to-find-your-tiktok-ads-pixel-id). </Note> # Webhooks (deprecated) Source: https://docs.upstackdata.com/destinations/catalog/webhooks The Webhooks destination has been deprecated and is not currently available for new connections. <Warning> **This destination is not available right now.** The Webhooks destination is not available for new setups. If you already have a webhook destination configured, it will continue to function. </Warning> <Note> **Data direction:** This is a **destination** — Upstack sends event and conversion data **out** to this platform via server-side APIs. </Note> ## What it does The webhook destination delivers Upstack events as JSON payloads to any HTTPS endpoint you control. Use it to feed data warehouses, trigger internal workflows, connect platforms Upstack does not support natively, or build custom integrations on top of Upstack's enriched event stream. Every event Upstack captures — including identity-resolved customer data and attribution context — can be delivered to your endpoint in near real-time. Webhooks give you the same enriched event payload that powers Upstack's native destinations, with full schema control on your side. ## How it works Webhook deliveries are HTTP POST requests with a JSON body. Upstack signs each request with HMAC-SHA256 using a per-destination signing secret, so your endpoint can verify the payload originated from Upstack and was not tampered with. Each delivery includes standard headers (`X-Upstack-Event-Id`, `X-Upstack-Event-Type`, `X-Upstack-Signature`, `X-Upstack-Timestamp`) for routing, deduplication, and signature verification. Delivery is at-least-once with a 10-second timeout per attempt and up to 5 retries with exponential backoff (1s, 5s, 30s, 2m, 10m). Events are delivered in approximate chronological order, but strict ordering is not guaranteed — your endpoint should be idempotent and use the `event_id` to deduplicate. ## Setup guides Webhook setup is configured directly in Upstack's destination settings — endpoint URL, event filter, headers, and signing secret. There are no platform-side credentials to provision. <CardGroup> <Card title="Standard events reference" icon="bolt" href="/event-tracking/event-taxonomy/standard-events"> Full reference for all event types and properties included in webhook payloads. </Card> <Card title="Properties and context" icon="list" href="/event-tracking/event-taxonomy"> Complete list of event properties and context fields available in every payload. </Card> </CardGroup> ## Payload format Every webhook delivery is an HTTP POST with a JSON body that follows Upstack's standard event schema: ```json theme={null} { "event_id": "evt_abc123def456", "event_type": "Purchase", "timestamp": "2026-02-18T14:32:01.000Z", "pixel_id": "px_your_pixel_id", "session_id": "sess_789xyz", "user": { "anonymous_id": "anon_456def", "customer_id": "cust_123abc", "email_hash": "sha256:a1b2c3...", "phone_hash": "sha256:d4e5f6..." }, "properties": { "order_id": "1234", "value": 89.99, "currency": "USD", "items": [ { "product_id": "prod_001", "title": "Classic T-Shirt", "variant_id": "var_001", "price": 29.99, "quantity": 3 } ] }, "context": { "page_url": "https://your-store.myshopify.com/checkout", "referrer": "https://www.google.com", "user_agent": "Mozilla/5.0...", "ip": "203.0.113.42", "utm_source": "google", "utm_medium": "cpc", "utm_campaign": "summer-sale" }, "attribution": { "source": "google", "medium": "cpc", "campaign": "summer-sale", "click_ids": { "gclid": "abc123", "fbclid": null, "ttclid": null } } } ``` PII fields (`email_hash`, `phone_hash`) are delivered as SHA-256 hashes by default. Raw (unhashed) PII delivery is available for endpoints you own and is subject to your data processing agreement. ### Delivery headers | Header | Value | Description | | ---------------------- | ------------------ | --------------------------------------- | | `Content-Type` | `application/json` | Payload format | | `X-Upstack-Event-Id` | `evt_abc123...` | Unique event ID for deduplication | | `X-Upstack-Event-Type` | `Purchase` | Event type | | `X-Upstack-Signature` | `sha256=...` | HMAC signature for payload verification | | `X-Upstack-Timestamp` | `1708266721` | Unix timestamp of delivery attempt | ## FAQ <AccordionGroup> <Accordion title="What does Upstack guarantee about delivery?"> Webhooks use **at-least-once** delivery. Each request has a 10-second timeout and up to 5 retries with exponential backoff (1s, 5s, 30s, 2m, 10m). After all retries fail, the event is logged as a failed delivery in your dashboard's delivery log. In rare cases (network timeouts, retries) your endpoint may receive the same event more than once — deduplicate using the `event_id` field or the `X-Upstack-Event-Id` header. </Accordion> <Accordion title="How do I verify a webhook payload actually came from Upstack?"> Every delivery includes an `X-Upstack-Signature` header containing an HMAC-SHA256 signature of the raw request body, computed with your destination's signing secret. Recompute the signature on your end over the **raw** (un-parsed, un-reformatted) request body and compare using a constant-time comparison. If the signatures match, the payload is authentic. The signing secret is shown once when you create the destination — store it securely; it can only be regenerated, not retrieved. </Accordion> <Accordion title="Can I receive only certain event types?"> Yes. Each webhook destination supports event filtering — choose all events, standard events only, or any custom subset. Excluded events are dropped at the Upstack level and are not retried. </Accordion> <Accordion title="My endpoint is timing out. What should I do?"> Accept the request immediately (return `200`) and process the payload asynchronously. The 10-second timeout is end-to-end — including any work your endpoint does before responding. The standard pattern is: validate signature, enqueue the payload to your own queue, return `200`, then process the payload separately. </Accordion> <Accordion title="Does the endpoint URL need to be HTTPS?"> Yes. HTTP endpoints are not supported. Your endpoint must be publicly reachable (Upstack delivers from its cloud infrastructure) and serve a valid TLS certificate. </Accordion> </AccordionGroup> ## Related <CardGroup> <Card title="Standard events reference" icon="bolt" href="/event-tracking/event-taxonomy/standard-events"> Full reference for all event types and properties included in webhook payloads. </Card> <Card title="Properties and context" icon="list" href="/event-tracking/event-taxonomy"> Complete list of event properties and context fields available in every payload. </Card> <Card title="Destinations overview" icon="arrow-right-from-bracket" href="/destinations/catalog/overview"> How Upstack delivers events to all destination types. </Card> <Card title="Events not reaching destination" icon="wrench" href="/troubleshooting/destination-shows-disconnected"> End-to-end diagnostic guide when events aren't arriving at any destination. </Card> </CardGroup> # Event Tracking Source: https://docs.upstackdata.com/event-tracking How Upstack Data captures ecommerce events — browser pixel, Shopify webhooks, and server-side API — and how the event taxonomy organizes them for attribution and destination forwarding. Event tracking is the foundation of everything Upstack Data does: every metric, attribution model, and destination forward starts with a captured event. Upstack captures events from three surfaces: * **Browser** — the [Upstack pixel](/pixel/setup) fires standard events like `page_view`, `add_to_cart`, and `purchase` as shoppers browse your store. * **Shopify** — automatic webhooks feed server-side `purchase` and `refund` events without any browser dependency. * **Server-side** — the [Events API](/api-reference/introduction) and the [`upstack` CLI](/cli/install) ingest events from your own backend. Every captured event flows through the same pipeline: identity resolution, enrichment (click IDs, UTMs, order data), and forwarding to your configured [destinations](/destinations/catalog/overview). ## The event taxonomy All events Upstack recognizes are organized in the [Event Taxonomy](/event-tracking/event-taxonomy): * [Standard Events](/event-tracking/event-taxonomy/standard-events) — the 27 predefined ecommerce and lead-gen events every destination understands. * [Custom Events](/event-tracking/event-taxonomy/custom-events) — your own events beyond the standard set. * [Upstack-Generated Events](/event-tracking/event-taxonomy/upstack-generated) — backend-derived events like `nc_purchase` and AOV-tier purchases. * [Quiz Events](/event-tracking/event-taxonomy/quiz-events) — quiz funnel tracking. * [SaaS Events](/event-tracking/event-taxonomy/saas-events) — subscription lifecycle, trials, payments, and seat management for B2B. * [Event Properties](/event-tracking/event-taxonomy/properties) — the fields every event accepts, from `value` and `currency` to the `items` array. ## Next steps * Install the pixel with [Pixel Setup](/pixel/setup). * Send events from your own code with the [JavaScript SDK](/pixel/javascript-sdk). * Query tracked events with the [Analytics API](/api-reference/introduction). # Event Taxonomy Source: https://docs.upstackdata.com/event-tracking/event-taxonomy Reference for the Upstack Data event model — 27 standard events, how they flow from capture through identity resolution and enrichment to destination forwarding. Every interaction a customer has with your website generates an event. Upstack Data captures these events server-side, enriches them with identity and product data, and forwards them to your configured destinations. <Tip> Upstack tracks 27 standard events. **Shopify stores** see events tracked automatically via the theme app extension. **Custom implementations** (headless, GTM, non-Shopify platforms) can fire the same events using the [JavaScript SDK](/pixel/javascript-sdk). </Tip> ## How Events Are Captured The **Upstack Pixel** is a lightweight JavaScript snippet that runs on your website. When a visitor performs an action — viewing a page, adding a product to cart, completing a purchase — the pixel fires an event to the Upstack edge API. <Note> **Shopify stores:** The pixel is injected automatically via the theme app extension. **Custom implementations:** Add the pixel snippet to your site's `<head>` — see [Pixel Setup](/pixel/setup). </Note> From there, events flow through a four-stage pipeline: 1. **Capture** — Upstack Pixel detects the interaction and sends a structured event payload to the Cloudflare edge API. 2. **Resolve** — Upstack ID attaches identity data (email, phone, cookie, device) to the event, linking anonymous sessions to known customers. 3. **Enrich** — Product catalog data, UTM parameters, and click IDs are merged into the event. 4. **Activate** — The enriched event is forwarded to each configured destination (Meta CAPI, TikTok, Klaviyo, GA4, etc.) in the format each platform expects. ## Standard Event Taxonomy Standard events have well-defined names, properties, and semantics that all destinations understand. Using standard events ensures compatibility across your entire marketing stack. ### Page & Browse Events | Event Name | When It Fires | Key Properties | | -------------------- | -------------------------------------------------------- | ------------------------------------- | | **page\_view** | Every page load | `pageUrl`, `pageTitle`, `referrer` | | **view\_content** | Product page viewed | `items`, `value`, `currency` | | **view\_category** | Collection or category page viewed | `items`, `value`, `currency` | | **view\_item\_list** | Product list displayed (search results, recommendations) | `items`, `listId`, `listName` | | **view\_cart** | Cart page viewed | `items`, `value`, `currency` | | **search** | Site search performed | `searchTerm`, `resultsCount`, `items` | ### Cart Events | Event Name | When It Fires | Key Properties | | -------------------------------- | ---------------------- | ---------------------------- | | **add\_to\_cart** | Item added to cart | `items`, `value`, `currency` | | **product\_removed\_from\_cart** | Item removed from cart | `items`, `value`, `currency` | | **add\_to\_wishlist** | Item added to wishlist | `items`, `value`, `currency` | ### Checkout Events | Event Name | When It Fires | Key Properties | | ---------------------------- | ------------------------ | -------------------------------------------- | | **initiate\_checkout** | Checkout flow started | `items`, `value`, `currency` | | **add\_shipping\_info** | Shipping details entered | `items`, `value`, `currency`, `shippingTier` | | **select\_shipping\_method** | Shipping method selected | `items`, `value`, `currency`, `shippingTier` | | **add\_payment\_info** | Payment method entered | `items`, `value`, `currency`, `paymentType` | ### Order Events | Event Name | When It Fires | Key Properties | | ------------ | -------------------------------- | ---------------------------------------------------------- | | **purchase** | Order completed | `orderId`, `items`, `value`, `currency`, `tax`, `shipping` | | **refund** | Order refunded (full or partial) | `orderId`, `items`, `value`, `currency` | ### Conversion Events | Event Name | When It Fires | Key Properties | | ----------------------- | ------------------------- | ---------------------------------- | | **lead** | Lead form submitted | `value`, `currency`, `leadType` | | **subscribe** | Email or SMS subscription | `value`, `currency` | | **trial\_started** | Free trial initiated | `value`, `currency`, `trialLength` | | **contact** | Contact form submitted | `value`, `currency` | | **book\_call** | Call or demo booked | `value`, `currency` | | **schedule** | Appointment scheduled | `value`, `currency` | | **submit\_application** | Application submitted | `value`, `currency` | ### Account Events | Event Name | When It Fires | Key Properties | | -------------------------- | ----------------------------------- | ------------------- | | **complete\_registration** | Account created (post-verification) | `value`, `currency` | | **sign\_up** | Sign-up form submitted | `value`, `currency` | | **login** | User logged in | — | ### Quiz Events | Event Name | When It Fires | Key Properties | | ---------------------------- | --------------------------------- | -------------------------------------------- | | **quiz\_completed** | Quiz or assessment finished | `quiz_id`, `result_id`, `questions_answered` | | **quiz\_question\_answered** | Individual quiz question answered | `quiz_id`, `question_id`, `answer_id` | <Note> Quiz events are **custom events** — fire them manually using the JavaScript SDK. See [quiz\_completed](/event-tracking/event-taxonomy/quiz-events/quiz-completed) and [quiz\_question\_answered](/event-tracking/event-taxonomy/quiz-events/quiz-question-answered) for implementation details. </Note> <Note> All standard events include automatic context fields — `pageUrl`, `userAgent`, `ipAddress`, `eventTime`, and identity signals — regardless of the event type. See [Properties](/event-tracking/event-taxonomy/properties) for the full reference. </Note> ## How Destinations Receive Events Each destination maps standard events to its own naming convention. For example, an Upstack `purchase` event becomes: * A Meta CAPI `Purchase` event with hashed `em`, `ph`, and `fbclid` match keys * A TikTok Events API `CompletePayment` event with `ttclid` attached * A Klaviyo `Placed Order` event with full product details * A GA4 `purchase` event with `transaction_id` and line items You configure which events each destination receives in the Upstack dashboard. Upstack handles the schema transformation automatically. ## What's Next <CardGroup> <Card title="Standard Events Reference" icon="list-check" href="/event-tracking/event-taxonomy/standard-events"> Full specification for every standard event — required properties, optional fields, and example payloads. </Card> <Card title="SaaS & B2B Events" icon="building" href="/event-tracking/event-taxonomy/saas-events"> Events for subscription businesses — trials, billing, expansion, and engagement. </Card> <Card title="Custom Events" icon="code" href="/event-tracking/event-taxonomy/custom-events"> Define your own events to capture interactions beyond the standard taxonomy. </Card> <Card title="Properties & Context" icon="table" href="/event-tracking/event-taxonomy/properties"> Complete reference for all user data, custom data, and context fields attached to events. </Card> <Card title="Identity & Stitching" icon="link" href="/pixel/identity-stitching"> How Upstack ID enriches events with resolved identity data. </Card> </CardGroup> # Custom Events Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/custom-events Track custom events beyond standard taxonomy — wishlist adds, quiz completions, loyalty redemptions. Full pipeline support with identity resolution. Custom events let you track interactions that don't fit the standard event types. Wishlist adds, quiz completions, loyalty point redemptions, product configurator steps — any meaningful customer action can be captured as a custom event and forwarded through the Upstack pipeline. <Tip> Custom events flow through the same Capture → Resolve → Enrich → Activate pipeline as standard events. They receive identity resolution, enrichment, and destination forwarding automatically. </Tip> <Info> **Two types of custom events exist:** * **User-defined custom events** — Events you create and fire manually for business-specific interactions * **Upstack-generated events** — Events like `nc_purchase` and `rc_purchase` that Upstack fires automatically alongside standard events See [Upstack-native custom purchase events](#upstack-native-custom-purchase-events) for the automatically generated events. </Info> ## Naming Conventions Custom event names follow these rules: * Use **snake\_case**: `wishlist_add`, `quiz_complete`, `loyalty_redeem` * Keep names **descriptive and specific**: `product_config_saved` is better than `custom_action_1` * Avoid names that collide with standard events — `page_view`, `purchase`, etc. are reserved * Maximum length: **64 characters** * Allowed characters: letters, numbers, underscores <Warning> Event names are case-sensitive. `wishlist_add` and `WishlistAdd` are treated as separate events. Use snake\_case to match standard event conventions. </Warning> ## Tracking Custom Events Pass the event name and properties directly to the `track()` method: ```javascript theme={null} window._upstack('track', 'wishlist_add', { content_ids: ['8012345678'], content_name: 'Classic Cotton Tee', value: 34.99, currency: 'USD', wishlist_id: 'wl_abc123' }); ``` Upstack automatically attaches identity data (`user_data`), timestamps, and context fields. You only provide the event name and properties. For best compatibility with destinations, reuse standard property names (`content_ids`, `value`, `currency`, `content_name`) wherever they apply. ## How Custom Events Flow Through the Pipeline Custom events follow the exact same path as standard events: 1. **Capture** — The Upstack Pixel sends the event to the edge API. You can fire custom events using the JavaScript tracking API on your storefront. 2. **Resolve** — Upstack ID attaches identity data to the event. Session stitching and cross-device linking work the same as for standard events. 3. **Enrich** — UTM parameters, click IDs, and product catalog data are merged if applicable `content_ids` are present. 4. **Activate** — The event is forwarded to destinations that accept custom events. ## Destination Support Not all destinations handle custom events the same way: | Destination | Custom Event Support | | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | | **Meta CAPI** | Supported as `Custom` event type. Meta receives the custom event name and all properties. Useful for building custom audiences and optimization. | | **TikTok Events API** | Supported. Custom events can be used for audience building but not standard optimization. | | **Klaviyo** | Fully supported. Custom events appear as distinct metric types in Klaviyo for flow triggers and segmentation. | | **GA4** | Supported. Custom event names map directly to GA4 custom events. Properties become event parameters. | | **Webhook** | Fully supported. The raw event payload is forwarded as-is. | <Note> Meta and TikTok ad optimization algorithms work best with standard events. Use custom events for audience building and measurement, but rely on standard events (Purchase, AddToCart, etc.) for campaign optimization signals. </Note> ## Firing Custom Events To fire a custom event from your storefront, use the Upstack JavaScript API: ```javascript theme={null} window._upstack('track', 'wishlist_add', { content_ids: ['8012345678'], content_name: 'Classic Cotton Tee', value: 34.99, currency: 'USD', wishlist_id: 'wl_abc123' }); ``` The Upstack Pixel handles serialization, batching, and delivery to the edge API. Identity fields (`user_data`) are attached automatically — you only need to provide the event name and `custom_data` properties. <Tip> For the full `track()` method signature with all 7 parameters including event deduplication, backdating, and `useBeacon` for page unload tracking, see the [JavaScript SDK Reference](/pixel/javascript-sdk#trackeventname-eventdata). </Tip> ## Upstack-native custom purchase events <Note> **Shopify-specific feature** — The `nc_purchase` and `rc_purchase` events are only available for Shopify stores using the Upstack Shopify app. They rely on Shopify order history to determine customer status. </Note> In addition to user-defined custom events, Upstack fires two built-in custom events that segment every order by customer status. They are sent alongside — not instead of — the standard `purchase` event. <AccordionGroup> <Accordion title="nc_purchase" icon="user-plus"> Fires when an order is placed by a customer with **no prior completed order history**. Used to optimize Meta campaigns toward new-customer acquisition instead of repeat buyers. **When it fires:** Order confirmation, when the customer has zero prior completed orders in Shopify. **Properties:** Same payload as the standard `Purchase` event (`value`, `currency`, `content_ids`, `order_id`, etc.) plus Upstack's identity enrichment (`em`, `ph`, `fn`, `ln`, `fbc`, `fbp`, `client_ip_address`, `client_user_agent`). See [Set up custom events → NC Purchase](/destinations/catalog/meta-capi/set-up-nc-and-rc-purchase-events-in-meta#new-customer-purchase-nc-purchase) for Meta setup steps. </Accordion> <Accordion title="rc_purchase" icon="rotate-right"> Fires when an order is placed by a customer with **one or more prior completed orders**. Used for retargeting audiences, retention measurement, and keeping prospecting campaigns honest about who they're actually converting. **When it fires:** Order confirmation, when the customer has at least one prior completed order in Shopify. **Properties:** Same payload as the standard `Purchase` event (`value`, `currency`, `content_ids`, `order_id`, etc.) plus Upstack's identity enrichment (`em`, `ph`, `fn`, `ln`, `fbc`, `fbp`, `client_ip_address`, `client_user_agent`). **What destinations receive (internal format):** ```json theme={null} // Internal format — Upstack fires this automatically, you don't write this code { "event_name": "rc_purchase", "event_time": "2026-02-18T14:35:20.000Z", "event_source_url": "https://example-store.com/thank-you", "user_data": { "em": "a1b2c3d4e5f6...hashed", "ph": "f6e5d4c3b2a1...hashed", "fbc": "fb.1.1708271400.AbC123", "fbp": "fb.1.1708271400.XyZ789", "external_id": "cust_12345" }, "custom_data": { "content_ids": ["8012345678"], "content_type": "product", "value": 42.00, "currency": "USD", "order_id": "#1087", "num_items": 1 } } ``` See [Set up custom events → RC Purchase](/destinations/catalog/meta-capi/set-up-nc-and-rc-purchase-events-in-meta#returning-customer-purchase-rc-purchase) for Meta setup steps. </Accordion> </AccordionGroup> <Note> The standard `purchase` event still fires for every order regardless of customer status. `nc_purchase` and `rc_purchase` fire *in addition to* `purchase`, not instead of it. </Note> ## AOV-Segmented Purchase Events Upstack automatically generates AOV (Average Order Value) segmented purchase events based on your store's order history. These events help you optimize campaigns toward high-value orders. <Warning> **Automatically generated.** You do not fire these events manually. Upstack analyzes each order against your store's historical AOV distribution and fires the appropriate event automatically. </Warning> <AccordionGroup> <Accordion title="high_aov_purchase" icon="arrow-up"> Fires when an order's value exceeds your store's historical average order value threshold. **When it fires:** Order confirmation, when `order_value > store_aov_threshold`. **Properties:** Same payload as the standard `Purchase` event. **Use case:** Optimize Meta campaigns toward customers who place high-value orders, not just any orders. </Accordion> <Accordion title="low_aov_purchase" icon="arrow-down"> Fires when an order's value falls below your store's historical average. **When it fires:** Order confirmation, when `order_value < store_aov_threshold`. **Properties:** Same payload as the standard `Purchase` event. **Use case:** Exclude from high-value optimization campaigns; analyze patterns in low-value conversions. </Accordion> <Accordion title="p70_aov_purchase" icon="chart-line"> Fires when an order's value exceeds the 70th percentile of your store's order values. **When it fires:** Order confirmation, when `order_value >= p70_threshold`. **Properties:** Same payload as the standard `Purchase` event. **Use case:** Target campaigns toward top 30% of orders by value. </Accordion> <Accordion title="p80_aov_purchase" icon="chart-line"> Fires when an order's value exceeds the 80th percentile of your store's order values. **When it fires:** Order confirmation, when `order_value >= p80_threshold`. **Properties:** Same payload as the standard `Purchase` event. **Use case:** Target campaigns toward top 20% of orders by value. </Accordion> <Accordion title="p90_aov_purchase" icon="chart-line"> Fires when an order's value exceeds the 90th percentile of your store's order values. **When it fires:** Order confirmation, when `order_value >= p90_threshold`. **Properties:** Same payload as the standard `Purchase` event. **Use case:** Target campaigns toward your highest-value orders (top 10%). </Accordion> </AccordionGroup> <Tip> Use percentile-based events (`p70_aov_purchase`, `p80_aov_purchase`, `p90_aov_purchase`) in Meta custom conversions to optimize toward different value tiers. This is more precise than the binary `high_aov_purchase`/`low_aov_purchase` split. </Tip> ## Customer Behavior Purchase Events Upstack automatically segments purchases by customer behavior patterns. <AccordionGroup> <Accordion title="upsell_purchase" icon="arrow-up-right-dots"> Fires when an order contains upsell or cross-sell items that were added after the initial product selection. **When it fires:** Order confirmation, when upsell/cross-sell items are detected in the cart. **Properties:** Same payload as the standard `Purchase` event, plus identification of which items were upsells. **Use case:** Measure upsell effectiveness; optimize campaigns toward customers likely to accept upsells. </Accordion> <Accordion title="lapsed_purchase" icon="clock-rotate-left"> Fires when a previously inactive customer returns and makes a purchase. **When it fires:** Order confirmation, when the customer has been inactive for a defined period (typically 90+ days since last order). **Properties:** Same payload as the standard `Purchase` event. **Use case:** Measure win-back campaign effectiveness; build audiences of re-engaged customers. </Accordion> </AccordionGroup> ## Related Documentation <CardGroup> <Card title="Standard Events" icon="list-check" href="/event-tracking/event-taxonomy/standard-events"> Review the full list of built-in events before creating a custom event. </Card> <Card title="JavaScript SDK" icon="code" href="/pixel/javascript-sdk#trackeventname-eventdata"> Full track() method reference with all 7 parameters. </Card> <Card title="Properties & Context" icon="table" href="/event-tracking/event-taxonomy/properties"> See all available property fields you can include in custom\_data. </Card> <Card title="Shopify Automatic Tracking" icon="shopify" href="/sources/catalog/shopify-automatic-tracking"> Events automatically tracked on Shopify stores. </Card> </CardGroup> # Event Properties Reference Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties Complete reference for all Upstack Data event properties — items array, customer data, checkout fields, and auto-captured context like click IDs and UTMs. Properties are the data you send with each tracking event. This page documents all available properties and shows how to use them in JavaScript. <Note> Use **camelCase** when sending properties — the platform automatically converts to the format each destination requires. </Note> ## Full Event Structure A complete tracking event contains the event name, timestamp, user data, custom data, and automatically captured context. ```javascript theme={null} window._upstack('track', 'purchase', { // Core identifiers transactionId: 'ORD-2026-001', orderName: '#1042', // Monetary values value: 134.99, currency: 'USD', subtotalPrice: 149.99, tax: 12.00, shipping: 8.00, discount: 35.00, // Customer data (improves match quality) email: 'customer@example.com', phone: '+15551234567', firstName: 'Jane', lastName: 'Smith', // Product items items: [ { id: 'SKU-001', name: 'Running Shoes', price: 89.99, quantity: 1, brand: 'Nike', category: 'Footwear' } ], // Optional checkout details coupon: 'SAVE25', paymentType: 'credit_card', shippingTier: 'express' }); // The platform automatically captures additional context: // - Click IDs (fbclid, gclid, ttclid, etc.) // - UTM parameters (utm_source, utm_medium, etc.) // - Device and browser information // - Geographic data // - Session and identity information ``` ## Core Properties These properties work with most events. <CardGroup> <Card title="value" icon="coins" href="/event-tracking/event-taxonomy/properties/value"> Monetary value of the event. Required for purchase, lead, subscribe. </Card> <Card title="currency" icon="dollar-sign" href="/event-tracking/event-taxonomy/properties/currency"> ISO 4217 currency code. Required with value. </Card> <Card title="transactionId" icon="fingerprint" href="/event-tracking/event-taxonomy/properties/transaction-id"> Unique order identifier. Required for purchase/refund. </Card> <Card title="orderName" icon="hashtag" href="/event-tracking/event-taxonomy/properties/order-name"> Human-readable order number shown to customers. </Card> </CardGroup> ### Quick Reference | Property | Type | Required | Events | | --------------------------------------------------------------------------- | ------ | --------------------------------- | ------------------------------------------------------------------------------------------- | | [`value`](/event-tracking/event-taxonomy/properties/value) | number | Yes for purchase, lead, subscribe | purchase, add\_to\_cart, view\_content, initiate\_checkout, lead, subscribe, trial\_started | | [`currency`](/event-tracking/event-taxonomy/properties/currency) | string | Yes (when value is set) | Any event with `value` | | [`transactionId`](/event-tracking/event-taxonomy/properties/transaction-id) | string | Yes for purchase/refund | purchase, refund | | `orderId` | string | No | purchase, refund | | [`orderName`](/event-tracking/event-taxonomy/properties/order-name) | string | No | purchase | <Info> `orderId` and `transactionId` are interchangeable — use whichever fits your system. If both are provided, `transactionId` takes precedence. </Info> ```javascript theme={null} window._upstack('track', 'purchase', { value: 99.99, currency: 'USD', transactionId: 'ORD-2026-001', orderName: '#1042' }); ``` *** ## Customer Properties Properties for identifying customers. Used for identity resolution and destination matching. <CardGroup> <Card title="email" icon="envelope" href="/event-tracking/event-taxonomy/properties/email"> Primary identifier for cross-device tracking. </Card> <Card title="phone" icon="phone" href="/event-tracking/event-taxonomy/properties/phone"> E.164 format for improved matching. </Card> <Card title="firstName / lastName" icon="user" href="/event-tracking/event-taxonomy/properties/name"> Customer name for identity resolution. </Card> <Card title="Address Fields" icon="location-dot" href="/event-tracking/event-taxonomy/properties/address"> Shipping and billing address properties. </Card> </CardGroup> ### Quick Reference | Property | Type | Required | Events | | ------------------------------------------------------------- | ------ | ----------- | ----------------------------------- | | [`email`](/event-tracking/event-taxonomy/properties/email) | string | Recommended | All events (improves match quality) | | [`phone`](/event-tracking/event-taxonomy/properties/phone) | string | No | All events (improves match quality) | | [`firstName`](/event-tracking/event-taxonomy/properties/name) | string | No | All events | | [`lastName`](/event-tracking/event-taxonomy/properties/name) | string | No | All events | <Tip> Events with email typically score EMQ 8-9 on Meta. Events with only IP address score 2-3. </Tip> ```javascript theme={null} window._upstack('track', 'lead', { email: 'customer@example.com', phone: '+15551234567', firstName: 'Jane', lastName: 'Smith' }); ``` *** ## Checkout & Pricing Properties Additional properties for checkout and purchase events. <CardGroup> <Card title="subtotalPrice" icon="receipt" href="/event-tracking/event-taxonomy/properties/subtotal-price"> Subtotal before tax/shipping. </Card> <Card title="tax" icon="percent" href="/event-tracking/event-taxonomy/properties/tax"> Tax amount applied. </Card> <Card title="shipping" icon="truck" href="/event-tracking/event-taxonomy/properties/shipping"> Shipping cost. </Card> <Card title="discount" icon="tag" href="/event-tracking/event-taxonomy/properties/discount"> Total discount amount. </Card> <Card title="coupon" icon="ticket" href="/event-tracking/event-taxonomy/properties/coupon"> Promo code used. </Card> <Card title="paymentType" icon="credit-card" href="/event-tracking/event-taxonomy/properties/payment-type"> Payment method used. </Card> <Card title="shippingTier" icon="gauge-high" href="/event-tracking/event-taxonomy/properties/shipping-tier"> Shipping speed selected. </Card> </CardGroup> ### Quick Reference | Property | Type | Description | | --------------------------------------------------------------------------- | --------- | ---------------------------------------------------------- | | [`subtotalPrice`](/event-tracking/event-taxonomy/properties/subtotal-price) | number | Subtotal before tax and shipping | | `price` | number | Base price (distinct from `value` which is the total) | | [`tax`](/event-tracking/event-taxonomy/properties/tax) | number | Tax amount | | [`shipping`](/event-tracking/event-taxonomy/properties/shipping) | number | Shipping cost | | [`discount`](/event-tracking/event-taxonomy/properties/discount) | number | Total discount amount applied | | [`coupon`](/event-tracking/event-taxonomy/properties/coupon) | string | Coupon or promo code used | | [`paymentType`](/event-tracking/event-taxonomy/properties/payment-type) | string | Payment method (`"credit_card"`, `"paypal"`, `"shop_pay"`) | | [`shippingTier`](/event-tracking/event-taxonomy/properties/shipping-tier) | string | Shipping tier (`"standard"`, `"express"`, `"overnight"`) | | `cartId` | string | Shopping cart identifier | | `affiliation` | string | Store or affiliate name | | `orderSourceName` | string | Order source channel | | `tags` | string\[] | Array of order or event tags | | `totalUnitCost` | number | Total cost of goods sold (COGS) for profitability tracking | | `totalUnitMargin` | number | Total margin (value - totalUnitCost) | ```javascript theme={null} window._upstack('track', 'purchase', { transactionId: 'ORD-12345', value: 134.99, currency: 'USD', subtotalPrice: 149.99, tax: 12.00, shipping: 8.00, discount: 35.00, coupon: 'SAVE25', paymentType: 'credit_card', shippingTier: 'express', items: [/* ... */] }); ``` *** ## Content Properties Properties for content-related events like search and page views. <CardGroup> <Card title="searchTerm" icon="magnifying-glass" href="/event-tracking/event-taxonomy/properties/search-term"> Search query entered by the user. </Card> <Card title="content_ids" icon="list" href="/event-tracking/event-taxonomy/properties/content-ids"> Array of product IDs from search results. </Card> </CardGroup> ### Quick Reference | Property | Type | Description | Events | | ---------------------------------------------------------------------- | --------- | --------------------------------- | ------------------------------------------- | | [`searchTerm`](/event-tracking/event-taxonomy/properties/search-term) | string | Search query entered | search | | [`content_ids`](/event-tracking/event-taxonomy/properties/content-ids) | string\[] | Array of product IDs | view\_content, search, add\_to\_cart | | `content_type` | string | `"product"` or `"product_group"` | view\_content, add\_to\_cart, purchase | | `content_name` | string | Name of content, product, or form | view\_content, lead, complete\_registration | | `num_items` | number | Total item count | add\_to\_cart, initiate\_checkout, purchase | | `page_title` | string | Page title | page\_view | | `referrer` | string | Referring URL | page\_view | ```javascript theme={null} window._upstack('track', 'search', { searchTerm: 'blue running shoes', content_ids: ['SKU-001', 'SKU-002', 'SKU-003'] }); ``` *** ## Promotional Properties Properties for tracking promotions, campaigns, and affiliate activity. <CardGroup> <Card title="promotionId" icon="fingerprint" href="/event-tracking/event-taxonomy/properties/promotion-id"> Promotion/campaign identifier. </Card> <Card title="promotionName" icon="tag" href="/event-tracking/event-taxonomy/properties/promotion-name"> Promotion display name. </Card> <Card title="creativeName" icon="palette" href="/event-tracking/event-taxonomy/properties/creative-name"> Creative/ad variant name. </Card> <Card title="creativeSlot" icon="table-cells" href="/event-tracking/event-taxonomy/properties/creative-slot"> Placement position on page. </Card> <Card title="locationId" icon="location-dot" href="/event-tracking/event-taxonomy/properties/location-id"> Store/affiliate/location ID. </Card> </CardGroup> ### Quick Reference | Property | Type | Description | Events | | --------------------------------------------------------------------------- | ------ | ---------------------------------------- | -------------------------------------- | | [`promotionId`](/event-tracking/event-taxonomy/properties/promotion-id) | string | Promotion or campaign identifier | view\_content, add\_to\_cart, purchase | | [`promotionName`](/event-tracking/event-taxonomy/properties/promotion-name) | string | Promotion display name | view\_content, add\_to\_cart, purchase | | [`creativeName`](/event-tracking/event-taxonomy/properties/creative-name) | string | Creative or ad variant name | view\_content, add\_to\_cart, purchase | | [`creativeSlot`](/event-tracking/event-taxonomy/properties/creative-slot) | string | Creative placement position | view\_content, add\_to\_cart, purchase | | [`locationId`](/event-tracking/event-taxonomy/properties/location-id) | string | Store, affiliate, or location identifier | All events | ```javascript theme={null} window._upstack('track', 'view_content', { items: [{ id: 'SKU_001', name: 'Running Shoes', price: 89.99 }], value: 89.99, currency: 'USD', promotionId: 'SUMMER_SALE_2026', promotionName: 'Summer Sale 2026', creativeName: 'hero_banner_v2', creativeSlot: 'homepage_hero', locationId: 'store_nyc_001' }); ``` *** ## Detailed Property References <CardGroup> <Card title="Items Array" icon="list" href="/event-tracking/event-taxonomy/properties/items"> Product details for e-commerce events — id, name, price, quantity, brand, category, variant. </Card> <Card title="Address Properties" icon="location-dot" href="/event-tracking/event-taxonomy/properties/address"> Shipping and billing address fields — address1, city, province, country, zip. </Card> <Card title="SaaS Properties" icon="building" href="/event-tracking/event-taxonomy/properties/saas"> B2B/SaaS properties — account, subscription, trial, payment, and churn tracking. </Card> <Card title="Auto-Captured Fields" icon="wand-magic-sparkles" href="/event-tracking/event-taxonomy/properties/auto-captured"> Click IDs, UTMs, and context fields captured automatically by the pixel. </Card> </CardGroup> *** ## Naming Conventions ### Input vs Output Format Send properties in **camelCase** — the platform converts to each destination's required format automatically. | Your Input | Meta CAPI Output | GA4 Output | | --------------- | ---------------- | ------------------------- | | `transactionId` | `transaction_id` | `transaction_id` | | `firstName` | `fn` (hashed) | `first_name` | | `email` | `em` (hashed) | `user_id` (if configured) | ### Legacy Snake Case Properties Some properties use snake\_case for compatibility with Meta and GA4 conventions: | Property | Format | Notes | | -------------- | ----------- | -------------------------------------------------- | | `content_ids` | snake\_case | Array of product IDs (Meta convention) | | `content_type` | snake\_case | `"product"` or `"product_group"` (Meta convention) | | `content_name` | snake\_case | Content or product name | | `num_items` | snake\_case | Total item count | <Info> The platform accepts both formats and normalizes automatically. You can use either `contentIds` or `content_ids` — both work. </Info> ### Event Names Event names use **snake\_case** (e.g., `add_to_cart`, `initiate_checkout`, `view_content`). ```javascript theme={null} // Correct window._upstack('track', 'add_to_cart', { ... }); window._upstack('track', 'view_content', { ... }); // Incorrect window._upstack('track', 'AddToCart', { ... }); window._upstack('track', 'viewContent', { ... }); ``` # Address Properties Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/address Shipping and billing address fields — address1, city, province, country, zip for checkout and purchase events. For shipping and billing information. Pass as an array of address objects. ## Address Array Structure ```javascript theme={null} window._upstack('track', 'purchase', { transactionId: 'ORD-12345', value: 149.99, currency: 'USD', addresses: [ { firstName: 'Jane', lastName: 'Smith', address1: '123 Main St', address2: 'Apt 4B', city: 'San Francisco', province: 'California', provinceCode: 'CA', country: 'US', zip: '94102' } ], items: [/* ... */] }); ``` ## Address Properties | Property | Type | Description | | -------------- | ------ | -------------------------------------------------------- | | `firstName` | string | First name | | `lastName` | string | Last name | | `company` | string | Company or organization name | | `address1` | string | Street address line 1 | | `address2` | string | Street address line 2 | | `city` | string | City | | `province` | string | State or province | | `provinceCode` | string | State/province code (e.g., `CA`, `NY`, `ON`) | | `country` | string | Country name | | `countryCode` | string | ISO 3166-1 alpha-2 country code (e.g., `US`, `CA`, `GB`) | | `zip` | string | ZIP or postal code | ## Privacy Address fields (city, zip, country code, state code) are normalized and SHA-256 hashed before being sent to advertising destinations. <Note> Use `province` for the full state/province name and `provinceCode` for the abbreviated code. Use `zip` for postal codes. </Note> # Auto-Captured Fields Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/auto-captured Fields captured automatically by the Upstack Pixel — click IDs, UTMs, device info, geo, and context. Don't set these manually. These fields are captured automatically by the Upstack Pixel and edge API. **Do not include them in your `track()` calls.** ## Click IDs Click IDs are captured automatically from URL parameters and browser cookies. Each platform's click ID is stored along with a timestamp indicating when it was collected. ### Meta (Facebook/Instagram) | Field | Source | Description | | -------- | ------------- | ------------------------------------------------------------ | | `fbc` | `_fbc` cookie | Meta click ID cookie (contains `fbclid` from ad click URL) | | `fbp` | `_fbp` cookie | Meta browser ID (first-party cookie for user identification) | | `fbclid` | URL parameter | Meta click ID from ad click URL (raw parameter value) | ### Google Ads | Field | Source | Description | | -------- | ------------- | ---------------------------------------------------- | | `gclid` | URL parameter | Google click ID (standard web campaigns) | | `gbraid` | URL parameter | Google click ID for iOS App campaigns (privacy-safe) | | `wbraid` | URL parameter | Google click ID for web-to-app measurement | ### TikTok | Field | Source | Description | | -------- | ------------- | --------------------------------------------------- | | `ttclid` | URL parameter | TikTok click ID from ad click URL | | `ttp` | `_ttp` cookie | TikTok browser ID cookie (first-party pixel cookie) | ### Snapchat | Field | Source | Description | | ------------------ | -------------- | ------------------------------------- | | `snapchatSCCid` | URL parameter | Snapchat click ID (`ScCid` parameter) | | `snapchatSCCookie` | `_scid` cookie | Snapchat browser ID cookie | ### Pinterest | Field | Source | Description | | --------------- | -------------- | ------------------------------------------ | | `pinterestEpik` | `_epik` cookie | Pinterest click ID cookie (Enhanced Match) | ### AppLovin | Field | Source | Description | | --------------- | ------------- | ---------------------------------------------- | | `applovinAxwrt` | URL parameter | AppLovin attribution token (`axwrt` parameter) | | `aleid` | URL parameter | AppLovin click ID | ### Klaviyo | Field | Source | Description | | ------------ | ------------- | --------------------------------- | | `kx` | URL parameter | Klaviyo click ID from email links | | `klaviyoCid` | URL parameter | Klaviyo campaign ID | ### Sendlane | Field | Source | Description | | ------------- | ------------- | ---------------------------------- | | `sendlaneCid` | URL parameter | Sendlane click ID from email links | ### Omnisend | Field | Source | Description | | ------------- | ------------- | ---------------------------------- | | `omnisendCid` | URL parameter | Omnisend click ID from email links | ### Reddit | Field | Source | Description | | ------------ | ------------------ | ------------------------------ | | `redditCid` | URL parameter | Reddit click ID from ad clicks | | `redditUuid` | `_rdt_uuid` cookie | Reddit browser ID cookie | ### Taboola | Field | Source | Description | | ------- | ------------- | -------------------------------------- | | `tblci` | URL parameter | Taboola click ID from native ad clicks | ### Outbrain | Field | Source | Description | | -------- | ------------- | --------------------------------------- | | `obclid` | URL parameter | Outbrain click ID from native ad clicks | ### NewsBreak | Field | Source | Description | | -------- | ------------- | --------------------------------- | | `nbclid` | URL parameter | NewsBreak click ID from ad clicks | ### LinkedIn | Field | Source | Description | | --------- | ------------- | ----------------------------------------------------------- | | `liFatId` | URL parameter | LinkedIn First-Party Ad Tracking ID (`li_fat_id` parameter) | ### Microsoft Advertising (Bing) | Field | Source | Description | | --------- | ------------- | ------------------------------ | | `msclkid` | URL parameter | Microsoft Advertising click ID | *** ## UTM Parameters Captured automatically from URL query string parameters: | Field | Description | | -------------- | --------------------------------------------------------- | | `utm_source` | Traffic source (e.g., `google`, `facebook`, `newsletter`) | | `utm_medium` | Marketing medium (e.g., `cpc`, `email`, `social`) | | `utm_campaign` | Campaign name or identifier | | `utm_content` | Ad or link variant for A/B testing | | `utm_term` | Paid search keyword | *** ## Page Context Captured automatically from the browser on every event: | Field | Description | | ---------- | ---------------------------------------------- | | `host` | Hostname of the page (e.g., `www.example.com`) | | `path` | URL path (e.g., `/products/widget`) | | `referrer` | Full referrer URL | | `search` | Query string (e.g., `?utm_source=google`) | | `title` | Page title from `document.title` | | `url` | Full page URL where the event fired | *** ## Viewport & Device Captured from the browser at page load: | Field | Description | | ------------------- | ------------------------------------------------------------ | | `viewportWidth` | Browser viewport width in CSS pixels | | `viewportHeight` | Browser viewport height in CSS pixels | | `pageHeight` | Total scrollable page height in CSS pixels | | `devicePixelRatio` | Device pixel ratio (e.g., `2` for Retina displays) | | `device_type` | Detected device type: `"mobile"`, `"desktop"`, or `"tablet"` | | `client_user_agent` | Browser user agent string | *** ## Browser Settings | Field | Description | | ----------------- | ------------------------------------------- | | `locale` | Browser locale (e.g., `en-US`) | | `timezone` | Browser timezone (e.g., `America/New_York`) | | `adBlockDetected` | `true` if an ad blocker was detected | *** ## Geographic Data (from Cloudflare) Captured server-side from Cloudflare's edge network: | Field | Description | | ------------- | -------------------------------------------------- | | `country` | ISO 3166-1 alpha-2 country code (e.g., `US`, `GB`) | | `region` | State/province name (e.g., `Texas`, `California`) | | `regionCode` | ISO 3166-2 region code (e.g., `TX`, `CA`) | | `city` | City name (e.g., `Austin`, `San Francisco`) | | `postalCode` | Postal/zip code (e.g., `78701`) | | `latitude` | Latitude coordinate | | `longitude` | Longitude coordinate | | `continent` | Continent code (e.g., `NA`, `EU`, `AS`) | | `isEUCountry` | `"1"` if the country is in the EU | | `timezone` | IANA timezone (e.g., `America/Chicago`) | *** ## Network Info (from Cloudflare) | Field | Description | | ------------------- | ----------------------------------------------------- | | `asn` | Autonomous System Number | | `asOrganization` | Organization that owns the ASN (e.g., `Google Cloud`) | | `isBot` | `true` if Cloudflare detects the request as a bot | | `client_ip_address` | Visitor's IP address (captured server-side) | *** ## Session & Event Metadata | Field | Description | | ------------------ | --------------------------------- | | `event_id` | Unique event ID for deduplication | | `event_time` | Timestamp (ISO 8601, UTC) | | `event_source_url` | Full URL where the event fired | | `session_id` | Upstack session identifier | | `pixel_id` | Your Upstack Pixel ID | # Checkout & Pricing Properties Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/checkout Properties for checkout and purchase events — pricing breakdown, payment methods, and shipping details. Checkout and pricing properties provide detailed order information for purchase and checkout events. ## Properties <CardGroup> <Card title="subtotalPrice" icon="receipt" href="/event-tracking/event-taxonomy/properties/subtotal-price"> Subtotal before tax/shipping. </Card> <Card title="tax" icon="percent" href="/event-tracking/event-taxonomy/properties/tax"> Tax amount applied. </Card> <Card title="shipping" icon="truck" href="/event-tracking/event-taxonomy/properties/shipping"> Shipping cost. </Card> <Card title="discount" icon="tag" href="/event-tracking/event-taxonomy/properties/discount"> Total discount amount. </Card> <Card title="coupon" icon="ticket" href="/event-tracking/event-taxonomy/properties/coupon"> Promo code used. </Card> <Card title="paymentType" icon="credit-card" href="/event-tracking/event-taxonomy/properties/payment-type"> Payment method. </Card> <Card title="shippingTier" icon="gauge-high" href="/event-tracking/event-taxonomy/properties/shipping-tier"> Shipping speed selected. </Card> </CardGroup> ## Quick Reference | Property | Type | Description | | --------------- | ------ | -------------------------------- | | `subtotalPrice` | number | Subtotal before tax and shipping | | `tax` | number | Tax amount | | `shipping` | number | Shipping cost | | `discount` | number | Total discount amount applied | | `coupon` | string | Coupon or promo code used | | `paymentType` | string | Payment method used | | `shippingTier` | string | Shipping tier selected | | `cartId` | string | Shopping cart identifier | | `affiliation` | string | Store or affiliate name | ## Example ```javascript theme={null} window._upstack('track', 'purchase', { transactionId: 'ORD-12345', value: 134.99, currency: 'USD', subtotalPrice: 149.99, tax: 12.00, shipping: 8.00, discount: 35.00, coupon: 'SAVE25', paymentType: 'credit_card', shippingTier: 'express', items: [/* ... */] }); ``` # Complex Properties Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/complex Advanced property types — the items array for product data, SaaS properties for B2B tracking, and auto-captured context fields. Complex properties handle structured data, B2B/SaaS tracking, and automatically captured context. These properties support advanced use cases beyond simple key-value pairs. ## Properties <CardGroup> <Card title="Items Array" icon="list" href="/event-tracking/event-taxonomy/properties/items"> Product data for e-commerce events — id, name, price, quantity, brand, category. </Card> <Card title="SaaS Properties" icon="building" href="/event-tracking/event-taxonomy/properties/saas"> B2B/SaaS tracking — accounts, subscriptions, trials, MRR, seats. </Card> <Card title="Auto-Captured Fields" icon="wand-magic-sparkles" href="/event-tracking/event-taxonomy/properties/auto-captured"> Click IDs, UTMs, device info, geo — captured automatically. </Card> </CardGroup> ## Quick Reference | Property Type | Description | When to Use | | ------------------- | -------------------------------------------- | -------------------------------------------------------------- | | **items** | Array of product objects | All e-commerce events (view\_content, add\_to\_cart, purchase) | | **SaaS properties** | Account, subscription, trial, payment fields | B2B/SaaS event tracking | | **Auto-captured** | Click IDs, UTMs, device, geo | Automatically captured — do not set manually | ## Items Array The `items` array is required for all product-related events. Each item contains product details: ```javascript theme={null} window._upstack('track', 'purchase', { transactionId: 'ORD-12345', value: 149.99, currency: 'USD', items: [ { id: 'SKU-001', name: 'Running Shoes', price: 89.99, quantity: 1, brand: 'Nike', category: 'Footwear', variant: 'Blue / Size 10' } ] }); ``` <Card title="Full Items Reference" icon="arrow-right" href="/event-tracking/event-taxonomy/properties/items"> See the complete items array specification with all supported fields. </Card> ## SaaS Properties For B2B and subscription-based businesses tracking accounts, subscriptions, trials, and revenue: ```javascript theme={null} window._upstack('track', 'subscription_started', { accountId: 'acct_abc123', subscriptionId: 'sub_def456', planId: 'plan_pro_monthly', planName: 'Pro Plan', mrr: 9900, billingInterval: 'month' }); ``` <Card title="Full SaaS Reference" icon="arrow-right" href="/event-tracking/event-taxonomy/properties/saas"> See all SaaS properties including trial, payment, and seat tracking fields. </Card> ## Auto-Captured Fields <Info> **Do not include auto-captured fields in your `track()` calls.** The Upstack Pixel and edge API capture these automatically. </Info> Auto-captured fields include: | Category | Examples | | ------------------ | --------------------------------------------------------------------- | | **Click IDs** | `fbclid`, `gclid`, `ttclid`, `msclkid`, `fbc`, `fbp`, `ttp` | | **UTM Parameters** | `utm_source`, `utm_medium`, `utm_campaign`, `utm_content`, `utm_term` | | **Page Context** | `url`, `path`, `referrer`, `title`, `host` | | **Device** | `device_type`, `viewportWidth`, `viewportHeight`, `client_user_agent` | | **Geographic** | `country`, `region`, `city`, `postalCode`, `timezone` | | **Session** | `session_id`, `event_id`, `event_time`, `pixel_id` | <Card title="Full Auto-Captured Reference" icon="arrow-right" href="/event-tracking/event-taxonomy/properties/auto-captured"> See all click IDs (Meta, Google, TikTok, Pinterest, Snapchat, AppLovin, LinkedIn, Microsoft, Reddit, and more), UTM parameters, and context fields. </Card> # Content Properties Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/content Properties for content-related events — primarily search queries. Content properties are used for search and content interaction events. ## User-Input Properties | Property | Type | Description | Events | | ------------ | ------ | ---------------------------- | ------ | | `searchTerm` | string | Search query entered by user | search | <CardGroup> <Card title="searchTerm" icon="magnifying-glass" href="/event-tracking/event-taxonomy/properties/search-term"> Search query entered by the user. </Card> </CardGroup> ## Example ```javascript theme={null} window._upstack('track', 'search', { searchTerm: 'blue running shoes', items: [ { id: 'SKU-001', name: 'Running Shoes', price: 99.00 }, { id: 'SKU-002', name: 'Athletic Socks', price: 12.00 } ] }); ``` ## Auto-Derived Fields The following fields are **automatically computed** from your `items` array during event forwarding. Do not pass them directly: | Field | Derived From | Description | | -------------- | ------------------------- | -------------------------------- | | `content_ids` | `items[].id` | Array of product IDs | | `content_name` | `items[0].name` | Name of first product | | `content_type` | Inferred | `"product"` or `"product_group"` | | `num_items` | Sum of `items[].quantity` | Total item count | <Note> For product data, always use the `items` array. The platform extracts and formats the necessary fields for each advertising destination. </Note> ## Related Properties <CardGroup> <Card title="Items Array" icon="list" href="/event-tracking/event-taxonomy/properties/items"> Pass all product data here — content fields are derived automatically. </Card> <Card title="content_ids" icon="list" href="/event-tracking/event-taxonomy/properties/content-ids"> Learn how product IDs are extracted from items. </Card> </CardGroup> # content_ids Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/content-ids Auto-derived array of product IDs sent to advertising platforms. <Warning> `content_ids` is **not** a user-input property. It is automatically derived from your `items` array during event forwarding. </Warning> ## How It Works When you send events with an `items` array, the platform extracts product IDs and forwards them as `content_ids` to advertising platforms (Meta, TikTok, etc.). **Do this:** ```javascript theme={null} window._upstack('track', 'view_content', { items: [ { id: 'SKU-001', name: 'Running Shoes', price: 99.00 }, { id: 'SKU-002', name: 'Athletic Socks', price: 12.00 } ] }); // → Forwards content_ids: ['SKU-001', 'SKU-002'] to destinations ``` **Not this:** ```javascript theme={null} // ❌ Don't pass content_ids directly window._upstack('track', 'view_content', { content_ids: ['SKU-001', 'SKU-002'] }); ``` ## Derivation Logic The platform extracts IDs from the `items` array using this priority: 1. `item.id` (preferred) 2. `item.item_id` 3. `item.product_id` 4. `item.sku` 5. `item.variant_id` ## Related Properties <CardGroup> <Card title="Items Array" icon="list" href="/event-tracking/event-taxonomy/properties/items"> Pass product data here — IDs are extracted automatically. </Card> <Card title="searchTerm" icon="magnifying-glass" href="/event-tracking/event-taxonomy/properties/search-term"> User-input property for search queries. </Card> </CardGroup> # Core Event Properties Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/core Essential properties for tracking events — value, currency, transactionId, and orderName. Core properties are the foundational fields used across most tracking events. These are typically required or strongly recommended for proper attribution and reporting. ## Properties <CardGroup> <Card title="value" icon="coins" href="/event-tracking/event-taxonomy/properties/value"> Monetary value of the event. </Card> <Card title="currency" icon="dollar-sign" href="/event-tracking/event-taxonomy/properties/currency"> ISO 4217 currency code. </Card> <Card title="transactionId" icon="fingerprint" href="/event-tracking/event-taxonomy/properties/transaction-id"> Unique order identifier. </Card> <Card title="orderName" icon="hashtag" href="/event-tracking/event-taxonomy/properties/order-name"> Human-readable order number. </Card> </CardGroup> ## Quick Reference | Property | Type | Required | Description | | --------------- | ------ | --------------------------------- | ---------------------------------------------- | | `value` | number | Yes for purchase, lead, subscribe | Monetary value of the event | | `currency` | string | Yes (when value is set) | ISO 4217 currency code (USD, EUR, GBP) | | `transactionId` | string | Yes for purchase/refund | Unique order identifier | | `orderName` | string | No | Human-readable order number shown to customers | ## Example ```javascript theme={null} window._upstack('track', 'purchase', { value: 149.99, currency: 'USD', transactionId: 'ORD-2026-001', orderName: '#1042', items: [/* ... */] }); ``` <Note> For Purchase events, `value` should match the order total you want reported to ad platforms. </Note> # coupon Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/coupon Coupon or promo code used. Coupon or promo code used. ```javascript theme={null} window._upstack('track', 'purchase', { transactionId: 'ORD-12345', value: 134.99, currency: 'USD', coupon: 'SAVE25' }); ``` | Type | Required | Events | | ------ | -------- | ------------------------------------------- | | string | No | purchase, initiate\_checkout, add\_to\_cart | ## Related Properties <CardGroup> <Card title="discount" icon="tag" href="/event-tracking/event-taxonomy/properties/discount"> Discount amount applied. </Card> <Card title="promotionId" icon="bullhorn" href="/event-tracking/event-taxonomy/properties/promotion-id"> Promotion identifier. </Card> </CardGroup> # creativeName Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/creative-name Creative or ad variant name for promotion tracking. Creative or ad variant name for promotion tracking. ```javascript theme={null} window._upstack('track', 'view_content', { items: [{ id: 'SKU_001', name: 'Running Shoes', price: 89.99 }], value: 89.99, currency: 'USD', creativeName: 'hero_banner_v2' }); ``` | Type | Required | Events | | ------ | -------- | -------------------------------------- | | string | No | view\_content, add\_to\_cart, purchase | <Tip> Use `creativeName` and `creativeSlot` to track which on-site promotions drive the most conversions. </Tip> ## Related Properties <CardGroup> <Card title="creativeSlot" icon="table-cells" href="/event-tracking/event-taxonomy/properties/creative-slot"> Placement position on page. </Card> <Card title="promotionId" icon="bullhorn" href="/event-tracking/event-taxonomy/properties/promotion-id"> Promotion identifier. </Card> </CardGroup> # creativeSlot Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/creative-slot Creative placement position on the page. Creative placement position on the page. ```javascript theme={null} window._upstack('track', 'view_content', { items: [{ id: 'SKU_001', name: 'Running Shoes', price: 89.99 }], value: 89.99, currency: 'USD', creativeSlot: 'homepage_hero' }); ``` | Type | Required | Events | | ------ | -------- | -------------------------------------- | | string | No | view\_content, add\_to\_cart, purchase | ## Common Values | Value | Description | | ------------------------- | ----------------------------- | | `hero` | Hero banner section | | `sidebar` | Sidebar placement | | `footer` | Footer area | | `homepage_hero` | Homepage hero banner | | `product_recommendations` | Product recommendation widget | | `cart_upsell` | Cart page upsell | ## Related Properties <CardGroup> <Card title="creativeName" icon="palette" href="/event-tracking/event-taxonomy/properties/creative-name"> Creative variant name. </Card> <Card title="locationId" icon="location-dot" href="/event-tracking/event-taxonomy/properties/location-id"> Store or location identifier. </Card> </CardGroup> # currency Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/currency ISO 4217 currency code. Required whenever you include value. ISO 4217 currency code. Required whenever you include `value`. ```javascript theme={null} window._upstack('track', 'add_to_cart', { value: 49.99, currency: 'USD' // USD, EUR, GBP, CAD, etc. }); ``` | Type | Required | Events | | ------ | ----------------------- | ---------------------- | | string | Yes (when value is set) | Any event with `value` | ## Common Currency Codes | Code | Currency | | ----- | ----------------- | | `USD` | US Dollar | | `EUR` | Euro | | `GBP` | British Pound | | `CAD` | Canadian Dollar | | `AUD` | Australian Dollar | | `JPY` | Japanese Yen | ## Related Properties <CardGroup> <Card title="value" icon="coins" href="/event-tracking/event-taxonomy/properties/value"> The monetary value of the event. </Card> </CardGroup> # Customer Properties Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/customer Properties for identifying customers — email, phone, name, and address fields for identity resolution. Customer properties are used for identity resolution and destination matching. Including these fields significantly improves match quality on advertising platforms. ## Properties <CardGroup> <Card title="email" icon="envelope" href="/event-tracking/event-taxonomy/properties/email"> Primary cross-device identifier. </Card> <Card title="phone" icon="phone" href="/event-tracking/event-taxonomy/properties/phone"> E.164 format phone number. </Card> <Card title="firstName / lastName" icon="user" href="/event-tracking/event-taxonomy/properties/name"> Customer name fields. </Card> <Card title="Address Fields" icon="location-dot" href="/event-tracking/event-taxonomy/properties/address"> Shipping and billing address. </Card> </CardGroup> ## Quick Reference | Property | Type | Required | Description | | ----------- | ------ | ----------- | --------------------------------------- | | `email` | string | Recommended | Customer's email address | | `phone` | string | No | Phone number (E.164 format recommended) | | `firstName` | string | No | Customer's first name | | `lastName` | string | No | Customer's last name | ## Example ```javascript theme={null} window._upstack('track', 'lead', { email: 'customer@example.com', phone: '+15551234567', firstName: 'Jane', lastName: 'Smith', value: 0, currency: 'USD' }); ``` <Tip> Events with email typically score EMQ 8-9 on Meta. Events with only IP address score 2-3. </Tip> ## Privacy All customer PII (email, phone, name) is normalized and SHA-256 hashed before being sent to advertising destinations. Raw values are never stored in destination platforms. # discount Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/discount Total discount amount applied to the order. Total discount amount applied to the order. ```javascript theme={null} window._upstack('track', 'purchase', { transactionId: 'ORD-12345', value: 134.99, currency: 'USD', discount: 35.00 }); ``` | Type | Required | Events | | ------ | -------- | ------------------------------------------- | | number | No | purchase, initiate\_checkout, add\_to\_cart | ## Related Properties <CardGroup> <Card title="coupon" icon="ticket" href="/event-tracking/event-taxonomy/properties/coupon"> Coupon code used. </Card> <Card title="subtotalPrice" icon="receipt" href="/event-tracking/event-taxonomy/properties/subtotal-price"> Subtotal before discounts. </Card> </CardGroup> # email Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/email Customer's email address. Primary identifier for cross-device tracking. Customer's email address. Primary identifier for cross-device tracking and destination matching. ```javascript theme={null} // With a lead form submission window._upstack('track', 'lead', { email: 'customer@example.com', value: 0, currency: 'USD' }); // With a purchase window._upstack('track', 'purchase', { email: 'customer@example.com', transactionId: 'ORD-123', value: 99.99, currency: 'USD' }); ``` | Type | Required | Events | | ------ | ----------- | ----------------------------------- | | string | Recommended | All events (improves match quality) | ## Privacy Email addresses are normalized (lowercase, trimmed) and SHA-256 hashed before being sent to advertising destinations. Raw emails are never stored in destination platforms. <Tip> Events with email typically score EMQ 8-9 on Meta. Events with only IP address score 2-3. </Tip> ## Related Properties <CardGroup> <Card title="phone" icon="phone" href="/event-tracking/event-taxonomy/properties/phone"> Customer phone number for improved matching. </Card> <Card title="firstName / lastName" icon="user" href="/event-tracking/event-taxonomy/properties/name"> Customer name for identity resolution. </Card> </CardGroup> # Items Array Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/items Product details for e-commerce events — id, name, price, quantity, brand, category, and variant properties. For events involving products, use the `items` array. Required for all product-related events. ## Items Array Structure ```javascript theme={null} window._upstack('track', 'purchase', { transactionId: 'ORD-12345', value: 149.99, currency: 'USD', items: [ { id: 'SKU-001', // Product ID or SKU name: 'Running Shoes', // Product name price: 89.99, // Unit price quantity: 1, // Quantity (default: 1) brand: 'Nike', // Brand name category: 'Footwear', // Primary category variant: 'Blue / Size 10' // Size, color, etc. }, { id: 'SKU-002', name: 'Athletic Socks', price: 14.99, quantity: 4, brand: 'Nike', category: 'Accessories' } ] }); ``` ## Item Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------------------------------------------ | | `id` | string | No | Product ID or SKU | | `name` | string | No | Product name | | `price` | number | No | Unit price | | `quantity` | number | No | Quantity (default: 1) | | `value` | number | No | Total value for this item (typically `price × quantity`) | | `currency` | string | No | Per-item currency override (ISO 4217 code, e.g., `"USD"`) | | `brand` | string | No | Brand name | | `category` | string | No | Primary category | | `category2` | string | No | Secondary category | | `category3` | string | No | Tertiary category | | `category4` | string | No | Fourth category level | | `category5` | string | No | Fifth category level | | `variant` | string | No | Size, color, or other variant | | `sku` | string | No | Stock keeping unit | | `discount` | number | No | Discount amount per item | | `coupon` | string | No | Item-level coupon code | | `url` | string | No | Product page URL | | `imageUrl` | string | No | Product image URL | | `content_type` | string | No | `"product"` for individual items or `"product_group"` for variants | | `index` | number | No | Zero-based index of item in the items array | | `locationId` | string | No | Per-item store or location identifier | | `unitCost` | number | No | Cost per unit (for margin calculations) | | `unitMargin` | number | No | Margin per unit (for profitability tracking) | <Note> If `value` is not provided, it is computed automatically as `price × quantity`. </Note> ## Items Array by Event ```javascript theme={null} // View a product window._upstack('track', 'view_content', { items: [{ id: 'SKU-001', name: 'Running Shoes', price: 89.99, category: 'Footwear' }] }); // Add to cart window._upstack('track', 'add_to_cart', { value: 89.99, currency: 'USD', items: [{ id: 'SKU-001', name: 'Running Shoes', price: 89.99, quantity: 1 }] }); // Begin checkout window._upstack('track', 'initiate_checkout', { value: 104.98, currency: 'USD', items: [ { id: 'SKU-001', name: 'Running Shoes', price: 89.99, quantity: 1 }, { id: 'SKU-002', name: 'Athletic Socks', price: 14.99, quantity: 1 } ] }); ``` # locationId Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/location-id Store, affiliate, or location identifier. Store, affiliate, or location identifier. ```javascript theme={null} window._upstack('track', 'purchase', { transactionId: 'ORD-12345', value: 134.99, currency: 'USD', locationId: 'store_nyc_001' }); ``` | Type | Required | Events | | ------ | -------- | ---------- | | string | No | All events | ## Use Cases * **Multi-location retail**: Track which store location drove the conversion * **Affiliate tracking**: Identify which affiliate partner referred the customer * **Franchise tracking**: Attribute conversions to specific franchise locations ## Related Properties <CardGroup> <Card title="creativeSlot" icon="table-cells" href="/event-tracking/event-taxonomy/properties/creative-slot"> Creative placement position. </Card> <Card title="promotionId" icon="bullhorn" href="/event-tracking/event-taxonomy/properties/promotion-id"> Promotion identifier. </Card> </CardGroup> # firstName / lastName Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/name Customer's name for identity resolution and destination matching. Customer's name. Used for identity resolution and destination matching. ```javascript theme={null} window._upstack('track', 'purchase', { firstName: 'Jane', lastName: 'Smith', email: 'jane.smith@example.com', transactionId: 'ORD-123', value: 149.99, currency: 'USD' }); ``` | Type | Required | Events | | ------ | -------- | ---------- | | string | No | All events | ## Privacy Names are normalized (lowercase, trimmed) and SHA-256 hashed before being sent to advertising destinations. ## Related Properties <CardGroup> <Card title="email" icon="envelope" href="/event-tracking/event-taxonomy/properties/email"> Customer email — primary identifier. </Card> <Card title="phone" icon="phone" href="/event-tracking/event-taxonomy/properties/phone"> Customer phone number. </Card> <Card title="Address Properties" icon="location-dot" href="/event-tracking/event-taxonomy/properties/address"> Shipping and billing address fields. </Card> </CardGroup> # orderName Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/order-name Human-readable order name shown to customers. Human-readable order name (e.g., the order number shown to customers). ```javascript theme={null} window._upstack('track', 'purchase', { transactionId: 'shopify_order_5678901234', orderName: '#1042', // What the customer sees value: 149.99, currency: 'USD' }); ``` | Type | Required | Events | | ------ | -------- | -------- | | string | No | purchase | ## Related Properties <CardGroup> <Card title="transactionId" icon="fingerprint" href="/event-tracking/event-taxonomy/properties/transaction-id"> Unique order identifier for tracking. </Card> </CardGroup> # paymentType Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/payment-type Payment method used for checkout. Payment method used for checkout. ```javascript theme={null} window._upstack('track', 'purchase', { transactionId: 'ORD-12345', value: 134.99, currency: 'USD', paymentType: 'credit_card' }); ``` | Type | Required | Events | | ------ | -------- | ---------------------------- | | string | No | purchase, add\_payment\_info | ## Common Values | Value | Description | | ------------- | -------------------- | | `credit_card` | Credit or debit card | | `paypal` | PayPal | | `shop_pay` | Shop Pay (Shopify) | | `apple_pay` | Apple Pay | | `google_pay` | Google Pay | | `klarna` | Klarna | | `afterpay` | Afterpay | <Note> These are suggested values. Any string is accepted. </Note> ## Related Properties <CardGroup> <Card title="shippingTier" icon="truck" href="/event-tracking/event-taxonomy/properties/shipping-tier"> Shipping tier selected. </Card> </CardGroup> # phone Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/phone Customer's phone number. E.164 format recommended. Customer's phone number. E.164 format recommended for best matching. ```javascript theme={null} window._upstack('track', 'lead', { email: 'customer@example.com', phone: '+15551234567', // E.164 format: +[country][number] value: 0, currency: 'USD' }); ``` | Type | Required | Events | | ------ | -------- | ----------------------------------- | | string | No | All events (improves match quality) | ## E.164 Format The E.164 format is the international standard for phone numbers: * Start with `+` followed by country code * No spaces, dashes, or parentheses * Example: `+15551234567` (US), `+442071234567` (UK) ## Privacy Phone numbers are normalized and SHA-256 hashed before being sent to destinations. ## Related Properties <CardGroup> <Card title="email" icon="envelope" href="/event-tracking/event-taxonomy/properties/email"> Customer email — primary identifier. </Card> <Card title="firstName / lastName" icon="user" href="/event-tracking/event-taxonomy/properties/name"> Customer name for identity resolution. </Card> </CardGroup> # promotionId Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/promotion-id Promotion or campaign identifier. Promotion or campaign identifier. ```javascript theme={null} window._upstack('track', 'view_content', { items: [{ id: 'SKU_001', name: 'Running Shoes', price: 89.99 }], value: 89.99, currency: 'USD', promotionId: 'SUMMER_SALE_2026' }); ``` | Type | Required | Events | | ------ | -------- | -------------------------------------- | | string | No | view\_content, add\_to\_cart, purchase | ## Related Properties <CardGroup> <Card title="promotionName" icon="tag" href="/event-tracking/event-taxonomy/properties/promotion-name"> Human-readable promotion name. </Card> <Card title="creativeName" icon="palette" href="/event-tracking/event-taxonomy/properties/creative-name"> Creative variant name. </Card> <Card title="creativeSlot" icon="table-cells" href="/event-tracking/event-taxonomy/properties/creative-slot"> Placement position on page. </Card> </CardGroup> # promotionName Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/promotion-name Human-readable promotion display name. Human-readable promotion display name. ```javascript theme={null} window._upstack('track', 'view_content', { items: [{ id: 'SKU_001', name: 'Running Shoes', price: 89.99 }], value: 89.99, currency: 'USD', promotionId: 'SUMMER_SALE_2026', promotionName: 'Summer Sale 2026' }); ``` | Type | Required | Events | | ------ | -------- | -------------------------------------- | | string | No | view\_content, add\_to\_cart, purchase | ## Related Properties <CardGroup> <Card title="promotionId" icon="fingerprint" href="/event-tracking/event-taxonomy/properties/promotion-id"> Promotion identifier. </Card> <Card title="creativeName" icon="palette" href="/event-tracking/event-taxonomy/properties/creative-name"> Creative variant name. </Card> </CardGroup> # Promotional Properties Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/promotional Properties for tracking promotions, campaigns, and affiliate activity — promotion IDs, creative names, and location tracking. Promotional properties help track on-site promotions, campaigns, and affiliate activity. ## Properties <CardGroup> <Card title="promotionId" icon="fingerprint" href="/event-tracking/event-taxonomy/properties/promotion-id"> Promotion/campaign identifier. </Card> <Card title="promotionName" icon="tag" href="/event-tracking/event-taxonomy/properties/promotion-name"> Promotion display name. </Card> <Card title="creativeName" icon="palette" href="/event-tracking/event-taxonomy/properties/creative-name"> Creative/ad variant name. </Card> <Card title="creativeSlot" icon="table-cells" href="/event-tracking/event-taxonomy/properties/creative-slot"> Placement position on page. </Card> <Card title="locationId" icon="location-dot" href="/event-tracking/event-taxonomy/properties/location-id"> Store/affiliate/location ID. </Card> </CardGroup> ## Quick Reference | Property | Type | Description | Events | | --------------- | ------ | ---------------------------------------- | -------------------------------------- | | `promotionId` | string | Promotion or campaign identifier | view\_content, add\_to\_cart, purchase | | `promotionName` | string | Promotion display name | view\_content, add\_to\_cart, purchase | | `creativeName` | string | Creative or ad variant name | view\_content, add\_to\_cart, purchase | | `creativeSlot` | string | Creative placement position | view\_content, add\_to\_cart, purchase | | `locationId` | string | Store, affiliate, or location identifier | All events | ## Example ```javascript theme={null} window._upstack('track', 'view_content', { items: [{ id: 'SKU_001', name: 'Running Shoes', price: 89.99 }], value: 89.99, currency: 'USD', promotionId: 'SUMMER_SALE_2026', promotionName: 'Summer Sale 2026', creativeName: 'hero_banner_v2', creativeSlot: 'homepage_hero', locationId: 'store_nyc_001' }); ``` ## Use Cases * **On-site promotions**: Track which banners and placements drive conversions * **Affiliate tracking**: Identify which partners referred customers * **Multi-location retail**: Attribute conversions to specific store locations # SaaS Event Properties Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/saas B2B/SaaS properties — account, subscription, trial, payment, seat, and churn tracking fields. For B2B/SaaS applications tracking accounts, subscriptions, trials, and recurring revenue. <Card title="SaaS Events Reference" icon="building" href="/event-tracking/event-taxonomy/saas-events"> See the complete SaaS Events Reference for event names, timing, and usage patterns. </Card> ## Account Properties | Property | Type | Description | Events | | ------------------ | ------ | ---------------------------------------------------------------------------- | ---------------------------------------------- | | `accountId` | string | Account or organization identifier | All SaaS events | | `accountName` | string | Account or organization display name | signup\_completed, account\_\* | | `accountCreatedAt` | string | ISO 8601 timestamp when account was created | signup\_completed | | `userId` | string | User identifier | signup\_completed, user\_joined, feature\_used | | `userEmail` | string | User's email address | signup\_completed, user\_joined | | `userRole` | string | User's role in the account: `"owner"`, `"admin"`, `"manager"`, or `"member"` | user\_joined, user\_\* | ## Subscription & Revenue Properties | Property | Type | Description | Events | | ----------------- | ------ | ------------------------------------------ | ---------------------------------------------------------------------------- | | `subscriptionId` | string | Subscription identifier | subscription\_*, trial\_*, payment\_\* | | `planId` | string | Plan identifier | trial\_*, subscription\_* | | `planName` | string | Human-readable plan name | trial\_*, subscription\_* | | `mrr` | number | Monthly recurring revenue in cents | subscription\_\*, trial\_converted | | `mrrDelta` | number | MRR change in cents (positive or negative) | subscription\_upgraded, subscription\_downgraded, seat\_added, seat\_removed | | `arr` | number | Annual recurring revenue in cents | subscription\_\*, trial\_converted | | `ltv` | number | Customer lifetime value in cents | subscription\_churned, account\_\* | | `billingInterval` | string | `"month"` or `"year"` | subscription\_*, payment\_* | ## Trial Properties | Property | Type | Description | Events | | -------------------- | ------ | ---------------------------------------- | ------------------------------------------- | | `trialDaysRemaining` | number | Days until trial expires | trial\_\* | | `trialStartDate` | string | ISO 8601 timestamp when trial started | trial\_started | | `trialEndDate` | string | ISO 8601 timestamp when trial ends/ended | trial\_\*, trial\_converted, trial\_expired | ## Payment Properties | Property | Type | Description | Events | | --------------- | ------ | -------------------------- | ----------------------------------- | | `invoiceId` | string | Invoice identifier | payment\_succeeded, payment\_failed | | `amount` | number | Payment amount in cents | payment\_succeeded, payment\_failed | | `failureReason` | string | Reason for payment failure | payment\_failed | ## Seat & Team Properties | Property | Type | Description | Events | | ----------- | ------ | ------------------------------------------------------ | -------------------------- | | `seatCount` | number | Total seats after change | seat\_added, seat\_removed | | `seatDelta` | number | Number of seats added (positive) or removed (negative) | seat\_added, seat\_removed | ## Add-on Properties | Property | Type | Description | Events | | ----------- | ------ | ------------------- | ---------------------------- | | `addonId` | string | Add-on identifier | addon\_added, addon\_removed | | `addonName` | string | Add-on display name | addon\_added, addon\_removed | ## Feature & Engagement Properties | Property | Type | Description | Events | | --------------- | ------ | --------------------------------------------------------- | -------------------------------------- | | `featureId` | string | Feature identifier | feature\_used, feature\_limit\_reached | | `featureName` | string | Feature display name | feature\_used, feature\_limit\_reached | | `usageInfo` | object | Usage details: `{ currentUsage, limit, usagePercentage }` | feature\_limit\_reached, usage\_\* | | `milestoneId` | string | Milestone identifier | milestone\_reached | | `milestoneName` | string | Milestone display name | milestone\_reached | ## Churn & Cancellation Properties | Property | Type | Description | Events | | ---------------- | ------ | ------------------------------------------- | ---------------------------------------------- | | `cancelReason` | string | Reason code for cancellation | subscription\_cancelled, subscription\_churned | | `cancelFeedback` | string | Free-text feedback from cancellation survey | subscription\_cancelled | | `cancelledAt` | string | ISO 8601 timestamp of cancellation | subscription\_cancelled, subscription\_churned | | `inactiveDays` | number | Days since last activity before churn | subscription\_churned | # searchTerm Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/search-term Search query entered by the user. Search query entered by the user. ```javascript theme={null} window._upstack('track', 'search', { searchTerm: 'blue running shoes', content_ids: ['SKU-001', 'SKU-002', 'SKU-003'] }); ``` | Type | Required | Events | | ------ | -------------- | ------ | | string | Yes for search | search | ## Related Properties <CardGroup> <Card title="content_ids" icon="list" href="/event-tracking/event-taxonomy/properties/content-ids"> Product IDs from search results. </Card> </CardGroup> # shipping Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/shipping Shipping cost for the order. Shipping cost for the order. ```javascript theme={null} window._upstack('track', 'purchase', { transactionId: 'ORD-12345', value: 134.99, currency: 'USD', shipping: 8.00 }); ``` | Type | Required | Events | | ------ | -------- | ------------------------------------------------- | | number | No | purchase, initiate\_checkout, add\_shipping\_info | ## Related Properties <CardGroup> <Card title="shippingTier" icon="gauge-high" href="/event-tracking/event-taxonomy/properties/shipping-tier"> Shipping speed/tier selected. </Card> <Card title="tax" icon="percent" href="/event-tracking/event-taxonomy/properties/tax"> Tax amount. </Card> </CardGroup> # shippingTier Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/shipping-tier Shipping tier selected by the customer. Shipping tier selected by the customer. ```javascript theme={null} window._upstack('track', 'purchase', { transactionId: 'ORD-12345', value: 134.99, currency: 'USD', shippingTier: 'express' }); ``` | Type | Required | Events | | ------ | -------- | ------------------------------------------------------- | | string | No | purchase, add\_shipping\_info, select\_shipping\_method | ## Common Values | Value | Description | | ----------- | ---------------------------- | | `standard` | Standard shipping (5-7 days) | | `express` | Express shipping (2-3 days) | | `overnight` | Next-day delivery | | `free` | Free shipping | | `pickup` | In-store pickup | <Note> These are suggested values. Any string is accepted. </Note> ## Related Properties <CardGroup> <Card title="shipping" icon="dollar-sign" href="/event-tracking/event-taxonomy/properties/shipping"> Shipping cost amount. </Card> <Card title="paymentType" icon="credit-card" href="/event-tracking/event-taxonomy/properties/payment-type"> Payment method used. </Card> </CardGroup> # subtotalPrice Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/subtotal-price Subtotal before tax and shipping. Subtotal before tax and shipping. ```javascript theme={null} window._upstack('track', 'purchase', { transactionId: 'ORD-12345', value: 134.99, // Final total currency: 'USD', subtotalPrice: 149.99 // Before discounts/tax/shipping }); ``` | Type | Required | Events | | ------ | -------- | ---------------------------- | | number | No | purchase, initiate\_checkout | ## Related Properties <CardGroup> <Card title="value" icon="coins" href="/event-tracking/event-taxonomy/properties/value"> Final order total. </Card> <Card title="tax" icon="percent" href="/event-tracking/event-taxonomy/properties/tax"> Tax amount. </Card> <Card title="shipping" icon="truck" href="/event-tracking/event-taxonomy/properties/shipping"> Shipping cost. </Card> <Card title="discount" icon="tag" href="/event-tracking/event-taxonomy/properties/discount"> Discount amount applied. </Card> </CardGroup> # tax Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/tax Tax amount applied to the order. Tax amount applied to the order. ```javascript theme={null} window._upstack('track', 'purchase', { transactionId: 'ORD-12345', value: 134.99, currency: 'USD', tax: 12.00 }); ``` | Type | Required | Events | | ------ | -------- | ---------------------------- | | number | No | purchase, initiate\_checkout | ## Related Properties <CardGroup> <Card title="subtotalPrice" icon="receipt" href="/event-tracking/event-taxonomy/properties/subtotal-price"> Subtotal before tax and shipping. </Card> <Card title="shipping" icon="truck" href="/event-tracking/event-taxonomy/properties/shipping"> Shipping cost. </Card> </CardGroup> # transactionId / orderId Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/transaction-id Unique identifier for the order. Use either transactionId or orderId. Unique identifier for the order. Use either `transactionId` or `orderId` — they're interchangeable. ```javascript theme={null} window._upstack('track', 'purchase', { transactionId: 'ORD-2026-001', // or orderId: 'ORD-2026-001' value: 149.99, currency: 'USD' }); ``` | Type | Required | Events | | ------ | ----------------------- | ---------------- | | string | Yes for purchase/refund | purchase, refund | <Note> For Shopify stores, this is typically the Shopify order ID (e.g., `shopify_order_5678901234`). </Note> ## Related Properties <CardGroup> <Card title="orderName" icon="hashtag" href="/event-tracking/event-taxonomy/properties/order-name"> Human-readable order number shown to customers. </Card> <Card title="value" icon="coins" href="/event-tracking/event-taxonomy/properties/value"> The monetary value of the order. </Card> </CardGroup> # value Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/properties/value The monetary value of the event. Always pair with currency. The monetary value of the event. Always pair with `currency`. ```javascript theme={null} window._upstack('track', 'purchase', { value: 99.99, currency: 'USD' }); ``` | Type | Required | Events | | ------ | --------------------------------- | ------------------------------------------------------------------------------------------- | | number | Yes for purchase, lead, subscribe | purchase, add\_to\_cart, view\_content, initiate\_checkout, lead, subscribe, trial\_started | <Warning> For Purchase events, `value` should match the order total you want reported to ad platforms. Mismatched values between Shopify and your destinations are the most common attribution debugging issue. </Warning> ## Related Properties <CardGroup> <Card title="currency" icon="dollar-sign" href="/event-tracking/event-taxonomy/properties/currency"> ISO 4217 currency code — required with value. </Card> <Card title="subtotalPrice" icon="receipt" href="/event-tracking/event-taxonomy/properties/subtotal-price"> Subtotal before tax and shipping. </Card> </CardGroup> # Quiz Events Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/quiz-events Track quiz funnels and product recommendation flows with quiz_completed and quiz_question_answered events. Quiz events help you track product recommendation quizzes, style finders, assessments, and other interactive quiz experiences. Use these events to understand quiz completion rates, segment customers by quiz results, and trigger personalized follow-up flows. <Note> **Custom Events** — Quiz events are not automatically tracked. Fire them manually using the JavaScript SDK at the appropriate points in your quiz flow. </Note> ## Available Events <CardGroup> <Card title="quiz_completed" icon="flag-checkered" href="/event-tracking/event-taxonomy/quiz-events/quiz-completed"> Fires when a visitor completes a quiz. Captures the result, recommended products, and completion time. </Card> <Card title="quiz_question_answered" icon="circle-question" href="/event-tracking/event-taxonomy/quiz-events/quiz-question-answered"> Fires when a visitor answers an individual question. Use for funnel analysis and drop-off tracking. </Card> </CardGroup> ## Use Cases ### Product Recommendation Quizzes Track quizzes that help customers find the right product: ```javascript theme={null} // Track each question for funnel analysis window._upstack('track', 'quiz_question_answered', { quiz_id: 'skin-type-finder', question_id: 'q1', question_text: 'What is your skin type?', answer_id: 'oily', answer_text: 'Oily', question_number: 1, total_questions: 5 }); // Track quiz completion with results window._upstack('track', 'quiz_completed', { quiz_id: 'skin-type-finder', quiz_name: 'Find Your Perfect Skincare Routine', result_id: 'oily-acne-prone', result_name: 'Oily & Acne-Prone Skin', recommended_products: ['SKU-1234', 'SKU-5678'], questions_answered: 5, time_to_complete: 120 }); ``` ### Funnel Analysis Track `quiz_question_answered` for each question to identify where users drop off: | Question | Started | Completed | Drop-off | | ------------- | ------- | --------- | --------- | | Q1: Skin Type | 1,000 | 920 | 8% | | Q2: Concerns | 920 | 850 | 7.6% | | Q3: Budget | 850 | 780 | 8.2% | | Q4: Routine | 780 | 750 | 3.8% | | Q5: Products | 750 | 720 | 4% | | **Completed** | — | 720 | 28% total | ### Klaviyo Personalization Use quiz results to trigger personalized email flows: 1. Fire `quiz_completed` with `result_id` and `result_name` 2. In Klaviyo, create a flow triggered by the `quiz_completed` event 3. Use the `result_id` property to branch into different email sequences 4. Include `recommended_products` in product recommendation blocks ## Destination Support | Destination | quiz\_completed | quiz\_question\_answered | | --------------------- | ------------------------------ | ------------------------ | | **Meta CAPI** | ✅ Custom event | ✅ Custom event | | **TikTok Events API** | ✅ Supported | ✅ Supported | | **Klaviyo** | ✅ Full support with properties | ✅ Full support | | **GA4** | ✅ Custom event | ✅ Custom event | | **Webhook** | ✅ Raw payload | ✅ Raw payload | <Tip> **Best practice:** Always include `quiz_id` on both events so you can correlate question-level data with completion data in your analytics. </Tip> ## Related * [Custom Events](/event-tracking/event-taxonomy/custom-events) — General guide for firing custom events * [lead](/event-tracking/event-taxonomy/standard-events/lead) — Capture contact info during or after quiz * [view\_content](/event-tracking/event-taxonomy/standard-events/view-content) — Track when quiz results show product recommendations # quiz_completed Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/quiz-events/quiz-completed Track when a visitor completes a quiz or assessment Fires when a visitor completes a quiz, product recommendation quiz, or assessment. This is a recommended custom event for tracking quiz funnels and product discovery flows. <Note> **Custom Event** — This event is not automatically tracked. Fire it manually using the JavaScript SDK when a quiz is completed. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'quiz_completed', { quiz_id: 'skin-type-finder', quiz_name: 'Find Your Perfect Skincare Routine', result_id: 'oily-acne-prone', result_name: 'Oily & Acne-Prone Skin', questions_answered: 8, time_to_complete: 145, value: 25.00, currency: 'USD' }); ``` Quiz with product recommendations: ```javascript theme={null} window._upstack('track', 'quiz_completed', { quiz_id: 'gift-finder', quiz_name: 'Holiday Gift Finder', result_id: 'tech-enthusiast', recommended_products: ['SKU-1234', 'SKU-5678', 'SKU-9012'], questions_answered: 5 }); ``` ## Properties | Property | Type | Required | Description | | --------------------- | --------- | -------- | --------------------------------------------- | | quiz\_id | string | Yes | Unique identifier for the quiz | | quiz\_name | string | No | Human-readable quiz title | | result\_id | string | No | Identifier for the quiz result or outcome | | result\_name | string | No | Human-readable result description | | questions\_answered | number | No | Total questions completed | | time\_to\_complete | number | No | Seconds from quiz start to completion | | recommended\_products | string\[] | No | Array of product SKUs recommended by the quiz | | value | number | No | Estimated value of the quiz completion | | currency | string | No | ISO 4217 currency code | ## When to Fire * Product recommendation quiz completion * Skin type or style finder completion * Gift guide quiz completion * Assessment or diagnostic quiz completion * Personality quiz completion ## Destination Support | Destination | Support | | --------------------- | --------------------------------------------------------------------------------- | | **Meta CAPI** | Supported as `Custom` event type. Use for building audiences of quiz completers. | | **TikTok Events API** | Supported. Use for audience building. | | **Klaviyo** | Fully supported. Triggers flows based on quiz results for personalized follow-up. | | **GA4** | Supported. Maps to custom event with parameters. | | **Webhook** | Fully supported. Raw payload forwarded. | <Tip> **Personalization tip:** Pass the `result_id` to Klaviyo to trigger personalized email flows based on quiz outcomes. Segment customers by their quiz results for targeted product recommendations. </Tip> ## Related Events * [quiz\_question\_answered](/event-tracking/event-taxonomy/quiz-events/quiz-question-answered) — Track individual question responses * [lead](/event-tracking/event-taxonomy/standard-events/lead) — For capturing contact info during or after quiz * [view\_content](/event-tracking/event-taxonomy/standard-events/view-content) — When quiz results include product views # quiz_question_answered Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/quiz-events/quiz-question-answered Track individual quiz question responses for funnel analysis Fires when a visitor answers a question in a quiz or assessment. This is a recommended custom event for tracking quiz progress, identifying drop-off points, and analyzing answer patterns. <Note> **Custom Event** — This event is not automatically tracked. Fire it manually using the JavaScript SDK after each question is answered. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'quiz_question_answered', { quiz_id: 'skin-type-finder', question_id: 'q3_skin_concerns', question_number: 3, question_text: 'What are your primary skin concerns?', answer_id: 'acne', answer_text: 'Acne & Breakouts', total_questions: 8 }); ``` Multiple-choice question with multiple answers: ```javascript theme={null} window._upstack('track', 'quiz_question_answered', { quiz_id: 'gift-finder', question_id: 'q2_interests', question_number: 2, question_text: 'What are their interests?', answer_ids: ['tech', 'outdoors', 'cooking'], answer_texts: ['Technology', 'Outdoors & Adventure', 'Cooking & Food'], total_questions: 5 }); ``` ## Properties | Property | Type | Required | Description | | ------------------ | --------- | -------- | ----------------------------------------- | | quiz\_id | string | Yes | Unique identifier for the quiz | | question\_id | string | Yes | Unique identifier for the question | | question\_number | number | No | Position of the question (1-indexed) | | question\_text | string | No | The question text displayed to the user | | answer\_id | string | No | Identifier for single-choice answer | | answer\_ids | string\[] | No | Identifiers for multiple-choice answers | | answer\_text | string | No | Display text for single-choice answer | | answer\_texts | string\[] | No | Display texts for multiple-choice answers | | total\_questions | number | No | Total number of questions in the quiz | | time\_on\_question | number | No | Seconds spent on this question | ## When to Fire * After each quiz question is submitted * When a user selects an answer (if auto-advancing) * When moving to the next question in a multi-step quiz ## Destination Support | Destination | Support | | --------------------- | ------------------------------------------------------------------------------------ | | **Meta CAPI** | Supported as `Custom` event type. Build audiences based on specific answer patterns. | | **TikTok Events API** | Supported. Use for audience building. | | **Klaviyo** | Fully supported. Track answer patterns for segmentation. | | **GA4** | Supported. Use for funnel analysis and drop-off tracking. | | **Webhook** | Fully supported. Raw payload forwarded. | <Tip> **Funnel analysis tip:** Track `question_number` and `total_questions` to identify where users drop off. High drop-off on a specific question may indicate confusing wording or too many options. </Tip> ## Related Events * [quiz\_completed](/event-tracking/event-taxonomy/quiz-events/quiz-completed) — Fire when the quiz is finished * [lead](/event-tracking/event-taxonomy/standard-events/lead) — If capturing contact info mid-quiz # SaaS & B2B Events Reference Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events Track SaaS events with Upstack Data — subscription lifecycle, trials, payments, seat expansion, and user engagement with copyable JavaScript snippets. <Info> These events are designed for **B2B SaaS** and **subscription-based businesses**. If you're running an e-commerce store, see [Standard Events](/event-tracking/event-taxonomy/standard-events) instead. </Info> ## When to Use SaaS Events Use these events when your business model includes: * **Subscription billing** (monthly/annual plans) * **Free trials** with conversion tracking * **Seat-based pricing** with expansion revenue * **Multi-user accounts** with role-based access * **Product-led growth** with feature usage tracking *** ## Account Lifecycle Track account creation and deletion to measure growth and churn. ### account\_created Fires when a new account (organization/workspace) is created. #### JavaScript ```javascript theme={null} window._upstack('track', 'account_created', { accountId: 'acct_abc123', accountName: 'Acme Corporation', planId: 'plan_starter_monthly', planName: 'Starter', userId: 'usr_xyz789', userEmail: 'jane@acme.com' }); ``` #### Properties | Property | Type | Required | Description | | ----------- | ------ | -------- | ------------------------- | | accountId | string | Yes | Unique account identifier | | accountName | string | No | Account/organization name | | planId | string | No | Initial plan identifier | | planName | string | No | Initial plan name | | userId | string | No | Creating user's ID | | userEmail | string | No | Creating user's email | #### When to Fire * After account registration completes * After organization setup wizard finishes * After SSO provisioning creates a new workspace *** ### account\_deleted Fires when an account is permanently deleted. #### JavaScript ```javascript theme={null} window._upstack('track', 'account_deleted', { accountId: 'acct_abc123', accountName: 'Acme Corporation', cancelReason: 'no_longer_needed', cancelFeedback: 'Switching to a different solution', mrr: 9900 }); ``` #### Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | -------------------------- | | accountId | string | Yes | Deleted account identifier | | accountName | string | No | Account name | | cancelReason | string | No | Reason code for deletion | | cancelFeedback | string | No | User-provided feedback | | mrr | number | No | Lost MRR in cents | #### When to Fire * After account deletion confirmation * After workspace removal completes * After data retention period expires *** ## Acquisition Track the lead-to-signup funnel to measure conversion rates. ### signup\_started Fires when a user begins the signup flow. #### JavaScript ```javascript theme={null} window._upstack('track', 'signup_started', { planId: 'plan_pro_monthly', source: 'pricing_page' }); ``` #### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | --------------------------------- | | planId | string | No | Pre-selected plan (if applicable) | | source | string | No | Where signup was initiated | #### When to Fire * When signup form is opened * When registration page loads * When "Start Free Trial" button is clicked *** ### signup\_completed Fires when a user completes signup and creates an account. #### JavaScript ```javascript theme={null} window._upstack('track', 'signup_completed', { userId: 'usr_xyz789', accountId: 'acct_abc123', userEmail: 'jane@acme.com', planId: 'plan_pro_monthly', planName: 'Pro Plan' }); ``` #### Properties | Property | Type | Required | Description | | --------- | ------ | -------- | ---------------------- | | userId | string | Yes | New user identifier | | accountId | string | Yes | New account identifier | | userEmail | string | No | User email address | | planId | string | No | Selected plan | | planName | string | No | Plan display name | #### When to Fire * After signup form submission succeeds * After email verification completes * After OAuth signup flow finishes *** ### demo\_requested Fires when a user requests a product demo. #### JavaScript ```javascript theme={null} window._upstack('track', 'demo_requested', { userEmail: 'buyer@enterprise.com', companyName: 'Enterprise Corp', companySize: '500-1000', useCase: 'marketing_analytics' }); ``` #### Properties | Property | Type | Required | Description | | ----------- | ------ | -------- | ------------------ | | userEmail | string | No | Requester email | | companyName | string | No | Company name | | companySize | string | No | Company size range | | useCase | string | No | Primary use case | #### When to Fire * After demo request form submission * After sales call booking confirmation * After Calendly/HubSpot meeting scheduled *** ## Trial Events Track the trial lifecycle from start to conversion or expiry. ### trial\_started Fires when a user begins a free trial. #### JavaScript ```javascript theme={null} window._upstack('track', 'trial_started', { accountId: 'acct_abc123', planId: 'plan_pro_monthly', planName: 'Pro Plan', trialEndDate: '2026-03-04T14:30:00.000Z', trialDaysRemaining: 14 }); ``` #### Properties | Property | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------ | | accountId | string | Yes | Account identifier | | planId | string | Yes | Trial plan identifier | | planName | string | No | Human-readable plan name | | trialEndDate | string | No | ISO 8601 trial expiration date | | trialDaysRemaining | number | No | Days until trial expires | #### When to Fire * After trial signup confirmation * After trial activation in billing system * After Stripe `customer.subscription.created` with trial *** ### trial\_activated Fires when a trial user reaches a meaningful activation milestone. #### JavaScript ```javascript theme={null} window._upstack('track', 'trial_activated', { accountId: 'acct_abc123', planId: 'plan_pro_monthly', trialDaysRemaining: 12, activationMilestone: 'first_integration_connected' }); ``` #### Properties | Property | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------- | | accountId | string | Yes | Account identifier | | planId | string | No | Trial plan identifier | | trialDaysRemaining | number | No | Days remaining in trial | | activationMilestone | string | No | Which milestone was reached | #### When to Fire * After first key feature is used * After onboarding checklist is completed * After first data import succeeds *** ### trial\_extended Fires when a trial period is extended. #### JavaScript ```javascript theme={null} window._upstack('track', 'trial_extended', { accountId: 'acct_abc123', trialEndDate: '2026-03-11T14:30:00.000Z', trialDaysRemaining: 7, extensionReason: 'support_request' }); ``` #### Properties | Property | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------- | | accountId | string | Yes | Account identifier | | trialEndDate | string | No | New trial end date | | trialDaysRemaining | number | No | New days remaining | | extensionReason | string | No | Why trial was extended | #### When to Fire * After support manually extends trial * After promotional extension is applied * After win-back campaign grants extension *** ### trial\_ending\_soon Fires when a trial is about to expire (typically 3 days before). #### JavaScript ```javascript theme={null} window._upstack('track', 'trial_ending_soon', { accountId: 'acct_abc123', trialDaysRemaining: 3, planId: 'plan_pro_monthly', trialEndDate: '2026-03-04T14:30:00.000Z' }); ``` #### Properties | Property | Type | Required | Description | | ------------------ | ------ | -------- | --------------------- | | accountId | string | Yes | Account identifier | | trialDaysRemaining | number | Yes | Days until expiry | | planId | string | No | Trial plan identifier | | trialEndDate | string | No | Trial expiration date | #### When to Fire * 3 days before trial expires (common) * When Stripe sends `customer.subscription.trial_will_end` * When automated warning email triggers *** ### trial\_expired Fires when a trial ends without conversion. #### JavaScript ```javascript theme={null} window._upstack('track', 'trial_expired', { accountId: 'acct_abc123', planId: 'plan_pro_monthly', planName: 'Pro Plan', trialDays: 14 }); ``` #### Properties | Property | Type | Required | Description | | --------- | ------ | -------- | ------------------ | | accountId | string | Yes | Account identifier | | planId | string | No | Expired trial plan | | planName | string | No | Plan display name | | trialDays | number | No | Total trial length | #### When to Fire * When trial end date is reached without payment * When account is downgraded to free tier * When access is revoked after grace period *** ### trial\_converted Fires when a trial converts to a paid subscription. This is a key conversion event. #### JavaScript ```javascript theme={null} window._upstack('track', 'trial_converted', { accountId: 'acct_abc123', subscriptionId: 'sub_def456', planId: 'plan_pro_monthly', planName: 'Pro Plan', mrr: 9900, billingInterval: 'month' }); ``` #### Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------- | | accountId | string | Yes | Account identifier | | subscriptionId | string | Yes | New subscription ID | | planId | string | Yes | Converted plan identifier | | planName | string | No | Plan display name | | mrr | number | No | Monthly recurring revenue in cents | | billingInterval | string | No | `month` or `year` | #### When to Fire * After first successful payment * When Stripe subscription status changes from `trialing` to `active` * After payment method is charged successfully <Tip> Track `mrr` to measure trial-to-paid conversion value and calculate average revenue per converted trial. </Tip> *** ## Subscription Lifecycle Track the complete subscription journey from creation through churn or reactivation. ### subscription\_created Fires when a subscription record is created in your billing system. #### JavaScript ```javascript theme={null} window._upstack('track', 'subscription_created', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', planName: 'Pro Plan', billingInterval: 'month' }); ``` #### Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | Yes | Plan identifier | | planName | string | No | Plan display name | | billingInterval | string | No | `day`, `week`, `month`, or `year` | #### When to Fire * When subscription object is created in Stripe * May precede first payment (for trials) * After checkout session completes *** ### subscription\_started Fires when a new subscription begins (first billing period starts). #### JavaScript ```javascript theme={null} window._upstack('track', 'subscription_started', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', planName: 'Pro Plan', mrr: 9900, billingInterval: 'month' }); ``` #### Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | Yes | Plan identifier | | planName | string | No | Plan display name | | mrr | number | No | Monthly recurring revenue in cents | | billingInterval | string | No | Billing frequency | #### When to Fire * After first successful charge * When subscription status becomes `active` * After trial converts to paid *** ### subscription\_upgraded Fires when a customer upgrades to a higher-tier plan. #### JavaScript ```javascript theme={null} window._upstack('track', 'subscription_upgraded', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_business_monthly', planName: 'Business', previousPlanId: 'plan_pro_monthly', mrr: 19900, mrrDelta: 10000 }); ``` #### Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | New plan identifier | | planName | string | No | New plan name | | previousPlanId | string | No | Previous plan identifier | | mrr | number | No | New MRR after upgrade in cents | | mrrDelta | number | No | MRR increase in cents (positive) | #### When to Fire * When plan changes from lower to higher tier * When Stripe subscription item is updated with higher-priced plan * After upgrade checkout completes <Tip> Track `mrrDelta` alongside `subscription_downgraded` to calculate net revenue retention. </Tip> *** ### subscription\_downgraded Fires when a customer downgrades to a lower-tier plan. #### JavaScript ```javascript theme={null} window._upstack('track', 'subscription_downgraded', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_starter_monthly', planName: 'Starter', previousPlanId: 'plan_pro_monthly', mrr: 4900, mrrDelta: -5000 }); ``` #### Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | New plan identifier | | planName | string | No | New plan name | | previousPlanId | string | No | Previous plan identifier | | mrr | number | No | New MRR after downgrade in cents | | mrrDelta | number | No | MRR decrease in cents (negative) | #### When to Fire * When plan changes from higher to lower tier * When features are removed from subscription * When scheduled downgrade takes effect at period end *** ### subscription\_renewed <Note> This is a **custom event name**. For standard renewal tracking, consider using `payment_succeeded` or `invoice_paid` events instead. </Note> Fires when a subscription successfully renews for another billing period. #### JavaScript ```javascript theme={null} window._upstack('track', 'subscription_renewed', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', mrr: 9900, renewalCount: 6 }); ``` #### Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ----------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | Current plan identifier | | mrr | number | No | Renewed MRR in cents | | renewalCount | number | No | Number of times renewed | #### When to Fire * When recurring payment succeeds * When billing period advances * When Stripe `invoice.paid` fires for subscription *** ### subscription\_paused Fires when a subscription is paused. #### JavaScript ```javascript theme={null} window._upstack('track', 'subscription_paused', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', mrr: 9900, pauseReason: 'seasonal_business' }); ``` #### Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | --------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | Plan identifier | | mrr | number | No | Paused MRR in cents | | pauseReason | string | No | Why subscription was paused | #### When to Fire * When customer requests pause * When seasonal pause is activated * When Stripe subscription pause feature triggers *** ### subscription\_resumed Fires when a paused subscription is resumed. #### JavaScript ```javascript theme={null} window._upstack('track', 'subscription_resumed', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', mrr: 9900, pausedDays: 30 }); ``` #### Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | Plan identifier | | mrr | number | No | Resumed MRR in cents | | pausedDays | number | No | How long subscription was paused | #### When to Fire * When customer manually resumes * When pause period ends automatically * When billing restarts *** ### subscription\_cancelled Fires when a cancellation is requested (may still be active until period end). #### JavaScript ```javascript theme={null} window._upstack('track', 'subscription_cancelled', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', cancelReason: 'too_expensive', cancelFeedback: 'Budget constraints this quarter', mrr: 9900, cancelAtPeriodEnd: true }); ``` #### Properties | Property | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | Cancelled plan | | cancelReason | string | No | Cancellation reason code | | cancelFeedback | string | No | User-provided feedback | | mrr | number | No | MRR being cancelled in cents | | cancelAtPeriodEnd | boolean | No | If true, cancels at end of billing period | #### When to Fire * When customer clicks cancel button * When cancellation request is submitted * When Stripe subscription is set to cancel at period end *** ### subscription\_churned Fires when a subscription ends completely (no longer billing). This is the final churn event. #### JavaScript ```javascript theme={null} window._upstack('track', 'subscription_churned', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', cancelReason: 'switched_competitor', mrr: 9900, ltv: 118800, subscriptionMonths: 12 }); ``` #### Properties | Property | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | Churned plan | | cancelReason | string | No | Churn reason | | mrr | number | No | Lost MRR in cents | | ltv | number | No | Customer lifetime value in cents | | subscriptionMonths | number | No | How long they were subscribed | #### When to Fire * When final billing period ends * When subscription is deactivated * When Stripe `customer.subscription.deleted` fires <Warning> Use this event to calculate churn rate and analyze churn reasons. Track `ltv` to understand which customer segments have the highest lifetime value. </Warning> *** ### subscription\_initial\_purchase Fires when a customer's first subscription payment is processed (distinct from trial conversion). #### JavaScript ```javascript theme={null} window._upstack('track', 'subscription_initial_purchase', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', planName: 'Pro Plan', value: 9900, currency: 'USD', billingInterval: 'month' }); ``` #### Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | ----------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | Plan identifier | | planName | string | No | Plan display name | | value | number | No | Payment amount in cents | | currency | string | No | ISO 4217 currency code | | billingInterval | string | No | `month` or `year` | #### When to Fire * First subscription charge succeeds * After trial converts (first paid billing period) * When new customer's initial payment processes *** ### subscription\_recurring\_purchase Fires when a recurring subscription payment is processed (not the initial purchase). #### JavaScript ```javascript theme={null} window._upstack('track', 'subscription_recurring_purchase', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', planName: 'Pro Plan', value: 9900, currency: 'USD', billingInterval: 'month', renewalNumber: 6 }); ``` #### Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | Plan identifier | | planName | string | No | Plan display name | | value | number | No | Payment amount in cents | | currency | string | No | ISO 4217 currency code | | billingInterval | string | No | `month` or `year` | | renewalNumber | number | No | Which renewal this is (2nd, 3rd, etc.) | #### When to Fire * Each recurring billing cycle * When Stripe `invoice.paid` fires for an existing subscription * Monthly/annual renewal charge succeeds <Tip> Use `subscription_initial_purchase` for acquisition metrics and `subscription_recurring_purchase` for retention/LTV analysis. Together they give a complete picture of subscription revenue. </Tip> *** ### subscription\_reactivated Fires when a previously churned customer resubscribes. #### JavaScript ```javascript theme={null} window._upstack('track', 'subscription_reactivated', { subscriptionId: 'sub_ghi789', accountId: 'acct_abc123', planId: 'plan_pro_monthly', planName: 'Pro Plan', mrr: 9900, daysSinceChurn: 45 }); ``` #### Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------- | | subscriptionId | string | Yes | New subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | New plan identifier | | planName | string | No | Plan display name | | mrr | number | No | Recovered MRR in cents | | daysSinceChurn | number | No | Days between churn and reactivation | #### When to Fire * When former customer signs up again * When win-back campaign converts * When churned account starts new subscription *** ## Order Fulfillment Events Track order fulfillment and shipping for e-commerce subscription boxes, physical product deliveries, and Klaviyo flow triggers. ### order\_fulfilled Fires when an order has been completely fulfilled (all items prepared for shipment). #### JavaScript ```javascript theme={null} window._upstack('track', 'order_fulfilled', { orderId: 'ORD_12345', orderName: '#1042', value: 149.99, currency: 'USD', fulfillmentStatus: 'fulfilled', items: [ { id: 'SKU_001', name: 'Monthly Snack Box', price: 39.99, quantity: 1 } ], email: 'customer@example.com' }); ``` #### Properties | Property | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------- | | orderId | string | Yes | Order identifier | | orderName | string | No | Human-readable order name | | value | number | No | Order value | | currency | string | No | ISO 4217 currency code | | fulfillmentStatus | string | No | Fulfillment status (e.g., `'fulfilled'`, `'partial'`) | | items | array | No | Products fulfilled | | email | string | No | Customer email | #### When to Fire * When warehouse marks order as packed/ready * When Shopify fulfillment is created * When all items in an order are fulfilled *** ### order\_shipped Fires when an order has been shipped and tracking information is available. #### JavaScript ```javascript theme={null} window._upstack('track', 'order_shipped', { orderId: 'ORD_12345', orderName: '#1042', value: 149.99, currency: 'USD', trackingNumber: '1Z999AA10123456784', trackingCompany: 'UPS', trackingUrl: 'https://www.ups.com/track?tracknum=1Z999AA10123456784', estimatedDelivery: '2026-02-25T00:00:00.000Z', items: [ { id: 'SKU_001', name: 'Monthly Snack Box', price: 39.99, quantity: 1 } ], email: 'customer@example.com' }); ``` #### Properties | Property | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------- | | orderId | string | Yes | Order identifier | | orderName | string | No | Human-readable order name | | value | number | No | Order value | | currency | string | No | ISO 4217 currency code | | trackingNumber | string | No | Carrier tracking number | | trackingCompany | string | No | Shipping carrier (e.g., `'UPS'`, `'FedEx'`, `'USPS'`) | | trackingUrl | string | No | Direct link to tracking page | | estimatedDelivery | string | No | ISO 8601 estimated delivery date | | items | array | No | Products shipped | | email | string | No | Customer email | #### When to Fire * When shipping label is created with tracking * When carrier picks up package * When Shopify `fulfillment_events/create` webhook fires <Tip> **Klaviyo integration:** `order_shipped` is commonly used to trigger post-purchase flows like "Your order is on the way" emails with tracking information. </Tip> *** ## User Events Track team growth and user engagement within accounts. ### user\_invited Fires when a user is invited to join an account. #### JavaScript ```javascript theme={null} window._upstack('track', 'user_invited', { accountId: 'acct_abc123', inviteeEmail: 'newmember@acme.com', inviteeRole: 'member', invitedByUserId: 'usr_xyz789' }); ``` #### Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | --------------------- | | accountId | string | Yes | Account identifier | | inviteeEmail | string | No | Invitee email address | | inviteeRole | string | No | Assigned role | | invitedByUserId | string | No | Inviter's user ID | #### When to Fire * When team invite is sent * When collaboration request is initiated * After invite email is dispatched *** ### user\_joined Fires when an invited user accepts and joins the account. #### JavaScript ```javascript theme={null} window._upstack('track', 'user_joined', { userId: 'usr_newmember', accountId: 'acct_abc123', userEmail: 'newmember@acme.com', userRole: 'member' }); ``` #### Properties | Property | Type | Required | Description | | --------- | ------ | -------- | -------------------- | | userId | string | Yes | New user identifier | | accountId | string | Yes | Account identifier | | userEmail | string | No | User email address | | userRole | string | No | User's assigned role | #### When to Fire * When invite is accepted * When account access is granted * After user completes join flow *** ### user\_role\_changed <Note> This is a **custom event name**. Track it using the [Custom Events](/guides/custom-events/how-to-create-custom-event-triggers) pattern if you need role change analytics. </Note> Fires when a user's role is changed within an account. #### JavaScript ```javascript theme={null} window._upstack('track', 'user_role_changed', { userId: 'usr_xyz789', accountId: 'acct_abc123', previousRole: 'member', newRole: 'admin', changedByUserId: 'usr_admin123' }); ``` #### Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | ------------------------- | | userId | string | Yes | User whose role changed | | accountId | string | Yes | Account identifier | | previousRole | string | No | Previous role | | newRole | string | No | New role | | changedByUserId | string | No | Admin who made the change | #### When to Fire * When user is promoted to admin * When permissions are modified * After role update is saved *** ## Billing Events Track payment activity for revenue analytics and dunning workflows. ### payment\_succeeded Fires when a payment is processed successfully. #### JavaScript ```javascript theme={null} window._upstack('track', 'payment_succeeded', { accountId: 'acct_abc123', invoiceId: 'inv_ghi012', subscriptionId: 'sub_def456', amount: 9900, currency: 'USD' }); ``` #### Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ----------------------- | | accountId | string | Yes | Account identifier | | amount | number | Yes | Payment amount in cents | | invoiceId | string | No | Invoice identifier | | subscriptionId | string | No | Subscription identifier | | currency | string | No | ISO 4217 currency code | #### When to Fire * When charge succeeds * When invoice is paid * When Stripe `invoice.paid` webhook fires *** ### payment\_failed Fires when a payment attempt fails. #### JavaScript ```javascript theme={null} window._upstack('track', 'payment_failed', { accountId: 'acct_abc123', invoiceId: 'inv_ghi012', subscriptionId: 'sub_def456', amount: 9900, failureReason: 'card_declined', failureCode: 'insufficient_funds', currency: 'USD' }); ``` #### Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------ | | accountId | string | Yes | Account identifier | | amount | number | Yes | Failed payment amount in cents | | invoiceId | string | No | Invoice identifier | | subscriptionId | string | No | Subscription identifier | | failureReason | string | No | Failure reason code | | failureCode | string | No | Detailed failure code | | currency | string | No | ISO 4217 currency code | #### When to Fire * When card is declined * When insufficient funds error occurs * When Stripe `invoice.payment_failed` webhook fires <Warning> Track payment failures to identify at-risk customers and trigger dunning workflows. </Warning> *** ### invoice\_paid Fires when an invoice is marked as paid. #### JavaScript ```javascript theme={null} window._upstack('track', 'invoice_paid', { accountId: 'acct_abc123', invoiceId: 'inv_ghi012', subscriptionId: 'sub_def456', amount: 9900, currency: 'USD' }); ``` #### Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ----------------------- | | accountId | string | Yes | Account identifier | | invoiceId | string | Yes | Invoice identifier | | amount | number | Yes | Paid amount in cents | | subscriptionId | string | No | Subscription identifier | | currency | string | No | ISO 4217 currency code | #### When to Fire * When payment is received * When manual reconciliation marks invoice paid * When Stripe `invoice.paid` webhook fires *** ## Expansion Events Track seat-based and add-on revenue expansion. ### seat\_added Fires when additional seats are purchased. #### JavaScript ```javascript theme={null} window._upstack('track', 'seat_added', { accountId: 'acct_abc123', subscriptionId: 'sub_def456', seatCount: 15, seatDelta: 5, mrrDelta: 2500 }); ``` #### Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------- | | accountId | string | Yes | Account identifier | | seatCount | number | Yes | Total seats after addition | | subscriptionId | string | No | Subscription identifier | | seatDelta | number | No | Number of seats added | | mrrDelta | number | No | MRR increase from seats in cents | #### When to Fire * When seats are purchased * When user is added beyond plan limit * When Stripe subscription quantity increases *** ### seat\_removed Fires when seats are removed from the plan. #### JavaScript ```javascript theme={null} window._upstack('track', 'seat_removed', { accountId: 'acct_abc123', subscriptionId: 'sub_def456', seatCount: 10, seatDelta: -5, mrrDelta: -2500 }); ``` #### Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------- | | accountId | string | Yes | Account identifier | | seatCount | number | Yes | Total seats after removal | | subscriptionId | string | No | Subscription identifier | | seatDelta | number | No | Number of seats removed (negative) | | mrrDelta | number | No | MRR decrease in cents (negative) | #### When to Fire * When seats are removed * When user is deactivated * When Stripe subscription quantity decreases *** ## Engagement Events Track user activity and product milestones. ### feature\_used Fires when a specific feature is used. Track key features to understand product adoption. #### JavaScript ```javascript theme={null} window._upstack('track', 'feature_used', { accountId: 'acct_abc123', userId: 'usr_xyz789', featureId: 'feat_export', featureName: 'CSV Export', featureCategory: 'reporting' }); ``` #### Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | ------------------------- | | accountId | string | Yes | Account identifier | | featureId | string | Yes | Feature identifier | | userId | string | No | User who used the feature | | featureName | string | No | Feature display name | | featureCategory | string | No | Feature category | #### When to Fire * When key features are used * When premium features are accessed * When usage-based actions are performed *** ### milestone\_reached Fires when a key milestone is achieved. #### JavaScript ```javascript theme={null} window._upstack('track', 'milestone_reached', { accountId: 'acct_abc123', milestoneId: 'milestone_100_orders', milestoneName: '100 Orders Processed', milestoneValue: 100 }); ``` #### Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ---------------------- | | accountId | string | Yes | Account identifier | | milestoneId | string | Yes | Milestone identifier | | milestoneName | string | No | Milestone display name | | milestoneValue | number | No | Numeric value achieved | #### When to Fire * When usage threshold is crossed * When achievement is unlocked * When significant product milestone occurs *** ## Stripe Webhook Integration If you use Stripe for billing, handle webhooks to track events automatically. <Warning> Webhook handlers run server-side where `window._upstack()` is not available. Server-side event tracking requires the Upstack Server API. Contact support for early access, or use the patterns below to queue events for client-side tracking. </Warning> ### Server-Side Helper Pattern Create a helper to queue events for server-side tracking: ```javascript theme={null} // utils/tracking.js async function trackServerEvent(eventName, properties) { // Option 1: Direct API call (requires Server API access) await fetch('https://api.getupstack.com/v1/events', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${process.env.UPSTACK_API_KEY}` }, body: JSON.stringify({ event: eventName, properties, timestamp: new Date().toISOString() }) }); // Option 2: Store in database for later sync // await db.pendingEvents.create({ eventName, properties }); } ``` ### Example Webhook Handler ```javascript theme={null} // Express.js webhook handler (server-side) app.post('/webhooks/stripe', async (req, res) => { const event = stripe.webhooks.constructEvent( req.body, req.headers['stripe-signature'], process.env.STRIPE_WEBHOOK_SECRET ); switch (event.type) { case 'customer.subscription.created': const sub = event.data.object; await trackServerEvent('subscription_created', { subscriptionId: sub.id, accountId: sub.metadata.account_id, planId: sub.items.data[0].price.id, billingInterval: sub.items.data[0].price.recurring.interval }); break; case 'customer.subscription.updated': const updated = event.data.object; const previous = event.data.previous_attributes; if (previous.items) { const newPrice = updated.items.data[0].price.unit_amount; const oldPrice = previous.items.data[0].price.unit_amount; if (newPrice > oldPrice) { await trackServerEvent('subscription_upgraded', { subscriptionId: updated.id, accountId: updated.metadata.account_id, planId: updated.items.data[0].price.id, mrrDelta: newPrice - oldPrice }); } else { await trackServerEvent('subscription_downgraded', { subscriptionId: updated.id, accountId: updated.metadata.account_id, planId: updated.items.data[0].price.id, mrrDelta: newPrice - oldPrice }); } } break; case 'customer.subscription.deleted': const deleted = event.data.object; await trackServerEvent('subscription_churned', { subscriptionId: deleted.id, accountId: deleted.metadata.account_id, planId: deleted.items.data[0].price.id, mrr: deleted.items.data[0].price.unit_amount }); break; case 'invoice.paid': const invoice = event.data.object; await trackServerEvent('payment_succeeded', { accountId: invoice.metadata.account_id, invoiceId: invoice.id, subscriptionId: invoice.subscription, amount: invoice.amount_paid, currency: invoice.currency.toUpperCase() }); break; case 'invoice.payment_failed': const failed = event.data.object; await trackServerEvent('payment_failed', { accountId: failed.metadata.account_id, invoiceId: failed.id, subscriptionId: failed.subscription, amount: failed.amount_due, failureReason: failed.last_payment_error?.code }); break; case 'customer.subscription.trial_will_end': const trial = event.data.object; await trackServerEvent('trial_ending_soon', { accountId: trial.metadata.account_id, trialDaysRemaining: 3, planId: trial.items.data[0].price.id, trialEndDate: new Date(trial.trial_end * 1000).toISOString() }); break; } res.json({ received: true }); }); ``` ### Stripe Webhook Mapping | Stripe Webhook | Upstack Event | | -------------------------------------- | --------------------------------------------------- | | `customer.subscription.created` | `subscription_created` | | `customer.subscription.updated` | `subscription_upgraded` / `subscription_downgraded` | | `customer.subscription.deleted` | `subscription_churned` | | `customer.subscription.paused` | `subscription_paused` | | `customer.subscription.resumed` | `subscription_resumed` | | `invoice.paid` | `invoice_paid`, `payment_succeeded` | | `invoice.payment_failed` | `payment_failed` | | `customer.subscription.trial_will_end` | `trial_ending_soon` | | `charge.refunded` | `payment_refunded` | *** ## What's Next <CardGroup> <Card title="Standard Events" icon="list-check" href="/event-tracking/event-taxonomy/standard-events"> E-commerce event reference for Shopify stores. </Card> <Card title="Custom Events" icon="code" href="/guides/custom-events/how-to-create-custom-event-triggers"> Define your own events beyond the standard taxonomy. </Card> <Card title="Properties & Context" icon="table" href="/event-tracking/event-taxonomy/properties"> Complete reference for all event fields. </Card> <Card title="Event Taxonomy" icon="sitemap" href="/event-tracking/event-taxonomy"> How events flow through the Upstack pipeline. </Card> </CardGroup> # account_created Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/account-created Track when a new account (organization/workspace) is created in your SaaS application. Fires when a new account (organization/workspace) is created. Use this event to measure account growth and track the top of your B2B funnel. ## JavaScript ```javascript theme={null} window._upstack('track', 'account_created', { accountId: 'acct_abc123', accountName: 'Acme Corporation', planId: 'plan_starter_monthly', planName: 'Starter', userId: 'usr_xyz789', userEmail: 'jane@acme.com' }); ``` ## Properties | Property | Type | Required | Description | | ----------- | ------ | -------- | ------------------------- | | accountId | string | Yes | Unique account identifier | | accountName | string | No | Account/organization name | | planId | string | No | Initial plan identifier | | planName | string | No | Initial plan name | | userId | string | No | Creating user's ID | | userEmail | string | No | Creating user's email | ## When to Fire * After account registration completes * After organization setup wizard finishes * After SSO provisioning creates a new workspace # account_deleted Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/account-deleted Track when an account is permanently deleted from your SaaS application. Fires when an account is permanently deleted. Track this event to measure churn and understand why customers leave. ## JavaScript ```javascript theme={null} window._upstack('track', 'account_deleted', { accountId: 'acct_abc123', accountName: 'Acme Corporation', cancelReason: 'no_longer_needed', cancelFeedback: 'Switching to a different solution', mrr: 9900 }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | -------------------------- | | accountId | string | Yes | Deleted account identifier | | accountName | string | No | Account name | | cancelReason | string | No | Reason code for deletion | | cancelFeedback | string | No | User-provided feedback | | mrr | number | No | Lost MRR in cents | ## When to Fire * After account deletion confirmation * After workspace removal completes * After data retention period expires # addon_cancelled Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/addon-cancelled Track when a customer cancels an add-on feature or service. Fires when a customer cancels an add-on feature or service. Use this event to understand add-on churn and feature value. ## JavaScript ```javascript theme={null} window._upstack('track', 'addon_cancelled', { accountId: 'acct_abc123', subscriptionId: 'sub_def456', addonId: 'addon_advanced_analytics', addonName: 'Advanced Analytics', price: 4900, currency: 'USD', cancelReason: 'not_using' }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------- | | accountId | string | Yes | Account identifier | | addonId | string | Yes | Add-on identifier | | subscriptionId | string | No | Subscription identifier | | addonName | string | No | Human-readable add-on name | | price | number | No | Lost add-on revenue in cents | | currency | string | No | ISO 4217 currency code | | cancelReason | string | No | Reason for cancellation | ## When to Fire * When add-on is removed from subscription * When add-on cancellation is requested * When Stripe subscription item is removed # addon_purchased Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/addon-purchased Track when a customer purchases an add-on feature or service. Fires when a customer purchases an add-on feature or service. Use this event to measure add-on adoption and expansion revenue. ## JavaScript ```javascript theme={null} window._upstack('track', 'addon_purchased', { accountId: 'acct_abc123', subscriptionId: 'sub_def456', addonId: 'addon_advanced_analytics', addonName: 'Advanced Analytics', price: 4900, currency: 'USD', billingInterval: 'month' }); ``` ## Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | -------------------------- | | accountId | string | Yes | Account identifier | | addonId | string | Yes | Add-on identifier | | subscriptionId | string | No | Subscription identifier | | addonName | string | No | Human-readable add-on name | | price | number | No | Add-on price in cents | | currency | string | No | ISO 4217 currency code | | billingInterval | string | No | `month` or `year` | ## When to Fire * When add-on is purchased from settings * When add-on checkout completes * When Stripe subscription item is added # content_downloaded Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/content-downloaded Track when a user downloads gated content like whitepapers, ebooks, or case studies. Fires when a user downloads gated content. Use this event to measure content marketing effectiveness and identify marketing-qualified leads. ## JavaScript ```javascript theme={null} window._upstack('track', 'content_downloaded', { contentId: 'wp_2024_analytics_guide', contentType: 'whitepaper', contentTitle: '2024 Marketing Analytics Guide', userEmail: 'prospect@company.com', companyName: 'Prospect Corp', source: 'blog_cta' }); ``` ## Properties | Property | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------- | | contentId | string | Yes | Unique content identifier | | contentType | string | No | Type of content (`whitepaper`, `ebook`, `case_study`, `template`, `guide`) | | contentTitle | string | No | Human-readable content title | | userEmail | string | No | Downloader's email address | | companyName | string | No | User's company name | | source | string | No | Where the download was initiated | ## When to Fire * After gated content form submission * After PDF/document download starts * After content access is granted via email gate # demo_requested Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/demo-requested Track when a user requests a product demo in your SaaS application. Fires when a user requests a product demo. Use this event to measure sales-qualified leads and demo conversion rates. ## JavaScript ```javascript theme={null} window._upstack('track', 'demo_requested', { userEmail: 'buyer@enterprise.com', companyName: 'Enterprise Corp', companySize: '500-1000', useCase: 'marketing_analytics' }); ``` ## Properties | Property | Type | Required | Description | | ----------- | ------ | -------- | ------------------ | | userEmail | string | No | Requester email | | companyName | string | No | Company name | | companySize | string | No | Company size range | | useCase | string | No | Primary use case | ## When to Fire * After demo request form submission * After sales call booking confirmation * After Calendly/HubSpot meeting scheduled # feature_used Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/feature-used Track when a specific feature is used to understand product adoption. Fires when a specific feature is used. Track key features to understand product adoption and identify power users. ## JavaScript ```javascript theme={null} window._upstack('track', 'feature_used', { accountId: 'acct_abc123', userId: 'usr_xyz789', featureId: 'feat_export', featureName: 'CSV Export', featureCategory: 'reporting' }); ``` ## Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | ------------------------- | | accountId | string | Yes | Account identifier | | featureId | string | Yes | Feature identifier | | userId | string | No | User who used the feature | | featureName | string | No | Feature display name | | featureCategory | string | No | Feature category | ## When to Fire * When key features are used * When premium features are accessed * When usage-based actions are performed # invoice_created Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/invoice-created Track when a new invoice is created in the billing system. Fires when a new invoice is created in the billing system. Use this event to track billing cycles and invoice generation. ## JavaScript ```javascript theme={null} window._upstack('track', 'invoice_created', { accountId: 'acct_abc123', invoiceId: 'inv_ghi012', subscriptionId: 'sub_def456', amount: 9900, currency: 'USD', dueDate: '2026-03-01T00:00:00.000Z' }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ----------------------- | | accountId | string | Yes | Account identifier | | invoiceId | string | Yes | Invoice identifier | | amount | number | Yes | Invoice amount in cents | | subscriptionId | string | No | Subscription identifier | | currency | string | No | ISO 4217 currency code | | dueDate | string | No | ISO 8601 due date | ## When to Fire * When invoice is generated * When billing cycle creates new invoice * When Stripe `invoice.created` webhook fires ## Stripe Webhook Maps to `invoice.created`. # invoice_paid Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/invoice-paid Track when an invoice is marked as paid. Fires when an invoice is marked as paid. Use this event for revenue recognition and payment tracking. ## JavaScript ```javascript theme={null} window._upstack('track', 'invoice_paid', { accountId: 'acct_abc123', invoiceId: 'inv_ghi012', subscriptionId: 'sub_def456', amount: 9900, currency: 'USD' }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ----------------------- | | accountId | string | Yes | Account identifier | | invoiceId | string | Yes | Invoice identifier | | amount | number | Yes | Paid amount in cents | | subscriptionId | string | No | Subscription identifier | | currency | string | No | ISO 4217 currency code | ## When to Fire * When payment is received * When manual reconciliation marks invoice paid * When Stripe `invoice.paid` webhook fires ## Stripe Webhook Maps to `invoice.paid`. # invoice_past_due Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/invoice-past-due Track when an invoice becomes past due. Fires when an invoice becomes past due. Use this event to trigger collection workflows and identify accounts at risk of involuntary churn. ## JavaScript ```javascript theme={null} window._upstack('track', 'invoice_past_due', { accountId: 'acct_abc123', invoiceId: 'inv_ghi012', subscriptionId: 'sub_def456', amount: 9900, currency: 'USD', daysOverdue: 7, attemptCount: 3 }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------- | | accountId | string | Yes | Account identifier | | invoiceId | string | Yes | Invoice identifier | | amount | number | Yes | Past due amount in cents | | subscriptionId | string | No | Subscription identifier | | currency | string | No | ISO 4217 currency code | | daysOverdue | number | No | Days past the due date | | attemptCount | number | No | Number of payment attempts made | ## When to Fire * When invoice due date passes without payment * When Stripe marks invoice as past due * When payment retry fails ## Stripe Webhook Maps to `invoice.marked_uncollectible` or custom logic based on `invoice.payment_failed` status. <Warning> Past due invoices are an early indicator of involuntary churn. Use this event to trigger proactive outreach. </Warning> # milestone_reached Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/milestone-reached Track when a key milestone is achieved. Fires when a key milestone is achieved. Use this event to celebrate customer success and trigger engagement flows. ## JavaScript ```javascript theme={null} window._upstack('track', 'milestone_reached', { accountId: 'acct_abc123', milestoneId: 'milestone_100_orders', milestoneName: '100 Orders Processed', milestoneValue: 100 }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ---------------------- | | accountId | string | Yes | Account identifier | | milestoneId | string | Yes | Milestone identifier | | milestoneName | string | No | Milestone display name | | milestoneValue | number | No | Numeric value achieved | ## When to Fire * When usage threshold is crossed * When achievement is unlocked * When significant product milestone occurs # order_fulfilled Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/order-fulfilled Track when an order has been completely fulfilled (all items prepared for shipment). Fires when an order has been completely fulfilled (all items prepared for shipment). Use this event for subscription box businesses and physical product deliveries. ## JavaScript ```javascript theme={null} window._upstack('track', 'order_fulfilled', { orderId: 'ORD_12345', orderName: '#1042', value: 149.99, currency: 'USD', fulfillmentStatus: 'fulfilled', items: [ { id: 'SKU_001', name: 'Monthly Snack Box', price: 39.99, quantity: 1 } ], email: 'customer@example.com' }); ``` ## Properties | Property | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------- | | orderId | string | Yes | Order identifier | | orderName | string | No | Human-readable order name | | value | number | No | Order value | | currency | string | No | ISO 4217 currency code | | fulfillmentStatus | string | No | Fulfillment status (e.g., `'fulfilled'`, `'partial'`) | | items | array | No | Products fulfilled | | email | string | No | Customer email | ## When to Fire * When warehouse marks order as packed/ready * When Shopify fulfillment is created * When all items in an order are fulfilled # order_shipped Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/order-shipped Track when an order has been shipped and tracking information is available. Fires when an order has been shipped and tracking information is available. Use this event to trigger shipment notification flows. ## JavaScript ```javascript theme={null} window._upstack('track', 'order_shipped', { orderId: 'ORD_12345', orderName: '#1042', value: 149.99, currency: 'USD', trackingNumber: '1Z999AA10123456784', trackingCompany: 'UPS', trackingUrl: 'https://www.ups.com/track?tracknum=1Z999AA10123456784', estimatedDelivery: '2026-02-25T00:00:00.000Z', items: [ { id: 'SKU_001', name: 'Monthly Snack Box', price: 39.99, quantity: 1 } ], email: 'customer@example.com' }); ``` ## Properties | Property | Type | Required | Description | | ----------------- | ------ | -------- | ----------------------------------------------------- | | orderId | string | Yes | Order identifier | | orderName | string | No | Human-readable order name | | value | number | No | Order value | | currency | string | No | ISO 4217 currency code | | trackingNumber | string | No | Carrier tracking number | | trackingCompany | string | No | Shipping carrier (e.g., `'UPS'`, `'FedEx'`, `'USPS'`) | | trackingUrl | string | No | Direct link to tracking page | | estimatedDelivery | string | No | ISO 8601 estimated delivery date | | items | array | No | Products shipped | | email | string | No | Customer email | ## When to Fire * When shipping label is created with tracking * When carrier picks up package * When Shopify `fulfillment_events/create` webhook fires <Tip> **Klaviyo integration:** `order_shipped` is commonly used to trigger post-purchase flows like "Your order is on the way" emails with tracking information. </Tip> # payment_failed Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/payment-failed Track when a payment attempt fails. Fires when a payment attempt fails. Use this event to trigger dunning workflows and identify at-risk subscriptions. ## JavaScript ```javascript theme={null} window._upstack('track', 'payment_failed', { accountId: 'acct_abc123', invoiceId: 'inv_ghi012', subscriptionId: 'sub_def456', amount: 9900, failureReason: 'card_declined', failureCode: 'insufficient_funds', currency: 'USD' }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ------------------------------ | | accountId | string | Yes | Account identifier | | amount | number | Yes | Failed payment amount in cents | | invoiceId | string | No | Invoice identifier | | subscriptionId | string | No | Subscription identifier | | failureReason | string | No | Failure reason code | | failureCode | string | No | Detailed failure code | | currency | string | No | ISO 4217 currency code | ## When to Fire * When card is declined * When insufficient funds error occurs * When Stripe `invoice.payment_failed` webhook fires ## Stripe Webhook Maps to `invoice.payment_failed`. <Warning> Track payment failures to identify at-risk customers and trigger dunning workflows. </Warning> # payment_refunded Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/payment-refunded Track when a payment is refunded to the customer. Fires when a payment is refunded to the customer. Use this event to track refund rates and understand customer satisfaction issues. ## JavaScript ```javascript theme={null} window._upstack('track', 'payment_refunded', { accountId: 'acct_abc123', invoiceId: 'inv_ghi012', chargeId: 'ch_abc123', subscriptionId: 'sub_def456', amount: 9900, refundReason: 'customer_request', currency: 'USD', isPartialRefund: false }); ``` ## Properties | Property | Type | Required | Description | | --------------- | ------- | -------- | -------------------------------- | | accountId | string | Yes | Account identifier | | amount | number | Yes | Refunded amount in cents | | chargeId | string | No | Original charge identifier | | invoiceId | string | No | Invoice identifier | | subscriptionId | string | No | Subscription identifier | | refundReason | string | No | Reason for refund | | currency | string | No | ISO 4217 currency code | | isPartialRefund | boolean | No | Whether this is a partial refund | ## When to Fire * When refund is processed * When Stripe `charge.refunded` webhook fires * When support issues refund ## Stripe Webhook Maps to `charge.refunded`. # payment_succeeded Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/payment-succeeded Track when a payment is processed successfully. Fires when a payment is processed successfully. Use this event for revenue tracking and payment analytics. ## JavaScript ```javascript theme={null} window._upstack('track', 'payment_succeeded', { accountId: 'acct_abc123', invoiceId: 'inv_ghi012', subscriptionId: 'sub_def456', amount: 9900, currency: 'USD' }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ----------------------- | | accountId | string | Yes | Account identifier | | amount | number | Yes | Payment amount in cents | | invoiceId | string | No | Invoice identifier | | subscriptionId | string | No | Subscription identifier | | currency | string | No | ISO 4217 currency code | ## When to Fire * When charge succeeds * When invoice is paid * When Stripe `invoice.paid` webhook fires ## Stripe Webhook Maps to `invoice.paid` or `charge.succeeded`. # seat_added Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/seat-added Track when additional seats are purchased. Fires when additional seats are purchased. Use this event to measure expansion revenue from seat-based pricing. ## JavaScript ```javascript theme={null} window._upstack('track', 'seat_added', { accountId: 'acct_abc123', subscriptionId: 'sub_def456', seatCount: 15, seatDelta: 5, mrrDelta: 2500 }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------- | | accountId | string | Yes | Account identifier | | seatCount | number | Yes | Total seats after addition | | subscriptionId | string | No | Subscription identifier | | seatDelta | number | No | Number of seats added | | mrrDelta | number | No | MRR increase from seats in cents | ## When to Fire * When seats are purchased * When user is added beyond plan limit * When Stripe subscription quantity increases ## Stripe Webhook Maps to `customer.subscription.updated` when subscription quantity increases. # seat_removed Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/seat-removed Track when seats are removed from the plan. Fires when seats are removed from the plan. Use this event to track seat contraction and understand downsizing patterns. ## JavaScript ```javascript theme={null} window._upstack('track', 'seat_removed', { accountId: 'acct_abc123', subscriptionId: 'sub_def456', seatCount: 10, seatDelta: -5, mrrDelta: -2500 }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ---------------------------------- | | accountId | string | Yes | Account identifier | | seatCount | number | Yes | Total seats after removal | | subscriptionId | string | No | Subscription identifier | | seatDelta | number | No | Number of seats removed (negative) | | mrrDelta | number | No | MRR decrease in cents (negative) | ## When to Fire * When seats are removed * When user is deactivated * When Stripe subscription quantity decreases ## Stripe Webhook Maps to `customer.subscription.updated` when subscription quantity decreases. # signed_out Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/signed-out Track when a user signs out of the application. Fires when a user signs out of the application. Use this event to understand session patterns and user behavior. ## JavaScript ```javascript theme={null} window._upstack('track', 'signed_out', { userId: 'usr_xyz789', accountId: 'acct_abc123', sessionDuration: 3600, signOutReason: 'user_initiated' }); ``` ## Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | ------------------------------------------------------------------- | | userId | string | Yes | User identifier | | accountId | string | No | Account identifier | | sessionDuration | number | No | Session length in seconds | | signOutReason | string | No | Reason for sign out (`user_initiated`, `session_expired`, `forced`) | ## When to Fire * When user clicks sign out/logout button * When session expires * When user is forced out due to security event # signup_completed Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/signup-completed Track when a user completes signup and creates an account in your SaaS application. Fires when a user completes signup and creates an account. This is a key conversion event for measuring acquisition success. ## JavaScript ```javascript theme={null} window._upstack('track', 'signup_completed', { userId: 'usr_xyz789', accountId: 'acct_abc123', userEmail: 'jane@acme.com', planId: 'plan_pro_monthly', planName: 'Pro Plan' }); ``` ## Properties | Property | Type | Required | Description | | --------- | ------ | -------- | ---------------------- | | userId | string | Yes | New user identifier | | accountId | string | Yes | New account identifier | | userEmail | string | No | User email address | | planId | string | No | Selected plan | | planName | string | No | Plan display name | ## When to Fire * After signup form submission succeeds * After email verification completes * After OAuth signup flow finishes # signup_started Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/signup-started Track when a user begins the signup flow in your SaaS application. Fires when a user begins the signup flow. Use this event to measure signup funnel drop-off and optimize conversion. ## JavaScript ```javascript theme={null} window._upstack('track', 'signup_started', { planId: 'plan_pro_monthly', source: 'pricing_page' }); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | --------------------------------- | | planId | string | No | Pre-selected plan (if applicable) | | source | string | No | Where signup was initiated | ## When to Fire * When signup form is opened * When registration page loads * When "Start Free Trial" button is clicked # subscription_cancelled Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/subscription-cancelled Track when a cancellation is requested (may still be active until period end). Fires when a cancellation is requested (may still be active until period end). Use this event to trigger win-back campaigns and measure cancellation reasons. ## JavaScript ```javascript theme={null} window._upstack('track', 'subscription_cancelled', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', cancelReason: 'too_expensive', cancelFeedback: 'Budget constraints this quarter', mrr: 9900, cancelAtPeriodEnd: true }); ``` ## Properties | Property | Type | Required | Description | | ----------------- | ------- | -------- | ----------------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | Cancelled plan | | cancelReason | string | No | Cancellation reason code | | cancelFeedback | string | No | User-provided feedback | | mrr | number | No | MRR being cancelled in cents | | cancelAtPeriodEnd | boolean | No | If true, cancels at end of billing period | ## When to Fire * When customer clicks cancel button * When cancellation request is submitted * When Stripe subscription is set to cancel at period end # subscription_churned Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/subscription-churned Track when a subscription ends completely (no longer billing). Fires when a subscription ends completely (no longer billing). This is the final churn event for calculating churn rate. ## JavaScript ```javascript theme={null} window._upstack('track', 'subscription_churned', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', cancelReason: 'switched_competitor', mrr: 9900, ltv: 118800, subscriptionMonths: 12 }); ``` ## Properties | Property | Type | Required | Description | | ------------------ | ------ | -------- | -------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | Churned plan | | cancelReason | string | No | Churn reason | | mrr | number | No | Lost MRR in cents | | ltv | number | No | Customer lifetime value in cents | | subscriptionMonths | number | No | How long they were subscribed | ## When to Fire * When final billing period ends * When subscription is deactivated * When Stripe `customer.subscription.deleted` fires ## Stripe Webhook Maps to `customer.subscription.deleted`. <Warning> Use this event to calculate churn rate and analyze churn reasons. Track `ltv` to understand which customer segments have the highest lifetime value. </Warning> # subscription_created Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/subscription-created Track when a subscription record is created in your billing system. Fires when a subscription record is created in your billing system. This may precede first payment for trials. ## JavaScript ```javascript theme={null} window._upstack('track', 'subscription_created', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', planName: 'Pro Plan', billingInterval: 'month' }); ``` ## Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | --------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | Yes | Plan identifier | | planName | string | No | Plan display name | | billingInterval | string | No | `day`, `week`, `month`, or `year` | ## When to Fire * When subscription object is created in Stripe * May precede first payment (for trials) * After checkout session completes ## Stripe Webhook Maps to `customer.subscription.created`. # subscription_downgraded Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/subscription-downgraded Track when a customer downgrades to a lower-tier plan. Fires when a customer downgrades to a lower-tier plan. Use this event to identify at-risk accounts and measure contraction. ## JavaScript ```javascript theme={null} window._upstack('track', 'subscription_downgraded', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_starter_monthly', planName: 'Starter', previousPlanId: 'plan_pro_monthly', mrr: 4900, mrrDelta: -5000 }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | New plan identifier | | planName | string | No | New plan name | | previousPlanId | string | No | Previous plan identifier | | mrr | number | No | New MRR after downgrade in cents | | mrrDelta | number | No | MRR decrease in cents (negative) | ## When to Fire * When plan changes from higher to lower tier * When features are removed from subscription * When scheduled downgrade takes effect at period end ## Stripe Webhook Maps to `customer.subscription.updated` when the new price is lower than the previous price. # subscription_initial_purchase Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/subscription-initial-purchase Track when a customer's first subscription payment is processed. Fires when a customer's first subscription payment is processed (distinct from trial conversion). Use this event for acquisition revenue metrics. ## JavaScript ```javascript theme={null} window._upstack('track', 'subscription_initial_purchase', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', planName: 'Pro Plan', value: 9900, currency: 'USD', billingInterval: 'month' }); ``` ## Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | ----------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | Plan identifier | | planName | string | No | Plan display name | | value | number | No | Payment amount in cents | | currency | string | No | ISO 4217 currency code | | billingInterval | string | No | `month` or `year` | ## When to Fire * First subscription charge succeeds * After trial converts (first paid billing period) * When new customer's initial payment processes <Tip> Use `subscription_initial_purchase` for acquisition metrics and `subscription_recurring_purchase` for retention/LTV analysis. Together they give a complete picture of subscription revenue. </Tip> # subscription_paused Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/subscription-paused Track when a subscription is paused. Fires when a subscription is paused. Use this event to measure pause rates and understand seasonal patterns. ## JavaScript ```javascript theme={null} window._upstack('track', 'subscription_paused', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', mrr: 9900, pauseReason: 'seasonal_business' }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | --------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | Plan identifier | | mrr | number | No | Paused MRR in cents | | pauseReason | string | No | Why subscription was paused | ## When to Fire * When customer requests pause * When seasonal pause is activated * When Stripe subscription pause feature triggers ## Stripe Webhook Maps to `customer.subscription.paused`. # subscription_reactivated Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/subscription-reactivated Track when a previously churned customer resubscribes. Fires when a previously churned customer resubscribes. Use this event to measure win-back campaign effectiveness and recovered MRR. ## JavaScript ```javascript theme={null} window._upstack('track', 'subscription_reactivated', { subscriptionId: 'sub_ghi789', accountId: 'acct_abc123', planId: 'plan_pro_monthly', planName: 'Pro Plan', mrr: 9900, daysSinceChurn: 45 }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | ----------------------------------- | | subscriptionId | string | Yes | New subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | New plan identifier | | planName | string | No | Plan display name | | mrr | number | No | Recovered MRR in cents | | daysSinceChurn | number | No | Days between churn and reactivation | ## When to Fire * When former customer signs up again * When win-back campaign converts * When churned account starts new subscription # subscription_recurring_purchase Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/subscription-recurring-purchase Track when a recurring subscription payment is processed (not the initial purchase). Fires when a recurring subscription payment is processed (not the initial purchase). Use this event for retention and LTV analysis. ## JavaScript ```javascript theme={null} window._upstack('track', 'subscription_recurring_purchase', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', planName: 'Pro Plan', value: 9900, currency: 'USD', billingInterval: 'month', renewalNumber: 6 }); ``` ## Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | Plan identifier | | planName | string | No | Plan display name | | value | number | No | Payment amount in cents | | currency | string | No | ISO 4217 currency code | | billingInterval | string | No | `month` or `year` | | renewalNumber | number | No | Which renewal this is (2nd, 3rd, etc.) | ## When to Fire * Each recurring billing cycle * When Stripe `invoice.paid` fires for an existing subscription * Monthly/annual renewal charge succeeds ## Stripe Webhook Maps to `invoice.paid` for existing subscriptions (not the first invoice). # subscription_resumed Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/subscription-resumed Track when a paused subscription is resumed. Fires when a paused subscription is resumed. Use this event to measure pause-to-resume rates and recovered MRR. ## JavaScript ```javascript theme={null} window._upstack('track', 'subscription_resumed', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', mrr: 9900, pausedDays: 30 }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | Plan identifier | | mrr | number | No | Resumed MRR in cents | | pausedDays | number | No | How long subscription was paused | ## When to Fire * When customer manually resumes * When pause period ends automatically * When billing restarts ## Stripe Webhook Maps to `customer.subscription.resumed`. # subscription_started Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/subscription-started Track when a new subscription begins (first billing period starts). Fires when a new subscription begins (first billing period starts). This marks the start of paid service. ## JavaScript ```javascript theme={null} window._upstack('track', 'subscription_started', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_pro_monthly', planName: 'Pro Plan', mrr: 9900, billingInterval: 'month' }); ``` ## Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | Yes | Plan identifier | | planName | string | No | Plan display name | | mrr | number | No | Monthly recurring revenue in cents | | billingInterval | string | No | Billing frequency | ## When to Fire * After first successful charge * When subscription status becomes `active` * After trial converts to paid # subscription_upgraded Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/subscription-upgraded Track when a customer upgrades to a higher-tier plan. Fires when a customer upgrades to a higher-tier plan. Use this event to measure expansion revenue and upsell success. ## JavaScript ```javascript theme={null} window._upstack('track', 'subscription_upgraded', { subscriptionId: 'sub_def456', accountId: 'acct_abc123', planId: 'plan_business_monthly', planName: 'Business', previousPlanId: 'plan_pro_monthly', mrr: 19900, mrrDelta: 10000 }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | -------------------------------- | | subscriptionId | string | Yes | Subscription identifier | | accountId | string | Yes | Account identifier | | planId | string | No | New plan identifier | | planName | string | No | New plan name | | previousPlanId | string | No | Previous plan identifier | | mrr | number | No | New MRR after upgrade in cents | | mrrDelta | number | No | MRR increase in cents (positive) | ## When to Fire * When plan changes from lower to higher tier * When Stripe subscription item is updated with higher-priced plan * After upgrade checkout completes ## Stripe Webhook Maps to `customer.subscription.updated` when the new price is higher than the previous price. <Tip> Track `mrrDelta` alongside `subscription_downgraded` to calculate net revenue retention. </Tip> # trial_activated Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/trial-activated Track when a trial user reaches a meaningful activation milestone. Fires when a trial user reaches a meaningful activation milestone. Use this event to measure trial engagement and predict conversion likelihood. ## JavaScript ```javascript theme={null} window._upstack('track', 'trial_activated', { accountId: 'acct_abc123', planId: 'plan_pro_monthly', trialDaysRemaining: 12, activationMilestone: 'first_integration_connected' }); ``` ## Properties | Property | Type | Required | Description | | ------------------- | ------ | -------- | --------------------------- | | accountId | string | Yes | Account identifier | | planId | string | No | Trial plan identifier | | trialDaysRemaining | number | No | Days remaining in trial | | activationMilestone | string | No | Which milestone was reached | ## When to Fire * After first key feature is used * After onboarding checklist is completed * After first data import succeeds # trial_converted Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/trial-converted Track when a trial converts to a paid subscription. Fires when a trial converts to a paid subscription. This is a key conversion event for measuring trial success. ## JavaScript ```javascript theme={null} window._upstack('track', 'trial_converted', { accountId: 'acct_abc123', subscriptionId: 'sub_def456', planId: 'plan_pro_monthly', planName: 'Pro Plan', mrr: 9900, billingInterval: 'month' }); ``` ## Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | ---------------------------------- | | accountId | string | Yes | Account identifier | | subscriptionId | string | Yes | New subscription ID | | planId | string | Yes | Converted plan identifier | | planName | string | No | Plan display name | | mrr | number | No | Monthly recurring revenue in cents | | billingInterval | string | No | `month` or `year` | ## When to Fire * After first successful payment * When Stripe subscription status changes from `trialing` to `active` * After payment method is charged successfully <Tip> Track `mrr` to measure trial-to-paid conversion value and calculate average revenue per converted trial. </Tip> # trial_ending_soon Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/trial-ending-soon Track when a trial is about to expire (typically 3 days before). Fires when a trial is about to expire (typically 3 days before). Use this event to trigger conversion campaigns and win-back flows. ## JavaScript ```javascript theme={null} window._upstack('track', 'trial_ending_soon', { accountId: 'acct_abc123', trialDaysRemaining: 3, planId: 'plan_pro_monthly', trialEndDate: '2026-03-04T14:30:00.000Z' }); ``` ## Properties | Property | Type | Required | Description | | ------------------ | ------ | -------- | --------------------- | | accountId | string | Yes | Account identifier | | trialDaysRemaining | number | Yes | Days until expiry | | planId | string | No | Trial plan identifier | | trialEndDate | string | No | Trial expiration date | ## When to Fire * 3 days before trial expires (common) * When Stripe sends `customer.subscription.trial_will_end` * When automated warning email triggers ## Stripe Webhook Maps to `customer.subscription.trial_will_end`. # trial_expired Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/trial-expired Track when a trial ends without conversion. Fires when a trial ends without conversion. Use this event to measure trial-to-paid conversion rates and identify drop-off reasons. ## JavaScript ```javascript theme={null} window._upstack('track', 'trial_expired', { accountId: 'acct_abc123', planId: 'plan_pro_monthly', planName: 'Pro Plan', trialDays: 14 }); ``` ## Properties | Property | Type | Required | Description | | --------- | ------ | -------- | ------------------ | | accountId | string | Yes | Account identifier | | planId | string | No | Expired trial plan | | planName | string | No | Plan display name | | trialDays | number | No | Total trial length | ## When to Fire * When trial end date is reached without payment * When account is downgraded to free tier * When access is revoked after grace period # trial_extended Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/trial-extended Track when a trial period is extended. Fires when a trial period is extended. Use this event to track trial extensions and measure their impact on conversion. ## JavaScript ```javascript theme={null} window._upstack('track', 'trial_extended', { accountId: 'acct_abc123', trialEndDate: '2026-03-11T14:30:00.000Z', trialDaysRemaining: 7, extensionReason: 'support_request' }); ``` ## Properties | Property | Type | Required | Description | | ------------------ | ------ | -------- | ---------------------- | | accountId | string | Yes | Account identifier | | trialEndDate | string | No | New trial end date | | trialDaysRemaining | number | No | New days remaining | | extensionReason | string | No | Why trial was extended | ## When to Fire * After support manually extends trial * After promotional extension is applied * After win-back campaign grants extension # trial_started Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/trial-started Track when a user begins a free trial in your SaaS application. Fires when a user begins a free trial. This is the start of your trial-to-paid conversion funnel. ## JavaScript ```javascript theme={null} window._upstack('track', 'trial_started', { accountId: 'acct_abc123', planId: 'plan_pro_monthly', planName: 'Pro Plan', trialEndDate: '2026-03-04T14:30:00.000Z', trialDaysRemaining: 14 }); ``` ## Properties | Property | Type | Required | Description | | ------------------ | ------ | -------- | ------------------------------ | | accountId | string | Yes | Account identifier | | planId | string | Yes | Trial plan identifier | | planName | string | No | Human-readable plan name | | trialEndDate | string | No | ISO 8601 trial expiration date | | trialDaysRemaining | number | No | Days until trial expires | ## When to Fire * After trial signup confirmation * After trial activation in billing system * After Stripe `customer.subscription.created` with trial ## Stripe Webhook Maps to `customer.subscription.created` when the subscription has a trial period. # user_activated Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/user-activated Track when a user reaches an activation milestone within the product. Fires when a user reaches an activation milestone within the product. Use this event to measure user onboarding success and product adoption. ## JavaScript ```javascript theme={null} window._upstack('track', 'user_activated', { userId: 'usr_xyz789', accountId: 'acct_abc123', userEmail: 'user@acme.com', activationMilestone: 'completed_onboarding', daysToActivation: 2 }); ``` ## Properties | Property | Type | Required | Description | | ------------------- | ------ | -------- | ------------------------------ | | userId | string | Yes | User identifier | | accountId | string | Yes | Account identifier | | userEmail | string | No | User email address | | activationMilestone | string | No | Which milestone was reached | | daysToActivation | number | No | Days from signup to activation | ## When to Fire * When user completes onboarding checklist * When user performs first key action * When user reaches engagement threshold # user_inactive Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/user-inactive Track when a user becomes inactive after a period of no engagement. Fires when a user becomes inactive after a period of no engagement. Use this event to trigger re-engagement campaigns and identify at-risk accounts. ## JavaScript ```javascript theme={null} window._upstack('track', 'user_inactive', { userId: 'usr_xyz789', accountId: 'acct_abc123', userEmail: 'user@acme.com', lastActiveDate: '2026-01-15T10:30:00.000Z', inactiveDays: 30 }); ``` ## Properties | Property | Type | Required | Description | | -------------- | ------ | -------- | --------------------------- | | userId | string | Yes | User identifier | | accountId | string | Yes | Account identifier | | userEmail | string | No | User email address | | lastActiveDate | string | No | ISO 8601 last activity date | | inactiveDays | number | No | Days since last activity | ## When to Fire * When user hasn't logged in for defined period (e.g., 30 days) * When automated inactivity check triggers * When engagement score drops below threshold # user_invited Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/user-invited Track when a user is invited to join an account. Fires when a user is invited to join an account. Use this event to measure team growth and invitation conversion rates. ## JavaScript ```javascript theme={null} window._upstack('track', 'user_invited', { accountId: 'acct_abc123', inviteeEmail: 'newmember@acme.com', inviteeRole: 'member', invitedByUserId: 'usr_xyz789' }); ``` ## Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | --------------------- | | accountId | string | Yes | Account identifier | | inviteeEmail | string | No | Invitee email address | | inviteeRole | string | No | Assigned role | | invitedByUserId | string | No | Inviter's user ID | ## When to Fire * When team invite is sent * When collaboration request is initiated * After invite email is dispatched # user_joined Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/user-joined Track when an invited user accepts and joins the account. Fires when an invited user accepts and joins the account. Use this event to measure invite-to-join conversion rates. ## JavaScript ```javascript theme={null} window._upstack('track', 'user_joined', { userId: 'usr_newmember', accountId: 'acct_abc123', userEmail: 'newmember@acme.com', userRole: 'member' }); ``` ## Properties | Property | Type | Required | Description | | --------- | ------ | -------- | -------------------- | | userId | string | Yes | New user identifier | | accountId | string | Yes | Account identifier | | userEmail | string | No | User email address | | userRole | string | No | User's assigned role | ## When to Fire * When invite is accepted * When account access is granted * After user completes join flow # user_removed Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/user-removed Track when a user is removed from an account. Fires when a user is removed from an account. Use this event to track team changes and understand user churn at the account level. ## JavaScript ```javascript theme={null} window._upstack('track', 'user_removed', { userId: 'usr_xyz789', accountId: 'acct_abc123', userEmail: 'removed@acme.com', removedByUserId: 'usr_admin123', removalReason: 'left_company' }); ``` ## Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | -------------------------------------------------------------------------- | | userId | string | Yes | Removed user identifier | | accountId | string | Yes | Account identifier | | userEmail | string | No | Removed user's email address | | removedByUserId | string | No | Admin who removed the user | | removalReason | string | No | Reason for removal (`left_company`, `role_change`, `security`, `inactive`) | ## When to Fire * When admin removes user from team * When user access is revoked * When user is deactivated from account # webinar_registered Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/saas-events/webinar-registered Track when a user registers for a webinar or virtual event. Fires when a user registers for a webinar or virtual event. Use this event to measure event marketing performance and track registrant-to-attendee conversion. ## JavaScript ```javascript theme={null} window._upstack('track', 'webinar_registered', { webinarId: 'web_product_demo_2024', webinarTitle: 'Product Demo: Advanced Analytics Features', webinarDate: '2026-03-15T14:00:00.000Z', userEmail: 'attendee@company.com', companyName: 'Attendee Corp', source: 'email_campaign' }); ``` ## Properties | Property | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------ | | webinarId | string | Yes | Unique webinar identifier | | webinarTitle | string | No | Human-readable webinar title | | webinarDate | string | No | ISO 8601 scheduled date | | userEmail | string | No | Registrant's email address | | companyName | string | No | User's company name | | source | string | No | Where the registration was initiated | ## When to Fire * After webinar registration form submission * After calendar invite is sent * After registration confirmation email is delivered # Upstack Data Standard Events Reference Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events Copy-paste JavaScript snippets for every Upstack Data standard event — page_view, add_to_cart, purchase, lead, and 15+ more with full property specs. Standard events are predefined event types that Upstack recognizes across all destinations. Use these events to track customer behavior and attribute conversions. <Note> **This guide applies to all Upstack implementations** — Shopify, headless, GTM, or custom websites. The JavaScript snippets below work everywhere the Upstack pixel is installed. </Note> <Tip> **Shopify stores:** Most events are tracked automatically by the Upstack Pixel. See [Automatic Shopify Tracking](/sources/catalog/shopify-automatic-tracking) to understand what's already tracked. Use these snippets for custom implementations, headless checkouts, or events not covered by automatic tracking. </Tip> *** ## page\_view Fires when a visitor loads a page. ### JavaScript ```javascript theme={null} window._upstack('page'); ``` With custom properties: ```javascript theme={null} window._upstack('page', { pageCategory: 'product', collectionHandle: 'summer-2026' }); ``` ### Properties | Property | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------- | | pageCategory | string | No | Page type (e.g., `'product'`, `'collection'`, `'blog'`) | | collectionHandle | string | No | Collection identifier for collection pages | ### Auto-Captured The SDK automatically captures `page_url`, `page_title`, `page_referrer`, and `page_path`. ### When to Fire * On initial page load * On SPA route changes * After dynamic content loads (infinite scroll) *** ## view\_content Fires when a visitor views a product or content page. <Note> **Shopify:** Automatically tracked when viewing product detail pages. </Note> ### JavaScript ```javascript theme={null} window._upstack('track', 'view_content', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, brand: 'Example Brand', category: 'Apparel/T-Shirts' } ], value: 34.99, currency: 'USD' }); ``` Minimal example: ```javascript theme={null} window._upstack('track', 'view_content', { items: [{ id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99 }], value: 34.99, currency: 'USD' }); ``` ### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | ------------------------------------------------- | | items | array | Yes | Products viewed (see [Item Object](#item-object)) | | value | number | Yes | Product price | | currency | string | Yes | ISO 4217 currency code (e.g., `'USD'`) | ### When to Fire * Product detail page load * Quick view modal open * Collection page load (with collection products) *** ## view\_category Fires when a visitor views a collection or category page. <Note> **Shopify:** Automatically tracked when viewing collection pages. </Note> ### JavaScript ```javascript theme={null} window._upstack('track', 'view_category', { items: [ { id: 'SKU_001', name: 'Classic Cotton Tee', price: 34.99 }, { id: 'SKU_002', name: 'Vintage Logo Hoodie', price: 59.99 }, { id: 'SKU_003', name: 'Slim Fit Jeans', price: 79.99 } ], itemListId: 'summer_collection', itemListName: 'Summer 2026 Collection' }); ``` Minimal example: ```javascript theme={null} window._upstack('track', 'view_category', { itemListId: 'mens_shirts', itemListName: 'Men\'s Shirts' }); ``` ### Properties | Property | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------- | | itemListId | string | No | Collection/category identifier | | itemListName | string | No | Collection/category display name | | items | array | No | Products shown in the category (see [Item Object](#item-object)) | ### When to Fire * Collection page load * Category filter applied * Browse by category navigation *** ## view\_item\_list Fires when a visitor views a list of products (similar to `view_category` but more general). ### JavaScript ```javascript theme={null} window._upstack('track', 'view_item_list', { items: [ { id: 'SKU_001', name: 'Classic Cotton Tee', price: 34.99, index: 0 }, { id: 'SKU_002', name: 'Vintage Logo Hoodie', price: 59.99, index: 1 } ], itemListId: 'recommended_products', itemListName: 'Recommended For You' }); ``` ### Properties | Property | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------ | | itemListId | string | No | List identifier | | itemListName | string | No | List display name | | items | array | No | Products in the list (include `index` for position tracking) | ### When to Fire * Product recommendation carousel load * "Related Products" section view * "Recently Viewed" section view * Search results page load *** ## add\_to\_cart Fires when a visitor adds an item to their cart. ### JavaScript ```javascript theme={null} window._upstack('track', 'add_to_cart', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 2, variant: 'Blue / Medium', brand: 'Example Brand', category: 'Apparel/T-Shirts' } ], value: 69.98, currency: 'USD' }); ``` Minimal example: ```javascript theme={null} window._upstack('track', 'add_to_cart', { items: [{ id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 1 }], value: 34.99, currency: 'USD' }); ``` ### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | ------------------------------------------------ | | items | array | Yes | Products added (see [Item Object](#item-object)) | | value | number | Yes | Total value of items added | | currency | string | Yes | ISO 4217 currency code | ### When to Fire * Add-to-cart button click * Quantity increase in cart * "Buy Now" button click (before checkout) *** ## product\_removed\_from\_cart Fires when a visitor removes an item from their cart. ### JavaScript ```javascript theme={null} window._upstack('track', 'product_removed_from_cart', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 1 } ], value: 34.99, currency: 'USD' }); ``` ### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | -------------------------------------------------- | | items | array | Yes | Products removed (see [Item Object](#item-object)) | | value | number | No | Value of removed items | | currency | string | No | ISO 4217 currency code | ### When to Fire * Remove button click * Quantity decrease to zero * Clear cart action *** ## view\_cart Fires when a visitor views their shopping cart. ### JavaScript ```javascript theme={null} window._upstack('track', 'view_cart', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 2 }, { id: 'SKU_67890', name: 'Running Socks', price: 14.99, quantity: 1 } ], value: 84.97, currency: 'USD' }); ``` ### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | -------------------------------------------------- | | items | array | Yes | Products in cart (see [Item Object](#item-object)) | | value | number | No | Total cart value | | currency | string | No | ISO 4217 currency code | ### When to Fire * Cart page load * Cart drawer/sidebar open * Mini-cart expansion *** ## initiate\_checkout Fires when a visitor starts the checkout process. ### JavaScript ```javascript theme={null} window._upstack('track', 'initiate_checkout', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 2 }, { id: 'SKU_67890', name: 'Running Socks', price: 14.99, quantity: 1 } ], value: 84.97, currency: 'USD' }); ``` ### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | ---------------------- | | items | array | Yes | Products in checkout | | value | number | Yes | Cart subtotal | | currency | string | Yes | ISO 4217 currency code | ### When to Fire * Checkout button click * Checkout page load * Express checkout initiation (Shop Pay, Apple Pay) *** ## add\_shipping\_info Fires when a customer enters shipping details during checkout. ### JavaScript ```javascript theme={null} window._upstack('track', 'add_shipping_info', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 2 } ], value: 84.97, currency: 'USD', shippingTier: 'standard' }); ``` ### Properties | Property | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------- | | items | array | No | Products in checkout | | value | number | No | Cart value at shipping step | | currency | string | No | ISO 4217 currency code | | shippingTier | string | No | Shipping method (e.g., `'standard'`, `'express'`, `'overnight'`) | ### When to Fire * Shipping form completion * Shipping method selection * Proceeding past shipping step *** ## select\_shipping\_method Fires when a customer selects a shipping method during checkout. ### JavaScript ```javascript theme={null} window._upstack('track', 'select_shipping_method', { shippingTier: 'express', shippingPrice: 12.99, currency: 'USD', value: 97.98 }); ``` With items: ```javascript theme={null} window._upstack('track', 'select_shipping_method', { shippingTier: 'overnight', shippingPrice: 24.99, currency: 'USD', value: 109.98, items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 2 } ] }); ``` ### Properties | Property | Type | Required | Description | | ------------- | ------ | -------- | ------------------------------------------------------------------------- | | shippingTier | string | Yes | Shipping method selected (e.g., `'standard'`, `'express'`, `'overnight'`) | | shippingPrice | number | No | Shipping cost | | value | number | No | Cart value at shipping selection | | currency | string | No | ISO 4217 currency code | | items | array | No | Products in checkout | ### When to Fire * Shipping method radio button selection * Shipping tier dropdown change * Before proceeding to payment *** ## add\_payment\_info Fires when a customer enters payment details during checkout. ### JavaScript ```javascript theme={null} window._upstack('track', 'add_payment_info', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 2 } ], value: 84.97, currency: 'USD', paymentType: 'credit_card' }); ``` ### Properties | Property | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------- | | items | array | No | Products in checkout | | value | number | No | Cart value at payment step | | currency | string | No | ISO 4217 currency code | | paymentType | string | No | Payment method (e.g., `'credit_card'`, `'paypal'`, `'shop_pay'`) | ### When to Fire * Payment form completion * Payment method selection * Before final order submission *** ## purchase Fires when an order is completed. ### JavaScript ```javascript theme={null} window._upstack('track', 'purchase', { orderId: 'ORD_12345', value: 149.99, currency: 'USD', tax: 12.50, shipping: 5.99, items: [ { id: 'SKU_001', name: 'Blue Running Shoes', price: 89.99, quantity: 1, brand: 'Nike', category: 'Shoes/Running' }, { id: 'SKU_002', name: 'Running Socks', price: 14.99, quantity: 2, brand: 'Nike', category: 'Accessories/Socks' } ], email: 'customer@example.com' }, 'ORD_12345'); ``` <Note> The third parameter (`'ORD_12345'`) is a deduplication ID. It prevents duplicate purchase events from being sent to destinations if the event fires multiple times. </Note> Minimal example: ```javascript theme={null} window._upstack('track', 'purchase', { orderId: 'ORD_12345', value: 149.99, currency: 'USD', items: [{ id: 'SKU_001', name: 'Blue Running Shoes', price: 89.99, quantity: 1 }] }, 'ORD_12345'); ``` ### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | ---------------------------------------------------- | | orderId | string | Yes | Unique order identifier | | value | number | Yes | Total order value | | currency | string | Yes | ISO 4217 currency code | | items | array | Yes | Products purchased (see [Item Object](#item-object)) | | tax | number | No | Tax amount | | shipping | number | No | Shipping cost | | email | string | No | Customer email (improves identity matching) | <Warning> **Important:** The `value` property should match what you want reported to ad platforms. Discrepancies between Shopify order totals and reported CAPI revenue are the most common attribution debugging issue. </Warning> ### When to Fire * Order confirmation page load * After successful payment confirmation * Shopify `orders/create` webhook (server-side) *** ## nc\_purchase Fires alongside `purchase` when the order comes from a first-time customer. Automatically generated by Upstack — do not fire manually. See [nc\_purchase](/event-tracking/event-taxonomy/standard-events/nc-purchase) for properties, destination mapping, and use cases. *** ## rc\_purchase Fires alongside `purchase` when the order comes from a returning customer. Automatically generated by Upstack — do not fire manually. See [rc\_purchase](/event-tracking/event-taxonomy/standard-events/rc-purchase) for properties, destination mapping, and use cases. *** ## search Fires when a visitor performs a search. ### JavaScript ```javascript theme={null} window._upstack('track', 'search', { searchTerm: 'blue running shoes', resultsCount: 24 }); ``` With search results: ```javascript theme={null} window._upstack('track', 'search', { searchTerm: 'blue running shoes', resultsCount: 24, items: [ { id: 'SKU_001', name: 'Blue Running Shoes', price: 89.99 }, { id: 'SKU_002', name: 'Navy Training Shoes', price: 79.99 } ] }); ``` ### Properties | Property | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------ | | searchTerm | string | Yes | The search query entered | | resultsCount | number | No | Number of results returned | | items | array | No | Top products in search results | ### When to Fire * Search results page load * Predictive search dropdown display * "No results" page (with `resultsCount: 0`) *** ## lead Fires when a visitor submits a lead form. ### JavaScript ```javascript theme={null} window._upstack('track', 'lead', { source: 'contact_form', email: 'prospect@example.com', value: 150.00, currency: 'USD' }); ``` Newsletter signup: ```javascript theme={null} window._upstack('track', 'lead', { source: 'newsletter_popup', email: 'subscriber@example.com' }); ``` ### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | --------------------------- | | source | string | No | Form or campaign identifier | | email | string | No | Lead's email address | | value | number | No | Estimated lead value | | currency | string | No | ISO 4217 currency code | ### When to Fire * Contact form submission * Newsletter signup * Quote request submission * Product inquiry *** ## complete\_registration Fires when a customer creates an account. ### JavaScript ```javascript theme={null} window._upstack('track', 'complete_registration', { method: 'email', source: 'checkout_page' }); ``` ### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | --------------------------------------------------------------- | | method | string | No | Registration method (e.g., `'email'`, `'google'`, `'facebook'`) | | source | string | No | Where registration occurred | ### When to Fire * Account registration form submission * OAuth signup completion (Google, Facebook) * Post-purchase account creation *** ## subscribe Fires when a visitor subscribes to email or SMS marketing. ### JavaScript ```javascript theme={null} window._upstack('track', 'subscribe', { channel: 'email', source: 'footer_form', value: 5.00, currency: 'USD' }); ``` SMS subscription: ```javascript theme={null} window._upstack('track', 'subscribe', { channel: 'sms', source: 'popup', phone: '+15551234567' }); ``` ### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | --------------------------------------------------------------- | | channel | string | No | Subscription channel (`'email'`, `'sms'`, `'push'`) | | source | string | No | Subscription source (e.g., `'popup'`, `'footer'`, `'checkout'`) | | value | number | No | Estimated subscriber value | | currency | string | No | ISO 4217 currency code | ### When to Fire * Newsletter signup * SMS opt-in * Push notification subscription *** ## add\_to\_wishlist Fires when a visitor adds a product to their wishlist. ### JavaScript ```javascript theme={null} window._upstack('track', 'add_to_wishlist', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, brand: 'Example Brand' } ], value: 34.99, currency: 'USD' }); ``` ### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | -------------------------- | | items | array | Yes | Products added to wishlist | | value | number | No | Product price | | currency | string | No | ISO 4217 currency code | ### When to Fire * Wishlist/favorite button click * Save for later action * Heart icon click on product *** ## refund Fires when an order is refunded. ### JavaScript Full refund: ```javascript theme={null} window._upstack('track', 'refund', { orderId: 'ORD_12345', value: 149.99, currency: 'USD' }); ``` Partial refund: ```javascript theme={null} window._upstack('track', 'refund', { orderId: 'ORD_12345', value: 89.99, currency: 'USD', items: [ { id: 'SKU_001', name: 'Blue Running Shoes', price: 89.99, quantity: 1 } ] }); ``` ### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | --------------------------------------- | | orderId | string | Yes | Original order identifier | | value | number | Yes | Refund amount | | currency | string | No | ISO 4217 currency code | | items | array | No | Products refunded (for partial refunds) | ### When to Fire * Refund processed via Shopify admin * `refunds/create` webhook (server-side) * Customer service refund action *** ## login Fires when a user logs into their account. ### JavaScript ```javascript theme={null} window._upstack('track', 'login', { method: 'email' }); ``` ### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | ---------------------------------------------------------------- | | method | string | No | Login method (`'email'`, `'google'`, `'facebook'`, `'shop_pay'`) | ### When to Fire * Successful login form submission * OAuth login completion * Automatic re-authentication *** ## sign\_up Fires when a user creates a new account. ### JavaScript ```javascript theme={null} window._upstack('track', 'sign_up', { method: 'email' }); ``` ### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | --------------------------------------------------- | | method | string | No | Signup method (`'email'`, `'google'`, `'facebook'`) | <Note> **sign\_up vs complete\_registration:** Use `sign_up` for initial account creation. Use `complete_registration` for multi-step registration flows or when capturing additional profile data. </Note> ### When to Fire * Account creation form submission * OAuth signup completion *** ## contact Fires when a user submits a contact form. ### JavaScript ```javascript theme={null} window._upstack('track', 'contact', { formName: 'product_inquiry', email: 'customer@example.com' }); ``` ### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | -------------------- | | formName | string | No | Form or inquiry type | | email | string | No | Contact's email | ### When to Fire * Contact us form submission * Support request submission * Product inquiry *** ## book\_call Fires when a user books a call or consultation. ### JavaScript ```javascript theme={null} window._upstack('track', 'book_call', { callType: 'sales_consultation', value: 200.00, currency: 'USD' }); ``` ### Properties | Property | Type | Required | Description | | -------- | ------ | -------- | -------------------------------------------------------- | | callType | string | No | Type of call (e.g., `'sales_consultation'`, `'support'`) | | value | number | No | Estimated value of the booking | | currency | string | No | ISO 4217 currency code | ### When to Fire * Calendly booking confirmation * Meeting scheduler submission * Demo request completion *** ## schedule Fires when a user schedules an appointment. ### JavaScript ```javascript theme={null} window._upstack('track', 'schedule', { appointmentType: 'fitting', value: 75.00, currency: 'USD' }); ``` ### Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | ---------------------- | | appointmentType | string | No | Type of appointment | | value | number | No | Service value | | currency | string | No | ISO 4217 currency code | ### When to Fire * Appointment booking confirmation * Service scheduling completion *** ## submit\_application Fires when a user submits an application. ### JavaScript ```javascript theme={null} window._upstack('track', 'submit_application', { applicationType: 'wholesale_partner', value: 5000.00, currency: 'USD' }); ``` ### Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | --------------------------- | | applicationType | string | No | Application type | | value | number | No | Estimated application value | | currency | string | No | ISO 4217 currency code | ### When to Fire * Wholesale application submission * Affiliate program application * Partnership request *** ## trial\_started Fires when a visitor begins a free trial. ### JavaScript ```javascript theme={null} window._upstack('track', 'trial_started', { planName: 'Premium Plan', trialDays: 14, value: 49.99, currency: 'USD' }); ``` ### Properties | Property | Type | Required | Description | | --------- | ------ | -------- | -------------------------- | | planName | string | No | Trial plan or product name | | trialDays | number | No | Trial duration in days | | value | number | No | Plan value after trial | | currency | string | No | ISO 4217 currency code | ### When to Fire * Trial signup confirmation * Trial activation *** ## Item Object The `items` array in e-commerce events uses this structure: ```javascript theme={null} { id: 'SKU_12345', // Required: Product or variant ID name: 'Classic Cotton Tee', // Required: Product name price: 34.99, // Required: Unit price quantity: 1, // Required for cart/purchase events brand: 'Example Brand', // Optional: Brand name category: 'Apparel/Tees', // Optional: Product category (use / for hierarchy) variant: 'Blue / Medium', // Optional: Variant info position: 1 // Optional: Position in list (for impressions) } ``` | Property | Type | Required | Description | | -------- | ------ | -------- | -------------------------------------------------------------- | | id | string | Yes | Product or variant SKU/ID | | name | string | Yes | Product display name | | price | number | Yes | Unit price (not total) | | quantity | number | Varies | Required for add\_to\_cart, purchase; optional for view events | | brand | string | No | Brand or manufacturer | | category | string | No | Category path (e.g., `'Shoes/Running'`) | | variant | string | No | Size, color, or other variant | | position | number | No | Position in list for impression tracking | *** ## Event Tracking Matrix This matrix shows which events are tracked automatically by the Upstack Pixel on Shopify stores versus which require manual implementation. | Event | Shopify Auto | Headless/Manual | | --------------------------- | :------------------: | :-------------: | | `page_view` | ✅ | Required | | `view_content` | ✅ | Required | | `view_category` | ✅ | Required | | `view_item_list` | — | Required | | `add_to_cart` | ✅ | Required | | `product_removed_from_cart` | ✅ | Required | | `view_cart` | ✅ | Required | | `initiate_checkout` | ✅ | Required | | `add_shipping_info` | ✅ | Required | | `select_shipping_method` | — | Required | | `add_payment_info` | ✅ | Required | | `purchase` | ✅ | Required | | `search` | ✅ | Required | | `lead` | Via form hooks | Required | | `subscribe` | Via popup/form hooks | Required | | `complete_registration` | — | Required | | `login` | — | Required | | `sign_up` | — | Required | | `refund` | Via webhook | — | <Note> **Legend:** * ✅ = Automatically tracked by Upstack Pixel * Via form hooks = Tracked when using compatible form/popup apps * Via webhook = Tracked server-side through Shopify webhooks * Required = You must implement manually * — = Not applicable or rarely needed </Note> *** ## Events Not Covered Here | Event Type | Documentation | | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | | `identify` | See [JavaScript SDK Reference](/pixel/javascript-sdk#identifyuserid-data) | | `nc_purchase` / `rc_purchase` | Upstack-generated new vs. returning customer purchase events. See [nc\_purchase](#nc_purchase) and [rc\_purchase](#rc_purchase) above | | Shopify automatic events | See [Shopify Automatic Tracking](/sources/catalog/shopify-automatic-tracking) | | SaaS events | See [SaaS Events Reference](/event-tracking/event-taxonomy/saas-events) | | Custom events | See [Custom Events](/guides/custom-events/how-to-create-custom-event-triggers) | ## Related Documentation <CardGroup> <Card title="Shopify Automatic Tracking" icon="shopify" href="/sources/catalog/shopify-automatic-tracking"> Events that fire automatically on Shopify stores — check what's already tracked. </Card> <Card title="JavaScript SDK" icon="code" href="/pixel/javascript-sdk"> Full SDK API reference including `identify()` and direct client methods. </Card> <Card title="Properties & Context" icon="table" href="/event-tracking/event-taxonomy/properties"> Complete reference for item arrays, customer data, and auto-captured fields. </Card> <Card title="Custom Events" icon="sparkles" href="/event-tracking/event-taxonomy/custom-events"> Create events beyond the standard taxonomy, including Upstack-generated events like `nc_purchase`. </Card> </CardGroup> # add_payment_info Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/add-payment-info Track when a customer enters payment details during checkout Fires when a customer enters payment details during checkout. This is the last step before purchase and indicates very high purchase intent. <Note> **Shopify:** Automatically tracked when customers complete the payment step in checkout. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'add_payment_info', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 2 } ], value: 84.97, currency: 'USD', paymentType: 'credit_card' }); ``` ## Properties | Property | Type | Required | Description | | ----------- | ------ | -------- | ---------------------------------------------------------------- | | items | array | No | Products in checkout | | value | number | No | Cart value at payment step | | currency | string | No | ISO 4217 currency code | | paymentType | string | No | Payment method (e.g., `'credit_card'`, `'paypal'`, `'shop_pay'`) | ## When to Fire * Payment form completion * Payment method selection * Before final order submission ## Related Events * [add\_shipping\_info](/event-tracking/event-taxonomy/standard-events/add-shipping-info) — Previous checkout step * [purchase](/event-tracking/event-taxonomy/standard-events/purchase) — When order is completed # add_shipping_info Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/add-shipping-info Track when a customer enters shipping details during checkout Fires when a customer enters shipping details during checkout. This helps track checkout progress and identify where customers drop off. <Note> **Shopify:** Automatically tracked when customers complete the shipping step in checkout. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'add_shipping_info', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 2 } ], value: 84.97, currency: 'USD', shippingTier: 'standard' }); ``` ## Properties | Property | Type | Required | Description | | ------------ | ------ | -------- | ---------------------------------------------------------------- | | items | array | No | Products in checkout | | value | number | No | Cart value at shipping step | | currency | string | No | ISO 4217 currency code | | shippingTier | string | No | Shipping method (e.g., `'standard'`, `'express'`, `'overnight'`) | ## When to Fire * Shipping form completion * Shipping method selection * Proceeding past shipping step ## Related Events * [initiate\_checkout](/event-tracking/event-taxonomy/standard-events/initiate-checkout) — Starting checkout * [select\_shipping\_method](/event-tracking/event-taxonomy/standard-events/select-shipping-method) — When selecting specific shipping option * [add\_payment\_info](/event-tracking/event-taxonomy/standard-events/add-payment-info) — After entering payment details # add_to_cart Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/add-to-cart Track when a visitor adds an item to their cart Fires when a visitor adds an item to their cart. This is one of the most important e-commerce events for tracking purchase intent and building audiences. <Note> **Shopify:** Automatically tracked when using standard Shopify cart functionality. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'add_to_cart', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 2, variant: 'Blue / Medium', brand: 'Example Brand', category: 'Apparel/T-Shirts' } ], value: 69.98, currency: 'USD' }); ``` Minimal example: ```javascript theme={null} window._upstack('track', 'add_to_cart', { items: [{ id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 1 }], value: 34.99, currency: 'USD' }); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | ---------------------------------------------------------------------------------------------- | | items | array | Yes | Products added (see [Item Object](/event-tracking/event-taxonomy/standard-events#item-object)) | | value | number | Yes | Total value of items added | | currency | string | Yes | ISO 4217 currency code | ## When to Fire * Add-to-cart button click * Quantity increase in cart * "Buy Now" button click (before checkout) ## Related Events * [view\_content](/event-tracking/event-taxonomy/standard-events/view-content) — View product before adding * [product\_removed\_from\_cart](/event-tracking/event-taxonomy/standard-events/product-removed-from-cart) — When removing from cart * [view\_cart](/event-tracking/event-taxonomy/standard-events/view-cart) — When viewing cart * [initiate\_checkout](/event-tracking/event-taxonomy/standard-events/initiate-checkout) — When starting checkout # add_to_wishlist Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/add-to-wishlist Track when a visitor adds a product to their wishlist Fires when a visitor adds a product to their wishlist or saves it for later. This indicates high purchase intent and is valuable for remarketing campaigns. <Note> **Shopify:** Manual implementation required. Requires a wishlist app or custom implementation. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'add_to_wishlist', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, brand: 'Example Brand' } ], value: 34.99, currency: 'USD' }); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | -------------------------- | | items | array | Yes | Products added to wishlist | | value | number | No | Product price | | currency | string | No | ISO 4217 currency code | ## When to Fire * Wishlist/favorite button click * Save for later action * Heart icon click on product ## Related Events * [view\_content](/event-tracking/event-taxonomy/standard-events/view-content) — When viewing the product * [add\_to\_cart](/event-tracking/event-taxonomy/standard-events/add-to-cart) — When adding to cart instead # book_call Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/book-call Track when a user books a call or consultation Fires when a user books a call or consultation. This is a high-intent conversion event commonly used by B2B companies and service businesses. <Note> **Shopify:** Manual implementation required. Integrate with your scheduling tool (Calendly, etc.). </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'book_call', { callType: 'sales_consultation', value: 200.00, currency: 'USD' }); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | -------------------------------------------------------- | | callType | string | No | Type of call (e.g., `'sales_consultation'`, `'support'`) | | value | number | No | Estimated value of the booking | | currency | string | No | ISO 4217 currency code | ## When to Fire * Calendly booking confirmation * Meeting scheduler submission * Demo request completion ## Related Events * [schedule](/event-tracking/event-taxonomy/standard-events/schedule) — For general appointment scheduling * [contact](/event-tracking/event-taxonomy/standard-events/contact) — For contact form submissions * [lead](/event-tracking/event-taxonomy/standard-events/lead) — For general lead capture # complete_registration Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/complete-registration Track when a customer creates an account Fires when a customer creates an account. This is useful for tracking account signups and can be a valuable conversion event for platforms that prioritize registered users. <Note> **Shopify:** Manual implementation required. Not automatically tracked. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'complete_registration', { method: 'email', source: 'checkout_page' }); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | --------------------------------------------------------------- | | method | string | No | Registration method (e.g., `'email'`, `'google'`, `'facebook'`) | | source | string | No | Where registration occurred | ## When to Fire * Account registration form submission * OAuth signup completion (Google, Facebook) * Post-purchase account creation ## Related Events * [sign\_up](/event-tracking/event-taxonomy/standard-events/sign-up) — For simpler signup tracking * [login](/event-tracking/event-taxonomy/standard-events/login) — When existing users log in * [lead](/event-tracking/event-taxonomy/standard-events/lead) — For lead generation # contact Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/contact Track when a user submits a contact form Fires when a user submits a contact form. This is useful for tracking customer inquiries and support requests as conversion events. <Note> **Shopify:** Manual implementation required. Integrate with your contact form. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'contact', { formName: 'product_inquiry', email: 'customer@example.com' }); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | -------------------- | | formName | string | No | Form or inquiry type | | email | string | No | Contact's email | ## When to Fire * Contact us form submission * Support request submission * Product inquiry ## Related Events * [lead](/event-tracking/event-taxonomy/standard-events/lead) — For general lead capture * [book\_call](/event-tracking/event-taxonomy/standard-events/book-call) — When scheduling a call # initiate_checkout Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/initiate-checkout Track when a visitor starts the checkout process Fires when a visitor starts the checkout process. This event marks the transition from browsing to buying and is critical for checkout funnel analysis. <Note> **Shopify:** Automatically tracked when customers click the checkout button or land on the checkout page. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'initiate_checkout', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 2 }, { id: 'SKU_67890', name: 'Running Socks', price: 14.99, quantity: 1 } ], value: 84.97, currency: 'USD' }); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | ---------------------- | | items | array | Yes | Products in checkout | | value | number | Yes | Cart subtotal | | currency | string | Yes | ISO 4217 currency code | ## When to Fire * Checkout button click * Checkout page load * Express checkout initiation (Shop Pay, Apple Pay) ## Related Events * [view\_cart](/event-tracking/event-taxonomy/standard-events/view-cart) — Before starting checkout * [add\_shipping\_info](/event-tracking/event-taxonomy/standard-events/add-shipping-info) — After entering shipping details * [add\_payment\_info](/event-tracking/event-taxonomy/standard-events/add-payment-info) — After entering payment details * [purchase](/event-tracking/event-taxonomy/standard-events/purchase) — When order is completed # lead Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/lead Track when a visitor submits a lead form Fires when a visitor submits a lead form. This is the primary conversion event for lead generation businesses and is used to track form submissions, newsletter signups, and inquiries. <Note> **Shopify:** Tracked via form hooks when using compatible form/popup apps. Manual implementation may be required for custom forms. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'lead', { source: 'contact_form', email: 'prospect@example.com', value: 150.00, currency: 'USD' }); ``` Newsletter signup: ```javascript theme={null} window._upstack('track', 'lead', { source: 'newsletter_popup', email: 'subscriber@example.com' }); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | --------------------------- | | source | string | No | Form or campaign identifier | | email | string | No | Lead's email address | | value | number | No | Estimated lead value | | currency | string | No | ISO 4217 currency code | ## When to Fire * Contact form submission * Newsletter signup * Quote request submission * Product inquiry ## Related Events * [subscribe](/event-tracking/event-taxonomy/standard-events/subscribe) — For marketing opt-ins specifically * [contact](/event-tracking/event-taxonomy/standard-events/contact) — For contact form submissions * [complete\_registration](/event-tracking/event-taxonomy/standard-events/complete-registration) — For account signups # login Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/login Track when a user logs into their account Fires when a user logs into their account. This helps track returning user engagement and can be used to build audience segments of active customers. <Note> **Shopify:** Manual implementation required. Not automatically tracked. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'login', { method: 'email' }); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | ---------------------------------------------------------------- | | method | string | No | Login method (`'email'`, `'google'`, `'facebook'`, `'shop_pay'`) | ## When to Fire * Successful login form submission * OAuth login completion * Automatic re-authentication ## Related Events * [sign\_up](/event-tracking/event-taxonomy/standard-events/sign-up) — When new users create accounts * [complete\_registration](/event-tracking/event-taxonomy/standard-events/complete-registration) — For registration flows # nc_purchase Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/nc-purchase Track purchases from first-time customers — automatically generated by Upstack <Info> **Automatically Generated** — This event is created by Upstack backend services for Shopify customers. You do not need to fire this event manually. </Info> ## Overview The `nc_purchase` (New Customer Purchase) event is generated when Upstack detects a purchase from a first-time customer. This event fires alongside the standard `purchase` event, enabling you to segment and optimize campaigns specifically for customer acquisition. ## How It Works When a purchase occurs, Upstack's backend analyzes the customer's order history: 1. **Order received** — Shopify sends a purchase webhook to Upstack 2. **Customer lookup** — Upstack checks if this customer ID has any previous orders 3. **Classification** — If this is the customer's first order, an `nc_purchase` event is generated 4. **Forwarding** — The event is sent to your configured destinations with proper attribution The classification happens server-side using Shopify's customer order history, ensuring accurate new customer detection even when cookies are blocked or the customer uses a different device. ## Properties This event includes all properties from the original `purchase` event: | Property | Type | Description | | -------- | ------ | ---------------------------------------- | | orderId | string | Shopify order ID | | value | number | Order total value | | currency | string | ISO 4217 currency code (e.g., `USD`) | | items | array | Products purchased | | email | string | Customer email (hashed for destinations) | | phone | string | Customer phone (hashed for destinations) | No additional properties are added — the event is the purchase event with a different event name for segmentation. ## Destination Mapping This event is forwarded to destinations as: | Destination | Event Name | Notes | | --------------------- | --------------------------- | -------------------------------------------- | | **Meta CAPI** | `Purchase` with custom data | Includes `customer_type: new` in custom data | | **Google Ads** | `purchase` | Can be filtered by event name in Google Ads | | **TikTok Events API** | `CompletePayment` | Event name included for segmentation | | **Klaviyo** | `Placed Order` | Tagged as new customer | | **GA4** | `purchase` | Custom dimension for customer type | ## Use Cases * **Optimize for acquisition** — Set up Meta campaigns optimizing specifically for new customer purchases rather than all purchases * **Measure true CAC** — Calculate cost per new customer acquisition more accurately * **Exclude retargeting** — Create audiences that exclude returning customers * **A/B test acquisition strategies** — Compare campaign performance on new customers only ## Why This Matters Many brands find that optimizing for all purchases leads to over-indexing on returning customers who would have purchased anyway. By sending `nc_purchase` events to ad platforms, you can: * Train algorithms to find net-new customers * Reduce wasted spend on existing customers * Get clearer signals on acquisition campaign performance ## Related Events * [purchase](/event-tracking/event-taxonomy/standard-events#purchase) — The base purchase event for all orders * [rc\_purchase](/event-tracking/event-taxonomy/standard-events/rc-purchase) — Returning customer purchases * [all\_purchase](/event-tracking/event-taxonomy/upstack-generated/all-purchase) — All purchases (combines NC + RC) # page_view Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/page-view Track when a visitor loads a page on your site Fires when a visitor loads a page. This is the foundation of all analytics — every page load should trigger this event. <Note> **Shopify:** Automatically tracked by the Upstack Pixel on all page loads. </Note> ## JavaScript ```javascript theme={null} window._upstack('page'); ``` With custom properties: ```javascript theme={null} window._upstack('page', { pageCategory: 'product', collectionHandle: 'summer-2026' }); ``` ## Properties | Property | Type | Required | Description | | ---------------- | ------ | -------- | ------------------------------------------------------- | | pageCategory | string | No | Page type (e.g., `'product'`, `'collection'`, `'blog'`) | | collectionHandle | string | No | Collection identifier for collection pages | ## Auto-Captured The SDK automatically captures `page_url`, `page_title`, `page_referrer`, and `page_path`. ## When to Fire * On initial page load * On SPA route changes * After dynamic content loads (infinite scroll) ## Related Events * [view\_content](/event-tracking/event-taxonomy/standard-events/view-content) — When viewing a specific product * [view\_category](/event-tracking/event-taxonomy/standard-events/view-category) — When viewing a collection page * [search](/event-tracking/event-taxonomy/standard-events/search) — When viewing search results # product_removed_from_cart Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/product-removed-from-cart Track when a visitor removes an item from their cart Fires when a visitor removes an item from their cart. This helps identify cart friction points and understand why shoppers don't complete purchases. <Note> **Shopify:** Automatically tracked when items are removed from cart. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'product_removed_from_cart', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 1 } ], value: 34.99, currency: 'USD' }); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | items | array | Yes | Products removed (see [Item Object](/event-tracking/event-taxonomy/standard-events#item-object)) | | value | number | No | Value of removed items | | currency | string | No | ISO 4217 currency code | ## When to Fire * Remove button click * Quantity decrease to zero * Clear cart action ## Related Events * [add\_to\_cart](/event-tracking/event-taxonomy/standard-events/add-to-cart) — When adding items to cart * [view\_cart](/event-tracking/event-taxonomy/standard-events/view-cart) — When viewing cart contents # purchase Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/purchase Track when an order is completed Fires when an order is completed. This is the most important e-commerce event — it's used for conversion tracking, ROAS calculation, and optimization across all ad platforms. <Note> **Shopify:** Automatically tracked on the order confirmation page (thank you page) and via server-side webhooks. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'purchase', { orderId: 'ORD_12345', value: 149.99, currency: 'USD', tax: 12.50, shipping: 5.99, items: [ { id: 'SKU_001', name: 'Blue Running Shoes', price: 89.99, quantity: 1, brand: 'Nike', category: 'Shoes/Running' }, { id: 'SKU_002', name: 'Running Socks', price: 14.99, quantity: 2, brand: 'Nike', category: 'Accessories/Socks' } ], email: 'customer@example.com' }, 'ORD_12345'); ``` <Note> The third parameter (`'ORD_12345'`) is a deduplication ID. It prevents duplicate purchase events from being sent to destinations if the event fires multiple times. </Note> Minimal example: ```javascript theme={null} window._upstack('track', 'purchase', { orderId: 'ORD_12345', value: 149.99, currency: 'USD', items: [{ id: 'SKU_001', name: 'Blue Running Shoes', price: 89.99, quantity: 1 }] }, 'ORD_12345'); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | -------------------------------------------------------------------------------------------------- | | orderId | string | Yes | Unique order identifier | | value | number | Yes | Total order value | | currency | string | Yes | ISO 4217 currency code | | items | array | Yes | Products purchased (see [Item Object](/event-tracking/event-taxonomy/standard-events#item-object)) | | tax | number | No | Tax amount | | shipping | number | No | Shipping cost | | email | string | No | Customer email (improves identity matching) | <Warning> **Important:** The `value` property should match what you want reported to ad platforms. Discrepancies between Shopify order totals and reported CAPI revenue are the most common attribution debugging issue. </Warning> ## When to Fire * Order confirmation page load * After successful payment confirmation * Shopify `orders/create` webhook (server-side) ## Related Events * [initiate\_checkout](/event-tracking/event-taxonomy/standard-events/initiate-checkout) — Starting the checkout * [add\_payment\_info](/event-tracking/event-taxonomy/standard-events/add-payment-info) — Before completing purchase * [refund](/event-tracking/event-taxonomy/standard-events/refund) — When order is refunded # rc_purchase Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/rc-purchase Track purchases from returning customers — automatically generated by Upstack <Info> **Automatically Generated** — This event is created by Upstack backend services for Shopify customers. You do not need to fire this event manually. </Info> ## Overview The `rc_purchase` (Returning Customer Purchase) event is generated when Upstack detects a purchase from a customer who has ordered before. This event fires alongside the standard `purchase` event, enabling you to measure retention and optimize campaigns for repeat purchases. ## How It Works When a purchase occurs, Upstack's backend analyzes the customer's order history: 1. **Order received** — Shopify sends a purchase webhook to Upstack 2. **Customer lookup** — Upstack checks if this customer ID has any previous orders 3. **Classification** — If the customer has at least one previous order, an `rc_purchase` event is generated 4. **Forwarding** — The event is sent to your configured destinations with proper attribution The classification happens server-side using Shopify's customer order history, providing accurate returning customer detection regardless of browser cookies or device changes. ## Properties This event includes all properties from the original `purchase` event: | Property | Type | Description | | -------- | ------ | ---------------------------------------- | | orderId | string | Shopify order ID | | value | number | Order total value | | currency | string | ISO 4217 currency code (e.g., `USD`) | | items | array | Products purchased | | email | string | Customer email (hashed for destinations) | | phone | string | Customer phone (hashed for destinations) | No additional properties are added — the event is the purchase event with a different event name for segmentation. ## Destination Mapping This event is forwarded to destinations as: | Destination | Event Name | Notes | | --------------------- | --------------------------- | -------------------------------------------------- | | **Meta CAPI** | `Purchase` with custom data | Includes `customer_type: returning` in custom data | | **Google Ads** | `purchase` | Can be filtered by event name in Google Ads | | **TikTok Events API** | `CompletePayment` | Event name included for segmentation | | **Klaviyo** | `Placed Order` | Tagged as returning customer | | **GA4** | `purchase` | Custom dimension for customer type | ## Use Cases * **Measure retention** — Track how well retention and loyalty campaigns drive repeat purchases * **Optimize for LTV** — Train ad algorithms to find customers likely to purchase multiple times * **Retargeting performance** — Measure the true ROI of retargeting campaigns * **Segment reporting** — Compare new vs. returning customer metrics side by side ## Why This Matters Understanding your returning customer purchase rate helps you: * Balance acquisition vs. retention spend * Identify which channels drive the most loyal customers * Calculate customer lifetime value more accurately * Optimize campaigns for long-term revenue, not just first-time purchases ## Related Events * [purchase](/event-tracking/event-taxonomy/standard-events#purchase) — The base purchase event for all orders * [nc\_purchase](/event-tracking/event-taxonomy/standard-events/nc-purchase) — New customer purchases * [all\_purchase](/event-tracking/event-taxonomy/upstack-generated/all-purchase) — All purchases (combines NC + RC) * [lapsed\_purchase](/event-tracking/event-taxonomy/upstack-generated/lapsed-purchase) — Purchases from lapsed customers who returned # refund Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/refund Track when an order is refunded Fires when an order is refunded. This helps maintain accurate revenue reporting and adjusts conversion data for ad platforms that support refund events. <Note> **Shopify:** Automatically tracked via the `refunds/create` webhook (server-side). </Note> ## JavaScript Full refund: ```javascript theme={null} window._upstack('track', 'refund', { orderId: 'ORD_12345', value: 149.99, currency: 'USD' }); ``` Partial refund: ```javascript theme={null} window._upstack('track', 'refund', { orderId: 'ORD_12345', value: 89.99, currency: 'USD', items: [ { id: 'SKU_001', name: 'Blue Running Shoes', price: 89.99, quantity: 1 } ] }); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | --------------------------------------- | | orderId | string | Yes | Original order identifier | | value | number | Yes | Refund amount | | currency | string | No | ISO 4217 currency code | | items | array | No | Products refunded (for partial refunds) | ## When to Fire * Refund processed via Shopify admin * `refunds/create` webhook (server-side) * Customer service refund action ## Related Events * [purchase](/event-tracking/event-taxonomy/standard-events/purchase) — The original order event # schedule Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/schedule Track when a user schedules an appointment Fires when a user schedules an appointment. Use this for service-based businesses where customers book appointments, fittings, or consultations. <Note> **Shopify:** Manual implementation required. Integrate with your scheduling system. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'schedule', { appointmentType: 'fitting', value: 75.00, currency: 'USD' }); ``` ## Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | ---------------------- | | appointmentType | string | No | Type of appointment | | value | number | No | Service value | | currency | string | No | ISO 4217 currency code | ## When to Fire * Appointment booking confirmation * Service scheduling completion ## Related Events * [book\_call](/event-tracking/event-taxonomy/standard-events/book-call) — For sales calls and consultations * [lead](/event-tracking/event-taxonomy/standard-events/lead) — For general lead capture # search Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/search Track when a visitor performs a search Fires when a visitor performs a search. This helps understand what customers are looking for and can inform product decisions and SEO strategy. <Note> **Shopify:** Automatically tracked when using Shopify's native search functionality. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'search', { searchTerm: 'blue running shoes', resultsCount: 24 }); ``` With search results: ```javascript theme={null} window._upstack('track', 'search', { searchTerm: 'blue running shoes', resultsCount: 24, items: [ { id: 'SKU_001', name: 'Blue Running Shoes', price: 89.99 }, { id: 'SKU_002', name: 'Navy Training Shoes', price: 79.99 } ] }); ``` ## Properties | Property | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------ | | searchTerm | string | Yes | The search query entered | | resultsCount | number | No | Number of results returned | | items | array | No | Top products in search results | ## When to Fire * Search results page load * Predictive search dropdown display * "No results" page (with `resultsCount: 0`) ## Related Events * [view\_content](/event-tracking/event-taxonomy/standard-events/view-content) — When clicking on a search result * [view\_item\_list](/event-tracking/event-taxonomy/standard-events/view-item-list) — For displaying search results as a list # select_shipping_method Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/select-shipping-method Track when a customer selects a shipping method during checkout Fires when a customer selects a shipping method during checkout. This helps understand shipping preferences and their impact on conversion. <Note> **Shopify:** Manual implementation required. Not automatically tracked. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'select_shipping_method', { shippingTier: 'express', shipping: 12.99, currency: 'USD', value: 97.98 }); ``` With items: ```javascript theme={null} window._upstack('track', 'select_shipping_method', { shippingTier: 'overnight', shipping: 24.99, currency: 'USD', value: 109.98, items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 2 } ] }); ``` ## Properties | Property | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------------------- | | shippingTier | string | Yes | Shipping method selected (e.g., `'standard'`, `'express'`, `'overnight'`) | | shipping | number | No | Shipping cost | | value | number | No | Cart value at shipping selection | | currency | string | No | ISO 4217 currency code | | items | array | No | Products in checkout | ## When to Fire * Shipping method radio button selection * Shipping tier dropdown change * Before proceeding to payment ## Related Events * [add\_shipping\_info](/event-tracking/event-taxonomy/standard-events/add-shipping-info) — When entering shipping address * [add\_payment\_info](/event-tracking/event-taxonomy/standard-events/add-payment-info) — After entering payment details # sign_up Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/sign-up Track when a user creates a new account Fires when a user creates a new account. Use this for simple account creation flows. <Note> **Shopify:** Manual implementation required. Not automatically tracked. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'sign_up', { method: 'email' }); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | --------------------------------------------------- | | method | string | No | Signup method (`'email'`, `'google'`, `'facebook'`) | <Note> **sign\_up vs complete\_registration:** Use `sign_up` for initial account creation. Use `complete_registration` for multi-step registration flows or when capturing additional profile data. </Note> ## When to Fire * Account creation form submission * OAuth signup completion ## Related Events * [complete\_registration](/event-tracking/event-taxonomy/standard-events/complete-registration) — For multi-step registration * [login](/event-tracking/event-taxonomy/standard-events/login) — When existing users log in # submit_application Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/submit-application Track when a user submits an application Fires when a user submits an application. Use this for wholesale applications, affiliate program signups, partnership requests, and similar high-value lead capture. <Note> **Shopify:** Manual implementation required. Integrate with your application forms. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'submit_application', { applicationType: 'wholesale_partner', value: 5000.00, currency: 'USD' }); ``` ## Properties | Property | Type | Required | Description | | --------------- | ------ | -------- | --------------------------- | | applicationType | string | No | Application type | | value | number | No | Estimated application value | | currency | string | No | ISO 4217 currency code | ## When to Fire * Wholesale application submission * Affiliate program application * Partnership request ## Related Events * [lead](/event-tracking/event-taxonomy/standard-events/lead) — For general lead capture * [complete\_registration](/event-tracking/event-taxonomy/standard-events/complete-registration) — For account signups # subscribe Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/subscribe Track when a visitor subscribes to email or SMS marketing Fires when a visitor subscribes to email or SMS marketing. This helps track marketing list growth and attribute new subscribers to campaigns. <Note> **Shopify:** Tracked via popup/form hooks when using compatible email/SMS apps. Manual implementation may be required for custom forms. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'subscribe', { channel: 'email', source: 'footer_form', value: 5.00, currency: 'USD' }); ``` SMS subscription: ```javascript theme={null} window._upstack('track', 'subscribe', { channel: 'sms', source: 'popup', phone: '+15551234567' }); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | --------------------------------------------------------------- | | channel | string | No | Subscription channel (`'email'`, `'sms'`, `'push'`) | | source | string | No | Subscription source (e.g., `'popup'`, `'footer'`, `'checkout'`) | | value | number | No | Estimated subscriber value | | currency | string | No | ISO 4217 currency code | ## When to Fire * Newsletter signup * SMS opt-in * Push notification subscription ## Related Events * [lead](/event-tracking/event-taxonomy/standard-events/lead) — For general lead capture * [complete\_registration](/event-tracking/event-taxonomy/standard-events/complete-registration) — For account creation # trial_started Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/trial-started Track when a visitor begins a free trial Fires when a visitor begins a free trial. This is a key conversion event for SaaS and subscription businesses to track trial signups and optimize acquisition campaigns. <Note> **Shopify:** Manual implementation required. Integrate with your subscription/trial system. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'trial_started', { planName: 'Premium Plan', trialDays: 14, value: 49.99, currency: 'USD' }); ``` ## Properties | Property | Type | Required | Description | | --------- | ------ | -------- | -------------------------- | | planName | string | No | Trial plan or product name | | trialDays | number | No | Trial duration in days | | value | number | No | Plan value after trial | | currency | string | No | ISO 4217 currency code | ## When to Fire * Trial signup confirmation * Trial activation ## Related Events * [sign\_up](/event-tracking/event-taxonomy/standard-events/sign-up) — For account creation * [purchase](/event-tracking/event-taxonomy/standard-events/purchase) — When trial converts to paid # view_cart Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/view-cart Track when a visitor views their shopping cart Fires when a visitor views their shopping cart. This helps track cart abandonment and build remarketing audiences for shoppers who haven't completed checkout. <Note> **Shopify:** Automatically tracked when the cart page or cart drawer is viewed. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'view_cart', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, quantity: 2 }, { id: 'SKU_67890', name: 'Running Socks', price: 14.99, quantity: 1 } ], value: 84.97, currency: 'USD' }); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | ------------------------------------------------------------------------------------------------ | | items | array | Yes | Products in cart (see [Item Object](/event-tracking/event-taxonomy/standard-events#item-object)) | | value | number | No | Total cart value | | currency | string | No | ISO 4217 currency code | ## When to Fire * Cart page load * Cart drawer/sidebar open * Mini-cart expansion ## Related Events * [add\_to\_cart](/event-tracking/event-taxonomy/standard-events/add-to-cart) — When adding items to cart * [product\_removed\_from\_cart](/event-tracking/event-taxonomy/standard-events/product-removed-from-cart) — When removing items * [initiate\_checkout](/event-tracking/event-taxonomy/standard-events/initiate-checkout) — When starting checkout # view_category Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/view-category Track when a visitor views a collection or category page Fires when a visitor views a collection or category page. Use this to track browsing behavior and build category-based audiences. <Note> **Shopify:** Automatically tracked when viewing collection pages. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'view_category', { items: [ { id: 'SKU_001', name: 'Classic Cotton Tee', price: 34.99 }, { id: 'SKU_002', name: 'Vintage Logo Hoodie', price: 59.99 }, { id: 'SKU_003', name: 'Slim Fit Jeans', price: 79.99 } ], itemListId: 'summer_collection', itemListName: 'Summer 2026 Collection' }); ``` Minimal example: ```javascript theme={null} window._upstack('track', 'view_category', { itemListId: 'mens_shirts', itemListName: 'Men\'s Shirts' }); ``` ## Properties | Property | Type | Required | Description | | ------------ | ------ | -------- | -------------------------------------------------------------------------------------------------------------- | | itemListId | string | No | Collection/category identifier | | itemListName | string | No | Collection/category display name | | items | array | No | Products shown in the category (see [Item Object](/event-tracking/event-taxonomy/standard-events#item-object)) | ## When to Fire * Collection page load * Category filter applied * Browse by category navigation ## Related Events * [view\_content](/event-tracking/event-taxonomy/standard-events/view-content) — When viewing an individual product * [view\_item\_list](/event-tracking/event-taxonomy/standard-events/view-item-list) — For general product lists (recommendations, etc.) * [search](/event-tracking/event-taxonomy/standard-events/search) — When viewing search results # view_content Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/view-content Track when a visitor views a product or content page Fires when a visitor views a product or content page. This event is critical for remarketing audiences and conversion attribution. <Note> **Shopify:** Automatically tracked when viewing product detail pages. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'view_content', { items: [ { id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99, brand: 'Example Brand', category: 'Apparel/T-Shirts' } ], value: 34.99, currency: 'USD' }); ``` Minimal example: ```javascript theme={null} window._upstack('track', 'view_content', { items: [{ id: 'SKU_12345', name: 'Classic Cotton Tee', price: 34.99 }], value: 34.99, currency: 'USD' }); ``` ## Properties | Property | Type | Required | Description | | -------- | ------ | -------- | ----------------------------------------------------------------------------------------------- | | items | array | Yes | Products viewed (see [Item Object](/event-tracking/event-taxonomy/standard-events#item-object)) | | value | number | Yes | Product price | | currency | string | Yes | ISO 4217 currency code (e.g., `'USD'`) | ## When to Fire * Product detail page load * Quick view modal open * Collection page load (with collection products) ## Related Events * [add\_to\_cart](/event-tracking/event-taxonomy/standard-events/add-to-cart) — When adding the viewed product to cart * [add\_to\_wishlist](/event-tracking/event-taxonomy/standard-events/add-to-wishlist) — When saving the product for later * [view\_category](/event-tracking/event-taxonomy/standard-events/view-category) — When viewing a collection page # view_item_list Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/standard-events/view-item-list Track when a visitor views a list of products Fires when a visitor views a list of products. This is similar to `view_category` but more general — use it for recommendation carousels, recently viewed sections, and other product lists. <Note> **Shopify:** Manual implementation required. Not automatically tracked. </Note> ## JavaScript ```javascript theme={null} window._upstack('track', 'view_item_list', { items: [ { id: 'SKU_001', name: 'Classic Cotton Tee', price: 34.99, index: 0 }, { id: 'SKU_002', name: 'Vintage Logo Hoodie', price: 59.99, index: 1 } ], itemListId: 'recommended_products', itemListName: 'Recommended For You' }); ``` ## Properties | Property | Type | Required | Description | | ------------ | ------ | -------- | ------------------------------------------------------------ | | itemListId | string | No | List identifier | | itemListName | string | No | List display name | | items | array | No | Products in the list (include `index` for position tracking) | ## When to Fire * Product recommendation carousel load * "Related Products" section view * "Recently Viewed" section view * Search results page load ## Related Events * [view\_category](/event-tracking/event-taxonomy/standard-events/view-category) — For collection/category pages * [view\_content](/event-tracking/event-taxonomy/standard-events/view-content) — When clicking through to a product * [search](/event-tracking/event-taxonomy/standard-events/search) — For search results specifically # Upstack-Generated Events Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/upstack-generated Events automatically generated by Upstack backend for Shopify customers — purchase segmentation, AOV tiers, and subscription tracking <Info> **Automatically Generated** — All events in this section are created by Upstack backend services for Shopify customers. You do not need to fire these events manually — they appear in your destinations automatically based on purchase data analysis. </Info> ## Overview Upstack automatically generates enriched purchase events that segment your customers beyond the standard `purchase` event. These events enable more sophisticated ad optimization, better attribution, and deeper customer insights. When a purchase occurs in your Shopify store, Upstack's backend analyzes the order and customer history to generate additional events alongside the standard `purchase` event. ## Available Events ### Customer Type Events | Event | Description | Link | | ----------------- | -------------------------------------------- | --------------------------------------------------------------------------------- | | `nc_purchase` | New customer purchases (first-time buyers) | [Documentation](/event-tracking/event-taxonomy/standard-events/nc-purchase) | | `rc_purchase` | Returning customer purchases (repeat buyers) | [Documentation](/event-tracking/event-taxonomy/standard-events/rc-purchase) | | `all_purchase` | All purchases (combines NC + RC) | [Documentation](/event-tracking/event-taxonomy/upstack-generated/all-purchase) | | `lapsed_purchase` | Purchases from lapsed customers who returned | [Documentation](/event-tracking/event-taxonomy/upstack-generated/lapsed-purchase) | | `upsell_purchase` | Upsell conversions | [Documentation](/event-tracking/event-taxonomy/upstack-generated/upsell-purchase) | ### AOV-Segmented Events | Event | Description | Link | | ------------------- | ----------------------------------- | ---------------------------------------------------------------------------- | | `high_aov_purchase` | Purchases above average order value | [Documentation](/event-tracking/event-taxonomy/upstack-generated/aov-events) | | `low_aov_purchase` | Purchases below average order value | [Documentation](/event-tracking/event-taxonomy/upstack-generated/aov-events) | | `p70_aov_purchase` | Purchases above 70th percentile | [Documentation](/event-tracking/event-taxonomy/upstack-generated/aov-events) | | `p80_aov_purchase` | Purchases above 80th percentile | [Documentation](/event-tracking/event-taxonomy/upstack-generated/aov-events) | | `p90_aov_purchase` | Purchases above 90th percentile | [Documentation](/event-tracking/event-taxonomy/upstack-generated/aov-events) | ### Subscription Events | Event | Description | Link | | --------------------------------- | --------------------------------- | ------------------------------------------------------------------------------------------------- | | `subscription_initial_purchase` | First-time subscription purchases | [Documentation](/event-tracking/event-taxonomy/upstack-generated/subscription-initial-purchase) | | `subscription_recurring_purchase` | Recurring subscription renewals | [Documentation](/event-tracking/event-taxonomy/upstack-generated/subscription-recurring-purchase) | ## How They Work ```mermaid theme={null} flowchart LR A[Shopify Webhook] --> B[Upstack Backend] B --> C{Customer Analysis} C --> D[NC/RC Classification] C --> E[AOV Segmentation] C --> F[Subscription Detection] C --> G[Lapsed Detection] D --> H[Destination Events] E --> H F --> H G --> H ``` 1. **Shopify sends a purchase webhook** to Upstack when an order is placed 2. **Upstack analyzes** the customer's order history, order value, and subscription status 3. **Multiple events are generated** based on the analysis (e.g., both `nc_purchase` and `high_aov_purchase` for a high-value first-time buyer) 4. **Events are forwarded** to your configured destinations with proper attribution ## Why Use These Events? ### Better Ad Optimization Instead of optimizing for all purchases equally, train ad algorithms to find: * **New customers** — Reduce wasted spend on existing customers * **High-AOV customers** — Find customers who spend more * **Subscription-likely customers** — Acquire subscribers with higher LTV ### More Accurate Attribution Understand which campaigns drive: * True customer acquisition (not just repeat purchases) * Premium customers (high AOV) * Subscription sign-ups vs. one-time purchases * Win-back conversions from lapsed customers ### Deeper Insights Compare performance across customer segments: * New vs. returning customer CAC * High vs. low AOV by channel * Subscription acquisition costs * Win-back campaign effectiveness ## Destination Support All Upstack-generated events are forwarded to your configured destinations: | Destination | Support | Notes | | ----------------- | ------- | ----------------------------------------- | | Meta CAPI | ✅ Full | Event name + custom data for segmentation | | Google Ads | ✅ Full | Filterable conversion events | | TikTok Events API | ✅ Full | Event name included | | Klaviyo | ✅ Full | Tagged events for segmentation | | GA4 | ✅ Full | Custom dimensions available | ## Getting Started These events are generated automatically for Shopify stores — no additional configuration needed. To use them: 1. **Check your destinations** — Ensure you have destinations configured in Upstack 2. **Configure event mapping** — Select which generated events to send to each destination 3. **Set up conversion tracking** — Configure your ad platforms to track these specific events 4. **Build reports** — Use the Upstack dashboard to compare metrics across event types <CardGroup> <Card title="New Customer Purchases" icon="user-plus" href="/event-tracking/event-taxonomy/standard-events/nc-purchase"> Optimize for customer acquisition </Card> <Card title="AOV Events" icon="chart-line" href="/event-tracking/event-taxonomy/upstack-generated/aov-events"> Segment by order value </Card> <Card title="Subscription Events" icon="repeat" href="/event-tracking/event-taxonomy/upstack-generated/subscription-initial-purchase"> Track subscription metrics </Card> <Card title="Lapsed Purchases" icon="user-clock" href="/event-tracking/event-taxonomy/upstack-generated/lapsed-purchase"> Measure win-back campaigns </Card> </CardGroup> # all_purchase Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/upstack-generated/all-purchase Track all purchases with unified customer segmentation — automatically generated by Upstack <Info> **Automatically Generated** — This event is created by Upstack backend services for Shopify customers. You do not need to fire this event manually. </Info> ## Overview The `all_purchase` event is generated for every purchase, regardless of customer type. It provides a unified purchase event that includes customer segmentation metadata, making it ideal for destinations that need a single purchase event with segmentation data attached. ## How It Works When a purchase occurs, Upstack generates an `all_purchase` event alongside the standard `purchase` event: 1. **Order received** — Shopify sends a purchase webhook to Upstack 2. **Customer analysis** — Upstack determines customer type (new, returning, lapsed, etc.) 3. **Event generation** — An `all_purchase` event is created with segmentation metadata 4. **Forwarding** — The event is sent to configured destinations This event is useful when you want all purchases sent to a destination but still need to segment by customer type in your reporting. ## Properties This event includes all properties from the original `purchase` event: | Property | Type | Description | | -------- | ------ | ---------------------------------------- | | orderId | string | Shopify order ID | | value | number | Order total value | | currency | string | ISO 4217 currency code (e.g., `USD`) | | items | array | Products purchased | | email | string | Customer email (hashed for destinations) | | phone | string | Customer phone (hashed for destinations) | ## Destination Mapping This event is forwarded to destinations as: | Destination | Event Name | Notes | | --------------------- | ----------------- | ----------------------------------------- | | **Meta CAPI** | `Purchase` | Standard purchase with all customer types | | **Google Ads** | `purchase` | Unified purchase event | | **TikTok Events API** | `CompletePayment` | All purchases | | **Klaviyo** | `Placed Order` | All orders | | **GA4** | `purchase` | Standard e-commerce purchase | ## Use Cases * **Unified reporting** — Single event stream that includes all purchase types * **Destination simplification** — Send one purchase event type instead of managing multiple * **Consistent attribution** — Ensure all purchases contribute to campaign optimization equally * **Baseline metrics** — Track total purchases before segmenting by customer type ## Relationship to Other Events The `all_purchase` event represents the union of: * `nc_purchase` — New customer purchases * `rc_purchase` — Returning customer purchases Every purchase generates both an `all_purchase` event AND one of the customer-type-specific events (`nc_purchase` or `rc_purchase`). ## Related Events * [purchase](/event-tracking/event-taxonomy/standard-events#purchase) — The base purchase event * [nc\_purchase](/event-tracking/event-taxonomy/standard-events/nc-purchase) — New customer purchases only * [rc\_purchase](/event-tracking/event-taxonomy/standard-events/rc-purchase) — Returning customer purchases only # AOV Purchase Events Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/upstack-generated/aov-events Track purchases segmented by average order value — automatically generated by Upstack <Info> **Automatically Generated** — These events are created by Upstack backend services for Shopify customers. You do not need to fire these events manually. </Info> ## Overview Upstack automatically generates AOV (Average Order Value) segmented purchase events based on your store's order value distribution. These events help you optimize campaigns for high-value customers and understand the revenue impact of different customer segments. ## Event Types | Event Name | Description | | ------------------- | ---------------------------------------------- | | `high_aov_purchase` | Purchase with above-average order value | | `low_aov_purchase` | Purchase with below-average order value | | `p70_aov_purchase` | Purchase above the 70th percentile order value | | `p80_aov_purchase` | Purchase above the 80th percentile order value | | `p90_aov_purchase` | Purchase above the 90th percentile order value | ## How It Works When a purchase occurs, Upstack calculates AOV thresholds based on your store's historical order data: 1. **Order received** — Shopify sends a purchase webhook to Upstack 2. **Threshold calculation** — Upstack computes percentile thresholds from your order history 3. **Classification** — The order value is compared against these thresholds 4. **Event generation** — The appropriate AOV event(s) are generated 5. **Forwarding** — Events are sent to your configured destinations ### Threshold Definitions | Event | Threshold Logic | | ------------------- | ------------------------------------------- | | `high_aov_purchase` | Order value > store's average order value | | `low_aov_purchase` | Order value ≤ store's average order value | | `p70_aov_purchase` | Order value > 70th percentile of all orders | | `p80_aov_purchase` | Order value > 80th percentile of all orders | | `p90_aov_purchase` | Order value > 90th percentile of all orders | <Note> Thresholds are calculated dynamically based on your store's recent order history. As your average order value changes, the classification adjusts automatically. </Note> ## Properties These events include all properties from the original `purchase` event: | Property | Type | Description | | -------- | ------ | ---------------------------------------- | | orderId | string | Shopify order ID | | value | number | Order total value | | currency | string | ISO 4217 currency code (e.g., `USD`) | | items | array | Products purchased | | email | string | Customer email (hashed for destinations) | | phone | string | Customer phone (hashed for destinations) | ## Destination Mapping AOV events are forwarded to destinations as: | Destination | Event Name | Notes | | --------------------- | ----------------- | -------------------------------- | | **Meta CAPI** | `Purchase` | With AOV segment in custom data | | **Google Ads** | `purchase` | Filterable by event name | | **TikTok Events API** | `CompletePayment` | AOV segment included | | **Klaviyo** | `Placed Order` | Tagged with AOV tier | | **GA4** | `purchase` | Custom dimension for AOV segment | ## Use Cases ### Optimize for High-Value Customers Use `high_aov_purchase` or `p90_aov_purchase` events to train ad algorithms to find customers who spend more: * Configure Meta CAPI to optimize for `high_aov_purchase` instead of all purchases * Build lookalike audiences from high-AOV customers * Set higher bids for campaigns driving premium purchases ### Identify Discount-Driven Traffic Use `low_aov_purchase` events to understand which channels drive bargain shoppers: * Compare high vs. low AOV by traffic source * Identify campaigns that attract discount-seekers * Adjust targeting to improve order values ### Revenue-Weighted Attribution Use percentile events for more accurate revenue attribution: * `p90_aov_purchase` — Focus on your most valuable 10% of orders * `p80_aov_purchase` — Track premium customer acquisition * `p70_aov_purchase` — Identify above-average performers ## Event Overlap A single purchase may generate multiple AOV events. For example, a purchase in the 95th percentile generates: * `high_aov_purchase` (above average) * `p70_aov_purchase` (above 70th percentile) * `p80_aov_purchase` (above 80th percentile) * `p90_aov_purchase` (above 90th percentile) Choose the threshold that best matches your optimization goals. ## Related Events * [purchase](/event-tracking/event-taxonomy/standard-events#purchase) — The base purchase event * [nc\_purchase](/event-tracking/event-taxonomy/standard-events/nc-purchase) — New customer purchases * [rc\_purchase](/event-tracking/event-taxonomy/standard-events/rc-purchase) — Returning customer purchases * [all\_purchase](/event-tracking/event-taxonomy/upstack-generated/all-purchase) — All purchases # lapsed_purchase Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/upstack-generated/lapsed-purchase Track purchases from lapsed customers who returned — automatically generated by Upstack <Info> **Automatically Generated** — This event is created by Upstack backend services for Shopify customers. You do not need to fire this event manually. </Info> ## Overview The `lapsed_purchase` event is generated when a customer who hasn't purchased in an extended period returns to make a new purchase. This event helps you measure the effectiveness of win-back campaigns and understand customer reactivation patterns. ## How It Works Upstack analyzes customer purchase history to identify lapsed customer reactivations: 1. **Order received** — Shopify sends a purchase webhook to Upstack 2. **Recency analysis** — Upstack checks the time since the customer's last purchase 3. **Lapsed classification** — If the customer hasn't purchased in the lapsed threshold period, a `lapsed_purchase` event is generated 4. **Forwarding** — The event is sent to your configured destinations ### Lapsed Customer Definition A customer is classified as "lapsed" when their last purchase occurred more than **180 days ago** (approximately 6 months). This threshold aligns with common e-commerce customer lifecycle definitions. <Note> The 180-day lapsed threshold is based on industry standards for e-commerce. It distinguishes between returning customers (recent purchasers) and lapsed customers (dormant accounts that have been reactivated). </Note> ## Properties This event includes all properties from the original `purchase` event: | Property | Type | Description | | -------- | ------ | ---------------------------------------- | | orderId | string | Shopify order ID | | value | number | Order total value | | currency | string | ISO 4217 currency code (e.g., `USD`) | | items | array | Products purchased | | email | string | Customer email (hashed for destinations) | | phone | string | Customer phone (hashed for destinations) | ## Destination Mapping This event is forwarded to destinations as: | Destination | Event Name | Notes | | --------------------- | ----------------- | ------------------------------------------- | | **Meta CAPI** | `Purchase` | With `customer_type: lapsed` in custom data | | **Google Ads** | `purchase` | Filterable by event name | | **TikTok Events API** | `CompletePayment` | Lapsed flag included | | **Klaviyo** | `Placed Order` | Tagged as lapsed customer win-back | | **GA4** | `purchase` | Custom dimension for customer lifecycle | ## Use Cases * **Measure win-back performance** — Track how effectively your reactivation campaigns bring back dormant customers * **Calculate win-back CAC** — Understand the cost to reactivate a lapsed customer vs. acquiring a new one * **Optimize win-back timing** — Identify the optimal time to reach out to customers before they become permanently churned * **Segment audiences** — Build audiences of lapsed customers for targeted reactivation campaigns ## Metrics Available In the Upstack dashboard, you can view: | Metric | Description | | ------------------------ | ------------------------------------------------- | | Lapsed Purchases | Total number of lapsed customer purchase events | | Cost per Lapsed Purchase | Average ad spend per lapsed customer reactivation | | Lapsed Purchase Value | Total revenue from reactivated customers | ## Customer Lifecycle Context The `lapsed_purchase` event fits into the broader customer lifecycle: | Lifecycle Stage | Days Since Last Purchase | Event Generated | | --------------- | ------------------------ | ----------------- | | Active | 0–90 days | `rc_purchase` | | At Risk | 90–180 days | `rc_purchase` | | Lapsed | 180–365 days | `lapsed_purchase` | | Churned | 365+ days | `lapsed_purchase` | Both "Lapsed" and "Churned" customers generate `lapsed_purchase` events when they return, as the key insight is the reactivation of a dormant account. ## Related Events * [purchase](/event-tracking/event-taxonomy/standard-events#purchase) — The base purchase event * [nc\_purchase](/event-tracking/event-taxonomy/standard-events/nc-purchase) — New customer purchases * [rc\_purchase](/event-tracking/event-taxonomy/standard-events/rc-purchase) — Returning customer purchases * [all\_purchase](/event-tracking/event-taxonomy/upstack-generated/all-purchase) — All purchases # subscription_initial_purchase Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/upstack-generated/subscription-initial-purchase Track first-time subscription purchases from new subscribers — automatically generated by Upstack. <Info> **Automatically Generated** — This event is created by Upstack backend services for Shopify customers. You do not need to fire this event manually. </Info> ## Overview The `subscription_initial_purchase` event is generated when a customer signs up for a new subscription — the first order in a subscription sequence. It fires for stores using subscription apps like Recharge, Bold Subscriptions, Skio, Loop Subscriptions, or native Shopify Subscriptions. ## How It Works When a subscription order is processed, Upstack analyzes the order metadata: 1. **Order received** — Shopify sends a purchase webhook to Upstack 2. **Subscription detection** — Upstack checks for subscription app tags and order properties 3. **Classification** — The order is classified as initial or recurring based on the subscription data 4. **Event generation** — The appropriate subscription event is generated 5. **Forwarding** — Events are sent to your configured destinations Upstack identifies subscription orders through order tags from subscription apps (e.g., `subscription_first_order`, `recurring_order`), order and line item properties containing subscription metadata, and subscription app-specific identifiers in the order data. ## Use Cases * **Measure subscriber acquisition** — Track how many new subscribers you're acquiring * **Calculate subscriber CAC** — Understand the true cost to acquire a subscriber * **Optimize acquisition campaigns** — Train ad algorithms to find subscription-likely customers * **Attribution for LTV** — Attribute the full potential LTV to the acquiring campaign ## Properties This event includes all properties from the original `purchase` event: | Property | Type | Description | | -------- | ------ | ---------------------------------------- | | orderId | string | Shopify order ID | | value | number | Order total value | | currency | string | ISO 4217 currency code (e.g., `USD`) | | items | array | Products purchased | | email | string | Customer email (hashed for destinations) | | phone | string | Customer phone (hashed for destinations) | ## Destination Mapping This event is forwarded to destinations as: | Destination | Event Name | Notes | | --------------------- | ----------------- | --------------------------------------- | | **Meta CAPI** | `Purchase` | With `subscription_type` in custom data | | **Google Ads** | `purchase` | Filterable by event name | | **TikTok Events API** | `CompletePayment` | Subscription flag included | | **Klaviyo** | `Placed Order` | Tagged with subscription type | | **GA4** | `purchase` | Custom dimension for subscription | ## Metrics Available | Metric | Description | | ------------------------------ | ------------------------------ | | Subscription Initial Purchases | New subscription sign-ups | | Cost per Subscription Initial | CAC for new subscribers | | Subscription Initial Value | Revenue from new subscriptions | <Note> **E-commerce subscriptions only** — this event is for subscription boxes and recurring product purchases. For SaaS subscription lifecycle events (plan changes, trials), see [SaaS Events](/event-tracking/event-taxonomy/saas-events). </Note> ## Related Events * [purchase](/event-tracking/event-taxonomy/standard-events#purchase) — The base purchase event * [subscription\_recurring\_purchase](/event-tracking/event-taxonomy/upstack-generated/subscription-recurring-purchase) — Recurring subscription renewals * [nc\_purchase](/event-tracking/event-taxonomy/standard-events/nc-purchase) — New customer purchases # subscription_recurring_purchase Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/upstack-generated/subscription-recurring-purchase Track recurring subscription renewal purchases — automatically generated by Upstack. <Info> **Automatically Generated** — This event is created by Upstack backend services for Shopify customers. You do not need to fire this event manually. </Info> ## Overview The `subscription_recurring_purchase` event is generated for each recurring subscription renewal — all orders after the initial subscription purchase. It fires for stores using subscription apps like Recharge, Bold Subscriptions, Skio, Loop Subscriptions, or native Shopify Subscriptions. ## How It Works When a subscription order is processed, Upstack analyzes the order metadata: 1. **Order received** — Shopify sends a purchase webhook to Upstack 2. **Subscription detection** — Upstack checks for subscription app tags and order properties 3. **Classification** — The order is classified as initial or recurring based on the subscription data 4. **Event generation** — The appropriate subscription event is generated 5. **Forwarding** — Events are sent to your configured destinations Upstack identifies subscription orders through order tags from subscription apps (e.g., `subscription_first_order`, `recurring_order`), order and line item properties containing subscription metadata, and subscription app-specific identifiers in the order data. ## Use Cases * **Track subscription retention** — Monitor recurring revenue from existing subscribers * **Measure churn impact** — Understand when recurring purchases decline * **Attribution for retention campaigns** — Track which campaigns drive continued engagement * **Revenue forecasting** — Use recurring purchase data to predict future revenue ## Properties This event includes all properties from the original `purchase` event: | Property | Type | Description | | -------- | ------ | ---------------------------------------- | | orderId | string | Shopify order ID | | value | number | Order total value | | currency | string | ISO 4217 currency code (e.g., `USD`) | | items | array | Products purchased | | email | string | Customer email (hashed for destinations) | | phone | string | Customer phone (hashed for destinations) | ## Destination Mapping This event is forwarded to destinations as: | Destination | Event Name | Notes | | --------------------- | ----------------- | --------------------------------------- | | **Meta CAPI** | `Purchase` | With `subscription_type` in custom data | | **Google Ads** | `purchase` | Filterable by event name | | **TikTok Events API** | `CompletePayment` | Subscription flag included | | **Klaviyo** | `Placed Order` | Tagged with subscription type | | **GA4** | `purchase` | Custom dimension for subscription | ## Metrics Available | Metric | Description | | -------------------------------- | ------------------------------ | | Subscription Recurring Purchases | Renewal orders | | Cost per Subscription Recurring | Cost attributed to renewals | | Subscription Recurring Value | Recurring subscription revenue | <Note> **E-commerce subscriptions only** — this event is for subscription boxes and recurring product purchases. For SaaS subscription lifecycle events (plan changes, trials), see [SaaS Events](/event-tracking/event-taxonomy/saas-events). </Note> ## Related Events * [purchase](/event-tracking/event-taxonomy/standard-events#purchase) — The base purchase event * [subscription\_initial\_purchase](/event-tracking/event-taxonomy/upstack-generated/subscription-initial-purchase) — First-time subscription purchases * [rc\_purchase](/event-tracking/event-taxonomy/standard-events/rc-purchase) — Returning customer purchases # upsell_purchase Event Source: https://docs.upstackdata.com/event-tracking/event-taxonomy/upstack-generated/upsell-purchase Track upsell conversions — automatically generated by Upstack <Info> **Automatically Generated** — This event is created by Upstack backend services for Shopify customers. You do not need to fire this event manually. </Info> ## Overview The `upsell_purchase` event is generated when Upstack detects a purchase that resulted from an upsell opportunity. This event helps you measure the effectiveness of upsell campaigns, post-purchase offers, and cross-sell strategies. ## How It Works Upstack analyzes purchase patterns to identify upsell conversions: 1. **Order received** — Shopify sends a purchase webhook to Upstack 2. **Upsell detection** — Upstack checks for upsell indicators (multiple items, upgraded variants, post-purchase additions) 3. **Event generation** — If upsell criteria are met, an `upsell_purchase` event is generated 4. **Forwarding** — The event is sent to your configured destinations ### Upsell Classification A purchase is classified as an upsell when: * The order contains items added through post-purchase offers * The customer upgraded to a higher-tier product variant * The order includes cross-sell items from upsell campaigns * The purchase occurred during a returning customer's session with additional items beyond their typical basket ## Properties This event includes all properties from the original `purchase` event: | Property | Type | Description | | -------- | ------ | ---------------------------------------- | | orderId | string | Shopify order ID | | value | number | Order total value | | currency | string | ISO 4217 currency code (e.g., `USD`) | | items | array | Products purchased | | email | string | Customer email (hashed for destinations) | | phone | string | Customer phone (hashed for destinations) | ## Destination Mapping This event is forwarded to destinations as: | Destination | Event Name | Notes | | --------------------- | ----------------- | ---------------------------------- | | **Meta CAPI** | `Purchase` | With `upsell: true` in custom data | | **Google Ads** | `purchase` | Filterable by event name | | **TikTok Events API** | `CompletePayment` | Upsell flag included | | **Klaviyo** | `Placed Order` | Tagged as upsell | | **GA4** | `purchase` | Custom dimension for upsell | ## Use Cases * **Measure upsell effectiveness** — Track how often upsell offers convert and their revenue impact * **Optimize upsell timing** — Identify which campaigns or touchpoints drive the most upsell conversions * **Calculate upsell ROI** — Compare ad spend to upsell revenue for campaign optimization * **A/B test offers** — Measure which upsell offers perform best by tracking conversion rates ## Metrics Available In the Upstack dashboard, you can view: | Metric | Description | | ------------------------ | -------------------------------------- | | Upsell Purchases | Total number of upsell purchase events | | Cost per Upsell Purchase | Average ad spend per upsell conversion | | Upsell Purchase Value | Total revenue from upsell purchases | ## Related Events * [purchase](/event-tracking/event-taxonomy/standard-events#purchase) — The base purchase event * [rc\_purchase](/event-tracking/event-taxonomy/standard-events/rc-purchase) — Returning customer purchases * [all\_purchase](/event-tracking/event-taxonomy/upstack-generated/all-purchase) — All purchases * [AOV Events](/event-tracking/event-taxonomy/upstack-generated/aov-events) — Purchase segmentation by order value # Complete Upstack Data Onboarding Guide Source: https://docs.upstackdata.com/get-started/complete-upstack-data-onboarding-guide Complete onboarding guide — install Upstack Data on Shopify, set up your pixel, connect ad and email platforms, and configure data integrations for accurate tracking and attribution. ## Prerequisites Before you start, make sure you have: * An active Shopify store (`your-store.myshopify.com`) and [Shopify Admin](https://admin.shopify.com) access with permission to install apps and edit themes. * Admin access to every ad platform you'll connect (Meta, Google Ads, TikTok, Snapchat, Pinterest). * Admin access to your email/CRM platform (Klaviyo, Omnisend) if you plan to enrich those flows. * A valid payment method on the Shopify account that will install Upstack Data — [see plans and pricing](/billing/plans-and-pricing). * Access to the email inbox you'll use for your [Upstack Data](https://app.upstackdata.com) account (a verification code is sent during sign-up). ## Part 1: Install and set up Upstack Data in Shopify In this step, you will install the Upstack Data app from the Shopify App Store and complete the initial setup. This connects your Shopify store to Upstack Data, enabling pixel tracking, event collection, and data integration needed for accurate reporting and attribution. Help guide to complete this step: [Complete How-To Guide for Setting Up the Upstack Data App in Shopify](/guides/shopify/complete-how-to-guide-for-setting-up-the-upstack-data-app-in-shopify) ## Part 2: Connect ad platforms In this step, you will connect your ad platforms (Meta, Google Ads, Snapchat, Pinterest, and TikTok) as destinations in [Upstack Data](https://app.upstackdata.com). This enables syncing of performance data and sending server-side conversion events for more accurate tracking and attribution. ### 2.1. Facebook (Meta) Ads [Complete How-To Guide for Onboarding Facebook (Meta) in Upstack Data](/destinations/catalog/meta-capi/complete-how-to-guide-for-onboarding-facebook-meta-in-upstack-data) ### 2.2. Google Ads [Complete How-To Guide for Onboarding Google Ads in Upstack Data](/destinations/catalog/google-ads/complete-how-to-guide-for-onboarding-google-ads-in-upstack-data) ### 2.3. Snapchat Ads [Complete How-To Guide for Onboarding Snapchat in Upstack Data](/destinations/catalog/snapchat/complete-how-to-guide-for-onboarding-snapchat-in-upstack-data) ### 2.4. Pinterest Ads [Complete How-To Guide for Onboarding Pinterest in Upstack Data](/destinations/catalog/pinterest/complete-how-to-guide-for-onboarding-pinterest-in-upstack-data) ### 2.5. Tiktok Ads [Complete How-To Guide for Onboarding TikTok Ads in Upstack Data](/destinations/catalog/tiktok/complete-how-to-guide-for-onboarding-tiktok-ads-in-upstack-data) ## Part 3: Connect email & CRM platforms In this step, you'll connect your email and CRM platforms (such as Klaviyo and Omnisend) to [Upstack Data](https://app.upstackdata.com). This syncs customer data and events, enabling enriched reporting and more effective marketing automation. ### 3.1. Klaviyo #### 3.1.1. Klaviyo Integration Setup [Complete How-To Guide for Onboarding Klaviyo in Upstack Data](/destinations/catalog/klaviyo/complete-how-to-guide-for-onboarding-klaviyo-in-upstack-data) #### 3.1.2. Upstack Abandonment Flows Setup [Complete Guide to Setting Up Upstack Abandonment Flows in Klaviyo](/destinations/catalog/klaviyo/abandonment-flows/complete-guide-to-setting-up-upstack-abandonment-flows-in-klaviyo) ### 3.2 Omnisend [Complete How-To Guide for Onboarding Omnisend in Upstack Data](/destinations/catalog/omnisend/complete-how-to-guide-for-onboarding-omnisend-in-upstack-data) ## Part 4: Data Integrations setup In this step, you'll configure Data Integrations in the [Upstack dashboard](https://app.upstackdata.com/pixel/integrations) to unify tracking across platforms. This ensures accurate event collection, consistent attribution, and reliable reporting. ### 4.1. Facebook (Meta) Ads [How to Connect your Facebook Ads Account in Upstack Data Integrations](/destinations/catalog/meta-capi/how-to-connect-your-facebook-ads-account-in-upstack-data-integrations) ### 4.2. Google Ads [How to Connect your Google Ads Account in Upstack Data Integrations](/guides/integrations/how-to-connect-your-google-ads-account-in-upstack-data-integrations) ## Part 5: Verify the install After completing the previous parts, confirm everything is wired up correctly before scaling spend: * In [Shopify Admin → Settings → Customer events](https://admin.shopify.com), confirm the **UpstackData** Custom Pixel is **Connected**. * In [Shopify Admin → Online Store → Themes → Customize → App embeds](https://admin.shopify.com), confirm **UpStackified Pixel** is enabled on your live theme. * In the [Upstack dashboard](https://app.upstackdata.com), open **Events Manager** and confirm `PageView`, `AddToCart`, `InitiateCheckout`, and `Purchase` events are arriving. * On the [Data Integrations](https://app.upstackdata.com/pixel/integrations) page, confirm every connected destination shows status **Healthy**. * In each destination platform's event manager (e.g., [Meta Events Manager](https://business.facebook.com/events_manager), Google Ads conversions), confirm events are arriving via the server-side / CAPI channel. <Note> **Need help?** If you encounter any issues during setup, contact our support team and we'll help diagnose the problem. </Note> ## What's next <CardGroup> <Card title="Explore analytics" icon="chart-line" href="/analytics/query-guide"> Build custom reports with the analytics dashboard and query builder. </Card> <Card title="Use the CLI" icon="terminal" href="/cli/install"> Query data and automate workflows from the command line. </Card> <Card title="Troubleshoot issues" icon="wrench" href="/troubleshooting/pixel-stuck-on-waiting-for-first-events"> Common fixes if events aren't appearing after setup. </Card> <Card title="Manage billing" icon="credit-card" href="/billing/subscriptions-and-billing"> View invoices, upgrade plans, and manage your subscription. </Card> </CardGroup> # How to get the most out of Upstack Data: a complete guide Source: https://docs.upstackdata.com/get-started/get-the-most-out-of-upstack-data A complete guide to setting up Upstack Data: connecting destinations, configuring sources, improving event match quality, and using attribution insights. Upstack Data gives Shopify brands three capabilities in one platform: server-side event tracking, multi-touch attribution, and Klaviyo data enrichment. This guide walks you through everything you need to do after installation to get the most value from the platform — from connecting your ad accounts to understanding your attribution dashboard. ## Prerequisites * The Upstack Data app installed in your [Shopify Admin](https://admin.shopify.com) (see [Install on Shopify](/quickstart/install-on-shopify)) * An [Upstack Data](https://app.upstackdata.com) account with subscription active * Admin access to each destination you'll connect (Meta, Google Ads, TikTok, Klaviyo, etc.) * Admin access to each source you'll connect for reporting (Shopify, Meta, Google Ads, TikTok) ## Upstack's three products <CardGroup> <Card title="Signal — server-side tracking" icon="satellite-dish"> Sends Shopify events (page views, add-to-carts, checkouts, purchases) to ad platforms via server-side APIs (Meta CAPI, Google Ads, TikTok Events API). Each event is enriched with identity data before delivery for higher match rates and better optimization signal. </Card> <Card title="Analytics — attribution and reporting" icon="chart-line"> Pulls spend data from your ad platforms and combines it with Shopify revenue data to show which channels, campaigns, and ads are driving results. Gives you a unified view that doesn't rely solely on any single ad platform's self-reported numbers. </Card> <Card title="Flows — marketing automation enrichment" icon="envelope"> Sends enriched event data to Klaviyo and Omnisend, giving your abandonment flows and segments more complete customer profiles. Abandoned cart emails, browse abandonment, and win-back campaigns trigger more often and personalize better. </Card> </CardGroup> ## First 48 hours after installation Your first two days are about getting data flowing. Here's what to prioritize: <Steps> <Step title="Day 1 — Connect your primary destinations"> 1. **Connect [Meta CAPI](/destinations/catalog/meta-capi).** This is typically the highest-priority destination. You'll need your Pixel ID and ad account access. See [Connect a destination](/quickstart/connect-a-destination). 2. **Connect [Google Ads](/destinations/catalog/google-ads).** Enter your conversion action ID and connect your Google Ads account. 3. **Connect any additional destinations** ([TikTok](/destinations/catalog/tiktok), [Pinterest](/destinations/catalog/pinterest), [Klaviyo](/destinations/catalog/klaviyo), [Snapchat](/destinations/catalog/snapchat), [Omnisend](/destinations/catalog/omnisend)) you actively advertise on. </Step> <Step title="Day 1–2 — Connect your sources"> 1. **Connect [Shopify](/sources/catalog/shopify)** (typically done automatically during [app installation](/quickstart/install-on-shopify)). 2. **Connect ad platform spend data** for [Meta](/sources/catalog/facebook-ads), [Google](/sources/catalog/google-ads), and [TikTok](/sources/catalog/tiktok) so your attribution dashboard has complete spend data. </Step> <Step title="Day 2 — Verify data is flowing"> 1. Open [Meta Events Manager](https://business.facebook.com/events_manager) and confirm events are arriving from Upstack via the **Conversions API** channel. 2. Open the [Upstack dashboard](https://app.upstackdata.com) and confirm event activity under **Events Manager**. 3. **Don't panic if EMQ shows 0.0** — Meta takes 24–48 hours to calculate Event Match Quality scores. See [Why is my Meta EMQ panel showing zeros?](/destinations/catalog/meta-capi/why-is-my-meta-emq-panel-showing-zeros-0-0-10). </Step> </Steps> <Tip> Don't forget to [disable existing tracking](/guides/migrations/disable-existing-tracking) (Shopify's native Facebook/Google data sharing) once Upstack is sending server-side events. Leaving both enabled can cause duplicate events and less accurate optimization. </Tip> ## Setting up all destinations Destinations are the platforms Upstack sends event data to. Set up every platform you actively advertise on or use for marketing automation. | Destination | What Upstack sends | Priority | | ---------------------------------------------- | ------------------------------------------------------------------------------ | ---------------------------- | | [Meta CAPI](/destinations/catalog/meta-capi) | Purchase, Add to Cart, View Content, Initiate Checkout, custom events via CAPI | High | | [Google Ads](/destinations/catalog/google-ads) | Purchase and conversion events via offline conversions | High | | [TikTok](/destinations/catalog/tiktok) | Purchase and funnel events via Events API | Medium | | [Klaviyo](/destinations/catalog/klaviyo) | Browse, cart, and purchase events for flow triggering | Medium–High | | [Pinterest](/destinations/catalog/pinterest) | Conversion events via Conversions API | Medium | | [Snapchat](/destinations/catalog/snapchat) | Conversion events via Conversions API | Lower | | [Omnisend](/destinations/catalog/omnisend) | Browse, cart, and purchase events for flow triggering | Medium (if you use Omnisend) | | [Webhooks](/destinations/catalog/webhooks) | Any configured event to a custom HTTP endpoint | As needed | For the full list and configuration options, see the [destinations overview](/destinations/catalog/overview). ## Setting up sources for reporting Sources feed your attribution dashboard. Without them, Analytics can show your Shopify revenue but can't calculate ROAS or compare channel performance. | Source | What it provides | | ---------------------------------------------------- | ---------------------------------------------------------- | | [Shopify](/sources/catalog/shopify) | Order data, revenue, product details, customer information | | [Meta (Facebook Ads)](/sources/catalog/facebook-ads) | Ad spend, campaign structure, impressions, clicks | | [Google Ads](/sources/catalog/google-ads) | Ad spend, campaign structure, impressions, clicks | | [TikTok](/sources/catalog/tiktok) | Ad spend, campaign structure, impressions, clicks | Connect every platform where you're spending ad budget so your attribution dashboard has complete data. See the [sources overview](/sources/catalog/overview). ## Understanding your attribution dashboard Once destinations and sources are connected, your Analytics dashboard will begin populating with attribution data. Here's how to read it: * **Revenue data** comes from Shopify orders and is attributed to channels based on Upstack's attribution model. * **Spend data** comes from your connected ad platform sources. * **ROAS (Return on Ad Spend)** is calculated by dividing attributed revenue by ad spend for each channel. * **Attribution windows** determine how far back Upstack looks to credit a touchpoint. The default window is typically 7 days for clicks and 1 day for views, configurable by plan. See [Attribution and reporting](/concepts/attribution-and-reporting) for a full walkthrough. ## Configuring costs for accurate P\&L For your attribution dashboard to show accurate profitability, it needs your complete cost picture: 1. **Ad spend** is pulled automatically from connected sources (Meta, Google, TikTok). 2. **Product costs (COGS)** may need to be configured depending on your plan. See [Configure contribution margin](/analytics/configure-contribution-margin). 3. **Shipping and handling costs** may be available through Shopify order data. ## Optimizing Klaviyo flows with Upstack Flows If you use Klaviyo for email and SMS, [Upstack Flows](/destinations/catalog/klaviyo) can significantly improve your flow performance: <Steps> <Step title="Connect Klaviyo as a destination"> Use your Klaviyo API key. See the [Klaviyo destination guide](/destinations/catalog/klaviyo). </Step> <Step title="Confirm enriched events are flowing"> Browse and cart events flow to Klaviyo with more complete customer profiles, meaning your abandonment flows trigger for more visitors — not just those already identified by Klaviyo's on-site tracking. </Step> <Step title="Review your flow triggers"> Ensure your abandoned cart, browse abandonment, and other flows are set up to use the events coming from Upstack. </Step> <Step title="Monitor flow performance"> After connecting, you should see an increase in flow recipients and improved conversion rates from those flows. </Step> </Steps> ## Monitoring EMQ and pixel health Event Match Quality (EMQ) is Meta's 0–10 score measuring how well your event data matches to real Facebook users. Upstack's identity enrichment is designed to improve your EMQ compared to browser-only tracking. <Info> **EMQ benchmarks** * **7.0+** is considered good. * **9.0+** is excellent and indicates strong identity matching. * **Below 5.0** suggests missing identity parameters or configuration issues. </Info> ### How to check 1. View your EMQ score in the [Upstack dashboard](https://app.upstackdata.com) under **Meta EMQ**. 2. Cross-reference in [Meta Events Manager](https://business.facebook.com/events_manager) under your pixel's event details. 3. If EMQ is lower than expected, verify all identity parameters are being sent (email, phone, name, address data). For troubleshooting, see [Why is my Meta EMQ panel showing zeros?](/destinations/catalog/meta-capi/why-is-my-meta-emq-panel-showing-zeros-0-0-10). ## Custom events for advanced optimization Once your standard tracking is running, consider adding [custom events](/guides/custom-events/how-to-create-custom-event-triggers) to improve ad platform optimization: * **`nc_purchase` (new customer purchase)** — lets Meta and Google optimize for acquiring new buyers specifically. This is the most popular and impactful custom event for most brands. * **Category-specific purchases** — optimize for purchases in specific product categories. * **Quiz or form completions** — give ad platforms mid-funnel signals. ## When to contact support vs. self-serve <AccordionGroup> <Accordion title="Self-serve tasks"> * Adding or removing destinations * Connecting new sources * Viewing attribution reports * Checking EMQ scores * Creating custom events </Accordion> <Accordion title="Contact Upstack support"> * EMQ remains at 0.0 after 48+ hours with confirmed purchases * Events are not appearing in your ad platform's event manager after 24 hours * Discrepancies between Upstack attribution and Shopify revenue * Questions about which attribution model is right for your business * Issues with Shopify app permissions or installation * Billing or plan questions </Accordion> </AccordionGroup> ## Frequently asked questions <AccordionGroup> <Accordion title="How long does it take to see data after connecting Upstack?"> Events begin flowing to destinations within minutes of connecting. Attribution data in the Analytics dashboard depends on having both event data and spend data connected, and may take 24–48 hours to fully populate. EMQ scores from Meta take 24–48 hours to calculate. </Accordion> <Accordion title="Do I need to disable my existing Facebook pixel?"> No. Upstack's server-side tracking works alongside your existing browser-side pixel. However, you should [disable Facebook's built-in data sharing](/guides/migrations/disable-existing-tracking) within Shopify's settings, as Upstack replaces that functionality with better-enriched server-side events. </Accordion> <Accordion title="Which destination should I connect first?"> Connect the platform where you spend the most ad budget first. For most Shopify brands, this is Meta. Getting high-quality data flowing to your largest spend platform produces the biggest impact on ad performance. </Accordion> <Accordion title="Can I use Upstack with agencies managing my ads?"> Yes. Share your Upstack dashboard access with your agency so they can see attribution data. Your agency will also see improved event data quality in the ad platforms they manage, which benefits their optimization. </Accordion> </AccordionGroup> ## Related <CardGroup> <Card title="Install on Shopify" icon="shopify" href="/quickstart/install-on-shopify"> Get the Upstack app installed and configured in your store. </Card> <Card title="Connect a destination" icon="plug" href="/quickstart/connect-a-destination"> Step-by-step setup for your first destination. </Card> <Card title="Disable existing tracking" icon="ban" href="/guides/migrations/disable-existing-tracking"> Turn off Shopify's built-in pixel sharing to avoid duplicate events. </Card> <Card title="Custom events" icon="code" href="/guides/custom-events/how-to-create-custom-event-triggers"> Add custom events like `nc_purchase` for advanced optimization. </Card> <Card title="Destinations overview" icon="arrow-right-from-bracket" href="/destinations/catalog/overview"> Every supported destination. </Card> <Card title="Sources overview" icon="arrow-right-to-bracket" href="/sources/catalog/overview"> Every supported source. </Card> <Card title="Why is my Meta EMQ showing zeros?" icon="circle-question" href="/destinations/catalog/meta-capi/why-is-my-meta-emq-panel-showing-zeros-0-0-10"> Troubleshoot EMQ scores stuck at 0.0. </Card> </CardGroup> # Upstack Data Documentation Source: https://docs.upstackdata.com/get-started/overview Set up Upstack Data and start sending high-quality conversion data to your ad platforms. # Get started Create an account and start sending high-quality conversion data to your marketing platforms. ## Common use cases <StripeCardGroup> <StripeCard title="Improve Meta CAPI match quality" description="Boost Event Match Quality scores by sending identity-enriched server-side events." href="/use-cases/improve-meta-match-quality" /> <StripeCard title="Track Shopify events server-side" description="Capture every storefront interaction server-side, immune to ad blockers and cookie restrictions." href="/use-cases/track-server-side-events" /> <StripeCard title="Send conversions to multiple platforms" description="Forward purchase and conversion events to Meta, TikTok, Klaviyo, and GA4 simultaneously." href="/use-cases/send-to-multiple-platforms" /> <StripeCard title="Resolve anonymous visitors to customers" description="Match anonymous sessions to known customers using deterministic and probabilistic identity signals." href="/use-cases/resolve-visitor-identities" /> <StripeCard title="Recover abandoned carts via Klaviyo" description="Trigger abandoned cart flows in Klaviyo with identity-resolved customer data." href="/use-cases/recover-abandoned-carts" /> <StripeCard title="See which campaigns drive purchases" description="Attribute revenue to marketing touchpoints with multi-touch attribution models." href="/analytics/attribution-reporting" /> </StripeCardGroup> ## Platform guides Detailed, step-by-step onboarding guides for each ad platform and integration. Start with the master onboarding hub or jump directly to a specific platform. <StripeCardGroup> <StripeCard title="Complete onboarding guide" description="Master hub covering the full Upstack Data onboarding process from start to finish." href="/get-started/complete-upstack-data-onboarding-guide" /> <StripeCard title="Facebook (Meta) onboarding" description="Set up Meta CAPI, disable duplicate pixels, and configure NC-ROAS metrics." href="/destinations/catalog/meta-capi/complete-how-to-guide-for-onboarding-facebook-meta-in-upstack-data" /> <StripeCard title="Google Ads onboarding" description="Create purchase goals, configure Enhanced Conversions, and connect Google Ads." href="/destinations/catalog/google-ads/complete-how-to-guide-for-onboarding-google-ads-in-upstack-data" /> <StripeCard title="TikTok Ads onboarding" description="Set up TikTok CAPI and browser pixel with Upstack Data for improved match quality." href="/destinations/catalog/tiktok/complete-how-to-guide-for-onboarding-tiktok-ads-in-upstack-data" /> <StripeCard title="Klaviyo onboarding" description="Integrate Klaviyo for enhanced email tracking and 40%+ better abandonment capture." href="/destinations/catalog/klaviyo/complete-how-to-guide-for-onboarding-klaviyo-in-upstack-data" /> <StripeCard title="Shopify app setup" description="Complete guide for installing and configuring the Upstack Data app in Shopify." href="/guides/shopify/complete-how-to-guide-for-setting-up-the-upstack-data-app-in-shopify" /> </StripeCardGroup> ## Start building <StripeCardGroup> <StripeCard title="Install Upstack on Shopify" description="Go from zero to live events in under 10 minutes." href="/quickstart/install-on-shopify" /> <StripeCard title="Connect your first destination" description="Forward enriched events to Meta CAPI, TikTok, or another platform." href="/quickstart/connect-a-destination" /> <StripeCard title="Verify events are flowing" description="Confirm events appear in your dashboard and reach destinations." href="/quickstart/verify-events" /> <StripeCard title="Explore the event model" description="Understand the standard events Upstack tracks automatically." href="/event-tracking/event-taxonomy" /> <StripeCard title="Set up identity resolution" description="Learn how Upstack ID matches visitors to customers." href="/pixel/identity-resolution" /> <StripeCard title="Browse all integrations" description="See every source and destination Upstack supports." href="/sources/catalog/overview" /> </StripeCardGroup> ## Query and automate <StripeCardGroup> <StripeCard title="Analytics query guide" description="Build custom reports with measures and dimensions in the dashboard." href="/analytics/query-guide" /> <StripeCard title="Install the CLI" description="Query data and manage dashboards from the command line." href="/cli/install" /> <StripeCard title="API reference" description="Programmatic access to query, catalog, and dashboard endpoints." href="/api-reference/introduction" /> </StripeCardGroup> # Upstack Data Documentation Source: https://docs.upstackdata.com/get-started/overview-v2 Upstack Data captures every storefront event, resolves shopper identities, and delivers server-side conversions to your ad platforms. Find setup guides, platform integrations, and troubleshooting. The sidebar lists every section of the docs. Use the paths below to find what you need — or jump straight in. **[Start your free trial](https://upstackdata.com)** · **[Sign in](https://app.upstackdata.com)** ## Where are you headed? <CardGroup> <Card title="Shopify setup" icon="shopify" href="/guides/shopify/complete-how-to-guide-for-setting-up-the-upstack-data-app-in-shopify"> Install the Upstack app, add the theme extension or custom pixel, and verify your first tracked events. </Card> <Card title="Event destinations" icon="paper-plane" href="/destinations/catalog/overview"> Forward conversions server-side to Meta CAPI, Google Ads, TikTok, Klaviyo, Pinterest, Snapchat, and more. </Card> <Card title="Troubleshooting" icon="wrench" href="/troubleshooting/no-events-appear-in-dashboard"> Fix missing dashboard events, attribution mismatches, duplicate purchases, stale data, and disconnected destinations. </Card> </CardGroup> ## Browse the docs * **[Shopify setup](/guides/shopify/complete-how-to-guide-for-setting-up-the-upstack-data-app-in-shopify)** — app install, theme extension, custom pixel * **[Tracking events](/guides/custom-events/how-to-create-custom-event-triggers)** — custom events, mappings, UTM parameters * **[Data sources](/sources/catalog/overview)** — ad spend and campaign data from your ad platforms * **[Event destinations](/destinations/catalog/overview)** — Meta CAPI, Google Ads, TikTok, Klaviyo, Pinterest, Snapchat, and more * **[Health & Wellness](/guides/health-wellness/health-wellness-setup)** — restricted-category tracking and compliance * **[Analytics](/analytics/attribution-reporting)** — attribution reports, measures and dimensions * **[Concepts](/concepts/server-side-tracking)** — server-side tracking, identity, enrichment * **[Pixel SDK · API · CLI](/pixel)** — developer references for the tracking pixel, REST API, and command line <Note> Setting up end to end? Follow the [Complete onboarding guide](/get-started/complete-upstack-data-onboarding-guide). Stuck? Check the [FAQ](/troubleshooting/faq) or [contact support](/troubleshooting/support). </Note> # What is Upstack Data? Source: https://docs.upstackdata.com/get-started/what-is-upstack-data Upstack Data is a marketing attribution platform for Shopify brands. Learn how it captures storefront events, resolves customer identities, and sends server-side conversions to your ad platforms. Upstack Data is a marketing attribution platform for Shopify brands. It captures every shopper interaction on your storefront, resolves anonymous visits to real customers, and sends identity-enriched conversions to your ad platforms through their server-side APIs — so platforms like Meta and TikTok can attribute purchases to the right campaigns and optimize against complete data. <Tip> New to Upstack? This page explains the product in five minutes. To start setting it up, go straight to [Create an account](/quickstart/create-an-account) and [Install on Shopify](/quickstart/install-on-shopify). </Tip> ## The problem it solves Most Shopify stores rely on a browser pixel to tell ad platforms what happened. That signal has eroded: ad blockers block pixel requests, iOS limits cross-site tracking, checkout domains restrict third-party cookies, and the shopper who buys on their phone after researching on a laptop looks like two different people. The result is under-reported conversions, poor campaign optimization, and ROAS numbers you can't fully trust. Upstack replaces the browser-only signal with a server-side pipeline. Events are captured at the edge, enriched with customer identity, and delivered directly to each platform's Conversions API — bypassing the browser entirely. ## How it works Every event flows through the same five-stage pipeline: <Steps> <Step title="Capture"> The [Upstack pixel](/pixel) and Shopify webhooks record storefront activity — page views, add-to-cart, checkout, purchase — as first-party events. </Step> <Step title="Resolve"> The identity engine links anonymous sessions to known customers using email, phone, login state, and [identity stitching](/pixel/identity-stitching) across devices. </Step> <Step title="Enrich"> Each event gains the customer context platforms want: hashed email and phone, order history, lifetime value, and [ad platform click IDs](/concepts/server-side-tracking). </Step> <Step title="Forward"> Enriched events are delivered server-to-server to your [destinations](/destinations/catalog/overview) — Meta CAPI, TikTok Events API, Google Ads, Klaviyo, Pinterest, Snapchat, and more. </Step> <Step title="Report"> The same events land in [analytics](/analytics/attribution-reporting), where Upstack attributes revenue across channels and reports on the customers behind the purchases. </Step> </Steps> For the technical version of this pipeline — edge capture, identity graph, warehouse — see [Platform architecture](/concepts/platform-architecture). ## The moving parts <CardGroup> <Card title="Pixel" icon="zap" href="/pixel"> The tracking script and theme app extension installed on your storefront. Captures events and sets the first-party cookie that survives ad blockers. </Card> <Card title="Sources" icon="plug" href="/sources/catalog/overview"> The platforms Upstack pulls data **from** — Shopify orders, ad spend, and campaign structure from Meta, Google, TikTok, and others. </Card> <Card title="Destinations" icon="send" href="/destinations/catalog/overview"> The platforms Upstack sends events **to** — server-side conversion forwarding to ad and email platforms. </Card> <Card title="Identity resolution" icon="fingerprint" href="/pixel/identity-resolution"> The graph that connects sessions, devices, and contact details into a single customer profile. </Card> <Card title="Analytics" icon="chart-bar" href="/analytics/attribution-reporting"> Dashboards and query tools built on the same enriched events your destinations receive. </Card> <Card title="Flows" icon="bell" href="/destinations/catalog/klaviyo/abandonment-flows/complete-guide-to-setting-up-upstack-abandonment-flows-in-klaviyo"> Klaviyo abandoned-cart and abandonment-flow recovery driven by Upstack-identified events. </Card> </CardGroup> ## Who it's for Upstack is built for Shopify merchants running paid acquisition — from single-store brands to multi-store operators — who need conversion data their ad platforms can actually use. If you run Meta, TikTok, Google, or email marketing and your pixel numbers don't match your orders, that gap is the problem Upstack closes. ## Get set up <CardGroup> <Card title="Create an account" icon="user-plus" href="/quickstart/create-an-account"> Sign up and set up your workspace. </Card> <Card title="Install on Shopify" icon="shopping-cart" href="/quickstart/install-on-shopify"> Connect your store and enable the pixel. </Card> <Card title="Connect a destination" icon="send" href="/quickstart/connect-a-destination"> Start forwarding conversions to your ad platforms. </Card> </CardGroup> # How to Setup UTM Parameters for Upstack Data Source: https://docs.upstackdata.com/guides/attribution/how-to-setup-utm-parameters-for-upstack-data Set up UTM parameters in Meta, Google, TikTok, AppLovin, and other ad campaigns so Upstack Data can attribute traffic and conversions to the correct source, medium, and campaign in reporting. <Tip> * Copy the platform-specific UTM string for your ad platform. * Paste it into the **URL Parameters** field in your ads (not the Destination URL). * Test links to verify the parameters are working. * Monitor results in your [Upstack dashboard](https://app.upstackdata.com) attribution reports. </Tip> <Note> Tracking parameters are snippets of code added to your URLs that track campaign performance. By using Upstack Data's custom tracking parameters in your ads, each visitor informs the Upstack Pixel exactly which ad they clicked before arriving at your store. </Note> ## Prerequisites * The Upstack Data pixel installed on your store (see [Install on Shopify](/quickstart/install-on-shopify)) * Admin access to each ad platform you want to update (Meta, Google, TikTok, AppLovin, etc.) * Your active campaigns identified — UTMs are added at the ad level, not the campaign level ## Required UTM parameters by platform Copy the following tracking parameters and add them to the tracking settings of your active ads. Place these parameters in the **URL Parameters** field of each ad — not the Destination URL. ### Meta Ads ```text theme={null} utm_source={{site_source_name}}&utm_medium=paid&utm_campaign={{campaign.name}}&utm_term={{adset.name}}&utm_content={{ad.name}}&fbadid={{ad.id}}&campaign_id={{campaign.id}} ``` ### Google Ads ```text theme={null} {lpurl}?utm_source=google&utm_medium=paid&utm_campaign={campaignid}&ad_id={creative}&utm_adset_id={adgroupid}&utm_term={adgroupid}&utm_content={creative}&campaign_id={campaignid}&utm_placement={network} ``` ### TikTok Ads ```text theme={null} utm_source=tiktok&utm_medium=paid&utm_campaign=__CAMPAIGN_NAME__&utm_term=__AID_NAME__&utm_content=__CID_NAME__&ad_id=__CID__&campaign_id=__CAMPAIGN_ID__&adset_id=__AID__ ``` <Tip> TikTok macros use double underscores. Available macros: `__CAMPAIGN_NAME__`, `__CAMPAIGN_ID__`, `__AID_NAME__` (ad group name), `__AID__` (ad group ID), `__CID_NAME__` (creative name), `__CID__` (creative ID), `__PLACEMENT__`. </Tip> ### Snapchat Ads ```text theme={null} utm_source=snapchat&utm_medium=paid&utm_campaign={{campaign.name}}&ad_id={{ad.id}}&utm_adset_id={{adSet.id}}&utm_term={{adSet.name}}&utm_content={{creative.name}}&campaign_id={{campaign.id}} ``` ### Pinterest Ads ```text theme={null} utm_source=pinterest&utm_medium=paid&utm_campaign={campaign_name}&utm_term={adgroup_name}&utm_content={ad_name}&ad_id={adid}&campaign_id={campaignid}&adset_id={adgroupid} ``` ### AppLovin Ads ```text theme={null} utm_source=applovin&utm_medium=paid&utm_campaign={CAMPAIGN_NAME}&utm_term={CREATIVE_SET}&utm_content={CREATIVE_SET}&campaign_id={CAMPAIGN_ID}&ad_id={CREATIVE_SET_ID} ``` <Tip> AppLovin macros use curly braces. Available macros: `{CAMPAIGN_NAME}`, `{CAMPAIGN_ID}`, `{CREATIVE_SET}`, `{CREATIVE_SET_ID}`, `{AD_TYPE}`, `{PLACEMENT_TYPE}`, `{EVENT_ID}`. AppLovin also auto-appends `aleid` on click — do not add it manually. Paste these parameters into the campaign **Tracking Parameters** / landing URL fields in the [AppLovin Ads dashboard](https://dash.applovin.com/). </Tip> ### Klaviyo Email <img alt="Klaviyo email UTM tracking settings configuration" /> ### Taboola Ads ``` utm_source=taboola&utm_medium=paid&utm_campaign={campaign_name}&utm_term={site}&utm_content={title} ``` ### Outbrain Ads ``` utm_source=outbrain&utm_medium=paid&utm_campaign={{campaign_name}}&utm_content={{ad_title}}&utm_term={{publisher_name}}_{{section_name}} ``` ### Criteo Ads ``` utm_source=criteo&utm_medium=paid ``` ### Adroll Ads ``` utm_source=adroll&utm_medium=paid ``` ### ShareASale ``` utm_source=shareasale&utm_medium=affiliate ``` ## Verify UTM parameters are working After adding UTMs to your ads: 1. Click one of your live ads (or use the platform's preview link) and arrive on your store. 2. Confirm the URL in your browser's address bar contains the expected UTM parameters (e.g., `utm_source=`, `utm_campaign=`). 3. In the [Upstack dashboard](https://app.upstackdata.com), open your attribution report and confirm visits and conversions are being attributed to the expected source, campaign, and ad. 4. Allow up to a few hours for newly tagged ads to populate reports. ## Frequently asked questions ### 1. I'm already using different UTMs, what should I do? * If you're already using UTMs for another purpose, you can simply add these parameters to the end of that string - just be sure to write `&` before pasting these parameters. ### 2. Can I bulk edit UTMs for all my ads? * Every ad that you want to track with the Pixel will need our recommended **tracking parameters** in there. Good news: you can also bulk edit your ads within Facebook, so you won't have to update UTMs one ad at a time. ### 3. Can I append the UTMs to the Destination URL? * Meta [recently published](https://www.facebook.com/business/guides/124742407297678) that anything in a Destination URL after the domain itself will be automatically shortened and removed. If UTMs are appended to the Destination URL, they will be automatically removed by Meta. Therefore, UTMs should properly be placed in the **URL Parameters** field. ### 4. Will my ads go live right away after adding UTMs? * Updating the URL Parameters on your ads will send the ad into a "processing" phase. The processing phase can take up to 1 hour and will pause spend on your ads while they're being processed by Facebook. ### 5. Will I lose social proof by adding UTMs? * On some occasions, updating the URL Parameters on an active ad has reset the social proof on the ad & sent the ad back into the "learning phase". However, social proof was often lost for ads where creative assets were manually uploaded directly into the ads manager (versus creating the ad via the Post ID or Use Existing Post method). You can add UTMs without losing Social Proof - click here to learn how. * This is not a fool-proof method, but it is the most effective method we have found for updating UTMs on your ads without losing social proof. Unfortunately, we cannot make guarantees that social proof will not be lost. ## Related Articles <CardGroup> <Card title="Configure Meta Pixel destination" href="/destinations/catalog/meta-capi/how-to-configure-facebook-meta-ads-pixel-destination-in-upstack-data" /> <Card title="Attribution mismatch troubleshooting" href="/troubleshooting/upstack-meta-conversions-dont-match" /> <Card title="Complete Shopify setup guide" href="/guides/shopify/complete-how-to-guide-for-setting-up-the-upstack-data-app-in-shopify" /> <Card title="Events not in dashboard" href="/troubleshooting/no-events-appear-in-dashboard" /> </CardGroup> # Purchase Event Attribution Source: https://docs.upstackdata.com/guides/attribution/purchase-event-attribution Upstack Data attributes each purchase to the ad clicks that led to it and fires first-click, last-click, and single-click conversion events for your destinations. When a customer buys something, Upstack looks back at the paid ad clicks that led to the purchase and fires extra conversion events based on what it finds: * **First Paid Click** (`fpc_*`) — the first paid ad click in the customer's journey * **Last Paid Click** (`lpc_*`) — the most recent paid ad click before the purchase * **First and Only Paid Click** (`fopc_*`) — when the journey had just one paid ad click Each event is named for where the click came from, and Upstack forwards it to that destination. The first and last click can come from different places, so one purchase can send First Paid Click to Meta and Last Paid Click to Google Ads. <Warning> When the whole journey had just one paid click, Upstack fires only the `fopc_*` event — not `fpc_*` or `lpc_*`. If you optimize on `fpc_*` alone, those purchases will not count. </Warning> ## Available events Each purchase fires up to two of these events: First Paid Click and Last Paid Click, or First and Only Paid Click on its own. A new customer's order, or the first order of a subscription, fires an extra set. Each destination names these events its own way — match them exactly when you set up conversions. ### Meta | Attribution model | Any purchase | New customer | Subscription initial | | ------------------ | ------------------ | -------------------- | ------------------------------------- | | First Paid Click | `fpcMetaPurchase` | `fpcMetaNcPurchase` | `fpcMetaSubscriptionInitialPurchase` | | Last Paid Click | `lpcMetaPurchase` | `lpcMetaNcPurchase` | `lpcMetaSubscriptionInitialPurchase` | | First & Only Click | `fopcMetaPurchase` | `fopcMetaNcPurchase` | `fopcMetaSubscriptionInitialPurchase` | ### TikTok | Attribution model | Any purchase | New customer | Subscription initial | | ------------------ | -------------------- | ---------------------- | --------------------------------------- | | First Paid Click | `FpcTiktokPurchase` | `FpcTiktokNcPurchase` | `FpcTiktokSubscriptionInitialPurchase` | | Last Paid Click | `LpcTiktokPurchase` | `LpcTiktokNcPurchase` | `LpcTiktokSubscriptionInitialPurchase` | | First & Only Click | `FopcTiktokPurchase` | `FopcTiktokNcPurchase` | `FopcTiktokSubscriptionInitialPurchase` | ### Google Ads These are the names shown in Upstack. You map each one to a conversion action you choose in Google Ads. | Attribution model | Any purchase | New customer | Subscription initial | | ------------------ | ---------------------- | ------------------------- | ------------------------- | | First Paid Click | `fpc_google_purchase` | `fpc_google_nc_purchase` | `fpc_google_si_purchase` | | Last Paid Click | `lpc_google_purchase` | `lpc_google_nc_purchase` | `lpc_google_si_purchase` | | First & Only Click | `fopc_google_purchase` | `fopc_google_nc_purchase` | `fopc_google_si_purchase` | ### AppLovin These events fire and are visible in Upstack, but they are not sent to AppLovin — see below. | Attribution model | Any purchase | New customer | Subscription initial | | ------------------ | ------------------------ | --------------------------- | --------------------------- | | First Paid Click | `fpc_applovin_purchase` | `fpc_applovin_nc_purchase` | `fpc_applovin_si_purchase` | | Last Paid Click | `lpc_applovin_purchase` | `lpc_applovin_nc_purchase` | `lpc_applovin_si_purchase` | | First & Only Click | `fopc_applovin_purchase` | `fopc_applovin_nc_purchase` | `fopc_applovin_si_purchase` | **What you need to set up:** * **Meta** — Upstack sends these automatically as custom events, but you must set each one up in Meta Events Manager before you can optimize on it. See [How to approve Meta custom events](/destinations/catalog/meta-capi/how-to-approve-facebook-meta-custom-events). * **TikTok** — Upstack sends these automatically as custom events. * **Google Ads** — map each event to a conversion action on the destination. Until you map it, the event fires but nothing reaches Google. See [Set up Google Ads server-side conversions](/destinations/catalog/google-ads/how-to-set-up-google-ads-server-side-conversions-api-in-upstack-data). * **AppLovin** — not forwarded. AppLovin has no Conversions API, so there is nowhere to send them. The events are still generated, so you can see them in Upstack. ## Attribution window The attribution window decides how far back Upstack searches for paid clicks before a purchase. You can change it in [Pixel Settings](https://app.upstackdata.com/account/settings/pixel) under **Purchase Event Attribution**: | Option | What it considers | | ----------------------------------- | ------------------------------------------------- | | **Lifetime** (default) | The customer's entire journey | | **7 / 14 / 28 / 30 / 60 / 90 days** | Only clicks within that many days of the purchase | **Lifetime** gives the most complete picture. Pick a shorter window if your purchase cycle is quick and you only want recent clicks to count. ## Using the events * **`fpc_*` events** tell you which campaigns introduce customers to your brand. Map `fpc_google_purchase` as a conversion action in Google Ads to optimize for first-touch acquisitions. * **`lpc_*` events** show which campaigns close the sale. Compare FPC and LPC attribution to see which campaigns start journeys and which ones close them. * **`fopc_*` events** mark purchases where one ad click drove the whole journey. ## Related <CardGroup> <Card title="Set up UTM parameters" icon="link" href="/guides/attribution/how-to-setup-utm-parameters-for-upstack-data"> Tag your ad URLs so Upstack can attribute clicks to the right campaign. </Card> <Card title="Configure Google Ads" icon="sliders" href="/destinations/catalog/google-ads/how-to-configure-google-ads-destination-in-upstack-data"> Set up the Google Ads destination that receives these events. </Card> <Card title="Global event mappings" icon="globe" href="/guides/custom-events/global-event-mappings"> Map an attributed event to a conversion action on each destination. </Card> <Card title="Verify events" icon="circle-check" href="/quickstart/verify-events"> Confirm events are firing from your storefront. </Card> </CardGroup> # Destination event mappings Source: https://docs.upstackdata.com/guides/custom-events/destination-event-mappings Turn an inherited mapping off for one destination, or add a trigger only that destination receives. [Global mappings](/guides/custom-events/global-event-mappings) go to every destination. When one destination needs to behave differently, change it on the destination itself. <Note> **LinkedIn**, **Snapchat**, **AppLovin**, and **NewsBreak** can't receive custom events at all. **Google Ads** can, but not through global mappings — every custom event needs its own conversion action, so you set them up per destination. Enable its Conversions API, then add them here. </Note> ## Open the tab Open the destination from **Event Destinations** and select the **Event Mappings** tab. The tab appears only after a destination is saved. ## Turn off an inherited mapping Under **Inherited Mappings** you'll see every global mapping this destination receives, each with a switch. Turn one off and this destination stops receiving it — everywhere else carries on unchanged. That's the only control here. To send this destination something *different*, turn the inherited mapping off and add a custom trigger instead. ## Add a custom trigger <Steps> <Step title="Click Add Custom Trigger"> In the **Custom Triggers** section, click **+ Add Custom Trigger**. </Step> <Step title="Fill in the mapping"> Same fields as a global mapping: **Display name**, **Base event**, **Destination event name**, optional conditions, and an optional [value override](/guides/custom-events/value-and-formulas). </Step> <Step title="Save"> Click **Save custom event**. The trigger belongs to this destination only. </Step> <Step title="Save the destination"> Click **Save Changes** at the bottom of the page. Your changes aren't live until you do. </Step> </Steps> Each trigger can be switched off, edited, or removed later. Custom triggers run alongside anything the destination still inherits — so if you're replacing an inherited mapping rather than adding to it, turn the inherited one off. ## Related <CardGroup> <Card title="Global event mappings" icon="globe" href="/guides/custom-events/global-event-mappings"> Create a mapping once and send it everywhere. </Card> <Card title="Value & formulas" icon="calculator" href="/guides/custom-events/value-and-formulas"> Send profit, margin, a fixed amount, or your own formula. </Card> <Card title="Custom events overview" icon="bolt" href="/guides/custom-events/how-to-create-custom-event-triggers"> What custom events are and when to use them. </Card> <Card title="Connect a destination" icon="plug" href="/quickstart/connect-a-destination"> Add Meta, Google, TikTok, Klaviyo, and more. </Card> </CardGroup> # Global event mappings Source: https://docs.upstackdata.com/guides/custom-events/global-event-mappings Set up a custom event once and every connected destination gets it. A global event mapping sends your destinations an extra event when a condition is met — for example, every purchase over \$500 also sends `high_value_purchase`. Set it up once and every connected destination gets it. Good to know: * Your standard events keep firing. A mapping adds an event, it doesn't replace one. * The new event is real — it shows up in your Upstack reporting too, not just at your destinations. * You can turn it off for one destination later without affecting the rest. <Note> **LinkedIn**, **Snapchat**, **AppLovin**, and **NewsBreak** can't receive custom events at all. **Google Ads** can, but not through global mappings — every custom event needs its own conversion action, so you set them up per destination. Enable its Conversions API, then add them under [Destination event mappings](/guides/custom-events/destination-event-mappings). </Note> ## Create one <Steps> <Step title="Open the panel"> Go to **Event Destinations** and click the **Event Mappings** button (globe icon). The **Global Event Mappings** panel opens. </Step> <Step title="Click Add Mapping"> Give it a **Display name** — just for you, destinations never see it. Then pick the **Base event**: a standard event like `purchase`, or type a custom one. </Step> <Step title="Name the event"> **Destination event name** is what your destinations receive. Lowercase with underscores: `high_value_purchase`. </Step> <Step title="Set the conditions"> Under **Only when…**, add the rules that decide when it fires — for example, order value **is greater than** 500. Leave empty and it fires every time. </Step> <Step title="Save"> Optionally turn on **Override event value** first to send [profit or a formula](/guides/custom-events/value-and-formulas) instead of the event's own value. Then click **Save custom event**. Done. </Step> </Steps> ## Example: orders over \$500 | Field | Value | | ---------------------- | ------------------------------------- | | Display name | High value purchase | | Base event | `purchase` | | Only when | order value **is greater than** `500` | | Destination event name | `high_value_purchase` | Every purchase over \$500 now also sends `high_value_purchase`. ## Confirm it's firing Place a test order that matches your conditions, then open Upstack's **Events Manager** — the mapped event appears in the events list with the name you chose. <Tip> Sending a revenue event to Meta? Pair it with a matching Custom Conversion in Meta Events Manager, or you can't select it as a campaign goal. See [Approve Meta custom events](/destinations/catalog/meta-capi/how-to-approve-facebook-meta-custom-events). </Tip> ## Conditions A condition is a **field**, an **operator**, and a **value** — *order value* **is greater than** `500`. You can use any field the event carries: order and cart values, customer traits, page and campaign context, device. Conditions sit in groups. **Match ALL** means every condition in the group must be true; **ANY** means one is enough. Add more groups for either/or logic. <Note> If two mappings could match the same event, both fire. Make each mapping's conditions specific enough that only one matches. </Note> ## Related <CardGroup> <Card title="Destination event mappings" icon="sliders" href="/guides/custom-events/destination-event-mappings"> Turn a mapping off for one destination, or add a destination-only trigger. </Card> <Card title="Value & formulas" icon="calculator" href="/guides/custom-events/value-and-formulas"> Send profit, margin, a fixed amount, or your own formula. </Card> <Card title="Custom events overview" icon="bolt" href="/guides/custom-events/how-to-create-custom-event-triggers"> What custom events are and when to use them. </Card> <Card title="Approve Meta custom events" icon="check" href="/destinations/catalog/meta-capi/how-to-approve-facebook-meta-custom-events"> Create the matching Custom Conversion in Meta. </Card> </CardGroup> # Custom events Source: https://docs.upstackdata.com/guides/custom-events/how-to-create-custom-event-triggers Send your destinations an extra event when something specific happens — an order over $500, or a purchase from one category. Upstack already sends your destinations the standard events — page views, add-to-carts, purchases — plus new customer and returning customer purchases. A custom event is for the things only you know about: an order over \$500, or a purchase from one product category. Your ad platforms can then optimize for that exact thing instead of purchases in general. <Info> Your existing events keep firing as before. A custom event is an extra one, on top. </Info> ## Two places to set one up <CardGroup> <Card title="Global event mappings" icon="globe" href="/guides/custom-events/global-event-mappings"> Set it up once and every destination gets it. Start here. </Card> <Card title="Destination event mappings" icon="sliders" href="/guides/custom-events/destination-event-mappings"> Turn one off for a single destination, or add one only that destination receives. </Card> </CardGroup> Either way you pick a base event, name the event your destinations receive, and set the conditions that decide when it fires. You can also [change the value sent with it](/guides/custom-events/value-and-formulas) — profit instead of revenue, say. ## Common ones | Event | Fires when | | ---------------------- | ---------------------------------------------- | | `high_value_purchase` | An order goes over a threshold you set | | `apparel_purchase` | The order contains a product from one category | | `accessories_purchase` | The order contains accessories only | <Note> New customer and returning customer purchases are already built in — Upstack fires `nc_purchase` and `rc_purchase` on its own. You don't need a custom event for those. See [NC & RC purchase in Meta](/destinations/catalog/meta-capi/set-up-nc-and-rc-purchase-events-in-meta). </Note> ## Naming Use lowercase with underscores: `high_value_purchase`, `apparel_purchase`. Stay consistent across related events so they're easy to tell apart. ## Related <CardGroup> <Card title="Global event mappings" icon="globe" href="/guides/custom-events/global-event-mappings"> Create a mapping once and send it everywhere. </Card> <Card title="Value & formulas" icon="calculator" href="/guides/custom-events/value-and-formulas"> Send profit, margin, a fixed amount, or your own formula. </Card> <Card title="Destination event mappings" icon="sliders" href="/guides/custom-events/destination-event-mappings"> Turn one off for a single destination, or add a destination-only trigger. </Card> <Card title="Custom events reference" icon="book" href="/event-tracking/event-taxonomy/custom-events"> Event names, parameters, and payloads. </Card> </CardGroup> # Value & formulas Source: https://docs.upstackdata.com/guides/custom-events/value-and-formulas Send profit, margin, a fixed amount, or your own formula instead of the event's own value. By default, destinations receive the value already on the event. You can override it so your ad platforms optimize on something else — profit instead of revenue, or a flat value for leads. Set it while creating a mapping — [global](/guides/custom-events/global-event-mappings) or [destination](/guides/custom-events/destination-event-mappings) — by turning on **Override event value** and picking under **Set value to**. ## What you can send What's available depends on the base event: | Base event | Options | | -------------------------------------------------- | --------------------------------------------------------------- | | `purchase` | Event value, Net Revenue, CM1, CM2, Fixed value, Custom formula | | `add_to_cart`, `initiate_checkout`, `view_content` | Event value, Net Revenue, Fixed value, Custom formula | | Any other event | Event value, Fixed value, Custom formula | **Net Revenue** comes straight off the Shopify order. **CM1** and **CM2** subtract your [cost settings](/analytics/cost-settings) from it, which needs the full order — so they're purchase-only: * `CM1 = Net Revenue − product cost` * `CM2 = CM1 − shipping, handling, and payment fees` If you pick an option the event can't supply, Upstack sends the event's own value rather than a wrong number. ## Custom formula Two ways to build one: * **Simple** — pick a value and adjust it step by step, like a calculator: **Event value × 0.7**. Each part is a metric, a field (`data.fieldName`), or a number. * **Advanced** — type the formula directly, with autocomplete. Use `+ − * /` and parentheses. | Goal | Formula | | ------------------------- | ---------------------------------- | | 70% of the event value | `data.value * 0.7` | | Profit | `orders.net_revenue - orders.cogs` | | Value minus a flat fee | `data.value - 15` | | Scale a custom lead value | `data.leadValue * 0.4` | <Note> **A missing field never zeroes your value.** If a formula references a field the event didn't send, Upstack skips the override and forwards the event's own value. A field that is present and genuinely `0` is used as `0`. </Note> ## Operands **From the event** — any event: | Operand | What it is | | -------------- | --------------------------------------------------------- | | `data.value` | The value already on the event | | `data.<field>` | Any custom field the event carries, e.g. `data.leadValue` | **Revenue** — `purchase`, `add_to_cart`, `initiate_checkout`, `view_content`: | Operand | What it is | | ------------------------ | -------------------------------------------------- | | `orders.total_revenue` | What the customer paid, including tax and shipping | | `orders.gross_revenue` | Sales before discounts and refunds | | `orders.net_revenue` | Sales after discounts and refunds | | `orders.subtotal` | Line items only — no tax, no shipping | | `orders.tax` | Tax on the order | | `orders.discount_amount` | Discounts applied | | `orders.refund_amount` | Amount refunded | | `orders.units` | Number of items | **Costs** — `purchase` only, from your [cost settings](/analytics/cost-settings): | Operand | Where it comes from | | ------------------------------- | --------------------------------------------------- | | `orders.cogs` | Product cost of the items sold | | `orders.shipping_cost` | Your Shipping settings | | `orders.handling_cost` | Your handling fee | | `orders.gateway_cost` | Your payment processing fees | | `orders.other_cogs` | Order fees you created, categorised **COGS** | | `orders.other_fulfillment_cost` | Order fees you created, categorised **Fulfillment** | | `orders.other_transaction_cost` | Order fees you created, categorised **Transaction** | ## Related <CardGroup> <Card title="Global event mappings" icon="globe" href="/guides/custom-events/global-event-mappings"> Create a mapping once and send it everywhere. </Card> <Card title="Cost settings" icon="coins" href="/analytics/cost-settings"> Configure the costs behind Net Revenue, CM1, and CM2. </Card> <Card title="Custom events overview" icon="bolt" href="/guides/custom-events/how-to-create-custom-event-triggers"> What custom events are and when to use them. </Card> <Card title="Destination event mappings" icon="sliders" href="/guides/custom-events/destination-event-mappings"> Set a different value for one destination. </Card> </CardGroup> # [DRAFT] How Custom Event Mappings Work for Health & Wellness Stores Source: https://docs.upstackdata.com/guides/health-wellness/custom-event-mappings-health-wellness Learn why Upstack replaces standard Meta event names with custom events, how to use them in Ads Manager, and the full mapping reference. ### The Short Version Upstack's Health & Wellness container replaces standard Meta events (like Purchase and AddToCart) with **custom-named events** (like `UPSTACK_HW_6117d13b`). This prevents Meta's automated flagging systems from recognizing and restricting your conversion events. The custom events work identically for campaign optimization — you just need to approve them in Events Manager and select them when setting up your ad sets. ### Why Standard Event Names Are a Problem Meta defines a set of standard events — Purchase, AddToCart, InitiateCheckout, ViewContent, and others — that are used across millions of advertisers. These event names are deeply integrated into Meta's advertising system for optimization, reporting, and audience building. For Health & Wellness flagged stores, this is a problem. When Meta sees a Purchase event coming from a domain or pixel that's flagged as H\&W, it applies additional restrictions to that event: * **The event may be blocked from optimization.** Meta can prevent you from using Purchase as an optimization objective in your campaigns. * **The event may be downgraded.** Even if not fully blocked, Meta may give less weight to the event in its delivery algorithm. * **The event triggers automated review.** Standard events on flagged accounts are scrutinized more heavily by Meta's compliance systems. The standard event names essentially act as labels that Meta's flagging system monitors. By replacing them with custom event names that Meta's system doesn't recognize as health-related, the events pass through without triggering these restrictions. ### How Custom Event Mappings Work ### What Changes Every standard Meta event is remapped to a unique custom event name. The mapping is consistent — the same standard event always maps to the same custom event — so Meta can learn and optimize on the custom events just like it would with standard ones. For example: * When a customer makes a purchase, instead of sending a `Purchase` event, Upstack sends `UPSTACK_HW_6117d13b` * When a customer adds an item to their cart, instead of `AddToCart`, Upstack sends `UPSTACK_HW_de792bda` The custom event names are deterministic hashes — they look random but map consistently to the same standard event. This means `UPSTACK_HW_6117d13b` always means "Purchase" across all Upstack H\&W customers. ### What Stays the Same The custom event carries all the same data as the standard event it replaces: * **Value and currency** — still attached for conversion value optimization * **User identifiers** — still hashed and sent for attribution * **Event timing** — still accurate The only thing that changes is the `event_name` field. From Meta's perspective, it's receiving a custom conversion event with value data — exactly like any other custom event an advertiser might define. ### Full Event Mapping Reference <table><tbody><tr><td><p><b>Standard Event</b></p></td><td><p><b>H\&W Custom Event</b></p></td><td><p><b>Notes</b></p></td></tr><tr><td><p>PageView</p></td><td><p>PageView</p></td><td><p>Unchanged — not flagged</p></td></tr><tr><td><p>ViewContent</p></td><td><p>ViewContent</p></td><td><p>Unchanged — not flagged</p></td></tr><tr><td><p>ViewCategory</p></td><td><p>view\_category</p></td><td><p>Minor rename</p></td></tr><tr><td><p>AddToCart</p></td><td><p>UPSTACK\_HW\_de792bda</p></td><td /></tr><tr><td><p>InitiateCheckout</p></td><td><p>UPSTACK\_HW\_d823e4ff</p></td><td /></tr><tr><td><p>Purchase</p></td><td><p>UPSTACK\_HW\_6117d13b</p></td><td><p>Primary optimization event</p></td></tr><tr><td><p>Lead</p></td><td><p>UPSTACK\_HW\_289161cb</p></td><td /></tr><tr><td><p>Schedule</p></td><td><p>UPSTACK\_HW\_5a3811fb</p></td><td /></tr><tr><td><p>Complete Registration</p></td><td><p>UPSTACK\_HW\_895b83ff</p></td><td /></tr><tr><td><p>Contact</p></td><td><p>UPSTACK\_HW\_4c62e638</p></td><td /></tr><tr><td><p>Invite Meeting Sched.</p></td><td><p>UPSTACK\_HW\_529b7e00</p></td><td /></tr><tr><td><p>AddPaymentInfo</p></td><td><p>UPSTACK\_HW\_9984f5f9</p></td><td /></tr><tr><td><p>AddShippingInfo</p></td><td><p>UPSTACK\_HW\_3c4012cc</p></td><td /></tr><tr><td><p>All Purchase</p></td><td><p>UPSTACK\_HW\_f0e986fc</p></td><td><p>All purchases (new + returning)</p></td></tr><tr><td><p>NC Purchase</p></td><td><p>UPSTACK\_HW\_fa2b3354</p></td><td><p>New customer purchases only</p></td></tr><tr><td><p>RC Purchase</p></td><td><p>UPSTACK\_HW\_5ec76558</p></td><td><p>Returning customer purchases only</p></td></tr></tbody></table> Note that **PageView** and **ViewContent** are sent with their standard names. These top-of-funnel events are generally not restricted by the H\&W flag, and keeping them standard helps with audience building and funnel reporting in Meta. ### Approving Custom Events in Meta Events Manager When custom events first appear in Meta Events Manager, they show a **red triangle warning** (⚠️). This is normal — Meta flags any new custom event that hasn't been explicitly approved by the account owner. Until you approve them, the events are tracked but **cannot be used for campaign optimization**. This means you must approve the events before you can set up ad sets that optimize toward them. ### How to Approve <Steps> <Step title="Open Meta Events Manager"> Sign in to [Meta Events Manager](https://business.facebook.com/events_manager) and select your new (clean) pixel. You'll see the custom events listed with red triangle icons. </Step> <Step title="Review each event"> For each event, click the event name or the warning icon, then click **Review** or **Manage Status**. </Step> <Step title="Confirm the event"> Click **I acknowledge**, then click **Confirm the custom event → Confirm**. </Step> </Steps> The red triangle disappears and the event becomes available for optimization. For detailed steps with screenshots: [How to Approve Facebook (Meta) Custom Events →](/destinations/catalog/meta-capi/how-to-approve-facebook-meta-custom-events) ### Using Custom Events in Ads Manager Once approved, custom events work exactly like standard events in your campaign setup. ### Setting Up Campaigns When creating or editing an ad set, you'll choose your optimization event. Instead of selecting "Purchase" from the standard events dropdown, you'll: <Steps> <Step title="Find Custom Events in the optimization dropdown"> In Meta Ads Manager, on the ad set screen, open the **Performance Goal / Conversion Event** dropdown and scroll to **Custom Events** (or the custom events section). </Step> <Step title="Select the Purchase event"> Choose `UPSTACK_HW_6117d13b` (this is your Purchase event). </Step> <Step title="Continue with campaign settings"> Continue with your normal campaign settings. Everything else — budget, audience targeting, bidding strategy, creative — stays exactly the same. </Step> </Steps> ### Reporting and Columns In Ads Manager reporting, custom events appear as their custom names. To make reporting easier: * **Add custom columns** for your key H\&W events (especially `UPSTACK_HW_6117d13b` for Purchase). * **Create saved column presets** so you don't have to reconfigure reporting views each time. * **Use custom conversions** if you want to create more readable names in reporting (e.g., create a custom conversion called "H\&W Purchase" based on the `UPSTACK_HW_6117d13b` event). ### Value Optimization Because the custom Purchase event still carries value and currency data, you can use **value-based optimization** (ROAS bidding) with H\&W events. This works identically to optimizing toward a standard Purchase event with value. ### Why Not Just Use Custom Conversions Instead? You might wonder why Upstack sends entirely different event names rather than sending a standard Purchase event and relying on Meta's custom conversions feature to filter. The reason is that Meta's restriction layer operates at the **event level**, not the custom conversion level: * A standard `Purchase` event from a flagged source is restricted **before** it reaches the optimization layer. * A custom event name like `UPSTACK_HW_6117d13b` is not in Meta's restriction list, so it passes through normally. Custom conversions are a reporting/optimization feature that sits on top of events. They can't bypass restrictions that are applied to the underlying event itself. ### NC Purchase vs. RC Purchase vs. All Purchase Upstack's H\&W mappings include three Purchase variants: **All Purchase (`UPSTACK_HW_f0e986fc`)** — Every purchase, regardless of customer type. This is the broadest purchase event. **NC Purchase (`UPSTACK_HW_fa2b3354`)** — New customer purchases only. Fires only when the purchaser is identified as a first-time buyer. Use this when you want to optimize specifically for customer acquisition. **RC Purchase (`UPSTACK_HW_5ec76558`)** — Returning customer purchases only. Fires when an existing customer makes a repeat purchase. **Purchase (`UPSTACK_HW_6117d13b`)** — The primary purchase event, equivalent to Meta's standard Purchase. This is the recommended default for campaign optimization. Which one you optimize toward depends on your business goals. Most brands start with the primary Purchase event and layer in NC/RC optimization as they scale. ### What You Need to Do 1. **Approve all custom events** in Meta Events Manager (the red triangle step). 2. **Update your campaign optimization** to point to `UPSTACK_HW_6117d13b` for Purchase. 3. **Update your Ads Manager reporting columns** to include the custom events you care about. Upstack handles the mapping automatically — you never need to configure which events map to which names. That's built into the H\&W container. ### Related Articles * [Global Event Mappings](/guides/custom-events/global-event-mappings) — set up your own event mappings for any destination * [Health & Wellness Custom Event Mappings](/destinations/catalog/meta-capi/health-and-wellness-custom-event-mappings) * [How to Approve Facebook (Meta) Custom Events](/destinations/catalog/meta-capi/how-to-approve-facebook-meta-custom-events) * [How Upstack Data Solves Health & Wellness Restrictions](/guides/health-wellness/how-upstack-solves-health-wellness-restrictions) * [How to Set Up a Health & Wellness Pixel for Meta](/guides/health-wellness/setup-health-wellness-pixel-for-meta) # [DRAFT] How Data Sanitization Protects Health & Wellness Stores Source: https://docs.upstackdata.com/guides/health-wellness/data-sanitization-health-wellness Learn what data Upstack scrubs before sending events to Meta, why each piece matters, and exactly what Meta still receives for optimization. ### The Short Version Before any event reaches Meta, Upstack's Health & Wellness container runs it through a **sanitization layer** that strips out product names, URLs, SKUs, and any other content that could contain health or wellness keywords. Meta still gets everything it needs for attribution and optimization — event type, value, currency, and user identifiers — but none of the content that causes flags. ### Why Sanitization Is Necessary Meta's Health & Wellness flagging system doesn't just look at your domain once and make a decision. It continuously evaluates the data your pixel sends. Every event that arrives at Meta carries metadata — and that metadata can contain the keywords, product names, and URLs that trigger or reinforce the flag. Here's what a typical unsanitized Purchase event looks like when sent to Meta: <Note> **Example: Unsanitized event payload** `event_name`: Purchase `event_source_url`: [https://yourstore.com/checkout/thank-you](https://yourstore.com/checkout/thank-you) `content_ids`: \["sup-ashwagandha-60ct"] `content_name`: "Organic Ashwagandha Supplement - 60 Capsules" `content_category`: "Supplements > Adaptogens" `value`: 59.99 | `currency`: USD </Note> Look at what's embedded in that payload: the product is called "Organic Ashwagandha Supplement," the category is "Supplements > Adaptogens," and the content ID contains "sup-ashwagandha." Every one of these fields is a signal to Meta's automated systems that this store sells health and wellness products. ### What Gets Stripped Upstack's sanitization layer removes or neutralizes the following fields before any event is sent to Meta: ### Product Names (content\_name) Any text that identifies what the customer bought or viewed. This is the most common source of flaggable keywords — product titles like "Collagen Peptides Powder" or "Vitamin D3 5000 IU" are exactly what Meta's classifiers look for. **Before:** `"content_name": "Organic Ashwagandha Supplement - 60 Capsules"` **After:** Field removed entirely. ### Product IDs and SKUs (content\_ids) Even encoded or abbreviated product identifiers can contain flaggable terms. A SKU like `CBD-TINCTURE-30ML` or a product ID like `probiotic-daily-60` carries the same signal as the full product name. **Before:** `"content_ids": ["sup-ashwagandha-60ct"]` **After:** Field removed entirely. ### Product Categories (content\_category) Category paths often contain the broadest and most obvious health/wellness terms: "Supplements," "Vitamins," "Health," "Wellness," "CBD," etc. **Before:** `"content_category": "Supplements > Adaptogens"` **After:** Field removed entirely. ### Page URLs (event\_source\_url) The URL where the event occurred is replaced with a URL from the clean alias domain. This prevents Meta from seeing paths like `/products/organic-turmeric-capsules` or `/collections/immune-support`. **Before:** `"event_source_url": "https://yourstore.com/products/organic-ashwagandha"` **After:** `"event_source_url": "https://youraliasdomain.com/"` ### What Still Gets Sent After sanitization, the event that reaches Meta looks like this: <Note> **Example: Sanitized event payload** `event_name`: UPSTACK\_HW\_6117d13b `event_source_url`: [https://youraliasdomain.com/](https://youraliasdomain.com/) `user_data`: hashed email, hashed phone, fbclid, fbp, IP, user agent `value`: 59.99 | `currency`: USD </Note> Here's what each remaining field does: * **event\_name** — Mapped to a custom H\&W event. Tells Meta what action occurred without using flagged standard event names. * **event\_source\_url** — The alias domain URL. Meta's bot can visit this domain and see a compliant page. * **user\_data** — Hashed email, hashed phone, Facebook click ID, browser ID, IP address, and user agent. These are the identity signals Meta uses to match the event to a user. They contain no product or health information. * **value and currency** — The monetary value of the conversion. Essential for ROAS optimization and value-based bidding. ### Why This Level of Scrubbing Is Necessary You might wonder: "Can't we just rename the products or change the URLs?" In practice, partial measures don't hold up: **Meta's classifiers are broad.** They don't just look for the word "supplement." They flag terms like "capsules," "extract," "daily," "formula," "blend," and dozens of other words common across health product catalogs. Trying to rename everything to be compliant is a losing game. **The flag is persistent.** Once a domain is flagged, Meta's systems are primed to look for health-related content from that source. Even mildly suggestive terminology can reinforce the classification. Clean scrubbing removes the ambiguity entirely. **You can't control every surface.** Product data shows up in URLs, page titles, meta tags, structured data, Open Graph tags, and more. The browser pixel can read all of these. Server-side sanitization is the only way to ensure nothing slips through. **Future-proofing.** If you add a new product line or a new employee adds products with flaggable names, the sanitization layer catches it automatically. You don't need to audit every SKU before launching. ### How Sanitization Interacts with Other Components Data sanitization doesn't work alone — it's one piece of the four-part H\&W solution: * **Server-side-only tracking** ensures the browser pixel never sends unsanitized data directly to Meta. * **Data sanitization** cleans the event payload before it leaves Upstack's servers. * **Domain aliasing** replaces the flagged domain in the event\_source\_url field. * **Custom event mappings** replace standard event names with non-flaggable custom names. All four layers work together. If you removed sanitization but kept the other three, product data in the event payload could still trigger a re-flag. If you kept sanitization but sent from the flagged domain, Meta's domain-level restrictions would still apply. ### What You Need to Do Nothing — sanitization is handled automatically by Upstack's Health & Wellness container. There is no configuration required on your end. <Note> **Note on product-level reporting:** Since product IDs and names are stripped, you won't see per-product conversion breakdowns in Meta Ads Manager. You can still get this data from Shopify analytics, the [Upstack dashboard](https://app.upstackdata.com), or third-party attribution tools like Triple Whale (which receives unsanitized data since it's not sending to Meta). </Note> ### Related Articles * [How Upstack Data Solves Health & Wellness Restrictions](/guides/health-wellness/how-upstack-solves-health-wellness-restrictions) * [How to Set Up a Health & Wellness Pixel for Meta](/guides/health-wellness/setup-health-wellness-pixel-for-meta) # Health and wellness brand setup Source: https://docs.upstackdata.com/guides/health-wellness/health-wellness-setup How Upstack's server-side protective container keeps health and wellness brands compliant with Meta restrictions and prevents pixel flagging. Health and wellness brands — supplements, CBD, wellness products — face unique tracking restrictions from Meta. Standard browser pixels can trigger flagging, ad account restrictions, and blocked purchase events. This guide covers what's different about the Upstack setup for H\&W brands and how the server-side protective container keeps you compliant. ## Why H\&W Brands Need a Different Setup Meta restricts or flags health and wellness brands that send certain event data through standard browser pixels. The consequences escalate quickly: * **Pixel flagging or rejection** — Meta categorizes your domain as restricted and limits event processing * **Ad account restrictions** — campaigns are paused or accounts are disabled without warning * **Purchase events blocked** — your highest-value conversion signal disappears from optimization * **CPAs spike** — costs increase with no clear cause as Meta's algorithm loses signal Upstack handles this with a server-side **protective container** that filters event payloads before Meta sees them. ## How the Protective Container Works The protective container changes the event pipeline so Meta never receives data that triggers health and wellness restrictions: 1. Upstack removes the browser pixel entirely — all events route server-side via CAPI only 2. The protective container strips restricted data fields from event payloads 3. Custom events (e.g., `upstack_hw`) replace standard purchase events for optimization 4. Meta receives clean, compliant data without triggering health and wellness restrictions <Info> You can toggle between the standard and H\&W containers at any time from the Upstack dashboard. If you're unsure which setup you need, Upstack starts with the standard container and switches to H\&W only if needed. </Info> ## Setup Differences from Standard Onboarding The H\&W setup follows the same onboarding flow with three critical differences. Everything else — Shopify install, Google Ads, Klaviyo, TikTok — works the same as standard onboarding. <Warning> **Do NOT connect the Facebook destination yourself.** Wait for Upstack to deploy the server-side protective container first. Connecting Meta before the container is live will expose your domain to flagging. Deployment typically happens the same day as your onboarding call. </Warning> <Steps> <Step title="Wait for the protective container deployment"> After your onboarding call, Upstack deploys the server-side protective container for your account. This typically happens the same day. You'll receive confirmation when the container is live and ready. Do not proceed with the Meta destination setup until you've received this confirmation. </Step> <Step title="Add your domain to Meta's verified domains"> Once the container is live, add your Shopify storefront domain to Meta's verified domains and approval list in **Meta Business Settings → Brand Safety → Domains**. For details on how the domain aliasing works with the protective container, see [How Domain Aliasing Works for Health & Wellness Tracking](/destinations/catalog/meta-capi/how-domain-aliasing-works-for-health-wellness-tracking). </Step> <Step title="Confirm before running ads"> Do not run Meta ads until the container is confirmed live and your domain is verified. Running ads before the container is active exposes your pixel to the same flagging risks you're trying to avoid. Once confirmed, Upstack configures custom event mappings that replace standard purchase events. See [Health & Wellness Custom Event Mappings](/destinations/catalog/meta-capi/health-and-wellness-custom-event-mappings) for the full mapping reference. </Step> </Steps> ## Advanced Configuration <Accordion title="Recovery timeline for flagged accounts"> If your account has already been flagged by Meta, Upstack's H\&W recovery process can restore your event pipeline: * **100% success rate** on H\&W recovery setups to date * **CPAs typically return to baseline within \~60 days** as Meta's algorithm re-learns with clean data * **Recovery process:** server-side container deployed → browser pixel removed → custom events replace standard events → Meta re-evaluates your domain The timeline depends on how severely your account was flagged. Brands with multiple flags or disabled ad accounts may take longer to fully recover, but the protective container prevents further flagging from day one. </Accordion> <Accordion title="When to use H&W vs. standard setup"> **Use the H\&W container when:** * Your domain is flagged or categorized as health and wellness by Meta * Your purchase event has been rejected * You sell supplements, CBD, wellness products, or anything Meta considers restricted * You've been flagged or restricted multiple times **Standard setup is sufficient when:** * Your brand is throttled or penalized but not categorized as H\&W * You sell products adjacent to H\&W but not in a restricted category Upstack tries the standard container first and switches to H\&W only if needed. You can toggle between standard and H\&W containers at any time. </Accordion> <Accordion title="New Business Manager strategy"> For brands with a thoroughly flagged Business Manager, starting fresh may be the fastest path to recovery: * **Create a new Business Manager** with a new pixel to get a clean slate * **Don't run two pixels from the same ad account** — the newer pixel will retarget the old pixel's funnel and steal conversions * **Recommended approach:** pause old campaigns, clone them, and relaunch with the new pixel * **Alternative:** test with one campaign first before committing to a full migration Combine the new Business Manager with Upstack's protective container to ensure the new pixel stays clean from day one. </Accordion> ## Back to Getting Started <CardGroup> <Card title="Verify End-to-End Delivery" icon="arrow-left" href="/quickstart/verify-end-to-end"> Go back to the final verification step and confirm your complete pipeline is working. </Card> </CardGroup> ## Related <CardGroup> <Card title="H&W Custom Event Mappings" icon="table" href="/destinations/catalog/meta-capi/health-and-wellness-custom-event-mappings"> Reference for how standard events are remapped to custom events in the protective container. </Card> <Card title="Domain Aliasing for H&W Tracking" icon="globe" href="/destinations/catalog/meta-capi/how-domain-aliasing-works-for-health-wellness-tracking"> How Upstack's domain aliasing works alongside the protective container for health and wellness brands. </Card> <Card title="Connect a Destination" icon="plug" href="/quickstart/connect-a-destination"> Standard Meta CAPI destination setup for brands not in restricted categories. </Card> <Card title="Conversion API Forwarding" icon="lightbulb" href="/concepts/conversion-api-forwarding"> Learn how Upstack Signal forwards events to ad platforms via server-to-server APIs. </Card> </CardGroup> # [DRAFT] How Upstack Data Solves Health & Wellness Restrictions Source: https://docs.upstackdata.com/guides/health-wellness/how-upstack-solves-health-wellness-restrictions Restore accurate Meta tracking for Health & Wellness brands with Upstack's protective container — server-side-only delivery, data sanitization, domain aliasing, and custom event mappings. Learn how Upstack's Health & Wellness container restores accurate Meta tracking using server-side-only delivery, data sanitization, domain aliasing, and custom event mappings. ### Overview When Meta flags your store under Health & Wellness, standard tracking breaks down. Upstack Data implements a specialized **Health & Wellness container** that works around these restrictions while staying fully compliant. The result: Meta receives high-quality conversion data for optimization, and your store avoids being re-flagged. The solution has four components that work together. ### 1. Server-Side-Only Tracking For Health & Wellness stores, Upstack **removes the Facebook browser pixel entirely** and operates server-side only via Meta's Conversions API (CAPI). **Why this matters:** The browser pixel (JavaScript) has a mind of its own — it sits on your website and grabs data automatically, including product names, URLs, and page content that may contain flaggable keywords. Upstack cannot control what the browser pixel pulls, and it runs in the background independently. By going server-side only through CAPI, Upstack has complete control over every piece of data sent to Meta with **100% guaranteed delivery**. The entire Upstack platform is built around ensuring redundancy without the browser pixel. ### 2. Data Sanitization Before sending any data to Meta, Upstack pre-processes it to remove anything that could trigger a flag: * **Product names** containing health/wellness keywords are stripped — for example, a product like "Magnesium Supplement for Cramping" would be flagged because "cramping" is a medical condition in that context. * **Product URLs** with flaggable terms are cleaned. * **Product descriptions** that could indicate medical conditions are filtered. * **SKUs, product IDs, and titles** are removed or anonymized. * Only **essential data** is sent: event type, purchase value, currency, and user identifiers (email, phone, click ID). Meta still receives everything it needs for accurate attribution and optimization — without the content that causes flags. ### 3. Domain Aliasing All events are sent from a **clean alias domain** instead of your flagged primary domain. This prevents new pixels from inheriting the flag. How it works: * The alias domain is a separate root domain (not a subdomain) that you register. * It has a simple, compliant landing page — just a headline and an image. * No real traffic is ever sent to this domain. It exists so Meta's compliance bot sees a clean page. * All CAPI events are reported as originating from this alias domain. Since the Health & Wellness flag is attached to your domain (not your pixel), aliasing is what makes the entire solution work. The alias domain prevents Meta from connecting the event data you're sending to anything that has previously been flagged on their backend. Domain aliasing has **no negative performance impact** — it is purely a safety measure. ### 4. Custom Event Mappings Standard Meta events (AddToCart, Purchase, etc.) are mapped to **Upstack Health & Wellness custom events** to avoid triggering Meta's automated flagging systems. For example, the Purchase event becomes `UPSTACK_HW_6117d13b` and AddToCart becomes `UPSTACK_HW_de792bda`. These custom events must be approved in Meta Events Manager before they can be used for campaign optimization. For the full mapping table: [Health & Wellness Custom Event Mappings →](/destinations/catalog/meta-capi/health-and-wellness-custom-event-mappings) For instructions on approving custom events: [How to Approve Facebook (Meta) Custom Events →](/destinations/catalog/meta-capi/how-to-approve-facebook-meta-custom-events) ### Dual-Pixel Transition Strategy When switching to a new pixel, Upstack supports a **dual-pixel approach**: * Data feeds to **both your existing pixel and the new clean pixel** simultaneously. * Your current campaigns continue running on the existing pixel while the new pixel builds up data. * Once the new pixel has enough data (typically about a week), you can begin migrating campaigns. * How fast you switch depends on your current ad performance — if things are painful, switch quickly; if performance is acceptable, train the new pixel with data first and transition gradually. If your existing pixel has not been flagged and retains its audience data, you may be able to continue using it instead of creating a new one. Discuss this with the Upstack team during onboarding. ### Ongoing Protection Once set up with the Health & Wellness container: * **No re-flagging** as long as all Meta events are sent through Upstack (no direct browser pixel, no data from the flagged domain). This approach has a **100% success rate** in preventing re-flagging. * **The alias domain stays in place permanently** — the registration fee and hosting cost are the only ongoing expenses. * **Theme changes don't break tracking** since everything is server-side (no Theme App Extension dependency for Meta events). * **No extra cost** — the Health & Wellness container, implementation, and ongoing support are all included in your Upstack subscription. ### Get Started Ready to set up the Health & Wellness solution? Follow the step-by-step guide: [How to Set Up a Health & Wellness Pixel for Meta →](/guides/health-wellness/setup-health-wellness-pixel-for-meta) ### Related Articles * [Understanding Meta's Health & Wellness Flag](/guides/health-wellness/understanding-meta-health-wellness-flag) * [How to Set Up a Health & Wellness Pixel for Meta](/guides/health-wellness/setup-health-wellness-pixel-for-meta) * [Health & Wellness Custom Event Mappings](/destinations/catalog/meta-capi/health-and-wellness-custom-event-mappings) * [How to Approve Facebook (Meta) Custom Events](/destinations/catalog/meta-capi/how-to-approve-facebook-meta-custom-events) # [DRAFT] How Server-Side-Only Tracking Protects Health & Wellness Stores Source: https://docs.upstackdata.com/guides/health-wellness/server-side-tracking-health-wellness-protection Learn why Upstack removes the Meta browser pixel entirely for Health & Wellness flagged stores and sends all data through the Conversions API instead. ### The Short Version For stores flagged under Meta's Health & Wellness category, Upstack Data operates in **server-side-only mode** — meaning the Facebook browser pixel (the JavaScript snippet that normally runs on your website) is completely removed. All event data is sent directly from Upstack's servers to Meta through the Conversions API (CAPI). This gives Upstack complete control over what data reaches Meta, which is the foundation of the entire Health & Wellness solution. ### Why the Browser Pixel Is a Problem for H\&W Stores The standard Meta pixel is a JavaScript snippet that runs in your customer's browser. When someone visits your store, the pixel automatically reads information from the page and sends it to Meta. This includes: * The **page URL** (e.g., `yourstore.com/products/organic-ashwagandha-supplement`) * The **page title** (e.g., "Organic Ashwagandha Supplement - 60 Capsules") * **Product data** embedded in the page (names, descriptions, categories) * **Referrer URLs** that may contain health-related search terms * **Content IDs** and other metadata tied to your product catalog The problem is that this happens automatically. The browser pixel scrapes whatever is on the page and sends it along with the event. For a Health & Wellness flagged store, this means Meta is constantly receiving data full of the exact keywords and content that triggered the flag in the first place — product names with words like "supplement," "vitamin," "collagen," "probiotic," or "CBD." Even if you've already been flagged, continuing to send this kind of data through the browser pixel can: * **Reinforce the flag**, making it harder to resolve * **Trigger a re-flag** if you've set up a new pixel * **Reduce Event Match Quality** as Meta discards or downgrades events it considers non-compliant You cannot selectively control what the browser pixel sends. It reads the DOM (the page content) and transmits what it finds. This is by design — Meta wants as much signal as possible for optimization. But for H\&W stores, that same signal is what causes the restrictions. ### How Server-Side-Only Mode Works When Upstack activates the Health & Wellness container, the tracking flow changes completely: ### Standard Tracking (Browser + Server) In a normal Upstack setup, events are sent two ways: 1. **Browser pixel** fires in the customer's browser and sends data directly to Meta 2. **Server-side (CAPI)** sends the same event from Upstack's servers to Meta Both carry a shared `event_id` so Meta deduplicates them into a single event. This redundancy improves match rates and ensures events aren't lost to ad blockers or browser restrictions. ### Health & Wellness Mode (Server-Only) In H\&W mode, the Meta browser pixel is removed entirely: <Steps> <Step title="Customer actions are captured"> Customer actions (page views, add to cart, purchases) are captured by Upstack's Theme App Extension on your store. </Step> <Step title="Data is sent to Upstack"> Event data is sent to **Upstack's servers** — not to Meta. </Step> <Step title="Data is sanitized"> Upstack **processes and sanitizes** the data (see the [Data Sanitization](/guides/health-wellness/data-sanitization-health-wellness) article). </Step> <Step title="Clean event is sent to Meta"> The clean event is sent to Meta via the **Conversions API only**. </Step> </Steps> No JavaScript from Meta ever runs on your site. Meta never sees your page content, URLs, or product data directly. ### What Data Gets Sent to Meta In server-side-only mode, Upstack sends only what Meta needs for attribution and optimization: **Always sent:** * **Event type** — the action that occurred (mapped to a custom H\&W event name) * **Event time** — when the action happened * **User identifiers** — hashed email, hashed phone number, Facebook click ID (`fbclid`), and browser ID (`fbp`) for matching the event to a Meta user * **Event source URL** — the alias domain URL (not your real store URL) **Sent for conversion events (Purchase, Add to Cart, etc.):** * **Value** — the purchase amount or cart value * **Currency** — e.g., USD **Never sent:** * Product names, descriptions, or categories * Real page URLs from your flagged domain * SKUs, product IDs, or catalog data * Any content that could contain health/wellness keywords This is enough data for Meta to attribute conversions to your ads, optimize delivery, and build audiences — without exposing any content that would trigger or reinforce the H\&W flag. ### Why CAPI-Only Still Works for Optimization A common concern is that removing the browser pixel will hurt performance. In practice, for H\&W flagged stores, the opposite is true. **The browser pixel was already compromised.** Once a store is flagged, Meta restricts what it does with browser pixel data from that domain. In many cases, browser events are partially or fully ignored for optimization. Removing a data source that Meta is already discounting doesn't hurt you — it removes a liability. **CAPI events are treated as higher quality.** Server-side events carry hashed first-party data (email, phone) that provides stronger identity matching than cookies alone. Meta's own documentation recommends CAPI as the primary data source, with the browser pixel as a supplement. **Event Match Quality stays strong.** EMQ depends on the quality of user identifiers (email, phone, click ID), not on the transmission method. Upstack captures these identifiers at key moments (checkout, account creation) and sends them via CAPI. Most Upstack H\&W customers see EMQ scores comparable to or better than their pre-flag performance. **The flag was the real performance killer.** The biggest optimization hit comes from the flag itself — restricted audiences, blocked events, degraded delivery. By going server-side only with clean data from an unflagged domain, you're restoring what the flag took away. ### How This Differs from Standard CAPI Setups Not all server-side tracking is the same. Here's how Upstack's H\&W implementation differs from a standard CAPI setup: <table><tbody><tr><td><p><b>Feature</b></p></td><td><p><b>Standard CAPI</b></p></td><td><p><b>Upstack H\&W (Server-Only)</b></p></td></tr><tr><td><p>Browser pixel active</p></td><td><p>Yes (redundant tracking)</p></td><td><p>No (completely removed)</p></td></tr><tr><td><p>Data sanitization</p></td><td><p>No</p></td><td><p>Yes (keywords, URLs, product data stripped)</p></td></tr><tr><td><p>Event source URL</p></td><td><p>Your real domain</p></td><td><p>Clean alias domain</p></td></tr><tr><td><p>Event names</p></td><td><p>Standard Meta events</p></td><td><p>Custom H\&W event mappings</p></td></tr><tr><td><p>Product data sent</p></td><td><p>Yes (content\_ids, content\_name)</p></td><td><p>No (stripped before sending)</p></td></tr></tbody></table> A standard CAPI setup still relies on the browser pixel running alongside it. For H\&W stores, that browser pixel is the source of the problem. Upstack's approach eliminates it entirely and controls every byte of data that reaches Meta. ### What You Need to Do Nothing — Upstack handles this automatically when the Health & Wellness container is activated during your onboarding call. The browser pixel removal, CAPI-only routing, and data processing all happen on Upstack's side. <Note> **Watch for other tracking tools.** Any active browser pixel — from Shopify's native integration, Triple Whale Sonar, Elevar, or hardcoded JavaScript — will send unsanitized data to Meta and undermine the server-side-only approach. Make sure all other Meta pixel sources are disabled. </Note> [How to Disable Facebook and Instagram Data Sharing in Shopify →](/destinations/catalog/meta-capi/how-to-disable-facebook-and-instagram-data-sharing-in-shopify) ### Related Articles * [How Upstack Data Solves Health & Wellness Restrictions](/guides/health-wellness/how-upstack-solves-health-wellness-restrictions) * [How to Set Up a Health & Wellness Pixel for Meta](/guides/health-wellness/setup-health-wellness-pixel-for-meta) * [How to Disable Facebook and Instagram Data Sharing in Shopify](/destinations/catalog/meta-capi/how-to-disable-facebook-and-instagram-data-sharing-in-shopify) # [DRAFT] How to Set Up an Alias Domain for Health & Wellness Tracking Source: https://docs.upstackdata.com/guides/health-wellness/setup-alias-domain-health-wellness Step-by-step instructions for registering a clean alias domain and building a compliant landing page for Meta's Health & Wellness tracking solution. Step-by-step instructions for registering a clean alias domain and building a compliant landing page for Meta's Health & Wellness tracking solution. ### Prerequisites * An [Upstack Data](https://app.upstackdata.com) account in good standing (subscription active) * Admin access to your [Meta Business Manager](https://business.facebook.com) and the (new, unflagged) pixel you'll use for H\&W tracking * A new domain registrar account (Namecheap, GoDaddy, Cloudflare, etc.) for purchasing the alias domain * Access to a hosting provider or landing page builder (Carrd, Unbounce, Instapage, or any static host) * A means to contact the Upstack team (your shared Slack channel or `support@upstackdata.com`) ### Why You Need an Alias Domain Meta's Health & Wellness flag is attached to your domain. Any pixel receiving events from a flagged domain will also get flagged — even a brand-new pixel. The alias domain gives your new pixel a clean origin so it stays unflagged. The alias domain is a separate root domain with a simple landing page. No real traffic goes to it. It exists solely so that Meta's compliance bot sees a clean, compliant page when it checks the event source. ### Requirements Your alias domain must meet all of the following: **Must be a new root domain.** For example, `mybrandwellness.com`. It cannot be a subdomain like `safe.mybrand.com` — Meta flags at the root domain level. **Must have no history with Meta.** Register a brand-new domain that has never been used with a Meta pixel or ad account. **Must never receive real ad traffic.** Do not run ads pointing to this domain. It is only for Meta's bot to visit. **Must have a simple, compliant landing page.** A headline and an image — nothing that references health, wellness, or supplement products. **Must be hosted somewhere accessible.** Any cheap hosting option works: Carrd, Unbounce, Instapage, or simple static hosting. ### Setup Steps <Steps> <Step title="Register the domain"> Purchase a new root domain from any registrar (Namecheap, GoDaddy, Cloudflare, etc.). Choose something brand-adjacent but generic — avoid words like "health," "wellness," "supplements," or "vitamins" in the domain name itself. **Good examples:** `mybrandshop.com`, `shopbrandname.com`, `brandlifestyle.com`, `getbrandname.com`, `trybrandname.com` **Bad examples:** `mybrandsupplements.com`, `brandwellnessstore.com`, `brandvitamins.com` A common pattern is to take your existing domain and add a prefix like "get" or "shop." For example, if your store is `tryanomalyhealth.com`, your alias could be `getanomalyhealth.com`. </Step> <Step title="Build the landing page"> The landing page needs to be simple and compliant. Here's what to include: **What to put on the page:** * A generic headline (e.g., an advertorial-style headline that does not mention supplements, health, wellness, or medical terms) * A stock image * That's it — no forms, no product listings, no links to your real store The page can be as simple as a single image — nobody will ever see it. Some brands repurpose an existing landing page and just remove any medical or health terminology. A listicle-style page with broad lifestyle content also works well. **What NOT to put on the page:** * Any health or wellness product names, descriptions, or keywords (e.g., "osteoporosis," "cramping," "supplement," "vitamin") * Links to your flagged store * Supplement, vitamin, or medical terminology * Real product content of any kind You can use any landing page builder. Carrd (\$19/year) or a single HTML file on static hosting are the simplest options. </Step> <Step title="Verify the domain in Meta Events Manager"> Once the landing page is live: 1. Sign in to [Meta Events Manager](https://business.facebook.com/events_manager). 2. Select your new (unflagged) pixel. 3. Open **Settings → Domains**, add the alias domain, and complete the domain verification process Meta provides (typically a DNS TXT record or `meta-tag` upload). 4. Wait for domain approval — this is required before Upstack can activate aliasing. </Step> <Step title="Request aliasing activation"> After the domain is approved in Meta Events Manager, contact the Upstack team to enable domain aliasing: * **Slack:** Post in your shared Slack channel. * **Email:** [support@upstackdata.com](mailto:support@upstackdata.com). Upstack will configure aliasing so all events report from the clean alias domain instead of your flagged primary domain. </Step> <Step title="Verify aliasing is live"> After Upstack confirms the alias is live: 1. Trigger a test event (e.g., place a test order or load a tracked page). 2. In [Meta Events Manager](https://business.facebook.com/events_manager) → your new pixel → **Test Events** or **Overview**, confirm the **Event Source URL** matches your alias domain (not your flagged primary domain). 3. In the [Upstack dashboard](https://app.upstackdata.com), confirm events continue to flow under **Events Manager**. </Step> </Steps> ### Ongoing Maintenance The alias domain stays in place permanently. The only ongoing costs are: * **Domain registration renewal** (typically \$10–15/year) * **Hosting** (free to minimal, depending on provider) Do not let the domain registration expire or take down the landing page — Meta's bot may revisit the domain at any time. ### Need Help? If you'd like the Upstack team to review your landing page before going live, post it in your shared Slack channel for a quick sign-off. ### Related Articles * [How to Set Up a Health & Wellness Pixel for Meta](/guides/health-wellness/setup-health-wellness-pixel-for-meta) * [Understanding Meta's Health & Wellness Flag](/guides/health-wellness/understanding-meta-health-wellness-flag) * [How Upstack Data Solves Health & Wellness Restrictions](/guides/health-wellness/how-upstack-solves-health-wellness-restrictions) # [DRAFT] How to Set Up a Health & Wellness Pixel for Meta Source: https://docs.upstackdata.com/guides/health-wellness/setup-health-wellness-pixel-for-meta Step-by-step guide for setting up Upstack Data's Health & Wellness tracking solution for Meta-flagged stores. Each step links to a focused article with detailed instructions. This guide walks you through setting up Upstack Data's Health & Wellness tracking solution for stores flagged by Meta. Each step links to a focused article with detailed instructions. ### Quick Summary * Upstack restores accurate Meta tracking for stores flagged under Health & Wellness restrictions. * Setup requires a **clean alias domain**, a **new Meta pixel**, and an **Upstack Data account**. * All tracking runs **server-side only** — the browser pixel is removed entirely. * Standard events are mapped to **custom H\&W events** that must be approved in Meta Events Manager. * After setup, migrate your ad campaigns to the new pixel and optimize toward the H\&W Purchase event. ### What Is the Health & Wellness Flag? Meta restricts stores that sell supplements, wellness products, or health-related goods. Once flagged, your pixel loses the ability to fully track and optimize bottom-funnel events like AddToCart and Purchase — leading to weaker campaign performance and declining ROAS. **The flag is attached to your domain, not your pixel.** Creating a new pixel on the same domain will also get flagged. That's why Upstack uses a different approach. [Understanding Meta's Health & Wellness Flag →](/guides/health-wellness/understanding-meta-health-wellness-flag) ### How Upstack Data Solves This Upstack deploys a specialized Health & Wellness container with four components: server-side-only tracking (no browser pixel), data sanitization to strip flaggable content, domain aliasing from a clean domain, and custom event mappings that avoid Meta's automated flagging. [How Upstack Data Solves Health & Wellness Restrictions →](/guides/health-wellness/how-upstack-solves-health-wellness-restrictions) ### Prerequisites Have the following ready before booking your onboarding call: * An **active Shopify store** (`your-store.myshopify.com`) with [Shopify Admin](https://admin.shopify.com) access * A **[Meta Business Manager](https://business.facebook.com)** account with admin access * A **new, clean root domain** for aliasing (see Step 1) * A **new Meta pixel** created but not connected to anything (see Step 2). Meta Pixel ID format: a 15–16 digit number such as `123456789012345` * An **Upstack Data account** at [app.upstackdata.com](https://app.upstackdata.com) with a subscription and payment method on file. Your Upstack Pixel ID format: `XXXX-XXXX-XXXXX-XXXX` (e.g., `58284d43-85f6-41fb-b2e0-f32f8ecb4e9b`) ### Setup Steps <Steps> <Step title="Create your alias domain and landing page"> You'll need a brand-new root domain (not a subdomain) with a simple, compliant page — just a headline and an image. No health/wellness product names, supplement terms, or links to your store. This domain exists solely for Meta's compliance bot. No real ad traffic should ever go to it. [How to Set Up an Alias Domain for Health & Wellness Tracking →](/guides/health-wellness/setup-alias-domain-health-wellness) </Step> <Step title="Create a new Meta pixel"> Create a fresh pixel in Meta Business Manager. **Do not send any data to it from your flagged domain** — even one event will flag the new pixel. 1. Sign in to [Meta Events Manager](https://business.facebook.com/events_manager). 2. Click **Connect Data Sources** (top-left of the page) and create a new **Pixel / Dataset**. 3. Name it (e.g., `Brand Name - Clean Pixel`). 4. Do not configure or connect it to anything yet — just note the Pixel ID (15–16 digits). [How to Configure Facebook (Meta) Ads Pixel Destination in Upstack Data →](/destinations/catalog/meta-capi/how-to-configure-facebook-meta-ads-pixel-destination-in-upstack-data) </Step> <Step title="Set up your Upstack Data account"> Sign up, select a plan, and enter your payment information. [How to Download and Install Upstack Data App in Shopify →](/guides/shopify/how-to-download-and-install-upstack-data-app-in-shopify) </Step> <Step title="Book your onboarding call"> With the alias domain, new pixel, and Upstack account ready, book an onboarding call (typically 30–45 minutes). The Upstack team will handle: * Standard Shopify setup * Health & Wellness container activation (the "protective layer") * Domain aliasing configuration * Meta destination setup with CAPI in server-side-only mode The H\&W container typically takes the Upstack team an afternoon to configure and push live after the onboarding call. <Warning> Do not connect your Facebook Ads or send any data to Meta until the Upstack team confirms the Health & Wellness protective layer has been deployed. Connecting before the container is active increases your risk of getting flagged or banned. </Warning> [Complete Upstack Data Onboarding Guide →](/get-started/complete-upstack-data-onboarding-guide) </Step> <Step title="Approve the alias domain in Meta Events Manager"> During or after onboarding: 1. Sign in to [Meta Events Manager](https://business.facebook.com/events_manager) and select your new pixel. 2. Open **Settings → Domains** and add the alias domain. 3. Complete the domain verification process Meta prompts you through. <Warning> Domain approval is required before aliasing can be activated. </Warning> </Step> <Step title="Activate domain aliasing"> Contact the Upstack team via your shared Slack channel or [support@upstackdata.com](mailto:support@upstackdata.com) to enable domain aliasing. Once activated, all events will report from the clean alias domain instead of your flagged domain. </Step> <Step title="Approve custom events in Meta Events Manager"> Custom H\&W events will appear with red triangle warnings in Events Manager. Each must be acknowledged and confirmed before it can be used for optimization. **Key event for campaign optimization:** `UPSTACK_HW_6117d13b` (Purchase) [How to Approve Facebook (Meta) Custom Events →](/destinations/catalog/meta-capi/how-to-approve-facebook-meta-custom-events) For the full event mapping reference: [Health & Wellness Custom Event Mappings →](/destinations/catalog/meta-capi/health-and-wellness-custom-event-mappings) </Step> <Step title="Disable conflicting tracking"> Turn off all other sources sending events to Meta to prevent duplicate events and avoid re-flagging: * **Shopify Facebook & Instagram data sharing** — disable under [Shopify Admin → Settings → Apps and sales channels → Facebook & Instagram](https://admin.shopify.com). * **Third-party tracking apps** (Triple Whale Sonar, Elevar, etc.) — disable Meta event sending in each app. * **Hardcoded Meta pixel code** — remove from your Shopify theme (`theme.liquid` and any custom snippets). [How to Disable Facebook and Instagram Data Sharing in Shopify →](/destinations/catalog/meta-capi/how-to-disable-facebook-and-instagram-data-sharing-in-shopify) </Step> <Step title="Migrate campaigns to the new pixel"> During the transition, Upstack feeds data to **both your existing pixel and the new clean pixel** simultaneously. This lets the new pixel build up audience data before you switch campaigns. Your media buyers will need to: 1. Create new campaigns (or duplicate existing ones) pointing to the new pixel. 2. Optimize toward the H\&W custom Purchase event: `UPSTACK_HW_6117d13b`. 3. Gradually shift spend from the old pixel to the new one. 4. Monitor performance as the new pixel exits Meta's learning phase. Migration speed depends on your ad spend, risk tolerance, and how painful your current ad performance is. If performance has degraded significantly, you may want to switch quickly. If performance is still acceptable, consider training the new pixel with about a week of data before transitioning. Some brands cut over immediately; others run both pixels in parallel for 1–2 weeks. <Note> If your existing pixel has not been flagged and retains its audience data, you may be able to continue using it rather than creating a new one. Discuss this with the Upstack team during onboarding. </Note> </Step> <Step title="Verify the H&W setup is working"> Once the container is live and campaigns are pointed at the clean pixel: 1. Place a test order on your store. 2. In [Meta Events Manager](https://business.facebook.com/events_manager) → your new pixel → **Test Events** or **Overview**, confirm the test event arrives via the **Conversions API** channel and the **Event Source URL** is your alias domain (not your flagged primary domain). 3. Confirm the event uses the H\&W custom event name (e.g., `UPSTACK_HW_6117d13b` for Purchase) — not the standard `Purchase` event. 4. In the [Upstack dashboard](https://app.upstackdata.com) → **Events Manager**, confirm the event is listed and shows status **Sent**. 5. Confirm there are no events being sent to Meta from any other source (no browser pixel from Shopify, no Triple Whale, no Elevar, no hardcoded scripts). </Step> </Steps> ### What to Expect After Setup <table><tbody><tr><td><p>Milestone</p></td><td><p>Timeframe</p></td></tr><tr><td><p>Events start flowing via CAPI</p></td><td><p>Immediately</p></td></tr><tr><td><p>EMQ improvements visible</p></td><td><p>Within 72 hours</p></td></tr><tr><td><p>Full optimization impact</p></td><td><p>14–21 days</p></td></tr><tr><td><p>Campaign performance recovery</p></td><td><p>Varies by brand</p></td></tr></tbody></table> Once set up, you should never get re-flagged as long as all Meta events flow through Upstack. **Using a third-party checkout?** (e.g., Phoenix, Checkout Champ) Let the Upstack team know before going live so tracking can be configured for your checkout platform. ### Need Help? Reach out via your shared Slack channel or contact support with your Meta Pixel ID. ### Related Articles * [Health & Wellness Custom Event Mappings](/destinations/catalog/meta-capi/health-and-wellness-custom-event-mappings) * [How to Approve Facebook (Meta) Custom Events](/destinations/catalog/meta-capi/how-to-approve-facebook-meta-custom-events) * [How to Configure Facebook (Meta) Ads Pixel Destination in Upstack Data](/destinations/catalog/meta-capi/how-to-configure-facebook-meta-ads-pixel-destination-in-upstack-data) * [How to Disable Facebook and Instagram Data Sharing in Shopify](/destinations/catalog/meta-capi/how-to-disable-facebook-and-instagram-data-sharing-in-shopify) * [Complete How-To Guide for Setting Up the Upstack Data App in Shopify](/guides/shopify/complete-how-to-guide-for-setting-up-the-upstack-data-app-in-shopify) * [Complete Upstack Data Onboarding Guide](/get-started/complete-upstack-data-onboarding-guide) # [DRAFT] Understanding Meta's Health & Wellness Flag Source: https://docs.upstackdata.com/guides/health-wellness/understanding-meta-health-wellness-flag Learn what Meta's Health & Wellness flag is, how it affects your ad performance, and why standard fixes like creating a new pixel don't work. Learn what Meta's Health & Wellness flag is, how it affects your ad performance, and why standard fixes like creating a new pixel don't work. ### What Is the Health & Wellness Flag? Meta categorizes certain stores — those selling supplements, wellness products, or health-related goods — under a restricted "Health & Wellness" category. Once your store is flagged, Meta applies stricter privacy and content policies that limit what data your pixel can collect and use for optimization. There is no notification from Meta when the flag is applied. Most brands discover it when they see unexplained performance declines or when events stop being accepted for optimization. ### Why Meta Created the Health & Wellness Category The policy originated after Hims & Hers gained public visibility through their IPO filings, which revealed how much they were spending on Facebook ads. Because their products are medical in nature, every customer who purchased through Facebook was effectively listed in Meta's database as buying a medical product — creating what amounts to a medical patient profile. Meta realized it was collecting protected health information at scale without the facilities to manage it, and faced significant legal liability. In response, Meta implemented a new layer of rules specifically around the **data** advertisers send back, on top of existing creative and landing page compliance requirements. The fundamental stance is "don't ask, don't tell" — Meta doesn't want to collect potentially problematic health data, and as long as you don't send it, there's no problem. ### How It Impacts Performance There is no uniform severity — Meta doesn't expose "levels" of the flag. However, brands typically see one of three patterns: **Minimal impact.** The flag appears but the brand sees no noticeable performance change. Everything continues to work as normal. **Steep drop-off.** Performance drops sharply right after the flag. Ad spend goes to near-zero or CPA spikes dramatically. **Slow decline.** A gradual decline over weeks or months. CPMs may rise (or sometimes drop to unrealistically low levels). Targeting degrades because Meta is optimizing on partial data. Eventually performance stabilizes at a lower baseline that becomes very hard to escape. ### What Gets Restricted The specifics vary, but common restrictions include: * **Loss of Purchase event optimization.** In some cases, brands lose the ability to optimize toward Purchase events entirely. Meta has an internal setting called **"core setup"** that is either on or off. When core setup is **on**, you typically cannot optimize toward Purchase events at all — this is the most severe level. * **Browser pixel data rejection.** Meta may restrict or ignore data sent from the browser pixel on the flagged domain. * **Reduced audience building.** With less event data flowing, custom audiences and lookalike audiences degrade over time. Meta flags specific keywords in context. For example, a term like "cramping" in the context of a magnesium supplement would be flagged because "cramping" is a medical condition. Product names, descriptions, SKUs, and URLs containing these terms all contribute to flagging. ### Can You Appeal the Flag? Yes, you can contest the flag through Meta's support channels, and some brands do win their appeal. However, winning an appeal does not guarantee a full resolution. There is a known issue where a **lingering overlay** can remain on your account even after a successful appeal — essentially a residual penalty on Meta's backend that continues to affect performance. The only way to remove this overlay is to work directly with a Meta representative, which typically costs between **$2,000 and $5,000**. Because of this uncertainty, many brands choose to implement a compliance solution (like Upstack's) rather than relying solely on the appeal process. ### The Key Fact: The Flag Is on Your Domain This is the most important thing to understand: **The Health & Wellness flag is attached to your domain, not your pixel.** Creating a new pixel and sending data from the same flagged domain will result in the new pixel also getting flagged. This is why simply swapping pixels doesn't solve the problem — and why domain aliasing is a core part of Upstack's solution. ### Next Steps Now that you understand the flag, learn how Upstack solves it: [How Upstack Data Solves Health & Wellness Restrictions →](/guides/health-wellness/how-upstack-solves-health-wellness-restrictions) Ready to get started? Follow the complete setup process: [How to Set Up a Health & Wellness Pixel for Meta →](/guides/health-wellness/setup-health-wellness-pixel-for-meta) ### Related Articles * [How Upstack Data Solves Health & Wellness Restrictions](/guides/health-wellness/how-upstack-solves-health-wellness-restrictions) * [How to Set Up a Health & Wellness Pixel for Meta](/guides/health-wellness/setup-health-wellness-pixel-for-meta) * [Health & Wellness Custom Event Mappings](/destinations/catalog/meta-capi/health-and-wellness-custom-event-mappings) # Automatic Form Capture Source: https://docs.upstackdata.com/guides/integrations/form-capture-integrations Automatic lead capture from Klaviyo, Postscript, Attentive, Omnisend, Sendlane, Recart, Listrak, Justuno, Alia, Octane AI, and Loop Subscriptions. Upstack Data detects form submissions and fires Lead events automatically. Upstack automatically detects and captures form submissions from popular email and SMS platforms. When a visitor submits a form on one of these platforms, we capture their email and/or phone number and fire appropriate tracking events. <Note> **Works on any website** — these integrations work on Shopify stores, headless storefronts, and custom websites. As long as the Upstack pixel and the third-party tool are both installed, form capture is automatic. </Note> <Tip> **No configuration required** — these integrations work automatically when both Upstack and the third-party tool are installed on your site. </Tip> ## How It Works When a visitor submits a signup form from a supported platform: 1. **Upstack detects the submission** automatically when both apps are installed 2. **Captures email and/or phone** from the form data 3. **Fires a `Lead` event** with the captured information 4. **Associates the session** with the captured identity 5. **Forwards to destinations** (Meta, TikTok, Klaviyo, etc.) *** ## Supported Platforms Upstack automatically captures signups from the following platforms: | Platform | Supported Forms | | ---------------------- | ------------------------------- | | **Klaviyo** | Popups, embedded forms, flyouts | | **Postscript** | SMS opt-in popups and forms | | **Attentive** | Two-tap creative, email capture | | **Omnisend** | Popups, signup boxes, wheels | | **Sendlane** | Popups and embedded forms | | **Recart** | Opt-in popups and tools | | **Listrak** | Email and SMS capture forms | | **Justuno** | Popups and embedded forms | | **Alia** | Signup popups | | **Octane AI** | Quiz lead capture | | **Loop Subscriptions** | Subscription management events | *** ## Events Fired When a visitor interacts with a supported form, the following events may fire: | Event | When It Fires | | ----------------------------- | ------------------------------------------------ | | `email_opt_in_form_displayed` | Popup or form becomes visible to visitor | | `Lead` | Visitor submits email and/or phone | | `email_opt_in_form_submitted` | Same as Lead — fired alongside for compatibility | | `email_opt_in_form_declined` | Visitor dismisses the form without submitting | All events include captured email/phone for identity resolution when available. *** ## Platform Details ### Recart Upstack automatically captures leads from Recart opt-in tools. **Events Captured:** * `recart:optin-tool:email-captured` * `recart:optin-tool:phone-number-captured` **Data Captured:** * Email address * Phone number * Opt-in tool ID * Opt-in tool name **Upstack Event Fired:** `Lead` *** ### Listrak Upstack automatically captures leads from Listrak forms. **Events Captured:** * `ltkEmailIdentityEvent` * `ltkPhoneIdentityEvent` **Data Captured:** * Email address * Phone number **Upstack Event Fired:** `Lead` *** ### Justuno Upstack automatically captures leads from Justuno popups and forms. **Detection Method:** Monitors form field changes for `ju_hidden_email` and `ju_hidden_sms` fields. **Data Captured:** * Email address (from `ju_hidden_email` field) * Phone number (from `ju_hidden_sms` field) **Upstack Event Fired:** `Lead` *** ### Alia Upstack automatically captures leads from Alia signup popups. **Events Captured:** * `alia:signup` **Data Captured:** * Email address * Phone number * Popup ID **Upstack Event Fired:** `Lead` *** ### Octane AI Quiz Upstack automatically tracks quiz interactions from Octane AI, including question responses, quiz completion, and lead capture. **Events Captured:** | Octane Event | Upstack Event | | ------------------------------ | --------------------------------------------------- | | `octane.quiz.questionAnswered` | `quiz_question_answered` | | `octane.quiz.completed` | `quiz_completed` + `Lead` (if email/phone captured) | | `octane.quiz.accessed` | `view_quiz_results` | **Data Captured:** * Quiz answer details * Email address (from lead capture step) * Phone number (from lead capture step) * Quiz completion status <Info> The `Lead` event fires automatically when email or phone is captured during quiz completion. </Info> *** ### Loop Subscriptions Upstack tracks subscription management events from Loop Subscriptions, enabling attribution for subscription-related cart actions. **Events Captured:** | Loop Event | Upstack Event | | ---------------------------------- | --------------------------- | | `loopAddAsOneTime` | `add_to_cart` | | `loopAddAsSubscription` | `add_to_cart` | | `loopBundleAddAsOneTime` | `add_to_cart` | | `loopBundleAddAsSubscription` | `add_to_cart` | | `loopItemAddToBundleSuccessEvent` | `add_to_cart` | | `loopByobAddToCartSuccessEvent` | `add_to_cart` | | `loopPresetAddToCartSuccessEvent` | `add_to_cart` | | `loopRemoveForOneTime` | `product_removed_from_cart` | | `loopRemoveFromSubscription` | `product_removed_from_cart` | | `loopBundleRemoveForOneTime` | `product_removed_from_cart` | | `loopBundleRemoveFromSubscription` | `product_removed_from_cart` | **Data Captured:** * Product ID * Variant ID * Product title * Price * Quantity <Note> Loop also fires additional subscription management events (pause, resume, cancel, etc.) that are tracked for analytics but not mapped to standard e-commerce events. </Note> *** ### What Destinations Receive When a form submission is detected, Upstack automatically forwards the event to your connected destinations: ```json theme={null} // Destination wire format (what Meta CAPI receives) { "event_name": "Lead", "event_time": "2026-02-18T14:39:00.000Z", "event_source_url": "https://example-store.com/", "user_data": { "em": "a1b2c3d4e5f6...hashed", "ph": "f6e5d4c3b2a1...hashed", "client_ip_address": "203.0.113.42", "client_user_agent": "Mozilla/5.0..." }, "custom_data": { "content_name": "Newsletter Signup" } } ``` <Note> You don't need to write any code for form capture integrations — Upstack detects and processes these automatically. </Note> *** ## Destination Forwarding Form submissions are automatically forwarded to your enabled destinations: | Destination | Event Received | Lead Data | | --------------------- | ----------------------- | ------------------------------ | | **Meta CAPI** | `Lead` | Email (hashed), phone (hashed) | | **TikTok Events API** | `SubmitForm` | Email (hashed), phone (hashed) | | **Google Ads** | `generate_lead` | Enhanced conversions data | | **Klaviyo** | Profile created/updated | Full PII | | **Attentive** | Subscriber created | Phone, email | <Note> Lead events are valuable for building audiences and measuring top-of-funnel performance, even if you don't optimize directly for leads. </Note> *** ## Identity Resolution When a form is submitted: 1. **Email is captured** and used as primary identifier 2. **Phone is captured** if provided (E.164 format) 3. **Session is associated** with the captured identity 4. **Cross-device matching** becomes possible for repeat visitors This means when a visitor who previously submitted a form returns to your site, Upstack can recognize them and attribute their behavior to the original touchpoint — even if they're on a different device. <Info> Identity resolution works across all form capture integrations and connects with data from [checkout identity capture](/sources/catalog/shopify-automatic-tracking#identity-capture). </Info> *** ## Troubleshooting <AccordionGroup> <Accordion title="Form submissions not tracking"> **Verify both apps are installed:** 1. Confirm Upstack is installed and active (check for events in the dashboard) 2. Confirm the third-party tool (Klaviyo, Postscript, etc.) is installed on your storefront 3. Test by submitting a form and checking the Live Event Stream in your Upstack dashboard **Check browser console:** Open browser DevTools (F12) and look for JavaScript errors that might prevent form detection. **Contact support:** If the form is from a supported platform but not tracking, contact support with the form URL for investigation. </Accordion> <Accordion title="Identity not resolving"> **Verify data format:** * Email must be a valid email format * Phone should be in E.164 format (e.g., `+14155551234`) **Check consent settings:** If the visitor hasn't granted analytics consent, identity resolution may be limited. **Allow time for resolution:** Identity stitching happens asynchronously. Check back in a few minutes if the identity doesn't appear immediately. </Accordion> <Accordion title="Events not forwarding to destinations"> **Check destination configuration:** 1. Go to **Integrations → Destinations** in your Upstack dashboard 2. Verify the destination is connected and active 3. Check that Lead events are enabled for that destination **Review event mapping:** Some destinations may map Lead events to different event names. Check the destination-specific documentation for details. </Accordion> </AccordionGroup> *** ## Related <CardGroup> <Card title="Standard Events" icon="list-check" href="/event-tracking/event-taxonomy/standard-events"> Full reference for Lead and other standard events. </Card> <Card title="Shopify Automatic Tracking" icon="shopify" href="/sources/catalog/shopify-automatic-tracking"> How checkout and storefront events are captured. </Card> <Card title="Identity Resolution" icon="fingerprint" href="/pixel/identity-resolution"> How Upstack connects visitor sessions across devices. </Card> <Card title="Meta CAPI" icon="meta" href="/destinations/catalog/meta-capi"> Configure Lead event forwarding to Meta. </Card> </CardGroup> # How to Connect your Google Ads Account in Upstack Data Integrations Source: https://docs.upstackdata.com/guides/integrations/how-to-connect-your-google-ads-account-in-upstack-data-integrations Connect your Google Ads account to Upstack Data so spend, impressions, and clicks pull into the dashboard for unified channel-level ROAS and attribution reporting. <Tip> **Quick Summary** * Sign in to [Upstack Data](https://app.upstackdata.com) and navigate to **[Data Integrations](https://app.upstackdata.com/pixel/integrations)**. * On the Google Ads row, click the **kebab menu** (3 dots) → **Connect**. * **Select the Google Ads account** you want to connect. </Tip> <Note> **Purpose of this setup** Connecting your Google Ads account is required to access performance data at the account, campaign, ad set, and ad levels, which powers your Upstack dashboards and attribution reporting. </Note> ## Prerequisites * An [Upstack Data](https://app.upstackdata.com) account with subscription active * A Google account with admin access to the Google Ads account you want to connect (Customer ID format: `123-456-7890`) * No active Google Ads OAuth session that conflicts with the account you want to connect (sign out of unrelated Google accounts in your browser if needed) ## Configuration Steps <Steps> <Step title="Sign in to Upstack Data"> Sign in to your [Upstack Data](https://app.upstackdata.com) account and navigate to **[Data Integrations](https://app.upstackdata.com/pixel/integrations)**. <img alt="Upstack Data dashboard with Data Integrations page open" /> </Step> <Step title="Start the Google Ads connection"> On the Data Integrations page, click the **kebab menu** (3 dots) on the Google Ads row → click **Connect**. <img alt="Google Ads row with kebab menu showing Connect option" /> **Choose the Google account** you want to connect with Upstack Data. <img alt="Google account selection screen for OAuth connection" /> Click **Continue**. <img alt="Google OAuth consent screen with Continue button" /> </Step> <Step title="Select the Google Ads account"> A popup displays all ad accounts linked to your Google account. **Select the Google Ads account** you want to connect. <img alt="Google Ads account selection popup with available ad accounts" /> </Step> <Step title="Save the configuration"> Click the **Save** button. <img alt="Save button to confirm Google Ads account connection" /> <Note> **Success!** You should see a confirmation message and the Google integration will appear as **Healthy** in your Data Integrations list. </Note> <img alt="Google Ads integration showing Healthy status in Data Integrations" /> </Step> <Step title="Verify the connection"> * On the [Data Integrations](https://app.upstackdata.com/pixel/integrations) page, confirm the Google Ads row shows status **Healthy**. * Open your Upstack dashboard reporting and confirm Google Ads spend and campaign data appear within 24 hours of connecting. </Step> </Steps> # Disable existing tracking Source: https://docs.upstackdata.com/guides/migrations/disable-existing-tracking Remove duplicate pixels, Elevar tags, native Shopify integrations, and third-party trackers after Upstack is confirmed firing. Running two tracking systems at the same time causes duplicate events, inflated attribution, and corrupted ad platform optimization. This is the most critical step in your migration — get the order right. <Warning> **Never disable old tracking before Upstack is confirmed working.** A gap in event data is worse than a brief overlap. Verify Upstack events are firing first (check the Upstack debug view or Meta Pixel Helper), then proceed with the steps below. </Warning> ## Order of operations <Steps> <Step title="Verify Upstack is firing"> Confirm events are flowing in the Upstack dashboard or with Meta Pixel Helper before you touch anything. If Upstack isn't sending events yet, stop here and resolve that first. </Step> <Step title="Disable old Facebook/Meta tags"> Remove or pause your previous tool's Facebook/Meta event tags. This is the highest-priority item — Meta is the most common source of duplicate conversions. </Step> <Step title="Disable old Klaviyo secondary flows"> If your previous tool (Elevar, Triple Whale, etc.) created secondary Klaviyo abandonment flows, disable them. Upstack's flows replace these. See the [Klaviyo destination hub](/destinations/catalog/klaviyo) for the replacement flow setup. </Step> <Step title="Disable old TikTok and other ad platform tags"> Pause or remove your previous tool's TikTok, Snapchat, and Google Ads event tags if Upstack is now handling those destinations. </Step> <Step title="Enable any inactive Upstack destinations"> If any Upstack destinations were set to **Inactive** during initial setup, toggle them to **Active** now. </Step> <Step title="Monitor for 24–48 hours"> Watch for duplicate events in your ad platform dashboards. Check event counts in the Upstack dashboard against what each platform reports. If counts roughly double what you expect, a legacy tag is still firing. </Step> </Steps> ## What to disable <AccordionGroup> <Accordion title="Elevar / Google Tag Manager"> Most brands migrating to Upstack are coming from Elevar. Elevar fires events through Google Tag Manager, so you'll disable tracking there. 1. Open **GTM → Tags**. 2. Find Elevar's **Meta/Facebook tags** — pause or disable them. 3. Find Elevar's **Klaviyo tags** (if present) — pause or disable them. 4. **GA4 tags:** Check whether they run through Elevar or are standalone. If standalone, leave them — Upstack does not replace GA4. 5. **Google Ads tags:** Same check. If standalone, leave them. 6. **Save and publish** the GTM container. In Klaviyo, disable Elevar's secondary abandonment flows (Browse, Cart, Checkout). Upstack's flows replace these. </Accordion> <Accordion title="Native Shopify Facebook & Instagram"> 1. In Shopify Admin, go to **Sales Channels → Facebook & Instagram**. 2. Open **Settings → Data Sharing**. 3. Turn data sharing **OFF**. You don't need to uninstall the sales channel. Shop features and your product catalog still work — you're only disabling the pixel/event tracking. For detailed steps, see [How to disable Facebook and Instagram data sharing in Shopify](/destinations/catalog/meta-capi/how-to-disable-facebook-and-instagram-data-sharing-in-shopify). </Accordion> <Accordion title="Native Shopify TikTok"> Disable the tracking and pixel features within the TikTok sales channel settings. If you're not using TikTok Shop features (product sync, in-app checkout), you can uninstall the channel entirely. For detailed steps, see [How to disable TikTok data sharing in Shopify](/destinations/catalog/tiktok/how-to-disable-tiktok-data-sharing-in-shopify). </Accordion> <Accordion title="Feed apps (Symprosis, etc.)"> Feed apps sometimes have tracking features enabled alongside their catalog sync function. These fire extra pixels that duplicate what Upstack sends. **Disable:** * Custom pixels within the feed app * Facebook pixel tracking within the feed app * GA4 tracking within the feed app **Keep:** * Product catalog and feed sync features — these don't conflict with Upstack </Accordion> <Accordion title="Third-party pixel apps"> Uninstall any standalone pixel management apps: * Omega TikTok Pixel * Add Naboo Pixel * Trackify * Any other app whose sole purpose is firing conversion pixels Upstack fully replaces these. </Accordion> <Accordion title="Cookie / GDPR consent banners (US-only brands)"> For stores that only sell to US customers, consider disabling Shopify's cookie consent banner. Consent banners block tracking scripts until a visitor opts in — and most visitors never do. 1. In Shopify Admin, go to **Settings → Privacy → Cookie Banner → Regions**. 2. Set the region to **None**. Removing the banner can increase trackable sessions by 25% or more on low-volume stores. <Warning> **Keep your consent banner** if you have EU or UK customers. GDPR requires consent management for those regions, and removing the banner creates legal exposure. </Warning> </Accordion> <Accordion title="Triple Whale / Northbeam"> These tools can run in parallel with Upstack during a comparison period (30 days recommended). You don't need a hard cutover. **Disable immediately:** * Triple Whale's secondary Klaviyo flows — disable as soon as Upstack's flows go live * Any server-side event forwarding to the same platform Upstack is already sending to (running both tools' CAPI events to Meta simultaneously causes double-counting) **Can keep running:** * The Triple Whale or Northbeam dashboard for attribution comparison during your evaluation period </Accordion> <Accordion title="GA4"> <Info> Upstack does **not** replace GA4. Keep GA4 connected through Shopify's native connector or your standalone GTM setup. </Info> GA4's attribution model differs fundamentally from Meta and Google Ads — the numbers will never match across these systems, and that's expected. GA4 serves a different analytical purpose than ad platform conversion tracking. </Accordion> </AccordionGroup> ## You'll know it's working when... * [ ] Old tracking tags are paused or removed in GTM / Shopify / third-party apps * [ ] Upstack destinations show **Active** status (green) in the dashboard * [ ] Ad platform event counts are stable (not doubled) over a 24–48 hour window * [ ] No duplicate conversion warnings appear in Meta Events Manager diagnostics ## Next step <CardGroup> <Card title="Set up custom events" icon="arrow-right" href="/guides/custom-events/how-to-create-custom-event-triggers"> Send new customer purchase data and other specialized signals to Meta for better optimization. </Card> </CardGroup> ## Related <CardGroup> <Card title="Disable Facebook data sharing in Shopify" icon="meta" href="/destinations/catalog/meta-capi/how-to-disable-facebook-and-instagram-data-sharing-in-shopify"> Step-by-step guide to turning off native Shopify Facebook & Instagram data sharing. </Card> <Card title="Disable TikTok data sharing in Shopify" icon="music" href="/destinations/catalog/tiktok/how-to-disable-tiktok-data-sharing-in-shopify"> How to disable TikTok event tracking in the Shopify sales channel. </Card> <Card title="Disable Snapchat data sharing in Shopify" icon="ghost" href="/destinations/catalog/snapchat/how-to-disable-snapchat-data-sharing-in-shopify"> How to disable Snapchat event tracking in Shopify. </Card> <Card title="Troubleshooting: Duplicate events" icon="wrench" href="/troubleshooting/duplicate-purchase-events"> Diagnose and resolve duplicate conversion events across your ad platforms. </Card> </CardGroup> # How to migrate from Elevar to Upstack without losing tracking data Source: https://docs.upstackdata.com/guides/migrations/elevar-to-upstack Step-by-step migration guide from Elevar to Upstack Data — parallel install, event verification, cleanup, and post-migration monitoring. Switching tracking providers is risky. Done wrong, you lose conversion data, create duplicate events, or starve your ad platform algorithms of signal during the transition. This guide walks through a clean migration from Elevar to Upstack using a parallel-run approach that minimizes data gaps and gives you time to verify everything before cutting over. <Tip> **Run Elevar and Upstack in parallel for 2–3 days before disabling Elevar.** A short window of duplicate events (which Meta and most platforms deduplicate via `event_id`) is far safer than a gap in tracking. Don't shortcut this step. </Tip> ## Why brands migrate from Elevar to Upstack Understanding what's driving your move helps you prioritize what to verify after the switch. * **Identity resolution vs. GTM-based server-side.** Elevar routes events through Google Tag Manager's server container. Upstack uses a direct server-side pipeline with built-in [identity resolution](/pixel/identity-resolution) — matching visitors across devices and sessions without depending on GTM infrastructure. * **Klaviyo enhancement.** Upstack's Flows product enriches and pushes identified profiles to Klaviyo so abandonment flows trigger for visitors that Klaviyo's native tracking misses. This isn't available through Elevar's integration. * **Attribution reporting.** Upstack's Analytics product provides multi-touch attribution alongside tracking, so you can see which channels and campaigns drive conversions without relying solely on each ad platform's self-reported numbers. * **Event Match Quality.** Upstack's identity enrichment attaches more customer matching parameters (hashed email, phone, click IDs, external IDs) to each event, which can improve EMQ and give optimization algorithms stronger signal. * **Cost and consolidation.** Running separate tools for tracking, attribution, and Klaviyo enrichment adds up. Upstack combines these in a single platform. ## Prerequisites Before you begin, make sure you have: * [Shopify Admin](https://admin.shopify.com) access with permission to install apps and edit themes * An [Upstack Data](https://app.upstackdata.com) account (you'll create one during the install) * Admin access to every destination platform you'll reconnect (Meta, Google Ads, TikTok, Pinterest, Klaviyo, etc.) * Admin access to your Google Tag Manager container if Elevar uses one (GTM container ID format: `GTM-XXXXXXX`) * Your existing Elevar account access for reference during the cutover ## Pre-migration checklist Capture this before you begin. Having it written down makes verification after migration straightforward. ### Document your current Elevar setup * **Active events:** List every event Elevar is sending — both standard (PageView, ViewContent, AddToCart, InitiateCheckout, Purchase) and any custom events. * **Connected platforms:** Record which destinations Elevar sends to (Meta, Google Ads, TikTok, Pinterest, Klaviyo, etc.). * **GTM container details:** If Elevar manages a GTM container, note the container ID (format `GTM-XXXXXXX`) and which tags are Elevar-specific vs. custom tags you've added. * **Shopify theme scripts:** Note whether Elevar has added code to your Shopify theme files (`theme.liquid`, `checkout.liquid`, or via snippets in **Shopify Admin → Online Store → Themes → Edit code**). * **Shopify data sharing:** Check if Shopify's built-in Meta data sharing is enabled (Shopify Admin → **Settings → Customer events** or **Sales channels → Facebook & Instagram**). ### Save baseline metrics * **EMQ scores:** Screenshot your current Event Match Quality scores in Meta Events Manager for each event type. * **Daily event volume:** Note the average daily count for Purchase, AddToCart, and ViewContent events over the past 7 days. * **Shopify order count:** Record your average daily Shopify orders for comparison after migration. ## Migration steps The migration follows a parallel-run approach: install Upstack alongside Elevar, verify Upstack is working, then remove Elevar. Expect a brief period of duplicate events — that's normal and preferable to a gap in data. ### Phase 1 — Install Upstack alongside Elevar (Day 1) <Steps> <Step title="Install the Upstack Shopify app"> Install the Upstack Data app from the Shopify App Store. The app deploys Upstack's tracking on your store and begins capturing events immediately. Full instructions: [Install on Shopify](/quickstart/install-on-shopify). </Step> <Step title="Connect your destinations in Upstack"> Connect every platform Elevar is currently sending to. Use the destination guides linked below for each one. | Platform | Setup guide | | ---------- | ---------------------------------------------------------- | | Meta | [Meta CAPI destination](/destinations/catalog/meta-capi) | | Google Ads | [Google Ads destination](/destinations/catalog/google-ads) | | TikTok | [TikTok destination](/destinations/catalog/tiktok) | | Klaviyo | [Klaviyo destination](/destinations/catalog/klaviyo) | | Pinterest | [Pinterest destination](/destinations/catalog/pinterest) | | Snapchat | [Snapchat destination](/destinations/catalog/snapchat) | See [Connect a destination](/quickstart/connect-a-destination) for the general flow. </Step> <Step title="Connect data sources for attribution"> If you plan to use the Analytics dashboard, connect your Sources for spend data — Shopify, Meta, Google, and TikTok are available as OAuth connections. Spend from these sources powers ROAS and multi-touch attribution. </Step> </Steps> ### Phase 2 — Verify Upstack events (Days 1–3) With both tools running, confirm Upstack is correctly capturing and forwarding events. <Steps> <Step title="Check Meta Events Manager"> 1. Open [Meta Events Manager](https://business.facebook.com/events_manager). 2. Select your pixel. 3. In the **Overview** or **Test Events** tab, look for events sent via the **Conversions API** (server) channel. 4. Verify you see recent events for `PageView`, `ViewContent`, `AddToCart`, `InitiateCheckout`, and `Purchase`. During the parallel-run window, event counts will be higher than normal because both Elevar and Upstack are sending. Meta deduplicates events using `event_id` — if both tools send the same event with the same ID, Meta counts it once. </Step> <Step title="Place a test order"> 1. Place a test order on your store (or wait for a real one). 2. In Events Manager, verify a Purchase event from Upstack's CAPI source appears within a few minutes. 3. Check that the event carries the correct value, currency, and customer matching parameters. </Step> <Step title="Check EMQ scores"> After 24–48 hours of parallel running, check your EMQ scores in Events Manager. They may temporarily appear elevated due to the additional events from Upstack. This normalizes after you remove Elevar. </Step> </Steps> ### Phase 3 — Disable Elevar (Days 3–4) Once Upstack events are flowing correctly, remove Elevar. Do this methodically — Elevar leaves tracking code in multiple locations. <Warning> **Don't skip the cleanup steps.** Uninstalling the Elevar Shopify app does **not** remove its theme snippets, GTM tags, or Shopify Customer Events pixel. Leftover code is the #1 cause of duplicate events after migration. </Warning> <Steps> <Step title="Disable Elevar in your Shopify theme"> Elevar installs render snippets in your Shopify theme. Remove them from your theme code: 1. Sign in to your [Shopify Admin](https://admin.shopify.com), then navigate to **Online Store → Themes**. 2. On your live theme, click **... → Edit code**. 3. Open `theme.liquid` and search for any of these render tags: * `{% render 'elevar-head-listener' %}` * `{% render 'elevar-head' %}` * `{% render 'elevar-body-end' %}` 4. Delete each render tag you find. 5. If your theme still has a `checkout.liquid` file (legacy stores), search for and remove similar Elevar render tags there as well. 6. In the **Snippets** folder, search for files containing `elevar` in the name. Delete each Elevar snippet file. </Step> <Step title="Remove Elevar from Shopify Customer Events"> 1. In [Shopify Admin](https://admin.shopify.com), navigate to **Settings → Customer events**. 2. If Elevar has a Custom Pixel configured here, remove it or set it to inactive. </Step> <Step title="Clean up GTM (if applicable)"> If Elevar managed a Google Tag Manager container: 1. Sign in to [Google Tag Manager](https://tagmanager.google.com) and open your container (ID format `GTM-XXXXXXX`). 2. Identify all tags Elevar created — typically Meta Pixel, Google Ads conversion tracking, and any other platform-specific tags. 3. Pause or delete Elevar-specific tags. Do **not** delete custom tags you've added independently. 4. If the container was used exclusively by Elevar and you have no other tags in it, consider removing the GTM container script from your Shopify theme entirely. </Step> <Step title="Disable Shopify's native Meta data sharing"> Shopify's built-in Meta integration sends events independently. If left on alongside Upstack, it creates duplicates. 1. In [Shopify Admin](https://admin.shopify.com), navigate to **Settings → Customer events** or **Settings → Apps and sales channels → Facebook & Instagram**. 2. Disable the native data sharing / pixel integration if it's active. Full walkthrough: [Disable existing tracking](/guides/migrations/disable-existing-tracking). </Step> <Step title="Uninstall the Elevar app"> 1. In [Shopify Admin](https://admin.shopify.com), navigate to **Settings → Apps and sales channels**. 2. Find **Elevar** in the list and click **Uninstall** (or **Remove app**). 3. Confirm the uninstallation. </Step> </Steps> ### Phase 4 — Post-migration verification (Days 4–11) <Steps> <Step title="Verify no duplicate events"> 1. Install the [Upstack Data Pixel Helper](/guides/pixel-helper/how-to-install-upstack-data-pixel-helper) Chrome extension. 2. Browse your store — visit a product page, add to cart, and check out. 3. On each page, Pixel Helper should show events from Upstack only. If you see duplicate events, Elevar code or Shopify's native integration may still be active. </Step> <Step title="Compare event volumes"> After 48 hours running Upstack only, compare against your baseline: | Metric | Pre-migration baseline | Post-migration target | | ------------------------------------------- | ---------------------- | --------------------- | | Daily Purchase events | \[your baseline] | Equal or higher | | Daily AddToCart events | \[your baseline] | Equal or higher | | Daily ViewContent events | \[your baseline] | Equal or higher | | Shopify orders vs. Events Manager purchases | \[your baseline] | Near 1:1 | If Upstack's volumes are lower than your Elevar baseline, check that all destinations are properly connected and that no events are failing in the [Upstack dashboard](https://app.upstackdata.com). </Step> <Step title="Check EMQ after 48 hours"> EMQ scores need 48 hours to stabilize after the transition. Compare against your saved baseline: * **Improved or steady:** Migration is healthy. * **Dropped:** Confirm Upstack is sending the full set of customer matching parameters (email, phone, click IDs, browser data). If scores don't recover within 72 hours, see [Why is my Meta EMQ panel showing zeros?](/destinations/catalog/meta-capi/why-is-my-meta-emq-panel-showing-zeros-0-0-10) or contact Upstack support. </Step> <Step title="Monitor for 7 days"> Don't declare the migration complete until you've monitored for a full week. Check daily: * Event counts in [Meta Events Manager](https://business.facebook.com/events_manager) match Shopify activity. * No error events or failed deliveries in the [Upstack dashboard](https://app.upstackdata.com). * Campaign performance (CPA, ROAS) remains stable. * EMQ scores hold at pre-migration levels or better. </Step> </Steps> ## Common gotchas <AccordionGroup> <Accordion title="Elevar leaves hardcoded scripts in your theme"> Even after uninstalling the Elevar app, render tags and snippet files in your Shopify theme remain. Remove them manually (see Phase 3, Step 1). If left in place, they can cause JavaScript errors or attempt to load resources that no longer exist. </Accordion> <Accordion title="GTM container still fires Elevar tags"> If Elevar set up tags in a GTM container, uninstalling the app does **not** remove those tags. They keep firing until you manually pause or delete them in GTM. This is the most common source of duplicate events after migration. </Accordion> <Accordion title="Shopify's built-in data sharing is still on"> Shopify's native Meta integration sends events independently of any third-party tracking app. If it was enabled alongside Elevar, it stays on after Elevar is removed — and now creates duplicates with Upstack. Always check and disable this during migration. </Accordion> <Accordion title="Temporary event volume drop during cutover"> When you disable Elevar and before Upstack has fully ramped, there may be a brief window (typically a few hours) where event volume dips. This is normal and resolves as Upstack's pipeline picks up all incoming events. If the drop persists beyond 24 hours, contact Upstack support. </Accordion> <Accordion title="Checkout extensibility considerations"> Shopify has deprecated `checkout.liquid` for checkout tracking. If your Elevar setup relied on `checkout.liquid` scripts, those are already non-functional on Shopify's new checkout. Upstack's tracking works with Shopify's current Checkout Extensibility framework, so no additional checkout configuration is needed. </Accordion> <Accordion title="Historical pixel data remains"> Migrating from Elevar to Upstack does not erase your pixel's historical data. All previously recorded events, audiences, and optimization learnings in Meta, Google, and other platforms remain intact. You're changing the data pipeline, not the destination. </Accordion> </AccordionGroup> ## When to contact Upstack support Reach out if: * Events are not appearing in Events Manager after 24 hours of Upstack being active. * EMQ scores drop significantly (more than 2 points) and don't recover within 72 hours. * You see duplicate events that you can't trace to Elevar remnants or Shopify's native integration. * Your Upstack dashboard shows delivery errors for any connected destination. * You need help identifying and removing Elevar scripts from your Shopify theme. ## Frequently asked questions <AccordionGroup> <Accordion title="Will I lose my historical pixel data when I migrate?"> No. Your pixel's historical event data, custom audiences, and optimization learnings remain in Meta Events Manager (and other platforms) regardless of which tracking tool sends the events. You're changing the data pipeline, not resetting the destination. </Accordion> <Accordion title="How long should I run Elevar and Upstack in parallel?"> Two to three days is typically sufficient. You need enough time for Upstack to send events across all your standard event types (PageView through Purchase) and for you to verify them in Events Manager. A few days of slightly elevated event counts is far better than a gap in tracking data. </Accordion> <Accordion title="Will running both tools simultaneously cause duplicate events?"> Yes, temporarily. During the parallel run, both Elevar and Upstack will send events to your connected platforms. Meta and most platforms deduplicate events using `event_id`. Once you disable Elevar, duplicates stop. If you see persistent duplicates after removing Elevar, check for residual scripts in your theme, GTM tags, and Shopify's native data sharing. </Accordion> <Accordion title="Do I need to reconfigure my ad campaigns after migration?"> No. Your campaigns, ad sets, and optimization settings reference your pixel ID and conversion events — none of which change during migration. Upstack sends to the same pixel and uses the same standard event names. Your campaigns continue running without interruption. </Accordion> <Accordion title="What if my EMQ scores drop after migration?"> Give it 48–72 hours for scores to stabilize. Upstack's identity enrichment typically maintains or improves EMQ because it attaches more customer matching parameters to each event. If scores remain lower than your baseline after 72 hours, contact support to review your destination configuration. </Accordion> <Accordion title="Can I migrate if I have custom events set up in Elevar?"> Yes. Document your custom events before migration (see the pre-migration checklist) and confirm with the Upstack team that the same custom events can be configured. Standard events are supported by default. See [How to create custom event triggers in Upstack](/guides/custom-events/how-to-create-custom-event-triggers). </Accordion> </AccordionGroup> ## Related <CardGroup> <Card title="Install on Shopify" icon="shopify" href="/quickstart/install-on-shopify"> Get Upstack's tracking app deployed on your Shopify store. </Card> <Card title="Connect a destination" icon="plug" href="/quickstart/connect-a-destination"> Connect Meta, Google, TikTok, Klaviyo, and other destinations. </Card> <Card title="Disable existing tracking" icon="ban" href="/guides/migrations/disable-existing-tracking"> Cleanup steps for legacy pixels, GTM tags, and native Shopify integrations. </Card> <Card title="Meta CAPI destination" icon="meta" href="/destinations/catalog/meta-capi"> Configure server-side event delivery to Meta. </Card> <Card title="Google Ads destination" icon="google" href="/destinations/catalog/google-ads"> Set up Google Ads conversion delivery. </Card> <Card title="TikTok destination" icon="music" href="/destinations/catalog/tiktok"> Configure TikTok Events API delivery. </Card> <Card title="Klaviyo destination" icon="envelope" href="/destinations/catalog/klaviyo"> Set up identity-enriched profile delivery to Klaviyo. </Card> <Card title="Why is my Meta EMQ panel showing zeros?" icon="circle-question" href="/destinations/catalog/meta-capi/why-is-my-meta-emq-panel-showing-zeros-0-0-10"> Troubleshoot Event Match Quality scores after migration. </Card> </CardGroup> # How to Install Upstack Data Pixel Helper Source: https://docs.upstackdata.com/guides/pixel-helper/how-to-install-upstack-data-pixel-helper Quick guide to finding, installing, and setting up the Upstack Data Pixel Helper Chrome extension for real-time event monitoring. # How to Install Upstack Data Pixel Helper Upstack Data Pixel Helper is a Chrome extension that lets you validate and monitor pixel events in real time as they fire on your website. This guide walks you through finding, installing, and verifying the extension in your browser. ## Prerequisites * Google Chrome (or a Chromium-based browser that supports Chrome Web Store extensions) * Permission to install Chrome extensions on your machine * The Upstack Data pixel installed on at least one website you can test against ## What is Pixel Helper? Pixel Helper is a Chrome extension developed by Upstack Data that displays all pixel events firing on a page in real time. It helps you: * Verify that tracking pixels are firing correctly * Check event values and parameters * Identify duplicate or missing events * Self-diagnose tracking issues without contacting support * Monitor Click ID capture and other critical data points ## Find Upstack Data Pixel Helper in the Chrome Web Store Upstack Data Pixel Helper is published in the Chrome Web Store under the **Upstack Data** publisher. To find it: 1. Open Google Chrome. 2. Go to the [Chrome Web Store](https://chromewebstore.google.com/). 3. Search for **Upstack Data Pixel Helper**. 4. Confirm the extension is published by **Upstack Data**. 5. Verify you're viewing version `1.1` or later. ## Install the extension Once you've located Upstack Data Pixel Helper: 1. Click **Add to Chrome**. 2. A confirmation dialog appears asking for permissions. 3. Click **Add extension** to confirm. 4. Wait for the installation to complete. The extension is added to your Chrome browser automatically. ## Pin the extension to your toolbar For easy access, pin Pixel Helper to your Chrome toolbar: 1. Click the **Extensions** icon (puzzle piece) in the top-right of the Chrome window. 2. Find **Upstack Data Pixel Helper** in the list. 3. Click the **pin icon** next to it. 4. The Pixel Helper icon now appears in your toolbar. ## Verify the installation To confirm Pixel Helper is working correctly: 1. Visit a website that has the Upstack Data pixel installed (typically your store). 2. Click the **Upstack Data Pixel Helper** icon in your Chrome toolbar. 3. The extension panel should open and show a list of events, real-time monitoring, and event details and parameters. If the panel opens and displays events, your Pixel Helper installation is complete and ready to use. If no events appear, confirm that the Upstack Data pixel is loaded on the page (open Chrome DevTools and search for `ups.min.js`). ## Next Steps Now that Pixel Helper is installed, learn how to use it to monitor and diagnose your pixel events. See our guide **How to Use Upstack Data Pixel Helper** for detailed instructions. ## Installing via Google Workspace <Note> If you're distributing Pixel Helper to your team via Google Workspace, contact Upstack Data support. We can transfer the extension to a group publisher, allowing you to distribute it to team members through your Chrome apps section. </Note> ## Related Articles <CardGroup> <Card title="How to use the Pixel Helper" href="/guides/pixel-helper/how-to-use-upstack-data-pixel-helper" /> <Card title="Enable theme app extension" href="/guides/shopify/how-to-ensure-upstack-data-theme-app-extension-is-enabled" /> <Card title="Pixel stuck on waiting for first events" href="/troubleshooting/pixel-stuck-on-waiting-for-first-events" /> <Card title="Events not in dashboard" href="/troubleshooting/no-events-appear-in-dashboard" /> </CardGroup> # [DRAFT] How to Use Upstack Data Pixel Helper Source: https://docs.upstackdata.com/guides/pixel-helper/how-to-use-upstack-data-pixel-helper Use the Upstack Data Pixel Helper browser extension to inspect event values, verify Click ID capture, debug missing events, and confirm pixel firing on every storefront page. # How to Use Upstack Data Pixel Helper Once you've installed Upstack Data Pixel Helper, you can use it to monitor and validate all pixel events firing on your website in real time. This guide explains how to navigate the extension and interpret the data it displays. ## Prerequisites * Upstack Data Pixel Helper installed in Chrome (see [How to Install Upstack Data Pixel Helper](/guides/pixel-helper/how-to-install-upstack-data-pixel-helper)) * The Upstack Data pixel installed on the website you want to test * Pixel Helper pinned to the Chrome toolbar for easy access ## Open Pixel Helper To open Upstack Data Pixel Helper: 1. Navigate to any page on your website. 2. Click the **Upstack Data Pixel Helper** icon in your Chrome toolbar (the pinned extension icon, in the top-right of the browser). 3. A panel opens showing real-time pixel event monitoring. The extension automatically displays any pixel events currently firing on the page. ## Understanding the Interface When you open Pixel Helper, you'll see a list of events. Each event in the list displays: * **Event Name** — The name of the pixel event (e.g., "PageView," "AddToCart," "Purchase") * **Timestamp** — When the event fired * **Event Count** — A counter showing how many times each event has fired The panel updates in real-time as new events fire on the page. ## Viewing Event Details To see detailed information about a specific event: 1. Click on any event in the list 2. An expanded view will show all parameters and values associated with that event ### Common Event Parameters Typical event data includes: * **Event Value** — The monetary value associated with the event (e.g., product price for AddToCart, total purchase amount for Purchase events) * **Product Name** — The name of the product involved * **Product ID** — The SKU or internal product identifier * **Click ID** — The unique identifier linking this event to the original click/ad impression * **Event Time** — The precise timestamp when the event fired * **Currency** — The currency code for monetary values ## Checking Event Values To verify that event values are being captured correctly: 1. Perform an action on your website (e.g., add a product to cart, complete a purchase) 2. Open Pixel Helper 3. Look for the corresponding event in the list 4. Click the event to expand it 5. Verify that the **Event Value** field shows the correct amount 6. Check that other relevant parameters (product name, product ID, etc.) are populated ### What to Look For * **Prices should match** — AddToCart event values should match actual product prices * **Product names should be present** — Events should capture the product being acted upon * **Values should be consistent** — Similar actions should show similar event values ## Verifying Click ID Capture Click ID is critical for attribution. To verify it's being captured: 1. Open Pixel Helper 2. Find the purchase or conversion event you want to check 3. Click to expand the event details 4. Look for the **Click ID** parameter 5. Verify it contains a value (not blank or "undefined") If Click ID is missing or empty, your attribution chain may be broken. This is a common issue that prevents proper conversion tracking. ## Identifying Duplicate or Excessive Events One of Pixel Helper's most useful features is identifying duplicate events: 1. Perform a single action on your website (e.g., click an "Add to Cart" button once) 2. Open Pixel Helper 3. Check if the same event appears **multiple times** in the list 4. Review the timestamps — are they almost identical? <Note> **Duplicate events cause:** Inflated conversion counts, incorrect revenue attribution, higher reported CPA than actual, and skewed performance metrics. </Note> If you notice the same event firing 2–3 times for a single user action, you likely have duplicate tracking code or multiple pixel implementations on the page. ## Using Pixel Helper During Troubleshooting ### Verify Events Are Firing 1. Perform the action you want to track 2. Check if the event appears in Pixel Helper within 1–2 seconds If it doesn't appear, the event isn't being tracked at all. ### Check Event Completeness 1. Expand the event details 2. Verify all expected parameters are present 3. Look for null, undefined, or blank values 4. Confirm data matches what you expect ### Spot Real-Time Issues 1. Monitor the panel while using your site 2. Watch for unexpected events or missing events 3. Note any patterns (e.g., events only missing on certain pages) ## Event Firing Patterns to Know <Note> **Healthy Event Flow:** Events fire 1–2 seconds after the user action. Each action produces exactly one event (no duplicates). All parameters are populated with correct values. Click ID is present on conversion events. </Note> <Note> **Problem Patterns:** Events fire multiple times for a single action (duplicates). Events don't fire at all. Parameters show "undefined" or are blank. Click ID is missing from conversion events. Events fire for actions you didn't perform. </Note> ## Tips for Effective Monitoring * **Keep Pixel Helper open** while testing your website to catch all events. * **Test from a non-admin account** to ensure you're seeing real user tracking, not admin-only behavior. * **Clear your browser cache** before testing to ensure you have the latest pixel code. * **Test on different pages** — tracking issues are sometimes page-specific. * **Document what you find** — take screenshots of Pixel Helper for support discussions. ## Verify your testing session Before you wrap up a debugging session, confirm: * The Upstack Data pixel is loaded (open Chrome DevTools → **Network** and search for `ups.min.js`). * You see at least one event in Pixel Helper after performing the test action. * Each tracked action produces exactly one event with the expected parameters. * Conversion events include a populated **Click ID**. <Note> **Need help?** If you've identified issues, see our guides on diagnosing Meta pixel issues or contact Upstack Data support with screenshots. </Note> # Complete How-To Guide for Setting Up the Upstack Data App in Shopify Source: https://docs.upstackdata.com/guides/shopify/complete-how-to-guide-for-setting-up-the-upstack-data-app-in-shopify This is guide is a step-by-step instructions to installing and setting up the Upstack Data app in Shopify for accurate tracking & reporting. <Info> **New to Upstack?** If you haven't already, [create your Upstack account](/quickstart/create-an-account) before continuing. </Info> <Tip> * Sign up for Upstack Data and choose your plan * Connect Shopify from the Upstack dashboard (Data Sources → Shopify) * Enable Theme App Extension * Add Upstack Data Custom Pixel * Set Consent and Privacy Settings for the Upstack Data Custom Pixel * Connect Shopify Customer Events Pixel * Finish setup * Verify events </Tip> ## Overview **Upstack Data** is a first-party data pixel (CAPI) solution that enhances your Facebook (Meta), TikTok Ads, Google Ads, and Klaviyo tracking capabilities, helping you bypass iOS 14+ restrictions and improve your advertising ROAS. ## Prerequisites * Active Upstack Data account ([sign up](https://app.upstackdata.com/signup)) — [see plans and pricing](/billing/plans-and-pricing) * Active Shopify store (`your-store.myshopify.com`) * [Shopify Admin](https://admin.shopify.com) access with permission to install apps and edit themes * Facebook Business Manager account and admin access (for Meta tracking) * Ad account credentials and access for every platform you want to track ## Configuration steps ### Part 1: Connect Shopify from the Upstack dashboard Sign in to [app.upstackdata.com](https://app.upstackdata.com), navigate to **Data Sources → Shopify**, and click **Connect Shopify**. Upstack redirects you to your Shopify Admin to authorize the install. Help guide to complete this step: [How to Install the Upstack Data App in Shopify →](/guides/shopify/how-to-download-and-install-upstack-data-app-in-shopify) ### Part 2: Enable Theme App Extension <Steps> <Step title="Open the theme settings prompt"> After signing in to the Upstack Data app, a modal window will prompt you to **enable** the UpStackified Theme App Extension. Click **Enable UpStackified Theme App Extension**. <img alt="Modal prompt to enable the UpStackified Theme App Extension" /> </Step> <Step title="Enable the Theme App Extension in Shopify Admin"> In Shopify Admin, ensure the **UpStackified Theme App Extension is ENABLED**. Help guide to complete this step: [How to Ensure Upstack Data Theme App Extension is Enabled →](/guides/shopify/how-to-ensure-upstack-data-theme-app-extension-is-enabled) </Step> <Step title="Proceed to onboarding"> Click **Continue** to proceed with the onboarding. </Step> </Steps> ### Part 3: Add Custom Pixel <Steps> <Step title="Open Customer Events in the Upstack Data app"> On the Upstack Data app onboarding page, click **Customer events** and click the **Copy Pixel Code** button to copy the code to your clipboard. <img alt="Copy Pixel Code button in the Upstack Data onboarding page" /> </Step> <Step title="Add a Custom Pixel in Shopify Admin"> In your [Shopify Admin](https://admin.shopify.com), navigate to **Settings → Customer events → Add custom pixel**. <img alt="Shopify Admin Customer events page with Add custom pixel option" /> </Step> <Step title="Name the Custom Pixel"> Set the pixel name to **UpstackData** → click **Add pixel**. <img alt="Naming the custom pixel UpstackData in Shopify Admin" title="Name the custom pixel" /> </Step> </Steps> ### Part 4: Connect Shopify Customer Events Pixel <Steps> <Step title="Set consent and privacy settings"> <Warning> **Upstack Data does not sell any data.** We are a privacy-first solution and committed to adhering to the regulations for each jurisdiction. </Warning> Help guide to complete this step: [Shopify Custom Pixel - Privacy Consent Settings →](/guides/shopify/shopify-custom-pixel-privacy-consent-settings) </Step> <Step title="Paste the Pixel Code"> Paste the **Pixel Code →** click **Save →** click **Connect**. <img alt="Paste pixel code, save, and connect in Shopify Customer events" /> </Step> <Step title="Connect the Custom Pixel"> In the modal popup, click **Connect**. <img alt="Connect button in the Shopify custom pixel confirmation modal" /> </Step> </Steps> ### Part 5: Finish setup In the **Upstack Data app**, click **Continue** → then click **Finish Setup**. <img alt="Finish Setup button in the Upstack Data app onboarding" /> ### Part 6: Verify the installation Confirm everything is wired up correctly before you start running ads: * Place a test order on your store (or wait for a real one). * In the [Upstack dashboard](https://app.upstackdata.com), open **Events Manager** and confirm `PageView`, `AddToCart`, `InitiateCheckout`, and `Purchase` events are arriving. * In [Shopify Admin → Settings → Customer events](https://admin.shopify.com), confirm the **UpstackData** Custom Pixel shows status **Connected**. * In [Shopify Admin → Online Store → Themes → Customize → App embeds](https://admin.shopify.com), confirm **UpStackified Pixel** is enabled. <Note> **Need help?** If you encounter any issues during setup, contact our support team and we'll help diagnose the problem. </Note> ## What's next <CardGroup> <Card title="Connect a destination" icon="plug" href="/quickstart/connect-a-destination"> Forward events to Meta CAPI, TikTok, Klaviyo, or other ad platforms. </Card> <Card title="Explore the CLI" icon="terminal" href="/cli/install"> Query your data and manage dashboards from the command line or through AI agents. </Card> <Card title="View plans and pricing" icon="credit-card" href="/billing/plans-and-pricing"> See available plans and adjust your subscription as your store scales. </Card> <Card title="Troubleshoot issues" icon="wrench" href="/troubleshooting/pixel-stuck-on-waiting-for-first-events"> Common fixes if events aren't appearing after setup. </Card> </CardGroup> # How to Download and Install Upstack Data App in Shopify Source: https://docs.upstackdata.com/guides/shopify/how-to-download-and-install-upstack-data-app-in-shopify Connect your Shopify store to Upstack from the Upstack dashboard — install the Upstack app and authorize the connection in a few clicks. <Tip> * Sign in to your Upstack Data account * Navigate to **Data Sources → Shopify** * Click **Connect Shopify** * Authorize the app install in Shopify * Return to the Upstack dashboard with Shopify connected </Tip> ## Prerequisites * Active Upstack Data account ([sign up](https://app.upstackdata.com/signup)) * Active Shopify store (`your-store.myshopify.com`) * [Shopify Admin](https://admin.shopify.com) access with permission to install apps ## Configuration steps <Steps> <Step title="Sign in to Upstack Data"> Open [app.upstackdata.com](https://app.upstackdata.com) and sign in with your Upstack account credentials. If you don't have an account yet, [create one first](/quickstart/create-an-account). </Step> <Step title="Open the Shopify data source"> In the Upstack dashboard, navigate to **Data Sources → Shopify**. </Step> <Step title="Connect your Shopify store"> Click **Connect Shopify**. Enter your Shopify store URL (`your-store.myshopify.com`) when prompted. Upstack redirects you to your Shopify Admin to authorize the app installation. </Step> <Step title="Approve the app installation in Shopify"> Review the permissions Upstack requests, then click **Install** in your Shopify Admin. Upstack requests read access to your orders, customers, and product catalog for event enrichment. No write permissions are requested. </Step> <Step title="Return to the Upstack dashboard"> After approving the install in Shopify, you're automatically redirected back to the Upstack dashboard. Shopify now appears as a connected data source. </Step> </Steps> ## Verify the install * In the [Upstack dashboard](https://app.upstackdata.com), confirm Shopify is listed under **Data Sources** with a **Connected** status. * In your [Shopify Admin](https://admin.shopify.com), navigate to **Settings → Apps and sales channels** and confirm **Upstack: Site Intelligence** appears in your list of installed apps. ## Next steps <CardGroup> <Card title="Enable the Theme App Extension" icon="toggle-on" href="/guides/shopify/how-to-ensure-upstack-data-theme-app-extension-is-enabled"> Activate the UpStackified theme app extension in your Shopify theme editor. </Card> <Card title="Add the Custom Pixel" icon="code" href="/guides/shopify/complete-how-to-guide-for-setting-up-the-upstack-data-app-in-shopify"> Paste the Upstack pixel code into Shopify's Customer Events. </Card> <Card title="Configure privacy settings" icon="shield-halved" href="/guides/shopify/how-to-setup-upstack-custom-pixel-privacy-settings"> Set consent and privacy settings for the Upstack custom pixel. </Card> </CardGroup> <Note> ***Need help on these?*** ​\*\*[How to Ensure Upstack Data Theme App Extension is Enabled →](/guides/shopify/how-to-ensure-upstack-data-theme-app-extension-is-enabled) ​[How to Setup Upstack Custom Pixel Privacy Settings →](/guides/shopify/how-to-setup-upstack-custom-pixel-privacy-settings) ​[Complete How-To Guide on Setting up Upstack Data App in Shopify →](/guides/shopify/complete-how-to-guide-for-setting-up-the-upstack-data-app-in-shopify)\*\* </Note> # How to Ensure Upstack Data Theme App Extension is Enabled Source: https://docs.upstackdata.com/guides/shopify/how-to-ensure-upstack-data-theme-app-extension-is-enabled Enable the Upstack Data theme app embed in your Shopify theme editor so the tracking pixel loads on every storefront page and captures events server-side. <Tip> * In Shopify Admin, navigate to **Online Store → Themes → Customize** * Click the **App embeds** icon in the theme customizer * Enable **UpStackified Pixel** and click **Save** * **Verify** with a test purchase </Tip> <Note> For your tracking events to fire correctly in Shopify, you need to ensure the **UpStackified Pixel** Theme App Extension is enabled in your live theme. Once complete, we recommend a test purchase to verify conversion tracking is working properly. </Note> ## Prerequisites * The Upstack Data app installed on your Shopify store (see [How to Download and Install Upstack Data App in Shopify](/guides/shopify/how-to-download-and-install-upstack-data-app-in-shopify)) * [Shopify Admin](https://admin.shopify.com) access with permission to edit themes * Your live theme accessible from **Online Store → Themes** ## Steps to enable Upstack Data Theme App Extension <Steps> <Step title="Sign in to Shopify Admin"> Sign in to your [Shopify Admin](https://admin.shopify.com). <img alt="Shopify Admin login page" /> </Step> <Step title="Open Themes"> In the left sidebar, navigate to **Online Store → Themes**. <img alt="Shopify Admin sidebar with Online Store and Themes selected" /> </Step> <Step title="Open the theme customizer"> On your live theme, click the **Customize** button. <img alt="Shopify Themes page with Customize button on live theme" /> </Step> <Step title="Open App embeds"> In the left sidebar of the theme customizer, click the **App embeds** icon. <img alt="Theme customizer sidebar with App embeds icon highlighted" /> </Step> <Step title="Enable UpStackified Pixel"> In the list, locate **UpStackified Pixel** and toggle the switch to **enable** it. Click **Save** at the top-right of the page to apply the changes. <img alt="UpStackified Pixel toggle in App embeds list" /> <img alt="Save button in theme customizer after enabling UpStackified Pixel" /> </Step> <Step title="Verify activation"> Once enabled, **UpStackified Pixel** will show as active with a green check mark or **Enabled** status. <img alt="UpStackified Pixel showing enabled status with green check mark" /> </Step> <Step title="Verify with a test purchase"> Place a test order on your store, then open the [Upstack dashboard](https://app.upstackdata.com) and confirm a `Purchase` event appears under **Events Manager** within a few minutes. If the event does not appear, recheck that the App embed is enabled and saved on your **live** theme (not a draft). </Step> </Steps> ## Related Articles <CardGroup> <Card title="Install the Pixel Helper" href="/guides/pixel-helper/how-to-install-upstack-data-pixel-helper" /> <Card title="Set up custom pixel privacy settings" href="/guides/shopify/how-to-setup-upstack-custom-pixel-privacy-settings" /> <Card title="Pixel stuck on waiting for first events" href="/troubleshooting/pixel-stuck-on-waiting-for-first-events" /> <Card title="Complete Shopify setup guide" href="/guides/shopify/complete-how-to-guide-for-setting-up-the-upstack-data-app-in-shopify" /> </CardGroup> # How to Setup Upstack Custom Pixel Privacy Settings Source: https://docs.upstackdata.com/guides/shopify/how-to-setup-upstack-custom-pixel-privacy-settings Configure consent mode and privacy settings on the Upstack Data custom pixel in Shopify — control which events fire for opted-out shoppers while preserving attribution for opted-in shoppers. <Tip> * In Shopify Admin, navigate to **Settings → Customer events** and select your Upstack Data Custom Pixel. * For **Permission**, choose **Not required** — the pixel will always run. * For **Data sale**, choose **Data collected does not qualify as data sale** — the pixel will collect data even when a customer opts out of their data being sold. * Click **Save**. </Tip> ## Prerequisites * The Upstack Data app installed on your Shopify store * The **UpstackData** Custom Pixel already added under **Shopify Admin → Settings → Customer events** (see [Complete How-To Guide for Setting Up the Upstack Data App in Shopify](/guides/shopify/complete-how-to-guide-for-setting-up-the-upstack-data-app-in-shopify)) * [Shopify Admin](https://admin.shopify.com) access with permission to manage Customer Events ## Key points to remember When configuring the Upstack Data Custom Pixel in Shopify, several options control consent mode. These settings can have a material impact on your tracking, data quality, and attribution. If you are running cookie consent banners, ensure they are properly configured to get the most accurate data. If **Permission: Required** is set, the Custom Pixel will not load or track user behavior until the consent banner is accepted. <Note> **Privacy regulations vary by jurisdiction.** This does not constitute legal advice. We recommend you consult your legal representative to determine which settings are appropriate for your business. </Note> ## Configuration steps <Steps> <Step title="Sign in to Shopify Admin"> Sign in to your [Shopify Admin](https://admin.shopify.com). </Step> <Step title="Open Customer events"> * In the bottom-left of the page, click **Settings**. * In the settings menu, click **Customer events**. <img alt="Shopify Admin sidebar showing Settings option" /> <img alt="Shopify Settings menu with Customer events option" /> </Step> <Step title="Select the UpstackData Custom Pixel"> From your list of pixels, click the **UpstackData** Custom Pixel. <img alt="Customer events list showing UpstackData custom pixel" /> </Step> <Step title="Configure privacy settings"> For maximum attribution and data quality, set the following: * **Permission:** *Not required* * **Data sale:** *Data collected does not qualify as data sale* Click **Save** to update the Upstack Data Custom Pixel privacy settings. <img alt="Privacy settings with Permission and Data sale options configured" /> <Warning> **Upstack Data does not sell any data.** We are a privacy-first solution and committed to adhering to the regulations for each jurisdiction. </Warning> </Step> <Step title="Verify the settings are saved"> * Refresh the Custom Pixel page in [Shopify Admin](https://admin.shopify.com) and confirm the **Permission** and **Data sale** values match what you selected. * In the [Upstack dashboard](https://app.upstackdata.com), open **Events Manager** and confirm events continue to arrive after the change. </Step> </Steps> ## Related Articles <CardGroup> <Card title="Custom pixel privacy consent settings" href="/guides/shopify/shopify-custom-pixel-privacy-consent-settings" /> <Card title="Enable theme app extension" href="/guides/shopify/how-to-ensure-upstack-data-theme-app-extension-is-enabled" /> <Card title="Complete Shopify setup guide" href="/guides/shopify/complete-how-to-guide-for-setting-up-the-upstack-data-app-in-shopify" /> <Card title="Events not in dashboard" href="/troubleshooting/no-events-appear-in-dashboard" /> </CardGroup> # Headless Shopify installation Source: https://docs.upstackdata.com/installation/headless-shopify Install the Upstack tracking script on headless Shopify storefronts (Hydrogen, Next.js, custom builds) using the JavaScript SDK. If your storefront runs on Shopify Hydrogen, Next.js, Remix, or any other custom front end, the standard Shopify Theme App Extension won't load — there's no Liquid theme to inject into. Instead, install the Upstack JavaScript SDK directly in your storefront code. <Note> Server-side events (orders, refunds, fulfillment updates) are still captured automatically through Shopify webhooks regardless of your storefront architecture. This page only covers browser-side event tracking. </Note> ## Prerequisites * The Upstack Data app installed in your [Shopify Admin](https://admin.shopify.com) (so server-side webhooks are configured) * An [Upstack Data](https://app.upstackdata.com) account with subscription active * Your Upstack Pixel ID (UUID format: `XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`, e.g., `58284d43-85f6-41fb-b2e0-f32f8ecb4e9b`). See [How to find my Upstack Data Pixel ID](/resources/how-to-find-my-upstack-data-pixel-id) * Edit access to the headless storefront codebase (Hydrogen, Next.js, Remix, Nuxt, or other framework) * Ability to deploy changes to your storefront (CI/CD or manual deploy access) ## When to Use This Page Use the headless installation if any of the following are true: * Your storefront is built on **Shopify Hydrogen**, **Next.js**, **Remix**, **Nuxt**, or another custom framework * You serve checkout through Shopify but render product, collection, and cart pages from your own front end * You don't have a standard Liquid theme where the Shopify Theme App Extension can be enabled If your storefront uses a standard Shopify theme, follow the [standard Shopify installation guide](/quickstart/install-on-shopify) instead — the Theme App Extension handles everything automatically. ## Installation Choose one of the two installation methods below depending on your storefront's build system. ### Option 1: CDN Script Tag The simplest approach is to load the Upstack pixel from our CDN. Add the following tag to the `<head>` of every page that should track events: ```html theme={null} <script src="https://cdn.upstackdata.com/pixel.js" data-pixel-id="YOUR_PIXEL_ID" async></script> ``` Replace `YOUR_PIXEL_ID` with the Pixel ID found in the [Upstack dashboard](https://app.upstackdata.com) under **System → Events Manager** (UUID format: `XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`). See [How to find my Upstack Data Pixel ID](/resources/how-to-find-my-upstack-data-pixel-id) for step-by-step instructions. The `async` attribute prevents the pixel from blocking page rendering. Once loaded, the pixel automatically captures page views and listens for cart and checkout events through the Shopify Storefront API. ### Option 2: NPM Package For tighter integration with your front end framework — including programmatic event tracking and SSR support — install the Upstack npm package: ```bash theme={null} npm install @upstackdata/pixel ``` Then initialize the pixel in your storefront's entry point: ```javascript theme={null} import { Upstack } from '@upstackdata/pixel'; const upstack = new Upstack({ pixelId: 'YOUR_PIXEL_ID' }); upstack.page(); ``` Call `upstack.page()` on every route change to register a page view. For cart and checkout events, see the SDK reference for the full event API. <Tip> In framework-specific environments like Hydrogen or Next.js, initialize the pixel in your root layout or `_app` component so it's only created once per session. </Tip> ## Server-Side Events Continue to Flow Headless installation only affects browser-side tracking. Server-side events from Shopify — orders placed, orders refunded, products updated, customer changes — continue to reach Upstack through Shopify webhooks regardless of your storefront architecture. As long as the Upstack Shopify app is installed in your Shopify admin, these webhooks are configured automatically. This means your conversion data, revenue, and order-level attribution will still flow into Upstack even if you skip the browser pixel entirely. Browser tracking adds page views, product views, and pre-checkout cart events on top of the server-side baseline. ## Verify the Install Once the pixel is loaded on your storefront: 1. Open your storefront in a browser and navigate between pages. 2. Use the [Upstack Data Pixel Helper](/guides/pixel-helper/how-to-install-upstack-data-pixel-helper) to confirm the pixel fires with your Pixel ID. 3. Open the [Upstack dashboard](https://app.upstackdata.com) and go to **Sources → Shopify**. 4. Confirm `PageView` events arrive within 1–2 minutes of activity. For more thorough event verification, see [Verify events are flowing](/quickstart/verify-events). ## Related <CardGroup> <Card title="Standard Shopify install" icon="shopify" href="/quickstart/install-on-shopify"> The default install path for storefronts that use a Shopify theme. </Card> <Card title="Shopify source" icon="arrow-right-to-bracket" href="/sources/catalog/shopify"> How the Shopify source ingests events through the pixel and webhooks. </Card> <Card title="Shopify webhooks" icon="webhook" href="/sources/catalog/shopify-webhooks"> Server-side events that capture automatically regardless of storefront architecture. </Card> <Card title="Verify events" icon="circle-check" href="/quickstart/verify-events"> Confirm events are flowing from your storefront into Upstack. </Card> </CardGroup> # Upstack Data Pixel: Event Tracking Overview Source: https://docs.upstackdata.com/pixel Track customer events, capture identity, and forward data to ad platforms with the Upstack Data JavaScript pixel. Quick setup and full SDK reference. ## Overview The Upstack Pixel is a JavaScript library that enables you to track user behavior, capture events, and identify users on your website. <Note> **Works everywhere** — The Upstack Pixel runs on Shopify stores, headless storefronts, custom websites, and any platform where you can add JavaScript. </Note> <CardGroup> <Card title="Quick Start" icon="rocket" href="/pixel/setup"> Install the pixel in 5 minutes </Card> <Card title="JavaScript SDK" icon="code" href="/pixel/javascript-sdk"> Full SDK reference </Card> <Card title="Standard Events" icon="list" href="/event-tracking/event-taxonomy/standard-events"> E-commerce event reference </Card> <Card title="Event Properties" icon="database" href="/event-tracking/event-taxonomy"> All available properties </Card> </CardGroup> *** ## Feature Availability by Platform Not all features work the same across platforms. Here's what's automatic vs manual: | Feature | Shopify | Headless / Custom / GTM | | ---------------------------------- | ----------- | ------------------------------------- | | `page_view` tracking | ✅ Automatic | Manual — call `_upstack('page')` | | `view_content` on product pages | ✅ Automatic | Manual — fire on product page load | | `add_to_cart` events | ✅ Automatic | Manual — fire on cart add | | `initiate_checkout` | ✅ Automatic | Manual — fire on checkout start | | `purchase` events | ✅ Automatic | Manual — fire on order confirmation | | Form capture (Klaviyo, Postscript) | ✅ Automatic | ✅ Automatic (when both installed) | | Custom events | ✅ Manual | ✅ Manual | | Identity resolution | ✅ Automatic | ✅ Automatic (after `identify()` call) | | `nc_purchase` / `rc_purchase` | ✅ Automatic | ❌ Shopify only | <Info> **Shopify merchants:** The theme app extension handles most tracking automatically. You only need the JavaScript SDK for custom events or advanced use cases. **Custom implementations:** Use the [JavaScript SDK Reference](/pixel/javascript-sdk) and [Standard Events](/event-tracking/event-taxonomy/standard-events) to implement tracking manually. </Info> # Upstack Data Glossary: Key Terms Explained Source: https://docs.upstackdata.com/pixel/glossary Glossary of Upstack Data terminology — attribution, CAPI, EMQ, identity resolution, destinations, server-side tracking, and other key concepts explained. | Term | Definition | | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Attribution** | The process of assigning credit for a conversion to one or more marketing touchpoints. | | **CAPI** | Conversions API — a server-to-server integration for sending events to ad platforms (Meta, TikTok, etc.) without relying on browser cookies. | | **Click ID** | A unique identifier appended to URLs by ad platforms (e.g., `fbclid` for Meta, `ttclid` for TikTok, `gclid` for Google) used to match conversions to ad clicks. | | **Conversion** | A completed action that represents business value, most commonly a purchase. | | **Custom event** | A merchant-defined event tracked via the Upstack JavaScript SDK, beyond the 27 standard events. | | **Destination** | A third-party platform that receives enriched event data from Upstack (e.g., Meta CAPI, Klaviyo, GA4). | | **EMQ** | Event Match Quality — Meta's score (0–10) indicating how well your server events can be matched to Facebook users. Higher EMQ = better ad optimization. | | **Enrichment** | The process of augmenting raw events with additional data: product catalog details, UTM parameters, identity signals, and session context. | | **Event** | A structured record of a customer interaction — a pageview, add-to-cart, purchase, or any custom action. | | **Identity resolution** | Matching anonymous visitor sessions to known customer profiles using deterministic (email, phone) and probabilistic (fingerprint, device) signals. | | **Identity stitching** | Linking multiple sessions and devices belonging to the same person into a unified customer profile. | | **Match rate** | The percentage of server-side events that an ad platform can match to users on its network. Higher match rates improve ad optimization. | | **PII** | Personally Identifiable Information — data like email and phone number. Upstack hashes PII (SHA-256) before sending to ad platforms. | | **Pixel** | A lightweight JavaScript snippet injected into your storefront that captures browser-side events and sends them to the Upstack edge API. | | **ROAS** | Return on Ad Spend — revenue generated divided by ad spend. Upstack helps improve ROAS by providing higher-quality conversion data to ad platforms. | | **Server-side tracking** | Capturing events via server-to-server communication rather than browser-based JavaScript, making tracking resilient to ad blockers and cookie restrictions. | | **Source** | A platform or integration that sends data into Upstack (e.g., Shopify storefront, Facebook Ads, Google Ads). | | **Standard event** | One of the 27 predefined event types that Upstack recognizes across all destinations (page\_view, purchase, add\_to\_cart, etc.). | | **UTM parameters** | URL query parameters (`utm_source`, `utm_medium`, `utm_campaign`, etc.) used to identify traffic sources and campaigns. | | **Webhook** | An HTTP callback that delivers event data to an external URL in real time. | # Understanding Identity Resolution Source: https://docs.upstackdata.com/pixel/identity-resolution Upstack ID stitches anonymous sessions into unified customer profiles via deterministic and probabilistic matching — improving CAPI match quality. Identity resolution is the process of recognizing that the person browsing on a phone, clicking an ad on a laptop, and completing a purchase on a tablet is the same customer. <Info> **This page covers conceptual understanding** — how identity resolution works, why it matters, and key terminology. For technical details about the identity fields on events and session stitching mechanics, see [Identity & Stitching](/pixel/identity-stitching). </Info> <Note> **Works on all implementations** — Identity resolution works with Shopify, headless storefronts, and custom websites. Anywhere the Upstack pixel is installed, Upstack ID can resolve identities. </Note> <Tip> Merchants using Upstack ID see 30–60% more identified sessions, which directly improves retargeting audience size and conversion API match quality. </Tip> ## Why It Matters Most website visitors browse anonymously. They arrive from an ad, view products, leave, and return days later on a different device. Without identity resolution, each visit looks like a separate person — your attribution data fragments, retargeting audiences shrink, and conversion APIs send events with weak identity signals. The problem intensifies in a privacy-first world. Third-party cookies are disappearing, mobile identifiers are gated behind consent prompts, and cross-domain tracking is increasingly blocked. Merchants need a first-party identity layer that works within these constraints while still connecting the dots across the customer journey. Strong identity resolution also compounds the value of every other part of your data stack. Enrichment becomes more accurate when attached to a unified profile. Conversion API match quality (EMQ) rises when events carry hashed email, phone, and address. Attribution models produce meaningful results only when they can follow a single customer across touchpoints. ## How It Works Upstack ID operates at the **Resolve** stage of the data pipeline, immediately after raw events are captured by Upstack Pixel. The resolution engine uses a layered matching strategy: * **Deterministic matching** — When a visitor logs in, enters an email at checkout, or clicks a Klaviyo email link, Upstack ID creates a hard link between the anonymous session cookie and the known customer identifier. These matches are exact and high-confidence. * **Session stitching** — Events within the same browsing session are grouped using the first-party cookie set by Upstack Pixel. As soon as any event in the session is identified (e.g., checkout), all prior anonymous events in that session are retroactively attributed to the same customer. * **Cross-device linking** — When the same email or phone appears across sessions on different devices, Upstack ID merges those profiles into a single identity graph node. Future events on any linked device are automatically resolved. * **Probabilistic signals** — Browser fingerprint attributes (viewport, language, timezone, installed fonts) serve as weak tiebreakers when deterministic identifiers are absent. These signals are never used alone — they only reinforce existing deterministic links. All matching happens server-side within the AWS backend, ensuring PII is never exposed to client-side scripts or third-party tags. ## Key Terms | Term | Definition | | -------------------------- | ------------------------------------------------------------------------------------------------------------------- | | **Identity graph** | A data structure that maps all known identifiers (email, phone, cookie, device) to a single customer profile. | | **Deterministic matching** | Linking sessions using exact identifiers like email or phone number. | | **Probabilistic matching** | Using weaker signals (browser attributes, timing patterns) to suggest — not confirm — an identity link. | | **Session stitching** | Retroactively attributing anonymous events to a known customer after identification occurs within the same session. | | **Cross-device linking** | Merging profiles when the same identifier appears on different devices or browsers. | ## Related Documentation <CardGroup> <Card title="Identity & Stitching" icon="link" href="/pixel/identity-stitching"> Technical details: identity fields on events, session stitching mechanics. </Card> <Card title="JavaScript SDK" icon="code" href="/pixel/javascript-sdk#identifyuserid-data"> How to call identify() to associate user identity with sessions. </Card> <Card title="Server-Side Tracking" icon="server" href="/concepts/server-side-tracking"> How Upstack Pixel captures the raw events that feed identity resolution. </Card> <Card title="Connect a Destination" icon="plug" href="/quickstart/connect-a-destination"> Forward identity-enriched events to ad platforms for higher match quality. </Card> </CardGroup> # How Session Stitching Works Source: https://docs.upstackdata.com/pixel/identity-stitching How Upstack ID attaches resolved identity to events, stitches anonymous sessions retroactively, and improves destination match quality (EMQ 7-9). Every event Upstack captures starts with whatever identity signals the visitor provides — often just an IP address and browser cookie. Upstack ID enriches these events with resolved identity data, connecting anonymous sessions to known customers and dramatically improving the quality of data sent to your destinations. <Info> **This page covers technical implementation** — the identity fields on events, how session stitching works, and the impact on destination match quality. For a conceptual overview of identity resolution and how the identity graph works, see [Identity Resolution](/pixel/identity-resolution). </Info> <Tip> Events that pass through identity resolution carry 3–5x more match keys on average. This directly translates to higher EMQ scores on Meta, better audience match rates on TikTok, and more accurate attribution. </Tip> ## Identity Fields on Events After identity resolution, events carry these identity-related fields: | Field | Location | Description | | ------------------- | ----------- | ---------------------------------------------------------------------------------- | | `session_id` | Event root | Groups all events within a single browsing session. Set by the first-party cookie. | | `identity_id` | Event root | The resolved Upstack identity ID. Present once the visitor has been identified. | | `em` | `user_data` | SHA-256 hashed email address. | | `ph` | `user_data` | SHA-256 hashed phone number. | | `external_id` | `user_data` | Shopify customer ID or other external identifier. | | `fbc` | `user_data` | Meta click ID cookie linking the session to an ad click. | | `fbp` | `user_data` | Meta browser ID cookie for cross-session continuity. | | `ttclid` | `user_data` | TikTok click ID for ad attribution. | | `gclid` | `user_data` | Google click ID for ad attribution. | | `client_ip_address` | `user_data` | Visitor IP address. | | `client_user_agent` | `user_data` | Browser user agent string. | ## How Identity Attaches to Events Identity resolution happens at the **Resolve** stage of the pipeline, between event capture and destination forwarding. ### 1. First-Party Cookie Matching When a visitor lands on your store, the Upstack Pixel sets a first-party cookie. Every event in that browsing session shares the same `session_id`. If the visitor has been seen before (returning visitor), the cookie links to their existing identity profile. ### 2. Deterministic Identification When a visitor provides a hard identifier — logging in, entering an email at checkout, clicking a Klaviyo email link — Upstack ID creates a deterministic match: * The `session_id` is linked to the customer's `identity_id` * `em` (hashed email) and `ph` (hashed phone) are attached to the event * `external_id` is set from the Shopify customer ID ### 3. Session Stitching This is where the real value emerges. When identification happens mid-session (e.g., at checkout), Upstack ID retroactively enriches all **prior anonymous events in that session** with the resolved identity data. A typical session flow: | Event | Before Stitching | After Stitching | | -------------------------- | ----------------------------- | --------------------------------------------- | | PageView (homepage) | IP + user agent only | IP + user agent + `em` + `ph` + `identity_id` | | ViewContent (product page) | IP + user agent only | IP + user agent + `em` + `ph` + `identity_id` | | AddToCart | IP + user agent only | IP + user agent + `em` + `ph` + `identity_id` | | InitiateCheckout | IP + user agent + `em` + `ph` | IP + user agent + `em` + `ph` + `identity_id` | | Purchase | IP + user agent + `em` + `ph` | IP + user agent + `em` + `ph` + `identity_id` | Without stitching, the PageView, ViewContent, and AddToCart events would be forwarded to destinations with weak identity signals. With stitching, every event in the session carries the full set of match keys. <Note> Session stitching is retroactive within the session. Events are held briefly in the pipeline to allow late-arriving identity data to propagate. The hold window is short enough to maintain near-real-time forwarding. </Note> ### 4. Cross-Device Linking When the same email or phone appears across sessions on different devices, Upstack ID merges those sessions under a single `identity_id`. A shopper who browses on mobile and purchases on desktop is recognized as one customer. Cross-device linking enables: * Accurate attribution across devices * Larger retargeting audiences (one profile instead of two) * Complete customer journey visibility in analytics ## Impact on Destination Match Quality Identity resolution directly drives the match keys available for each destination: | Destination | Key Match Fields | Typical EMQ Without Stitching | Typical EMQ With Stitching | | --------------------- | ---------------------------------------- | ----------------------------- | -------------------------- | | **Meta CAPI** | `em`, `ph`, `fbc`, `fbp`, IP, user agent | 3–5 | 7–9 | | **TikTok Events API** | `em`, `ph`, `ttclid`, IP, user agent | 2–4 | 6–8 | | **Klaviyo** | `em`, `ph` | Partial profiles | Complete profiles | | **GA4** | `client_id`, `user_id` | Anonymous only | Identified users | The difference is especially pronounced for upper-funnel events (PageView, ViewContent) that typically fire before the visitor has identified themselves. Session stitching ensures these events reach destinations with full identity data. <Warning> Identity resolution depends on the visitor eventually identifying themselves within the session. Fully anonymous sessions (no login, no checkout, no email link click) cannot be resolved. The identification rate varies by store — typically 30–60% of sessions are resolved. </Warning> ## How This Connects to the Broader Pipeline Identity resolution sits between event capture and destination forwarding: 1. **Capture** — Upstack Pixel fires raw events with whatever signals are available. 2. **Resolve** — Upstack ID attaches identity, stitches sessions, and links devices. *(You are here.)* 3. **Enrich** — Product catalog data and UTM parameters are merged. 4. **Activate** — Identity-enriched events are forwarded to destinations with maximum match keys. For a deeper dive into how identity resolution works at the infrastructure level, see the [Identity Resolution](/pixel/identity-resolution) concept page. ## Related Documentation <CardGroup> <Card title="Identity Resolution" icon="fingerprint" href="/pixel/identity-resolution"> Conceptual overview: identity graph, deterministic matching, cross-device linking. </Card> <Card title="JavaScript SDK" icon="code" href="/pixel/javascript-sdk#identifyuserid-data"> How to call identify() to associate user identity with sessions. </Card> <Card title="Properties & Context" icon="table" href="/event-tracking/event-taxonomy"> Full reference for all identity fields, custom data, and context on events. </Card> <Card title="Standard Events" icon="list-check" href="/event-tracking/event-taxonomy/standard-events"> Events that carry identity data after resolution. </Card> </CardGroup> # Upstack Data JavaScript SDK Reference Source: https://docs.upstackdata.com/pixel/javascript-sdk Complete API reference for the Upstack Data JavaScript SDK. Covers all 6 queue commands, 2 direct client methods, TypeScript support, and usage patterns. The Upstack JavaScript SDK provides client-side event tracking, user identification, and session management. It captures browsing behavior, resolves user identity across devices, and forwards events to your configured destinations. <Warning> **Important:** The correct global is `window._upstack()` (with underscore), not `window.upstack()`. Older documentation may reference the incorrect name. </Warning> ## Installation The Upstack pixel is distributed via CDN, not npm. Add this snippet to your site's `<head>`: ```html theme={null} <script> window._upstack = window._upstack || function() { (window._upsqueue = window._upsqueue || []).push(arguments); }; _upstack('init', 'YOUR_PIXEL_ID'); </script> <script async src="https://prod2-cdn.upstackified.com/scripts/px/ups.min.js"></script> ``` **Why this works:** 1. The inline script defines `_upstack()` as a function that pushes calls to a queue 2. Calls made before the SDK loads are queued — no events are lost 3. Once the SDK loads, it processes the queue and replaces `_upstack()` with the real implementation 4. Safe to call immediately without checking load status ## API Overview | Method | Via Queue | Via Direct Client | Description | | -------------- | ---------------- | ----------------- | --------------------------------- | | `init` | ✅ (pixelId only) | ✅ | Initialize the pixel | | `page` | ✅ | ✅ | Track page views | | `track` | ✅ | ✅ | Track custom events | | `identify` | ✅ | ✅ | Associate user identity | | `metric` | ✅ | ✅ | Send metrics (currently disabled) | | `reset` | ✅ | ✅ | Clear identity state | | `isKnown` | ❌ | ✅ | Check if user is identified | | `getUpstackId` | ❌ | ✅ | Get Upstack ID object | *** ## Queue Commands These methods can be called via `_upstack('command', ...)` before or after the SDK loads. ### init(pixelId) Initialize the Upstack pixel with your pixel ID. ```typescript theme={null} function init( pixelId: string, identityTraits?: EventIdentityTraits, scriptSource?: 'js' | 'shopify_js' | 'shopify_ext' ): Promise<{ isInitialized: boolean; isDisabled: boolean }> ``` **Parameters:** | Parameter | Type | Required | Description | | ---------------- | --------------------- | -------- | ---------------------------------------------------------------- | | `pixelId` | `string` | Yes | Your Upstack pixel ID from the dashboard (starts with `px_`) | | `identityTraits` | `EventIdentityTraits` | No | Pre-populate identity on init | | `scriptSource` | `string` | No | Script origin: `'js'` (default), `'shopify_js'`, `'shopify_ext'` | <Warning> **Queue Limitation:** When using `_upstack('init', pixelId, identityTraits, scriptSource)`, only `pixelId` is passed to the init function. The `identityTraits` and `scriptSource` parameters are dropped by the queue processor. For full init with identity traits, use the direct client after the script loads. </Warning> **Examples:** ```javascript theme={null} // Basic initialization via queue (recommended) _upstack('init', 'px_abc123def456'); // Full init with identity traits (requires direct client) // Wait for script to load first if (window._upsClient) { await window._upsClient.init('px_abc123def456', { emails: ['user@example.com'] }, 'js'); } ``` *** ### page(eventData?) Track a page view. Automatically captures page URL, title, referrer, and path. ```typescript theme={null} function page(eventData?: Record<string, unknown>): void ``` **Parameters:** | Parameter | Type | Required | Description | | ----------- | -------- | -------- | ----------------------------------------------- | | `eventData` | `object` | No | Custom properties to include with the page view | **Auto-captured properties:** * `page_url` — Current page URL * `page_title` — Document title * `page_referrer` — Referring URL * `page_path` — URL path **Examples:** ```javascript theme={null} // Basic page view _upstack('page'); // With custom properties _upstack('page', { page_category: 'product', product_id: 'SKU123', collection: 'summer-2026' }); ``` *** ### track(eventName, eventData?, ...) Track a custom event. Supports 7 positional parameters plus a shorthand for `useBeacon`. ```typescript theme={null} function track( eventName: string, eventData?: Record<string, unknown>, eventId?: string, contextOverride?: Record<string, unknown>, collectedAt?: string, // ISO 8601 timestamp collectedAtEpoch?: number, // Unix epoch milliseconds options?: TrackOptions ): void interface TrackOptions { useBeacon?: boolean; // Use navigator.sendBeacon() for page unload } ``` **Parameters:** | Parameter | Type | Required | Description | | ------------------ | -------------- | -------- | --------------------------------------------------------------- | | `eventName` | `string` | Yes | Event name in snake\_case (e.g., `'add_to_cart'`, `'purchase'`) | | `eventData` | `object` | No | Event properties | | `eventId` | `string` | No | Unique ID for deduplication across destinations | | `contextOverride` | `object` | No | Override page/session context for this event | | `collectedAt` | `string` | No | ISO 8601 timestamp for backdated events | | `collectedAtEpoch` | `number` | No | Unix epoch milliseconds for backdated events | | `options` | `TrackOptions` | No | `{ useBeacon: boolean }` for page unload tracking | **Shorthand for useBeacon:** When the 4th argument is an object with `useBeacon`, it's treated as options: ```javascript theme={null} // Shorthand (recommended for useBeacon) _upstack('track', 'lead', { email: 'user@example.com' }, { useBeacon: true }); // Full positional form (7 parameters) _upstack('track', 'lead', { email: 'user@example.com' }, null, null, null, null, { useBeacon: true }); ``` **Examples:** ```javascript theme={null} // Basic tracking _upstack('track', 'add_to_cart', { items: [{ id: 'SKU123', name: 'Widget', price: 29.99, quantity: 1 }], value: 29.99, currency: 'USD' }); // With deduplication ID (prevents duplicate events at destinations) _upstack('track', 'purchase', { items: [{ id: 'SKU123', name: 'Widget', price: 29.99, quantity: 1 }], value: 29.99, order_id: 'ORD-456', currency: 'USD' }, 'ORD-456'); // Backdated event (server-side timestamp) _upstack('track', 'server_event', { value: 50 }, null, null, '2026-06-01T12:00:00Z'); // Page unload with beacon (using shorthand) window.addEventListener('visibilitychange', () => { if (document.visibilityState === 'hidden') { _upstack('track', 'page_exit', { time_on_page_seconds: Math.round((Date.now() - pageLoadTime) / 1000) }, { useBeacon: true }); } }); ``` *** ### identify(userId?, data?) Associate user identity with the current session. Used for cross-device tracking and destination matching. ```typescript theme={null} function identify( userId?: string | null, data?: EventIdentityTraits ): void interface EventIdentityTraits { emails?: string[]; // Array of email addresses phones?: string[]; // Array of phone numbers (E.164 format preferred) firstName?: string; lastName?: string; address?: { city?: string; state?: string; zip?: string; country?: string; }; } ``` **Parameters:** | Parameter | Type | Required | Description | | --------- | --------------------- | -------- | --------------------------------------------------------------------------------- | | `userId` | `string \| null` | No | Your internal user ID. Pass `null` for anonymous identification with traits only. | | `data` | `EventIdentityTraits` | No | Identity traits with `emails[]` and `phones[]` as arrays | <Note> **Important:** `emails` and `phones` are arrays, not single values. This supports users with multiple contact methods. </Note> **Examples:** ```javascript theme={null} // With userId only _upstack('identify', 'user-456'); // With full profile _upstack('identify', 'user-456', { emails: ['jane@example.com', 'jane.doe@work.com'], phones: ['+15551234567'], firstName: 'Jane', lastName: 'Doe', address: { city: 'Austin', state: 'TX', zip: '78701', country: 'US' } }); // Traits only (Shopify path — userId is null) _upstack('identify', null, { emails: ['customer@example.com'] }); // After form submission document.querySelector('form').addEventListener('submit', (e) => { const email = e.target.querySelector('[name="email"]').value; _upstack('identify', null, { emails: [email] }); }); ``` *** ### metric(metricName, metricValue, metricData?, metricId?) Send a custom metric value. ```typescript theme={null} function metric( metricName: string, metricValue: number, metricData?: Record<string, unknown>, metricId?: string ): null ``` <Warning> **Currently Disabled:** The `metric()` method is routed through the queue but returns `null` — metric forwarding is disabled in the public SDK. This method exists for future use. </Warning> **Parameters:** | Parameter | Type | Required | Description | | ------------- | -------- | -------- | --------------------------- | | `metricName` | `string` | Yes | Metric name | | `metricValue` | `number` | Yes | Numeric value | | `metricData` | `object` | No | Additional context | | `metricId` | `string` | No | Unique ID for deduplication | **Example:** ```javascript theme={null} // Currently returns null — metric forwarding disabled _upstack('metric', 'page_load_time', 1250, { page: '/checkout' }); ``` *** ### reset() Clear identity, session data, event listeners, and hooks. Call when a user logs out. ```typescript theme={null} function reset(): void ``` **Example:** ```javascript theme={null} function handleLogout() { _upstack('reset'); window.location.href = '/login'; } ``` *** ## Direct Client Methods These methods are **only available via `window._upsClient`** after initialization completes. They cannot be called through the `_upstack()` queue. ### isKnown() Check if the current user has been identified. ```typescript theme={null} function isKnown(): Promise<boolean> ``` **Returns:** Promise resolving to `true` if the user has been identified, `false` otherwise. <Warning> **Direct Client Only:** This method is NOT available via the `_upstack()` queue. You must call it directly on `window._upsClient`. </Warning> **Example:** ```javascript theme={null} // After init completes const isKnown = await window._upsClient.isKnown(); if (!isKnown) { showEmailCapturePopup(); } ``` *** ### getUpstackId() Retrieve the Upstack identity object for the current user. ```typescript theme={null} interface UpstackId { _upstackId?: string; // Persistent user ID _upstackSid?: string; // Session ID _upstackIp?: string; // IP address (if available) } function getUpstackId(): Promise<UpstackId> ``` **Returns:** Promise resolving to an `UpstackId` object (not a string). <Warning> **Direct Client Only:** This method is NOT available via the `_upstack()` queue. You must call it directly on `window._upsClient`. **Return Type:** Returns an object with identity fields, not a single string ID. </Warning> **Example:** ```javascript theme={null} // After init completes const upstackId = await window._upsClient.getUpstackId(); console.log('Upstack ID:', upstackId._upstackId); console.log('Session ID:', upstackId._upstackSid); // Use for server-side API calls fetch('/api/track', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ upstack_id: upstackId._upstackId, event: 'server_purchase', value: 99.99 }) }); ``` *** ## Waiting for SDK Ready When using direct client methods, ensure the SDK has loaded: ```javascript theme={null} function onUpstackReady(callback) { if (window._upsClient && window._upsClient._initialized) { callback(); } else { const interval = setInterval(() => { if (window._upsClient && window._upsClient._initialized) { clearInterval(interval); callback(); } }, 100); } } // Usage onUpstackReady(async () => { const isKnown = await window._upsClient.isKnown(); if (isKnown) { const upstackId = await window._upsClient.getUpstackId(); console.log('User ID:', upstackId._upstackId); } }); ``` *** ## Common Patterns ### SPA Navigation Tracking Track page views on route changes in single-page applications: ```javascript theme={null} // React Router import { useEffect } from 'react'; import { useLocation } from 'react-router-dom'; function usePageTracking() { const location = useLocation(); useEffect(() => { _upstack('page', { page_path: location.pathname, page_search: location.search }); }, [location]); } // Next.js App Router 'use client'; import { usePathname, useSearchParams } from 'next/navigation'; import { useEffect } from 'react'; export function Analytics() { const pathname = usePathname(); const searchParams = useSearchParams(); useEffect(() => { _upstack('page', { page_path: pathname, page_search: searchParams.toString() }); }, [pathname, searchParams]); return null; } ``` ### E-commerce Funnel Track the complete customer journey: ```javascript theme={null} // Product view _upstack('track', 'view_content', { items: [{ id: 'SKU123', name: 'Widget', price: 29.99 }] }); // Add to cart _upstack('track', 'add_to_cart', { items: [{ id: 'SKU123', name: 'Widget', price: 29.99, quantity: 1 }], value: 29.99, currency: 'USD' }); // Begin checkout _upstack('track', 'initiate_checkout', { items: [{ id: 'SKU123', name: 'Widget', price: 29.99, quantity: 1 }], value: 29.99, currency: 'USD' }); // Purchase (with deduplication ID) _upstack('track', 'purchase', { items: [{ id: 'SKU123', name: 'Widget', price: 29.99, quantity: 1 }], value: 29.99, order_id: 'ORD-456', currency: 'USD' }, 'ORD-456'); ``` ### Page Exit Tracking with Beacon Reliably track time on page even when the user closes the tab: ```javascript theme={null} let pageLoadTime = Date.now(); window.addEventListener('visibilitychange', () => { if (document.visibilityState === 'hidden') { const timeOnPage = Math.round((Date.now() - pageLoadTime) / 1000); _upstack('track', 'page_exit', { time_on_page_seconds: timeOnPage, page_path: window.location.pathname }, { useBeacon: true }); } }); ``` ### Form Submission Tracking Capture leads from newsletter signups: ```javascript theme={null} document.querySelector('#newsletter-form').addEventListener('submit', (e) => { e.preventDefault(); const email = e.target.querySelector('[name="email"]').value; // Identify the user _upstack('identify', null, { emails: [email] }); // Track the lead event with beacon (in case form navigates away) _upstack('track', 'lead', { source: 'newsletter_signup', email: email }, { useBeacon: true }); // Submit the form e.target.submit(); }); ``` *** ## TypeScript Support Add type declarations for TypeScript projects: ```typescript theme={null} declare global { interface Window { _upstack: (...args: unknown[]) => void; _upsqueue: unknown[]; _upsClient: { init: (pixelId: string, identityTraits?: EventIdentityTraits, scriptSource?: string) => Promise<{ isInitialized: boolean; isDisabled: boolean }>; page: (eventData?: Record<string, unknown>) => void; track: (eventName: string, eventData?: Record<string, unknown>, eventId?: string, contextOverride?: Record<string, unknown>, collectedAt?: string, collectedAtEpoch?: number, options?: TrackOptions) => void; identify: (userId?: string | null, data?: EventIdentityTraits) => void; metric: (metricName: string, metricValue: number, metricData?: Record<string, unknown>, metricId?: string) => null; reset: () => void; isKnown: () => Promise<boolean>; getUpstackId: () => Promise<UpstackId>; _initialized: boolean; }; } } interface EventIdentityTraits { emails?: string[]; phones?: string[]; firstName?: string; lastName?: string; address?: { city?: string; state?: string; zip?: string; country?: string; }; } interface TrackOptions { useBeacon?: boolean; } interface UpstackId { _upstackId?: string; _upstackSid?: string; _upstackIp?: string; } export {}; ``` *** ## Methods NOT Available The following methods are **not implemented** in the public SDK: * `consent` — Not implemented * `group` — Not implemented (stub exists) * `screen` — Not implemented (stub exists) * `alias` — Not implemented (stub exists) Internal methods (do not call directly): * `notify` — Internal hook messaging * `postInit` — Internal post-initialization ## Related Documentation <CardGroup> <Card title="Pixel Setup" icon="download" href="/pixel/setup"> Installation guide for non-Shopify websites and SPAs. </Card> <Card title="Standard Events" icon="list-check" href="/event-tracking/event-taxonomy/standard-events"> Complete reference for all standard events with JavaScript snippets. </Card> <Card title="Properties & Context" icon="table" href="/event-tracking/event-taxonomy"> Reference for item arrays, customer data, and auto-captured fields. </Card> <Card title="Custom Events" icon="sparkles" href="/guides/custom-events/how-to-create-custom-event-triggers"> Create events beyond the standard taxonomy for your needs. </Card> <Card title="Identity Resolution" icon="fingerprint" href="/pixel/identity-resolution"> How identify() connects sessions to customer profiles. </Card> <Card title="Shopify Automatic Tracking" icon="shopify" href="/sources/catalog/shopify-automatic-tracking"> Events tracked automatically on Shopify stores. </Card> </CardGroup> # How to Install the Upstack Data Tracking Pixel Source: https://docs.upstackdata.com/pixel/setup Install the Upstack Data pixel on any website in 5 minutes. Covers installation, verification, common tracking patterns, and identity capture. Get the Upstack pixel running on your site in under 5 minutes. This guide covers non-Shopify installations — if you're on Shopify, use the [Shopify app installation guide](/guides/shopify/how-to-download-and-install-upstack-data-app-in-shopify) instead. ## Installation Add this code snippet to every page you want to track, just before the closing `</head>` tag: ```html theme={null} <script> window._upstack = window._upstack || function() { (window._upsqueue = window._upsqueue || []).push(arguments); }; _upstack('init', 'YOUR_PIXEL_ID'); </script> <script async src="https://prod2-cdn.upstackified.com/scripts/px/ups.min.js"></script> ``` <Warning> Replace `YOUR_PIXEL_ID` with your actual pixel ID from the [Upstack dashboard](https://app.upstackdata.com). Your pixel ID starts with `px_`. </Warning> ### Where to Find Your Pixel ID 1. Log in to [app.upstackdata.com](https://app.upstackdata.com) 2. Navigate to **Settings** → **Pixel** 3. Copy your pixel ID (format: `px_abc123def456`) *** ## Where to Place the Code ### Standard Websites Place the snippet in your site's `<head>` section on every page: ```html theme={null} <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>My Store ``` ### Single Page Applications (SPAs) For React, Vue, Next.js, or other SPAs: 1. **Add the snippet once** in your main `index.html` or root layout 2. **Track route changes** manually (page views don't fire automatically on navigation) ```javascript theme={null} // React Router example import { useEffect } from 'react'; import { useLocation } from 'react-router-dom'; function usePageTracking() { const location = useLocation(); useEffect(() => { window._upstack('page'); }, [location.pathname]); } ``` ```javascript theme={null} // Next.js App Router example 'use client'; import { usePathname } from 'next/navigation'; import { useEffect } from 'react'; export function Analytics() { const pathname = usePathname(); useEffect(() => { window._upstack('page'); }, [pathname]); return null; } ``` ### Google Tag Manager If you prefer GTM, create a **Custom HTML** tag: 1. Create a new tag with type **Custom HTML** 2. Paste the installation snippet 3. Set trigger to **All Pages** (or your preferred trigger) 4. Publish the container *** ## Verifying Installation ### Browser Console Check Open your browser's developer console (F12) and run: ```javascript theme={null} // Check if pixel is loaded typeof window._upstack === 'function' // Should return: true // Check initialization status window._upsClient?._initialized // Should return: true (after init completes) // Check if queue exists Array.isArray(window._upsqueue) // Should return: true ``` ### Test a Page View Manually fire a page view and check the Network tab: ```javascript theme={null} window._upstack('page'); ``` Look for a request to `upstackified.com` or `upstackdata.com` in the Network tab. ### Pixel Helper Extension Install the [Upstack Pixel Helper](/guides/pixel-helper/how-to-install-upstack-data-pixel-helper) Chrome extension for real-time event monitoring without using the console. *** ## Quick Start: Common Tracking Patterns ### Track a Page View ```javascript theme={null} // Basic page view (auto-captures URL, title, referrer) window._upstack('page'); // With custom properties window._upstack('page', { page_category: 'product', collection: 'summer-2026' }); ``` ### Track a Product View ```javascript theme={null} window._upstack('track', 'view_content', { content_ids: ['PRODUCT_123'], content_name: 'Blue Running Shoes', content_type: 'product', value: 89.99, currency: 'USD' }); ``` ### Track Add to Cart ```javascript theme={null} window._upstack('track', 'add_to_cart', { content_ids: ['PRODUCT_123'], content_name: 'Blue Running Shoes', content_type: 'product', value: 89.99, currency: 'USD', num_items: 1 }); ``` ### Track a Purchase ```javascript theme={null} window._upstack('track', 'purchase', { content_ids: ['PRODUCT_123', 'PRODUCT_456'], value: 149.99, currency: 'USD', order_id: 'ORDER_789', num_items: 2 }); ``` Always include `order_id` for purchase events — it's used for deduplication across browser and server events. *** ## Identifying Users User identification improves match quality with ad platforms and enables cross-device tracking. ### Basic Identification ```javascript theme={null} // Identify with email only (most common) window._upstack('identify', null, { emails: ['customer@example.com'] }); // Identify with phone window._upstack('identify', null, { phones: ['+15551234567'] }); // Full identification window._upstack('identify', 'user_123', { emails: ['customer@example.com'], phones: ['+15551234567'], firstName: 'Jane', lastName: 'Doe' }); ``` **Important:** `emails` and `phones` are **arrays**, not single strings. This supports users with multiple contact methods. ### When to Identify Call `identify()` when you capture user information: * Newsletter signup form submission * Account registration * Checkout (when email is entered) * Login ```javascript theme={null} // Example: Newsletter form document.querySelector('#newsletter-form').addEventListener('submit', (e) => { const email = e.target.querySelector('[name="email"]').value; window._upstack('identify', null, { emails: [email] }); }); ``` *** ## Complete E-commerce Example Here's a full example tracking the customer journey: ```javascript theme={null} // 1. Page view (on every page load) window._upstack('page'); // 2. Product view (on product page) window._upstack('track', 'view_content', { content_ids: ['SKU-001'], content_name: 'Premium Widget', content_type: 'product', value: 49.99, currency: 'USD' }); // 3. Add to cart (on button click) document.querySelector('.add-to-cart').addEventListener('click', () => { window._upstack('track', 'add_to_cart', { content_ids: ['SKU-001'], content_name: 'Premium Widget', content_type: 'product', value: 49.99, currency: 'USD', num_items: 1 }); }); // 4. Begin checkout (on checkout page) window._upstack('track', 'initiate_checkout', { content_ids: ['SKU-001'], value: 49.99, currency: 'USD', num_items: 1 }); // 5. Identify user (when email captured at checkout) window._upstack('identify', null, { emails: ['customer@example.com'] }); // 6. Purchase (on thank-you page) window._upstack('track', 'purchase', { content_ids: ['SKU-001'], value: 49.99, currency: 'USD', order_id: 'ORD-12345', num_items: 1 }); ``` *** ## Troubleshooting ### Pixel Not Firing Open Network tab in DevTools and look for `ups.min.js`. If it's not loading: * Verify the script URL is correct * Check for ad blockers or privacy extensions * Ensure the snippet is in the ``, not blocked by CSP Run in console: ```javascript theme={null} console.log('_upstack exists:', typeof window._upstack === 'function'); console.log('_upsClient exists:', typeof window._upsClient === 'object'); console.log('Initialized:', window._upsClient?._initialized); ``` All should return `true` after the page loads. Ensure your pixel ID: * Starts with `px_` * Matches exactly what's in your dashboard * Has no extra spaces or characters Look for errors in the Console tab. Common issues: * Calling `_upstack` before defining the queue function * Syntax errors in your tracking code * Conflicts with other scripts ### Events Not Appearing in Dashboard Events can take 1-5 minutes to appear in the dashboard. Check the **Live Events** view for real-time data. Look for outgoing requests after firing an event. You should see a POST request to the tracking endpoint. Use standard event names like `page_view`, `view_content`, `add_to_cart`, `purchase`. Custom event names work but may not map to standard destination events. The pixel automatically filters bot traffic. If you're testing with automated tools, events may be ignored. ### Common Mistakes | Issue | Solution | | ----------------------------------------- | -------------------------------------------------------------- | | Using `upstack()` instead of `_upstack()` | The correct global is `window._upstack()` with underscore | | Passing `email` instead of `emails: []` | Identity fields use arrays: `{ emails: ['user@example.com'] }` | | Missing `currency` on purchase events | Always include `currency: 'USD'` (or your currency code) | | Missing `order_id` on purchases | Include for deduplication across browser/server events | | Not tracking SPA navigation | Call `_upstack('page')` on route changes | *** ## Related Documentation Full API documentation for all methods and options. Reference for all standard event types and their properties. Complete reference for item arrays, customer data, and auto-captured fields. How user identification enables cross-device tracking. Create events beyond the standard taxonomy for your needs. Send events to Meta, Google, TikTok, Klaviyo, and more. # Connect destinations Source: https://docs.upstackdata.com/quickstart/connect-a-destination Connect ad platforms and marketing tools as Upstack destinations to receive server-side conversion events with higher match quality. Destinations are the ad platforms and marketing tools that receive your conversion events. Upstack sends events server-side, bypassing browser restrictions and improving match quality. You connect once, and Upstack handles formatting, deduplication, and delivery for each platform. ## Destinations vs sources * **Destinations** receive conversion events (purchases, page views, add-to-carts) from Upstack for ad optimization * **Sources** pull ad spend and performance data *into* Upstack for unified reporting dashboards * Most platforms need both — a destination for conversion tracking and a source for spend data ## Available destinations Each destination has its own hub page with setup guides, event mapping, troubleshooting, and FAQs. Pick the platforms you use and follow the setup guide on each hub. Connect Meta's Conversions API for server-side event delivery to Facebook and Instagram Ads. Send purchase conversions to Google Ads with Smart Bidding-ready conversion goals. Forward events to TikTok Events API with token-based auth and click-ID matching. Sync enriched events and profiles to Klaviyo for abandonment flows and email/SMS automation. Connect Pinterest's Conversion API for server-side conversion tracking. Send conversion events to Snapchat's Conversion API for ad optimization. Forward events to Omnisend for email automation and customer profile enrichment. Stream events to any HTTPS endpoint for custom integrations and data warehousing. ## Connect sources for reporting To see ad spend and ROAS in the Upstack dashboard, connect your ad accounts as sources (data integrations). This pulls spend data into Upstack — it doesn't affect conversion tracking. Pull Facebook ad spend into Upstack for unified reporting. Pull Google Ads spend into Upstack for unified reporting. ## Next step Remove redundant browser-side tracking to prevent duplicate conversions. # Create an Upstack Data account Source: https://docs.upstackdata.com/quickstart/create-an-account Start a free 21-day trial at upstackdata.com — sign up, set up your workspace, and pick a plan in about five minutes. Signing up takes about five minutes and starts a **21-day free trial** — no charge until the trial ends. ## Start your free trial The button is in the top navigation. It takes you to [app.upstackdata.com/signup](https://app.upstackdata.com/signup) — you can also go there directly. Enter your email and choose a password, then click the verification link we send you. Enter your company name. It appears in the dashboard and on billing receipts. Pick the plan that fits your store volume — see [Plans and pricing](/billing/plans-and-pricing). You can change it later in billing settings. Your trial starts immediately. Your card isn't charged until the 21-day trial ends, and you can cancel anytime. **Already have an account?** Sign in at [app.upstackdata.com](https://app.upstackdata.com). If you installed Upstack Data from the Shopify App Store, your account was created during the install — sign in with that email. ## Next step Connect your store and start capturing events. # Install Upstack on Shopify Source: https://docs.upstackdata.com/quickstart/install-on-shopify Connect your Shopify store to Upstack from the Upstack dashboard and start capturing server-side events in under 10 minutes. Connect Shopify from inside the Upstack dashboard — not from the Shopify App Store. Sign in to Upstack, open **Data Sources → Shopify**, then authorize the install in your Shopify Admin. From there, enable the theme app extension, add the custom pixel, and verify events. **Prerequisite:** an active Upstack Data account. If you haven't already, [create your Upstack account](/quickstart/create-an-account) before continuing. Step-by-step walkthrough with screenshots covering all parts. ## Individual step guides Connect your Shopify store from the Upstack dashboard. Verify the theme app extension is active in your Shopify theme editor. Install the browser extension to debug pixel events in real time. Configure consent and privacy settings for the Upstack custom pixel. ## Headless Shopify If your storefront runs on Shopify Hydrogen, Next.js, Remix, or another custom framework, the theme app extension won't load. Use the Upstack JavaScript SDK instead. Install the Upstack pixel via CDN script or the `@upstackdata/pixel` npm package on Hydrogen, Next.js, Remix, and other custom storefronts. ## Alternative: Use the CLI Prefer working from the terminal? The Upstack CLI lets you query data, manage dashboards, and automate workflows without opening the web app. Install the `upstack` CLI and configure it with your API key and pixel ID. ## Next step Confirm your store is sending the right events and they appear in the dashboard. # Verify end-to-end delivery Source: https://docs.upstackdata.com/quickstart/verify-end-to-end Confirm the complete pipeline works — from storefront event to Upstack dashboard to a matched conversion in Meta Events Manager. You've installed the pixel, verified events, and connected Meta CAPI. Now run a single end-to-end test to confirm the full pipeline is working: a storefront action should flow through Upstack and arrive as a matched conversion in Meta. ## What you'll accomplish Trigger a real event on your Shopify store and trace it through every stage — from the Upstack Live Event Stream to Meta Events Manager — confirming that server-side conversion data is being delivered correctly. ## Prerequisites **Prerequisites:** * An active Shopify store * The Upstack Data app connected to your Shopify store * Your Pixel ID (found in the Upstack dashboard under Settings → Pixel) You should have completed [Connect destinations](/quickstart/connect-a-destination). ## Validation steps Open three tabs: 1. **Upstack Dashboard** — navigate to **Events → Live Event Stream** 2. **Meta Events Manager** — navigate to **Your Pixel → Test Events** and enter your storefront URL 3. **Your Shopify storefront** — use an incognito/private window for a clean session Using Meta's **Test Events** tab gives you real-time visibility into incoming server events. Events in Test Events show within seconds, while the main Overview tab can have a 20+ minute delay. On your Shopify storefront, perform a complete flow: 1. Visit a product page (generates `ViewContent`) 2. Add the product to cart (generates `AddToCart`) 3. Begin checkout (generates `InitiateCheckout`) 4. If possible, complete a test purchase using Shopify's [Bogus Gateway](https://help.shopify.com/en/manual/checkout-settings/test-orders) (generates `Purchase`) If you can't complete a test purchase, an `AddToCart` event is sufficient to validate the pipeline. The key is confirming the event appears in both Upstack and Meta. Switch to the Upstack Live Event Stream tab. Within a few seconds, you should see the events you just triggered. Click on an event to expand it and verify: * **Event type** matches your action (`AddToCart`, `Purchase`, etc.) * **Pixel ID** is correct * **User data** is populated (especially if you entered shipping details at checkout) * **Destination status** shows the event was forwarded to Meta Switch to Meta Events Manager → Test Events. You should see the corresponding server event within 2-5 minutes. Look for: * The event name matches (e.g., `AddToCart` or `Purchase`) * The source shows **Server** (not just Browser) * The event details include user data parameters like `em` (hashed email), `ph` (hashed phone) If you see the event from both Browser and Server sources but only counted once, deduplication is working correctly. ## You'll know it's working when Your end-to-end pipeline is validated when a single storefront action produces a matched event in both the Upstack Live Event Stream and Meta Events Manager. The Meta event should show **Server** as the source, include hashed user data parameters, and arrive within 5 minutes of the storefront action. If any step fails, refer back to the relevant earlier step: * Events not appearing in Upstack? See [Verify events are flowing](/quickstart/verify-events) * Events in Upstack but not Meta? See the troubleshooting section in [Connect destinations](/quickstart/connect-a-destination) ## Next step Your core pipeline is live. Explore what to do next — add more destinations, dive into attribution, or configure advanced identity resolution. ## Related Troubleshoot events visible in Upstack but not arriving at Meta, TikTok, or other destinations. Fix duplicate events, inflated revenue, and doubled conversion counts in your pipeline. Understand why your Meta Event Match Quality panel may show zero values and how to fix it. # Verify events are flowing Source: https://docs.upstackdata.com/quickstart/verify-events Confirm that your Shopify store is sending tracking events to the Upstack pipeline before connecting a destination. Before connecting a destination like Meta CAPI, take a minute to verify that your events are arriving correctly. This saves you from debugging destination issues that are actually source issues. ## What you'll accomplish Confirm that storefront actions generate events in the Upstack dashboard with the expected event types, URLs, and customer data. ## Prerequisites **Prerequisites:** * An active Shopify store * The Upstack Data app connected to your Shopify store * Your Pixel ID (found in the Upstack dashboard under Settings → Pixel) You should have already completed [Install Upstack on Shopify](/quickstart/install-on-shopify). ## Verification steps In the Upstack dashboard, navigate to **Events → Live Event Stream**. This view shows events arriving from your store in real time, with the most recent events at the top. Leave this tab open — you'll use it to confirm events as you trigger them. Open your Shopify storefront in a new browser tab (or incognito window for a clean session). Visit your store's homepage. Switch back to the Live Event Stream. Within a few seconds, you should see a `PageView` event appear with the URL of your homepage. Continue browsing your store to generate a range of events: | Action | Expected Event | | --------------------- | ------------------ | | View a product page | `ViewContent` | | Add a product to cart | `AddToCart` | | Begin checkout | `InitiateCheckout` | Verify each event appears in the stream with the correct event type and a populated URL. Click on any event in the Live Event Stream to expand its details. Confirm the payload includes: * **Pixel ID** — matches the Pixel ID shown in Settings → Pixel * **Event type** — correct for the action you took * **Page URL** — matches the page you visited * **Timestamp** — recent and in the correct timezone * **User data** — if you're logged in as a customer, look for email or customer ID fields ## You'll know it's working when You should see at least three different event types (`PageView`, `ViewContent`, `AddToCart`) in the Live Event Stream, each with a valid payload containing your Pixel ID, a page URL, and a recent timestamp. If events appear within seconds of your storefront actions, your pipeline is healthy. **Missing events?** If you see `PageView` events but not `AddToCart` or `ViewContent`, your Shopify theme may be missing standard event hooks. Check **Shopify Admin → Online Store → Themes → Customize → App Embeds** and ensure Upstack Data is enabled. See [No events appear in the dashboard](/troubleshooting/no-events-appear-in-dashboard) for more. ## Next step Now that events are flowing into Upstack, connect Meta as your first destination and start sending high-quality server-side conversions to your ad account. ## Related Learn how to use the Upstack Pixel Helper browser extension to inspect events firing on your storefront. Install the Upstack Pixel Helper browser extension to debug pixel events in real time. Troubleshoot missing events in your Upstack dashboard — covers pixel installation, browser blockers, and theme conflicts. # Metrics Reference Source: https://docs.upstackdata.com/reference/metrics Complete reference for 985 Upstack metrics. Formulas, examples, and best practices for attribution, revenue, advertising, website events, and data quality. Upstack tracks 985 metrics across your entire marketing and e-commerce stack—from Shopify orders to ad platform performance to website engagement. Use this reference to understand what each metric measures, how it's calculated, and how to use it for analysis. ## Browse by Category **296 metrics** — Awareness, engagement, attributed conversions, and sessions. **359 metrics** — Spend, ROAS, CPA across Meta, Google, TikTok, and Blended. **314 metrics** — Orders, revenue, AOV, and profitability. **16 metrics** — Event match quality and tracking health. ## Category Overview | Category | Metrics | Status | Data Source | | ----------------------------------------------- | ------- | ----------- | ----------------------- | | [Funnel](/reference/metrics/funnel) | 296 | ✅ Available | Upstack Pixel + Shopify | | [Advertising](/reference/metrics/advertising) | 359 | ✅ Available | Ad Platforms | | [Revenue & Orders](/reference/metrics/orders) | 314 | ✅ Available | Shopify | | [Data Quality](/reference/metrics/data-quality) | 16 | ✅ Available | Upstack Pixel | ### Advertising Platform Breakdown | Platform | Metrics | Status | | ------------------------------------------------------- | ------- | ----------- | | [Meta Ads](/reference/metrics/advertising/meta-ads) | 126 | ✅ Available | | [Google Ads](/reference/metrics/advertising/google-ads) | 24 | ✅ Available | | [TikTok Ads](/reference/metrics/advertising/tiktok-ads) | 76 | ✅ Available | | [Blended](/reference/metrics/advertising/blended) | 133 | ✅ Available | ## Getting Started **New to Upstack metrics?** Here's where to start based on what you're trying to do: Start with **[Funnel Metrics](/reference/metrics/funnel)**—specifically [Conversions](/reference/metrics/funnel/conversions/conversions) and [Conversion Value](/reference/metrics/funnel/conversions/conversion-value). These show attributed conversions across all your marketing channels. Then explore **[Advertising Metrics](/reference/metrics/advertising)** to see platform-specific performance like [Meta ROAS](/reference/metrics/advertising/meta-ads/meta-return-on-ad-spend) and [Meta CPA](/reference/metrics/advertising/meta-ads/meta-cost-per-acquisition). Go directly to **[Advertising Metrics](/reference/metrics/advertising)** → **[Meta Efficiency](/reference/metrics/advertising/meta-ads)**. Key metrics include ROAS, CPA, and cost-per-purchase. Compare with **[Meta Spend](/reference/metrics/advertising/meta-ads)** to understand budget consumption. Start with **[Meta Audience](/reference/metrics/advertising/meta-ads)**—Reach, Impressions, Frequency, and CPM help you understand who you're reaching and at what cost. See **[Meta Clicks](/reference/metrics/advertising/meta-ads)** for CTR, CPC, landing page views, and click costs. This subcategory has 18 metrics covering all click types. ## How Metrics Work Upstack calculates metrics from three primary data sources: 1. **Shopify** — Order data, revenue, customer information, and profitability. 2. **Ad Platforms** — Spend, impressions, clicks, and conversions from Meta, Google, TikTok. 3. **Upstack Pixel** — First-party tracking for page views, sessions, add-to-carts, and conversions with identity resolution. Metrics are aggregated by your selected date range and can be filtered by traffic source, device, campaign, or UTM parameters. ## Next Steps * **[Funnel Metrics →](/reference/metrics/funnel)** — Start with attribution basics * **[Advertising Metrics →](/reference/metrics/advertising)** — Dive into ad platform performance # Advertising Metrics: Track Ad Performance Across Platforms Source: https://docs.upstackdata.com/reference/metrics/advertising Track advertising performance across Meta, Google, TikTok, and blended views. View 359 metrics including ROAS, CPA, CTR, spend, and conversions with formulas and benchmarks. Advertising metrics measure your paid marketing performance across channels. These platform-reported metrics come directly from ad platform APIs and help you evaluate spend efficiency, audience reach, engagement, and campaign ROI. Use these alongside [Funnel metrics](/reference/metrics/funnel) for a complete picture of attributed vs. platform-reported performance. **Data Source:** Ad Platform APIs (Meta, Google, TikTok)\ **Metrics in Category:** 359 ## Platforms | Platform | Metrics | Description | | ------------------------------------------------------- | ------- | --------------------------------------------- | | [Meta Ads](/reference/metrics/advertising/meta-ads) | 126 | Facebook & Instagram advertising performance | | [Google Ads](/reference/metrics/advertising/google-ads) | 24 | Search, Display, Shopping & YouTube campaigns | | [TikTok Ads](/reference/metrics/advertising/tiktok-ads) | 76 | TikTok video advertising performance | | [Blended](/reference/metrics/advertising/blended) | 133 | Cross-platform aggregated metrics | ## When to Use | Goal | Platform | Key Metrics | | ---------------------------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Optimize Meta campaigns** | Meta Ads | [Meta ROAS](/reference/metrics/advertising/meta-ads/meta-return-on-ad-spend), [Meta CPA](/reference/metrics/advertising/meta-ads/meta-cost-per-acquisition), [Meta CTR](/reference/metrics/advertising/meta-ads/meta-click-through-rate) | | **Track search performance** | Google Ads | Google ROAS, Google CPC, Google Conversions | | **Measure video engagement** | TikTok Ads | TikTok Video Views, TikTok CTR, TikTok CPA | | **Compare across platforms** | Blended | Blended ROAS, Blended CPA, Total Ad Spend | *** ## Meta Ads Comprehensive metrics from Meta (Facebook & Instagram) covering spend, audience, clicks, efficiency, conversions, engagement, and video performance. → [View All Meta Metrics](/reference/metrics/advertising/meta-ads) | Subcategory | Metrics | Description | | ----------------------------------------------------------- | ------- | ------------------------------------------ | | [Meta Spend](/reference/metrics/advertising/meta-ads) | 1 | Budget consumption tracking | | [Meta Audience](/reference/metrics/advertising/meta-ads) | 4 | Reach, impressions, frequency, CPM | | [Meta Clicks](/reference/metrics/advertising/meta-ads) | 18 | CTR, CPC, link clicks, landing page views | | [Meta Efficiency](/reference/metrics/advertising/meta-ads) | 7 | ROAS, CPA, cost-per-purchase ratios | | [Meta Conversions](/reference/metrics/advertising/meta-ads) | 32 | Purchases, leads, registrations, checkouts | | [Meta Engagement](/reference/metrics/advertising/meta-ads) | 18 | Likes, comments, shares, reactions, saves | | [Meta Video](/reference/metrics/advertising/meta-ads) | 15 | Views, completion rates, ThruPlay metrics | ### Key Meta Metrics | Metric | Subcategory | Description | | ---------------------------------------------------------------------------------- | ----------- | -------------------------------------- | | [Meta ROAS](/reference/metrics/advertising/meta-ads/meta-return-on-ad-spend) | Efficiency | Return on ad spend from Meta campaigns | | [Meta CPA](/reference/metrics/advertising/meta-ads/meta-cost-per-acquisition) | Efficiency | Cost per acquisition | | [Meta Ad Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Spend | Total budget consumed | | [Meta CTR](/reference/metrics/advertising/meta-ads/meta-click-through-rate) | Clicks | Click-through rate | | [Meta Purchases](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Conversions | Platform-reported purchase count | | [Meta Impressions](/reference/metrics/advertising/meta-ads/meta-impressions) | Audience | Number of ad impressions | | [Meta Reach](/reference/metrics/advertising/meta-ads/meta-reach) | Audience | Unique people reached | *** ## Google Ads Metrics from Google Ads covering Search, Display, Shopping, and YouTube campaign performance. → [View All Google Metrics](/reference/metrics/advertising/google-ads) | Subcategory | Metrics | Description | | ------------------ | ------- | -------------------------------------- | | Google Spend | 1 | Budget consumption tracking | | Google Clicks | 6 | Clicks, CTR, CPC across campaign types | | Google Efficiency | 4 | ROAS, CPA, cost-per-conversion | | Google Conversions | 11 | Purchase, lead, and action conversions | *** ## TikTok Ads Metrics from TikTok Ads Manager for video advertising performance and conversion tracking. → [View All TikTok Metrics](/reference/metrics/advertising/tiktok-ads) | Subcategory | Metrics | Description | | ------------------ | ------- | ----------------------------------- | | TikTok Spend | 1 | Budget consumption tracking | | TikTok Clicks | 8 | Clicks, CTR, CPC | | TikTok Efficiency | 4 | ROAS, CPA ratios | | TikTok Conversions | 18 | Purchase and action conversions | | TikTok Video | 30 | Video views, watch time, completion | *** ## Blended Metrics Cross-platform aggregated metrics for unified advertising performance analysis. Blended metrics combine data from Meta, Google, and TikTok into single views for holistic campaign evaluation. → [View All Blended Metrics](/reference/metrics/advertising/blended) | Subcategory | Metrics | Description | | ------------------- | ------- | ------------------------------ | | Blended Spend | 4 | Total and per-platform spend | | Blended Efficiency | 12 | Cross-platform ROAS, CPA, MER | | Blended Conversions | 8 | Aggregated conversion counts | | Blended Audience | 6 | Combined reach and impressions | ### Key Blended Metrics | Metric | Description | | -------------------------------- | ------------------------------------------------ | | Blended ROAS | Combined return on ad spend across all platforms | | Blended CPA | Average cost per acquisition across platforms | | Total Ad Spend | Sum of all platform advertising spend | | MER (Marketing Efficiency Ratio) | Revenue divided by total marketing spend | *** ## Platform vs. Attributed Metrics Understanding the difference between advertising metrics and funnel metrics: | Aspect | Advertising Metrics | Funnel Metrics | | --------------- | --------------------------- | ---------------------------------------------------------------- | | **Source** | Ad platform APIs | Upstack attribution | | **Attribution** | Platform-specific models | Cross-channel attribution | | **Example** | Meta Purchases | [Conversions](/reference/metrics/funnel/conversions/conversions) | | **Use Case** | Optimize platform campaigns | Understand true channel value | **Best Practice:** Compare platform-reported conversions (advertising metrics) with attributed conversions (funnel metrics) to understand how each platform's attribution model differs from cross-channel reality. # Blended Advertising Metrics Source: https://docs.upstackdata.com/reference/metrics/advertising/blended Cross-platform advertising metrics aggregated across Meta, Google, and TikTok. Track total spend, reach, and efficiency without switching between ad platforms. Blended metrics aggregate advertising data from all connected ad platforms—Meta, Google, and TikTok—into unified performance views. Instead of checking each platform separately, see total spend, combined reach, and overall efficiency in one place. **Data Sources:** [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok)\ **Total Metrics:** 134\ **Action Metric Groups:** 24 ## How These Metrics Are Organized Blended metrics are split into two groups: * **Core metrics** (52) — spend, audience, clicks, efficiency, and video metrics that live directly under this channel * **Action metric groups** (24) — per-action folders pairing a conversion or engagement event with its value and cost-per-action metrics ### Action Metric Groups | Group | Metrics | Covers | | ------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------- | | [Purchases](/reference/metrics/advertising/blended/purchases) | 2 | Purchase count and revenue value | | [Conversions](/reference/metrics/advertising/blended/conversions) | 3 | Conversion events, value, and cost per conversion | | [All Conversions](/reference/metrics/advertising/blended/all-conversions) | 3 | All conversion actions, value, and cost | | [View-Through Conversions](/reference/metrics/advertising/blended/view-through-conversions) | 2 | Conversions after ad view and cost | | [Add to Carts](/reference/metrics/advertising/blended/add-to-carts) | 3 | Add-to-cart events, value, and cost | | [Add to Wishlists](/reference/metrics/advertising/blended/add-to-wishlists) | 3 | Wishlist additions, value, and cost | | [Initiate Checkouts](/reference/metrics/advertising/blended/initiate-checkouts) | 3 | Checkout starts, value, and cost | | [Leads](/reference/metrics/advertising/blended/leads) | 3 | Lead submissions, value, and cost | | [App Installs](/reference/metrics/advertising/blended/app-installs) | 3 | Mobile app installs, value, and cost | | [Application Submissions](/reference/metrics/advertising/blended/application-submissions) | 3 | Application submissions, value, and cost | | [Appointments Scheduled](/reference/metrics/advertising/blended/appointments-scheduled) | 3 | Booked appointments, value, and cost | | [Completed Registrations](/reference/metrics/advertising/blended/completed-registrations) | 3 | Account sign-ups, value, and cost | | [Start Trials](/reference/metrics/advertising/blended/start-trials) | 1 | Cost per trial start | | [Trial Starts](/reference/metrics/advertising/blended/trial-starts) | 2 | Trial starts and value | | [Subscriptions](/reference/metrics/advertising/blended/subscriptions) | 3 | Subscription sign-ups, value, and cost | | [Searches](/reference/metrics/advertising/blended/searches) | 3 | On-site searches, value, and cost | | [View Contents](/reference/metrics/advertising/blended/view-contents) | 3 | Product page views, value, and cost | | [Engagements](/reference/metrics/advertising/blended/engagements) | 2 | All social interactions and cost | | [Likes](/reference/metrics/advertising/blended/likes) | 2 | Like actions and cost per like | | [Reactions](/reference/metrics/advertising/blended/reactions) | 2 | Emoji reactions and cost per reaction | | [Comments](/reference/metrics/advertising/blended/comments) | 2 | Comment count and cost per comment | | [Shares](/reference/metrics/advertising/blended/shares) | 2 | Share count and cost per share | | [Saves](/reference/metrics/advertising/blended/saves) | 1 | Save/bookmark count | | [Post Saves](/reference/metrics/advertising/blended/post-saves) | 1 | Cost per post save | ## Why Use Blended Metrics * **Unified view**: See total marketing performance without platform-switching * **Budget analysis**: Track combined spend and efficiency across all channels * **Cross-platform reach**: Understand total audience exposure * **Simplified reporting**: Export single metrics instead of platform-by-platform data ## How Blended Metrics Work Blended metrics aggregate data from each connected ad platform: 1. **Meta Ads** — Campaign, ad set, and ad-level data via Marketing API 2. **Google Ads** — Campaign performance via Google Ads API 3. **TikTok Ads** — Campaign data via TikTok Marketing API Data is pulled daily and aggregated at the metric level. Platform-specific breakdowns remain available in their respective metric categories. # Blended Add To Carts Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/add-to-carts All Blended metrics for add-to-carts — volume, value, and cost in one place. Metrics for add to carts across your Blended campaigns: * [Blended Add to Carts: Cross-Platform Shopping Intent](/reference/metrics/advertising/blended/add-to-carts/blended-add-to-carts) * [Blended Add to Carts Value: Cross-Platform Cart Value](/reference/metrics/advertising/blended/add-to-carts/blended-add-to-carts-value) * [Blended Cost per Add to Cart: Cross-Platform ATC Efficiency](/reference/metrics/advertising/blended/add-to-carts/blended-cost-per-add-to-cart) # Blended Add to Carts: Cross-Platform Shopping Intent Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/add-to-carts/blended-add-to-carts Track add-to-cart events attributed to your ads across Meta, Google, and TikTok. Measure shopping intent driven by cross-platform advertising. Blended Add to Carts measures the total number of add-to-cart events attributed to your ads across all connected advertising platforms. ## Formula **Blended Add to Carts** = **SUM** ( Add to Cart Events ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [**Meta Add to Carts**](/reference/metrics/advertising/meta-ads/add-to-carts/meta-add-to-carts) | Add-to-cart events attributed to Meta Ads campaigns | | **Google Add to Carts** | Add-to-cart events attributed to Google Ads campaigns | | [**TikTok Add to Carts**](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts) | Add-to-cart events attributed to TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example A DTC brand running campaigns across three platforms sees **2,847 add to carts** for the week: | Platform | Add to Carts | % of Total | | ----------------- | ------------ | ---------- | | Meta Ads | 1,523 | 53.5% | | Google Ads | 892 | 31.3% | | TikTok Ads | 432 | 15.2% | | **Blended Total** | **2,847** | **100%** | *** ## How It Works Blended Add to Carts aggregates add-to-cart conversion events reported by each advertising platform. When a user clicks an ad and adds a product to their cart within the attribution window, that platform counts the event. This metric sums those events across all connected platforms for a unified view. *** ## When to Use | Scenario | Action | | ---------------------------------------- | --------------------------------------------- | | Measuring cross-platform shopping intent | Compare blended add to carts to total traffic | | Evaluating funnel health | Track ratio of add to carts to checkouts | | Optimizing for consideration | Use to measure mid-funnel ad effectiveness | | Budgeting across platforms | Identify which platforms drive cart activity | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------ | ----------------------------------------- | | [Blended View Contents](/reference/metrics/advertising/blended/view-contents/blended-view-contents) | Earlier funnel stage — product page views | | [Blended Initiate Checkouts](/reference/metrics/advertising/blended/initiate-checkouts/blended-initiate-checkouts) | Next funnel stage — checkout starts | | [Blended Purchases](/reference/metrics/advertising/blended/purchases/blended-purchases) | Final funnel stage — completed orders | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Add to Carts Value: Cross-Platform Cart Value Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/add-to-carts/blended-add-to-carts-value Track the total monetary value of items added to cart attributed to your ads across Meta, Google, and TikTok. Measure cross-platform cart performance. Blended Add to Carts Value measures the total monetary value of items added to cart attributed to your advertising across all connected ad platforms. ## Formula **Blended Add to Carts Value** = **SUM** ( Cart Value ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | **Meta Add to Carts Value** | Monetary value of items added to cart from Meta ads | | **Google Add to Carts Value** | Monetary value of items added to cart from Google ads | | [**TikTok Add to Carts Value**](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts-value) | Monetary value of items added to cart from TikTok ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your ads drove **\$24,500 in cart value** this week across all platforms: | Platform | Add to Carts Value | % of Total | | ----------------- | ------------------ | ---------- | | Meta Ads | \$14,200 | 58% | | Google Ads | \$7,100 | 29% | | TikTok Ads | \$3,200 | 13% | | **Blended Total** | **\$24,500** | 100% | *** ## How It Works Blended Add to Carts Value aggregates the monetary value of all add-to-cart events attributed to your advertising across Meta, Google, and TikTok. Each platform reports the value based on their own attribution windows and models. This metric helps you understand the total cart value your ads are generating before checkout. *** ## When to Use | Scenario | Action | | ---------------------------------------- | ------------------------------------------------- | | Measuring total ad-attributed cart value | Compare blended value against total ad spend | | Identifying high-value product interest | Analyze which campaigns drive highest cart values | | Forecasting potential revenue | Use cart value to predict checkout conversion | | Comparing platform performance | Break down by platform to see value contribution | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------- | | [Blended Add to Carts](/reference/metrics/advertising/blended/add-to-carts/blended-add-to-carts) | Count of add-to-cart events; this metric shows their value | | [Blended Purchases Value](/reference/metrics/advertising/blended/purchases/blended-purchases-value) | Revenue from completed purchases | | [Blended Initiate Checkouts Value](/reference/metrics/advertising/blended/initiate-checkouts/blended-initiate-checkouts-value) | Value of checkout starts | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Cost per Add to Cart: Cross-Platform ATC Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/add-to-carts/blended-cost-per-add-to-cart Track your blended cost per add to cart across Meta, Google, and TikTok ads. Measure cross-platform efficiency for cart actions. Blended Cost per Add to Cart measures how much you spend across all ad platforms to generate one add-to-cart event. ## Formula **Blended Cost per Add to Cart** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Add to Carts**](/reference/metrics/advertising/blended/add-to-carts/blended-add-to-carts) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected ad platforms | | [**Blended Add to Carts**](/reference/metrics/advertising/blended/add-to-carts/blended-add-to-carts) | Total add-to-cart events attributed across all ad platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$15,000** across all ad platforms last month and generated **3,000** add-to-cart events. | Metric | Value | | -------------------------------- | ---------- | | Blended Spend | \$15,000 | | Blended Add to Carts | 3,000 | | **Blended Cost per Add to Cart** | **\$5.00** | *** ## How It Works Blended Cost per Add to Cart divides your total advertising spend across Meta, Google, and TikTok by the total add-to-cart events attributed to those platforms. This gives you a unified view of how efficiently your combined ad spend drives cart actions, regardless of which platform generated them. *** ## When to Use | Scenario | Action | | --------------------------- | ---------------------------------------------------------------------------------------- | | Budget allocation | Compare blended cost per ATC against platform-specific costs to identify efficiency gaps | | Funnel optimization | Track how cost per cart action changes relative to cost per purchase | | Campaign scaling | Monitor if increased spend maintains efficient cost per cart action | | Cross-platform benchmarking | Evaluate overall ad efficiency without platform-specific bias | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | -------------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total ad spend across platforms | | [Blended Add to Carts](/reference/metrics/advertising/blended/add-to-carts/blended-add-to-carts) | Denominator — total cart events across platforms | | Blended Cost per Purchase | Downstream efficiency — cost to convert cart to purchase | | [Blended ROAS](/reference/metrics/advertising/blended/blended-return-on-ad-spend) | Revenue efficiency — return on combined ad spend | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Add To Wishlists Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/add-to-wishlists All Blended metrics for add-to-wishlists — volume, value, and cost in one place. Metrics for add to wishlists across your Blended campaigns: * [Blended Add to Wishlists: Cross-Platform Wishlist Intent](/reference/metrics/advertising/blended/add-to-wishlists/blended-add-to-wishlists) * [Blended Add to Wishlists Value: Cross-Platform Wishlist Value](/reference/metrics/advertising/blended/add-to-wishlists/blended-add-to-wishlists-value) * [Blended Cost per Add to Wishlist: Cross-Platform Wishlist Efficiency](/reference/metrics/advertising/blended/add-to-wishlists/blended-cost-per-wishlist) # Blended Add to Wishlists: Cross-Platform Wishlist Intent Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/add-to-wishlists/blended-add-to-wishlists Track wishlist additions attributed to your ads across Meta, Google, and TikTok. Measure consideration intent and optimize cross-platform campaigns. Blended Add to Wishlists measures the total number of wishlist additions attributed to your ads across all connected advertising platforms. ## Formula **Blended Add to Wishlists** = **SUM** ( Wishlist Events ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | **Meta Add to Wishlists** | Wishlist additions attributed to Meta Ads campaigns | | **Google Add to Wishlists** | Wishlist additions attributed to Google Ads campaigns | | [**TikTok Add to Wishlists**](/reference/metrics/advertising/tiktok-ads/add-to-wishlists/tiktok-add-to-wishlists) | Wishlist additions attributed to TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example A fashion brand running campaigns across three platforms sees **1,847 wishlist additions** for the week: | Platform | Wishlists | % of Total | | ----------------- | --------- | ---------- | | Meta Ads | 1,024 | 55.4% | | Google Ads | 512 | 27.7% | | TikTok Ads | 311 | 16.9% | | **Blended Total** | **1,847** | **100%** | *** ## How It Works Blended Add to Wishlists aggregates wishlist addition events reported by each advertising platform. When a user clicks or views an ad and then adds a product to their wishlist within the attribution window, that platform counts the event. This metric sums those events across all connected platforms for a unified view of consideration intent. *** ## When to Use | Scenario | Action | | ------------------------------- | --------------------------------------------------- | | Measuring consideration intent | Track users who save products for later purchase | | Comparing platform performance | See which channels drive the most wishlist activity | | Optimizing mid-funnel campaigns | Identify ads that generate high-intent engagement | | Forecasting future purchases | Wishlist users often convert within 30 days | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------- | ------------------------------------ | | [Blended View Contents](/reference/metrics/advertising/blended/view-contents/blended-view-contents) | Previous funnel step before wishlist | | [Blended Add to Carts](/reference/metrics/advertising/blended/add-to-carts/blended-add-to-carts) | Next funnel step after wishlist | | [Blended Purchases](/reference/metrics/advertising/blended/purchases/blended-purchases) | Final conversion from wishlist users | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Add to Wishlists Value: Cross-Platform Wishlist Value Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/add-to-wishlists/blended-add-to-wishlists-value Track the total monetary value of items added to wishlists attributed to your ads across Meta, Google, and TikTok. Measure cross-platform wishlist performance. Blended Add to Wishlists Value measures the total monetary value of products saved to wishlists attributed to your advertising across all connected ad platforms. ## Formula **Blended Add to Wishlists Value** = **SUM** ( Wishlist Value ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | **Meta Add to Wishlists Value** | Monetary value of items added to wishlists from Meta ads | | **Google Add to Wishlists Value** | Monetary value of items added to wishlists from Google ads | | [**TikTok Add to Wishlists Value**](/reference/metrics/advertising/tiktok-ads/add-to-wishlists/tiktok-add-to-wishlists-value) | Monetary value of items added to wishlists from TikTok ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your ads drove **\$18,750 in wishlist value** this week across all platforms: | Platform | Wishlist Value | % of Total | | ----------------- | -------------- | ---------- | | Meta Ads | \$10,200 | 54% | | Google Ads | \$5,400 | 29% | | TikTok Ads | \$3,150 | 17% | | **Blended Total** | **\$18,750** | 100% | *** ## How It Works Blended Add to Wishlists Value aggregates the monetary value of all wishlist addition events attributed to your advertising across Meta, Google, and TikTok. Each platform reports the value based on their own attribution windows and models. This metric helps you understand the total potential value of products users are saving for future purchase. *** ## When to Use | Scenario | Action | | --------------------------------------- | ----------------------------------------------------- | | Measuring total saved-item value | Compare wishlist value against total ad spend | | Identifying high-value product interest | Analyze which campaigns drive highest wishlist values | | Forecasting potential revenue | Use wishlist value to predict future conversions | | Comparing platform performance | Break down by platform to see value contribution | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [Blended Add to Wishlists](/reference/metrics/advertising/blended/add-to-wishlists/blended-add-to-wishlists) | Count of wishlist events; this metric shows their value | | [Blended Cost per Wishlist](/reference/metrics/advertising/blended/add-to-wishlists/blended-cost-per-wishlist) | Cost efficiency for generating wishlist additions | | [Blended Add to Carts Value](/reference/metrics/advertising/blended/add-to-carts/blended-add-to-carts-value) | Value of items added to cart (next funnel stage) | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Cost per Add to Wishlist: Cross-Platform Wishlist Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/add-to-wishlists/blended-cost-per-wishlist Track your blended cost per wishlist addition across Meta, Google, and TikTok ads. Measure cross-platform efficiency for wishlist actions. Blended Cost per Add to Wishlist measures how much you spend on average across all ad platforms to generate one add-to-wishlist event. ## Formula **Blended Cost per Add to Wishlist** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Add to Wishlists**](/reference/metrics/advertising/blended/add-to-wishlists/blended-add-to-wishlists) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected ad platforms | | [**Blended Add to Wishlists**](/reference/metrics/advertising/blended/add-to-wishlists/blended-add-to-wishlists) | Total wishlist events attributed across all ad platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your fashion brand spent **\$12,000** across all ad platforms last month and generated **2,400** wishlist additions. | Metric | Value | | ------------------------------------ | ---------- | | Blended Spend | \$12,000 | | Blended Add to Wishlists | 2,400 | | **Blended Cost per Add to Wishlist** | **\$5.00** | *** ## How It Works Blended Cost per Add to Wishlist divides your total advertising spend across Meta, Google, and TikTok by the total add-to-wishlist events attributed to those platforms. This gives you a unified view of how efficiently your combined ad spend drives consideration-stage actions, regardless of which platform generated them. *** ## When to Use | Scenario | Action | | --------------------------- | --------------------------------------------------------------------------------------------- | | Budget allocation | Compare blended cost per wishlist against platform-specific costs to identify efficiency gaps | | Funnel optimization | Track how cost per wishlist changes relative to cost per add-to-cart | | Campaign scaling | Monitor if increased spend maintains efficient cost per wishlist action | | Cross-platform benchmarking | Evaluate overall ad efficiency for mid-funnel engagement without platform bias | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total ad spend across platforms | | [Blended Add to Wishlists](/reference/metrics/advertising/blended/add-to-wishlists/blended-add-to-wishlists) | Denominator — total wishlist events across platforms | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Cost per acquisition — measures cost to drive final conversions | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended All Conversions Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/all-conversions All Blended metrics for all-conversions — volume, value, and cost in one place. Metrics for all conversions across your Blended campaigns: * [Blended All Conversions: Total Conversions Across Platforms](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions) * [Blended All Conversions Value: Total Revenue Across Platforms](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions-value) * [Blended Cost per All Conversions: True Acquisition Cost](/reference/metrics/advertising/blended/all-conversions/blended-cost-per-all-conversion) # Blended All Conversions: Total Conversions Across Platforms Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/all-conversions/blended-all-conversions Track total conversions across Meta, Google, and TikTok Ads. Measure aggregate conversion volume including purchases, leads, and registrations. Blended All Conversions measures the total count of all conversions attributed to your advertising across Meta, Google, and TikTok combined. ## Formula **Blended All Conversions** = **SUM** ( [Conversions](/reference/metrics/advertising/blended/conversions) ) **ACROSS** Meta + Google + TikTok ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | | [**Meta Conversions**](/reference/metrics/advertising/meta-ads) | Conversions attributed to Meta Ads campaigns | | [**Google All Conversions**](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions) | Conversions attributed to Google Ads campaigns | | [**TikTok Conversions**](/reference/metrics/advertising/tiktok-ads) | Conversions attributed to TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your advertising drove **2,847 total conversions** across all platforms in March. | Platform | Conversions | % of Total | | ----------------- | ----------- | ---------- | | Meta | 1,423 | 50.0% | | Google | 987 | 34.7% | | TikTok | 437 | 15.3% | | **Blended Total** | **2,847** | **100%** | *** ## How It Works Blended All Conversions aggregates the total conversion count from each advertising platform into a single metric. Each platform reports conversions based on their own attribution models—purchases, leads, registrations, sign-ups, and other configured goals. The blended total gives you a unified view of ad-driven actions without manual aggregation. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------------------ | | Measuring total ad-driven actions | Track blended conversions to see aggregate volume | | Comparing platform contribution | Break down by platform to see conversion distribution | | Calculating overall CPA | Divide total spend by blended conversions for true cost per action | | Executive reporting | Present unified conversion count across all paid channels | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | | [Blended All Conversions Value](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions-value) | Total monetary value of these conversions | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Blended Spend ÷ Blended All Conversions | | [Blended Purchases](/reference/metrics/advertising/blended/purchases/blended-purchases) | Subset counting only purchase conversions | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended All Conversions Value: Total Revenue Across Platforms Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/all-conversions/blended-all-conversions-value Track total conversion value across Meta, Google, and TikTok Ads. Measure aggregate revenue attributed to advertising across all platforms. Blended All Conversions Value measures the total monetary value of all conversions attributed to your advertising across Meta, Google, and TikTok combined. ## Formula **Blended All Conversions Value** = **SUM** ( Conversion Value ) **ACROSS** Meta + Google + TikTok ### Formula Components | Metric | Definition | | ------------------------------ | --------------------------------------------------- | | **Meta All Conversions Value** | Total value of conversions attributed to Meta Ads | | **Google Conversions Value** | Total value of conversions attributed to Google Ads | | **TikTok Conversions Value** | Total value of conversions attributed to TikTok Ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your store's advertising generated **\$87,500** in total conversion value last month across all platforms. | Platform | Conversions Value | % of Total | | ----------------- | ----------------- | ---------- | | Meta | \$52,000 | 59.4% | | Google | \$28,500 | 32.6% | | TikTok | \$7,000 | 8.0% | | **Blended Total** | **\$87,500** | **100%** | *** ## How It Works Blended All Conversions Value aggregates the conversion values reported by each advertising platform into a single metric. Each platform reports the monetary value of conversions based on their own attribution models and tracking. The blended total gives you a unified view of revenue attributed to paid advertising without manual aggregation. *** ## When to Use | Scenario | Action | | ----------------------------------- | ---------------------------------------------------------- | | Measuring total advertising revenue | Track blended value to understand aggregate performance | | Comparing platform contribution | Break down by platform to see revenue distribution | | Setting advertising budgets | Use blended value to determine total ad-attributed revenue | | Executive reporting | Present unified conversion value across all paid channels | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Total cost across platforms — compare to conversion value for efficiency | | [Blended ROAS](/reference/metrics/advertising/blended/blended-return-on-ad-spend) | Blended All Conversions Value ÷ Blended Spend | | [Blended All Conversions](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions) | Total number of conversions (not value) | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Cost per All Conversions: True Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/all-conversions/blended-cost-per-all-conversion Track your cost per all conversions across advertising channels. Includes cross-device and view-through conversions for complete acquisition cost analysis. Blended Cost per All Conversions measures the average cost for each conversion attributed to your advertising across all platforms, including cross-device and view-through conversions. ## Formula **Blended Cost per All Conversions** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended All Conversions**](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected platforms | | [**Blended All Conversions**](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions) | Total conversions including cross-device and view-through across all channels | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$25,000** across all advertising channels in May and generated **1,850 all conversions** (including click-through, view-through, and cross-device conversions). | Channel | Spend | All Conversions | Cost/All Conv. | | ----------- | ------------ | --------------- | -------------- | | Meta | \$12,500 | 920 | \$13.59 | | Google | \$8,500 | 640 | \$13.28 | | TikTok | \$4,000 | 290 | \$13.79 | | **Blended** | **\$25,000** | **1,850** | **\$13.51** | *** ## How It Works Blended Cost per All Conversions aggregates total ad spend and all conversion events from Meta, Google, and TikTok, then calculates the average cost per conversion. Unlike standard cost-per-conversion which counts only click-attributed conversions, this metric includes cross-device conversions (user clicks on mobile, converts on desktop) and view-through conversions (user sees an ad but converts without clicking). *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------------------- | | Measuring true acquisition cost | Include all conversion types for complete cost analysis | | Evaluating view-through ad impact | Capture conversions from users who saw but didn't click ads | | Cross-device customer journeys | Account for customers who switch devices before converting | | Full-funnel campaign measurement | Get accurate cost metrics for awareness and consideration campaigns | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total ad spend across platforms | | [Blended All Conversions](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions) | Denominator — total conversions including view-through and cross-device | | [Blended Cost per Conversion](/reference/metrics/advertising/blended/conversions/blended-cost-per-conversion) | Click-attributed conversions only (excludes view-through) | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended App Installs Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/app-installs All Blended metrics for app-installs — volume, value, and cost in one place. Metrics for app installs across your Blended campaigns: * [Blended App Installs: Cross-Platform Mobile Downloads](/reference/metrics/advertising/blended/app-installs/blended-app-installs) * [Blended App Installs Value: Cross-Platform Install Revenue](/reference/metrics/advertising/blended/app-installs/blended-app-installs-value) * [Blended Cost per App Install: Cross-Platform Acquisition Efficiency](/reference/metrics/advertising/blended/app-installs/blended-cost-per-app-install) # Blended App Installs: Cross-Platform Mobile Downloads Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/app-installs/blended-app-installs Track total mobile app installs attributed to your ads across Meta, Google, and TikTok. Measure app acquisition performance. Blended App Installs measures the total number of mobile app downloads attributed to your advertising across all connected platforms. ## Formula **Blended App Installs** = **SUM** ( App Install Events ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [**Meta App Installs**](/reference/metrics/advertising/meta-ads/app-installs/meta-app-installs) | App installs attributed to Meta Ads campaigns | | **Google App Installs** | App installs attributed to Google Ads campaigns | | [**TikTok App Installs**](/reference/metrics/advertising/tiktok-ads/app-installs/tiktok-app-installs) | App installs attributed to TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your app campaign drove **2,847 installs** in March across platforms: | Platform | App Installs | Share | | ----------------- | ------------ | ----- | | Meta Ads | 1,423 | 50% | | Google Ads | 998 | 35% | | TikTok Ads | 426 | 15% | | **Blended Total** | **2,847** | 100% | With a total ad spend of **\$14,235**, your blended cost per install is **\$5.00**. *** ## How It Works App installs are counted when a user downloads your mobile app after clicking or viewing an ad. Each platform reports installs based on their attribution window—typically 7 days for click-through and 1 day for view-through. Blended App Installs aggregates these counts to show total acquisition volume across your entire paid media mix. *** ## When to Use | Scenario | Action | | ----------------------------------- | ---------------------------------------------------------- | | Measuring app acquisition campaigns | Track total installs across all platforms | | Comparing platform efficiency | Pair with cost per app install to find lowest cost channel | | Forecasting growth | Use install trends to project user acquisition | | Budget allocation | Shift spend toward platforms driving more installs | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | | [Blended Cost per App Install](/reference/metrics/advertising/blended/app-installs/blended-cost-per-app-install) | Cost efficiency for each app download | | [Blended Completed Registrations](/reference/metrics/advertising/blended/completed-registrations/blended-completed-registrations) | In-app signups after install | | [Blended Leads](/reference/metrics/advertising/blended/leads/blended-leads) | Lead generation conversions | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended App Installs Value: Cross-Platform Install Revenue Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/app-installs/blended-app-installs-value Track the total assigned value of app installs attributed to your ads across Meta, Google, and TikTok. Measure cross-platform app monetization. Blended App Installs Value measures the total monetary value of app installs attributed to your advertising across all connected ad platforms. ## Formula **Blended App Installs Value** = **SUM** ( App Install Value ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ----------------------------- | ------------------------------------------------------- | | **Meta App Installs Value** | Monetary value assigned to app installs from Meta ads | | **Google App Installs Value** | Monetary value assigned to app installs from Google ads | | **TikTok App Installs Value** | Monetary value assigned to app installs from TikTok ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your app campaigns generated **\$28,470 in attributed value** this month across platforms: | Platform | App Installs Value | % of Total | | ----------------- | ------------------ | ---------- | | Meta Ads | \$15,650 | 55% | | Google Ads | \$9,100 | 32% | | TikTok Ads | \$3,720 | 13% | | **Blended Total** | **\$28,470** | 100% | With **2,847 total installs**, your average value per install is **\$10.00**. *** ## How It Works App install value is determined by the conversion value you assign in each advertising platform. This could represent average lifetime value (LTV), subscription revenue, or in-app purchase estimates. Blended App Installs Value aggregates these values across all platforms to show the total attributed revenue potential from your app acquisition campaigns. *** ## When to Use | Scenario | Action | | ------------------------------------------- | ----------------------------------------------------- | | Measuring app campaign ROI | Compare install value against total ad spend | | Identifying high-value acquisition channels | Break down by platform to find highest-value installs | | Forecasting lifetime value | Use install values to project long-term revenue | | Optimizing for value vs volume | Balance high-value installs with install count | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Blended App Installs](/reference/metrics/advertising/blended/app-installs/blended-app-installs) | Count of installs; this metric shows their value | | [Blended Cost per App Install](/reference/metrics/advertising/blended/app-installs/blended-cost-per-app-install) | Cost efficiency for each app download | | [Blended Purchases Value](/reference/metrics/advertising/blended/purchases/blended-purchases-value) | Revenue from completed purchases | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Cost per App Install: Cross-Platform Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/app-installs/blended-cost-per-app-install Track your blended cost per app install (CPI) across Meta, Google, and TikTok. Measure mobile acquisition efficiency and optimize your app install campaigns. Blended Cost per App Install measures the average cost to acquire one mobile app install across all your advertising platforms combined. ## Formula **Blended Cost per App Install** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended App Installs**](/reference/metrics/advertising/blended/app-installs/blended-app-installs) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across Meta, Google, and TikTok combined | | [**Blended App Installs**](/reference/metrics/advertising/blended/app-installs/blended-app-installs) | Total app installs attributed across all advertising platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your app campaigns spent **\$15,000** across all platforms and generated **3,000 installs** in March. | Platform | Spend | App Installs | CPI | | ----------- | ------------ | ------------ | ---------- | | Meta Ads | \$8,000 | 1,800 | \$4.44 | | Google Ads | \$5,000 | 900 | \$5.56 | | TikTok Ads | \$2,000 | 300 | \$6.67 | | **Blended** | **\$15,000** | **3,000** | **\$5.00** | *** ## How It Works Blended CPI aggregates your total advertising spend and total app installs across Meta, Google, and TikTok, then calculates the average cost per install. This gives you a single efficiency metric that accounts for your entire mobile acquisition budget regardless of which platform drove the install. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------------------------- | | Setting acquisition budgets | Use blended CPI to establish target cost thresholds for mobile campaigns | | Comparing to industry benchmarks | Compare your overall CPI against category averages without platform bias | | Executive reporting | Report a single efficiency metric that represents total mobile acquisition cost | | Evaluating media mix | Identify if shifting budget between platforms would lower overall CPI | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | --------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total cost driving app installs | | [Blended App Installs](/reference/metrics/advertising/blended/app-installs/blended-app-installs) | Denominator — total installs acquired | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Similar efficiency metric for all conversions | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Application Submissions Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/application-submissions All Blended metrics for application-submissions — volume, value, and cost in one place. Metrics for application submissions across your Blended campaigns: * [Blended Application Submissions: Applications Across All Platforms](/reference/metrics/advertising/blended/application-submissions/blended-application-submissions) * [Blended Application Submissions Value: Total Application Value](/reference/metrics/advertising/blended/application-submissions/blended-application-submissions-value) * [Blended Cost per Application: Cross-Platform Application Acquisition Cost](/reference/metrics/advertising/blended/application-submissions/blended-cost-per-application) # Blended Application Submissions: Applications Across All Platforms Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/application-submissions/blended-application-submissions Track application form submissions across Meta, Google, and TikTok Ads. Measure job applications, loan applications, and other application events attributed to ads. Blended Application Submissions measures the total count of application form completions attributed to your advertising across Meta, Google, and TikTok combined. ## Formula **Blended Application Submissions** = **SUM** ( Application Events ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ---------------------------------- | ----------------------------------------------------- | | **Meta Application Submissions** | Application events attributed to Meta Ads campaigns | | **Google Application Submissions** | Application events attributed to Google Ads campaigns | | **TikTok Application Submissions** | Application events attributed to TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaigns drove **1,247 total application submissions** across all platforms in February. | Platform | Applications | % of Total | | ----------------- | ------------ | ---------- | | Meta | 623 | 50.0% | | Google | 437 | 35.0% | | TikTok | 187 | 15.0% | | **Blended Total** | **1,247** | **100%** | *** ## How It Works Blended Application Submissions aggregates application form completion events from each advertising platform into a single metric. Application events include job applications, loan applications, insurance quote requests, college applications, and other form submissions configured as application goals. Each platform attributes applications based on their own attribution windows and models. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------- | | Measuring lead generation volume | Track blended applications for total applicant pipeline | | Comparing platform effectiveness | Break down by platform to optimize budget allocation | | Calculating cost per application | Divide total spend by blended applications for true CPA | | Recruitment or lending campaigns | Monitor application flow across all paid channels | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [Blended All Conversions](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions) | Broader metric including all conversion types | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Blended Spend ÷ Blended All Conversions | | [Blended Leads](/reference/metrics/advertising/blended/leads/blended-leads) | Related lead generation metric across platforms | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Application Submissions Value: Total Application Value Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/application-submissions/blended-application-submissions-value Track the total monetary value of application submissions attributed to your ads across Meta, Google, and TikTok. Measure cross-platform application value. Blended Application Submissions Value measures the total assigned monetary value of application form completions attributed to your advertising across all connected ad platforms. ## Formula **Blended Application Submissions Value** = **SUM** ( Application Value ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ---------------------------------------- | ---------------------------------------------------- | | **Meta Application Submissions Value** | Assigned value of application events from Meta ads | | **Google Application Submissions Value** | Assigned value of application events from Google ads | | **TikTok Application Submissions Value** | Assigned value of application events from TikTok ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaigns generated **\$187,500 in application value** this quarter across all platforms: | Platform | Applications | Avg Value | Total Value | | ----------------- | ------------ | --------- | ------------- | | Meta Ads | 450 | \$150 | \$67,500 | | Google Ads | 600 | \$125 | \$75,000 | | TikTok Ads | 300 | \$150 | \$45,000 | | **Blended Total** | **1,350** | **\$139** | **\$187,500** | *** ## How It Works Blended Application Submissions Value aggregates the assigned monetary value of all application form completions attributed to your advertising across Meta, Google, and TikTok. Application values are typically set when configuring conversion events in each ad platform, representing the estimated worth of a completed application (e.g., loan application value, job applicant value, or insurance quote value). *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------------- | | Measuring lead generation ROI | Compare total application value against ad spend | | Evaluating platform efficiency | Identify which platforms drive highest-value applications | | Optimizing high-value campaigns | Focus budget on campaigns generating the most application value | | Calculating value-based CPA | Divide application value by applications for average value per lead | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [Blended Application Submissions](/reference/metrics/advertising/blended/application-submissions/blended-application-submissions) | Count of applications; this metric shows their value | | [Blended All Conversions Value](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions-value) | Broader metric including value from all conversion types | | [Blended Leads](/reference/metrics/advertising/blended/leads/blended-leads) | Related lead generation count metric | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Cost per Application: Cross-Platform Application Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/application-submissions/blended-cost-per-application Track your blended cost per application submission across Meta, Google, and TikTok ads. Measure application acquisition efficiency with unified metrics. Blended Cost per Application measures how much you spend on average to drive each application submission through your ads across all advertising platforms combined. ## Formula **Blended Cost per Application** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Application Submissions**](/reference/metrics/advertising/blended/application-submissions/blended-application-submissions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected ad platforms | | [**Blended Application Submissions**](/reference/metrics/advertising/blended/application-submissions/blended-application-submissions) | Total application form completions attributed across all ad platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your recruitment campaign spent **\$12,000** across all ad platforms last month and generated **480 job applications**. | Metric | Value | | -------------------------------- | ----------- | | Blended Spend | \$12,000 | | Blended Application Submissions | 480 | | **Blended Cost per Application** | **\$25.00** | At **\$25 per application**, you can evaluate whether your cross-platform recruitment advertising is cost-effective compared to industry benchmarks or your target acquisition costs. *** ## How It Works Blended Cost per Application aggregates total advertising spend from Meta, Google, and TikTok, then divides by the total number of application submissions attributed to those platforms. This provides a unified view of application acquisition efficiency across your entire paid media mix. *** ## When to Use | Scenario | Action | | ------------------------------------------ | ------------------------------------------------------------------------ | | Evaluating recruitment campaign efficiency | Compare blended cost per application against your target hiring cost | | Budget planning for application campaigns | Use this metric to forecast spend needed for application volume goals | | Benchmarking against industry standards | Compare your blended cost per application to industry averages | | Identifying efficiency trends | Track cost per application over time to spot improvements or degradation | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total ad spend across platforms | | [Blended Application Submissions](/reference/metrics/advertising/blended/application-submissions/blended-application-submissions) | Denominator — total applications across platforms | | [Blended Cost per Lead](/reference/metrics/advertising/blended/leads/blended-cost-per-lead) | Similar efficiency metric for leads instead of applications | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Appointments Scheduled Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/appointments-scheduled All Blended metrics for appointments-scheduled — volume, value, and cost in one place. Metrics for appointments scheduled across your Blended campaigns: * [Blended Appointments Scheduled: Aggregated Booking Conversions](/reference/metrics/advertising/blended/appointments-scheduled/blended-appointments-scheduled) * [Blended Appointments Value: Total Value of Ad-Attributed Bookings](/reference/metrics/advertising/blended/appointments-scheduled/blended-appointments-value) * [Blended Cost per Appointment: Cross-Platform Booking Acquisition Cost](/reference/metrics/advertising/blended/appointments-scheduled/blended-cost-per-appointment) # Blended Appointments Scheduled: Aggregated Booking Conversions Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/appointments-scheduled/blended-appointments-scheduled Track appointments scheduled across Meta, Google, and TikTok ads. View aggregated booking conversions attributed to your advertising campaigns. Blended Appointments Scheduled measures the total number of appointment or booking events attributed to your ads across all connected advertising platforms. ## Formula **Blended Appointments Scheduled** = **SUM** ( Appointment Events ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | --------------------------------- | -------------------------------------- | | **Meta Appointments Scheduled** | Appointments from Meta Ads campaigns | | **Google Appointments Scheduled** | Appointments from Google Ads campaigns | | **TikTok Appointments Scheduled** | Appointments from TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaigns drove **847 appointments** scheduled this month: | Platform | Appointments | % of Total | | ----------- | ------------ | ---------- | | Meta Ads | 423 | 50% | | Google Ads | 296 | 35% | | TikTok Ads | 128 | 15% | | **Blended** | **847** | **100%** | *** ## How It Works Blended Appointments Scheduled counts every appointment booking event attributed to your advertising across Meta, Google, and TikTok. Each platform's conversion tracking captures scheduling events, which are then aggregated into this single metric for a unified view of booking performance. *** ## When to Use | Scenario | Action | | -------------------------------- | -------------------------------------------------- | | Measuring lead gen performance | Track booking volume across all ad platforms | | Comparing channel efficiency | Identify which platform drives the most bookings | | Calculating cost per appointment | Divide total spend by appointments scheduled | | Optimizing campaign targeting | Allocate budget toward highest-converting channels | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | | [Blended Leads](/reference/metrics/advertising/blended/leads/blended-leads) | Broader lead metric that includes appointments | | [Blended Completed Registrations](/reference/metrics/advertising/blended/completed-registrations/blended-completed-registrations) | Related conversion event for signups | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Cost per acquisition for these conversions | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Appointments Value: Total Value of Ad-Attributed Bookings Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/appointments-scheduled/blended-appointments-value Track the total value of appointments scheduled across Meta, Google, and TikTok ads. Measure booking revenue impact from your advertising campaigns. Blended Appointments Value measures the total assigned monetary value of appointments or bookings attributed to your advertising across all connected ad platforms. ## Formula **Blended Appointments Value** = **SUM** ( Appointment Value ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ----------------------------- | ----------------------------------------------------------------- | | **Meta Appointments Value** | Assigned value of appointments attributed to Meta Ads campaigns | | **Google Appointments Value** | Assigned value of appointments attributed to Google Ads campaigns | | **TikTok Appointments Value** | Assigned value of appointments attributed to TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your booking campaigns generated **\$28,350** in attributed appointment value last month: | Platform | Appointments Value | % of Total | | ----------------- | ------------------ | ---------- | | Meta Ads | \$15,592 | 55% | | Google Ads | \$8,505 | 30% | | TikTok Ads | \$4,253 | 15% | | **Blended Total** | **\$28,350** | 100% | *** ## How It Works Blended Appointments Value aggregates the assigned monetary value of appointment bookings attributed to your ads across Meta, Google, and TikTok. Each platform reports its attributed appointment value based on your configured conversion tracking, and Upstack combines them into a single cross-platform view. *** ## When to Use | Scenario | Action | | -------------------------------- | ----------------------------------------------------------- | | Measuring booking revenue impact | Compare attributed value against spend for appointment ROAS | | Budget allocation decisions | Identify which platforms drive the highest-value bookings | | Service pricing optimization | Evaluate if appointment values justify acquisition costs | | Performance reporting | Show stakeholders total booking value driven by advertising | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------- | | [Blended Appointments Scheduled](/reference/metrics/advertising/blended/appointments-scheduled/blended-appointments-scheduled) | Count of appointments; this metric shows their value | | [Blended Cost per Appointment](/reference/metrics/advertising/blended/appointments-scheduled/blended-cost-per-appointment) | Cost to acquire each appointment | | [Blended Leads](/reference/metrics/advertising/blended/leads/blended-leads) | Broader lead metric that may include appointment bookings | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Cost per Appointment: Cross-Platform Booking Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/appointments-scheduled/blended-cost-per-appointment Track your blended cost per appointment across Meta, Google, and TikTok ads. Measure booking acquisition efficiency with unified cost per appointment metrics. Blended Cost per Appointment measures how much you spend on average to drive each appointment or booking through your ads across all advertising platforms combined. ## Formula **Blended Cost per Appointment** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Appointments Scheduled**](/reference/metrics/advertising/blended/appointments-scheduled/blended-appointments-scheduled) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected ad platforms | | [**Blended Appointments Scheduled**](/reference/metrics/advertising/blended/appointments-scheduled/blended-appointments-scheduled) | Total appointment bookings attributed across all ad platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your business spent **\$12,000** across all ad platforms last month and scheduled **300 appointments**. | Metric | Value | | -------------------------------- | ----------- | | Blended Spend | \$12,000 | | Blended Appointments Scheduled | 300 | | **Blended Cost per Appointment** | **\$40.00** | At **\$40 per appointment**, you can evaluate whether your cross-platform booking strategy is cost-effective compared to your target acquisition costs or the lifetime value of booked customers. *** ## How It Works Blended Cost per Appointment aggregates total advertising spend from Meta, Google, and TikTok, then divides by the total number of appointments attributed to those platforms. This provides a unified view of appointment acquisition efficiency without platform-specific silos. *** ## When to Use | Scenario | Action | | -------------------------------------------- | ------------------------------------------------------------------------------ | | Evaluating appointment generation efficiency | Compare blended cost per appointment against your target booking cost | | Budget planning for booking campaigns | Use cost per appointment to forecast spend needed for appointment volume goals | | Benchmarking against service value | Compare cost per appointment to average revenue per booked customer | | Identifying efficiency trends | Track cost per appointment over time to spot improvements or degradation | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total ad spend across platforms | | [Blended Appointments Scheduled](/reference/metrics/advertising/blended/appointments-scheduled/blended-appointments-scheduled) | Denominator — total appointments across platforms | | [Blended Cost per Lead](/reference/metrics/advertising/blended/leads/blended-cost-per-lead) | Similar efficiency metric for leads instead of appointments | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended 100% Video Completion Rate: Full Watch Performance Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-100-percent-completion-rate Track the percentage of video ad views that reached 100% completion across all advertising channels. Measure full video engagement. Blended 100% Video Completion Rate measures the percentage of video ad views where viewers watched the entire video to completion across all advertising channels. ## Formula **Blended 100% Video Completion Rate** = [**100% Video Views**](/reference/metrics/advertising/blended/blended-video-views-100-percent) ÷ [**Video Views**](/reference/metrics/advertising/blended/blended-video-views) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------- | | [**Blended 100% Video Views**](/reference/metrics/advertising/blended/blended-video-views-100-percent) | The number of video views that reached 100% completion across all channels | | [**Blended Video Views**](/reference/metrics/advertising/blended/blended-video-views) | Total number of video ad views across all channels | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your video ads generated **50,000 total video views** last month, with **12,500 viewers** watching to 100% completion across all channels. | Metric | Value | | ------------------------ | ------- | | 100% Video Views | 12,500 | | Total Video Views | 50,000 | | **100% Completion Rate** | **25%** | A 25% completion rate means one in four viewers watched your entire video ad across all platforms. *** ## How It Works This metric aggregates video completion data from all connected advertising platforms (Meta, Google, TikTok, etc.) to show what percentage of viewers watch your videos to the end. A higher 100% completion rate indicates strong content that holds viewer attention throughout the entire video. *** ## When to Use | Scenario | Action | | ------------------------------------- | --------------------------------------------------------------------------------------- | | Evaluating video creative performance | Compare 100% completion rates across different video ads to identify top performers | | Optimizing video length | If completion rates are low, test shorter video formats | | Cross-platform comparison | Use blended view to see overall performance before drilling into platform-specific data | | Assessing content quality | High completion rates indicate engaging content that resonates with your audience | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [Blended 100% Video Views](/reference/metrics/advertising/blended/blended-video-views-100-percent) | The numerator — count of views reaching 100% | | [Blended 75% Video Completion Rate](/reference/metrics/advertising/blended/blended-75-percent-completion-rate) | Previous quartile — viewers who watched at least 75% | | [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-thruplay-views) | Views played to completion or at least 15 seconds | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended 25% Video Completion Rate: Early Viewer Retention Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-25-percent-completion-rate Track the percentage of video ad views that reached 25% completion across all advertising channels. Measure early content retention. Blended 25% Video Completion Rate measures the percentage of video ad views where viewers watched at least 25% of the video across all advertising channels. ## Formula **Blended 25% Video Completion Rate** = [**25% Video Views**](/reference/metrics/advertising/blended/blended-video-views-25-percent) ÷ [**Video Views**](/reference/metrics/advertising/blended/blended-video-views) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | | [**Blended 25% Video Views**](/reference/metrics/advertising/blended/blended-video-views-25-percent) | The number of video views that reached 25% completion across all channels | | [**Blended Video Views**](/reference/metrics/advertising/blended/blended-video-views) | Total number of video ad views across all channels | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your video ads generated **80,000 total video views** last month, with **64,000 viewers** watching at least 25% of your video across all channels. | Metric | Value | | ----------------------- | ------- | | 25% Video Views | 64,000 | | Total Video Views | 80,000 | | **25% Completion Rate** | **80%** | An 80% completion rate at the 25% mark indicates strong opening hooks across your video creatives. *** ## How It Works This metric aggregates video view data from all connected advertising platforms (Meta, Google, TikTok) to show what percentage of viewers watch at least 25% of your videos. A high 25% completion rate indicates that your video openings effectively capture viewer attention in the critical first moments. *** ## When to Use | Scenario | Action | | ----------------------------------- | ------------------------------------------------------------------------------------------- | | Evaluating video hook effectiveness | Compare 25% completion rates across different video ads to identify the strongest openers | | Diagnosing early drop-off | Low 25% rates indicate viewers are skipping before engaging with your content | | Cross-platform comparison | Use blended view to see overall early retention before drilling into platform-specific data | | Creative testing | A/B test video intros and measure impact on 25% completion rates | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Blended 25% Video Views](/reference/metrics/advertising/blended/blended-video-views-25-percent) | The numerator — count of views reaching 25% | | [Blended 50% Completion Rate](/reference/metrics/advertising/blended/blended-50-percent-completion-rate) | Next quartile — viewers who watched at least 50% | | [Blended Video Views](/reference/metrics/advertising/blended/blended-video-views) | The denominator — total video views | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended 50% Video Completion Rate: Midpoint Watch Performance Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-50-percent-completion-rate Track the percentage of video ad views that reached 50% completion across all advertising channels. Measure midpoint video engagement. Blended 50% Video Completion Rate measures the percentage of video ad views where viewers watched at least the midpoint of the video across all advertising channels. ## Formula **Blended 50% Video Completion Rate** = [**50% Video Views**](/reference/metrics/advertising/blended/blended-video-views-50-percent) ÷ [**Video Views**](/reference/metrics/advertising/blended/blended-video-views) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | | [**Blended 50% Video Views**](/reference/metrics/advertising/blended/blended-video-views-50-percent) | The number of video views that reached 50% completion across all channels | | [**Blended Video Views**](/reference/metrics/advertising/blended/blended-video-views) | Total number of video ad views across all channels | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your video ads generated **100,000 total video views** last month, with **45,000 viewers** watching to the 50% mark across all channels. | Metric | Value | | ----------------------- | ------- | | 50% Video Views | 45,000 | | Total Video Views | 100,000 | | **50% Completion Rate** | **45%** | A 45% completion rate means nearly half of your viewers watched at least the midpoint of your video ads across all platforms. *** ## How It Works This metric aggregates video completion data from all connected advertising platforms (Meta, Google, TikTok, etc.) to show what percentage of viewers watch at least half of your video. The 50% mark is a key indicator of content engagement—viewers who reach this point are meaningfully engaged with your message. *** ## When to Use | Scenario | Action | | ------------------------------------- | --------------------------------------------------------------------------------------- | | Evaluating video creative performance | Compare 50% completion rates across different video ads to identify engaging content | | Identifying content drop-off | If 50% rates are low but 25% rates are high, the middle section needs improvement | | Cross-platform comparison | Use blended view to see overall performance before drilling into platform-specific data | | Optimizing video length | Low 50% completion may indicate videos are too long or lose momentum | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [Blended 50% Video Views](/reference/metrics/advertising/blended/blended-video-views-50-percent) | The numerator — count of views reaching 50% | | [Blended 25% Video Completion Rate](/reference/metrics/advertising/blended/blended-25-percent-completion-rate) | Previous quartile — viewers who watched at least 25% | | [Blended 75% Video Completion Rate](/reference/metrics/advertising/blended/blended-75-percent-completion-rate) | Next quartile — viewers who watched at least 75% | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended 75% Video Completion Rate: High Engagement Performance Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-75-percent-completion-rate Track the percentage of video ad views that reached 75% completion across all advertising channels. Measure near-complete video engagement. Blended 75% Video Completion Rate measures the percentage of video ad views where viewers watched at least 75% of the video across all advertising channels. ## Formula **Blended 75% Video Completion Rate** = [**75% Video Views**](/reference/metrics/advertising/blended/blended-video-views-75-percent) ÷ [**Video Views**](/reference/metrics/advertising/blended/blended-video-views) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | | [**Blended 75% Video Views**](/reference/metrics/advertising/blended/blended-video-views-75-percent) | The number of video views that reached at least 75% completion across all channels | | [**Blended Video Views**](/reference/metrics/advertising/blended/blended-video-views) | Total number of video ad views across all channels | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your video ads generated **80,000 total video views** last month, with **28,000 viewers** watching at least 75% of the video across all channels. | Metric | Value | | ----------------------- | ------- | | 75% Video Views | 28,000 | | Total Video Views | 80,000 | | **75% Completion Rate** | **35%** | A 35% completion rate means more than one in three viewers watched at least three-quarters of your video ad across all platforms. *** ## How It Works This metric aggregates video completion data from all connected advertising platforms (Meta, Google, TikTok, etc.) to show what percentage of viewers watch at least 75% of your videos. A higher 75% completion rate indicates strong content that holds viewer attention through most of the video—viewers are highly engaged and likely receiving your full message. *** ## When to Use | Scenario | Action | | -------------------------------------- | --------------------------------------------------------------------------------------- | | Evaluating creative effectiveness | Compare 75% completion rates across different video ads to identify top performers | | Measuring near-complete engagement | Track this metric when full completion (100%) is less critical than substantial viewing | | Cross-platform benchmarking | Use blended view to see overall performance before drilling into platform-specific data | | Optimizing for consideration campaigns | High 75% rates indicate strong mid-funnel content that educates and engages | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | [Blended 75% Video Views](/reference/metrics/advertising/blended/blended-video-views-75-percent) | The numerator — count of views reaching 75% | | [Blended 50% Video Completion Rate](/reference/metrics/advertising/blended/blended-50-percent-completion-rate) | Lower engagement threshold — viewers who watched at least half | | [Blended 100% Video Completion Rate](/reference/metrics/advertising/blended/blended-100-percent-completion-rate) | Higher engagement threshold — viewers who watched to completion | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended All Conversions ROAS: Cross-Platform Return on Ad Spend Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-all-conversions-return-on-ad-spend Measure aggregated ROAS across Meta, Google, and TikTok including all conversion types. Formula, examples, and optimization strategies. Return on ad spend calculated from all conversion types—including cross-device and view-through conversions—aggregated across all ad platforms. ## Formula **Blended All Conversions ROAS** = [**Blended All Conversions Value**](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions-value) ÷ [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [**Blended All Conversions Value**](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions-value) | Total revenue from all conversion types across platforms | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total ad spend aggregated across all platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Multiplier | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns show **3.8x** blended all conversions ROAS this month: | Metric | Value | | -------------------------------- | --------- | | Blended All Conversions Value | \$152,000 | | Blended Spend | \$40,000 | | **Blended All Conversions ROAS** | **3.8x** | This includes view-through and cross-device conversions that standard ROAS may miss. *** ## How It Works Blended All Conversions ROAS divides total conversion value—including cross-device and view-through conversions—by total ad spend across Meta, Google, and TikTok. This provides a comprehensive view of advertising efficiency that captures the full customer journey across devices and touchpoints. *** ## When to Use | Scenario | Action | | -------------------------------------- | ---------------------------------------------- | | Measuring total advertising efficiency | Compare all conversions ROAS vs standard ROAS | | Evaluating view-through impact | Quantify revenue from non-click conversions | | Cross-device attribution | Capture conversions that span multiple devices | | Executive reporting | Report holistic marketing ROI to stakeholders | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [Blended ROAS](/reference/metrics/advertising/blended/blended-return-on-ad-spend) | Click-attributed conversions only (narrower scope) | | [Blended Conversions ROAS](/reference/metrics/advertising/blended/blended-conversions-return-on-ad-spend) | Similar metric with different conversion window | | [Blended All Conversions Value](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions-value) | Numerator in this calculation | [See all Blended Efficiency metrics →](/reference/metrics/advertising/blended) # Blended CTR: Click-Through Rate Across All Channels Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-click-through-rate Track your blended click-through rate across Meta, Google, and TikTok ads. Learn how CTR measures ad engagement and what benchmarks to target. Blended CTR measures the percentage of impressions that resulted in a click across all your advertising channels. ## Formula **Blended CTR** = ( [**Blended Clicks**](/reference/metrics/advertising/blended/blended-clicks) ÷ [**Blended Impressions**](/reference/metrics/advertising/blended/blended-impressions) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------- | ------------------------------------------------- | | [**Blended Clicks**](/reference/metrics/advertising/blended/blended-clicks) | Total clicks across Meta, Google, and TikTok ads | | [**Blended Impressions**](/reference/metrics/advertising/blended/blended-impressions) | Total impressions across all advertising channels | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns delivered **2,450,000 impressions** and **36,750 clicks** across all channels last month: | Metric | Value | | ------------------- | --------- | | Blended Impressions | 2,450,000 | | Blended Clicks | 36,750 | | **Blended CTR** | **1.50%** | *** ## How It Works Blended CTR aggregates clicks and impressions from Meta, Google, and TikTok, then calculates the overall click-through rate. This gives you a single view of ad engagement across your entire paid media mix. *** ## When to Use | Scenario | Action | | ------------------------ | ----------------------------------------------- | | Evaluating ad engagement | Compare to industry benchmarks (1-2% typical) | | Testing new creative | Monitor CTR changes after launching variations | | Budget allocation | Identify which channels drive higher engagement | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------- | ------------------------------ | | [Blended Clicks](/reference/metrics/advertising/blended/blended-clicks) | Numerator in CTR calculation | | [Blended Impressions](/reference/metrics/advertising/blended/blended-impressions) | Denominator in CTR calculation | | [Blended CPC](/reference/metrics/advertising/blended/blended-cost-per-click) | Cost efficiency of each click | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended Clicks: Total Ad Clicks Across All Platforms Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-clicks Track total clicks on your ads across Meta, Google, and TikTok. Measure cross-platform engagement and benchmark click performance. Blended Clicks measures the total number of clicks on your ads across all connected advertising platforms, including all click types. ## Formula **Blended Clicks** = **SUM** ( Clicks ) **ACROSS** all platforms ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | -------------------------------- | | [**Meta Clicks**](/reference/metrics/advertising/meta-ads/meta-clicks) | Clicks from Meta Ads campaigns | | [**Google Clicks**](/reference/metrics/advertising/google-ads/google-clicks) | Clicks from Google Ads campaigns | | [**TikTok Clicks**](/reference/metrics/advertising/tiktok-ads/tiktok-clicks) | Clicks from TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your brand received **45,200 clicks** across all platforms in February: | Platform | Clicks | % of Total | | ----------- | ---------- | ---------- | | Meta Ads | 28,500 | 63% | | Google Ads | 11,300 | 25% | | TikTok Ads | 5,400 | 12% | | **Blended** | **45,200** | **100%** | *** ## How It Works Blended Clicks aggregates click data from all connected ad platforms into a single metric. Each platform reports clicks differently—Meta includes various in-app interactions, Google counts Search and Display clicks, and TikTok tracks in-feed engagements—but the blended total gives you a unified view of ad engagement. *** ## When to Use | Scenario | Action | | -------------------------- | ------------------------------------------------------------ | | Measuring total engagement | Track blended clicks to see overall ad performance | | Calculating CPC | Divide total spend by blended clicks for true cost per click | | Comparing time periods | Benchmark click volume week-over-week or month-over-month | | Evaluating campaign scale | Assess whether your budget is generating sufficient clicks | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------- | ---------------------------------------------- | | [Blended CTR](/reference/metrics/advertising/blended/blended-click-through-rate) | Click-through rate using this as the numerator | | [Blended CPC](/reference/metrics/advertising/blended/blended-cost-per-click) | Cost efficiency using this as the denominator | | [Blended Impressions](/reference/metrics/advertising/blended/blended-impressions) | Total ad views — clicks ÷ impressions = CTR | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended Conversions ROAS: Cross-Platform Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-conversions-return-on-ad-spend Track return on ad spend for all conversion events across Meta, Google, and TikTok Ads combined for comprehensive efficiency analysis. Blended Conversions ROAS measures the revenue generated from all conversion types across all ad platforms for every dollar spent on advertising. ## Formula **Blended Conversions ROAS** = [**Blended All Conversions Value**](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions-value) ÷ [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [**Blended All Conversions Value**](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions-value) | Total revenue from all conversion types across platforms | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total amount spent on advertising across all platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Multiplier | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns spent **\$10,000** across all platforms and generated **\$45,000** in conversion value from all event types. | Metric | Value | | ----------------------------- | -------- | | Blended All Conversions Value | \$45,000 | | Blended Spend | \$10,000 | | **Blended Conversions ROAS** | **4.5x** | *** ## How It Works This metric aggregates all conversion events (purchases, signups, leads, etc.) across Meta, Google, and TikTok Ads, then divides by total spend. It provides a holistic view of advertising efficiency by including all conversion types, not just purchases. *** ## When to Use | Scenario | Action | | ------------------------------------------------- | ------------------------------------------------- | | Comparing total ad efficiency across platforms | Use to evaluate overall marketing ROI | | Tracking campaigns with multiple conversion goals | Monitor combined conversion value performance | | Budgeting across ad platforms | Allocate spend based on all-conversion efficiency | | Reporting to stakeholders | Show comprehensive advertising returns | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------- | | [Blended ROAS](/reference/metrics/advertising/blended/blended-return-on-ad-spend) | Purchase-only ROAS vs all conversions | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Denominator in this calculation | | [Blended All Conversions Value](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions-value) | Numerator in this calculation | [See all Blended Efficiency metrics →](/reference/metrics/advertising/blended) # Blended Cost Per 15s View: Cross-Platform Video Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-cost-per-15-second-view Track your cost per 15-second video view across Meta, Google, and TikTok. Measure engaged video viewing efficiency and optimize ad spend. How much you spend on average for each video view that lasted at least 15 seconds across all channels. ## Formula **Blended Cost Per 15s View** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Video Views (15s)**](/reference/metrics/advertising/blended/blended-video-views-15-seconds) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total amount spent on advertising across all platforms | | [**Blended Video Views (15s)**](/reference/metrics/advertising/blended/blended-video-views-15-seconds) | Video views where at least 15 seconds was watched across all platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your video campaigns spent **\$10,000** and generated **200,000** 15-second views this month: | Channel | Spend | 15s Views | Cost Per 15s View | | ----------- | ------------ | ----------- | ----------------- | | Meta Ads | \$6,000 | 120,000 | \$0.050 | | Google Ads | \$2,500 | 50,000 | \$0.050 | | TikTok Ads | \$1,500 | 30,000 | \$0.050 | | **Blended** | **\$10,000** | **200,000** | **\$0.050** | *** ## How It Works Blended Cost Per 15-Second View divides your total ad spend by the number of video views that reached at least 15 seconds across all connected platforms. This threshold ensures you're measuring cost efficiency for engaged viewers who watched beyond initial impressions. *** ## When to Use | Scenario | Action | | -------------------------------- | -------------------------------------------------------------- | | Comparing video engagement costs | Benchmark against general CPV to see premium for engaged views | | Evaluating creative quality | Lower cost per 15s view indicates compelling content | | Budget allocation decisions | Shift spend toward channels with lower cost per 15s view | | Optimizing for brand awareness | Track cost efficiency for meaningful video consumption | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | The numerator in Cost Per 15s View calculation | | [Blended Video Views (15s)](/reference/metrics/advertising/blended/blended-video-views-15-seconds) | The denominator in Cost Per 15s View calculation | | [Blended CPV](/reference/metrics/advertising/blended/blended-cost-per-view) | Cost per any video view (less strict threshold) | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended Cost per 30-Second Video View: Cross-Platform Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-cost-per-30-second-view Track your cost per 30-second video view across Meta, Google, and TikTok. Learn the formula, see examples, and optimize video engagement efficiency. How much you spend on average for each video view that lasted at least 30 seconds across all channels. ## Formula **Blended Cost per 30s View** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended 30-Second Video Views**](/reference/metrics/advertising/blended/blended-video-views-30-seconds) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total ad spend across all platforms | | [**Blended 30-Second Video Views**](/reference/metrics/advertising/blended/blended-video-views-30-seconds) | Video views where at least 30 seconds was watched | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns spent **\$18,000** and generated **120,000** 30-second video views this month: | Channel | Spend | 30s Views | Cost/30s View | | ----------- | ------------ | ----------- | ------------- | | Meta Ads | \$10,000 | 80,000 | \$0.125 | | Google Ads | \$5,000 | 25,000 | \$0.200 | | TikTok Ads | \$3,000 | 15,000 | \$0.200 | | **Blended** | **\$18,000** | **120,000** | **\$0.150** | *** ## How It Works Blended Cost per 30-Second Video View aggregates your total ad spend and 30-second video views across all connected platforms, then calculates the average cost per engaged view. This metric focuses on viewers who watched at least 30 seconds, filtering out quick scrolls and providing a clearer picture of meaningful video engagement efficiency. *** ## When to Use | Scenario | Action | | ---------------------------------- | ---------------------------------------------------------------------- | | Evaluating engaged viewership cost | Compare cost per 30s view across campaigns to find efficient creatives | | Budget allocation | Shift spend toward channels with lower cost per engaged view | | Creative optimization | A/B test video hooks—lower cost/30s view indicates better retention | | Benchmarking | Track cost per 30s view trends to measure efficiency improvements | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | --------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in the calculation | | [Blended 30s Video Views](/reference/metrics/advertising/blended/blended-video-views-30-seconds) | Denominator in the calculation | | [Blended CPV](/reference/metrics/advertising/blended/blended-cost-per-view) | Cost efficiency for all video views (not just 30s+) | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended CPA: Cost Per Acquisition Across All Channels Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-cost-per-acquisition Track your blended CPA to understand acquisition costs across Meta, Google, and TikTok combined. Optimize your overall marketing efficiency. Blended CPA measures the average cost to acquire each purchase conversion across all your advertising channels combined. ## Formula **Blended CPA** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Purchases**](/reference/metrics/advertising/blended/purchases/blended-purchases) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------- | --------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected platforms | | [**Blended Purchases**](/reference/metrics/advertising/blended/purchases/blended-purchases) | Total attributed purchase conversions across all channels | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$12,500** across all advertising channels in March and generated **250 attributed purchases**. | Channel | Spend | Purchases | Channel CPA | | ----------- | ------------ | --------- | ----------- | | Meta | \$6,000 | 150 | \$40.00 | | Google | \$4,000 | 70 | \$57.14 | | TikTok | \$2,500 | 30 | \$83.33 | | **Blended** | **\$12,500** | **250** | **\$50.00** | *** ## How It Works Blended CPA aggregates total spend and total attributed purchases from all connected ad platforms, then calculates the average cost per conversion. This gives you a single efficiency metric across your entire paid media mix rather than evaluating each channel separately. *** ## When to Use | Scenario | Action | | ----------------------------------- | ----------------------------------------------------------- | | Setting overall acquisition targets | Compare blended CPA to customer lifetime value | | Budget allocation decisions | Identify if total spend is generating efficient conversions | | Monthly performance reviews | Track acquisition cost trends across all channels | | Scaling paid media | Monitor if efficiency holds as you increase total spend | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------- | -------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total ad spend across platforms | | [Blended Purchases](/reference/metrics/advertising/blended/purchases/blended-purchases) | Denominator — total attributed purchases | | [Blended ROAS](/reference/metrics/advertising/blended/blended-return-on-ad-spend) | Inverse efficiency metric measuring revenue return | [See all Blended Efficiency metrics →](/reference/metrics/advertising/blended) # Blended CPC: Average Cost Per Click Across All Ad Platforms Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-cost-per-click Track your average cost per click across Meta, Google, and TikTok ads. Compare cross-platform click efficiency and optimize ad spend allocation. Blended CPC measures how much you pay on average for each click on your ads across all connected advertising platforms. ## Formula **Blended CPC** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Clicks**](/reference/metrics/advertising/blended/blended-clicks) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------- | -------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Combined ad spend across all platforms | | [**Blended Clicks**](/reference/metrics/advertising/blended/blended-clicks) | Total clicks across all platforms | | Metadata | | | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) (aggregated) | | **Aggregation** | Ratio | *** ## Example Your brand spent **\$8,400** across all platforms in March and received **12,000 clicks**: | Platform | Spend | Clicks | CPC | | ----------- | ----------- | ---------- | ---------- | | Meta Ads | \$4,200 | 7,000 | \$0.60 | | Google Ads | \$2,800 | 3,500 | \$0.80 | | TikTok Ads | \$1,400 | 1,500 | \$0.93 | | **Blended** | **\$8,400** | **12,000** | **\$0.70** | *** ## How It Works Blended CPC aggregates spend and clicks from all connected ad platforms, then calculates the weighted average cost per click. This gives you a single efficiency metric for your entire paid media budget regardless of platform mix. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------------------ | | Setting budget caps | Use blended CPC to establish cost thresholds across channels | | Comparing platform efficiency | Identify which platforms deliver cheaper clicks | | Forecasting click volume | Estimate clicks from a given budget allocation | | Optimizing media mix | Shift spend toward platforms with lower CPC | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total cost across platforms | | [Blended Clicks](/reference/metrics/advertising/blended/blended-clicks) | Denominator — total clicks across platforms | | [Blended CTR](/reference/metrics/advertising/blended/blended-click-through-rate) | Measures click rate; CPC shows click cost | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended Cost Per Inline Link Click: Cost Per Embedded Link Click Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-cost-per-inline-link-click Track the cost per inline link click across Meta, Google, and TikTok ads. Measure efficiency of clicks on embedded links in ad copy across all platforms. Blended Cost Per Inline Link Click measures how much you pay on average for each click on an inline link within your ad content across all advertising platforms. ## Formula **Blended Cost Per Inline Link Click** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Inline Link Clicks**](/reference/metrics/advertising/blended/blended-inline-link-clicks) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Combined ad spend across all connected advertising platforms | | [**Blended Inline Link Clicks**](/reference/metrics/advertising/blended/blended-inline-link-clicks) | Clicks on embedded links within ad copy or creative across all platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns spent **\$15,000** this month and generated **12,500 inline link clicks**: | Platform | Spend | Inline Clicks | Cost/Inline Click | | ----------- | ------------ | ------------- | ----------------- | | Meta Ads | \$7,500 | 6,250 | \$1.20 | | Google Ads | \$5,000 | 4,500 | \$1.11 | | TikTok Ads | \$2,500 | 1,750 | \$1.43 | | **Blended** | **\$15,000** | **12,500** | **\$1.20** | *** ## How It Works Blended Cost Per Inline Link Click divides your total ad spend by the number of inline link clicks across all platforms. Inline clicks are clicks on links embedded in ad text or creative—such as hyperlinked words, hashtags, or mentions—rather than CTA buttons. *** ## When to Use | Scenario | Action | | ---------------------------- | ----------------------------------------------------------------------- | | Measuring copy effectiveness | Compare cost per inline click vs. standard CPC to gauge text engagement | | Optimizing ad creative | Identify which link placements in copy drive cost-efficient clicks | | Cross-platform budgeting | Shift spend to platforms with lower inline click costs | | Evaluating content strategy | Assess ROI of embedded links vs. primary call-to-action buttons | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------- | --------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total cost across platforms | | [Blended Inline Link Clicks](/reference/metrics/advertising/blended/blended-inline-link-clicks) | Denominator — inline clicks across platforms | | [Blended CPC](/reference/metrics/advertising/blended/blended-cost-per-click) | Cost per any click type (broader than inline) | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended Cost Per Landing Page View: Ad Efficiency Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-cost-per-landing-page-view Track your cost per landing page view across all ad platforms. Measure what you pay for each successful page load from Meta, Google, and TikTok ads. Blended Cost Per Landing Page View measures how much you pay for each successful landing page load from an ad click, aggregated across all connected ad platforms. ## Formula **Blended Cost Per Landing Page View** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Landing Page Views**](/reference/metrics/advertising/blended/blended-landing-page-views) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------------------------- | --------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total ad spend aggregated across all platforms | | [**Blended Landing Page Views**](/reference/metrics/advertising/blended/blended-landing-page-views) | Landing page views from clicks across all platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns generated **12,500 landing page views** across all platforms with **\$2,500 in total spend**. | Platform | Spend | Landing Page Views | Cost Per LPV | | ----------- | ----------- | ------------------ | ------------ | | Meta | \$1,200 | 6,000 | \$0.20 | | Google | \$800 | 4,000 | \$0.20 | | TikTok | \$500 | 2,500 | \$0.20 | | **Blended** | **\$2,500** | **12,500** | **\$0.20** | *** ## How It Works This metric divides your total ad spend by the number of landing page views across Meta, Google, and TikTok. A landing page view counts only when someone clicks your ad and the page actually loads—filtering out accidental clicks and bounces before load. *** ## When to Use | Scenario | Action | | ---------------------------- | ----------------------------------------------------------- | | Comparing true click quality | Use instead of CPC to see what you pay for engaged visitors | | High CPC but low conversions | Check if landing pages are loading for clickers | | Mobile vs desktop analysis | Compare cost per LPV across devices | | Cross-platform efficiency | Identify which platform delivers cheapest qualified traffic | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------- | --------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator—total ad cost | | [Blended Landing Page Views](/reference/metrics/advertising/blended/blended-landing-page-views) | Denominator—successful page loads | | [Blended CPC](/reference/metrics/advertising/blended/blended-cost-per-click) | Compare to see click vs load efficiency | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended CPC (Link): Cost Per Link Click Across Channels Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-cost-per-link-click Track your cost per link click across Meta, Google, and TikTok ads combined. Calculate efficiency and optimize your cross-channel ad spend. The cost per link click across all advertising channels combined. ## Formula **Blended CPC (Link)** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Link Clicks**](/reference/metrics/advertising/blended/blended-link-clicks) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------- | ------------------------------------------------ | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total ad spend aggregated across all channels | | [**Blended Link Clicks**](/reference/metrics/advertising/blended/blended-link-clicks) | Total link clicks aggregated across all channels | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns generated **125,000 link clicks** with **\$8,750 total spend**: | Channel | Spend | Link Clicks | CPC (Link) | | ----------- | ----------- | ----------- | ---------- | | Meta Ads | \$5,000 | 71,400 | \$0.07 | | Google Ads | \$2,500 | 35,700 | \$0.07 | | TikTok Ads | \$1,250 | 17,900 | \$0.07 | | **Blended** | **\$8,750** | **125,000** | **\$0.07** | *** ## How It Works Blended CPC (Link) divides your total ad spend across all channels by the total link clicks received. Link clicks specifically measure clicks that take users to your website, excluding engagement clicks like reactions or video views. *** ## When to Use | Scenario | Action | | ----------------------- | --------------------------------------------------- | | Comparing traffic costs | Benchmark link click efficiency across all channels | | Budget optimization | Identify if blended costs are rising or falling | | Creative testing | Measure if new creatives improve click efficiency | | Cross-channel analysis | Compare blended CPC to individual platform CPCs | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------- | ----------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | The numerator in this calculation | | [Blended Link Clicks](/reference/metrics/advertising/blended/blended-link-clicks) | The denominator in this calculation | | [Blended CPC](/reference/metrics/advertising/blended/blended-cost-per-click) | Cost per total click (includes all click types) | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended CPM: Cost Per 1,000 Impressions Across Channels Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-cost-per-mille Track your cost per 1,000 ad impressions across Meta, Google, and TikTok. Learn the formula, see examples, and optimize your reach efficiency. How much you pay for every 1,000 times your ads are shown across all channels. ## Formula **Blended CPM** = ( [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Impressions**](/reference/metrics/advertising/blended/blended-impressions) ) × 1,000 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------- | ------------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total amount spent on advertising across all platforms | | [**Blended Impressions**](/reference/metrics/advertising/blended/blended-impressions) | Total number of times ads were displayed across all platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns spent **\$15,000** and generated **3,000,000 impressions** this month: | Channel | Spend | Impressions | CPM | | ----------- | ------------ | ------------- | ---------- | | Meta Ads | \$8,000 | 1,600,000 | \$5.00 | | Google Ads | \$5,000 | 1,000,000 | \$5.00 | | TikTok Ads | \$2,000 | 400,000 | \$5.00 | | **Blended** | **\$15,000** | **3,000,000** | **\$5.00** | *** ## How It Works Blended CPM aggregates your total ad spend and impressions across all connected advertising platforms, then calculates the cost per 1,000 impressions. This gives you a single efficiency metric for your entire paid media program regardless of channel mix. *** ## When to Use | Scenario | Action | | -------------------------- | ---------------------------------------------------------- | | Comparing reach efficiency | Benchmark your blended CPM against industry averages | | Budget planning | Estimate required budget based on target impression volume | | Channel mix optimization | Compare blended CPM to individual platform CPMs | | Seasonal analysis | Track how CPM fluctuates during peak advertising periods | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------- | --------------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | The numerator in CPM calculation | | [Blended Impressions](/reference/metrics/advertising/blended/blended-impressions) | The denominator in CPM calculation | | [Blended CPC](/reference/metrics/advertising/blended/blended-cost-per-click) | Cost efficiency measured by clicks instead of impressions | [See all Blended Audience metrics →](/reference/metrics/advertising/blended) # Blended Cost Per Outbound Click: Cross-Platform Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-cost-per-outbound-click Track your cost per outbound click across all ad platforms. Measure efficiency of clicks that lead users off Meta, Google, and TikTok to your site. Blended Cost Per Outbound Click measures how much you pay for each click that leads users off the ad platform to your website, aggregated across all connected ad accounts. ## Formula **Blended Cost Per Outbound Click** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Outbound Clicks**](/reference/metrics/advertising/blended/blended-outbound-clicks) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected ad platforms | | [**Blended Outbound Clicks**](/reference/metrics/advertising/blended/blended-outbound-clicks) | Clicks that lead users off the ad platform to your website | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns spent **\$5,000** across all platforms and generated **2,500 outbound clicks**. | Metric | Value | | --------------------------- | ---------- | | Total Spend | \$5,000 | | Outbound Clicks | 2,500 | | **Cost Per Outbound Click** | **\$2.00** | *** ## How It Works This metric divides your total advertising spend by the number of clicks that actually send users to your website. Unlike standard CPC which includes all clicks, this focuses only on outbound clicks—giving you a true picture of what you pay for traffic. *** ## When to Use | Scenario | Action | | ---------------------------------- | --------------------------------------------------------------- | | Comparing traffic acquisition cost | Use to evaluate cost efficiency across platforms | | Budget allocation decisions | Shift spend toward platforms with lower cost per outbound click | | Campaign optimization | Identify campaigns with high costs relative to outbound traffic | | Benchmarking efficiency | Track changes over time to measure optimization impact | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in the formula | | [Blended Outbound Clicks](/reference/metrics/advertising/blended/blended-outbound-clicks) | Denominator in the formula | | [Blended CPC](/reference/metrics/advertising/blended/blended-cost-per-click) | Similar metric using all clicks instead of outbound only | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended CPP: Cost Per Person Reached Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-cost-per-thousand-people-reached Track your blended cost per person reached across Meta, Google, and TikTok ads. Measure audience efficiency across all advertising channels. Blended CPP measures how much you pay to show your ads to each unique person across all advertising channels. ## Formula **Blended CPP** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Reach**](/reference/metrics/advertising/blended/blended-reach) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | -------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total amount spent on advertising across all channels | | [**Blended Reach**](/reference/metrics/advertising/blended/blended-reach) | Total unique people who saw your ads across all channels | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your brand spent **\$12,000** on advertising last month and reached **400,000 unique people** across all channels. | Channel | Spend | Reach | CPP | | ----------- | ------------ | ----------- | ----------- | | Meta Ads | \$6,000 | 250,000 | \$0.024 | | Google Ads | \$4,000 | 100,000 | \$0.040 | | TikTok Ads | \$2,000 | 50,000 | \$0.040 | | **Blended** | **\$12,000** | **400,000** | **\$0.030** | *** ## How It Works Blended CPP aggregates spend and reach data from all connected advertising platforms. It divides total spend by total unique people reached to show your average cost to reach one person. This metric helps evaluate cross-channel audience efficiency. *** ## When to Use | Scenario | Action | | --------------------------------------------- | ------------------------------------------------ | | Comparing audience efficiency across channels | Lower CPP indicates more cost-effective reach | | Budget allocation decisions | Shift spend toward channels with lower CPP | | Evaluating brand awareness campaigns | Track CPP trends to measure awareness efficiency | | Identifying audience saturation | Rising CPP may indicate diminishing returns | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | -------------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in CPP calculation | | [Blended Reach](/reference/metrics/advertising/blended/blended-reach) | Denominator in CPP calculation | | [Blended CPM](/reference/metrics/advertising/blended/blended-cost-per-mille) | Alternative audience cost metric (per 1,000 impressions) | [See all Blended Audience metrics →](/reference/metrics/advertising/blended) # Blended Cost Per ThruPlay: Cross-Platform Video Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-cost-per-thruplay Track your cost per completed or 15-second video view across Meta, Google, and TikTok. Optimize video ad efficiency with this unified metric. The cost per completed or 15-second video view across all connected advertising platforms. ## Formula **Blended Cost Per ThruPlay** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended ThruPlay Views**](/reference/metrics/advertising/blended/blended-thruplay-views) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total amount spent on advertising across all platforms | | [**Blended ThruPlay Views**](/reference/metrics/advertising/blended/blended-thruplay-views) | Video views watched to completion or for at least 15 seconds | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your video campaigns spent **\$8,500** and generated **425,000 ThruPlay views** this month: | Channel | Spend | ThruPlay Views | Cost Per ThruPlay | | ----------- | ----------- | -------------- | ----------------- | | Meta Ads | \$5,000 | 250,000 | \$0.020 | | Google Ads | \$2,000 | 100,000 | \$0.020 | | TikTok Ads | \$1,500 | 75,000 | \$0.020 | | **Blended** | **\$8,500** | **425,000** | **\$0.020** | *** ## How It Works Blended Cost Per ThruPlay divides your total ad spend by the number of ThruPlay views across all connected platforms. A ThruPlay counts when users watch to completion or for at least 15 seconds—measuring meaningful video engagement rather than passive impressions. *** ## When to Use | Scenario | Action | | ------------------------------------ | -------------------------------------------------------- | | Comparing video creative performance | Identify which videos drive engagement at lower cost | | Optimizing for brand awareness | Track cost efficiency of meaningful video views | | Budget allocation decisions | Shift spend toward channels with lower cost per ThruPlay | | Benchmarking against CPV | Compare ThruPlay efficiency to general video view costs | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------- | --------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | The numerator in Cost Per ThruPlay calculation | | [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-thruplay-views) | The denominator in Cost Per ThruPlay calculation | | [Blended CPV](/reference/metrics/advertising/blended/blended-cost-per-view) | Cost per any video view (less strict than ThruPlay) | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended Cost Per Unique Click: Cost Per Unique Ad Clicker Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-cost-per-unique-click Track the cost per unique person who clicked your ads across Meta, Google, and TikTok. Optimize spend efficiency by measuring deduplicated click costs. Blended Cost Per Unique Click measures how much you pay to acquire each distinct person who clicks your ads across all advertising platforms. ## Formula **Blended Cost Per Unique Click** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Unique Clicks**](/reference/metrics/advertising/blended/blended-unique-clicks) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Combined ad spend across all connected advertising platforms | | [**Blended Unique Clicks**](/reference/metrics/advertising/blended/blended-unique-clicks) | Distinct people who clicked ads at least once across all platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your brand spent **\$8,400** in March and acquired **8,420 unique clickers**: | Metric | Value | | --------------------------------- | ---------- | | Blended Spend | \$8,400 | | Unique Clickers | 8,420 | | **Blended Cost Per Unique Click** | **\$1.00** | *** ## How It Works Blended Cost Per Unique Click divides total spend by unique clickers across all connected platforms. Unlike standard CPC, this metric counts each person only once—showing true cost to reach new engaged users. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------------ | | Measuring acquisition efficiency | Compare cost per unique clicker vs standard CPC | | Detecting click fraud | High CPC but low cost/unique click may indicate bot clicks | | Optimizing for reach | Prioritize platforms with lower cost per unique click | | Cross-platform budgeting | Identify which platforms deliver unique audiences cost-effectively | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------- | ----------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total cost across platforms | | [Blended Unique Clicks](/reference/metrics/advertising/blended/blended-unique-clicks) | Denominator — distinct clickers | | [Blended CPC](/reference/metrics/advertising/blended/blended-cost-per-click) | Total click cost (includes repeat clicks) | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended Cost per Video Play: Ad Efficiency Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-cost-per-video-play Track your cost per video play initiation across Meta, Google, and TikTok. Measure video ad efficiency and optimize autoplay cost performance. How much you spend on average for each video play initiation across all channels. ## Formula **Blended Cost per Video Play** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Video Plays**](/reference/metrics/advertising/blended/blended-video-plays) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------- | ------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total ad spend across all platforms | | [**Blended Video Plays**](/reference/metrics/advertising/blended/blended-video-plays) | Total video play initiations across all platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns spent **\$15,000** and generated **500,000 video plays** this month: | Channel | Spend | Video Plays | Cost per Play | | ----------- | ------------ | ----------- | ------------- | | Meta Ads | \$8,000 | 320,000 | \$0.025 | | TikTok Ads | \$5,000 | 150,000 | \$0.033 | | Google Ads | \$2,000 | 30,000 | \$0.067 | | **Blended** | **\$15,000** | **500,000** | **\$0.030** | *** ## How It Works Blended Cost per Video Play aggregates your total ad spend and video play initiations across all connected platforms, then calculates the average cost per play. Unlike video views (which may require watch duration), video plays count each time a video starts—including autoplay. *** ## When to Use | Scenario | Action | | --------------------------- | ----------------------------------------------------------------------------- | | Evaluating play efficiency | Compare cost per play across campaigns to find cost-effective video creatives | | Budget allocation | Shift budget toward channels with lower cost per play | | Autoplay optimization | Measure how efficiently your ads trigger video starts | | Cross-platform benchmarking | Compare play costs across Meta, Google, and TikTok | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------- | --------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in cost per play calculation | | [Blended Video Plays](/reference/metrics/advertising/blended/blended-video-plays) | Denominator in cost per play calculation | | [Blended CPV](/reference/metrics/advertising/blended/blended-cost-per-view) | Cost per video view (requires watch duration) | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended CPV: Cost Per Video View Across Channels Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-cost-per-view Track your cost per video view across Meta, Google, and TikTok. Learn the formula, see examples, and optimize your video ad efficiency. How much you pay on average for each video view across all channels. ## Formula **Blended CPV** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Video Views**](/reference/metrics/advertising/blended/blended-video-views) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------- | -------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total ad spend across all platforms | | [**Blended Video Views**](/reference/metrics/advertising/blended/blended-video-views) | Total video views across all platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns spent **\$12,000** and generated **400,000 video views** this month: | Channel | Spend | Video Views | CPV | | ----------- | ------------ | ----------- | ----------- | | Meta Ads | \$6,000 | 200,000 | \$0.030 | | TikTok Ads | \$2,000 | 50,000 | \$0.040 | | **Blended** | **\$12,000** | **400,000** | **\$0.030** | *** ## How It Works Blended CPV aggregates your total ad spend and video views across all connected platforms, then calculates the average cost per view. *** ## When to Use | Scenario | Action | | --------------------------- | ------------------------------------------------------------- | | Evaluating video efficiency | Compare CPV across campaigns to find cost-effective creatives | | Budget allocation | Shift budget toward channels with lower CPV | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------- | ------------------------------ | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in CPV calculation | | [Blended Video Views](/reference/metrics/advertising/blended/blended-video-views) | Denominator in CPV calculation | | [Blended CPM](/reference/metrics/advertising/blended/blended-cost-per-mille) | Cost efficiency by impressions | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended Engagement Rate: Cross-Platform Ad Resonance Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-engagement-rate Track the percentage of impressions that resulted in engagements across Meta, Google, and TikTok ads. Compare creative performance across platforms. The percentage of impressions that resulted in an engagement, aggregated across all ad platforms. ## Formula **Blended Engagement Rate** = ( [**Blended Engagements**](/reference/metrics/advertising/blended/engagements/blended-engagements) ÷ [**Blended Impressions**](/reference/metrics/advertising/blended/blended-impressions) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | | [**Blended Engagements**](/reference/metrics/advertising/blended/engagements/blended-engagements) | Total interactions (likes, comments, shares, clicks) across platforms | | [**Blended Impressions**](/reference/metrics/advertising/blended/blended-impressions) | Total times ads were shown across platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your cross-platform campaign generated **2,850** engagements from **95,000** impressions: | Platform | Impressions | Engagements | Rate | | --------------- | ----------- | ----------- | -------- | | Meta | 50,000 | 1,500 | 3.0% | | TikTok + Google | 45,000 | 1,350 | 3.0% | | **Blended** | **95,000** | **2,850** | **3.0%** | *** ## How It Works Blended Engagement Rate aggregates engagement data from Meta, Google, and TikTok. Each platform defines engagement differently (reactions, clicks, likes), but the blended rate normalizes by total impressions for cross-platform comparison. *** ## When to Use | Scenario | Action | | ------------------------------ | --------------------------------------------------------- | | Comparing platform performance | Identify which platform drives highest engagement | | Budget allocation decisions | Shift spend toward platforms with higher engagement rates | | Creative performance analysis | Use as a leading indicator of ad resonance | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | ---------------------------------- | | [Blended Engagements](/reference/metrics/advertising/blended/engagements/blended-engagements) | The numerator (total interactions) | | [Blended Impressions](/reference/metrics/advertising/blended/blended-impressions) | The denominator (times shown) | | [Blended CTR](/reference/metrics/advertising/blended/blended-click-through-rate) | Click-specific engagement measure | [See all Blended Engagement metrics →](/reference/metrics/advertising/blended) # Blended Frequency: Average Ad Views per User Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-frequency Measure how many times each user saw your ads across Meta, Google, and TikTok combined. Calculate frequency to optimize reach and avoid ad fatigue. The average number of times each unique user saw your ads across all channels. ## Formula **Blended Frequency** = [**Blended Impressions**](/reference/metrics/advertising/blended/blended-impressions) ÷ [**Blended Reach**](/reference/metrics/advertising/blended/blended-reach) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------- | ------------------------------------------------- | | [**Blended Impressions**](/reference/metrics/advertising/blended/blended-impressions) | Total ad views across all channels | | [**Blended Reach**](/reference/metrics/advertising/blended/blended-reach) | Unique users who saw your ads across all channels | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your cross-channel campaigns delivered **8.4M impressions** to **1.2M unique users**: | Metric | Value | | --------------------- | --------- | | Blended Impressions | 8,400,000 | | Blended Reach | 1,200,000 | | **Blended Frequency** | **7.0** | On average, each person saw your ads 7 times across Meta, Google, and TikTok. *** ## How It Works Blended Frequency aggregates impressions and reach from all connected ad platforms, then divides total impressions by unique reach. A frequency of 7.0 means users saw your ads 7 times on average across all channels combined. *** ## When to Use | Scenario | Action | | ---------------------------------- | ------------------------------------------------------------ | | Detecting ad fatigue | Frequency above 10–15 often signals diminishing returns | | Balancing reach vs. repetition | Lower frequency = broader reach; higher = deeper engagement | | Optimizing multi-channel campaigns | Compare blended frequency to platform-specific metrics | | Budget reallocation | Shift spend to lower-frequency channels if saturation occurs | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------- | ------------------------------------------ | | [Blended Impressions](/reference/metrics/advertising/blended/blended-impressions) | Numerator in the frequency calculation | | [Blended Reach](/reference/metrics/advertising/blended/blended-reach) | Denominator in the frequency calculation | | [Blended CPM](/reference/metrics/advertising/blended/blended-cost-per-mille) | Cost efficiency at current frequency level | [See all Blended Audience metrics →](/reference/metrics/advertising/blended) # Blended Impressions: Total Ad Views Across All Channels Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-impressions Track total ad impressions across Meta, Google, and TikTok in one view. Compare platform reach and optimize ad frequency for better efficiency. The total number of times your ads were displayed across all advertising channels. ## Formula **Blended Impressions** = **SUM** ( Impressions ) **ACROSS** all platforms ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ---------------------------------------------- | | [**Meta Impressions**](/reference/metrics/advertising/meta-ads/meta-impressions) | Number of times your Meta ads were displayed | | [**Google Impressions**](/reference/metrics/advertising/google-ads/google-impressions) | Number of times your Google ads were displayed | | [**TikTok Impressions**](/reference/metrics/advertising/tiktok-ads/tiktok-impressions) | Number of times your TikTok ads were displayed | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaigns delivered **2.4M impressions** across all channels last week: | Platform | Impressions | Share | | ---------- | ----------- | ----- | | Meta Ads | 1,200,000 | 50% | | Google Ads | 840,000 | 35% | | TikTok Ads | 360,000 | 15% | *** ## How It Works Blended Impressions aggregates impression counts from each connected advertising platform into a single metric. Each platform reports impressions differently—Meta counts each ad view, Google counts each ad load, and TikTok counts viewable impressions. This metric sums them all for a unified view of total ad delivery. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------------------------------- | | Measuring total reach | Track how many times your ads appear across all platforms | | Calculating CPM | Divide Blended Spend by Blended Impressions × 1,000 | | Frequency analysis | Compare impressions to reach to understand repeat views | | Budget pacing | Monitor delivery against spend to ensure efficient ad serving | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------- | ------------------------------------------------------- | | [Blended Reach](/reference/metrics/advertising/blended/blended-reach) | Unique users who saw your ads (impressions ÷ frequency) | | [Blended CPM](/reference/metrics/advertising/blended/blended-cost-per-mille) | Cost per 1,000 impressions | | [Blended Frequency](/reference/metrics/advertising/blended/blended-frequency) | Average impressions per unique user | [See all Blended Audience metrics →](/reference/metrics/advertising/blended) # Blended Inline CTR: Click-Through Rate for Embedded Links Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-inline-click-through-rate Track the percentage of impressions that result in inline link clicks across Meta, Google, and TikTok ads. Measure embedded link engagement. Blended Inline CTR measures the percentage of ad impressions that resulted in a click on an inline link within the ad content, across all channels. ## Formula **Blended Inline CTR** = ( [**Blended Inline Link Clicks**](/reference/metrics/advertising/blended/blended-inline-link-clicks) ÷ [**Blended Impressions**](/reference/metrics/advertising/blended/blended-impressions) ) × 100 ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | | [**Blended Inline Link Clicks**](/reference/metrics/advertising/blended/blended-inline-link-clicks) | Clicks on links embedded in ad text or creative (not CTA buttons) across all platforms | | [**Blended Impressions**](/reference/metrics/advertising/blended/blended-impressions) | Total impressions across all advertising channels | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns delivered **1,850,000 impressions** and generated **5,550 inline link clicks** across all channels this month: | Metric | Value | | -------------------------- | --------- | | Blended Impressions | 1,850,000 | | Blended Inline Link Clicks | 5,550 | | **Blended Inline CTR** | **0.30%** | *** ## How It Works Blended Inline CTR calculates the click-through rate specifically for links embedded within ad copy—such as hyperlinked words, hashtags, or mentions—rather than primary CTA buttons. This metric aggregates inline clicks and impressions from Meta, Google, and TikTok to show engagement with embedded links across your entire paid media mix. *** ## When to Use | Scenario | Action | | ----------------------------- | --------------------------------------------------------------- | | Evaluating content engagement | Compare inline CTR to standard CTR to see if copy drives clicks | | Testing link placements | Measure whether inline links in ad text convert users | | Optimizing creative strategy | Identify ads where embedded links outperform CTA buttons | | Cross-platform comparison | Compare inline engagement rates across Meta, Google, TikTok | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------- | -------------------------------------------- | | [Blended Inline Link Clicks](/reference/metrics/advertising/blended/blended-inline-link-clicks) | Numerator in Inline CTR calculation | | [Blended CTR](/reference/metrics/advertising/blended/blended-click-through-rate) | Overall click-through rate (all click types) | | [Blended Impressions](/reference/metrics/advertising/blended/blended-impressions) | Denominator in Inline CTR calculation | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended Inline Link Clicks: Clicks on Embedded Ad Links Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-inline-link-clicks Track inline link clicks across Meta, Google, and TikTok ads. Measure engagement with embedded links in ad creative text, not CTA buttons. Clicks on links embedded in the ad text or creative (not CTA buttons), aggregated across all ad platforms. ## Formula **Blended Inline Link Clicks** = **SUM** ( Inline Link Clicks ) **ACROSS** all platforms ### Formula Components | Metric | Definition | | ------------------------- | -------------------------------------------------------- | | Meta Inline Link Clicks | Clicks on embedded links within Meta ad copy or creative | | Google Inline Link Clicks | Clicks on embedded links within Google ad text | | TikTok Inline Link Clicks | Clicks on embedded links within TikTok ad creative | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaigns generated **2,840 inline link clicks** this week: | Platform | Inline Clicks | Share | | ---------- | ------------- | ----- | | Meta Ads | 1,560 | 55% | | Google Ads | 890 | 31% | | TikTok Ads | 390 | 14% | *** ## How It Works Inline link clicks are counted when users click on links embedded within the ad's text content—such as hyperlinked words, hashtags, or mentions—rather than the primary call-to-action button. This metric aggregates inline clicks across all connected ad platforms. *** ## When to Use | Scenario | Action | | ---------------------------- | ----------------------------------------------------- | | Measuring content engagement | Identify ads where copy drives clicks vs. CTAs | | Comparing click types | Contrast inline clicks with outbound and CTA clicks | | Optimizing ad creative | Test different link placements in ad copy | | Cross-platform analysis | Compare inline engagement across Meta, Google, TikTok | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Blended Link Clicks](/reference/metrics/advertising/blended/blended-link-clicks) | All link clicks (includes inline, outbound, CTA) | | [Blended Clicks](/reference/metrics/advertising/blended/blended-clicks) | Total clicks of all types on ads | | [Blended Outbound Clicks](/reference/metrics/advertising/blended/blended-outbound-clicks) | Clicks that lead users off-platform | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended Landing Page View Rate: Post-Click Success Rate Across All Channels Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-landing-page-view-rate Track the percentage of ad clicks that resulted in landing page views across Meta, Google, and TikTok. Diagnose page speed and tracking issues. Blended Landing Page View Rate measures the percentage of clicks that resulted in a full landing page load across all your advertising channels. ## Formula **Blended Landing Page View Rate** = ( [**Blended Landing Page Views**](/reference/metrics/advertising/blended/blended-landing-page-views) ÷ [**Blended Clicks**](/reference/metrics/advertising/blended/blended-clicks) ) × 100 ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | | [**Blended Landing Page Views**](/reference/metrics/advertising/blended/blended-landing-page-views) | Total successful page loads after ad clicks across all platforms | | [**Blended Clicks**](/reference/metrics/advertising/blended/blended-clicks) | Total clicks on your ads across Meta, Google, and TikTok | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns generated **45,200 clicks** and **38,420 landing page views** last month: | Metric | Value | | ---------------------------------- | ------- | | Blended Clicks | 45,200 | | Blended Landing Page Views | 38,420 | | **Blended Landing Page View Rate** | **85%** | This means 85% of users who clicked your ads successfully loaded the landing page. The remaining 15% may have abandoned before the page loaded. *** ## How It Works Landing Page View Rate calculates how many ad clicks result in a user actually reaching your site. A click fires when someone taps your ad, but a landing page view only fires after the destination page fully loads. The gap between clicks and landing page views reveals drop-off during page load. *** ## When to Use | Scenario | Action | | ---------------------------- | -------------------------------------------------------------- | | Diagnosing slow page speed | Low rates (under 70%) suggest your pages load too slowly | | Identifying tracking issues | Sudden rate drops may indicate broken pixels or redirects | | Evaluating mobile experience | Compare mobile vs desktop rates to find device-specific issues | | Optimizing ad destinations | Test different landing pages and measure rate improvements | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------- | --------------------------------------- | | [Blended Landing Page Views](/reference/metrics/advertising/blended/blended-landing-page-views) | Numerator in this rate calculation | | [Blended Clicks](/reference/metrics/advertising/blended/blended-clicks) | Denominator in this rate calculation | | [Blended CTR](/reference/metrics/advertising/blended/blended-click-through-rate) | Ad engagement rate—clicks ÷ impressions | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended Landing Page Views: Successful Post-Click Site Visits Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-landing-page-views Track landing page views across Meta, Google, and TikTok ads. Measure how many users successfully loaded your site after clicking an ad. Blended Landing Page Views measures the number of times users successfully loaded your landing page after clicking an ad across all connected advertising platforms. ## Formula **Blended Landing Page Views** = **SUM** ( Landing Page Views ) **ACROSS** all platforms ### Formula Components | Metric | Definition | | ----------------------------- | ------------------------------------------- | | **Meta Landing Page Views** | Successful page loads from Meta ad clicks | | **Google Landing Page Views** | Successful page loads from Google ad clicks | | **TikTok Landing Page Views** | Successful page loads from TikTok ad clicks | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your brand's ads generated **12,450 landing page views** last week across all platforms: | Platform | Landing Page Views | Share | | ---------- | ------------------ | ----- | | Meta Ads | 6,780 | 54% | | Google Ads | 4,120 | 33% | | TikTok Ads | 1,550 | 13% | *** ## How It Works Landing Page Views count when a user clicks your ad and the destination page successfully loads in their browser. This is more qualified than raw clicks—it confirms the user actually reached your site rather than bouncing before the page loaded due to slow connections or abandoned navigation. *** ## When to Use | Scenario | Action | | ---------------------------------- | ----------------------------------------------- | | Measuring qualified traffic | Track users who actually reached your site | | Diagnosing click-to-visit drop-off | Compare link clicks vs landing page views | | Evaluating page load performance | Low LP views vs high clicks suggests slow pages | | Calculating cost per site visit | Divide spend by landing page views | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------- | -------------------------------------------- | | [Blended Link Clicks](/reference/metrics/advertising/blended/blended-link-clicks) | Clicks that lead to landing page views | | [Blended Outbound Clicks](/reference/metrics/advertising/blended/blended-outbound-clicks) | Clicks that leave the ad platform | | [Blended Clicks](/reference/metrics/advertising/blended/blended-clicks) | Total clicks including non-link interactions | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended Link CTR: Link Click-Through Rate Across All Channels Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-link-click-through-rate Track your blended link click-through rate across Meta, Google, and TikTok ads. Measure what percentage of impressions resulted in a link click. Blended Link CTR measures the percentage of impressions that resulted in a link click across all your advertising channels. ## Formula **Blended Link CTR** = ( [**Blended Link Clicks**](/reference/metrics/advertising/blended/blended-link-clicks) ÷ [**Blended Impressions**](/reference/metrics/advertising/blended/blended-impressions) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [**Blended Link Clicks**](/reference/metrics/advertising/blended/blended-link-clicks) | Total link clicks across Meta, Google, and TikTok ads | | [**Blended Impressions**](/reference/metrics/advertising/blended/blended-impressions) | Total impressions across all advertising channels | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns delivered **3,200,000 impressions** and **28,800 link clicks** across all channels last month: | Metric | Value | | -------------------- | --------- | | Blended Impressions | 3,200,000 | | Blended Link Clicks | 28,800 | | **Blended Link CTR** | **0.90%** | *** ## How It Works Blended Link CTR aggregates link clicks and impressions from Meta, Google, and TikTok, then calculates the overall link click-through rate. Unlike standard CTR which includes all clicks, Link CTR focuses specifically on clicks that direct users to a destination URL. *** ## When to Use | Scenario | Action | | --------------------------------------- | ----------------------------------------------- | | Measuring ad-to-site traffic efficiency | Compare link CTR to standard CTR | | Optimizing landing page campaigns | Target 0.5-1.5% link CTR benchmarks | | Evaluating creative performance | Identify which ads drive more link clicks | | Budget allocation | Prioritize channels with higher link engagement | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------- | ----------------------------------------- | | [Blended Link Clicks](/reference/metrics/advertising/blended/blended-link-clicks) | Numerator in Link CTR calculation | | [Blended Impressions](/reference/metrics/advertising/blended/blended-impressions) | Denominator in Link CTR calculation | | [Blended CTR](/reference/metrics/advertising/blended/blended-click-through-rate) | Includes all clicks, not just link clicks | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended Link Clicks: Total Ad Link Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-link-clicks Track total link clicks across Meta, Google, and TikTok ads. Measure how many users clicked links in your ads to reach destinations on or off the platform. Blended Link Clicks measures the total number of clicks on links in your ads across all connected advertising channels. ## Formula **Blended Link Clicks** = **SUM** ( Link Clicks ) **ACROSS** all platforms ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ---------------------------------------- | | [**Meta Link Clicks**](/reference/metrics/advertising/meta-ads/meta-link-clicks) | Clicks on ad links from Meta campaigns | | **Google Link Clicks** | Clicks on ad links from Google campaigns | | **TikTok Link Clicks** | Clicks on ad links from TikTok campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your brand ran campaigns across three platforms last week, generating **8,432 total link clicks**: | Platform | Link Clicks | Share | | ---------- | ----------- | ----- | | Meta Ads | 4,150 | 49% | | Google Ads | 2,890 | 34% | | TikTok Ads | 1,392 | 17% | *** ## How It Works Blended Link Clicks aggregates link click data from each connected advertising platform. A link click occurs when a user clicks a link in your ad that directs them to a destination—whether that's your website, app store, or another page within the ad platform. *** ## When to Use | Scenario | Action | | -------------------------------------------- | --------------------------------------------- | | Measuring cross-platform ad engagement | Compare link click volume across channels | | Evaluating creative performance | Identify which ads drive the most link clicks | | Calculating blended click-through efficiency | Divide by impressions for blended link CTR | | Budget allocation decisions | Shift spend toward higher link click channels | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------- | -------------------------------------------- | | [Blended Clicks](/reference/metrics/advertising/blended/blended-clicks) | Total clicks including non-link interactions | | [Blended Outbound Clicks](/reference/metrics/advertising/blended/blended-outbound-clicks) | Clicks that leave the ad platform | | [Blended Landing Page Views](/reference/metrics/advertising/blended/blended-landing-page-views) | Users who actually reached your landing page | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended New Customer CPA: Cost to Acquire New Customers Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-new-customer-cost-per-acquisition Track your cost per new customer acquisition across all ad platforms. Calculate how much you spend on average to acquire each first-time buyer. Blended New Customer CPA measures how much you spend on average to acquire each new customer through your ads across all channels. ## Formula **Blended New Customer CPA** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended New Customer Purchases**](/reference/metrics/advertising/blended/blended-new-customer-purchases) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Combined ad spend across all connected platforms | | [**Blended New Customer Purchases**](/reference/metrics/advertising/blended/blended-new-customer-purchases) | First-time customer orders attributed to ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$12,000** across all ad platforms last month and acquired **150 new customers**: | Platform | Spend | New Customers | Platform NC CPA | | ----------- | ------------ | ------------- | --------------- | | Meta | \$6,000 | 80 | \$75.00 | | Google | \$4,000 | 50 | \$80.00 | | TikTok | \$2,000 | 20 | \$100.00 | | **Blended** | **\$12,000** | **150** | **\$80.00** | *** ## How It Works Blended NC CPA divides your total ad spend across all platforms by the number of new customers acquired. This metric specifically tracks first-time buyers, excluding repeat customers from the calculation. *** ## When to Use | Scenario | Action | | ------------------------------------------ | ------------------------------------------------- | | Evaluating customer acquisition efficiency | Compare NC CPA to customer lifetime value | | Budget allocation decisions | Shift spend toward platforms with lower NC CPA | | Scaling acquisition campaigns | Monitor NC CPA as spend increases | | Comparing to overall CPA | Higher NC CPA than CPA indicates strong retention | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------- | -------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in NC CPA calculation | | [Blended New Customer Purchases](/reference/metrics/advertising/blended/blended-new-customer-purchases) | Denominator in NC CPA calculation | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Overall CPA including repeat customers | [See all Blended Efficiency metrics →](/reference/metrics/advertising/blended) # Blended New Customer Purchases: First-Time Buyer Conversions Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-new-customer-purchases Track purchases from first-time customers attributed to your ads across all channels. Measure new customer acquisition from Meta, Google, and TikTok advertising. Blended New Customer Purchases counts first-time buyers whose purchases are attributed to advertising across all connected ad platforms. ## Formula **Blended NC Purchases** = **COUNT** ( [Purchases](/reference/metrics/advertising/blended/purchases) ) **WHERE** customer = new **AND** attributed = true ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | | [**Blended Purchases**](/reference/metrics/advertising/blended/purchases/blended-purchases) | Total purchase conversions attributed to ads across all platforms | | [**customer = new**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | First-time buyers with no prior order history | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Count | *** ## Example Your ads drove **847 new customer purchases** across all channels in March: | Channel | NC Purchases | % of Total | | ----------------- | ------------ | ---------- | | Meta Ads | 412 | 48.6% | | Google Ads | 298 | 35.2% | | TikTok Ads | 137 | 16.2% | | **Blended Total** | **847** | **100%** | *** ## How It Works Blended New Customer Purchases counts first-time buyers whose purchases are attributed to any advertising channel. Upstack identifies new customers by checking order history—if no prior purchase exists, the customer is flagged as new. This metric aggregates new customer conversions across Meta, Google, and TikTok into a single cross-platform view. *** ## When to Use | Scenario | Action | | ----------------------------------- | ----------------------------------------------------------------------- | | Measuring acquisition effectiveness | Compare NC purchases across channels to find best prospecting platforms | | Calculating new customer CPA | Use as denominator: Spend ÷ NC Purchases | | Evaluating campaign types | Separate prospecting vs retargeting performance | | Forecasting growth | Project new customer acquisition rates from advertising | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ---------------------------------------------- | | [Blended Purchases](/reference/metrics/advertising/blended/purchases/blended-purchases) | Total purchases (new + returning customers) | | [Blended NC CPA](/reference/metrics/advertising/blended/blended-new-customer-cost-per-acquisition) | Cost to acquire each new customer | | [Blended NC ROAS](/reference/metrics/advertising/blended/blended-new-customer-return-on-ad-spend) | Revenue efficiency from new customer purchases | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended New Customer Purchases Value: Revenue from First-Time Buyers Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-new-customer-purchases-value Track total revenue from first-time customers attributed to your ads across Meta, Google, and TikTok. Optimize acquisition spend with NC purchase value. Total monetary value from purchases made by first-time customers, attributed to your advertising across all platforms. ## Formula **Blended NC Purchases Value** = **SUM** ( Purchase Value ) **WHERE** customer = new ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [**Purchase Value**](/reference/metrics/advertising/blended/purchases/blended-purchases-value) | Revenue from all purchase conversions attributed to ads | | [**customer = new**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | First-time buyers with no prior order history | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaigns generated **\$32,400** from new customers this month: | Channel | NC Value | Share | | ---------- | ------------ | ----- | | Meta Ads | \$18,900 | 58% | | Google Ads | \$9,720 | 30% | | TikTok Ads | \$3,780 | 12% | | **Total** | **\$32,400** | 100% | *** ## How It Works Blended New Customer Purchases Value sums revenue from orders placed by customers making their first purchase. Upstack identifies new customers by checking order history, then aggregates attributed revenue across Meta, Google, and TikTok. *** ## When to Use | Scenario | Action | | --------------------------- | -------------------------------------------------------------- | | Measuring acquisition value | Track revenue specifically from new customer acquisition | | Calculating NC ROAS | Divide by Ad Spend to find new customer acquisition efficiency | | Channel comparison | Identify which platforms drive highest-value new customers | | Budget allocation | Shift acquisition spend toward channels with highest NC value | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | [Blended New Customer Purchases](/reference/metrics/advertising/blended/blended-new-customer-purchases) | Count of NC purchases; this metric sums their values | | [Blended New Customer ROAS](/reference/metrics/advertising/blended/blended-new-customer-return-on-ad-spend) | NC Purchases Value ÷ Ad Spend | | [Blended Purchases Value](/reference/metrics/advertising/blended/purchases/blended-purchases-value) | Total purchase value including new and returning customers | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended New Customer ROAS: First-Time Buyer Ad Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-new-customer-return-on-ad-spend Measure return on ad spend for new customer purchases across all channels. See how many dollars of first-time buyer revenue you earn per dollar spent. How many dollars of new customer revenue you generate for every dollar spent on ads across all channels. ## Formula **Blended New Customer ROAS** = [**Blended New Customer Purchases Value**](/reference/metrics/advertising/blended/blended-new-customer-purchases-value) ÷ [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | [**Blended New Customer Purchases Value**](/reference/metrics/advertising/blended/blended-new-customer-purchases-value) | Total revenue from first-time buyers across all ad platforms | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Combined ad spend across Meta, Google, and TikTok | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Multiplier | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$15,000** on ads this month and generated **\$37,500** from first-time customers: | Channel | NC Revenue | Spend | NC ROAS | | ----------- | ------------ | ------------ | --------- | | Meta | \$22,500 | \$8,000 | 2.81× | | Google | \$10,500 | \$5,000 | 2.10× | | TikTok | \$4,500 | \$2,000 | 2.25× | | **Blended** | **\$37,500** | **\$15,000** | **2.50×** | *** ## How It Works Blended New Customer ROAS aggregates revenue from first-time buyers across all connected ad platforms and divides by total spend. A customer is "new" if they have no prior purchases in your store's history. This metric isolates acquisition efficiency from repeat purchase revenue. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------------------------- | | Evaluating acquisition efficiency | Compare NC ROAS to overall ROAS to see true acquisition cost | | Scaling new customer campaigns | Identify which channels acquire customers most profitably | | LTV-based budget planning | Combine with customer lifetime value for long-term ROI | | Diagnosing growth stalls | Low NC ROAS with high overall ROAS signals over-reliance on repeat buyers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | | [Blended ROAS](/reference/metrics/advertising/blended/blended-return-on-ad-spend) | Total return including repeat customers | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | The denominator in this calculation | | [Blended New Customer Purchases Value](/reference/metrics/advertising/blended/blended-new-customer-purchases-value) | The numerator in this calculation | [See all Blended Efficiency metrics →](/reference/metrics/advertising/blended) # Blended Outbound CTR: External Click-Through Rate Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-outbound-click-through-rate Track your blended outbound click-through rate across Meta, Google, and TikTok ads. Measure the percentage of impressions that drove traffic to your site. Blended Outbound CTR measures the percentage of impressions that resulted in an outbound click—clicks that drove users to your website or app from ad platforms. ## Formula **Blended Outbound CTR** = ( [**Blended Outbound Clicks**](/reference/metrics/advertising/blended/blended-outbound-clicks) ÷ [**Blended Impressions**](/reference/metrics/advertising/blended/blended-impressions) ) × 100 ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [**Blended Outbound Clicks**](/reference/metrics/advertising/blended/blended-outbound-clicks) | Clicks that drove users from ad platforms to your site | | [**Blended Impressions**](/reference/metrics/advertising/blended/blended-impressions) | Total impressions across all advertising channels | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns delivered **1,800,000 impressions** and **18,000 outbound clicks** across all channels: | Metric | Value | | ------------------------ | --------- | | Blended Impressions | 1,800,000 | | Blended Outbound Clicks | 18,000 | | **Blended Outbound CTR** | **1.00%** | *** ## How It Works Blended Outbound CTR aggregates outbound clicks and impressions from Meta, Google, and TikTok, then calculates the rate at which ad views converted into external site visits. Unlike standard CTR, this focuses only on clicks that left the ad platform. *** ## When to Use | Scenario | Action | | ---------------------------- | ----------------------------------------------------------- | | Measuring traffic efficiency | Compare to standard CTR to see external vs total engagement | | Evaluating landing page CTAs | Low outbound CTR may indicate weak calls-to-action | | Budget optimization | Allocate spend to platforms with higher outbound CTR | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------- | --------------------------------------- | | [Blended Outbound Clicks](/reference/metrics/advertising/blended/blended-outbound-clicks) | Numerator in outbound CTR calculation | | [Blended Impressions](/reference/metrics/advertising/blended/blended-impressions) | Denominator in outbound CTR calculation | | [Blended CTR](/reference/metrics/advertising/blended/blended-click-through-rate) | Total CTR including in-platform clicks | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended Outbound Clicks: Off-Platform Click Tracking Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-outbound-clicks Track outbound clicks that drive traffic from ad platforms to your website or app. Aggregate data from Meta, Google, and TikTok Ads. Blended Outbound Clicks measures how many ad clicks took users away from ad platforms to your website, app, or other external destinations. ## Formula **Blended Outbound Clicks** = **SUM** ( Outbound Clicks ) **ACROSS** all platforms ### Formula Components | Metric | Definition | | -------------------------- | ------------------------------------------------ | | **Meta Outbound Clicks** | Clicks that sent people from Meta to your site | | **Google Outbound Clicks** | Clicks that sent people from Google to your site | | **TikTok Outbound Clicks** | Clicks that sent people from TikTok to your site | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example A DTC skincare brand ran campaigns across Meta and Google Ads during a spring promotion. Their **outbound click performance**: | Platform | Outbound Clicks | Spend | Cost per Outbound Click | | ----------------- | --------------- | ------- | ----------------------- | | Meta Ads | 8,420 | \$2,105 | \$0.25 | | Google Ads | 3,180 | \$954 | \$0.30 | | **Blended Total** | **11,600** | \$3,059 | \$0.26 | *** ## How It Works Outbound clicks count only clicks that lead users away from the ad platform to an external destination—typically your website or app. This excludes clicks that stay within the platform (like clicks to view more of a carousel or expand a post). Upstack aggregates this metric from each connected ad account to give you a unified view of traffic-driving performance. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------------------------ | | Measuring traffic acquisition | Compare outbound clicks to landing page views to identify drop-off | | Evaluating ad creative | Higher outbound clicks indicate stronger calls-to-action | | Cross-platform comparison | Identify which platforms drive the most site traffic | | Budget allocation | Shift spend toward platforms with lower cost per outbound click | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | [Blended Link Clicks](/reference/metrics/advertising/blended/blended-link-clicks) | All link clicks including in-platform; outbound is a subset | | [Blended Landing Page Views](/reference/metrics/advertising/blended/blended-landing-page-views) | Users who fully loaded your page after an outbound click | | [Blended Clicks](/reference/metrics/advertising/blended/blended-clicks) | Total clicks of all types; outbound focuses on external traffic | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended Reach: Cross-Platform Audience Size Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-reach Track unique users who saw your ads across Meta, Google, and TikTok. Understand total audience size and eliminate platform overlap in reach reporting. The total number of unique users who saw your ads at least once across all connected advertising platforms. ## Formula **Blended Reach** = **COUNT DISTINCT** ( Users ) **WHERE** impression ≥ 1 **ACROSS** all platforms ### Formula Components | Metric | Definition | | ------------------ | --------------------------------------------------------------------------------- | | **Users** | Individual people served at least one ad impression across any connected platform | | **impression ≥ 1** | Filter ensuring only users with at least one ad view are counted | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Count Distinct | *** ## Example Your campaigns reached **2.4M unique users** across all platforms this month: | Platform | Reach | Share | | ---------- | ----- | ----- | | Meta Ads | 1.8M | 75% | | Google Ads | 420K | 18% | | TikTok Ads | 180K | 7% | Note: Platform totals may exceed blended reach due to cross-platform audience overlap. *** ## How It Works Blended Reach aggregates unique user counts from all connected ad platforms. Each platform reports its own reach independently—users who see ads on multiple platforms are counted once per platform but may appear in multiple platform totals. The blended figure provides a unified view of total audience exposure. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------------ | | Measuring brand awareness | Track how many unique people saw your ads | | Evaluating media mix | Compare reach contribution by platform | | Calculating frequency | Divide Blended Impressions by Blended Reach | | Optimizing CPP | Monitor cost per person reached across platforms | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | -------------------------------------------- | | [Blended Impressions](/reference/metrics/advertising/blended/blended-impressions) | Total ad views (Reach counts unique users) | | [Blended Frequency](/reference/metrics/advertising/blended/blended-frequency) | Impressions ÷ Reach (average views per user) | | [Blended CPP](/reference/metrics/advertising/blended/blended-cost-per-thousand-people-reached) | Spend ÷ Reach (cost per person reached) | [See all Blended Audience metrics →](/reference/metrics/advertising/blended) # Blended ROAS: Return on Ad Spend Across All Channels Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-return-on-ad-spend Track Blended ROAS to measure how many dollars of revenue you generate for every dollar spent on ads across Meta, Google, and TikTok combined. Blended ROAS measures how many dollars of purchase revenue you generate for every dollar spent on ads across all channels. ## Formula **Blended ROAS** = [**Blended Purchases Value**](/reference/metrics/advertising/blended/purchases/blended-purchases-value) ÷ [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | [**Blended Purchases Value**](/reference/metrics/advertising/blended/purchases/blended-purchases-value) | Total attributed revenue from purchases across all ad platforms | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total ad spend across Meta, Google, and TikTok | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Multiplier | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$15,000** on advertising last month and generated **\$52,500** in attributed revenue: | Platform | Spend | Revenue | Platform ROAS | | ----------- | ------------ | ------------ | ------------- | | Meta Ads | \$8,000 | \$28,000 | 3.5x | | Google Ads | \$5,000 | \$17,500 | 3.5x | | TikTok Ads | \$2,000 | \$7,000 | 3.5x | | **Blended** | **\$15,000** | **\$52,500** | **3.5x** | *** ## How It Works Blended ROAS aggregates spend and attributed purchase revenue across all connected ad platforms. A ROAS of 3x means you generate \$3 in revenue for every \$1 spent on ads. This provides a unified view of advertising efficiency without manually combining platform data. *** ## When to Use | Scenario | Action | | -------------------------------- | --------------------------------------------------------- | | Evaluating overall ad efficiency | Compare Blended ROAS to your target (e.g., 3x minimum) | | Reporting to stakeholders | Use as the single efficiency metric across all paid media | | Budget allocation decisions | Compare to platform-specific ROAS to identify winners | | Profitability analysis | Combine with margin data to assess true ad profitability | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Denominator — total cost of ads | | [Blended Purchases Value](/reference/metrics/advertising/blended/purchases/blended-purchases-value) | Numerator — total attributed revenue | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Inverse efficiency — cost to acquire a customer | [See all Blended Efficiency metrics →](/reference/metrics/advertising/blended) # Blended Spend: Total Ad Spend Across All Channels Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-spend Track your total advertising spend across Meta, Google, and TikTok in one unified metric. See how to analyze and optimize your marketing budget. The total amount of money spent on advertising across all connected ad platforms. ## Formula **Blended Spend** = **SUM** ( Ad Spend ) **ACROSS** Meta Ads, Google Ads, TikTok Ads | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your marketing campaigns spent **\$24,750** across all channels this month: | Platform | Spend | Share | | ---------- | -------- | ----- | | Meta Ads | \$12,400 | 50% | | Google Ads | \$8,600 | 35% | | TikTok Ads | \$3,750 | 15% | *** ## How It Works Blended Spend aggregates advertising costs from all connected ad platforms into a single metric. Data syncs daily from each platform's reporting API. Currency conversions use the exchange rate at time of spend. *** ## When to Use | Scenario | Action | | ------------------------ | ------------------------------------------------ | | Total budget tracking | Monitor overall marketing investment | | Calculating blended ROAS | Divide total revenue by Blended Spend | | Budget pacing | Compare actual spend against monthly targets | | CFO reporting | Provide single source of truth for ad investment | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ----------------------------- | | [Blended Impressions](/reference/metrics/advertising/blended/blended-impressions) | Reach generated by this spend | | [Blended ROAS](/reference/metrics/advertising/blended/blended-return-on-ad-spend) | Revenue ÷ Blended Spend | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Blended Spend ÷ Conversions | [See all Blended Spend metrics →](/reference/metrics/advertising/blended) # Blended ThruPlay Views: Cross-Platform Video Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-thruplay-views Track ThruPlay views across Meta, Google, and TikTok. Measures videos watched to completion or for at least 15 seconds. Blended ThruPlay Views measures the total number of times your video ads were watched to completion or for at least 15 seconds across all connected ad platforms. ## Formula **Blended ThruPlay Views** = **COUNT** ( [Video Views](/reference/metrics/advertising/blended/blended-video-views) ) **WHERE** watch\_time ≥ 15s **OR** completed = true ### Formula Components | Metric | Definition | | ----------------- | -------------------------------------------------------------- | | Video Views | Individual video ad impressions that met the ThruPlay criteria | | watch\_time ≥ 15s | Videos watched for at least 15 seconds | | completed = true | Videos watched to the end | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your video campaign ran across Meta, Google, and TikTok last week with **12,450 ThruPlay views**. | Platform | ThruPlay Views | Avg. Watch Time | | ----------------- | -------------- | --------------- | | Meta Ads | 7,200 | 18s | | Google Ads | 3,100 | 22s | | TikTok Ads | 2,150 | 16s | | **Blended Total** | **12,450** | 18.5s | *** ## How It Works A ThruPlay view is counted when a user watches your video ad to completion or for at least 15 seconds—whichever comes first. This metric aggregates ThruPlay-equivalent views across all connected ad platforms, providing a unified view of video engagement regardless of where your ads run. *** ## When to Use | Scenario | Action | | -------------------------------------------- | ------------------------------------------------------------ | | Comparing video performance across platforms | Use blended view to see total engaged video views | | Optimizing video creative | Identify which platforms drive the most ThruPlay completions | | Measuring brand awareness campaigns | Track meaningful video engagement at scale | | Allocating video ad budget | Shift spend toward platforms with higher ThruPlay rates | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | -------------------------------------- | | [Blended Video Views](/reference/metrics/advertising/blended/blended-video-views) | Total video views (any duration) | | [Blended Video Views (100%)](/reference/metrics/advertising/blended/blended-video-views-100-percent) | Videos watched to full completion | | [Blended Video Views (15s)](/reference/metrics/advertising/blended/blended-video-views-15-seconds) | Videos watched for at least 15 seconds | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended Unique CTR: Percentage of Reach That Clicked Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-unique-click-through-rate Track your unique click-through rate across Meta, Google, and TikTok ads. Measure what percentage of reached users clicked at least once. Blended Unique CTR measures the percentage of unique users reached who clicked your ads at least once across all advertising channels. ## Formula **Blended Unique CTR** = ( [**Blended Unique Clicks**](/reference/metrics/advertising/blended/blended-unique-clicks) ÷ [**Blended Reach**](/reference/metrics/advertising/blended/blended-reach) ) × 100 ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------- | -------------------------------------------------------------- | | [**Blended Unique Clicks**](/reference/metrics/advertising/blended/blended-unique-clicks) | Distinct people who clicked at least once across all platforms | | [**Blended Reach**](/reference/metrics/advertising/blended/blended-reach) | Unique users who saw your ads across all platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns reached **850,000 unique users** with **12,750 unique clickers** last month. | Metric | Value | | ---------------------- | --------- | | Blended Unique Clicks | 12,750 | | Blended Reach | 850,000 | | **Blended Unique CTR** | **1.50%** | *** ## How It Works Blended Unique CTR divides unique clickers by unique users reached across Meta, Google, and TikTok. Unlike standard CTR (which uses impressions), this shows what percentage of your actual audience engaged with your ads at least once. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------- | | Measuring audience engagement | Compare to standard CTR for true reach conversion | | Evaluating creative resonance | Higher unique CTR indicates broader appeal | | Assessing targeting quality | Low unique CTR may signal poor audience fit | | Cross-platform benchmarking | Compare engagement rates across unified audience | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------- | ---------------------------------- | | [Blended Unique Clicks](/reference/metrics/advertising/blended/blended-unique-clicks) | Numerator — unique clickers | | [Blended Reach](/reference/metrics/advertising/blended/blended-reach) | Denominator — unique users reached | | [Blended CTR](/reference/metrics/advertising/blended/blended-click-through-rate) | Impression-based CTR alternative | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended Unique Clicks: Deduplicated Ad Clicks Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-unique-clicks Track unique people who clicked your ads across Meta, Google, and TikTok. Count each person once regardless of total clicks. Blended Unique Clicks counts the number of distinct people who clicked your ads at least once, aggregated across all advertising platforms. ## Formula **Blended Unique Clicks** = **COUNT DISTINCT** ( Users ) **WHERE** clicked = true **ACROSS** all platforms ### Formula Components | Metric | Definition | | ------------------ | ------------------------------------------------------------ | | **Unique Users** | Distinct people who interacted with ads across all platforms | | **clicked = true** | Filters to users who clicked at least one ad | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Count Distinct | *** ## Example Your campaigns reached **8,420 unique clickers** in March across all platforms. | Platform | Impressions | Total Clicks | Unique Clicks | | ----------- | ----------- | ------------ | ------------- | | Meta | 125,000 | 3,200 | 2,850 | | Google | 89,000 | 2,100 | 1,920 | | TikTok | 156,000 | 4,500 | 3,650 | | **Blended** | **370,000** | **9,800** | **8,420** | *** ## How It Works Each platform reports unique clicks by deduplicating users who clicked multiple times. Blended Unique Clicks aggregates these counts across Meta, Google, and TikTok to show total unique engagement. *** ## When to Use | Scenario | Action | | ----------------------------- | -------------------------------------------------------------- | | Measuring true engagement | Compare unique clicks vs total clicks to gauge repeat interest | | Evaluating creative quality | High unique-to-total ratio indicates broad appeal | | Assessing audience saturation | Declining unique clicks may signal audience fatigue | | Budget allocation | Shift spend to platforms with more unique clickers | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [Blended Clicks](/reference/metrics/advertising/blended/blended-clicks) | Total clicks including repeats from same user | | [Blended Unique CTR](/reference/metrics/advertising/blended/blended-unique-click-through-rate) | Percentage of impressions resulting in unique clicks | | [Blended Cost per Unique Click](/reference/metrics/advertising/blended/blended-cost-per-unique-click) | Average cost to acquire each unique clicker | [See all Blended Clicks metrics →](/reference/metrics/advertising/blended) # Blended Video Plays: Cross-Platform Video Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video-plays Track total video plays across Meta, Google, and TikTok ads. Monitor cross-platform video engagement and autoplay performance in one metric. Blended Video Plays measures the total number of times your videos started playing across all advertising platforms, including autoplay. ## Formula **Blended Video Plays** = **SUM** ( Video Plays ) across Meta, Google, TikTok ### Formula Components | Metric | Definition | | ------------------ | ------------------------------------- | | Meta Video Plays | Video plays from Meta Ads campaigns | | Google Video Plays | Video plays from Google Ads campaigns | | TikTok Video Plays | Video plays from TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your video campaigns generated **48,250 video plays** last week across all platforms. | Platform | Video Plays | Share | | ---------- | ----------- | ----- | | Meta Ads | 22,100 | 46% | | TikTok Ads | 18,650 | 39% | | Google Ads | 7,500 | 15% | | **Total** | **48,250** | 100% | *** ## How It Works Video plays count each time a video starts playing, including autoplay. This metric aggregates plays from Meta, Google, and TikTok into a single cross-platform total. Each platform may define "play" slightly differently—Meta counts at 0 seconds, while others may require brief engagement. *** ## When to Use | Scenario | Action | | ------------------------ | ------------------------------------------ | | Measuring video reach | Compare plays to impressions for play rate | | Cross-platform reporting | View total video engagement in one metric | | Campaign optimization | Identify which platforms drive most plays | | Creative testing | Compare play counts across video variants | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------- | ---------------------------------------------- | | [Blended Video Views](/reference/metrics/advertising/blended/blended-video-views) | Views with completion requirements | | [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-thruplay-views) | Videos watched to 15s or completion | | [Blended Impressions](/reference/metrics/advertising/blended/blended-impressions) | Total ad impressions for play rate calculation | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended Video Views: Total Video Ad Views Across Platforms Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video-views Track total video views across Meta, Google, and TikTok Ads. Measure video ad engagement with platform-specific view thresholds aggregated. The total number of times your video ads were watched across all advertising platforms. ## Formula **Blended Video Views** = **SUM** ( [Video Views](/reference/metrics/advertising/blended/blended-video-views) ) across all ad platforms ### Formula Components | Metric | Definition | | ------------------ | ------------------------------------- | | Meta Video Views | Video views from Meta Ads campaigns | | Google Video Views | Video views from Google Ads campaigns | | TikTok Video Views | Video views from TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your video campaigns generated **142,500 views** across platforms this week: | Platform | Views | Share | | ---------- | ------ | ----- | | Meta Ads | 78,000 | 55% | | TikTok Ads | 45,200 | 32% | | Google Ads | 19,300 | 13% | *** ## How It Works Blended Video Views sums all video view events from Meta, Google, and TikTok. Each platform has different view thresholds (Meta counts 3+ seconds, TikTok counts 2+ seconds, Google varies by format). This metric gives you a unified view of total video engagement. *** ## When to Use | Scenario | Action | | --------------------- | --------------------------------------------------- | | Measuring video reach | Track total video consumption across platforms | | Comparing ad formats | Evaluate video vs. static ad performance | | Calculating CPV | Divide Spend by Video Views for cost efficiency | | Evaluating creative | Identify which video creatives drive the most views | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ------------------------------------------- | | [Blended CPV](/reference/metrics/advertising/blended/blended-cost-per-view) | Spend ÷ Video Views | | [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-thruplay-views) | Views where video was watched to completion | | [Blended Video Views (25%)](/reference/metrics/advertising/blended/blended-video-views-25-percent) | Views reaching 25% completion | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended Video Views at 100%: Complete Video Plays Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video-views-100-percent Track video views where 100% of the video was watched across Meta, Google, and TikTok Ads. Measure true video completion rates. Video views where 100% (completion) of the video was watched, aggregated across all connected ad platforms. ## Formula **Blended Video Views (100%)** = **SUM** ( [Video Views](/reference/metrics/advertising/blended/blended-video-views) at 100% ) across Meta, Google, TikTok ### Formula Components | Metric | Definition | | -------------------------- | ----------------------------------- | | Meta Video Views at 100% | Completed video views on Meta Ads | | Google Video Views at 100% | Completed video views on Google Ads | | TikTok Video Views at 100% | Completed video views on TikTok Ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example A furniture brand ran video ads across Meta, Google, and TikTok promoting a 30-second product showcase. | Platform | Video Views at 100% | % of Total | | ----------------- | ------------------- | ---------- | | Meta Ads | 12,400 | 48% | | Google Ads | 8,200 | 32% | | TikTok Ads | 5,100 | 20% | | **Blended Total** | **25,700** | 100% | *** ## How It Works This metric aggregates complete video views (100% watched) from all connected advertising platforms into a single blended total. Each platform defines "100% viewed" as watching the entire video duration from start to finish. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------- | | Measuring true engagement | Compare 100% views to partial views to assess content quality | | Evaluating creative performance | Higher completion rates indicate compelling content | | Cross-platform comparison | Identify which platform delivers most engaged viewers | | Retargeting audiences | Build audiences from users who watched entire videos | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | -------------------------------------- | | [Blended Video Views (75%)](/reference/metrics/advertising/blended/blended-video-views-75-percent) | Viewers who watched at least 75% | | [Blended Video Views](/reference/metrics/advertising/blended/blended-video-views) | All video plays regardless of duration | | [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-thruplay-views) | 15s or complete view metric | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended Video Views 15s: Cross-Platform Video Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video-views-15-seconds Track video views with 15+ seconds watched across Meta, Google, and TikTok ads. Measure engaged viewing behavior and optimize video creative. Video views where at least 15 seconds of the video was watched, aggregated across all connected ad platforms. ## Formula **Blended Video Views (15s)** = **SUM** ( [Video Views](/reference/metrics/advertising/blended/blended-video-views) ≥ 15s ) across all platforms ### Formula Components | Metric | Definition | | ---------------------- | -------------------------------------- | | Meta 15s Video Views | Video views reaching 15s on Meta Ads | | Google 15s Video Views | Video views reaching 15s on Google Ads | | TikTok 15s Video Views | Video views reaching 15s on TikTok Ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your video campaigns generated **24,500** 15-second views this week: | Platform | 15s Views | Share | | ---------- | --------- | ----- | | Meta Ads | 14,200 | 58% | | Google Ads | 6,850 | 28% | | TikTok Ads | 3,450 | 14% | *** ## How It Works This metric counts video views where the viewer watched at least 15 seconds. It aggregates equivalent metrics from each ad platform into a single cross-channel view. This threshold indicates meaningful engagement beyond initial impressions. *** ## When to Use | Scenario | Action | | --------------------------- | -------------------------------------------- | | Measuring video engagement | Compare engaged viewing across platforms | | Evaluating creative quality | Higher 15s views indicate compelling content | | Optimizing video length | Determine if viewers stay past the 15s mark | | Comparing to ThruPlay | Understand viewing behavior progression | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ------------------------------------------ | | [Blended Video Views](/reference/metrics/advertising/blended/blended-video-views) | Total views (this metric filters for 15s+) | | [Blended Video Views (30s)](/reference/metrics/advertising/blended/blended-video-views-30-seconds) | Views with 30+ seconds watched | | [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-thruplay-views) | Completed/15s threshold metric | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended Video Views at 25%: Partial Watch Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video-views-25-percent Track video views where at least 25% of your ad was watched across Meta, Google, and TikTok. Measure early engagement and viewer interest. Blended Video Views at 25% counts video views where at least 25% of your video ad was watched, aggregated across all connected ad platforms. ## Formula **Blended Video Views (25%)** = **COUNT** ( [Video Views](/reference/metrics/advertising/blended/blended-video-views) ) **WHERE** watch\_progress ≥ 25% ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------- | --------------------------------------------------- | | [**Blended Video Views**](/reference/metrics/advertising/blended/blended-video-views) | Total number of times your video ad started playing | | watch\_progress ≥ 25% | Filter for views reaching at least 25% completion | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your video campaign received **12,450 views at 25%** last week across all platforms. | Platform | Total Views | 25% Views | Drop-off Rate | | -------- | ----------- | --------- | ------------- | | Meta | 8,200 | 6,150 | 25% | | Google | 3,100 | 2,480 | 20% | | TikTok | 4,500 | 3,820 | 15% | *** ## How It Works When a viewer watches at least 25% of your video ad, each platform records a 25% view event. Upstack aggregates these counts across Meta, Google, and TikTok to show your total early engagement. *** ## When to Use | Scenario | Action | | ------------------------------- | ---------------------------------------------- | | High impressions, low 25% views | Improve video hook in first 2-3 seconds | | Comparing creative performance | Use 25% views to identify engaging intros | | Funnel analysis | Compare 25% → 50% → 75% progression | | Budget allocation | Shift spend to platforms with higher 25% rates | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ---------------------------------------------- | | [Blended Video Views](/reference/metrics/advertising/blended/blended-video-views) | Total views before filtering by watch progress | | [Blended Video Views (50%)](/reference/metrics/advertising/blended/blended-video-views-50-percent) | Next milestone in viewer engagement | | [Blended Video Views (75%)](/reference/metrics/advertising/blended/blended-video-views-75-percent) | Near-complete video watches | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended Video Views at 30 Seconds: Cross-Platform Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video-views-30-seconds Track video views with 30+ seconds watched across Meta, Google, and TikTok Ads. Measure engaged viewers and optimize your video ad performance. Video views where at least 30 seconds of the video was watched, aggregated across all connected ad platforms. ## Formula **Blended Video Views (30s)** = **COUNT** ( [Video Views](/reference/metrics/advertising/blended/blended-video-views) ) **WHERE** watch\_time ≥ 30 seconds ### Formula Components | Metric | Definition | | ---------------------- | -------------------------------------- | | Meta 30s Video Views | Video views reaching 30s on Meta Ads | | Google 30s Video Views | Video views reaching 30s on Google Ads | | TikTok 30s Video Views | Video views reaching 30s on TikTok Ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your video campaigns generated **24,800** 30-second views this week: | Platform | 30s Views | Share | | ---------- | --------- | ----- | | Meta Ads | 14,200 | 57% | | Google Ads | 6,450 | 26% | | TikTok Ads | 4,150 | 17% | *** ## How It Works This metric counts video views where the viewer watched at least 30 seconds. For videos shorter than 30 seconds, this threshold may not apply. The metric aggregates equivalent engagement signals from each platform to provide a unified view of engaged viewership. *** ## When to Use | Scenario | Action | | -------------------- | --------------------------------------------------------- | | Measuring engagement | Identify which platforms drive the most engaged viewers | | Optimizing creatives | Compare 30s views across video variants to find winners | | Budget allocation | Shift spend toward platforms with higher engagement rates | | Audience quality | Use as a signal of genuine interest vs. passive scrolling | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ----------------------------------------- | | [Blended Video Views (15s)](/reference/metrics/advertising/blended/blended-video-views-15-seconds) | Shorter engagement threshold (15 seconds) | | [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-thruplay-views) | Completed or 15s+ views | | [Blended Video Views (50%)](/reference/metrics/advertising/blended/blended-video-views-50-percent) | Views reaching 50% of video duration | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended Video Views at 50%: Measure Video Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video-views-50-percent Track video views where at least 50% of the video was watched. Aggregate mid-point video engagement across Meta, Google, and TikTok Ads. Blended Video Views at 50% counts the total number of times your video ads were watched to at least the halfway point across all connected ad platforms. ## Formula **Blended Video Views (50%)** = **SUM** ( [Video Views](/reference/metrics/advertising/blended/blended-video-views) at 50% ) across Meta, Google, TikTok ### Formula Components | Metric | Definition | | ------------------------- | -------------------------------------- | | Meta Video Views at 50% | Video views reaching 50% on Meta Ads | | Google Video Views at 50% | Video views reaching 50% on Google Ads | | TikTok Video Views at 50% | Video views reaching 50% on TikTok Ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your video campaign generated **12,450 views at 50%** last week across all platforms. | Platform | Video Views at 50% | Share | | ---------- | ------------------ | ----- | | Meta Ads | 7,200 | 57.8% | | Google Ads | 3,100 | 24.9% | | TikTok Ads | 2,150 | 17.3% | | **Total** | **12,450** | 100% | *** ## How It Works This metric aggregates video views that reached the 50% completion mark from Meta Ads, Google Ads, and TikTok Ads into a single blended number. It provides a unified view of mid-point engagement across your video campaigns without needing to check each platform separately. *** ## When to Use | Scenario | Action | | ------------------------------------------- | ------------------------------------------------------------- | | Comparing video engagement across platforms | Use blended 50% views as a unified benchmark | | Measuring content quality | Higher 50% views indicate compelling video content | | Identifying drop-off points | Compare 25%, 50%, 75%, 100% views to find where viewers leave | | Optimizing video length | Low 50% completion suggests videos may be too long | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ---------------------------- | | [Blended Video Views (25%)](/reference/metrics/advertising/blended/blended-video-views-25-percent) | Earlier engagement threshold | | [Blended Video Views (75%)](/reference/metrics/advertising/blended/blended-video-views-75-percent) | Later engagement threshold | | [Blended Video Views (100%)](/reference/metrics/advertising/blended/blended-video-views-100-percent) | Full video completions | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended Video Views at 75%: Cross-Platform Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video-views-75-percent Track video views where at least 75% was watched across Meta, Google, and TikTok Ads. Measure deep engagement with your video creative. Blended Video Views at 75% counts video ad views where at least 75% of the video was watched—aggregated across all your connected ad platforms. ## Formula **Blended Video Views (75%)** = **SUM** ( 75% [Video Views](/reference/metrics/advertising/blended/blended-video-views) ) across Meta, Google, TikTok ### Formula Components | Metric | Definition | | ---------------------- | -------------------------------------- | | Meta 75% Video Views | Video views reaching 75% on Meta Ads | | Google 75% Video Views | Video views reaching 75% on Google Ads | | TikTok 75% Video Views | Video views reaching 75% on TikTok Ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your video campaign generated **42,500 75% video views** across all platforms last month. | Platform | 75% Video Views | Total Views | Deep Engagement Rate | | ----------- | --------------- | ----------- | -------------------- | | Meta Ads | 24,000 | 85,000 | 28.2% | | Google Ads | 11,500 | 38,000 | 30.3% | | TikTok Ads | 7,000 | 32,000 | 21.9% | | **Blended** | **42,500** | **155,000** | **27.4%** | *** ## How It Works This metric aggregates 75% video views from Meta, Google, and TikTok into a single number. A view counts when someone watches at least three-quarters of your video ad. This indicates strong engagement—viewers are invested enough to watch most of your content rather than skipping early. *** ## When to Use | Scenario | Action | | -------------------------------------- | -------------------------------------------------------- | | Measuring deep content engagement | Track 75% views to identify videos that hold attention | | Comparing creative performance | Higher 75% rates indicate more compelling content | | Optimizing for consideration campaigns | Use as a benchmark for mid-funnel video effectiveness | | Allocating budget across platforms | Shift spend toward platforms with higher deep engagement | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [Blended Video Views (50%)](/reference/metrics/advertising/blended/blended-video-views-50-percent) | Lower engagement threshold—viewers watched half | | [Blended Video Views (100%)](/reference/metrics/advertising/blended/blended-video-views-100-percent) | Highest engagement—video watched to completion | | [Blended ThruPlay Views](/reference/metrics/advertising/blended/blended-thruplay-views) | 15-second or completion views | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended Video Views at 95%: Near-Complete Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/blended-video-views-95-percent Track video views where at least 95% was watched across Meta, Google, and TikTok Ads. Measure near-complete engagement with your video creative. Blended Video Views at 95% counts video ad views where at least 95% of the video was watched—aggregated across all your connected ad platforms. ## Formula **Blended Video Views (95%)** = **SUM** ( 95% [Video Views](/reference/metrics/advertising/blended/blended-video-views) ) across Meta, Google, TikTok ### Formula Components | Metric | Definition | | ---------------------- | -------------------------------------- | | Meta 95% Video Views | Video views reaching 95% on Meta Ads | | Google 95% Video Views | Video views reaching 95% on Google Ads | | TikTok 95% Video Views | Video views reaching 95% on TikTok Ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your video campaign generated **38,200 95% video views** across all platforms last month. | Platform | 95% Video Views | Total Views | Near-Complete Rate | | ----------- | --------------- | ----------- | ------------------ | | Meta Ads | 21,500 | 85,000 | 25.3% | | Google Ads | 10,200 | 38,000 | 26.8% | | TikTok Ads | 6,500 | 32,000 | 20.3% | | **Blended** | **38,200** | **155,000** | **24.6%** | *** ## How It Works This metric aggregates 95% video views from Meta, Google, and TikTok into a single number. A view counts when someone watches at least 95% of your video ad. This represents near-complete engagement—viewers who watched almost the entire video, indicating they found the content compelling enough to stay through nearly all of it. *** ## When to Use | Scenario | Action | | ----------------------------------- | -------------------------------------------------------------------------------------------- | | Measuring near-complete engagement | Track 95% views to identify videos that captivate viewers through almost the entire duration | | Comparing to 100% completion | Use the gap between 95% and 100% views to identify where viewers drop off at the very end | | Optimizing call-to-action placement | Ensure CTAs appear before the 95% mark to reach highly engaged viewers | | Building high-intent audiences | Retarget viewers who reached 95%—they're nearly as engaged as completers | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------- | | [Blended Video Views (75%)](/reference/metrics/advertising/blended/blended-video-views-75-percent) | Lower threshold—viewers watched three-quarters | | [Blended Video Views (100%)](/reference/metrics/advertising/blended/blended-video-views-100-percent) | Highest engagement—video watched to completion | | [Blended Video Views](/reference/metrics/advertising/blended/blended-video-views) | All video views regardless of watch duration | [See all Blended Video metrics →](/reference/metrics/advertising/blended) # Blended Comments Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/comments All Blended metrics for comments — volume, value, and cost in one place. Metrics for comments across your Blended campaigns: * [Blended Comments: Cross-Platform Ad Conversation Volume](/reference/metrics/advertising/blended/comments/blended-comments) * [Blended Cost Per Comment: Ad Engagement Efficiency](/reference/metrics/advertising/blended/comments/blended-cost-per-comment) # Blended Comments: Cross-Platform Ad Conversation Volume Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/comments/blended-comments Track total comments on your ads across Meta, Google, and TikTok to measure audience engagement and conversation volume. Blended Comments measures the total number of comments on your ads across all connected advertising platforms. ## Formula **Blended Comments** = **SUM** ( [Comments](/reference/metrics/advertising/blended/comments) ) across all ad platforms ### Formula Components | Metric | Definition | | --------------- | ---------------------------------------------- | | Meta Comments | Comments on your ads from Meta Ads campaigns | | Google Comments | Comments on your ads from Google Ads campaigns | | TikTok Comments | Comments on your ads from TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your brand ran a multi-channel product launch campaign in April, generating **4,156 total comments** across all platforms. | Platform | Comments | Insight | | ---------- | -------- | ------------------------------------------- | | Meta Ads | 2,341 | Strong engagement on Facebook and Instagram | | TikTok Ads | 1,512 | High conversation on video content | | Google Ads | 303 | Lower comment volume on YouTube | *** ## How It Works Blended Comments aggregates comment counts from all connected advertising platforms. Each platform reports comments based on their own counting methodology—the blended total provides a unified view of conversation volume across your entire paid media presence. *** ## When to Use | Scenario | Action | | --------------------------------------- | --------------------------------------------------------------- | | Cross-platform campaign comparison | Compare total engagement volume across multi-channel campaigns | | Identifying high-conversation creatives | Find which ads spark the most discussion regardless of platform | | Measuring brand awareness impact | Track overall audience interaction with your advertising | | Detecting viral moments | Monitor spikes in cross-platform conversation | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [Blended Engagements](/reference/metrics/advertising/blended/engagements/blended-engagements) | Parent metric including comments, shares, and reactions | | [Blended Shares](/reference/metrics/advertising/blended/shares/blended-shares) | Measures share/repost volume across channels | | [Blended Reactions](/reference/metrics/advertising/blended/reactions/blended-reactions) | Measures likes and reactions across channels | [See all Blended Engagement metrics →](/reference/metrics/advertising/blended) # Blended Cost Per Comment: Ad Engagement Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/comments/blended-cost-per-comment Measure the cost per comment on your ads across Meta, Google, and TikTok. Optimize engagement spending with this aggregated efficiency metric. The cost per comment on your ads, aggregated across all advertising platforms. ## Formula **Blended Cost Per Comment** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Comments**](/reference/metrics/advertising/blended/comments/blended-comments) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------- | ------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total ad spend across platforms | | [**Blended Comments**](/reference/metrics/advertising/blended/comments/blended-comments) | Total comments across platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns spent **\$2,540** and generated **127 comments**—yielding **\$20.00 cost per comment**. Meta drove comments at \$17.65 while TikTok cost \$26.67 per comment. *** ## How It Works Divides total ad spend by total comments across all platforms. Lower values mean more cost-efficient comment generation. *** ## When to Use | Scenario | Action | | --------------------- | ---------------------------------------------------- | | Engagement efficiency | Compare cost to acquire comments across campaigns | | Budget optimization | Identify platforms with lower engagement costs | | Creative testing | Measure which ads drive cost-efficient conversations | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------- | ----------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator (total spend) | | [Blended Comments](/reference/metrics/advertising/blended/comments/blended-comments) | Denominator (total comments) | | [Blended Cost Per Engagement](/reference/metrics/advertising/blended/engagements/blended-cost-per-engagement) | Broader engagement efficiency | [See all Blended Engagement metrics →](/reference/metrics/advertising/blended) # Blended Completed Registrations Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/completed-registrations All Blended metrics for completed-registrations — volume, value, and cost in one place. Metrics for completed registrations across your Blended campaigns: * [Blended Completed Registrations: Cross-Channel Registration Tracking](/reference/metrics/advertising/blended/completed-registrations/blended-completed-registrations) * [Blended Completed Registrations Value: Total Value from Ad-Attributed Registrations](/reference/metrics/advertising/blended/completed-registrations/blended-completed-registrations-value) * [Blended Cost per Completed Registration: Aggregate Registration Efficiency](/reference/metrics/advertising/blended/completed-registrations/blended-cost-per-completed-registration) # Blended Completed Registrations: Cross-Channel Registration Tracking Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/completed-registrations/blended-completed-registrations Track completed registrations from advertising across Meta, Google, and TikTok. Monitor cross-channel account signup performance. Blended Completed Registrations measures the total number of registration completions attributed to your ads across all connected advertising platforms. ## Formula **Blended Completed Registrations** = **SUM** ( Registration Events ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [**Meta Completed Registrations**](/reference/metrics/advertising/meta-ads/completed-registrations/meta-completed-registrations) | Registrations attributed to Meta Ads campaigns | | **Google Completed Registrations** | Registrations attributed to Google Ads campaigns | | [**TikTok Completed Registrations**](/reference/metrics/advertising/tiktok-ads/tiktok-complete-registrations) | Registrations attributed to TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaigns generated **1,247 completed registrations** across all channels last month: | Channel | Registrations | Share | | ----------- | ------------- | -------- | | Meta Ads | 623 | 50% | | Google Ads | 412 | 33% | | TikTok Ads | 212 | 17% | | **Blended** | **1,247** | **100%** | *** ## How It Works Blended Completed Registrations aggregates registration completion events reported by each connected advertising platform. When a user completes an account registration that's attributed to an ad, each platform reports it as a completed registration. This metric sums those registrations across Meta, Google, and TikTok to give you a unified view of account signup performance. *** ## When to Use | Scenario | Action | | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Measuring total signups | Track overall registration volume across all paid channels | | Comparing channel efficiency | Pair with [Blended Cost per Completed Registration](/reference/metrics/advertising/blended/completed-registrations/blended-cost-per-completed-registration) to see cost per registration | | Budget allocation | Identify which platforms drive the most account signups | | Lead-to-registration tracking | Compare [Blended Leads](/reference/metrics/advertising/blended/leads/blended-leads) to registrations for funnel insights | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Blended Cost per Completed Registration](/reference/metrics/advertising/blended/completed-registrations/blended-cost-per-completed-registration) | Cost efficiency of acquiring registrations | | [Blended Leads](/reference/metrics/advertising/blended/leads/blended-leads) | Earlier funnel stage — leads before registration | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Total ad spend driving these registrations | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Completed Registrations Value: Total Value from Ad-Attributed Registrations Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/completed-registrations/blended-completed-registrations-value Track the total assigned value of completed registrations attributed to your ads across Meta, Google, and TikTok. Measure registration value impact. Blended Completed Registrations Value measures the total monetary value assigned to registration completions attributed to your advertising across all connected ad platforms. ## Formula **Blended Completed Registrations Value** = **SUM** ( Registration Value ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | | **Meta Completed Registrations Value** | Value of registrations attributed to Meta Ads campaigns | | **Google Completed Registrations Value** | Value of registrations attributed to Google Ads campaigns | | [**TikTok Completed Registrations Value**](/reference/metrics/advertising/tiktok-ads/tiktok-complete-registrations-value) | Value of registrations attributed to TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaigns generated **\$24,940** in completed registration value last month: | Platform | Registrations | Value | Avg Value | | ----------------- | ------------- | ------------ | --------- | | Meta Ads | 623 | \$12,460 | \$20 | | Google Ads | 412 | \$8,240 | \$20 | | TikTok Ads | 212 | \$4,240 | \$20 | | **Blended Total** | **1,247** | **\$24,940** | **\$20** | *** ## How It Works Blended Completed Registrations Value aggregates the total assigned value of registration completion events reported by each connected advertising platform. Each platform reports the value you've assigned to completed registrations in your event setup. Upstack combines these values across Meta, Google, and TikTok to show the total value impact of your registration campaigns. *** ## When to Use | Scenario | Action | | -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Measuring registration ROI | Compare registration value against ad spend to evaluate campaign efficiency | | Budget allocation | Identify which platforms generate the highest-value registrations | | Conversion value analysis | Pair with [Blended Completed Registrations](/reference/metrics/advertising/blended/completed-registrations/blended-completed-registrations) to calculate average registration value | | Cost efficiency analysis | Compare with [Blended Cost per Completed Registration](/reference/metrics/advertising/blended/completed-registrations/blended-cost-per-completed-registration) to assess profitability | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | [Blended Completed Registrations](/reference/metrics/advertising/blended/completed-registrations/blended-completed-registrations) | Count of registrations; this metric shows their total value | | [Blended Cost per Completed Registration](/reference/metrics/advertising/blended/completed-registrations/blended-cost-per-completed-registration) | Cost to acquire registrations; pair with value to assess ROI | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Total ad spend driving these registration values | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Cost per Completed Registration: Aggregate Registration Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/completed-registrations/blended-cost-per-completed-registration Track your cost per completed registration across Meta, Google, and TikTok ads combined. Calculate aggregate CPR to optimize signup acquisition efficiency. The average cost to acquire one completed account registration across all connected advertising platforms. ## Formula **Blended Cost per Completed Registration** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Completed Registrations**](/reference/metrics/advertising/blended/completed-registrations/blended-completed-registrations) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total ad spend across Meta, Google, and TikTok | | [**Blended Completed Registrations**](/reference/metrics/advertising/blended/completed-registrations/blended-completed-registrations) | Total registration completions attributed to your ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your registration campaigns spent **\$8,000** and captured 400 completed registrations this month: | Platform | Spend | Registrations | Cost per Reg | | ----------- | ----------- | ------------- | ------------ | | Meta Ads | \$4,000 | 200 | \$20.00 | | Google Ads | \$2,500 | 125 | \$20.00 | | TikTok Ads | \$1,500 | 75 | \$20.00 | | **Blended** | **\$8,000** | **400** | **\$20.00** | *** ## How It Works Blended Cost per Completed Registration aggregates total ad spend and registration completions across all connected platforms, then calculates the combined cost per registration. This gives you a single efficiency metric for your entire registration program regardless of which platforms you use. *** ## When to Use | Scenario | Action | | ---------------------------- | -------------------------------------------------------------------- | | Setting registration targets | Determine sustainable cost per registration based on customer LTV | | Budget planning | Forecast registration volume based on available spend | | Comparing periods | Track cost per registration trends month-over-month | | Optimizing funnel | Reduce cost per registration by improving targeting or landing pages | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in the formula | | [Blended Completed Registrations](/reference/metrics/advertising/blended/completed-registrations/blended-completed-registrations) | Denominator in the formula | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Cost per acquisition (all conversions, not just registrations) | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Conversions Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/conversions All Blended metrics for conversions — volume, value, and cost in one place. Metrics for conversions across your Blended campaigns: * [Blended Conversions: Total Ad Conversions Across All Channels](/reference/metrics/advertising/blended/conversions/blended-conversions) * [Blended Conversions Value: Total Conversion Value Across Channels](/reference/metrics/advertising/blended/conversions/blended-conversions-value) * [Blended Cost per Conversion: Acquisition Cost Across Channels](/reference/metrics/advertising/blended/conversions/blended-cost-per-conversion) # Blended Conversions: Total Ad Conversions Across All Channels Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/conversions/blended-conversions Track total conversions across Meta, Google, and TikTok Ads in one view. Measure aggregate conversion volume and compare platform performance. The total number of conversion events attributed to your ads across all advertising channels. ## Formula **Blended Conversions** = **SUM** ( [Conversions](/reference/metrics/advertising/blended/conversions) ) **ACROSS** all platforms ### Formula Components | Metric | Definition | | ------------------------------------------------------------------- | ---------------------------------------------------- | | [**Meta Conversions**](/reference/metrics/advertising/meta-ads) | Conversion events attributed to Meta Ads campaigns | | [**Google Conversions**](/reference/metrics/advertising/google-ads) | Conversion events attributed to Google Ads campaigns | | [**TikTok Conversions**](/reference/metrics/advertising/tiktok-ads) | Conversion events attributed to TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your advertising drove **3,156 conversions** across all channels last month: | Platform | Conversions | Share | | ----------------- | ----------- | -------- | | Meta Ads | 1,578 | 50.0% | | Google Ads | 1,104 | 35.0% | | TikTok Ads | 474 | 15.0% | | **Blended Total** | **3,156** | **100%** | *** ## How It Works Blended Conversions aggregates conversion event counts from each connected advertising platform into a single metric. Each platform tracks conversions based on their pixel or conversion tracking—the metric sums them all for a unified view of total ad-attributed conversions without manual spreadsheet aggregation. *** ## When to Use | Scenario | Action | | ----------------------------- | --------------------------------------------------------------------------------------------------- | | Measuring total ad impact | Track blended conversions for aggregate conversion volume | | Calculating overall CPA | Divide [Blended Spend](/reference/metrics/advertising/blended/blended-spend) by Blended Conversions | | Comparing platform efficiency | Break down conversions by platform to see which drives most volume | | Executive reporting | Present unified conversion count across all paid channels | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | | [Blended Conversions Value](/reference/metrics/advertising/blended/conversions/blended-conversions-value) | Total monetary value of these conversions | | [Blended Cost per Conversion](/reference/metrics/advertising/blended/conversions/blended-cost-per-conversion) | Blended Spend ÷ Blended Conversions | | [Blended Purchases](/reference/metrics/advertising/blended/purchases/blended-purchases) | Subset counting only purchase conversions | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Conversions Value: Total Conversion Value Across Channels Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/conversions/blended-conversions-value Track total conversion value across Meta, Google, and TikTok Ads. Measure the monetary value of all ad-attributed conversions in one unified metric. The total monetary value of all conversions attributed to your advertising across Meta, Google, and TikTok combined. ## Formula **Blended Conversions Value** = **SUM** ( Conversion Value ) **ACROSS** all platforms ### Formula Components | Metric | Definition | | ---------------------------- | --------------------------------------------------- | | **Meta Conversions Value** | Total value of conversions attributed to Meta Ads | | **Google Conversions Value** | Total value of conversions attributed to Google Ads | | **TikTok Conversions Value** | Total value of conversions attributed to TikTok Ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your advertising generated **\$87,450** in total conversion value across all channels last month: | Platform | Conversion Value | Share | | ----------------- | ---------------- | -------- | | Meta Ads | \$43,725 | 50.0% | | Google Ads | \$30,608 | 35.0% | | TikTok Ads | \$13,117 | 15.0% | | **Blended Total** | **\$87,450** | **100%** | *** ## How It Works Blended Conversions Value aggregates the monetary value of all conversion events from each connected advertising platform. Each platform reports conversion values based on their tracking—purchases, leads, sign-ups, and other goals with assigned values. The blended total provides a unified view of ad-driven revenue without manual spreadsheet aggregation. *** ## When to Use | Scenario | Action | | ----------------------------------- | --------------------------------------------------------------------------------------------------------- | | Measuring total ad-attributed value | Track blended conversions value for aggregate monetary impact | | Calculating blended ROAS | Divide Blended Conversions Value by [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | | Comparing platform ROI | Break down by platform to see value distribution | | Executive reporting | Present unified conversion value across all paid channels | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | --------------------------------------------- | | [Blended Conversions](/reference/metrics/advertising/blended/conversions/blended-conversions) | Count of conversions that produced this value | | [Blended ROAS](/reference/metrics/advertising/blended/blended-return-on-ad-spend) | Blended Conversions Value ÷ Blended Spend | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Total cost to generate these conversions | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Cost per Conversion: Acquisition Cost Across Channels Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/conversions/blended-cost-per-conversion Track your cost per conversion across all advertising channels. Measure how much you spend on average for each conversion event attributed to your ads. Blended Cost per Conversion measures the average cost for each conversion event attributed to your advertising across all connected platforms. ## Formula **Blended Cost per Conversion** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Conversions**](/reference/metrics/advertising/blended/conversions/blended-conversions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected platforms | | [**Blended Conversions**](/reference/metrics/advertising/blended/conversions/blended-conversions) | Total conversion events attributed across all channels | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$18,000** across all advertising channels in April and generated **1,200 total conversions** (including purchases, leads, and registrations). | Channel | Spend | Conversions | Cost/Conversion | | ----------- | ------------ | ----------- | --------------- | | Meta | \$9,000 | 650 | \$13.85 | | Google | \$6,000 | 380 | \$15.79 | | TikTok | \$3,000 | 170 | \$17.65 | | **Blended** | **\$18,000** | **1,200** | **\$15.00** | *** ## How It Works Blended Cost per Conversion aggregates total ad spend and total conversion events from Meta, Google, and TikTok, then calculates the average cost per conversion. Unlike CPA which focuses specifically on purchase conversions, this metric includes all conversion types—purchases, leads, registrations, app installs, and other configured goals. *** ## When to Use | Scenario | Action | | ------------------------------------------- | ----------------------------------------------------- | | Measuring overall ad efficiency | Track cost to drive any conversion action | | Comparing conversion costs across platforms | Identify which channels convert most efficiently | | Budget allocation decisions | Shift spend toward lower cost-per-conversion channels | | Multi-goal campaign optimization | Evaluate campaigns driving various conversion types | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | --------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total ad spend across platforms | | [Blended Conversions](/reference/metrics/advertising/blended/conversions/blended-conversions) | Denominator — total conversion events | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Purchase-specific version (Spend ÷ Purchases) | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Engagements Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/engagements All Blended metrics for engagements — volume, value, and cost in one place. Metrics for engagements across your Blended campaigns: * [Blended Cost Per Engagement: Aggregate CPE Across Platforms](/reference/metrics/advertising/blended/engagements/blended-cost-per-engagement) * [Blended Engagements: Total Social Ad Interactions](/reference/metrics/advertising/blended/engagements/blended-engagements) # Blended Cost Per Engagement: Aggregate CPE Across Platforms Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/engagements/blended-cost-per-engagement Track cost per social engagement across Meta, Google, and TikTok combined. Learn the formula, see examples, and benchmark engagement efficiency. The cost per social engagement on your ads, aggregated across all advertising platforms. ## Formula **Blended Cost Per Engagement** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Engagements**](/reference/metrics/advertising/blended/engagements/blended-engagements) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------- | ----------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total ad spend across all platforms | | [**Blended Engagements**](/reference/metrics/advertising/blended/engagements/blended-engagements) | Total social engagements across platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns spent **\$12,000** and generated **8,000 engagements** this month: | Platform | Spend | Engagements | CPE | | ----------- | ------------ | ----------- | ---------- | | Meta Ads | \$6,500 | 5,200 | \$1.25 | | Google Ads | \$3,000 | 1,500 | \$2.00 | | TikTok Ads | \$2,500 | 1,300 | \$1.92 | | **Blended** | **\$12,000** | **8,000** | **\$1.50** | *** ## How It Works Blended CPE divides total ad spend by the sum of all social engagements across Meta, Google, and TikTok. Lower CPE indicates more efficient engagement per dollar. *** ## When to Use | Scenario | Action | | ------------------------------- | --------------------------------------------------- | | Benchmark engagement efficiency | Compare CPE across platforms and campaigns | | Optimize social campaigns | Shift budget toward platforms with lower CPE | | Evaluate creative performance | Test which creatives drive engagement at lower cost | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | ------------------------------ | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in CPE calculation | | [Blended Engagements](/reference/metrics/advertising/blended/engagements/blended-engagements) | Denominator in CPE calculation | | [Blended CPM](/reference/metrics/advertising/blended/blended-cost-per-mille) | Cost per 1,000 impressions | [See all Blended Engagement metrics →](/reference/metrics/advertising/blended) # Blended Engagements: Total Social Ad Interactions Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/engagements/blended-engagements Track total social engagements on your ads across all channels. Includes likes, comments, shares, and reactions from Meta, Google, and TikTok. Blended Engagements measures total social interactions on your ads across all advertising channels. ## Formula **Blended Engagements** = [**Blended Likes**](/reference/metrics/advertising/blended/likes/blended-likes) + [**Blended Comments**](/reference/metrics/advertising/blended/comments/blended-comments) + [**Blended Shares**](/reference/metrics/advertising/blended/shares/blended-shares) + [**Blended Reactions**](/reference/metrics/advertising/blended/reactions/blended-reactions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [**Blended Likes**](/reference/metrics/advertising/blended/likes/blended-likes) | Total likes on your ads across all channels | | [**Blended Comments**](/reference/metrics/advertising/blended/comments/blended-comments) | Total comments on your ads across all channels | | [**Blended Shares**](/reference/metrics/advertising/blended/shares/blended-shares) | Total shares of your ads across all channels | | [**Blended Reactions**](/reference/metrics/advertising/blended/reactions/blended-reactions) | Total reactions (likes, loves, etc.) across all channels | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your ads generated **12,450 total engagements** last month across all platforms. | Platform | Engagements | % of Total | | ---------- | ----------- | ---------- | | Meta Ads | 7,820 | 62.8% | | TikTok Ads | 3,180 | 25.5% | | Google Ads | 1,450 | 11.7% | *** ## How It Works Blended Engagements aggregates all social interactions from your advertising accounts—including likes, comments, shares, and reactions. The metric pulls data from Meta, Google, and TikTok to provide a unified view of ad engagement. *** ## When to Use | Scenario | Action | | --------------------------------------------- | ---------------------------------------------- | | Comparing overall engagement across platforms | Use blended view to see total reach | | Measuring content resonance | High engagements indicate compelling creative | | Optimizing ad creative | Compare engagement rates between ad variations | | Reporting to stakeholders | Show total social proof across all channels | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------- | ----------------------------------------- | | [Blended Shares](/reference/metrics/advertising/blended/shares/blended-shares) | Subset: content sharing actions | | [Blended Reactions](/reference/metrics/advertising/blended/reactions/blended-reactions) | Subset: likes, loves, and other reactions | | [Blended Comments](/reference/metrics/advertising/blended/comments/blended-comments) | Subset: comment interactions | [See all Blended Engagement metrics →](/reference/metrics/advertising/blended) # Blended Initiate Checkouts Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/initiate-checkouts All Blended metrics for initiate-checkouts — volume, value, and cost in one place. Metrics for initiate checkouts across your Blended campaigns: * [Blended Cost per Initiate Checkout: Acquisition Efficiency](/reference/metrics/advertising/blended/initiate-checkouts/blended-cost-per-initiate-checkout) * [Blended Initiate Checkouts: Cross-Platform Checkout Intent](/reference/metrics/advertising/blended/initiate-checkouts/blended-initiate-checkouts) * [Blended Initiate Checkouts Value: Cross-Platform Checkout Intent](/reference/metrics/advertising/blended/initiate-checkouts/blended-initiate-checkouts-value) # Blended Cost per Initiate Checkout: Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/initiate-checkouts/blended-cost-per-initiate-checkout Track your blended cost per checkout initiation across all ad platforms. Compare acquisition efficiency and optimize ad spend for checkout conversions. Blended Cost per Initiate Checkout measures how much you spend across all ad platforms to generate one checkout initiation. ## Formula **Blended Cost per Initiate Checkout** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Initiate Checkouts**](/reference/metrics/advertising/blended/initiate-checkouts/blended-initiate-checkouts) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total ad spend aggregated across all connected platforms | | [**Blended Initiate Checkouts**](/reference/metrics/advertising/blended/initiate-checkouts/blended-initiate-checkouts) | Total checkout initiations attributed to ads across all platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns spent **\$2,400** across all platforms and generated **800** checkout initiations. | Metric | Value | Calculation | | -------------------------------------- | ---------- | -------------------- | | Blended Spend | \$2,400 | Sum across platforms | | Blended Initiate Checkouts | 800 | Attributed checkouts | | **Blended Cost per Initiate Checkout** | **\$3.00** | \$2,400 ÷ 800 | *** ## How It Works This metric divides your total ad spend across Meta, Google, and TikTok by the number of checkout initiations attributed to those ads. It provides a unified view of acquisition costs regardless of which platform drove the conversion. *** ## When to Use | Scenario | Action | | ---------------------------------------- | ------------------------------------------------------- | | Comparing overall acquisition efficiency | Benchmark against Blended CPA to assess funnel drop-off | | Setting budget allocation targets | Use as a cost ceiling for checkout-focused campaigns | | Evaluating funnel optimization impact | Track changes after checkout UX improvements | | Measuring cross-platform performance | Compare to platform-specific costs to identify outliers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------ | -------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in calculation | | [Blended Initiate Checkouts](/reference/metrics/advertising/blended/initiate-checkouts/blended-initiate-checkouts) | Denominator in calculation | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Compare checkout cost vs purchase cost | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Initiate Checkouts: Cross-Platform Checkout Intent Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/initiate-checkouts/blended-initiate-checkouts Track checkout initiations attributed to your ads across Meta, Google, and TikTok. Measure purchase intent driven by cross-platform advertising. Blended Initiate Checkouts measures the total number of checkout starts attributed to your ads across all connected advertising platforms. ## Formula **Blended Initiate Checkouts** = **SUM** ( Checkout Initiations ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | | [**Meta Initiate Checkouts**](/reference/metrics/advertising/meta-ads/initiate-checkouts/meta-initiate-checkouts) | Checkout initiations attributed to Meta ads | | **Google Initiate Checkouts** | Checkout initiations attributed to Google ads | | [**TikTok Initiate Checkouts**](/reference/metrics/advertising/tiktok-ads/initiate-checkouts/tiktok-initiate-checkouts) | Checkout initiations attributed to TikTok ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example A DTC brand running campaigns across three platforms sees **1,892 checkout starts** for the week: | Platform | Initiate Checkouts | % of Total | | ----------------- | ------------------ | ---------- | | Meta Ads | 1,047 | 55.3% | | Google Ads | 568 | 30.0% | | TikTok Ads | 277 | 14.7% | | **Blended Total** | **1,892** | **100%** | *** ## How It Works Blended Initiate Checkouts aggregates checkout initiation events reported by each advertising platform. When a user clicks an ad and starts the checkout process within the attribution window, that platform counts the event. This metric sums those events across all connected platforms for a unified view of purchase intent. *** ## When to Use | Scenario | Action | | ---------------------------------------- | ------------------------------------------------ | | Measuring cross-platform purchase intent | Compare checkout starts to completed purchases | | Identifying checkout abandonment | Track ratio of initiates to purchases | | Optimizing for high-intent users | Use to measure bottom-funnel ad effectiveness | | Budgeting across platforms | Identify which platforms drive checkout activity | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [Blended Add to Carts](/reference/metrics/advertising/blended/add-to-carts/blended-add-to-carts) | Earlier funnel stage — cart additions | | [Blended Purchases](/reference/metrics/advertising/blended/purchases/blended-purchases) | Next funnel stage — completed orders | | [Blended Cost per Initiate Checkout](/reference/metrics/advertising/blended/initiate-checkouts/blended-cost-per-initiate-checkout) | Efficiency metric — spend per checkout start | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Initiate Checkouts Value: Cross-Platform Checkout Intent Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/initiate-checkouts/blended-initiate-checkouts-value Track the total monetary value at checkout initiation attributed to your ads across Meta, Google, and TikTok. Measure cross-platform checkout intent. Blended Initiate Checkouts Value measures the total monetary value of checkout initiations attributed to your advertising across all connected ad platforms. ## Formula **Blended Initiate Checkouts Value** = **SUM** ( Checkout Value ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | **Meta Initiate Checkouts Value** | Monetary value of checkout initiations from Meta ads | | **Google Initiate Checkouts Value** | Monetary value of checkout initiations from Google ads | | [**TikTok Initiate Checkouts Value**](/reference/metrics/advertising/tiktok-ads/initiate-checkouts/tiktok-initiate-checkouts-value) | Monetary value of checkout initiations from TikTok ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your ads drove **\$47,250 in checkout initiation value** this month across all platforms: | Platform | Initiate Checkouts Value | % of Total | | ----------------- | ------------------------ | ---------- | | Meta Ads | \$28,350 | 60% | | Google Ads | \$14,175 | 30% | | TikTok Ads | \$4,725 | 10% | | **Blended Total** | **\$47,250** | 100% | *** ## How It Works Blended Initiate Checkouts Value aggregates the cart value at checkout initiation for all conversions attributed to your advertising across Meta, Google, and TikTok. Each platform reports the value based on their own attribution windows and models. This metric represents the total potential revenue from users who started checkout after interacting with your ads. *** ## When to Use | Scenario | Action | | -------------------------- | --------------------------------------------------------------------- | | Evaluating checkout intent | Compare initiate checkout value to purchase value to measure drop-off | | Cross-platform performance | Identify which platforms drive highest-value checkout sessions | | Budget allocation | Shift spend toward platforms generating more checkout value | | Funnel optimization | Track checkout intent trends to spot conversion opportunities | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------ | | [Blended Initiate Checkouts](/reference/metrics/advertising/blended/initiate-checkouts/blended-initiate-checkouts) | Count of checkout initiations; this metric shows their value | | [Blended Purchases Value](/reference/metrics/advertising/blended/purchases/blended-purchases-value) | Completed purchase value (downstream conversion) | | [Blended Add to Carts Value](/reference/metrics/advertising/blended/add-to-carts/blended-add-to-carts-value) | Value at cart addition (upstream funnel step) | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Leads Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/leads All Blended metrics for leads — volume, value, and cost in one place. Metrics for leads across your Blended campaigns: * [Blended Cost per Lead: Cross-Platform Lead Acquisition Cost](/reference/metrics/advertising/blended/leads/blended-cost-per-lead) * [Blended Leads: Cross-Channel Lead Tracking](/reference/metrics/advertising/blended/leads/blended-leads) * [Blended Leads Value: Cross-Platform Lead Value Tracking](/reference/metrics/advertising/blended/leads/blended-leads-value) # Blended Cost per Lead: Cross-Platform Lead Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/leads/blended-cost-per-lead Track your blended cost per lead across Meta, Google, and TikTok ads. Measure lead acquisition efficiency with unified CPL metrics. Blended Cost per Lead measures how much you spend on average to acquire a single lead across all advertising platforms combined. ## Formula **Blended Cost per Lead** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Leads**](/reference/metrics/advertising/blended/leads/blended-leads) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------- | --------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected ad platforms | | [**Blended Leads**](/reference/metrics/advertising/blended/leads/blended-leads) | Total lead conversions attributed across all ad platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your business spent **\$5,000** across all ad platforms last month and generated **250 leads**. | Metric | Value | | ------------------------- | ----------- | | Blended Spend | \$5,000 | | Blended Leads | 250 | | **Blended Cost per Lead** | **\$20.00** | At **\$20 per lead**, you can evaluate whether your cross-platform lead generation strategy is cost-effective compared to industry benchmarks or your target acquisition costs. *** ## How It Works Blended Cost per Lead aggregates total advertising spend from Meta, Google, and TikTok, then divides by the total number of leads attributed to those platforms. This provides a unified view of lead acquisition efficiency without platform-specific silos. *** ## When to Use | Scenario | Action | | --------------------------------------------- | --------------------------------------------------------------- | | Evaluating overall lead generation efficiency | Compare blended CPL against your target cost per lead | | Budget planning for lead campaigns | Use blended CPL to forecast spend needed for lead volume goals | | Benchmarking against industry standards | Compare your blended CPL to industry averages | | Identifying efficiency trends | Track blended CPL over time to spot improvements or degradation | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total ad spend across platforms | | [Blended Leads](/reference/metrics/advertising/blended/leads/blended-leads) | Denominator — total leads across platforms | | [Blended Cost per Acquisition](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Similar efficiency metric for purchases instead of leads | | [Blended ROAS](/reference/metrics/advertising/blended/blended-return-on-ad-spend) | Revenue efficiency metric for overall ad performance | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Leads: Cross-Channel Lead Tracking Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/leads/blended-leads Track total leads generated from your advertising across Meta, Google, and TikTok. Monitor cross-channel lead generation performance. Blended Leads measures the total number of lead submission events attributed to your ads across all connected advertising platforms. ## Formula **Blended Leads** = **SUM** ( Lead Events ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ------------------------------------------------ | | [**Meta Leads**](/reference/metrics/advertising/meta-ads/leads/meta-leads) | Lead submission events from Meta Ads campaigns | | **Google Leads** | Lead submission events from Google Ads campaigns | | [**TikTok Leads**](/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads) | Lead submission events from TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaigns generated **847 leads** across all channels last month: | Platform | Leads | % of Total | | ----------- | ------- | ---------- | | Meta Ads | 412 | 49% | | Google Ads | 298 | 35% | | TikTok Ads | 137 | 16% | | **Blended** | **847** | **100%** | *** ## How It Works Blended Leads aggregates lead conversion events reported by each connected advertising platform. When a user completes a lead action—form submission, newsletter sign-up, quote request, or contact inquiry—that's attributed to an ad, each platform reports it as a lead. This metric sums those leads across Meta, Google, and TikTok to give you a unified view of lead generation performance. *** ## When to Use | Scenario | Action | | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | Measuring total lead volume | Track overall lead generation across all paid channels | | Comparing channel efficiency | Pair with [Blended Cost per Lead](/reference/metrics/advertising/blended/leads/blended-cost-per-lead) to see cost per lead | | Budget allocation | Identify which platforms drive the most leads for your spend | | Funnel analysis | Compare leads to registrations for conversion rate insights | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [Blended Cost per Lead](/reference/metrics/advertising/blended/leads/blended-cost-per-lead) | Cost efficiency metric using leads as the denominator | | [Blended Completed Registrations](/reference/metrics/advertising/blended/completed-registrations/blended-completed-registrations) | Tracks registrations that follow lead capture | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Total ad spend driving these leads | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Leads Value: Cross-Platform Lead Value Tracking Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/leads/blended-leads-value Track the total value of leads generated across Meta, Google, and TikTok ads. Measure cross-channel lead generation value performance. Blended Leads Value measures the total assigned monetary value of leads generated by your advertising across all connected ad platforms. ## Formula **Blended Leads Value** = **SUM** ( Lead Values ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | **Meta Leads Value** | Monetary value of leads generated from Meta Ads campaigns | | **Google Leads Value** | Monetary value of leads generated from Google Ads campaigns | | [**TikTok Leads Value**](/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads-value) | Monetary value of leads generated from TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your lead generation campaigns generated **\$63,500 in total lead value** across all platforms last month: | Platform | Leads Value | % of Total | | ----------------- | ------------ | ---------- | | Meta Ads | \$32,400 | 51% | | Google Ads | \$21,100 | 33% | | TikTok Ads | \$10,000 | 16% | | **Blended Total** | **\$63,500** | **100%** | *** ## How It Works Blended Leads Value aggregates the monetary value assigned to lead events across Meta, Google, and TikTok. Each platform reports lead values based on either your pixel configuration or the value passed with each lead event. This metric provides a unified view of the total potential value your advertising generates through lead capture. *** ## When to Use | Scenario | Action | | ------------------------------ | --------------------------------------------------------------------------------------------------------------------- | | Evaluating lead generation ROI | Compare total lead value against ad spend to assess profitability | | Budget allocation | Identify which platforms generate the highest value leads | | Forecasting pipeline revenue | Use lead value to predict downstream conversions and revenue | | Quality vs. quantity analysis | Pair with [Blended Leads](/reference/metrics/advertising/blended/leads/blended-leads) to calculate average lead value | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | | [Blended Leads](/reference/metrics/advertising/blended/leads/blended-leads) | Count of leads generated; pair with this metric for average lead value | | [Blended Cost per Lead](/reference/metrics/advertising/blended/leads/blended-cost-per-lead) | Efficiency metric showing acquisition cost per lead | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Total ad spend driving these leads | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Likes Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/likes All Blended metrics for likes — volume, value, and cost in one place. Metrics for likes across your Blended campaigns: * [Blended Cost Per Like: Engagement Efficiency](/reference/metrics/advertising/blended/likes/blended-cost-per-like) * [Blended Likes: Cross-Platform Ad Engagement](/reference/metrics/advertising/blended/likes/blended-likes) # Blended Cost Per Like: Engagement Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/likes/blended-cost-per-like Track cost per like across all ad platforms. Compare engagement efficiency and optimize your social ad spend for better results. Blended Cost Per Like measures how much you pay for each like across all your advertising platforms combined. ## Formula **Blended Cost Per Like** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Likes**](/reference/metrics/advertising/blended/likes/blended-likes) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------- | ---------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total ad spend aggregated across all platforms | | [**Blended Likes**](/reference/metrics/advertising/blended/likes/blended-likes) | Total likes on ads across all platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns generated **12,500 likes** with **\$2,500 total spend** across Meta, TikTok, and Google—yielding a blended cost per like of **\$0.20**. *** ## How It Works Blended Cost Per Like aggregates total spend and total likes from Meta, Google, and TikTok, then calculates the combined cost per like. This gives you a single efficiency metric across all platforms rather than evaluating each separately. *** ## When to Use | Scenario | Action | | ---------------------------------------------- | ------------------------------------------- | | Comparing cross-platform engagement efficiency | Use blended CPL as your unified benchmark | | Budget allocation decisions | Shift spend toward platforms with lower CPL | | Campaign performance review | Track blended CPL trends over time | | Setting engagement cost targets | Establish CPL thresholds for new campaigns | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------- | ------------------------------------ | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in this calculation | | [Blended Likes](/reference/metrics/advertising/blended/likes/blended-likes) | Denominator in this calculation | | [Blended Cost Per Engagement](/reference/metrics/advertising/blended/engagements/blended-cost-per-engagement) | Broader engagement efficiency metric | [See all Blended Engagement metrics →](/reference/metrics/advertising/blended) # Blended Likes: Cross-Platform Ad Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/likes/blended-likes Track total likes on your ads across Meta, Google, and TikTok. Measure audience approval and engagement at a glance. Blended Likes measures the total number of likes on your ads across all connected advertising platforms. ## Formula **Blended Likes** = **SUM** ( [Likes](/reference/metrics/advertising/blended/likes) ) across all ad platforms ### Formula Components | Metric | Definition | | ------------ | ------------------------------------------- | | Meta Likes | Likes on your ads from Meta Ads campaigns | | Google Likes | Likes on your ads from Google Ads campaigns | | TikTok Likes | Likes on your ads from TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your ads received **8,432 likes** across all platforms last month. | Platform | Likes | Share | | ---------- | ----- | ----- | | Meta Ads | 5,210 | 62% | | TikTok Ads | 2,890 | 34% | | Google Ads | 332 | 4% | *** ## How It Works Blended Likes aggregates like counts from Meta, Google, and TikTok into a single metric. Each platform reports likes differently—Meta includes post reactions, TikTok counts video likes, and Google tracks engagement signals. This metric combines them for a unified view. *** ## When to Use | Scenario | Action | | ------------------------------ | --------------------------------------------------- | | Comparing creative performance | Higher likes indicate stronger audience resonance | | Measuring brand sentiment | Track likes over time to gauge audience approval | | Evaluating ad formats | Compare likes across video, image, and carousel ads | | Cross-platform benchmarking | Identify which platforms drive the most engagement | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [Blended Reactions](/reference/metrics/advertising/blended/reactions/blended-reactions) | Broader engagement including all reaction types | | [Blended Engagements](/reference/metrics/advertising/blended/engagements/blended-engagements) | Total interactions including likes, comments, shares | | [Blended Comments](/reference/metrics/advertising/blended/comments/blended-comments) | Measures conversation volume vs passive approval | [See all Blended Engagement metrics →](/reference/metrics/advertising/blended) # Blended Post Saves Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/post-saves All Blended metrics for post-saves — volume, value, and cost in one place. Metrics for post saves across your Blended campaigns: * [Blended Cost Per Save: Measure Ad Bookmark Efficiency](/reference/metrics/advertising/blended/post-saves/blended-cost-per-save) # Blended Cost Per Save: Measure Ad Bookmark Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/post-saves/blended-cost-per-save Track how much you spend for each save or bookmark of your ads across all platforms. Optimize content resonance and purchase intent efficiency. Blended Cost Per Save measures the average cost to generate one save or bookmark of your ads across all connected advertising platforms. ## Formula **Blended Cost Per Save** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Saves**](/reference/metrics/advertising/blended/saves/blended-saves) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------- | --------------------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend aggregated across all platforms | | [**Blended Saves**](/reference/metrics/advertising/blended/saves/blended-saves) | Total saves and bookmarks of your ads aggregated across all platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns generated **2,847 saves** across all platforms with a total spend of **\$8,500**. | Platform | Spend | Saves | Cost Per Save | | ----------- | ----------- | --------- | ------------- | | Meta | \$4,250 | 1,523 | \$2.79 | | TikTok | \$2,975 | 892 | \$3.34 | | Google | \$1,275 | 432 | \$2.95 | | **Blended** | **\$8,500** | **2,847** | **\$2.99** | *** ## How It Works Blended Cost Per Save divides your total ad spend by the total number of saves across all connected platforms. This gives you a unified view of how efficiently your budget generates high-intent engagement, since saves often indicate purchase consideration. *** ## When to Use | Scenario | Action | | ---------------------------- | ---------------------------------------------------------- | | Evaluating content resonance | Lower cost per save indicates ads worth revisiting | | Purchase intent signals | Saves often precede conversions—track efficiency | | Creative optimization | Identify which creatives drive saves most cost-effectively | | Budget allocation | Shift spend toward platforms with lower cost per save | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------- | ------------------------------------ | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in this calculation | | [Blended Saves](/reference/metrics/advertising/blended/saves/blended-saves) | Denominator in this calculation | | [Blended Cost Per Engagement](/reference/metrics/advertising/blended/engagements/blended-cost-per-engagement) | Broader engagement efficiency metric | [See all Blended Engagement metrics →](/reference/metrics/advertising/blended) # Blended Purchases Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/purchases All Blended metrics for purchases — volume, value, and cost in one place. Metrics for purchases across your Blended campaigns: * [Blended Purchases: Cross-Channel Conversion Tracking](/reference/metrics/advertising/blended/purchases/blended-purchases) * [Blended Purchases Value: Total Revenue from Ad-Attributed Purchases](/reference/metrics/advertising/blended/purchases/blended-purchases-value) # Blended Purchases: Cross-Channel Conversion Tracking Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/purchases/blended-purchases Track purchase conversions attributed to your advertising across all channels. Measure total cross-platform conversion volume. Blended Purchases measures the total number of purchase conversions attributed to your advertising across all connected ad platforms. ## Formula **Blended Purchases** = **SUM** ( Attributed [Purchases](/reference/metrics/advertising/blended/purchases) ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | --------------------------------------------- | | [**Meta Purchases**](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Purchase conversions attributed to Meta ads | | [**Google Purchases**](/reference/metrics/advertising/google-ads/purchases/google-purchases) | Purchase conversions attributed to Google ads | | [**TikTok Purchases**](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases) | Purchase conversions attributed to TikTok ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example **Your ad campaigns drove 847 purchases across all platforms in March:** | Platform | Purchases | % of Total | | ----------------- | --------- | ---------- | | Meta Ads | 512 | 60% | | Google Ads | 268 | 32% | | TikTok Ads | 67 | 8% | | **Blended Total** | **847** | 100% | *** ## How It Works Blended Purchases aggregates purchase conversions attributed to your advertising across Meta, Google, and TikTok. Each platform reports conversions based on its own attribution model and window, then these values are summed to provide a unified cross-channel view of ad-driven conversions. *** ## When to Use | Scenario | Action | | ------------------------------------- | -------------------------------------------------- | | Measuring total ad-driven conversions | Track overall advertising effectiveness | | Comparing cross-platform performance | Identify which platforms drive more purchases | | Calculating blended CPA or ROAS | Use as the conversion count for efficiency metrics | | Budget allocation decisions | Allocate spend toward higher-converting platforms | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------- | ------------------------------------------ | | [Blended Purchases Value](/reference/metrics/advertising/blended/purchases/blended-purchases-value) | Revenue from these purchases | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Cost per purchase (Spend ÷ Purchases) | | [Blended ROAS](/reference/metrics/advertising/blended/blended-return-on-ad-spend) | Return on ad spend using these conversions | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Purchases Value: Total Revenue from Ad-Attributed Purchases Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/purchases/blended-purchases-value Track the total revenue from purchase conversions attributed to your ads across Meta, Google, and TikTok. Measure your advertising revenue impact. Blended Purchases Value measures the total monetary value of purchases attributed to your advertising across all connected ad platforms. ## Formula **Blended Purchases Value** = **SUM** ( Purchase Value ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [**Meta Purchases Value**](/reference/metrics/advertising/meta-ads/purchases/meta-purchases-value) | Revenue from purchases attributed to Meta ads | | [**Google Purchases Value**](/reference/metrics/advertising/google-ads/purchases/google-purchases-value) | Revenue from purchases attributed to Google ads | | [**TikTok Purchases Value**](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases-value) | Revenue from purchases attributed to TikTok ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaigns generated **\$47,250** in attributed purchase value last month: | Platform | Purchases Value | % of Total | | ----------------- | --------------- | ---------- | | Meta Ads | \$28,500 | 60% | | Google Ads | \$14,175 | 30% | | TikTok Ads | \$4,575 | 10% | | **Blended Total** | **\$47,250** | 100% | *** ## How It Works Blended Purchases Value aggregates the total revenue from purchase conversions attributed to your ads across Meta, Google, and TikTok. Each platform reports its attributed conversion value, and Upstack combines them into a single cross-platform view. *** ## When to Use | Scenario | Action | | ------------------------------------- | ------------------------------------------------------ | | Measuring total ad-attributed revenue | Compare against total spend to calculate blended ROAS | | Budget allocation decisions | Identify which platforms drive the most purchase value | | Revenue forecasting | Project expected revenue based on planned ad spend | | Performance reporting | Show stakeholders total revenue impact of advertising | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [Blended Purchases](/reference/metrics/advertising/blended/purchases/blended-purchases) | Count of purchases; this metric shows their value | | [Blended ROAS](/reference/metrics/advertising/blended/blended-return-on-ad-spend) | Uses this metric as the numerator | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Cost efficiency; this metric shows revenue efficiency | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Reactions Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/reactions All Blended metrics for reactions — volume, value, and cost in one place. Metrics for reactions across your Blended campaigns: * [Blended Cost Per Reaction: Average Cost Per Ad Reaction Across Platforms](/reference/metrics/advertising/blended/reactions/blended-cost-per-reaction) * [Blended Reactions: Total Ad Reaction Interactions](/reference/metrics/advertising/blended/reactions/blended-reactions) # Blended Cost Per Reaction: Average Cost Per Ad Reaction Across Platforms Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/reactions/blended-cost-per-reaction Track your average cost per reaction across Meta, Google, and TikTok ads. Compare cross-platform reaction efficiency and optimize ad spend allocation. Blended Cost Per Reaction measures how much you spend on average for each reaction your ads receive across all connected advertising platforms. ## Formula **Blended Cost Per Reaction** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Reactions**](/reference/metrics/advertising/blended/reactions/blended-reactions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------- | --------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total ad spend across all platforms | | [**Blended Reactions**](/reference/metrics/advertising/blended/reactions/blended-reactions) | Total reactions (likes, loves, etc.) across all platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns spent **\$9,600** and received **8,000 reactions** last month: | Platform | Spend | Reactions | Cost/Reaction | | ----------- | ----------- | --------- | ------------- | | Meta Ads | \$5,400 | 5,400 | \$1.00 | | TikTok Ads | \$2,800 | 2,100 | \$1.33 | | Google Ads | \$1,400 | 500 | \$2.80 | | **Blended** | **\$9,600** | **8,000** | **\$1.20** | *** ## How It Works Blended Cost Per Reaction divides total ad spend by the sum of all reactions across Meta, Google, and TikTok. This shows how efficiently your campaigns generate emotional responses. Lower values indicate more cost-effective engagement. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------------------ | | Measuring emotional ROI | Compare cost to generate reactions across platforms | | Optimizing brand awareness | Prioritize platforms with lower cost per reaction | | Evaluating creative resonance | Test which creatives drive reactions at lower cost | | Allocating engagement budgets | Shift spend toward platforms with better reaction efficiency | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total cost across platforms | | [Blended Reactions](/reference/metrics/advertising/blended/reactions/blended-reactions) | Denominator — total reactions across platforms | | [Blended Cost Per Engagement](/reference/metrics/advertising/blended/engagements/blended-cost-per-engagement) | Sibling metric — cost per total engagement | [See all Blended Engagement metrics →](/reference/metrics/advertising/blended) # Blended Reactions: Total Ad Reaction Interactions Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/reactions/blended-reactions Track total reactions on your ads across all channels. Includes likes, loves, and other emotional responses from Meta, Google, and TikTok Ads. Blended Reactions measures the total number of reactions (likes, love, etc.) on your ads across all advertising channels. ## Formula **Blended Reactions** = **SUM** ( [Reactions](/reference/metrics/advertising/blended/reactions) ) across all ad platforms ### Formula Components | Metric | Definition | | ---------------- | --------------------------------------------------------- | | Meta Reactions | Reactions on Meta ads (like, love, haha, wow, sad, angry) | | Google Reactions | Reactions on Google ads where available | | TikTok Reactions | Reactions on TikTok ads (likes, hearts) | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your ads received **8,940 total reactions** last month across all platforms. | Platform | Reactions | % of Total | | ---------- | --------- | ---------- | | Meta Ads | 5,620 | 62.9% | | TikTok Ads | 2,810 | 31.4% | | Google Ads | 510 | 5.7% | *** ## How It Works Blended Reactions aggregates all emotional response interactions from your advertising accounts. This includes likes, loves, and other reaction types across Meta, Google, and TikTok platforms to provide a unified view of how audiences emotionally respond to your ads. *** ## When to Use | Scenario | Action | | ------------------------------ | ---------------------------------------------------- | | Measuring emotional resonance | High reactions indicate content that evokes response | | Comparing platform performance | See which platform drives more emotional engagement | | Optimizing creative direction | Use reaction data to guide ad creative strategy | | Tracking social proof | Reactions contribute to perceived ad credibility | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [Blended Engagements](/reference/metrics/advertising/blended/engagements/blended-engagements) | Parent: reactions are a component of total engagements | | [Blended Likes](/reference/metrics/advertising/blended/likes/blended-likes) | Subset: like reactions specifically | | [Blended Shares](/reference/metrics/advertising/blended/shares/blended-shares) | Sibling: sharing actions on ads | [See all Blended Engagement metrics →](/reference/metrics/advertising/blended) # Blended Saves Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/saves All Blended metrics for saves — volume, value, and cost in one place. Metrics for saves across your Blended campaigns: * [Blended Saves: Ad Bookmarks Across Platforms](/reference/metrics/advertising/blended/saves/blended-saves) # Blended Saves: Ad Bookmarks Across Platforms Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/saves/blended-saves Track total saves and bookmarks of your ads across Meta, Google, and TikTok. Measure content resonance with aggregated save metrics. Blended Saves counts the total number of times users saved or bookmarked your ads across all connected advertising platforms. ## Formula **Blended Saves** = **SUM** ( [Saves](/reference/metrics/advertising/blended/saves) ) across all ad platforms ### Formula Components | Metric | Definition | | ------------ | ------------------------------- | | Meta Saves | Saves from Meta Ads campaigns | | Google Saves | Saves from Google Ads campaigns | | TikTok Saves | Saves from TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your ads received **2,847 saves** last month across platforms. | Platform | Saves | Share | | -------- | ----- | ----- | | Meta | 1,523 | 53% | | TikTok | 892 | 31% | | Google | 432 | 16% | *** ## How It Works Blended Saves aggregates save and bookmark actions from all connected advertising platforms into a single metric. When users save your ad for later viewing, each platform reports this engagement, and Upstack combines them for a unified view. *** ## When to Use | Scenario | Action | | ----------------------- | ---------------------------------------- | | Content resonance | High saves indicate ads worth revisiting | | Purchase intent signals | Saves often precede conversions | | Creative optimization | Compare save rates across ad variants | | Audience insights | Identify which audiences save most | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | -------------------------------- | | [Blended Engagements](/reference/metrics/advertising/blended/engagements/blended-engagements) | Total engagement including saves | | [Blended Likes](/reference/metrics/advertising/blended/likes/blended-likes) | Another engagement signal | | [Blended Shares](/reference/metrics/advertising/blended/shares/blended-shares) | Viral engagement metric | [See all Blended Engagement metrics →](/reference/metrics/advertising/blended) # Blended Searches Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/searches All Blended metrics for searches — volume, value, and cost in one place. Metrics for searches across your Blended campaigns: * [Blended Cost per Search: Cross-Platform Search Efficiency](/reference/metrics/advertising/blended/searches/blended-cost-per-search) * [Blended Searches: Cross-Platform Site Search Tracking](/reference/metrics/advertising/blended/searches/blended-searches) * [Blended Searches Value: Cross-Platform Search Value](/reference/metrics/advertising/blended/searches/blended-searches-value) # Blended Cost per Search: Cross-Platform Search Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/searches/blended-cost-per-search Track your blended cost per search event across Meta, Google, and TikTok ads. Measure cross-platform efficiency for on-site search actions. Blended Cost per Search measures how much you spend across all ad platforms to generate one on-site search event. ## Formula **Blended Cost per Search** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Searches**](/reference/metrics/advertising/blended/searches/blended-searches) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected ad platforms | | [**Blended Searches**](/reference/metrics/advertising/blended/searches/blended-searches) | Total on-site search events attributed across all ad platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$5,000** across all ad platforms last week and generated **2,500** on-site search events. | Metric | Value | | --------------------------- | ---------- | | Blended Spend | \$5,000 | | Blended Searches | 2,500 | | **Blended Cost per Search** | **\$2.00** | *** ## How It Works Blended Cost per Search divides your total advertising spend across Meta, Google, and TikTok by the total on-site search events attributed to those platforms. This gives you a unified view of how efficiently your combined ad spend drives product discovery behavior, regardless of which platform generated the search. *** ## When to Use | Scenario | Action | | ----------------------- | ------------------------------------------------------------------------------------------- | | Budget allocation | Compare blended cost per search against platform-specific costs to identify efficiency gaps | | Funnel optimization | Track how cost per search changes relative to cost per add-to-cart or purchase | | Campaign scaling | Monitor if increased spend maintains efficient cost per search event | | Landing page evaluation | High cost per search may indicate visitors are struggling to find products | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total ad spend across platforms | | [Blended Searches](/reference/metrics/advertising/blended/searches/blended-searches) | Denominator — total search events across platforms | | [Blended Cost per View Content](/reference/metrics/advertising/blended/view-contents/blended-cost-per-view-content) | Downstream efficiency — cost to drive product page views | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Conversion efficiency — cost per attributed conversion | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Searches: Cross-Platform Site Search Tracking Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/searches/blended-searches Track search events attributed to your ads across Meta, Google, and TikTok. Measure cross-platform site search activity driven by advertising. Blended Searches measures the total number of on-site search events attributed to your ads across all connected advertising platforms. ## Formula **Blended Searches** = **SUM** ( Search Events ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [**Meta Search Events**](/reference/metrics/advertising/meta-ads/search-events/meta-search-events) | On-site search events attributed to Meta Ads campaigns | | **Google Searches** | On-site search events attributed to Google Ads campaigns | | [**TikTok Searches**](/reference/metrics/advertising/tiktok-ads/searches/tiktok-searches) | On-site search events attributed to TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example A fashion retailer running campaigns across three platforms sees **1,892 searches** for the week: | Platform | Searches | % of Total | | ----------------- | --------- | ---------- | | Meta Ads | 1,043 | 55.1% | | Google Ads | 621 | 32.8% | | TikTok Ads | 228 | 12.1% | | **Blended Total** | **1,892** | **100%** | *** ## How It Works Blended Searches aggregates on-site search events reported by each advertising platform. When a user clicks an ad and performs a search on your website within the attribution window, that platform counts the event. This metric sums those events across all connected platforms for a unified view. *** ## When to Use | Scenario | Action | | --------------------------------- | ---------------------------------------------- | | Measuring ad-driven search intent | Track how ads drive product discovery | | Evaluating top-funnel engagement | Use searches as an early intent signal | | Optimizing landing pages | High searches may indicate unclear navigation | | Comparing platform performance | Identify which platforms drive search behavior | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [Blended Cost per Search](/reference/metrics/advertising/blended/searches/blended-cost-per-search) | Efficiency metric showing cost to generate each search | | [Blended View Contents](/reference/metrics/advertising/blended/view-contents/blended-view-contents) | Next funnel stage — product page views | | [Blended Add to Carts](/reference/metrics/advertising/blended/add-to-carts/blended-add-to-carts) | Further down funnel — cart additions | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Searches Value: Cross-Platform Search Value Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/searches/blended-searches-value Track the total monetary value of on-site searches attributed to your ads across Meta, Google, and TikTok. Measure cross-platform search value. Blended Searches Value measures the total monetary value associated with on-site search events attributed to your advertising across all connected ad platforms. ## Formula **Blended Searches Value** = **SUM** ( Search Value ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ----------------------- | -------------------------------------------------- | | **Meta Search Value** | Monetary value of on-site searches from Meta ads | | **Google Search Value** | Monetary value of on-site searches from Google ads | | **TikTok Search Value** | Monetary value of on-site searches from TikTok ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your ads generated **\$8,750 in search value** this week across all platforms: | Platform | Search Value | % of Total | | ----------------- | ------------ | ---------- | | Meta Ads | \$4,900 | 56% | | Google Ads | \$2,625 | 30% | | TikTok Ads | \$1,225 | 14% | | **Blended Total** | **\$8,750** | 100% | *** ## How It Works Blended Searches Value aggregates the monetary value assigned to on-site search events across Meta, Google, and TikTok. Each platform reports value based on their attribution windows and the conversion value you've configured. This metric helps quantify the revenue potential of search-driven engagement from your ads. *** ## When to Use | Scenario | Action | | ---------------------------------- | ------------------------------------------------------ | | Measuring search intent value | Compare search value against ad spend to assess ROI | | Evaluating product discovery | Track how much value searches represent in your funnel | | Optimizing for high-value searches | Identify campaigns driving valuable search behavior | | Comparing platform performance | Break down by platform to see value contribution | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [Blended Searches](/reference/metrics/advertising/blended/searches/blended-searches) | Count of search events; this metric shows their value | | [Blended Cost per Search](/reference/metrics/advertising/blended/searches/blended-cost-per-search) | Efficiency metric showing cost to generate each search | | [Blended View Contents Value](/reference/metrics/advertising/blended/view-contents/blended-view-contents-value) | Value of product page views | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Shares Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/shares All Blended metrics for shares — volume, value, and cost in one place. Metrics for shares across your Blended campaigns: * [Blended Cost Per Share: Measure Ad Sharing Efficiency](/reference/metrics/advertising/blended/shares/blended-cost-per-share) * [Blended Shares: Total Ad Shares Across Channels](/reference/metrics/advertising/blended/shares/blended-shares) # Blended Cost Per Share: Measure Ad Sharing Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/shares/blended-cost-per-share Track how much you spend for each share of your ads across all platforms. Optimize viral potential and social engagement cost-efficiency. Blended Cost Per Share measures the average cost to generate one share of your ads across all connected advertising platforms. ## Formula **Blended Cost Per Share** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Shares**](/reference/metrics/advertising/blended/shares/blended-shares) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------- | -------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend aggregated across all platforms | | [**Blended Shares**](/reference/metrics/advertising/blended/shares/blended-shares) | Total shares of your ads aggregated across all platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaigns generated **2,500 shares** across all platforms with a total spend of **\$5,000**. | Platform | Spend | Shares | Cost Per Share | | ----------- | ----------- | --------- | -------------- | | Meta | \$2,500 | 1,800 | \$1.39 | | TikTok | \$2,500 | 700 | \$3.57 | | **Blended** | **\$5,000** | **2,500** | **\$2.00** | *** ## How It Works Blended Cost Per Share divides your total ad spend by the total number of shares across all connected platforms. This gives you a unified view of how efficiently your budget generates viral engagement, regardless of which platform drives the shares. *** ## When to Use | Scenario | Action | | --------------------------- | -------------------------------------------------------------------- | | Comparing viral efficiency | Benchmark cost per share against industry standards | | Optimizing for shareability | Identify which creative assets generate shares most cost-effectively | | Budget allocation | Shift spend toward platforms with lower cost per share | | Campaign planning | Set target cost per share for awareness campaigns | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------- | ------------------------------------ | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in this calculation | | [Blended Shares](/reference/metrics/advertising/blended/shares/blended-shares) | Denominator in this calculation | | [Blended Cost Per Engagement](/reference/metrics/advertising/blended/engagements/blended-cost-per-engagement) | Broader engagement efficiency metric | [See all Blended Engagement metrics →](/reference/metrics/advertising/blended) # Blended Shares: Total Ad Shares Across Channels Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/shares/blended-shares Track total shares of your ads across all advertising channels. Measure viral reach and content sharing from Meta, Google, and TikTok campaigns. Blended Shares measures the total number of times users shared your ads across all advertising channels. ## Formula **Blended Shares** = **SUM** ( [Shares](/reference/metrics/advertising/blended/shares) ) across all ad platforms ### Formula Components | Metric | Definition | | ------------- | -------------------------------------- | | Meta Shares | Shares of your ads on Meta platforms | | Google Shares | Shares of your ads on Google platforms | | TikTok Shares | Shares of your ads on TikTok | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your ads were shared **2,340 times** last month across all platforms. | Platform | Shares | % of Total | | ---------- | ------ | ---------- | | Meta Ads | 1,520 | 65.0% | | TikTok Ads | 680 | 29.1% | | Google Ads | 140 | 5.9% | *** ## How It Works Blended Shares aggregates share actions from all your advertising accounts. When users share your ad content with their network, it extends your organic reach. The metric pulls share data from Meta, Google, and TikTok to provide a unified view. *** ## When to Use | Scenario | Action | | ---------------------------- | -------------------------------------------- | | Measuring viral potential | High shares indicate content worth spreading | | Optimizing for organic reach | Compare share rates between ad creatives | | Evaluating content resonance | Shares show audience finds content valuable | | Cross-platform performance | Compare sharing behavior across channels | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | ----------------------------------------- | | [Blended Engagements](/reference/metrics/advertising/blended/engagements/blended-engagements) | Parent: total engagement including shares | | [Blended Reactions](/reference/metrics/advertising/blended/reactions/blended-reactions) | Sibling: likes and reaction interactions | | [Blended Comments](/reference/metrics/advertising/blended/comments/blended-comments) | Sibling: comment interactions | [See all Blended Engagement metrics →](/reference/metrics/advertising/blended) # Blended Start Trials Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/start-trials All Blended metrics for start-trials — volume, value, and cost in one place. Metrics for start trials across your Blended campaigns: * [Blended Cost per Trial Start: Acquisition Efficiency](/reference/metrics/advertising/blended/start-trials/blended-cost-per-trial-start) # Blended Cost per Trial Start: Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/start-trials/blended-cost-per-trial-start Measure your cost per free trial start across all ad platforms. Track trial acquisition efficiency to optimize spend and lower customer acquisition costs. Blended Cost per Trial Start measures how much you spend on advertising to generate one free trial signup across all your ad platforms. ## Formula **Blended Cost per Trial Start** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Trial Starts**](/reference/metrics/advertising/blended/trial-starts/blended-trial-starts) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all platforms | | [**Blended Trial Starts**](/reference/metrics/advertising/blended/trial-starts/blended-trial-starts) | Free trial signups attributed to your ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your SaaS company spent **\$5,000** on ads last month and generated **250 trial signups** across all platforms. | Metric | Value | | -------------------------------- | ----------- | | Blended Spend | \$5,000 | | Trial Starts | 250 | | **Blended Cost per Trial Start** | **\$20.00** | *** ## How It Works This metric divides your total advertising spend by the number of free trial signups attributed to your campaigns. It aggregates data from Meta, Google, and TikTok to give you one unified cost-per-trial figure. *** ## When to Use | Scenario | Action | | -------------------------------------- | ----------------------------------------------- | | Comparing trial acquisition efficiency | Use to benchmark cost across campaigns | | Budget allocation decisions | Shift spend to platforms with lower trial costs | | Measuring campaign optimizations | Track if changes reduce acquisition cost | | Forecasting trial volume | Estimate trials from planned ad spend | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | --------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total ad spend | | [Blended Trial Starts](/reference/metrics/advertising/blended/trial-starts/blended-trial-starts) | Denominator — trial signups | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Similar efficiency metric for all conversions | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Subscriptions Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/subscriptions All Blended metrics for subscriptions — volume, value, and cost in one place. Metrics for subscriptions across your Blended campaigns: * [Blended Cost per Subscription: Ad Efficiency Metric](/reference/metrics/advertising/blended/subscriptions/blended-cost-per-subscription) * [Blended Subscriptions: Track Subscription Sign-Ups Across Platforms](/reference/metrics/advertising/blended/subscriptions/blended-subscriptions) * [Blended Subscriptions Value: Total Value of Ad-Attributed Subscriptions](/reference/metrics/advertising/blended/subscriptions/blended-subscriptions-value) # Blended Cost per Subscription: Ad Efficiency Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/subscriptions/blended-cost-per-subscription Track cost per subscription sign-up across Meta, Google, and TikTok ads. Measure blended acquisition efficiency for subscription-based products. Blended Cost per Subscription measures how much you spend across all ad platforms to acquire one subscription sign-up. ## Formula **Blended Cost per Subscription** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended Subscriptions**](/reference/metrics/advertising/blended/subscriptions/blended-subscriptions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend aggregated across all connected ad platforms | | [**Blended Subscriptions**](/reference/metrics/advertising/blended/subscriptions/blended-subscriptions) | Subscription sign-ups attributed to ads across Meta, Google, and TikTok | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example A subscription brand spent **\$4,500** across all ad platforms and acquired **150 subscriptions**: | Metric | Value | | ------------------------- | ----------- | | Total Spend | \$4,500 | | Subscriptions | 150 | | **Cost per Subscription** | **\$30.00** | *** ## How It Works This metric divides your total advertising spend across Meta, Google, and TikTok by the number of subscription sign-ups attributed to those ads. Lower values indicate more efficient subscriber acquisition. Data syncs daily from each platform's reporting API. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------------ | | Setting acquisition targets | Establish benchmark cost per new subscription | | Comparing platforms | Identify which platforms acquire subscribers cheapest | | Budget allocation | Shift spend toward lower-cost subscription channels | | Evaluating campaign efficiency | Compare cost per subscription across creative variants | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------- | ------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total advertising cost | | [Blended Subscriptions](/reference/metrics/advertising/blended/subscriptions/blended-subscriptions) | Denominator — subscription sign-ups | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | All-conversion cost efficiency metric | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Subscriptions: Track Subscription Sign-Ups Across Platforms Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/subscriptions/blended-subscriptions Track subscription sign-ups attributed to your ads across Meta, Google, and TikTok. Measure how advertising drives recurring revenue. Blended Subscriptions measures the total number of subscription sign-ups attributed to your advertising across all connected platforms. ## Formula **Blended Subscriptions** = **SUM** ( Subscription Events ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ------------------------------ | -------------------------------------------------------- | | **Meta Subscription Events** | Subscription sign-ups attributed to Meta Ads campaigns | | **Google Subscription Events** | Subscription sign-ups attributed to Google Ads campaigns | | **TikTok Subscription Events** | Subscription sign-ups attributed to TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your subscription business generated **847 new subscriptions** last month across all ad platforms. | Platform | Subscriptions | Ad Spend | Cost per Subscription | | ---------- | ------------- | ------------ | --------------------- | | Meta Ads | 412 | \$6,180 | \$15.00 | | Google Ads | 298 | \$5,066 | \$17.00 | | TikTok Ads | 137 | \$2,466 | \$18.00 | | **Total** | **847** | **\$13,712** | **\$16.19** | *** ## How It Works When a user clicks or views your ad and later signs up for a subscription, that conversion is attributed to the originating ad. Blended Subscriptions aggregates these attributed sign-ups across Meta, Google, and TikTok to show your total subscription acquisition from paid advertising. *** ## When to Use | Scenario | Action | | ---------------------------------- | ------------------------------------------------------- | | Measuring subscription acquisition | Track total subscriptions driven by all ad platforms | | Comparing platform performance | See which channels drive the most subscriptions | | Forecasting recurring revenue | Multiply subscriptions by average subscription value | | Optimizing for LTV | Focus spend on platforms with highest-value subscribers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | | [Blended Trial Starts](/reference/metrics/advertising/blended/trial-starts/blended-trial-starts) | Users who started trials before subscribing | | [Blended Purchases](/reference/metrics/advertising/blended/purchases/blended-purchases) | One-time purchases vs recurring subscriptions | | [Blended Cost per Subscription](/reference/metrics/advertising/blended/subscriptions/blended-cost-per-subscription) | Cost to acquire each subscription | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Subscriptions Value: Total Value of Ad-Attributed Subscriptions Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/subscriptions/blended-subscriptions-value Track the total value of subscription sign-ups attributed to your ads across Meta, Google, and TikTok. Measure subscription revenue impact. Blended Subscriptions Value measures the total monetary value of subscription sign-ups attributed to your advertising across all connected ad platforms. ## Formula **Blended Subscriptions Value** = **SUM** ( Subscription Value ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ------------------------------ | ------------------------------------------------------------------ | | **Meta Subscriptions Value** | Assigned value of subscriptions attributed to Meta Ads campaigns | | **Google Subscriptions Value** | Assigned value of subscriptions attributed to Google Ads campaigns | | **TikTok Subscriptions Value** | Assigned value of subscriptions attributed to TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your subscription campaigns generated **\$12,450** in attributed subscription value last month: | Platform | Subscriptions Value | % of Total | | ----------------- | ------------------- | ---------- | | Meta Ads | \$7,470 | 60% | | Google Ads | \$3,735 | 30% | | TikTok Ads | \$1,245 | 10% | | **Blended Total** | **\$12,450** | 100% | *** ## How It Works Blended Subscriptions Value aggregates the assigned monetary value of subscription sign-ups attributed to your ads across Meta, Google, and TikTok. Each platform reports its attributed subscription value based on your configured conversion tracking, and Upstack combines them into a single cross-platform view. *** ## When to Use | Scenario | Action | | ------------------------------------- | ------------------------------------------------------------------ | | Measuring subscription revenue impact | Compare attributed value against spend for subscription ROAS | | Budget allocation decisions | Identify which platforms drive the highest-value subscriptions | | LTV forecasting | Project expected lifetime value based on subscription acquisition | | Performance reporting | Show stakeholders total subscription revenue driven by advertising | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [Blended Subscriptions](/reference/metrics/advertising/blended/subscriptions/blended-subscriptions) | Count of subscriptions; this metric shows their value | | [Blended Cost per Subscription](/reference/metrics/advertising/blended/subscriptions/blended-cost-per-subscription) | Cost to acquire each subscription | | [Blended Trial Starts](/reference/metrics/advertising/blended/trial-starts/blended-trial-starts) | Users who started trials before subscribing | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Trial Starts Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/trial-starts All Blended metrics for trial-starts — volume, value, and cost in one place. Metrics for trial starts across your Blended campaigns: * [Blended Trial Starts: Cross-Channel Trial Tracking](/reference/metrics/advertising/blended/trial-starts/blended-trial-starts) * [Blended Trial Starts Value: Total Value of Ad-Attributed Trials](/reference/metrics/advertising/blended/trial-starts/blended-trial-starts-value) # Blended Trial Starts: Cross-Channel Trial Tracking Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/trial-starts/blended-trial-starts Track free trial starts attributed to your ads across Meta, Google, and TikTok. Monitor cross-channel trial acquisition performance. Blended Trial Starts measures the total number of free trial activations attributed to your ads across all connected advertising platforms. ## Formula **Blended Trial Starts** = **SUM** ( Trial Start Events ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------- | ---------------------------------------------- | | [**Meta Trial Starts**](/reference/metrics/advertising/meta-ads/start-trials/meta-start-trials) | Free trials attributed to Meta Ads campaigns | | **Google Trial Starts** | Free trials attributed to Google Ads campaigns | | **TikTok Trial Starts** | Free trials attributed to TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaigns generated **847 free trial starts** across all channels last month: | Channel | Trial Starts | Share | | ----------- | ------------ | -------- | | Meta Ads | 412 | 49% | | Google Ads | 289 | 34% | | TikTok Ads | 146 | 17% | | **Blended** | **847** | **100%** | *** ## How It Works Blended Trial Starts aggregates trial activation events reported by each connected advertising platform. When a user starts a free trial that's attributed to an ad within the platform's attribution window, each platform records a trial start event. This metric sums those events across Meta, Google, and TikTok to give you a unified view of trial acquisition performance. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------ | | Measuring trial volume | Track overall free trial acquisition across all paid channels | | Comparing channel efficiency | Pair with [Blended Cost Per Trial Start](/reference/metrics/advertising/blended/start-trials/blended-cost-per-trial-start) to see cost per trial | | Budget allocation | Identify which platforms drive the most trial signups per dollar spent | | Trial-to-subscription tracking | Compare to [Blended Subscriptions](/reference/metrics/advertising/blended/subscriptions/blended-subscriptions) for conversion insights | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Blended Cost Per Trial Start](/reference/metrics/advertising/blended/start-trials/blended-cost-per-trial-start) | Cost efficiency of acquiring trials | | [Blended Subscriptions](/reference/metrics/advertising/blended/subscriptions/blended-subscriptions) | Later funnel stage — trials that convert to paid | | [Blended Completed Registrations](/reference/metrics/advertising/blended/completed-registrations/blended-completed-registrations) | Related acquisition metric — account signups | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended Trial Starts Value: Total Value of Ad-Attributed Trials Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/trial-starts/blended-trial-starts-value Track the total assigned value of free trial starts attributed to your ads across Meta, Google, and TikTok. Measure trial acquisition value impact. Blended Trial Starts Value measures the total assigned monetary value of free trial activations attributed to your advertising across all connected ad platforms. ## Formula **Blended Trial Starts Value** = **SUM** ( Trial Start Value ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ----------------------------- | ----------------------------------------------------------- | | **Meta Trial Starts Value** | Assigned value of trials attributed to Meta Ads campaigns | | **Google Trial Starts Value** | Assigned value of trials attributed to Google Ads campaigns | | **TikTok Trial Starts Value** | Assigned value of trials attributed to TikTok Ads campaigns | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaigns generated **\$8,470** in attributed trial value across all channels last month: | Platform | Trial Starts | Value | Avg Value | | ----------------- | ------------ | ----------- | ----------- | | Meta Ads | 412 | \$4,120 | \$10.00 | | Google Ads | 289 | \$2,890 | \$10.00 | | TikTok Ads | 146 | \$1,460 | \$10.00 | | **Blended Total** | **847** | **\$8,470** | **\$10.00** | *** ## How It Works Blended Trial Starts Value aggregates the assigned monetary value of free trial activations attributed to your ads across Meta, Google, and TikTok. Each platform reports its attributed trial value based on your configured conversion tracking and assigned event values, and Upstack combines them into a single cross-platform view. *** ## When to Use | Scenario | Action | | --------------------------------- | ---------------------------------------------------------------- | | Measuring trial acquisition value | Compare attributed value against spend for trial ROAS | | Budget allocation decisions | Identify which platforms drive the highest-value trial signups | | LTV forecasting | Project expected lifetime value based on trial acquisition value | | Performance reporting | Show stakeholders total trial value driven by advertising | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [Blended Trial Starts](/reference/metrics/advertising/blended/trial-starts/blended-trial-starts) | Count of trials; this metric shows their assigned value | | [Blended Cost per Trial Start](/reference/metrics/advertising/blended/start-trials/blended-cost-per-trial-start) | Cost to acquire each trial signup | | [Blended Subscriptions](/reference/metrics/advertising/blended/subscriptions/blended-subscriptions) | Later funnel stage — trials that convert to paid | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended View Contents Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/view-contents All Blended metrics for view-contents — volume, value, and cost in one place. Metrics for view contents across your Blended campaigns: * [Blended Cost per View Content: Cross-Platform Content View Efficiency](/reference/metrics/advertising/blended/view-contents/blended-cost-per-view-content) * [Blended View Contents: Cross-Platform Product Page Views](/reference/metrics/advertising/blended/view-contents/blended-view-contents) * [Blended View Contents Value: Cross-Platform Product View Value](/reference/metrics/advertising/blended/view-contents/blended-view-contents-value) # Blended Cost per View Content: Cross-Platform Content View Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/view-contents/blended-cost-per-view-content Track your blended cost per view content across Meta, Google, and TikTok ads. Measure cross-platform efficiency for content view events. Blended Cost per View Content measures how much you spend across all ad platforms to generate one content view event. ## Formula **Blended Cost per View Content** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended View Contents**](/reference/metrics/advertising/blended/view-contents/blended-view-contents) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected ad platforms | | [**Blended View Contents**](/reference/metrics/advertising/blended/view-contents/blended-view-contents) | Total content view events attributed across all ad platforms | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$5,000** across all ad platforms last month and generated **10,000** content view events. | Metric | Value | | --------------------------------- | ---------- | | Blended Spend | \$5,000 | | Blended View Contents | 10,000 | | **Blended Cost per View Content** | **\$0.50** | *** ## How It Works Blended Cost per View Content divides your total advertising spend across Meta, Google, and TikTok by the total content view events attributed to those platforms. This gives you a unified view of how efficiently your combined ad spend drives product page visits, regardless of which platform generated them. *** ## When to Use | Scenario | Action | | --------------------------- | ------------------------------------------------------------------------------------------------- | | Budget allocation | Compare blended cost per view content against platform-specific costs to identify efficiency gaps | | Funnel optimization | Track how cost per content view changes relative to cost per add-to-cart or purchase | | Campaign scaling | Monitor if increased spend maintains efficient cost per content view | | Cross-platform benchmarking | Evaluate overall top-of-funnel efficiency without platform-specific bias | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total ad spend across platforms | | [Blended View Contents](/reference/metrics/advertising/blended/view-contents/blended-view-contents) | Denominator — total content view events across platforms | | [Blended Cost per Add to Cart](/reference/metrics/advertising/blended/add-to-carts/blended-cost-per-add-to-cart) | Downstream efficiency — cost to convert view to cart action | | [Blended ROAS](/reference/metrics/advertising/blended/blended-return-on-ad-spend) | Revenue efficiency — return on combined ad spend | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended View Contents: Cross-Platform Product Page Views Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/view-contents/blended-view-contents Track product page views attributed to your ads across Meta, Google, and TikTok. Measure discovery driven by cross-platform advertising. Blended View Contents measures the total number of product page views attributed to your ads across all connected advertising platforms. ## Formula **Blended View Contents** = **SUM** ( View Content Events ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | ----------------------- | ---------------------------------------------------------------------------- | | **View Content Events** | Individual instances where a user viewed a product page after ad interaction | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example A fashion retailer running campaigns across three platforms sees **8,432 product page views** for the week: | Platform | View Contents | % of Total | | ----------------- | ------------- | ---------- | | Meta Ads | 4,891 | 58.0% | | Google Ads | 2,654 | 31.5% | | TikTok Ads | 887 | 10.5% | | **Blended Total** | **8,432** | **100%** | *** ## How It Works Blended View Contents aggregates product page view events reported by each advertising platform. When a user clicks an ad and views a product page within the attribution window, that platform counts the event. This metric sums those events across all connected platforms for a unified view of ad-driven product discovery. *** ## When to Use | Scenario | Action | | ------------------------------------ | ----------------------------------------------- | | Measuring product discovery | Compare view contents to site traffic | | Evaluating top-of-funnel performance | Track ratio of view contents to add to carts | | Optimizing for awareness | Use to measure which ads drive product browsing | | Budgeting across platforms | Identify which platforms drive product views | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | ---------------------------------------- | | [Blended Add to Carts](/reference/metrics/advertising/blended/add-to-carts/blended-add-to-carts) | Next funnel stage — shopping intent | | [Blended Purchases](/reference/metrics/advertising/blended/purchases/blended-purchases) | Final funnel stage — completed orders | | [Blended Landing Page Views](/reference/metrics/advertising/blended/blended-landing-page-views) | Similar metric — any landing page visits | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended View Contents Value: Cross-Platform Product View Value Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/view-contents/blended-view-contents-value Track the total monetary value of products viewed from your ads across Meta, Google, and TikTok. Measure upper-funnel value engagement. Blended View Contents Value measures the total monetary value of products viewed that are attributed to your advertising across all connected ad platforms. ## Formula **Blended View Contents Value** = **SUM** ( View Content Value ) **ACROSS** All Channels ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | **Meta View Contents Value** | Monetary value of products viewed from Meta ads | | **Google View Contents Value** | Monetary value of products viewed from Google ads | | [**TikTok View Contents Value**](/reference/metrics/advertising/tiktok-ads/view-contents/tiktok-view-contents-value) | Monetary value of products viewed from TikTok ads | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your ads drove **\$47,500 in viewed product value** across all platforms last week: | Platform | View Contents | Avg Product Value | View Contents Value | | ----------------- | ------------- | ----------------- | ------------------- | | Meta Ads | 2,150 | \$18.50 | \$39,775 | | Google Ads | 320 | \$22.00 | \$7,040 | | TikTok Ads | 28 | \$24.50 | \$686 | | **Blended Total** | **2,498** | **\$19.02** | **\$47,501** | *** ## How It Works When users click your ads and view product pages, each ad platform tracks the product value based on your catalog data. Blended View Contents Value aggregates these values across Meta, Google, and TikTok to show your total upper-funnel value engagement from advertising. *** ## When to Use | Scenario | Action | | --------------------------------------- | ---------------------------------------------------- | | Measuring upper-funnel value engagement | Compare view contents value to add-to-cart value | | Evaluating product discovery from ads | Track which platforms drive high-value product views | | Forecasting downstream revenue | Use as leading indicator for purchases | | Optimizing for consideration | Allocate budget to platforms driving valuable views | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------- | | [Blended View Contents](/reference/metrics/advertising/blended/view-contents/blended-view-contents) | Count of views — this metric adds the value | | [Blended Add to Carts Value](/reference/metrics/advertising/blended/add-to-carts/blended-add-to-carts-value) | Next funnel stage — cart value | | [Blended Purchases Value](/reference/metrics/advertising/blended/purchases/blended-purchases-value) | Final conversion value | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended View Through Conversions Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/view-through-conversions All Blended metrics for view-through-conversions — volume, value, and cost in one place. Metrics for view through conversions across your Blended campaigns: * [Blended Cost per View-Through Conversion: VTC Acquisition Cost](/reference/metrics/advertising/blended/view-through-conversions/blended-cost-per-view-through-conversion) * [Blended View-Through Conversions: Ad View Attribution](/reference/metrics/advertising/blended/view-through-conversions/blended-view-through-conversions) # Blended Cost per View-Through Conversion: VTC Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/view-through-conversions/blended-cost-per-view-through-conversion Track your cost per view-through conversion across all channels. Measure how much you spend for each conversion from users who saw but didn't click your ads. Blended Cost per View-Through Conversion measures how much you spend on average for each view-through conversion—where a user saw but did not click your ad before converting. ## Formula **Blended Cost per View-Through Conversion** = [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Blended View-Through Conversions**](/reference/metrics/advertising/blended/view-through-conversions/blended-view-through-conversions) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected platforms | | [**Blended View-Through Conversions**](/reference/metrics/advertising/blended/view-through-conversions/blended-view-through-conversions) | Conversions from users who saw but did not click your ad before converting | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$15,000** across all advertising channels in May and generated **312 view-through conversions**. | Channel | Spend | VT Conversions | Cost/VTC | | ----------- | ------------ | -------------- | ----------- | | Meta | \$8,000 | 180 | \$44.44 | | Google | \$5,000 | 92 | \$54.35 | | TikTok | \$2,000 | 40 | \$50.00 | | **Blended** | **\$15,000** | **312** | **\$48.08** | *** ## How It Works Blended Cost per View-Through Conversion aggregates total ad spend and view-through conversions from Meta, Google, and TikTok, then calculates the average cost per VTC. View-through conversions are attributed when a user sees your ad, does not click, but converts within the platform's attribution window. This metric helps quantify the cost efficiency of your passive brand awareness efforts. *** ## When to Use | Scenario | Action | | --------------------------------------------------- | ------------------------------------------------------------------------- | | Measuring brand awareness ROI | Compare VTC cost to click-through CPA | | Evaluating display/video campaigns | Assess cost efficiency of impression-driven conversions | | Budget allocation for awareness vs. direct response | Balance spend based on VTC vs. click-based acquisition costs | | Platform comparison | Identify which channels deliver view-through conversions most efficiently | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------- | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator — total ad spend across platforms | | [Blended View-Through Conversions](/reference/metrics/advertising/blended/view-through-conversions/blended-view-through-conversions) | Denominator — conversions from ad views without clicks | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Overall acquisition cost including click and view-through conversions | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Blended View-Through Conversions: Ad View Attribution Source: https://docs.upstackdata.com/reference/metrics/advertising/blended/view-through-conversions/blended-view-through-conversions Track conversions from users who saw but didn't click your ads across Meta, Google, and TikTok. Measure view-through attribution impact. Blended View-Through Conversions counts users who saw your ad, did not click, but converted later—aggregated across all connected ad platforms. ## Formula **Blended View-Through Conversions** = **COUNT** ( [Conversions](/reference/metrics/advertising/blended/conversions) ) **WHERE** attribution = view-through ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | | [**Blended All Conversions**](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions) | Total conversions attributed to advertising across all platforms | | **attribution = view-through** | Filters to conversions where the user viewed but did not click the ad before converting | | Metadata | | | --------------- | --------------------------------------------------------------------------------------------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaigns generated **847 view-through conversions** last month across all platforms. | Platform | Impressions | VT Conversions | VT Rate | | -------- | ----------- | -------------- | ------- | | Meta | 125,000 | 412 | 0.33% | | Google | 98,000 | 287 | 0.29% | | TikTok | 67,000 | 148 | 0.22% | *** ## How It Works Each ad platform tracks when users view your ads without clicking. If those users later convert within the platform's attribution window, the conversion is credited as view-through. Upstack aggregates these counts across Meta, Google, and TikTok for a unified view. *** ## When to Use | Scenario | Action | | ---------------------------------- | ------------------------------------------------ | | Measuring brand awareness impact | Compare VT vs click-through conversion ratios | | Evaluating display/video campaigns | VT conversions indicate passive ad influence | | Attribution window analysis | Assess how ad viewing affects conversion timing | | Platform comparison | Identify which channels drive passive engagement | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [Blended All Conversions](/reference/metrics/advertising/blended/all-conversions/blended-all-conversions) | Total conversions including click and view-through | | [Blended Purchases](/reference/metrics/advertising/blended/purchases/blended-purchases) | Purchase-specific conversions across platforms | | [Blended Impressions](/reference/metrics/advertising/blended/blended-impressions) | Total ad views that drive VT conversions | [See all Blended Conversions metrics →](/reference/metrics/advertising/blended) # Google Ads Metrics: Performance Tracking for Search, Display & YouTube Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads Track Google Ads performance metrics in Upstack. Includes spend, clicks, impressions, conversions, ROAS, CPA, and video metrics from the Google Ads API. Google Ads metrics track performance across Search, Display, Shopping, and YouTube campaigns. These metrics are pulled directly from the Google Ads API and represent Google's reported attribution. **Data Source:** [Google Ads](/sources/catalog/google-ads)\ **Metrics:** 25\ **Action Metric Groups:** 3 Google Ads metrics are split into core metrics (spend, audience, clicks, efficiency, video) that live directly under this channel, plus per-action folders that pair a conversion event with its value and cost-per-action metrics: | Action Group | Metrics | Covers | | ---------------------------------------------------------------------------------------------- | ------- | -------------------------------------------------------------- | | [Purchases](/reference/metrics/advertising/google-ads/purchases) | 3 | Purchase count, revenue value, cost per purchase | | [All Conversions](/reference/metrics/advertising/google-ads/all-conversions) | 3 | All conversion actions, total value, cost per conversion | | [View-Through Conversions](/reference/metrics/advertising/google-ads/view-through-conversions) | 2 | Conversions after ad view and cost per view-through conversion | The core metrics are grouped below by what they measure. ## Metric Groups ### [Google Spend](/reference/metrics/advertising/google-ads) Track your Google advertising investment and budget allocation. | Metric | Description | | ---------------------------------------------------------------------- | -------------------------------- | | [Google Spend](/reference/metrics/advertising/google-ads/google-spend) | Total amount spent on Google ads | ### [Google Audience](/reference/metrics/advertising/google-ads) Measure reach and impression efficiency across your campaigns. | Metric | Description | | ---------------------------------------------------------------------------------- | ------------------------------ | | [Google Impressions](/reference/metrics/advertising/google-ads/google-impressions) | Number of times ads were shown | | [Google CPM](/reference/metrics/advertising/google-ads/google-cost-per-mille) | Cost per thousand impressions | | [Google Frequency](/reference/metrics/advertising/google-ads/google-frequency) | Average views per person | ### [Google Clicks](/reference/metrics/advertising/google-ads) Evaluate click engagement and traffic generation from your ads. | Metric | Description | | --------------------------------------------------------------------------------- | ------------------- | | [Google Clicks](/reference/metrics/advertising/google-ads/google-clicks) | Total clicks on ads | | [Google CPC](/reference/metrics/advertising/google-ads/google-cost-per-click) | Cost per click | | [Google CTR](/reference/metrics/advertising/google-ads/google-click-through-rate) | Click-through rate | ### [Google Conversions](/reference/metrics/advertising/google-ads) Track purchases, conversions, and video engagement attributed by Google. | Metric | Description | | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ | | [Google Purchases](/reference/metrics/advertising/google-ads/purchases/google-purchases) | Purchases attributed by Google | | [Google Purchases Value](/reference/metrics/advertising/google-ads/purchases/google-purchases-value) | Revenue from attributed purchases | | [Google Average Purchase Value](/reference/metrics/advertising/google-ads/google-average-purchase-value) | Average order value | | [Google All Conversions](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions) | All tracked conversion actions | | [Google All Conversions Value](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions-value) | Total value of all conversions | | [Google Average All Conversion Value](/reference/metrics/advertising/google-ads/google-average-all-conversion-value) | Average value per conversion | | [Google Video Views](/reference/metrics/advertising/google-ads/google-video-views) | Video ad views (30+ seconds) | | [Google View-Through Conversions](/reference/metrics/advertising/google-ads/view-through-conversions/google-view-through-conversions) | Conversions after ad view (no click) | ### [Google Efficiency](/reference/metrics/advertising/google-ads) Measure return on ad spend and acquisition efficiency. | Metric | Description | | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | | [Google ROAS](/reference/metrics/advertising/google-ads/google-return-on-ad-spend) | Return on ad spend | | [Google CPA](/reference/metrics/advertising/google-ads/google-cost-per-acquisition) | Cost per purchase acquisition | | [Google Cost per Purchase](/reference/metrics/advertising/google-ads/purchases/google-cost-per-purchase) | Cost to acquire one purchase | | [Google All Conversions ROAS](/reference/metrics/advertising/google-ads/google-all-conversions-return-on-ad-spend) | ROAS across all conversion types | | [Google Cost per All Conversions](/reference/metrics/advertising/google-ads/all-conversions/google-cost-per-all-conversions) | Cost per any conversion | | [Google CPV](/reference/metrics/advertising/google-ads/google-cost-per-view) | Cost per video view | | [Google Cost per View-Through Conversion](/reference/metrics/advertising/google-ads/view-through-conversions/google-cost-per-view-through-conversion) | Cost per view-through conversion | ## Attribution Model Google Ads uses its own attribution model to assign conversions to campaigns. Key differences from Upstack attribution: * **Data-driven attribution**: Google uses machine learning to assign conversion credit across touchpoints * **Click vs view-through**: Google tracks both click-based and impression-based conversions * **Conversion windows**: Default 30-day click, 1-day view attribution windows For cross-channel comparison, use [Blended Metrics](/reference/metrics/advertising/blended) which normalize attribution across platforms. # Google Ads All Conversions Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/all-conversions All Google Ads metrics for all-conversions — volume, value, and cost in one place. Metrics for all conversions across your Google Ads campaigns: * [Google All Conversions: Total Conversion Actions](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions) * [Google All Conversions Value: Total Revenue from All Google Conversion Types](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions-value) * [Google Cost per All Conversions: Efficiency Across All Goal Types](/reference/metrics/advertising/google-ads/all-conversions/google-cost-per-all-conversions) # Google All Conversions: Total Conversion Actions Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions Track the total number of conversion actions from your Google Ads campaigns, including purchases, sign-ups, and other goals. Google All Conversions measures all conversion actions tracked by Google from your ads, including purchases, sign-ups, and other configured goals. ## Formula **Google All Conversions** = **COUNT** ( All Conversion Actions ) | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Sum | *** ## Example Your online store ran a Google Ads campaign in March that generated **2,847 total conversions** across all configured goals. | Conversion Type | Count | Percentage | | ------------------- | --------- | ---------- | | Purchases | 1,523 | 53.5% | | Newsletter Sign-ups | 892 | 31.3% | | Add to Cart | 432 | 15.2% | | **Total** | **2,847** | 100% | *** ## How It Works Google All Conversions counts every conversion action Google attributed to your ads based on your configured conversion goals. This includes all conversion types you've set up in Google Ads—purchases, form submissions, phone calls, app installs, and any custom goals. The metric reflects Google's own attribution model. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------------- | | Measuring total campaign impact | Compare all conversions across campaigns to identify top performers | | Evaluating conversion volume | Track whether ad spend drives meaningful user actions | | Comparing attribution models | Cross-reference with Upstack-attributed conversions | | Optimizing for multiple goals | Monitor all conversion types, not just purchases | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [Google Purchases](/reference/metrics/advertising/google-ads/purchases/google-purchases) | Subset focusing only on purchase conversions | | [Google All Conversions Value](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions-value) | Monetary value of all conversions | [See all Google Conversions metrics →](/reference/metrics/advertising/google-ads) # Google All Conversions Value: Total Revenue from All Google Conversion Types Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions-value Track the total monetary value of all conversion actions from your Google Ads campaigns, including purchases, sign-ups, and other goals. Google All Conversions Value measures the total monetary value of all conversion actions tracked by Google Ads, including purchases, lead submissions, sign-ups, and other configured goals. ## Formula **Google All Conversions Value** = **SUM** ( Conversion Value ) | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Sum | *** ## Example Your fitness apparel brand ran Google Search and Shopping campaigns in March, generating **\$47,850 in All Conversions Value**: | Conversion Type | Count | Value | | ------------------- | --------- | ------------ | | Purchases | 312 | \$38,940 | | Newsletter Sign-ups | 1,847 | \$5,541 | | Account Creations | 673 | \$3,369 | | **Total** | **2,832** | **\$47,850** | *** ## How It Works Google tracks value for every configured conversion action—not just purchases. Each conversion type can have an assigned value (fixed or dynamic), and this metric sums all values across all goal types within your selected date range. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------------------- | | Measuring total campaign impact | Compare All Conversions Value across campaigns to see full business value | | Evaluating micro-conversion ROI | Assess whether sign-ups and leads contribute meaningful value | | Campaign budget allocation | Shift spend toward campaigns generating highest total value | | Full-funnel reporting | Report on all value driven by Google Ads, not just purchases | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------- | | [Google All Conversions](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions) | Count of all conversions (volume behind this value) | | [Google All Conversions ROAS](/reference/metrics/advertising/google-ads/google-all-conversions-return-on-ad-spend) | Return on ad spend using this value metric | [See all Google Conversions metrics →](/reference/metrics/advertising/google-ads) # Google Cost per All Conversions: Efficiency Across All Goal Types Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/all-conversions/google-cost-per-all-conversions Track your Google Ads cost per all conversions to measure efficiency across every conversion action. Optimize spend allocation by goal type. Google Cost per All Conversions measures how much you spend on average to drive each conversion action across all goal types in Google Ads. ## Formula **Google Cost per All Conversions** = [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) ÷ [**Google All Conversions**](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) | Total amount spent on Google Ads campaigns | | [**Google All Conversions**](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions) | Total count of all conversion actions tracked by Google Ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your brand awareness campaign spent **\$3,200** in March and generated **640 all conversions** (including purchases, sign-ups, and video views). | Campaign | Spend | All Conversions | Cost/All Conv. | | --------------- | ------- | --------------- | -------------- | | Brand Awareness | \$3,200 | 640 | \$5.00 | | Retargeting | \$1,800 | 450 | \$4.00 | | Shopping | \$4,500 | 300 | \$15.00 | *** ## How It Works Google calculates this metric by dividing your total ad spend by the number of all conversions recorded. Unlike standard cost-per-conversion, this includes every conversion action—purchases, leads, phone calls, app installs, and micro-conversions like video engagement or page views. *** ## When to Use | Scenario | Action | | -------------------------------- | ----------------------------------------------------------------------- | | Comparing full-funnel efficiency | Use to evaluate campaigns tracking multiple conversion types | | Assessing awareness campaigns | Benchmark cost efficiency when optimizing for video views or engagement | | Evaluating lead gen performance | Track cost across form fills, calls, and chat initiations | | Setting bidding targets | Inform target CPA strategies that include all goal types | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------- | --------------------------- | | [Google Spend](/reference/metrics/advertising/google-ads/google-spend) | Numerator in this formula | | [Google All Conversions](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions) | Denominator in this formula | [See all Google Efficiency metrics →](/reference/metrics/advertising/google-ads) # Google All Conversions ROAS: Full-Funnel Return on Ad Spend Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/google-all-conversions-return-on-ad-spend Measure the return on ad spend for all Google Ads conversions. Includes purchases, leads, sign-ups, and all tracked conversion actions—not just direct sales. Google All Conversions ROAS measures the revenue return on ad spend including all conversion types tracked by Google, not just purchases. ## Formula **Google All Conversions ROAS** = [**Google All Conversions Value**](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions-value) ÷ [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [**Google All Conversions Value**](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions-value) | Total value from all conversion types tracked in Google Ads | | [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) | Total amount billed by Google for advertising | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Ratio | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your brand spent **\$8,000** on Google Ads last month and generated **\$28,000** in all conversions value: | Metric | Value | Calculation | | ------------------------ | --------- | ----------------------------------- | | All Conversions Value | \$28,000 | Includes purchases, leads, sign-ups | | Google Spend | \$8,000 | Total ad spend | | **All Conversions ROAS** | **3.50x** | \$28,000 ÷ \$8,000 | For every \$1 spent, you generated \$3.50 in total conversion value across all tracked conversion types. *** ## How It Works Google All Conversions ROAS divides the total value of all tracked conversions by your ad spend. Unlike standard ROAS which focuses on purchases, this metric includes the value of all conversion actions—leads, sign-ups, phone calls, and other goals you've assigned values to in Google Ads. *** ## When to Use | Scenario | Action | | -------------------------------- | ---------------------------------------------------- | | Evaluating full-funnel campaigns | Measure total value generated, not just direct sales | | Comparing lead gen vs e-commerce | Use for campaigns with mixed conversion goals | | Benchmarking Performance Max | Assess all conversion types in Smart campaigns | | Justifying upper-funnel spend | Show value beyond immediate purchases | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | | [Google ROAS](/reference/metrics/advertising/google-ads/google-return-on-ad-spend) | Purchase-only ROAS; use for direct sales comparison | | [Google All Conversions Value](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions-value) | Numerator of this formula | [See all Google Efficiency metrics →](/reference/metrics/advertising/google-ads) # Google Average All Conversion Value: Value Per Conversion Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/google-average-all-conversion-value Track Google Ads average conversion value to understand the typical worth of each conversion action across all goal types. Google Average All Conversion Value measures the typical monetary worth of each conversion action from your Google Ads campaigns. ## Formula **Google Average All Conversion Value** = [**Google All Conversions Value**](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions-value) ÷ [**Google All Conversions**](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [**Google All Conversions Value**](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions-value) | Total monetary value from all conversion actions | | [**Google All Conversions**](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions) | Total count of all conversion actions | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example A DTC brand's Google Shopping campaign generated **\$47,500 in total conversion value** from **950 conversions** last month. | Metric | Value | Calculation | | ------------------------- | ----------- | ---------------------------- | | All Conversions Value | \$47,500 | Sum of all conversion values | | All Conversions | 950 | Total conversion count | | **Avg. Conversion Value** | **\$50.00** | \$47,500 ÷ 950 | *** ## How It Works Google calculates this by dividing the total value assigned to all conversion actions by the number of conversions. This includes all goal types—purchases, leads, signups, and any other configured conversion actions. Values are assigned based on your conversion tracking setup. *** ## When to Use | Scenario | Action | | --------------------------------- | -------------------------------------------------------------------------------- | | Evaluating campaign profitability | Compare avg. conversion values across campaigns to prioritize high-value traffic | | Setting bidding strategies | Use as a baseline when configuring value-based bidding | | Identifying audience segments | Find audiences that generate higher-value conversions | | Comparing ad formats | Assess whether Shopping vs. Search drives more valuable conversions | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------- | | [Google All Conversions](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions) | Denominator in this calculation | | [Google All Conversions Value](/reference/metrics/advertising/google-ads/all-conversions/google-all-conversions-value) | Numerator in this calculation | [See all Google Conversions metrics →](/reference/metrics/advertising/google-ads) # Google Average Purchase Value: Revenue Per Conversion Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/google-average-purchase-value Track the average revenue per Google Ads purchase. Optimize campaigns for higher-value conversions and improve overall ROAS. Google Average Purchase Value measures the average order value for purchases attributed to your Google ads. ## Formula **Google Average Purchase Value** = [**Google Purchases Value**](/reference/metrics/advertising/google-ads/purchases/google-purchases-value) ÷ [**Google Purchases**](/reference/metrics/advertising/google-ads/purchases/google-purchases) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [**Google Purchases Value**](/reference/metrics/advertising/google-ads/purchases/google-purchases-value) | Total revenue from purchases attributed to Google ads | | [**Google Purchases**](/reference/metrics/advertising/google-ads/purchases/google-purchases) | Number of purchases attributed to Google ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Google Search campaigns generated **\$28,450 in attributed revenue** from **215 purchases** last month. | Campaign | Purchases Value | Purchases | Avg Purchase Value | | ---------------- | --------------- | --------- | ------------------ | | Brand Search | \$15,200 | 95 | \$160.00 | | Non-Brand Search | \$8,750 | 85 | \$102.94 | | Shopping | \$4,500 | 35 | \$128.57 | | **Total** | **\$28,450** | **215** | **\$132.33** | *** ## How It Works This metric divides total Google-attributed revenue by the number of Google-attributed purchases. Higher values indicate your ads are driving customers who spend more per order, improving the efficiency of your ad spend. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------- | | Comparing campaign quality | Identify which campaigns drive higher-value customers | | Budget allocation | Shift spend toward campaigns with higher average order values | | Audience targeting optimization | Test audiences to find segments that spend more | | Seasonal analysis | Track how purchase values change during promotions | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | --------------------------------------------- | | [Google Purchases Value](/reference/metrics/advertising/google-ads/purchases/google-purchases-value) | Numerator: total revenue attributed to Google | | [Google Purchases](/reference/metrics/advertising/google-ads/purchases/google-purchases) | Denominator: purchase count | [See all Google Conversions metrics →](/reference/metrics/advertising/google-ads) # Google CTR: Click-Through Rate for Google Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/google-click-through-rate Measure your Google Ads click-through rate. See what percentage of impressions convert to clicks and optimize ad relevance. Google CTR measures the percentage of people who saw your Google ad and clicked on it. ## Formula **Google CTR** = ( [**Google Clicks**](/reference/metrics/advertising/google-ads/google-clicks) ÷ [**Google Impressions**](/reference/metrics/advertising/google-ads/google-impressions) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [**Google Clicks**](/reference/metrics/advertising/google-ads/google-clicks) | Total number of clicks on your Google ads | | [**Google Impressions**](/reference/metrics/advertising/google-ads/google-impressions) | Total number of times your Google ads were displayed | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example A home goods store ran Google Search ads during a spring sale promotion: | Campaign | Impressions | Clicks | CTR | | ------------------- | ----------- | ------ | ----- | | Spring Bedding Sale | 45,000 | 1,800 | 4.00% | | Outdoor Furniture | 32,000 | 960 | 3.00% | | Kitchen Appliances | 28,000 | 560 | 2.00% | *** ## How It Works CTR is calculated by dividing clicks by impressions and multiplying by 100. Higher CTR signals your ad copy and targeting resonate with your audience. Google uses CTR as a key factor in Quality Score, which affects ad rank and cost-per-click. *** ## When to Use | Scenario | Action | | ---------------------------- | ----------------------------------------- | | Low CTR on search campaigns | Test new ad headlines and descriptions | | CTR varies by device | Adjust bids or create device-specific ads | | High impressions, low clicks | Refine keyword targeting or audience | | Comparing ad variations | Use CTR to identify winning creative | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ------------------------------ | | [Google Clicks](/reference/metrics/advertising/google-ads/google-clicks) | Numerator in CTR calculation | | [Google Impressions](/reference/metrics/advertising/google-ads/google-impressions) | Denominator in CTR calculation | [See all Google Clicks metrics →](/reference/metrics/advertising/google-ads) # Google Clicks: Total Ad Click Volume Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/google-clicks Track total clicks on your Google ads to measure audience engagement and traffic generation from your campaigns. Google Clicks measures the total number of times users clicked on your Google ads. ## Formula **Google Clicks** = **COUNT** ( Ad Clicks ) | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Sum | *** ## Example Your fitness apparel brand ran Google Shopping ads in March, generating **18,432 clicks** across your campaigns. | Campaign | Clicks | Spend | | ----------------------- | ------ | ------- | | Brand Search | 8,241 | \$2,472 | | Shopping - Best Sellers | 6,105 | \$4,884 | | Performance Max | 4,086 | \$3,269 | *** ## How It Works Google Clicks counts every instance a user clicks on your ad. This includes clicks to your website, app installs, phone calls, and map directions—depending on your campaign type and ad format. Google deduplicates invalid clicks automatically. *** ## When to Use | Scenario | Action | | -------------------------------------- | ----------------------------------------------- | | Low traffic despite high impressions | Improve ad copy and creative relevance | | Clicks increasing but conversions flat | Review landing page experience | | Budget constrained campaigns | Prioritize campaigns with highest click volume | | Comparing campaign performance | Use clicks alongside CTR for engagement context | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------- | -------------------------------------------------------------- | | [Google CTR](/reference/metrics/advertising/google-ads/google-click-through-rate) | Click-through rate shows clicks as a percentage of impressions | | [Google CPC](/reference/metrics/advertising/google-ads/google-cost-per-click) | Cost per click divides spend by total clicks | [See all Google Clicks metrics →](/reference/metrics/advertising/google-ads) # Google CPA: Average Cost to Acquire a Purchase Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/google-cost-per-acquisition Track your Google CPA to measure how much you spend on average to drive each purchase. Compare cost per acquisition across campaigns to optimize ad efficiency. Google CPA measures how much you spend on average to drive each purchase through Google Ads—lower is better. ## Formula **Google CPA** = [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) ÷ [**Google Purchases**](/reference/metrics/advertising/google-ads/purchases/google-purchases) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | -------------------------------------------- | | [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) | Total amount spent on Google advertising | | [**Google Purchases**](/reference/metrics/advertising/google-ads/purchases/google-purchases) | Number of purchases attributed to Google Ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example A home goods store spent **\$4,200** on Google Ads in March and drove **84 purchases**: | Metric | Value | Calculation | | ---------------- | ----------- | ------------ | | Google Spend | \$4,200 | — | | Google Purchases | 84 | — | | **Google CPA** | **\$50.00** | \$4,200 ÷ 84 | *** ## How It Works Google CPA divides your total Google ad spend by the number of purchases attributed to those ads. This gives you the average cost to acquire each conversion, helping you understand campaign efficiency at a glance. *** ## When to Use | Scenario | Action | | ----------------------------- | -------------------------------------------------- | | Comparing campaign efficiency | Lower CPA campaigns deliver purchases more cheaply | | Setting bidding targets | Use historical CPA to inform target CPA bidding | | Budget allocation | Shift spend toward campaigns with better CPA | | Evaluating profitability | Compare CPA against average order margin | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | --------------------------------------------- | | [Google Cost per Purchase](/reference/metrics/advertising/google-ads/purchases/google-cost-per-purchase) | Same calculation—CPA is a common abbreviation | | [Google ROAS](/reference/metrics/advertising/google-ads/google-return-on-ad-spend) | Efficiency from the revenue perspective | | [Google Spend](/reference/metrics/advertising/google-ads/google-spend) | Numerator in the CPA formula | | [Google Purchases](/reference/metrics/advertising/google-ads/purchases/google-purchases) | Denominator in the CPA formula | [See all Google Efficiency metrics →](/reference/metrics/advertising/google-ads) # Google CPC: Cost Per Click on Your Google Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/google-cost-per-click Track your Google CPC to measure average cost per ad click. Lower CPC means more traffic for your budget—optimize bids and quality scores. Google CPC measures the average amount you pay each time someone clicks your Google ad. ## Formula **Google CPC** = [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) ÷ [**Google Clicks**](/reference/metrics/advertising/google-ads/google-clicks) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | ---------------------------------------- | | [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) | Total amount spent on Google advertising | | [**Google Clicks**](/reference/metrics/advertising/google-ads/google-clicks) | Total clicks on your Google ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your skincare brand spent **\$2,450** on Google Ads last week and received **3,500 clicks**: | Metric | Value | | -------------- | ---------- | | Google Spend | \$2,450 | | Google Clicks | 3,500 | | **Google CPC** | **\$0.70** | *** ## How It Works Google CPC divides your total Google ad spend by the number of clicks received. This metric reflects your average cost efficiency—lower CPC means you're acquiring more traffic for each dollar spent. *** ## When to Use | Scenario | Action | | ----------------------------- | ---------------------------------------------- | | Comparing campaign efficiency | Identify which campaigns drive cheaper traffic | | Budget optimization | Shift spend to lower-CPC keywords | | Quality Score analysis | High CPC may signal low relevance scores | | Competitive benchmarking | Compare CPC against industry averages | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | -------------------------- | | [Google Spend](/reference/metrics/advertising/google-ads/google-spend) | Numerator in CPC formula | | [Google Clicks](/reference/metrics/advertising/google-ads/google-clicks) | Denominator in CPC formula | [See all Google Clicks metrics →](/reference/metrics/advertising/google-ads) # Google CPM: Cost Per Thousand Impressions Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/google-cost-per-mille Track your Google Ads cost per thousand impressions. Measure how efficiently your ad budget reaches audiences and optimize for better CPM. Google CPM measures how much you pay for every 1,000 times your Google ad is shown—lower CPM means your budget reaches more people. ## Formula **Google CPM** = ( [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) ÷ [**Google Impressions**](/reference/metrics/advertising/google-ads/google-impressions) ) × 1,000 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ------------------------------------------ | | [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) | Total amount spent on Google advertising | | [**Google Impressions**](/reference/metrics/advertising/google-ads/google-impressions) | Total times your Google ads were displayed | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example A home décor brand spent **\$2,400** on Google Display ads in March and received **1,200,000 impressions**: | Metric | Value | Calculation | | ------------------ | ---------- | --------------------------- | | Google Spend | \$2,400 | — | | Google Impressions | 1,200,000 | — | | **Google CPM** | **\$2.00** | \$2,400 ÷ 1,200,000 × 1,000 | *** ## How It Works Google CPM divides your total ad spend by the number of impressions, then multiplies by 1,000 to express the cost per thousand views. This metric helps you understand the efficiency of your awareness campaigns where reach matters more than clicks. *** ## When to Use | Scenario | Action | | --------------------------------------- | ------------------------------------ | | Comparing brand awareness campaigns | Lower CPM = more efficient reach | | Evaluating Display vs. YouTube spend | Compare CPM across campaign types | | Assessing audience targeting efficiency | High CPM may signal narrow targeting | | Budget planning for impressions | Forecast spend based on target reach | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | -------------------------- | | [Google Spend](/reference/metrics/advertising/google-ads/google-spend) | Numerator—total ad cost | | [Google Impressions](/reference/metrics/advertising/google-ads/google-impressions) | Denominator—total ad views | [See all Google Audience metrics →](/reference/metrics/advertising/google-ads) # Google CPV: Video Ad Cost Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/google-cost-per-view Track your Google CPV (cost per video view) to measure video ad efficiency. Calculate how much you pay each time someone watches your Google video ad. Google CPV measures how much you pay on average each time someone watches your Google video ad. ## Formula **Google CPV** = [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) ÷ [**Google Video Views**](/reference/metrics/advertising/google-ads/google-video-views) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | --------------------------------------------------- | | [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) | Total amount spent on Google advertising | | [**Google Video Views**](/reference/metrics/advertising/google-ads/google-video-views) | Number of times users watched your Google video ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example A skincare brand runs YouTube ads promoting their new serum. Here's their weekly performance: | Campaign | Spend | Video Views | CPV | | --------------- | ------- | ----------- | ------ | | Product Demo | \$850 | 42,500 | \$0.02 | | Brand Story | \$1,200 | 30,000 | \$0.04 | | Tutorial Series | \$650 | 65,000 | \$0.01 | The Tutorial Series campaign delivers the lowest CPV at **\$0.01 per view**, making it the most efficient for building video engagement. *** ## How It Works Google CPV divides your total ad spend by the number of video views. A view is typically counted when someone watches at least 30 seconds of your video (or the entire video if shorter). Lower CPV means you're paying less for each viewer to engage with your video content. *** ## When to Use | Scenario | Action | | --------------------------------------- | ----------------------------------------------------------- | | Comparing video campaign efficiency | Lower CPV indicates better cost efficiency per viewer | | Setting video campaign budgets | Use historical CPV to forecast costs for target view counts | | Optimizing creative performance | Test different video formats and track CPV changes | | Benchmarking against industry standards | Compare your CPV to vertical averages | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | -------------------------------------------- | | [Google Video Views](/reference/metrics/advertising/google-ads/google-video-views) | The denominator—total views driving your CPV | | [Google Spend](/reference/metrics/advertising/google-ads/google-spend) | The numerator—total cost divided by views | [See all Google Efficiency metrics →](/reference/metrics/advertising/google-ads) # Google Frequency: Average Ad Views Per Person Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/google-frequency Track Google Frequency to measure how often each person sees your ads. Monitor ad fatigue, optimize campaign reach, and improve Google Ads performance. Google Frequency measures the average number of times each person saw your Google ads. ## Formula **Google Frequency** = [**Google Impressions**](/reference/metrics/advertising/google-ads/google-impressions) ÷ **Reach** ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [**Google Impressions**](/reference/metrics/advertising/google-ads/google-impressions) | Total number of times your Google ads were displayed | | **Reach** | Number of unique people who saw your ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example A skincare brand running Google Display campaigns sees **125,000 impressions** reaching **25,000 unique users** during a product launch. | Metric | Value | Calculation | | -------------------- | ------- | ----------------- | | Google Impressions | 125,000 | Total ad displays | | Reach | 25,000 | Unique viewers | | **Google Frequency** | **5.0** | 125,000 ÷ 25,000 | Each person saw the ad an average of 5 times during the campaign. *** ## How It Works Google calculates frequency by dividing total impressions by the number of unique users reached. This metric only counts unique people—if someone sees your ad on multiple devices, they're counted once. High frequency can lead to ad fatigue, reducing campaign effectiveness over time. *** ## When to Use | Scenario | Action | | ----------------------------- | ----------------------------------------------------------------------------- | | Frequency above 7-10 | Refresh creative or expand targeting to reduce ad fatigue | | Low frequency with high reach | Increase frequency caps to boost message retention | | Brand awareness campaigns | Target 3-5 frequency for optimal recall | | Retargeting campaigns | Monitor closely—higher frequency acceptable but watch for diminishing returns | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | -------------------------------------- | | [Google Impressions](/reference/metrics/advertising/google-ads/google-impressions) | Numerator in the frequency calculation | [See all Google Audience metrics →](/reference/metrics/advertising/google-ads) # Google Impressions: Ad Visibility Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/google-impressions Track how many times your Google ads were shown to users. Measure reach and visibility across Search, Display, and YouTube campaigns. Google Impressions measures the total number of times your Google ads appeared in front of users. ## Formula **Google Impressions** = **COUNT** ( Ad Impressions ) | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Sum | *** ## Example Your Google campaigns reached **1.2 million impressions** in January across different ad types: | Campaign Type | Impressions | Share | | --------------- | ----------- | ----- | | Search Ads | 450,000 | 37.5% | | Display Network | 520,000 | 43.3% | | YouTube Ads | 230,000 | 19.2% | *** ## How It Works Google counts one impression each time your ad is shown on a search results page, website, or video. Display ads count when the ad loads in the viewable area. Search ads count when your ad appears for a user's query. *** ## When to Use | Scenario | Action | | ------------------------- | --------------------------------------------------------- | | Measuring brand awareness | Track total reach of your campaigns | | Evaluating campaign scale | Compare impression volume across campaigns | | Diagnosing low clicks | High impressions with low clicks signals targeting issues | | Calculating CPM | Divide Spend by Impressions × 1,000 | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------- | -------------------------------------------- | | [Google CPM](/reference/metrics/advertising/google-ads/google-cost-per-mille) | Cost per 1,000 impressions | | [Google CTR](/reference/metrics/advertising/google-ads/google-click-through-rate) | Clicks ÷ Impressions (click-through rate) | | [Google Frequency](/reference/metrics/advertising/google-ads/google-frequency) | Impressions ÷ Reach (average views per user) | | [Google Clicks](/reference/metrics/advertising/google-ads/google-clicks) | User engagement from these impressions | [See all Google Audience metrics →](/reference/metrics/advertising/google-ads) # Google ROAS: Measure Your Google Ads Return on Investment Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/google-return-on-ad-spend Track Google ROAS to measure revenue earned per dollar spent on Google Ads. Calculate return on ad spend and optimize your advertising efficiency. Google ROAS measures how much revenue you earn for every dollar spent on Google Ads. ## Formula **Google ROAS** = [**Google Purchases Value**](/reference/metrics/advertising/google-ads/purchases/google-purchases-value) ÷ [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [**Google Purchases Value**](/reference/metrics/advertising/google-ads/purchases/google-purchases-value) | Revenue from purchases attributed to Google Ads | | [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) | Total amount spent on Google Ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Multiplier (displayed as Nx) | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example **Your Google Ads campaign generated \$12,500 in revenue from \$2,500 in ad spend:** | Metric | Value | | ---------------------- | -------- | | Google Purchases Value | \$12,500 | | Google Spend | \$2,500 | | **Google ROAS** | **5.0x** | A 5.0x ROAS means you earned \$5 in revenue for every \$1 spent on Google Ads. *** ## How It Works Google ROAS divides revenue from purchases attributed to your Google Ads by your total ad spend. A ROAS of 3x means \$3 in revenue per \$1 spent. Higher ROAS indicates more efficient advertising performance. *** ## When to Use | Scenario | Action | | --------------------------------- | --------------------------------------------------- | | Evaluating campaign profitability | Compare ROAS against your target (e.g., 3x minimum) | | Optimizing budget allocation | Shift spend toward campaigns with higher ROAS | | Testing ad creatives | Measure which variations drive better returns | | Setting bid strategies | Use target ROAS bidding in Google Ads | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | | [Google Spend](/reference/metrics/advertising/google-ads/google-spend) | The denominator in the ROAS calculation | | [Google Purchases Value](/reference/metrics/advertising/google-ads/purchases/google-purchases-value) | The numerator in the ROAS calculation | | [Google CPA](/reference/metrics/advertising/google-ads/google-cost-per-acquisition) | Cost efficiency metric—lower CPA often correlates with higher ROAS | [See all Google Efficiency metrics →](/reference/metrics/advertising/google-ads) # Google Spend: Total Ad Investment Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/google-spend Track your total Google Ads spending to monitor budget utilization and control advertising costs across campaigns. Google Spend measures the total amount billed by Google for your ads in the selected period. ## Formula **Google Spend** = **SUM** ( Amount Spent ) | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Sum | *** ## Example A home goods retailer spent **\$12,450** on Google Ads in March across their campaigns: | Campaign | Spend | Share of Budget | | ----------------------- | ------- | --------------- | | Shopping - Best Sellers | \$5,200 | 42% | | Search - Brand Terms | \$3,100 | 25% | | Performance Max | \$2,850 | 23% | | Display Remarketing | \$1,300 | 10% | *** ## How It Works Google Spend is pulled directly from the Google Ads API and represents actual charges to your account. This includes all costs across Search, Shopping, Display, Video, and Performance Max campaigns. The metric updates as Google processes billing events. *** ## When to Use | Scenario | Action | | ------------------- | ---------------------------------------------------------- | | Budget monitoring | Compare spend vs. allocated budget to prevent overspending | | Campaign allocation | Identify which campaigns consume the most budget | | Cost trend analysis | Track spending patterns over time to spot anomalies | | ROAS calculation | Use as denominator when calculating return on ad spend | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------- | -------------------------- | | [Google ROAS](/reference/metrics/advertising/google-ads/google-return-on-ad-spend) | Revenue divided by spend | | [Google CPA](/reference/metrics/advertising/google-ads/google-cost-per-acquisition) | Spend divided by purchases | | [Google CPC](/reference/metrics/advertising/google-ads/google-cost-per-click) | Spend divided by clicks | [See all Google Spend metrics →](/reference/metrics/advertising/google-ads) # Google Video Views: Track Video Ad Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/google-video-views Track video views from your Google video ad campaigns. Measure audience engagement with your video content across YouTube and Google Display Network. Google Video Views measures the total number of times users watched your Google video ads (typically 30+ seconds or the full video if shorter). ## Formula **Google Video Views** = **COUNT** ( Video Views ) | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Sum | *** ## Example A home fitness brand runs YouTube TrueView ads for their new workout equipment. **Over 2 weeks, their campaign generated 47,800 video views:** | Campaign | Impressions | Video Views | View Rate | | --------------------- | ----------- | ----------- | --------- | | Spring Fitness Launch | 215,000 | 32,400 | 15.1% | | Product Demo Series | 98,000 | 15,400 | 15.7% | | **Total** | **313,000** | **47,800** | **15.3%** | *** ## How It Works Google counts a video view when a user watches 30 seconds of your video ad (or the full ad if shorter than 30 seconds) or interacts with it, whichever comes first. This metric is pulled directly from your Google Ads account and reflects engagement with video campaigns across YouTube and the Google Display Network. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------ | | Measuring brand awareness | Track video views as a top-funnel engagement indicator | | Evaluating creative performance | Compare view counts across different video creatives | | Optimizing video campaigns | Identify which audiences complete more video views | | Budget allocation | Shift spend toward campaigns with higher view volume | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ------------------------------ | | [Google CPV](/reference/metrics/advertising/google-ads/google-cost-per-view) | Cost efficiency per video view | [See all Google Conversions metrics →](/reference/metrics/advertising/google-ads) # Google Ads Purchases Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/purchases All Google Ads metrics for purchases — volume, value, and cost in one place. Metrics for purchases across your Google Ads campaigns: * [Google Cost per Purchase: Acquisition Efficiency](/reference/metrics/advertising/google-ads/purchases/google-cost-per-purchase) * [Google Purchases: Ad-Attributed Purchase Count](/reference/metrics/advertising/google-ads/purchases/google-purchases) * [Google Purchases Value: Google-Attributed Revenue](/reference/metrics/advertising/google-ads/purchases/google-purchases-value) # Google Cost per Purchase: Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/purchases/google-cost-per-purchase Track your Google Ads cost per purchase to measure acquisition efficiency. Calculate how much you spend to drive each conversion through Google campaigns. Google Cost per Purchase measures how much you spend on average to drive each purchase through your Google Ads campaigns. ## Formula **Google Cost per Purchase** = [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) ÷ [**Google Purchases**](/reference/metrics/advertising/google-ads/purchases/google-purchases) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | --------------------------------------------- | | [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) | Total amount billed by Google for advertising | | [**Google Purchases**](/reference/metrics/advertising/google-ads/purchases/google-purchases) | Number of purchases attributed to Google ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example A home decor store spent **\$4,200** on Google Ads in March and drove **84 purchases**. | Metric | Value | Calculation | | --------------------- | ----------- | ---------------------- | | Google Spend | \$4,200 | Total ad spend | | Google Purchases | 84 | Attributed conversions | | **Cost per Purchase** | **\$50.00** | \$4,200 ÷ 84 | *** ## How It Works Google Cost per Purchase divides your total Google Ads spend by the number of purchases attributed to those campaigns. Lower values indicate more efficient acquisition—you're spending less to acquire each customer through Google. *** ## When to Use | Scenario | Action | | ------------------------- | --------------------------------------------------------- | | High cost per purchase | Pause underperforming campaigns or ad groups | | Compare campaign types | Evaluate Search vs Shopping vs Performance Max efficiency | | Budget allocation | Shift spend to campaigns with lower acquisition costs | | Cross-platform comparison | Compare against Meta or TikTok cost per purchase | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ------------------------------- | | [Google Spend](/reference/metrics/advertising/google-ads/google-spend) | Numerator in calculation | | [Google Purchases](/reference/metrics/advertising/google-ads/purchases/google-purchases) | Denominator in calculation | | [Google ROAS](/reference/metrics/advertising/google-ads/google-return-on-ad-spend) | Revenue-based efficiency metric | [See all Google Efficiency metrics →](/reference/metrics/advertising/google-ads) # Google Purchases: Ad-Attributed Purchase Count Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/purchases/google-purchases Track the number of purchases attributed to your Google ads. Monitor purchase conversion volume and campaign effectiveness. Google Purchases is the total number of purchase conversions that Google attributes to your ads. ## Formula **Google Purchases** = **COUNT** ( Purchase Conversions ) | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Count | *** ## Example A fitness equipment store ran **\$12,500** in Google Ads last month: | Campaign | Purchases | Spend | CPA | | --------------- | --------- | ------------ | -------- | | Brand Search | 187 | \$2,800 | \$15 | | Shopping | 124 | \$5,200 | \$42 | | Performance Max | 89 | \$4,500 | \$51 | | **Total** | **400** | **\$12,500** | **\$31** | *** ## How It Works Google tracks purchase conversion events triggered by users who interacted with your ads. This count is pulled directly from the Google Ads API and reflects Google's attribution model for determining which purchases resulted from your advertising. *** ## When to Use | Scenario | Action | | --------------------------- | ------------------------------------------------------- | | Measuring conversion volume | Compare purchase counts across campaigns | | Calculating CPA | Divide spend by purchases to find cost per acquisition | | Scaling campaigns | Identify campaigns generating the most purchases | | Attribution comparison | Compare Google-attributed purchases to first-party data | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ---------------------------------------- | | [Google Purchases Value](/reference/metrics/advertising/google-ads/purchases/google-purchases-value) | Revenue generated from these purchases | | [Google ROAS](/reference/metrics/advertising/google-ads/google-return-on-ad-spend) | Return on ad spend using purchases value | | [Google CPA](/reference/metrics/advertising/google-ads/google-cost-per-acquisition) | Cost per purchase acquisition | [See all Google Conversions metrics →](/reference/metrics/advertising/google-ads) # Google Purchases Value: Google-Attributed Revenue Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/purchases/google-purchases-value Track total revenue from purchases attributed to your Google ads. Monitor Google-reported purchase conversions and revenue performance. Google Purchases Value is the total revenue from purchases that Google attributes to your ads based on purchase conversion events. ## Formula **Google Purchases Value** = **SUM** ( Purchase Revenue ) | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Sum | *** ## Example A home goods store spent **\$8,400** on Google Ads last month: | Campaign | Purchases | Purchases Value | Avg. Order | | --------------- | --------- | --------------- | ---------- | | Brand Search | 142 | \$18,460 | \$130 | | Shopping | 89 | \$9,790 | \$110 | | Performance Max | 67 | \$8,710 | \$130 | | **Total** | **298** | **\$36,960** | **\$124** | *** ## How It Works Google tracks purchase conversion events triggered by your ads and sums the revenue values. This data is pulled directly from the Google Ads API and reflects Google's attribution of revenue to your advertising campaigns. *** ## When to Use | Scenario | Action | | --------------------------- | -------------------------------------------------------- | | Measuring ad-driven revenue | Compare purchases value across campaigns | | Calculating ROAS | Divide purchases value by spend | | Budget allocation | Shift spend toward campaigns with higher purchases value | | Conversion optimization | Track revenue trends after bid strategy changes | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | -------------------------------------------------- | | [Google Purchases](/reference/metrics/advertising/google-ads/purchases/google-purchases) | Count of purchase conversions driving this revenue | | [Google ROAS](/reference/metrics/advertising/google-ads/google-return-on-ad-spend) | Efficiency ratio using this as numerator | [See all Google Conversions metrics →](/reference/metrics/advertising/google-ads) # Google Ads View Through Conversions Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/view-through-conversions All Google Ads metrics for view-through-conversions — volume, value, and cost in one place. Metrics for view through conversions across your Google Ads campaigns: * [Google Cost per View-Through Conversion: VTC Efficiency Metric](/reference/metrics/advertising/google-ads/view-through-conversions/google-cost-per-view-through-conversion) * [Google View-Through Conversions: Measure Impression Impact](/reference/metrics/advertising/google-ads/view-through-conversions/google-view-through-conversions) # Google Cost per View-Through Conversion: VTC Efficiency Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/view-through-conversions/google-cost-per-view-through-conversion Track your Google Ads cost per view-through conversion to measure impression-based campaign efficiency and optimize display and video advertising. Google Cost per View-Through Conversion measures how much you spend on average to drive each conversion from impression-only exposure in Google Ads. ## Formula **Google Cost per View-Through Conversion** = [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) ÷ [**Google View-Through Conversions**](/reference/metrics/advertising/google-ads/view-through-conversions/google-view-through-conversions) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [**Google Spend**](/reference/metrics/advertising/google-ads/google-spend) | Total amount spent on Google advertising | | [**Google View-Through Conversions**](/reference/metrics/advertising/google-ads/view-through-conversions/google-view-through-conversions) | Conversions attributed to ad impressions without a click | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your home decor store spent **\$3,200** on Google Display campaigns in March, generating **128 view-through conversions**. | Metric | Value | Calculation | | ------------------------ | ----------- | --------------------------------- | | Google Spend | \$3,200 | Total ad spend | | View-Through Conversions | 128 | Impression-attributed conversions | | **Cost per VTC** | **\$25.00** | \$3,200 ÷ 128 | *** ## How It Works This metric divides your total Google ad spend by the number of view-through conversions. A view-through conversion occurs when someone sees your ad impression but converts later without clicking—common in display and video campaigns where brand awareness drives delayed action. *** ## When to Use | Scenario | Action | | ------------------------------- | -------------------------------------------------------------- | | Evaluating display campaign ROI | Compare Cost/VTC across ad groups to find efficient placements | | Assessing video campaign impact | Measure impression-based conversion efficiency | | Budget allocation decisions | Shift spend toward campaigns with lower Cost/VTC | | Justifying awareness spend | Demonstrate value of non-click conversions | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [Google View-Through Conversions](/reference/metrics/advertising/google-ads/view-through-conversions/google-view-through-conversions) | The denominator—total impression-attributed conversions | | [Google Spend](/reference/metrics/advertising/google-ads/google-spend) | The numerator—total ad spend driving these conversions | [See all Google Efficiency metrics →](/reference/metrics/advertising/google-ads) # Google View-Through Conversions: Measure Impression Impact Source: https://docs.upstackdata.com/reference/metrics/advertising/google-ads/view-through-conversions/google-view-through-conversions Track conversions from users who saw but didn't click your Google ad. Measure the impact of display and video impressions on conversions. View-through conversions count users who saw your Google ad, didn't click, but later converted—measuring the indirect impact of ad impressions. ## Formula **Google View-Through Conversions** = **COUNT** ( View-Through Conversions ) | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Sum | *** ## Example Your Display campaign generated **847 view-through conversions** last month: | Campaign | Impressions | Clicks | View-Thru Conv. | | ------------------------- | ----------- | ------ | --------------- | | Display - Retargeting | 450,000 | 2,100 | 412 | | YouTube - Brand Awareness | 320,000 | 890 | 298 | | Discovery - Prospecting | 180,000 | 650 | 137 | *** ## How It Works Google tracks when a user sees your ad impression, then converts within the view-through conversion window (typically 1-30 days) without ever clicking. This attribution helps quantify the value of awareness campaigns where users don't click but are influenced to convert later. *** ## When to Use | Scenario | Action | | ---------------------------- | ---------------------------------------------------- | | Evaluating Display campaigns | View-through conversions reveal impact beyond clicks | | YouTube brand awareness | Measure video ad influence on downstream conversions | | Retargeting effectiveness | Track users who saw ads and converted organically | | Full-funnel attribution | Combine with click conversions for complete picture | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | | [Google Purchases](/reference/metrics/advertising/google-ads/purchases/google-purchases) | Click-based conversions to compare against | | [Google Cost per View-Through Conversion](/reference/metrics/advertising/google-ads/view-through-conversions/google-cost-per-view-through-conversion) | Efficiency of impression-driven conversions | [See all Google Conversions metrics →](/reference/metrics/advertising/google-ads) # Meta Advertising Metrics: Track Facebook & Instagram Ad Performance Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads Track Meta (Facebook/Instagram) ad performance in Upstack. View 127 metrics including ROAS, CPA, CTR, video views with formulas and optimization tips. Meta advertising metrics measure your Facebook and Instagram ad performance across the full marketing funnel. These metrics come directly from Meta's Marketing API and help you evaluate campaign efficiency, audience engagement, and conversion attribution. **Data Source:** Meta Marketing API\ **Total Metrics:** 127 ## How These Metrics Are Organized Meta Ads metrics are split into two groups: * **Core metrics** (47) — spend, audience, clicks, efficiency, and video metrics that live directly under this channel * **Action metric groups** (30) — per-action folders pairing a conversion or engagement event with its value and cost-per-action metrics ### Action Metric Groups | Group | Metrics | Covers | | ---------------------------------------------------------------------------------------------------------- | ------- | ------------------------------------------------ | | [Purchases](/reference/metrics/advertising/meta-ads/purchases) | 3 | Purchase count, revenue value, cost per purchase | | [Add to Carts](/reference/metrics/advertising/meta-ads/add-to-carts) | 2 | Add-to-cart events and cost per add to cart | | [Initiate Checkouts](/reference/metrics/advertising/meta-ads/initiate-checkouts) | 1 | Checkout starts | | [Add Payment Info](/reference/metrics/advertising/meta-ads/add-payment-info) | 2 | Payment info additions and cost | | [Leads](/reference/metrics/advertising/meta-ads/leads) | 2 | Lead form submissions and cost per lead | | [Completed Registrations](/reference/metrics/advertising/meta-ads/completed-registrations) | 1 | Account sign-ups | | [App Installs](/reference/metrics/advertising/meta-ads/app-installs) | 1 | Mobile app installs | | [Subscriptions](/reference/metrics/advertising/meta-ads/subscriptions) | 1 | Subscription sign-ups | | [Subscribes](/reference/metrics/advertising/meta-ads/subscribes) | 2 | Subscribe actions and cost per subscribe | | [Start Trials](/reference/metrics/advertising/meta-ads/start-trials) | 2 | Trial initiations and cost per trial | | [View Contents](/reference/metrics/advertising/meta-ads/view-contents) | 1 | Product page views | | [Contact Events](/reference/metrics/advertising/meta-ads/contact-events) | 2 | Contact submissions and cost per contact | | [Customize Product Events](/reference/metrics/advertising/meta-ads/customize-product-events) | 2 | Product customizations and cost | | [Donate Events](/reference/metrics/advertising/meta-ads/donate-events) | 2 | Donation actions and cost per donate | | [Find Location Events](/reference/metrics/advertising/meta-ads/find-location-events) | 2 | Location searches and cost | | [Schedule Events](/reference/metrics/advertising/meta-ads/schedule-events) | 2 | Schedule bookings and cost | | [Search Events](/reference/metrics/advertising/meta-ads/search-events) | 2 | On-site searches and cost per search | | [Submit Application Events](/reference/metrics/advertising/meta-ads/submit-application-events) | 2 | Application submissions and cost | | [Messaging Conversations Started](/reference/metrics/advertising/meta-ads/messaging-conversations-started) | 1 | Messaging initiations | | [Engagements](/reference/metrics/advertising/meta-ads/engagements) | 2 | All social interactions and cost per engagement | | [Likes](/reference/metrics/advertising/meta-ads/likes) | 1 | Like reactions | | [Comments](/reference/metrics/advertising/meta-ads/comments) | 2 | Comment count and cost per comment | | [Shares](/reference/metrics/advertising/meta-ads/shares) | 2 | Share count and cost per share | | [Saves](/reference/metrics/advertising/meta-ads/saves) | 1 | Save/bookmark count | | [Reactions](/reference/metrics/advertising/meta-ads/reactions) | 1 | All emoji reactions | | [Page Likes](/reference/metrics/advertising/meta-ads/page-likes) | 2 | Page like actions and cost per page like | | [Post Comments](/reference/metrics/advertising/meta-ads/post-comments) | 1 | Post comment count | | [Post Saves](/reference/metrics/advertising/meta-ads/post-saves) | 2 | Post saves and cost per save | | [Post Shares](/reference/metrics/advertising/meta-ads/post-shares) | 1 | Post share count | | [Photo Views](/reference/metrics/advertising/meta-ads/photo-views) | 2 | Expanded photo views and cost | The full list of flat core metrics is in [All Meta Metrics by Category](#all-meta-metrics-by-category) below. *** ## When to Use Each Group | Goal | Start With | | ---------------------------- | ---------------------------------------------------------------------------- | | Monitor budget pacing | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | | Understand audience reach | [Meta Reach](/reference/metrics/advertising/meta-ads/meta-reach) | | Optimize for website traffic | [Meta Clicks](/reference/metrics/advertising/meta-ads/meta-clicks) | | Maximize return on ad spend | [Meta ROAS](/reference/metrics/advertising/meta-ads/meta-return-on-ad-spend) | | Track purchases and revenue | [Purchases](/reference/metrics/advertising/meta-ads/purchases) | | Track leads and sign-ups | [Leads](/reference/metrics/advertising/meta-ads/leads) | | Build brand awareness | [Engagements](/reference/metrics/advertising/meta-ads/engagements) | | Evaluate video campaigns | [Meta Video Views](/reference/metrics/advertising/meta-ads/meta-video-views) | *** ## How Meta Attribution Works Meta attributes conversions based on its attribution window settings. By default, Meta uses a 7-day click and 1-day view window—meaning a conversion is attributed to an ad if someone clicked it within 7 days or viewed it within 1 day before converting. ## All Meta Metrics by Category ### Spend Metrics | Metric | Description | | ---------------------------------------------------------------- | ------------------------ | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Total ad budget consumed | ### Audience Metrics | Metric | Description | | ---------------------------------------------------------------------------- | -------------------------------------- | | [Meta Impressions](/reference/metrics/advertising/meta-ads/meta-impressions) | Number of times ads were shown | | [Meta Reach](/reference/metrics/advertising/meta-ads/meta-reach) | Unique people who saw your ads | | [Meta Frequency](/reference/metrics/advertising/meta-ads/meta-frequency) | Average times each person saw your ads | | [Meta CPM](/reference/metrics/advertising/meta-ads/meta-cost-per-mille) | Cost per 1,000 impressions | ### Click Metrics | Metric | Description | | ---------------------------------------------------------------------------------------------------------- | ----------------------------- | | [Meta Clicks](/reference/metrics/advertising/meta-ads/meta-clicks) | All clicks on your ads | | [Meta Link Clicks](/reference/metrics/advertising/meta-ads/meta-link-clicks) | Clicks on ad links | | [Meta Inline Clicks](/reference/metrics/advertising/meta-ads/meta-inline-clicks) | Clicks on inline links | | [Meta Outbound Clicks](/reference/metrics/advertising/meta-ads/meta-outbound-clicks) | Clicks leaving Meta | | [Meta Unique Clicks](/reference/metrics/advertising/meta-ads/meta-unique-clicks) | Unique people who clicked | | [Meta Landing Page Views](/reference/metrics/advertising/meta-ads/meta-landing-page-views) | Times landing page loaded | | [Meta CTR](/reference/metrics/advertising/meta-ads/meta-click-through-rate) | Click-through rate | | [Meta Link CTR](/reference/metrics/advertising/meta-ads/meta-link-click-through-rate) | Link clicks ÷ Impressions | | [Meta Inline Clicks CTR](/reference/metrics/advertising/meta-ads/meta-inline-clicks-click-through-rate) | Inline clicks ÷ Impressions | | [Meta Outbound CTR](/reference/metrics/advertising/meta-ads/meta-outbound-click-through-rate) | Outbound clicks ÷ Impressions | | [Meta Unique CTR](/reference/metrics/advertising/meta-ads/meta-unique-click-through-rate) | Unique clicks ÷ Reach | | [Meta Landing Page View Rate](/reference/metrics/advertising/meta-ads/meta-landing-page-view-rate) | LP views ÷ Link clicks | | [Meta CPC](/reference/metrics/advertising/meta-ads/meta-cost-per-click) | Cost per click | | [Meta Cost per Link Click](/reference/metrics/advertising/meta-ads/meta-cost-per-link-click) | Spend ÷ Link clicks | | [Meta Cost per Inline Click](/reference/metrics/advertising/meta-ads/meta-cost-per-inline-click) | Spend ÷ Inline clicks | | [Meta Cost per Outbound Click](/reference/metrics/advertising/meta-ads/meta-cost-per-outbound-click) | Spend ÷ Outbound clicks | | [Meta Cost per Unique Click](/reference/metrics/advertising/meta-ads/meta-cost-per-unique-click) | Spend ÷ Unique clicks | | [Meta Cost per Landing Page View](/reference/metrics/advertising/meta-ads/meta-cost-per-landing-page-view) | Spend ÷ Landing page views | ### Efficiency Metrics | Metric | Description | | ------------------------------------------------------------------------------------------------------------------ | ------------------------------ | | [Meta ROAS](/reference/metrics/advertising/meta-ads/meta-return-on-ad-spend) | Return on ad spend | | [Meta CPA](/reference/metrics/advertising/meta-ads/meta-cost-per-acquisition) | Cost per purchase | | [Meta CPP](/reference/metrics/advertising/meta-ads/meta-cost-per-thousand-people-reached) | Cost per 1,000 people reached | | [Meta Cost per Purchase](/reference/metrics/advertising/meta-ads/purchases/meta-cost-per-purchase) | Spend ÷ Purchases | | [Meta New Customer ROAS](/reference/metrics/advertising/meta-ads/meta-new-customer-return-on-ad-spend) | ROAS from new customers | | [Meta New Customer CPA](/reference/metrics/advertising/meta-ads/meta-new-customer-cost-per-acquisition) | Cost to acquire new customers | | [Meta New Customer Cost per Purchase](/reference/metrics/advertising/meta-ads/meta-new-customer-cost-per-purchase) | Spend ÷ New customer purchases | ### Conversion Metrics | Metric | Description | | ---------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- | | [Meta Purchases](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Attributed purchase count | | [Meta Purchases Value](/reference/metrics/advertising/meta-ads/purchases/meta-purchases-value) | Revenue from purchases | | [Meta New Customer Purchases](/reference/metrics/advertising/meta-ads/meta-new-customer-purchases) | First-time buyer purchases | | [Meta Add to Carts](/reference/metrics/advertising/meta-ads/add-to-carts/meta-add-to-carts) | Add to cart actions | | [Meta View Contents](/reference/metrics/advertising/meta-ads/view-contents/meta-view-contents) | Product page views | | [Meta Initiate Checkouts](/reference/metrics/advertising/meta-ads/initiate-checkouts/meta-initiate-checkouts) | Checkout starts | | [Meta Add Payment Info](/reference/metrics/advertising/meta-ads/add-payment-info/meta-add-payment-info) | Payment info additions | | [Meta Leads](/reference/metrics/advertising/meta-ads/leads/meta-leads) | Lead form submissions | | [Meta Completed Registrations](/reference/metrics/advertising/meta-ads/completed-registrations/meta-completed-registrations) | Account sign-ups | | [Meta App Installs](/reference/metrics/advertising/meta-ads/app-installs/meta-app-installs) | Mobile app installs | | [Meta Subscriptions](/reference/metrics/advertising/meta-ads/subscriptions/meta-subscriptions) | Subscription sign-ups | | [Meta Subscribes](/reference/metrics/advertising/meta-ads/subscribes/meta-subscribes) | Subscribe actions | | [Meta Start Trials](/reference/metrics/advertising/meta-ads/start-trials/meta-start-trials) | Trial initiations | | [Meta Contact Events](/reference/metrics/advertising/meta-ads/contact-events/meta-contact-events) | Contact form submissions | | [Meta Customize Product Events](/reference/metrics/advertising/meta-ads/customize-product-events/meta-customize-product-events) | Product customizations | | [Meta Donate Events](/reference/metrics/advertising/meta-ads/donate-events/meta-donate-events) | Donation actions | | [Meta Find Location Events](/reference/metrics/advertising/meta-ads/find-location-events/meta-find-location-events) | Location searches | | [Meta Schedule Events](/reference/metrics/advertising/meta-ads/schedule-events/meta-schedule-events) | Schedule bookings | | [Meta Search Events](/reference/metrics/advertising/meta-ads/search-events/meta-search-events) | On-site searches | | [Meta Submit Application Events](/reference/metrics/advertising/meta-ads/submit-application-events/meta-submit-application-events) | Application submissions | | [Meta Messaging Conversations Started](/reference/metrics/advertising/meta-ads/messaging-conversations-started/meta-messaging-conversations-started) | Messaging initiations | | [Meta Cost per Add to Cart](/reference/metrics/advertising/meta-ads/add-to-carts/meta-cost-per-add-to-cart) | Spend ÷ Add to carts | | [Meta Cost per Lead](/reference/metrics/advertising/meta-ads/leads/meta-cost-per-lead) | Spend ÷ Leads | | [Meta Cost per Registration](/reference/metrics/advertising/meta-ads/meta-cost-per-registration) | Spend ÷ Registrations | | [Meta Cost per Add Payment Info](/reference/metrics/advertising/meta-ads/add-payment-info/meta-cost-per-add-payment-info) | Spend ÷ Payment info | | [Meta Cost per Contact](/reference/metrics/advertising/meta-ads/contact-events/meta-cost-per-contact) | Spend ÷ Contacts | | [Meta Cost per Customize Product](/reference/metrics/advertising/meta-ads/customize-product-events/meta-cost-per-customize-product) | Spend ÷ Customizations | | [Meta Cost per Donate](/reference/metrics/advertising/meta-ads/donate-events/meta-cost-per-donate) | Spend ÷ Donations | | [Meta Cost per Find Location](/reference/metrics/advertising/meta-ads/find-location-events/meta-cost-per-find-location) | Spend ÷ Location searches | | [Meta Cost per Schedule](/reference/metrics/advertising/meta-ads/schedule-events/meta-cost-per-schedule) | Spend ÷ Schedules | | [Meta Cost per Search](/reference/metrics/advertising/meta-ads/search-events/meta-cost-per-search) | Spend ÷ Searches | | [Meta Cost per Start Trial](/reference/metrics/advertising/meta-ads/start-trials/meta-cost-per-start-trial) | Spend ÷ Trials | | [Meta Cost per Submit Application](/reference/metrics/advertising/meta-ads/submit-application-events/meta-cost-per-submit-application) | Spend ÷ Applications | | [Meta Cost per Subscribe](/reference/metrics/advertising/meta-ads/subscribes/meta-cost-per-subscribe) | Spend ÷ Subscribes | ### Engagement Metrics | Metric | Description | | -------------------------------------------------------------------------------------------------------- | ----------------------- | | [Meta Engagements](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) | All social interactions | | [Meta Engagement Rate](/reference/metrics/advertising/meta-ads/meta-engagement-rate) | Engagements ÷ Reach | | [Meta Likes](/reference/metrics/advertising/meta-ads/likes/meta-likes) | Like reactions | | [Meta Comments](/reference/metrics/advertising/meta-ads/comments/meta-comments) | Comment count | | [Meta Shares](/reference/metrics/advertising/meta-ads/shares/meta-shares) | Share count | | [Meta Saves](/reference/metrics/advertising/meta-ads/saves/meta-saves) | Save/bookmark count | | [Meta Reactions](/reference/metrics/advertising/meta-ads/reactions/meta-reactions) | All emoji reactions | | [Meta Page Likes](/reference/metrics/advertising/meta-ads/page-likes/meta-page-likes) | Page like actions | | [Meta Post Comments](/reference/metrics/advertising/meta-ads/post-comments/meta-post-comments) | Post comment count | | [Meta Post Saves](/reference/metrics/advertising/meta-ads/post-saves/meta-post-saves) | Post saves count | | [Meta Post Shares](/reference/metrics/advertising/meta-ads/post-shares/meta-post-shares) | Post share count | | [Meta Photo Views](/reference/metrics/advertising/meta-ads/photo-views/meta-photo-views) | Expanded photo views | | [Meta Cost per Engagement](/reference/metrics/advertising/meta-ads/engagements/meta-cost-per-engagement) | Spend ÷ Engagements | | [Meta Cost per Comment](/reference/metrics/advertising/meta-ads/comments/meta-cost-per-comment) | Spend ÷ Comments | | [Meta Cost per Share](/reference/metrics/advertising/meta-ads/shares/meta-cost-per-share) | Spend ÷ Shares | | [Meta Cost per Save](/reference/metrics/advertising/meta-ads/post-saves/meta-cost-per-save) | Spend ÷ Saves | | [Meta Cost per Page Like](/reference/metrics/advertising/meta-ads/page-likes/meta-cost-per-page-like) | Spend ÷ Page likes | | [Meta Cost per Photo View](/reference/metrics/advertising/meta-ads/photo-views/meta-cost-per-photo-view) | Spend ÷ Photo views | ### Video Metrics | Metric | Description | | ------------------------------------------------------------------------------------------------- | ---------------------------- | | [Meta Video Views](/reference/metrics/advertising/meta-ads/meta-video-views) | 3+ second video views | | [Meta Video Plays](/reference/metrics/advertising/meta-ads/meta-video-plays) | Video play starts | | [Meta Video Completions](/reference/metrics/advertising/meta-ads/meta-video-completions) | 100% completion | | [Meta ThruPlay](/reference/metrics/advertising/meta-ads/meta-thruplay) | ThruPlay views | | [Meta ThruPlay Views](/reference/metrics/advertising/meta-ads/meta-thruplay-views) | ThruPlay view count | | [Meta Video Views 15 Sec](/reference/metrics/advertising/meta-ads/meta-video-views-15-seconds) | 15+ second views | | [Meta Video Views 25%](/reference/metrics/advertising/meta-ads/meta-video-views-25-percent) | 25%+ completion | | [Meta Video Views 50%](/reference/metrics/advertising/meta-ads/meta-video-views-50-percent) | 50%+ completion | | [Meta Video Views 75%](/reference/metrics/advertising/meta-ads/meta-video-views-75-percent) | 75%+ completion | | [Meta Video Views 100%](/reference/metrics/advertising/meta-ads/meta-video-views-100-percent) | 100% completion | | [Meta Average Watch Time](/reference/metrics/advertising/meta-ads/meta-average-watch-time) | Average video watch duration | | [Meta Cost per Video View](/reference/metrics/advertising/meta-ads/meta-cost-per-video-view) | Spend ÷ Video views | | [Meta Cost per Video Play](/reference/metrics/advertising/meta-ads/meta-cost-per-video-play) | Spend ÷ Video plays | | [Meta Cost per ThruPlay](/reference/metrics/advertising/meta-ads/meta-cost-per-thruplay) | Spend ÷ ThruPlay | | [Meta Cost per 15 Sec View](/reference/metrics/advertising/meta-ads/meta-cost-per-15-second-view) | Spend ÷ 15s views | # Meta Add Payment Info Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/add-payment-info All Meta metrics for add-payment-info — volume, value, and cost in one place. Metrics for add payment info across your Meta campaigns: * [Meta Add Payment Info: Payment Details Entered from Ads](/reference/metrics/advertising/meta-ads/add-payment-info/meta-add-payment-info) * [Meta Cost per Add Payment Info: Payment Entry Efficiency](/reference/metrics/advertising/meta-ads/add-payment-info/meta-cost-per-add-payment-info) # Meta Add Payment Info: Payment Details Entered from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/add-payment-info/meta-add-payment-info Track how many add payment info events Meta attributes to your ads. Measure this critical checkout step to optimize for higher purchase completion rates. Meta Add Payment Info counts how many people added payment information after engaging with your ad—a critical step before purchase completion. ## Formula **Meta Add Payment Info** = **COUNT** ( add\_payment\_info events ) Each add-payment-info action attributed to your Meta ads is counted once. | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your Meta campaigns drove **1,892 payment info submissions** in March across different campaign objectives. | Campaign | Add Payment Info | Spend | Cost/Payment Info | | ----------- | ---------------- | ------- | ----------------- | | Retargeting | 1,047 | \$1,620 | \$1.55 | | Lookalike | 584 | \$2,340 | \$4.01 | | Prospecting | 261 | \$1,890 | \$7.24 | *** ## How It Works Meta counts an add-payment-info event when a visitor enters payment details (credit card, PayPal, etc.) during checkout after interacting with your ad within the attribution window. The event is captured via the Meta Pixel or Conversions API when the shopper submits their payment method. *** ## When to Use | Scenario | Action | | -------------------------------- | --------------------------------------------------------------------------------- | | Measuring checkout intent | Compare payment info submissions to initiated checkouts to assess buyer readiness | | Identifying payment friction | Low add-payment-info vs high checkouts signals payment UX issues | | Diagnosing funnel drop-off | Compare payment info to purchases to find final-step abandonment | | Optimizing for high-intent users | Shift budget to campaigns driving more payment submissions | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | | [Meta Cost per Add Payment Info](/reference/metrics/advertising/meta-ads/add-payment-info/meta-cost-per-add-payment-info) | Efficiency of driving payment submissions | | [Meta Initiate Checkouts](/reference/metrics/advertising/meta-ads/initiate-checkouts/meta-initiate-checkouts) | Previous step in the purchase funnel | | [Meta Purchases](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Final conversion after payment info | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Cost per Add Payment Info: Payment Entry Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/add-payment-info/meta-cost-per-add-payment-info Track Meta Cost per Add Payment Info to measure payment entry efficiency. Calculate spend per payment submission to optimize checkout funnel costs. Meta Cost per Add Payment Info measures the average spend per add-payment-info event from your Meta ads, indicating checkout intent acquisition efficiency. ## Formula **Meta Cost per Add Payment Info** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Add Payment Info**](/reference/metrics/advertising/meta-ads/add-payment-info/meta-add-payment-info) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising | | [**Meta Add Payment Info**](/reference/metrics/advertising/meta-ads/add-payment-info/meta-add-payment-info) | Count of add-payment-info events attributed to Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your retargeting campaign spent **\$2,400** on Meta ads last week and generated **120** add-payment-info events. | Metric | Value | Calculation | | ------------------------- | ------- | -------------------------------------- | | Meta Spend | \$2,400 | Total spent on Meta | | Add Payment Info | 120 | Payment submissions attributed to Meta | | Cost per Add Payment Info | \$20.00 | \$2,400 ÷ 120 | *** ## How It Works Cost per Add Payment Info divides your total Meta ad spend by the number of add-payment-info events tracked via the Meta Pixel or Conversions API. An add-payment-info event fires when someone enters payment details during checkout after engaging with your ad. Lower cost indicates more efficient acquisition of high-intent users close to completing a purchase. *** ## When to Use | Scenario | Action | | ------------------------------ | -------------------------------------------------------------- | | Evaluating checkout efficiency | Compare cost across campaigns to find best performers | | Optimizing bottom-funnel spend | Lower costs indicate better targeting or creative | | Diagnosing drop-off issues | High cost may signal friction before payment step | | Budget allocation | Shift spend toward campaigns with lower cost per payment event | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [Meta Add Payment Info](/reference/metrics/advertising/meta-ads/add-payment-info/meta-add-payment-info) | The denominator in this calculation | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The numerator in this calculation | | [Meta CPA](/reference/metrics/advertising/meta-ads/meta-cost-per-acquisition) | Similar efficiency metric for purchase conversions | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Add To Carts Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/add-to-carts All Meta metrics for add-to-carts — volume, value, and cost in one place. Metrics for add to carts across your Meta campaigns: * [Meta Add to Carts: Mid-Funnel Purchase Intent](/reference/metrics/advertising/meta-ads/add-to-carts/meta-add-to-carts) * [Meta Cost per Add to Cart: Purchase Intent Efficiency](/reference/metrics/advertising/meta-ads/add-to-carts/meta-cost-per-add-to-cart) # Meta Add to Carts: Mid-Funnel Purchase Intent Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/add-to-carts/meta-add-to-carts Track Meta Add to Carts to measure purchase intent from your ads. Monitor how many visitors add products to cart after engaging with Meta campaigns. Meta Add to Carts counts how many add-to-cart events Meta attributes to your ads, indicating mid-funnel purchase intent. ## Formula **Meta Add to Carts** = **COUNT** ( add\_to\_cart events ) Each add-to-cart event attributed to your Meta ads is counted once, regardless of cart value. | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your Meta campaigns drove **2,847 add-to-carts** in March across three ad sets. | Ad Set | Add to Carts | Spend | Cost per ATC | | ----------- | ------------ | ------- | ------------ | | Retargeting | 1,412 | \$1,412 | \$1.00 | | Lookalike | 898 | \$1,796 | \$2.00 | | Prospecting | 537 | \$2,148 | \$4.00 | *** ## How It Works Meta counts an add-to-cart event when a visitor adds a product to their shopping cart after interacting with your ad within the attribution window. The event is captured via the Meta Pixel on your site or sent through the Conversions API from your server. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------------------------------ | | Measuring purchase intent | Track add-to-cart volume to gauge how many visitors show buying interest | | Evaluating mid-funnel performance | Compare add-to-cart counts across campaigns to identify engagement drivers | | Diagnosing funnel drop-off | Analyze the gap between add-to-carts and purchases to find conversion blockers | | Optimizing prospecting campaigns | Monitor add-to-carts for cold audiences where immediate purchases are rare | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | | [Meta Cost per Add to Cart](/reference/metrics/advertising/meta-ads/add-to-carts/meta-cost-per-add-to-cart) | Efficiency metric for add-to-cart acquisition | | [Meta Purchases](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Final conversion event in the purchase funnel | | [Meta Initiate Checkouts](/reference/metrics/advertising/meta-ads/initiate-checkouts/meta-initiate-checkouts) | Next step in the funnel after add-to-cart | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Cost per Add to Cart: Purchase Intent Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/add-to-carts/meta-cost-per-add-to-cart Track Meta Cost per Add to Cart to measure purchase intent efficiency. Calculate how much you spend to generate each add-to-cart action from Meta ads. Meta Cost per Add to Cart measures the average spend per add-to-cart event from your Meta ads, indicating purchase intent acquisition efficiency. ## Formula **Meta Cost per Add to Cart** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Add to Carts**](/reference/metrics/advertising/meta-ads/add-to-carts/meta-add-to-carts) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising | | [**Meta Add to Carts**](/reference/metrics/advertising/meta-ads/add-to-carts/meta-add-to-carts) | Count of add-to-cart events attributed to Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your retargeting campaign spent **\$3,500** on Meta ads last month and generated **1,750 add-to-carts**. | Metric | Value | Calculation | | -------------------- | ------- | --------------------------------- | | Meta Spend | \$3,500 | Total spent on Meta | | Add to Carts | 1,750 | Cart additions attributed to Meta | | Cost per Add to Cart | \$2.00 | \$3,500 ÷ 1,750 | *** ## How It Works Cost per Add to Cart divides your total Meta ad spend by the number of add-to-cart events tracked via the Meta Pixel or Conversions API. An add-to-cart event fires when someone adds a product to their shopping cart after engaging with your ad. Lower cost per add-to-cart indicates more efficient purchase intent generation. *** ## When to Use | Scenario | Action | | -------------------------------- | ----------------------------------------------------------------- | | Evaluating mid-funnel efficiency | Compare cost per ATC across campaigns to find top performers | | Budget allocation | Shift spend toward campaigns with lower cost per add-to-cart | | Benchmarking intent costs | Track cost per ATC trends to identify efficiency changes | | Optimizing prospecting | Use cost per ATC when direct purchases are too few to optimize on | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [Meta Add to Carts](/reference/metrics/advertising/meta-ads/add-to-carts/meta-add-to-carts) | The denominator in this calculation | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The numerator in this calculation | | [Meta CPA](/reference/metrics/advertising/meta-ads/meta-cost-per-acquisition) | Similar efficiency metric for purchase conversions | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta App Installs Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/app-installs All Meta metrics for app-installs — volume, value, and cost in one place. Metrics for app installs across your Meta campaigns: * [Meta App Installs: Mobile App Installations from Ads](/reference/metrics/advertising/meta-ads/app-installs/meta-app-installs) # Meta App Installs: Mobile App Installations from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/app-installs/meta-app-installs Track mobile app installations from Meta ads. Measure app install campaign performance and optimize user acquisition costs. Counts how many people installed your mobile app after engaging with your Meta ad—the primary metric for app install campaigns. ## Formula **Meta App Installs** = **COUNT** ( app\_install events ) ### Formula Components | Metric | Definition | | ----------------------- | -------------------------------------------------------------------------------------- | | **app\_install events** | Each mobile app installation attributed to your Meta ads within the attribution window | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your Meta app install campaigns drove **2,847 installs** in Q2 across iOS and Android. | Campaign | Installs | Spend | Cost per Install | | ------------- | -------- | ------- | ---------------- | | iOS Lookalike | 1,423 | \$4,269 | \$3.00 | | Android Broad | 892 | \$3,568 | \$4.00 | | Retargeting | 532 | \$1,330 | \$2.50 | *** ## How It Works Meta counts an app install when a user downloads and opens your app after interacting with your ad within the attribution window. Install events are captured via the Meta SDK integrated in your mobile app, which sends the installation signal back to Meta's servers for attribution. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------------------------ | | Evaluating app campaigns | Compare install counts across campaigns to identify top performers | | Optimizing cost per install | Shift budget toward ad sets driving installs more efficiently | | Assessing platform performance | Compare iOS vs Android install volumes and costs | | Planning acquisition budgets | Forecast install volumes based on historical campaign data | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Total ad investment used to calculate cost per install | | [Meta Completed Registrations](/reference/metrics/advertising/meta-ads/completed-registrations/meta-completed-registrations) | Users who registered after installing your app | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Comments Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/comments All Meta metrics for comments — volume, value, and cost in one place. Metrics for comments across your Meta campaigns: * [Meta Comments: Track Ad Conversation Volume](/reference/metrics/advertising/meta-ads/comments/meta-comments) * [Meta Cost per Comment: Ad Spend per Post Comment](/reference/metrics/advertising/meta-ads/comments/meta-cost-per-comment) # Meta Comments: Track Ad Conversation Volume Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/comments/meta-comments Track Meta ad comments to measure audience engagement. Comments signal strong opinions or questions about your product and indicate high-intent interactions. Meta Comments measures the total number of comments left on your Meta (Facebook and Instagram) ads. ## Formula **Meta Comments** = **COUNT** ( [Comments](/reference/metrics/advertising/meta-ads/comments) ) ### Formula Components | Metric | Definition | | ------------ | ---------------------------------------------------------------------- | | **Comments** | Each comment posted on your ad, including replies to existing comments | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your skincare brand ran a product launch campaign in March, and your ads generated **2,847 comments** across all ad sets. | Ad Creative | Comments | Insight | | ---------------------- | -------- | ---------------------------------------- | | Before/After Video | 1,423 | Questions about ingredients and results | | Influencer Testimonial | 892 | Mix of positive reactions and skepticism | | Product Demo | 532 | Requests for pricing and availability | *** ## How It Works Meta counts every comment posted directly on your ad, including threaded replies. Comments accumulate throughout the ad's lifetime and are attributed based on when the comment was posted, not when the ad was first shown. *** ## When to Use | Scenario | Action | | ----------------------------------- | -------------------------------------------------------------------------------------- | | Evaluating ad creative resonance | Compare comment volume across creatives to identify which sparks the most conversation | | Identifying customer objections | Review comment content to surface common questions or concerns about your product | | Measuring brand awareness campaigns | Use alongside other engagement metrics to gauge overall audience interaction | | Detecting polarizing content | High comments with low shares may indicate controversial messaging | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | | [Meta Cost per Comment](/reference/metrics/advertising/meta-ads/comments/meta-cost-per-comment) | Measures how much you spend for each comment received | | [Meta Engagements](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) | Parent metric that includes comments plus likes, shares, and saves | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Cost per Comment: Ad Spend per Post Comment Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/comments/meta-cost-per-comment Track Meta cost per comment to measure spend efficiency on high-intent engagement actions. Lower costs indicate resonant ad content that sparks conversation. Measures the average cost to generate each comment on your Meta (Facebook and Instagram) ad posts. ## Formula **Meta Cost per Comment** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Comments**](/reference/metrics/advertising/meta-ads/comments/meta-comments) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------- | -------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising | | [**Meta Comments**](/reference/metrics/advertising/meta-ads/comments/meta-comments) | Total comments left on your Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your skincare brand spent **\$1,200** on Meta ads this month and generated **480 comments** across campaigns. | Ad Creative | Spend | Comments | Cost/Comment | | -------------------- | ----- | -------- | ------------ | | Before/After Results | \$600 | 312 | \$1.92 | | Ingredient Education | \$400 | 128 | \$3.13 | | Product Comparison | \$200 | 40 | \$5.00 | *** ## How It Works Upstack pulls comment counts from the Meta Ads API and divides your ad spend by total comments for the selected period. Comments represent higher-intent engagement than reactions—users take time to write a response—but typically occur at lower volume. A lower cost per comment indicates your content resonates enough to spark conversation. *** ## When to Use | Scenario | Action | | ------------------------------------------- | ------------------------------------------------------------------------------ | | Identifying conversation-driving content | Compare cost per comment across creatives to find topics that spark discussion | | Evaluating brand awareness efficiency | Lower cost indicates stronger audience engagement per dollar spent | | Optimizing engagement campaigns | Prioritize ad sets with lower cost per comment for community building | | Benchmarking against other engagement types | Compare to cost per reaction to understand engagement depth versus volume | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | | [Meta Comments](/reference/metrics/advertising/meta-ads/comments/meta-comments) | The comment volume this metric divides spend by | | [Meta Cost per Engagement](/reference/metrics/advertising/meta-ads/engagements/meta-cost-per-engagement) | Broader engagement efficiency including all interaction types | | [Meta Engagement Rate](/reference/metrics/advertising/meta-ads/meta-engagement-rate) | Shows engagement as percentage of reach, not cost efficiency | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Completed Registrations Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/completed-registrations All Meta metrics for completed-registrations — volume, value, and cost in one place. Metrics for completed registrations across your Meta campaigns: * [Meta Completed Registrations: Account Sign-ups from Ads](/reference/metrics/advertising/meta-ads/completed-registrations/meta-completed-registrations) # Meta Completed Registrations: Account Sign-ups from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/completed-registrations/meta-completed-registrations Track Meta Completed Registrations to measure how many people signed up for accounts after engaging with your Meta ads. Optimize sign-up campaigns. Meta Completed Registrations counts how many people finished a registration or sign-up flow after engaging with your Meta ads. ## Formula **Meta Completed Registrations** = **COUNT** ( CompleteRegistration events ) | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your SaaS app ran a Meta campaign promoting free trial sign-ups. In the first week, **842 registrations** were completed. | Campaign | Spend | Registrations | Cost per Registration | | ---------------------- | ------- | ------------- | --------------------- | | Free Trial - Broad | \$2,400 | 512 | \$4.69 | | Free Trial - Lookalike | \$1,800 | 330 | \$5.45 | *** ## How It Works Meta tracks the CompleteRegistration event fired when a user finishes your sign-up flow. Attribution follows your account's attribution window settings (typically 7-day click, 1-day view). Registrations from both Facebook and Instagram placements are combined. *** ## When to Use | Scenario | Action | | --------------------------------------- | ----------------------------------------------------------- | | Evaluating sign-up campaign performance | Compare registration volume across ad sets | | Optimizing for lower-funnel conversions | Use as the conversion event for campaign optimization | | Building lead generation funnels | Track progression from lead to registered user | | Calculating customer acquisition costs | Pair with cost per registration to find efficient campaigns | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------ | | [Meta Cost per Registration](/reference/metrics/advertising/meta-ads/meta-cost-per-registration) | Spend efficiency per registration | | [Meta Leads](/reference/metrics/advertising/meta-ads/leads/meta-leads) | Earlier funnel stage before registration | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Total ad spend used to calculate cost per registration | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Contact Events Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/contact-events All Meta metrics for contact-events — volume, value, and cost in one place. Metrics for contact events across your Meta campaigns: * [Meta Contact Events: Contact Form Submissions from Ads](/reference/metrics/advertising/meta-ads/contact-events/meta-contact-events) * [Meta Cost per Contact: Contact Acquisition Efficiency](/reference/metrics/advertising/meta-ads/contact-events/meta-cost-per-contact) # Meta Contact Events: Contact Form Submissions from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/contact-events/meta-contact-events Track how many contact events your Meta ads generate including email, chat, and call inquiries to measure lead generation for service businesses. Meta Contact Events counts how many people initiated contact (email, chat, or call) after engaging with your Meta ads. ## Formula **Meta Contact Events** = **COUNT** ( Contact Events ) | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your home services business generated **312 contact requests** in March across three service categories. | Service Category | Contacts | Spend | Cost per Contact | | ----------------- | -------- | ------- | ---------------- | | HVAC Repair | 142 | \$2,840 | \$20.00 | | Plumbing Services | 98 | \$1,960 | \$20.00 | | Electrical Work | 72 | \$1,440 | \$20.00 | *** ## How It Works Meta counts a contact event when someone initiates contact through email, chat, phone, or a contact form after interacting with your ad within the attribution window. Contact events are captured via the Meta Pixel or Conversions API when you fire the Contact standard event. *** ## When to Use | Scenario | Action | | -------------------------------- | ---------------------------------------------------------- | | Measuring service business leads | Track contact volume as your primary lead metric | | Comparing lead channels | Evaluate contact events against leads and form submissions | | Optimizing campaign targeting | Shift budget toward audiences generating more contacts | | Calculating acquisition costs | Use with cost per contact to measure efficiency | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [Meta Cost per Contact](/reference/metrics/advertising/meta-ads/contact-events/meta-cost-per-contact) | Cost to acquire each contact event | | [Meta Leads](/reference/metrics/advertising/meta-ads/leads/meta-leads) | Alternative lead metric for form submissions | | [Meta Schedule Events](/reference/metrics/advertising/meta-ads/schedule-events/meta-schedule-events) | Appointment booking metric | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Cost per Contact: Contact Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/contact-events/meta-cost-per-contact Calculate your Meta Ads cost per contact event. Track lead acquisition efficiency for service businesses and optimize your marketing spend effectively. Meta Cost per Contact measures the average spend to generate each contact request from your Meta ads. ## Formula **Meta Cost per Contact** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Contact Events**](/reference/metrics/advertising/meta-ads/contact-events/meta-contact-events) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising | | [**Meta Contact Events**](/reference/metrics/advertising/meta-ads/contact-events/meta-contact-events) | Number of contact submissions attributed to Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your home services business spent **\$2,400** on Meta ads and generated **80** contact requests. | Campaign | Spend | Contacts | Cost per Contact | | --------------- | ------- | -------- | ---------------- | | Kitchen Remodel | \$1,200 | 30 | \$40.00 | | Bathroom Reno | \$800 | 35 | \$22.86 | | General Inquiry | \$400 | 15 | \$26.67 | *** ## How It Works Cost per Contact divides your total Meta ad spend by the number of contact events tracked via the Meta Pixel or Conversions API. Contact events typically fire when someone submits a contact form, requests a quote, or initiates a service inquiry. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------- | | Evaluating lead gen efficiency | Compare cost per contact across campaigns | | Budget optimization | Shift spend to campaigns with lower contact costs | | Benchmarking acquisition costs | Track cost per contact trends over time | | Comparing to cost per lead | Analyze contact-to-lead conversion rates | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------- | ---------------------------------------- | | [Meta Contact Events](/reference/metrics/advertising/meta-ads/contact-events/meta-contact-events) | The denominator in this calculation | | [Meta Cost per Lead](/reference/metrics/advertising/meta-ads/leads/meta-cost-per-lead) | Similar metric for lead form submissions | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The numerator in this calculation | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Customize Product Events Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/customize-product-events All Meta metrics for customize-product-events — volume, value, and cost in one place. Metrics for customize product events across your Meta campaigns: * [Meta Cost per Customize Product: Customization Event Efficiency](/reference/metrics/advertising/meta-ads/customize-product-events/meta-cost-per-customize-product) * [Meta Customize Product: Product Customizations from Ads](/reference/metrics/advertising/meta-ads/customize-product-events/meta-customize-product-events) # Meta Cost per Customize Product: Customization Event Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/customize-product-events/meta-cost-per-customize-product Track Meta Cost per Customize Product to measure your average spend per product customization. Optimize personalization-driven campaigns on Facebook and Instagram. Meta Cost per Customize Product measures the average spend per product customization event from your Meta ads. ## Formula **Meta Cost per Customize Product** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Customize Product Events**](/reference/metrics/advertising/meta-ads/customize-product-events/meta-customize-product-events) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising | | [**Meta Customize Product Events**](/reference/metrics/advertising/meta-ads/customize-product-events/meta-customize-product-events) | Count of customize product events attributed to Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your jewelry brand spent **\$2,400** on Meta ads this month and drove **1,600 product customizations** (engraving, sizing, color selections). | Metric | Value | Calculation | | -------------------------- | ------- | --------------------------------- | | Meta Spend | \$2,400 | Total spent on Meta | | Customize Product Events | 1,600 | Customizations attributed to Meta | | Cost per Customize Product | \$1.50 | \$2,400 ÷ 1,600 | *** ## How It Works Cost per Customize Product divides your total Meta ad spend by the number of customize product events tracked via the Meta Pixel or Conversions API. A customization event fires when someone selects product options like size, color, engraving, or monogramming after engaging with your ad. High customization rates indicate users actively considering purchases, making this a strong mid-funnel signal. *** ## When to Use | Scenario | Action | | ------------------------------------ | ----------------------------------------------------------------- | | Evaluating personalization campaigns | Compare cost per customization across ad sets | | Optimizing product configurators | Identify which customization options drive cheapest engagement | | Forecasting purchase intent | Low cost per customization often predicts strong conversion rates | | Budget allocation | Shift spend toward ads driving affordable customizations | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [Meta Customize Product Events](/reference/metrics/advertising/meta-ads/customize-product-events/meta-customize-product-events) | The denominator in this calculation | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The numerator in this calculation | | [Meta Cost per Add to Cart](/reference/metrics/advertising/meta-ads/add-to-carts/meta-cost-per-add-to-cart) | Similar efficiency metric for the next funnel step | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Customize Product: Product Customizations from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/customize-product-events/meta-customize-product-events Track how many customize product events Meta attributes to your ads. Measure purchase consideration when shoppers select size, color, or engraving. Meta Customize Product Events counts how many people customized a product (size, color, engraving) after engaging with your ad—indicating strong purchase consideration. ## Formula **Meta Customize Product Events** = **COUNT** ( customize\_product events ) Each product customization action attributed to your Meta ads is counted once, regardless of product value. | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your Meta campaigns drove **1,892 product customizations** in March across personalization-focused products. | Campaign | Customizations | Spend | Cost/Event | | -------------------- | -------------- | ------- | ---------- | | Jewelry Engraving | 847 | \$1,420 | \$1.68 | | Apparel Sizing | 692 | \$980 | \$1.42 | | Gift Personalization | 353 | \$540 | \$1.53 | *** ## How It Works Meta counts a customize product event when a visitor personalizes a product after interacting with your ad within the attribution window. This includes selecting size, color, adding engraving, monogramming, or any other customization option. The event is captured via the Meta Pixel or Conversions API when the shopper completes the customization step. *** ## When to Use | Scenario | Action | | ------------------------------------ | ------------------------------------------------------------------- | | Measuring personalization engagement | Track how often ads drive customization interactions | | Identifying high-intent traffic | Customizers show strong buying signals—prioritize similar audiences | | Optimizing product pages | Compare customization rates across products to improve UX | | Forecasting conversions | Use as a leading indicator of purchases for personalized items | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | | [Meta Cost per Customize Product](/reference/metrics/advertising/meta-ads/customize-product-events/meta-cost-per-customize-product) | Efficiency of driving product customizations | | [Meta Add to Carts](/reference/metrics/advertising/meta-ads/add-to-carts/meta-add-to-carts) | Next typical step after customizing a product | | [Meta Purchases](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Final conversion event in the purchase funnel | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Donate Events Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/donate-events All Meta metrics for donate-events — volume, value, and cost in one place. Metrics for donate events across your Meta campaigns: * [Meta Cost per Donate: Donation Acquisition Efficiency](/reference/metrics/advertising/meta-ads/donate-events/meta-cost-per-donate) * [Meta Donate Events: Donations from Ads](/reference/metrics/advertising/meta-ads/donate-events/meta-donate-events) # Meta Cost per Donate: Donation Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/donate-events/meta-cost-per-donate Track Meta Cost per Donate to measure donation campaign efficiency. Calculate the average ad cost per donation and optimize your nonprofit fundraising ROI. Meta Cost per Donate measures the average advertising cost to generate each donation from your Meta ads. ## Formula **Meta Cost per Donate** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Donate Events**](/reference/metrics/advertising/meta-ads/donate-events/meta-donate-events) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total advertising spend on Meta platforms (Facebook, Instagram) | | [**Meta Donate Events**](/reference/metrics/advertising/meta-ads/donate-events/meta-donate-events) | Count of donate events attributed to Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your nonprofit's year-end campaign spent **\$1,500** on Meta ads and generated **42 donations**. | Metric | Value | Calculation | | -------------------- | ------- | ---------------------------- | | Meta Spend | \$1,500 | Total spent on Meta | | Meta Donate Events | 42 | Donations attributed to Meta | | Meta Cost per Donate | \$35.71 | \$1,500 ÷ 42 | *** ## How It Works Meta Cost per Donate divides your total Meta ad spend by the number of donate events tracked via the Meta Pixel or Conversions API. A donate event fires when someone completes a donation on your site. Compare this cost against your average donation amount to evaluate fundraising ROI. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------- | | Evaluating fundraising campaigns | Compare cost per donate across ad sets to find top performers | | Budget allocation | Shift spend toward campaigns with lower acquisition costs | | ROI analysis | Ensure cost per donate stays below average donation amount | | Seasonal benchmarking | Track trends during giving seasons vs. off-peak periods | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [Meta Donate Events](/reference/metrics/advertising/meta-ads/donate-events/meta-donate-events) | The denominator in cost per donate calculation | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The numerator in cost per donate calculation | | [Meta CPA](/reference/metrics/advertising/meta-ads/meta-cost-per-acquisition) | Similar efficiency metric for purchase conversions | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Donate Events: Donations from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/donate-events/meta-donate-events Track donation conversions attributed to your Meta ad campaigns. Measure how effectively your ads drive charitable contributions and fundraising goals. Meta Donate Events counts the total number of donations attributed to your Meta (Facebook/Instagram) advertising campaigns. ## Formula **Meta Donate Events** = **COUNT** ( [Donate Events](/reference/metrics/advertising/meta-ads/donate-events) ) ### Formula Components | Metric | Definition | | ----------------- | ------------------------------------------------------------------------------- | | **Donate Events** | Individual donation conversions recorded by the Meta Pixel after ad interaction | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your nonprofit ran a fundraising campaign during the holiday season with a \$5,000 ad spend. | Campaign | Ad Spend | Donate Events | Cost per Donation | | ------------------- | ----------- | ------------- | ----------------- | | Holiday Giving 2024 | \$3,000 | 127 | \$23.62 | | Year-End Appeal | \$2,000 | 89 | \$22.47 | | **Total** | **\$5,000** | **216** | **\$23.15** | *** ## How It Works Meta tracks donate events when users complete a donation action after interacting with your ads. The Donate standard event fires when a user submits a donation form or completes a contribution on your website. Attribution follows your configured Meta attribution window settings. *** ## When to Use | Scenario | Action | | -------------------------------------- | ----------------------------------------------------------------- | | Measuring fundraising campaign success | Compare donate events across campaigns to identify top performers | | Calculating cost per donation | Divide spend by donate events to assess acquisition efficiency | | Optimizing for conversions | Use donate events as an optimization event in Meta Ads Manager | | Reporting donor acquisition | Track total donations attributed to paid advertising efforts | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | --------------------------------------------------- | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Ad spend used to calculate cost per donation | | Meta Conversions | Total attributed conversions including donations | | [Meta ROAS](/reference/metrics/advertising/meta-ads/meta-return-on-ad-spend) | Overall return on ad spend for all conversion types | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Engagements Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/engagements All Meta metrics for engagements — volume, value, and cost in one place. Metrics for engagements across your Meta campaigns: * [Meta Cost per Engagement: Measure Brand Interaction Efficiency](/reference/metrics/advertising/meta-ads/engagements/meta-cost-per-engagement) * [Meta Engagements: Track Total Social Ad Interactions](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) # Meta Cost per Engagement: Measure Brand Interaction Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/engagements/meta-cost-per-engagement Track Meta cost per engagement to measure brand awareness efficiency. Calculate average spend per social interaction on Meta ads. Meta Cost per Engagement measures how much you spend for each social interaction (like, comment, share, save) on your Meta ads. ## Formula **Meta Cost per Engagement** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Engagements**](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising campaigns | | [**Meta Engagements**](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) | Total social interactions (likes, comments, shares, saves) on your Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your brand awareness campaign spent **\$2,400** and generated **8,000 engagements** over the month. | Metric | Value | Calculation | | ----------------------- | ---------- | --------------------------------- | | Meta Spend | \$2,400 | Total ad spend | | Meta Engagements | 8,000 | Likes + comments + shares + saves | | **Cost per Engagement** | **\$0.30** | \$2,400 ÷ 8,000 | *** ## How It Works Meta Cost per Engagement divides your total ad spend by the number of social interactions your ads received. This metric helps you understand how efficiently your budget drives meaningful social engagement rather than just impressions or clicks. *** ## When to Use | Scenario | Action | | ------------------------------------ | --------------------------------------------------------------------- | | Evaluating brand awareness campaigns | Compare cost per engagement across ad sets to identify what resonates | | Community-building initiatives | Track engagement costs to optimize social content strategy | | Benchmarking creative performance | Lower cost per engagement indicates more engaging creative | | Budget allocation decisions | Shift spend toward campaigns with efficient engagement costs | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | | [Meta Engagements](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) | The denominator — total interactions driving this cost metric | | [Meta Engagement Rate](/reference/metrics/advertising/meta-ads/meta-engagement-rate) | Percentage view showing engagement efficiency without cost context | | [Meta CPM](/reference/metrics/advertising/meta-ads/meta-cost-per-mille) | Cost per thousand impressions — compare reach efficiency vs engagement efficiency | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Engagements: Track Total Social Ad Interactions Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/engagements/meta-engagements Measure total interactions on your Meta ads including likes, comments, shares, and saves. High engagement signals resonant creative that drives brand awareness. Meta Engagements measures the total social interactions on your Meta ads—reactions, comments, shares, and saves combined. ## Formula **Meta Engagements** = [**Meta Reactions**](/reference/metrics/advertising/meta-ads/reactions/meta-reactions) + [**Meta Comments**](/reference/metrics/advertising/meta-ads/comments/meta-comments) + [**Meta Shares**](/reference/metrics/advertising/meta-ads/shares/meta-shares) + [**Meta Saves**](/reference/metrics/advertising/meta-ads/saves/meta-saves) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | [**Meta Reactions**](/reference/metrics/advertising/meta-ads/reactions/meta-reactions) | Emoji responses on your ads including likes, loves, wows, and cares | | [**Meta Comments**](/reference/metrics/advertising/meta-ads/comments/meta-comments) | Comments posted directly on your ads including threaded replies | | [**Meta Shares**](/reference/metrics/advertising/meta-ads/shares/meta-shares) | Times users shared your ad to their feed, stories, or DMs | | [**Meta Saves**](/reference/metrics/advertising/meta-ads/saves/meta-saves) | Times users bookmarked your ad for later viewing | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your skincare brand ran a video ad showcasing a new serum. Over the campaign, the ad generated **8,420 engagements**. | Interaction Type | Count | Share | | ---------------- | ----- | ----- | | Reactions | 5,240 | 62% | | Comments | 1,685 | 20% | | Shares | 842 | 10% | | Saves | 653 | 8% | *** ## How It Works Meta aggregates all social interactions on your ad into a single engagement count. This includes emoji reactions (like, love, wow, etc.), comments, shares to feeds or stories, and saves for later viewing. Each action by a unique user counts separately. *** ## When to Use | Scenario | Action | | ----------------------------- | ----------------------------------------------------------------- | | Evaluating creative resonance | Compare engagements across ad variants to identify top performers | | Brand awareness campaigns | Prioritize high-engagement ads to maximize organic reach | | Content testing | Use engagement patterns to guide future creative direction | | Audience targeting validation | High engagements signal you're reaching the right people | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | --------------------------------------------- | | [Meta Cost per Engagement](/reference/metrics/advertising/meta-ads/engagements/meta-cost-per-engagement) | How much you pay per interaction | | [Meta Engagement Rate](/reference/metrics/advertising/meta-ads/meta-engagement-rate) | Engagements as a percentage of reach | | [Meta Reactions](/reference/metrics/advertising/meta-ads/reactions/meta-reactions) | Emoji reactions component of engagements | | [Meta Shares](/reference/metrics/advertising/meta-ads/shares/meta-shares) | Share component driving organic amplification | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Find Location Events Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/find-location-events All Meta metrics for find-location-events — volume, value, and cost in one place. Metrics for find location events across your Meta campaigns: * [Meta Cost per Find Location: Store Locator Efficiency](/reference/metrics/advertising/meta-ads/find-location-events/meta-cost-per-find-location) * [Meta Find Location: Store Locator Uses from Ads](/reference/metrics/advertising/meta-ads/find-location-events/meta-find-location-events) # Meta Cost per Find Location: Store Locator Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/find-location-events/meta-cost-per-find-location Track your cost per find location event from Meta ads. Measure how efficiently your campaigns drive store locator searches and physical location interest. Meta Cost per Find Location measures how much you pay for each find location event triggered by your Meta advertising campaigns. ## Formula **Meta Cost per Find Location** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Find Location Events**](/reference/metrics/advertising/meta-ads/find-location-events/meta-find-location-events) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total advertising spend on Meta platforms | | [**Meta Find Location Events**](/reference/metrics/advertising/meta-ads/find-location-events/meta-find-location-events) | Count of find location events attributed to Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Meta campaigns generated **850 find location events** with **\$4,250 in total spend**. | Campaign | Spend | Find Location Events | Cost per Find Location | | -------------------- | ----------- | -------------------- | ---------------------- | | Store Awareness | \$2,000 | 500 | \$4.00 | | Local Promotions | \$1,500 | 250 | \$6.00 | | Holiday Store Finder | \$750 | 100 | \$7.50 | | **Total** | **\$4,250** | **850** | **\$5.00** | *** ## How It Works This metric divides your total Meta ad spend by the number of find location events recorded. A find location event fires when someone uses your store locator, searches for nearby stores, or interacts with location-finding features after seeing your ad. *** ## When to Use | Scenario | Action | | ------------------------------------ | --------------------------------------------------------- | | Measuring store locator efficiency | Track cost to drive physical location interest | | Comparing local awareness campaigns | Identify which creative drives cheapest location searches | | Multi-location retail planning | Allocate budget to campaigns driving store discovery | | O2O (online-to-offline) optimization | Balance digital spend with physical store traffic goals | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Numerator—total Meta ad cost | | [Meta Find Location Events](/reference/metrics/advertising/meta-ads/find-location-events/meta-find-location-events) | Denominator—location search events | | [Meta CPC](/reference/metrics/advertising/meta-ads/meta-cost-per-click) | Compare click efficiency to location efficiency | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Find Location: Store Locator Uses from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/find-location-events/meta-find-location-events Track Meta Find Location events to measure store locator uses from Facebook and Instagram ads. Understand offline purchase intent from your social campaigns. Meta Find Location Events counts how many people used your store locator or searched for physical locations after engaging with your Meta ads. ## Formula **Meta Find Location Events** = **COUNT** ( [Find Location Events](/reference/metrics/advertising/meta-ads/find-location-events) ) ### Formula Components | Metric | Definition | | ------------------------ | --------------------------------------------------------------------------------------------------- | | **Find Location Events** | Each store locator use or location search attributed to your Meta ads within the attribution window | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your Meta campaigns drove **1,284 find location events** in March across three store regions. | Campaign | Find Locations | Spend | Cost/Event | | ------------ | -------------- | ------- | ---------- | | NYC Metro | 582 | \$1,450 | \$2.49 | | LA Region | 423 | \$1,280 | \$3.03 | | Chicago Area | 279 | \$920 | \$3.30 | *** ## How It Works Meta counts a find location event when a visitor uses a store locator or searches for store addresses after interacting with your ad. The event is captured via the Meta Pixel or Conversions API when the shopper triggers your store finder functionality within the attribution window. *** ## When to Use | Scenario | Action | | ----------------------------- | ---------------------------------------------------------------- | | Measuring offline intent | Track how many ad viewers actively seek physical store locations | | Evaluating regional campaigns | Compare find location rates across geographic markets | | Bridging online-to-offline | Correlate find location events with in-store foot traffic | | Optimizing local awareness | Shift budget to campaigns driving store discovery | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [Meta Cost per Find Location](/reference/metrics/advertising/meta-ads/find-location-events/meta-cost-per-find-location) | Efficiency of driving store searches | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Total ad spend used to calculate cost per find location | | [Meta Purchases](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Conversions that may follow store visits | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Initiate Checkouts Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/initiate-checkouts All Meta metrics for initiate-checkouts — volume, value, and cost in one place. Metrics for initiate checkouts across your Meta campaigns: * [Meta Initiate Checkouts: Bottom-Funnel Conversion Signal](/reference/metrics/advertising/meta-ads/initiate-checkouts/meta-initiate-checkouts) # Meta Initiate Checkouts: Bottom-Funnel Conversion Signal Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/initiate-checkouts/meta-initiate-checkouts Track Meta Initiate Checkouts to measure bottom-funnel purchase intent. Monitor how many visitors start checkout after engaging with Meta ads. Meta Initiate Checkouts counts how many shoppers started the checkout process after engaging with your Meta ads. ## Formula **Meta Initiate Checkouts** = **COUNT** ( initiate\_checkout events ) ### Formula Components | Metric | Definition | | ----------------------------- | ------------------------------------------------------------------------------------ | | **initiate\_checkout events** | Checkout initiation events attributed to your Meta ads within the attribution window | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your Meta campaigns drove **1,842 checkout initiations** in April across three ad sets. | Ad Set | Checkouts | Spend | Cost per Checkout | | ----------- | --------- | ------- | ----------------- | | Retargeting | 923 | \$4,615 | \$5.00 | | Lookalike | 612 | \$4,284 | \$7.00 | | Prospecting | 307 | \$3,684 | \$12.00 | *** ## How It Works Meta counts an initiate checkout event when a visitor begins the checkout process after interacting with your ad within the attribution window. This event is captured when shoppers reach the checkout page, whether via the Meta Pixel or Conversions API. *** ## When to Use | Scenario | Action | | ---------------------------- | ----------------------------------------------------------------- | | Measuring purchase intent | Track checkout initiations to gauge high-intent traffic from ads | | Identifying cart abandonment | Compare checkout initiations to purchases to find drop-off points | | Evaluating funnel efficiency | Monitor the ratio of add-to-carts progressing to checkout | | Optimizing for conversions | Use checkout data to inform bid strategy and audience targeting | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------- | ------------------------------------------------- | | Meta Cost per Initiate Checkout | Cost efficiency for driving checkouts | | [Meta Purchases](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Final conversions from these checkout initiations | | [Meta Add to Carts](/reference/metrics/advertising/meta-ads/add-to-carts/meta-add-to-carts) | Mid-funnel step before checkout | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Leads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/leads All Meta metrics for leads — volume, value, and cost in one place. Metrics for leads across your Meta campaigns: * [Meta Cost per Lead: Lead Generation Efficiency](/reference/metrics/advertising/meta-ads/leads/meta-cost-per-lead) * [Meta Leads: Lead Form Submissions from Ads](/reference/metrics/advertising/meta-ads/leads/meta-leads) # Meta Cost per Lead: Lead Generation Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/leads/meta-cost-per-lead Track your Meta Cost per Lead (CPL) to measure lead generation efficiency. Learn how CPL is calculated and when to optimize your lead campaigns. Meta Cost per Lead measures the average amount you spend to acquire each lead from your Meta ads. ## Formula **Meta Cost per Lead** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Leads**](/reference/metrics/advertising/meta-ads/leads/meta-leads) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | ----------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount billed by Meta for your advertising | | [**Meta Leads**](/reference/metrics/advertising/meta-ads/leads/meta-leads) | Count of lead form submissions or lead events from your ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your B2B SaaS campaign spent **\$2,400** on Meta ads last month and generated **80 leads**. | Metric | Value | Calculation | | ------------------ | ------- | ----------------------------------- | | Meta Spend | \$2,400 | Total spent on Meta | | Meta Leads | 80 | Form submissions attributed to Meta | | Meta Cost per Lead | \$30.00 | \$2,400 ÷ 80 | *** ## How It Works Cost per Lead divides your total Meta ad spend by the number of lead events tracked via the Meta Pixel or Conversions API. A lead event fires when someone submits a form, signs up for a newsletter, or completes another lead capture action on your site. Lower CPL indicates more efficient lead generation. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------- | | Evaluating lead gen campaigns | Compare CPL across ad sets to find top performers | | Budget allocation | Shift spend toward campaigns with lower CPL | | Benchmarking efficiency | Track CPL trends week-over-week to spot issues | | Comparing channels | Use CPL alongside other platforms' lead costs | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------- | -------------------------------------------------- | | [Meta Leads](/reference/metrics/advertising/meta-ads/leads/meta-leads) | The denominator in CPL calculation | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The numerator in CPL calculation | | [Meta CPA](/reference/metrics/advertising/meta-ads/meta-cost-per-acquisition) | Similar efficiency metric for purchase conversions | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Leads: Lead Form Submissions from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/leads/meta-leads Track how many leads your Meta ads generate through form submissions or lead events to measure lead generation campaign effectiveness. Meta Leads counts how many people submitted a lead form or completed a lead event from your Meta ads. ## Formula **Meta Leads** = **COUNT** ( Lead Events ) ### Formula Components | Metric | Definition | | --------------- | ------------------------------------------------------------ | | **Lead Events** | Form submissions or lead actions attributed to your Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your Meta lead generation campaigns captured **1,847 leads** in Q1 across three audience segments. | Audience | Leads | Spend | CPL | | ------------------ | ----- | ------- | ------- | | Email Subscribers | 892 | \$4,460 | \$5.00 | | Lookalike Audience | 614 | \$4,912 | \$8.00 | | Interest Targeting | 341 | \$5,115 | \$15.00 | *** ## How It Works Meta counts a lead when someone submits a lead form (native or on your website) or triggers a lead event after interacting with your ad within the attribution window. Lead events are captured via Meta's Lead Ads, the Meta Pixel, or through the Conversions API. *** ## When to Use | Scenario | Action | | --------------------------------------- | --------------------------------------------------------------- | | Measuring lead gen campaign performance | Compare lead counts across campaigns to identify top performers | | Optimizing audience targeting | Shift budget toward audiences generating more qualified leads | | Tracking sales funnel top | Monitor lead volume as the entry point for your sales pipeline | | Calculating lead acquisition cost | Divide spend by leads to evaluate cost efficiency | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ------------------------------------------ | | [Meta Cost per Lead](/reference/metrics/advertising/meta-ads/leads/meta-cost-per-lead) | Cost to acquire each lead | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The numerator for calculating CPL | | [Meta Purchases](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Downstream conversions from lead campaigns | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Likes Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/likes All Meta metrics for likes — volume, value, and cost in one place. Metrics for likes across your Meta campaigns: * [Meta Likes: Track Positive Engagement on Your Meta Ads](/reference/metrics/advertising/meta-ads/likes/meta-likes) # Meta Likes: Track Positive Engagement on Your Meta Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/likes/meta-likes Track Meta Likes to measure positive engagement on your ads. Monitor thumbs-up reactions and compare with total reactions to gauge audience sentiment. Meta Likes counts the total thumbs-up reactions on your Meta ads—a basic positive engagement signal. ## Formula **Meta Likes** = **COUNT** ( Post [Likes](/reference/metrics/advertising/meta-ads/likes) ) ### Formula Components | Metric | Definition | | -------------- | ------------------------------------------------ | | **Post Likes** | Thumbs-up reactions recorded by Meta on your ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your spring campaign ad received **3,420 likes** across 50,000 impressions in March. | Campaign | Likes | Impressions | Like Rate | | ------------ | ----- | ----------- | --------- | | Spring Sale | 3,420 | 50,000 | 6.8% | | New Arrivals | 1,890 | 42,000 | 4.5% | *** ## How It Works Meta counts every thumbs-up reaction on your ad. Likes are the most basic positive reaction—they indicate the audience noticed your ad and responded favorably, though they don't signal as strong an emotional response as other reactions like Love or Wow. *** ## When to Use | Scenario | Action | | ------------------------------ | --------------------------------------------------- | | Comparing creative performance | Higher likes suggest more appealing visuals or copy | | Monitoring brand sentiment | Consistent likes indicate stable audience approval | | Benchmarking engagement | Compare likes-to-impressions ratio across campaigns | | Identifying fatigue | Declining likes may signal ad creative burnout | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [Meta Reactions](/reference/metrics/advertising/meta-ads/reactions/meta-reactions) | Broader count including all emoji reactions | | [Meta Engagements](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) | Total interactions including comments, shares, and saves | | [Meta Cost per Engagement](/reference/metrics/advertising/meta-ads/engagements/meta-cost-per-engagement) | Measures efficiency—spend required for each engagement | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Messaging Conversations Started Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/messaging-conversations-started All Meta metrics for messaging-conversations-started — volume, value, and cost in one place. Metrics for messaging conversations started across your Meta campaigns: * [Meta Messaging Conversations: Chat Initiations from Ads](/reference/metrics/advertising/meta-ads/messaging-conversations-started/meta-messaging-conversations-started) # Meta Messaging Conversations: Chat Initiations from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/messaging-conversations-started/meta-messaging-conversations-started Track Messenger, Instagram DM, and WhatsApp conversations started from your Meta ads. Measure click-to-message campaign performance across platforms. Meta Messaging Conversations Started counts new chat conversations initiated from your Meta ads across Messenger, Instagram Direct, and WhatsApp. ## Formula **Meta Messaging Conversations Started** = **COUNT** ( Messaging Conversation Starts ) ### Formula Components | Metric | Definition | | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | **Messaging Conversation Starts** | New conversations initiated when users send a message via Messenger, Instagram DM, or WhatsApp after engaging with your ad | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your e-commerce brand ran click-to-message campaigns across Facebook and Instagram. In March, your ads generated **1,247 new conversations** from product inquiries. | Platform | Conversations | Spend | Cost per Conversation | | ------------ | ------------- | ----------- | --------------------- | | Messenger | 623 | \$1,869 | \$3.00 | | Instagram DM | 456 | \$1,368 | \$3.00 | | WhatsApp | 168 | \$504 | \$3.00 | | **Total** | **1,247** | **\$3,741** | **\$3.00** | *** ## How It Works Meta counts a conversation when someone opens Messenger, Instagram Direct, or WhatsApp and sends their first message after engaging with your ad. The conversation must occur within your attribution window. Only the initial message starting a new thread is counted — follow-up messages in the same conversation are not included. *** ## When to Use | Scenario | Action | | ------------------------------------- | ------------------------------------------------------------------ | | Evaluating click-to-message campaigns | Use as the primary success metric for messaging objectives | | Comparing lead generation channels | Compare against leads and contact events for channel mix decisions | | Staffing customer support | Track conversation volume to allocate support resources | | Measuring acquisition efficiency | Pair with cost per conversation to optimize spend | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Total ad spend used to calculate cost per conversation | | [Meta Contact Events](/reference/metrics/advertising/meta-ads/contact-events/meta-contact-events) | Alternative metric for broader contact tracking | | [Meta Leads](/reference/metrics/advertising/meta-ads/leads/meta-leads) | Form-based lead generation alternative to messaging | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Average Watch Time: Measure Video Engagement Duration Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-average-watch-time Track average watch time on your Meta video ads. Measure how long viewers engage with your content to optimize video length and improve creative performance. The average time people spent watching your video ads. ## Formula **Meta Average Watch Time** = **Total Watch Time** ÷ [**Meta Video Plays**](/reference/metrics/advertising/meta-ads/meta-video-plays) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ----------------------------------------------------------------- | | **Total Watch Time** | Cumulative seconds spent watching your video ads across all plays | | [**Meta Video Plays**](/reference/metrics/advertising/meta-ads/meta-video-plays) | Total number of times your video ads started playing | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number (seconds) | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Average | *** ## Example Your three video campaigns show **different average watch times** based on content length and engagement: | Campaign | Avg Watch Time | Video Length | Watch Ratio | | --------------- | -------------- | ------------ | ----------- | | Product Teaser | 8.2 seconds | 10 seconds | 82% | | Brand Story | 18.5 seconds | 45 seconds | 41% | | Tutorial Series | 32.4 seconds | 90 seconds | 36% | The Product Teaser retains most viewers, while longer formats show expected drop-off. Average watch time helps you find the optimal video length for your audience. *** ## How It Works Meta tracks how long each viewer watches your video ads and calculates the average across all plays. Higher watch time indicates more engaging video content. This includes partial views—if 100 people play your 30-second video and half leave at 10 seconds while half complete it, your average watch time would be 20 seconds. *** ## When to Use | Scenario | Action | | -------------------------- | ----------------------------------------------------------------- | | Optimizing video length | Compare average watch time to total length to find ideal duration | | Testing hook effectiveness | Low watch time on long videos signals weak opening | | Comparing creative formats | Higher watch time indicates more engaging content style | | Pacing content structure | Place key messages before average drop-off point | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ---------------------------------------------- | | [Meta Video Plays](/reference/metrics/advertising/meta-ads/meta-video-plays) | Denominator for average watch time calculation | | [Meta ThruPlay Views](/reference/metrics/advertising/meta-ads/meta-thruplay-views) | Videos watched to completion or 15+ seconds | | [Meta Video Completions](/reference/metrics/advertising/meta-ads/meta-video-completions) | 100% completion views—highest engagement tier | [See all Meta Video metrics →](/reference/metrics/advertising/meta-ads) # Meta CTR: Measure Ad Click-Through Performance Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-click-through-rate Track your Meta Ads click-through rate to measure how often people click after seeing your ad. Optimize creative and targeting for higher engagement. Meta CTR measures the percentage of impressions that resulted in clicks on your Meta ads. ## Formula **Meta CTR** = ( [**Meta Clicks**](/reference/metrics/advertising/meta-ads/meta-clicks) ÷ [**Meta Impressions**](/reference/metrics/advertising/meta-ads/meta-impressions) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ----------------------------------------- | | [**Meta Clicks**](/reference/metrics/advertising/meta-ads/meta-clicks) | Total number of clicks on your Meta ads | | [**Meta Impressions**](/reference/metrics/advertising/meta-ads/meta-impressions) | Total number of times your ads were shown | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your summer campaign ad set delivered **125,000 impressions** and received **2,875 clicks** in June. | Ad Set | Impressions | Clicks | CTR | | -------------- | ----------- | --------- | --------- | | Summer Promo A | 75,000 | 1,950 | 2.60% | | Summer Promo B | 50,000 | 925 | 1.85% | | **Total** | **125,000** | **2,875** | **2.30%** | *** ## How It Works CTR is calculated by dividing total clicks by total impressions, then multiplying by 100 to express as a percentage. A higher CTR indicates your ad creative and targeting resonate with your audience, while a low CTR suggests your messaging or visuals may need refinement. *** ## When to Use | Scenario | Action | | ----------------------------- | ----------------------------------------------------------- | | Low CTR with high impressions | Test new creative variations or refine audience targeting | | CTR declining over time | Refresh ad creative to combat ad fatigue | | Comparing ad sets | Identify top performers and allocate budget accordingly | | Evaluating creative tests | Use CTR to determine which visuals or copy drive engagement | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Meta Clicks](/reference/metrics/advertising/meta-ads/meta-clicks) | The numerator in the CTR calculation | | [Meta Impressions](/reference/metrics/advertising/meta-ads/meta-impressions) | The denominator in the CTR calculation | | [Meta Link CTR](/reference/metrics/advertising/meta-ads/meta-link-click-through-rate) | CTR specifically for link clicks to your website | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Clicks: Total Engagement on Your Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-clicks Track Meta Clicks to measure total engagement on your Facebook and Instagram ads. Includes link clicks, reactions, comments, shares, and profile visits. Meta Clicks measures the total number of clicks anywhere on your Meta ads, including link clicks, reactions, comments, shares, and profile visits. ## Formula **Meta Clicks** = **COUNT** ( Clicks ) ### Formula Components | Metric | Definition | | ---------- | ------------------------------------------------------------------------------------------------------ | | **Clicks** | Any click on your ad — link clicks, reactions, comments, shares, profile visits, or other interactions | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your Meta campaign received **12,450 clicks** last week across all ad sets. | Campaign | Clicks | Link Clicks | Other Clicks | | ----------- | ---------- | ----------- | ------------ | | Prospecting | 8,200 | 5,100 | 3,100 | | Retargeting | 4,250 | 3,800 | 450 | | **Total** | **12,450** | **8,900** | **3,550** | *** ## How It Works Meta counts every click on your ad, regardless of where users click. This includes clicks that lead to your website (link clicks) and engagement actions like reactions, comments, shares, and profile visits. The metric is pulled directly from Meta's reporting API. *** ## When to Use | Scenario | Action | | ------------------------------- | --------------------------------------------------------------------- | | Measuring overall ad engagement | Compare clicks across campaigns to identify high-engagement creatives | | Analyzing click composition | Break down total clicks vs link clicks to understand engagement types | | Calculating efficiency metrics | Use as denominator for CPC and CTR calculations | | Optimizing for engagement | Target campaigns with high click volume for brand awareness goals | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | --------------------------------------------------------------- | | [Meta Link Clicks](/reference/metrics/advertising/meta-ads/meta-link-clicks) | Subset of total clicks — only clicks that lead to a destination | | [Meta CPC](/reference/metrics/advertising/meta-ads/meta-cost-per-click) | Cost efficiency — spend divided by total clicks | | [Meta CTR](/reference/metrics/advertising/meta-ads/meta-click-through-rate) | Click-through rate — clicks as percentage of impressions | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Cost per 15-Second View: Deep Engagement Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-cost-per-15-second-view Track Meta Cost per 15-Second Video View to measure your average spend per deeply engaged viewer. Compare against 3-second cost to optimize video ad efficiency. Measures the average cost for each time someone watches your Meta video ad for at least 15 continuous seconds. ## Formula **Meta Cost per 15-Second View** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta 15-Second Video Views**](/reference/metrics/advertising/meta-ads/meta-video-views-15-seconds) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount billed by Meta for advertising | | [**Meta 15-Second Video Views**](/reference/metrics/advertising/meta-ads/meta-video-views-15-seconds) | Count of video views watched for at least 15 continuous seconds | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your skincare brand spent **\$3,600** on video campaigns last month and generated **45,000** fifteen-second views. | Campaign | Spend | 15s Views | Cost/15s View | | --------------- | ------- | --------- | ------------- | | Product Demo | \$1,800 | 24,000 | \$0.075 | | Brand Story | \$1,200 | 12,000 | \$0.100 | | Tutorial Series | \$600 | 9,000 | \$0.067 | *** ## How It Works Meta records a 15-second view when someone watches your video ad continuously for at least 15 seconds without skipping. This cost metric divides your spend by these engaged views, giving you the price of meaningful attention rather than just scroll-stopping impressions. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------- | | Comparing creative depth | Lower cost per 15s view indicates better sustained engagement | | Optimizing for consideration | Prioritize this over 3s cost when brand messaging needs time | | Evaluating storytelling ads | Track if longer narratives justify higher per-view costs | | Building retargeting pools | Understand cost to acquire high-intent video viewers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [Meta 15-Second Video Views](/reference/metrics/advertising/meta-ads/meta-video-views-15-seconds) | Denominator — the view count used in this cost formula | | [Meta Cost per Video View](/reference/metrics/advertising/meta-ads/meta-cost-per-video-view) | Cost per 3-second view for baseline comparison | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Numerator — the total ad spend used in the formula | [See all Meta Video metrics →](/reference/metrics/advertising/meta-ads) # Meta CPA: Cost Per Acquisition from Meta Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-cost-per-acquisition Track your Meta CPA to measure how much you spend per purchase. Lower CPA means more efficient ad spend and better campaign profitability. Meta CPA measures the average cost to generate one purchase conversion from your Meta advertising campaigns. ## Formula **Meta CPA** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Purchases**](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ------------------------------------------ | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising | | [**Meta Purchases**](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Number of purchases attributed to Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your skincare brand spent **\$4,500 on Meta ads** last month and generated **150 purchases**. | Campaign | Spend | Purchases | CPA | | ----------- | ----------- | --------- | ----------- | | Retargeting | \$1,200 | 80 | \$15.00 | | Prospecting | \$2,100 | 50 | \$42.00 | | Lookalike | \$1,200 | 20 | \$60.00 | | **Total** | **\$4,500** | **150** | **\$30.00** | *** ## How It Works Meta calculates CPA by dividing total ad spend by purchase conversions recorded through the Meta Pixel or Conversions API. The attribution window you configure in Meta Ads Manager determines which purchases count toward each campaign. Lower CPA indicates more efficient acquisition—you're spending less to convert each customer. *** ## When to Use | Scenario | Action | | ---------------------- | --------------------------------------------- | | CPA exceeds target | Narrow audience targeting or improve creative | | CPA varies by campaign | Reallocate budget to lowest-CPA campaigns | | CPA rising over time | Test new audiences or refresh ad creative | | Comparing channels | Benchmark against Google and TikTok CPA | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------- | ------------------------------------------- | | [Meta Purchases](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Conversion count used in denominator | | [Meta ROAS](/reference/metrics/advertising/meta-ads/meta-return-on-ad-spend) | Revenue efficiency vs cost efficiency | | [Meta New Customer CPA](/reference/metrics/advertising/meta-ads/meta-new-customer-cost-per-acquisition) | Acquisition cost for first-time buyers only | # Meta CPC: Cost Per Click on Meta Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-cost-per-click Track Meta CPC to measure how efficiently your Meta ads drive traffic. Lower cost per click means more efficient ad spend. Meta CPC measures the average cost each time someone clicks your Meta ad—lower CPC means you're driving traffic more efficiently. ## Formula **Meta CPC** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Clicks**](/reference/metrics/advertising/meta-ads/meta-clicks) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------- | ------------------------------ | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta ads | | [**Meta Clicks**](/reference/metrics/advertising/meta-ads/meta-clicks) | Total clicks on your ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Meta campaigns spent **\$2,500** and generated **5,000 clicks** last week. | Metric | Value | | ------------ | ---------- | | Meta Spend | \$2,500 | | Meta Clicks | 5,000 | | **Meta CPC** | **\$0.50** | *** ## How It Works Meta CPC divides your total ad spend by the number of clicks received. This gives you the average cost to drive one visitor to your site. CPC fluctuates based on audience targeting, creative performance, and competition in the auction. *** ## When to Use | Scenario | Action | | ----------------------- | ----------------------------------------------------------------------- | | Comparing ad efficiency | Use CPC to identify which campaigns drive traffic most cost-effectively | | Budget optimization | Shift spend toward lower-CPC campaigns to maximize traffic volume | | Creative testing | Compare CPC across ad variations to find top performers | | Audience analysis | Monitor CPC by audience segment to find efficient targets | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | --------------------------------------------------------- | | [Meta Clicks](/reference/metrics/advertising/meta-ads/meta-clicks) | Denominator—total clicks used in CPC calculation | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Numerator—total spend divided by clicks | | [Meta CTR](/reference/metrics/advertising/meta-ads/meta-click-through-rate) | Engagement rate—affects CPC through auction dynamics | | [Meta Cost Per Link Click](/reference/metrics/advertising/meta-ads/meta-cost-per-link-click) | Alternative metric measuring cost of outbound clicks only | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Cost per Inline Click: Average Spend Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-cost-per-inline-click Track cost per inline click on Meta ads. Measure efficiency of link-focused ad formats and optimize your CPC for inline link clicks. Meta Cost per Inline Click measures the average amount you spend for each inline link click on your Meta ads. ## Formula **Meta Cost per Inline Click** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Inline Clicks**](/reference/metrics/advertising/meta-ads/meta-inline-clicks) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------ | ------------------------------------------------------------ | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising campaigns | | [**Meta Inline Clicks**](/reference/metrics/advertising/meta-ads/meta-inline-clicks) | Number of clicks on inline links within your Meta ad content | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Meta campaigns spent **\$2,500** and generated **1,250 inline clicks** last week. | Metric | Value | Calculation | | ------------------------------ | ---------- | ---------------------- | | Meta Spend | \$2,500 | Total ad spend | | Meta Inline Clicks | 1,250 | Clicks on inline links | | **Meta Cost per Inline Click** | **\$2.00** | \$2,500 ÷ 1,250 | *** ## How It Works Inline clicks are clicks on links that appear within the ad content itself—not profile clicks, page likes, or other engagement actions. This metric calculates your average cost for each of these link-specific clicks by dividing total spend by inline click volume. *** ## When to Use | Scenario | Action | | ---------------------------------- | ------------------------------------------------------------------------------- | | Evaluating link-focused ad formats | Compare cost per inline click across ad types to identify efficient formats | | Optimizing traffic campaigns | Lower cost per inline click indicates better efficiency for driving link clicks | | Comparing to standard CPC | Use alongside Meta CPC to understand click type distribution | | Budget allocation decisions | Allocate more budget to campaigns with lower inline click costs | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ------------------------------------------------------------- | | [Meta Inline Clicks](/reference/metrics/advertising/meta-ads/meta-inline-clicks) | Denominator — total inline clicks driving this cost metric | | [Meta CPC](/reference/metrics/advertising/meta-ads/meta-cost-per-click) | Alternative — cost per all click types, not just inline links | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Numerator — total spend used in this calculation | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Cost per Landing Page View: Average Ad Cost per Page Load Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-cost-per-landing-page-view Track Meta cost per landing page view to measure true traffic acquisition costs. A more reliable efficiency metric than cost per click alone. Meta Cost per Landing Page View measures the average spend per landing page load from your Meta ads. ## Formula **Meta Cost per Landing Page View** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Landing Page Views**](/reference/metrics/advertising/meta-ads/meta-landing-page-views) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta ads | | [**Meta Landing Page Views**](/reference/metrics/advertising/meta-ads/meta-landing-page-views) | Number of times users loaded your landing page after clicking a Meta ad | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Meta campaigns spent **\$5,000** and drove **2,500 landing page views** this month. | Metric | Value | Calculation | | -------------------- | ---------- | ------------------ | | Meta Spend | \$5,000 | Total ad spend | | Landing Page Views | 2,500 | Pages fully loaded | | **Cost per LP View** | **\$2.00** | \$5,000 ÷ 2,500 | *** ## How It Works Meta Cost per Landing Page View divides your total ad spend by the number of times users actually loaded your landing page. Unlike cost per click, this metric filters out accidental clicks, bounces before page load, and slow-loading pages that users abandon—giving you a clearer picture of true traffic acquisition costs. *** ## When to Use | Scenario | Action | | ---------------------------------------- | ---------------------------------------------------------------- | | Compare traffic quality across campaigns | Lower cost per LP view indicates more engaged traffic | | Identify landing page load issues | High CPC but higher cost per LP view signals page speed problems | | Optimize for real site visitors | Use as a quality-adjusted alternative to cost per click | | Budget forecasting | Estimate true cost to acquire actual site traffic | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | --------------------------------------------------------- | | [Meta Landing Page Views](/reference/metrics/advertising/meta-ads/meta-landing-page-views) | The denominator in this calculation | | [Meta Cost per Link Click](/reference/metrics/advertising/meta-ads/meta-cost-per-link-click) | Alternative click-based cost metric (includes all clicks) | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The numerator in this calculation | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Cost per Link Click: Website Traffic Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-cost-per-link-click Track Meta Cost per Link Click to measure your average spend per website visit from ads. The standard CPC metric for traffic campaigns on Facebook and Instagram. Meta Cost per Link Click measures the average cost each time someone clicks a link in your ad that takes them to your website or app. ## Formula **Meta Cost per Link Click** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Link Clicks**](/reference/metrics/advertising/meta-ads/meta-link-clicks) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta ads | | [**Meta Link Clicks**](/reference/metrics/advertising/meta-ads/meta-link-clicks) | Clicks that direct users to your website, app, or other destination | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your fitness brand spent **\$3,600** on Meta traffic campaigns in April and generated **6,000 link clicks** to your website. | Campaign | Spend | Link Clicks | Cost/Link Click | | ------------- | ------- | ----------- | --------------- | | New Arrivals | \$1,800 | 3,600 | \$0.50 | | Seasonal Sale | \$1,200 | 2,000 | \$0.60 | | Blog Content | \$600 | 400 | \$1.50 | *** ## How It Works Meta counts link clicks as clicks that take users to your specified destination—your website, app store listing, or Instant Experience. Unlike total clicks (which include reactions, comments, and profile visits), link clicks measure intent to visit your property. This makes Cost per Link Click the standard efficiency metric for website traffic campaigns. *** ## When to Use | Scenario | Action | | -------------------------------------------- | --------------------------------------------------------------------------- | | Running traffic campaigns | Use this as your primary cost efficiency metric over CPC | | Cost per Link Click rising | Refresh creative or refine targeting to improve ad relevance | | Comparing to CPC | Large gap between CPC and Cost per Link Click suggests many non-link clicks | | Cost per Link Click low but conversions poor | Traffic is cheap but may not be qualified—review landing page or audience | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | | [Meta Link Clicks](/reference/metrics/advertising/meta-ads/meta-link-clicks) | Denominator—the click count used in this formula | | [Meta CPC](/reference/metrics/advertising/meta-ads/meta-cost-per-click) | Includes all clicks; compare to see engagement vs. traffic intent | | [Meta Cost per Outbound Click](/reference/metrics/advertising/meta-ads/meta-cost-per-outbound-click) | Similar metric focused on clicks leaving Facebook/Instagram | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta CPM: Cost Per Thousand Impressions Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-cost-per-mille Track Meta CPM to understand your cost per thousand impressions. Optimize ad reach efficiency and compare audience costs across campaigns. Meta CPM measures how much you pay for every 1,000 times your ad is shown on Meta platforms. ## Formula **Meta CPM** = ( [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Impressions**](/reference/metrics/advertising/meta-ads/meta-impressions) ) × 1,000 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ------------------------------ | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta ads | | [**Meta Impressions**](/reference/metrics/advertising/meta-ads/meta-impressions) | Total times ads were shown | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Meta campaigns delivered **500,000 impressions** last week with a total spend of **\$3,500**. | Metric | Value | Calculation | | ---------------- | ---------- | --------------------------- | | Meta Spend | \$3,500 | Total ad spend | | Meta Impressions | 500,000 | Total impressions delivered | | **Meta CPM** | **\$7.00** | (\$3,500 ÷ 500,000) × 1,000 | *** ## How It Works CPM calculates the cost efficiency of reaching your audience at scale. The formula divides your total ad spend by the number of impressions, then multiplies by 1,000 to express the cost per thousand views. Lower CPM means you're reaching more people for less money. *** ## When to Use | Scenario | Action | | ---------------------------- | -------------------------------------------------------------- | | Comparing audience costs | Use CPM to identify which audiences are cheapest to reach | | Planning awareness campaigns | Estimate budget needed to reach a target number of impressions | | Seasonal cost monitoring | Track CPM spikes during competitive periods like Q4 | | Creative testing | Compare CPM across ad creatives to find efficient combinations | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | -------------------------------------- | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Numerator in CPM calculation | | [Meta Impressions](/reference/metrics/advertising/meta-ads/meta-impressions) | Denominator in CPM calculation | | [Meta CTR](/reference/metrics/advertising/meta-ads/meta-click-through-rate) | Engagement rate from those impressions | [See all Meta Audience metrics →](/reference/metrics/advertising/meta-ads) # Meta Cost per Outbound Click: Ad Traffic Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-cost-per-outbound-click Measure how much you pay each time someone clicks from Meta to your website. Track traffic acquisition costs for campaign optimization. Measures how much you pay each time someone leaves Meta for your site—a key efficiency metric for traffic campaigns. ## Formula **Meta Cost per Outbound Click** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Outbound Clicks**](/reference/metrics/advertising/meta-ads/meta-outbound-clicks) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount billed by Meta for advertising during the period | | [**Meta Outbound Clicks**](/reference/metrics/advertising/meta-ads/meta-outbound-clicks) | Clicks on your ad that directed users to destinations outside Meta | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your traffic campaign spent **\$1,200** and generated **800 outbound clicks** this week. | Metric | Value | Context | | ----------------------- | ------- | ---------------------------- | | Meta Spend | \$1,200 | Weekly budget consumed | | Outbound Clicks | 800 | Clicks leaving Meta | | Cost per Outbound Click | \$1.50 | Acquisition cost per visitor | *** ## How It Works Meta tracks clicks that send users away from Facebook or Instagram to external destinations like your website or app. This metric divides your total spend by those outbound clicks, giving you the true cost of driving traffic off-platform. *** ## When to Use | Scenario | Action | | -------------------------------------- | --------------------------------------------------- | | Evaluating traffic campaign efficiency | Compare against industry benchmarks (\$0.50–\$2.00) | | High cost per outbound click | Test new creatives or refine audience targeting | | Comparing ad sets | Identify which audiences deliver cheapest traffic | | Budget allocation | Shift spend toward lower-cost campaigns | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | ------------------------------------------------- | | [Meta Outbound Clicks](/reference/metrics/advertising/meta-ads/meta-outbound-clicks) | The click volume this cost metric is derived from | | [Meta Cost per Link Click](/reference/metrics/advertising/meta-ads/meta-cost-per-link-click) | Broader click cost including CTA button clicks | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Cost per Registration: Registration Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-cost-per-registration Track Meta Cost per Registration to measure sign-up campaign efficiency. Calculate average spend per registration and optimize your Meta ads. Meta Cost per Registration measures the average spend to acquire each registration from your Meta ads. ## Formula **Meta Cost per Registration** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Completed Registrations**](/reference/metrics/advertising/meta-ads/completed-registrations/meta-completed-registrations) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta ads | | [**Meta Completed Registrations**](/reference/metrics/advertising/meta-ads/completed-registrations/meta-completed-registrations) | Number of completed sign-ups attributed to Meta | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your SaaS app spent **\$3,200** on Meta ads last month promoting free trial sign-ups and drove **640 registrations**. | Metric | Value | | ------------------------------ | ---------- | | Meta Spend | \$3,200 | | Meta Completed Registrations | 640 | | **Meta Cost per Registration** | **\$5.00** | *** ## How It Works Meta Cost per Registration divides your total ad spend by the number of CompleteRegistration events tracked via the Meta Pixel or Conversions API. A registration event fires when someone finishes your sign-up flow, creates an account, or completes a free trial registration. Lower cost per registration indicates more efficient acquisition. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------------------- | | Evaluating sign-up campaigns | Compare cost per registration across ad sets to find efficient performers | | Budget allocation | Shift spend toward campaigns with lower registration costs | | Benchmarking against leads | Compare to Cost per Lead to see funnel conversion efficiency | | Setting acquisition targets | Use as a baseline for customer acquisition cost planning | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [Meta Completed Registrations](/reference/metrics/advertising/meta-ads/completed-registrations/meta-completed-registrations) | Denominator—total registrations used in calculation | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Numerator—total spend divided by registrations | | [Meta Cost per Lead](/reference/metrics/advertising/meta-ads/leads/meta-cost-per-lead) | Similar efficiency metric for earlier-funnel lead events | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta CPP: Cost to Reach 1,000 Unique People Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-cost-per-thousand-people-reached Track Meta CPP to measure how much you pay to reach 1,000 unique people. Evaluate audience targeting efficiency and compare reach costs across campaigns. Meta CPP (Cost Per 1,000 People) measures how much you pay to reach 1,000 unique individuals with your Meta ads. ## Formula **Meta CPP** = ( [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Reach**](/reference/metrics/advertising/meta-ads/meta-reach) ) × 1,000 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | ---------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising | | [**Meta Reach**](/reference/metrics/advertising/meta-ads/meta-reach) | Number of unique people who saw your ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your brand awareness campaign spent **\$2,400** and reached **120,000 unique people** in February. | Campaign | Spend | Reach | CPP | | --------------- | ------- | ------- | ------- | | Brand Awareness | \$2,400 | 120,000 | \$20.00 | | Prospecting | \$1,800 | 45,000 | \$40.00 | | Lookalike | \$900 | 30,000 | \$30.00 | *** ## How It Works Meta calculates CPP by dividing your total ad spend by the number of unique people reached, then multiplying by 1,000. Unlike CPM (cost per thousand impressions), CPP counts each person only once regardless of how many times they saw your ad. A lower CPP indicates more efficient audience targeting and reach. *** ## When to Use | Scenario | Action | | ----------------------------- | --------------------------------------------------------------------- | | Comparing audience efficiency | Use CPP to identify which audiences cost less to reach | | Brand awareness campaigns | Prioritize CPP over CPM when unique reach matters more than frequency | | Audience saturation | Rising CPP signals shrinking available audience—expand targeting | | Budget allocation | Shift spend toward campaigns with lower CPP for broader reach | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------- | ------------------------------------------------ | | [Meta Reach](/reference/metrics/advertising/meta-ads/meta-reach) | Unique people reached—the denominator in CPP | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Total ad spend—the numerator in CPP | | [Meta CPM](/reference/metrics/advertising/meta-ads/meta-cost-per-mille) | Cost per 1,000 impressions (counts repeat views) | # Meta Cost per Thruplay: Video View Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-cost-per-thruplay Track Meta Cost per Thruplay to measure video campaign efficiency. The standard metric for optimizing video completion campaigns on Meta. Meta Cost per Thruplay measures the average spend for each video watched to completion or for at least 15 seconds—the standard efficiency metric when optimizing for video completion campaigns. ## Formula **Meta Cost per Thruplay** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Thruplay Views**](/reference/metrics/advertising/meta-ads/meta-thruplay-views) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta ads | | [**Meta Thruplay Views**](/reference/metrics/advertising/meta-ads/meta-thruplay-views) | Videos watched to completion or for at least 15 seconds | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your video campaign spent **\$2,400** and generated **18,450 Thruplay views**, giving you a Cost per Thruplay of **\$0.13**. | Ad Set | Spend | Thruplay Views | Cost/Thruplay | | ------------ | ------- | -------------- | ------------- | | Product Demo | \$1,200 | 8,200 | \$0.15 | | Brand Story | \$850 | 6,750 | \$0.13 | | Quick Promo | \$350 | 3,500 | \$0.10 | The Quick Promo achieves the lowest cost because shorter videos reach the Thruplay threshold faster. *** ## How It Works Meta Cost per Thruplay divides your total ad spend by the number of Thruplay views. Meta counts a Thruplay when someone watches your video to completion or for at least 15 seconds. Lower costs indicate more efficient delivery and stronger creative resonance with your target audience. *** ## When to Use | Scenario | Action | | ----------------------------- | ---------------------------------------------------- | | Setting video campaign bids | Use as your target cost when optimizing for Thruplay | | Comparing video creatives | Lower Cost/Thruplay indicates more engaging content | | Evaluating audience targeting | Rising costs may signal audience saturation | | Budget allocation | Shift spend toward ad sets with lower Cost/Thruplay | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [Meta Thruplay Views](/reference/metrics/advertising/meta-ads/meta-thruplay-views) | Denominator—total Thruplay views generated | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Numerator—total spend divided by Thruplay views | | [Meta Cost per Video View](/reference/metrics/advertising/meta-ads/meta-cost-per-video-view) | Alternative metric—cost per 3-second view (lower threshold) | | [Meta Video Completions](/reference/metrics/advertising/meta-ads/meta-video-completions) | Full completions only (stricter than Thruplay) | [See all Meta Video metrics →](/reference/metrics/advertising/meta-ads) # Meta Cost per Unique Click: Average Cost for Unique Ad Engagers Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-cost-per-unique-click Track your Meta cost per unique click to understand what you pay per unique person who clicks your ads. Optimize for efficient audience reach. Meta Cost per Unique Click measures the average cost to acquire a click from a unique person on your Meta ads, accounting for users who click multiple times. ## Formula **Meta Cost per Unique Click** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Unique Clicks**](/reference/metrics/advertising/meta-ads/meta-unique-clicks) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------ | ------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising campaigns | | [**Meta Unique Clicks**](/reference/metrics/advertising/meta-ads/meta-unique-clicks) | Number of unique people who clicked your Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Meta campaign spent **\$5,000** and received clicks from **2,000 unique users**. | Metric | Value | Calculation | | ------------------------------ | ---------- | ------------------------- | | Meta Spend | \$5,000 | Total ad spend | | Meta Unique Clicks | 2,000 | Unique people who clicked | | **Meta Cost per Unique Click** | **\$2.50** | \$5,000 ÷ 2,000 | *** ## How It Works Meta Cost per Unique Click divides your total ad spend by the number of unique individuals who clicked your ads. Unlike standard CPC which counts every click, this metric de-duplicates users who clicked multiple times, giving you the true cost to engage each unique person. *** ## When to Use | Scenario | Action | | ------------------------------------ | ------------------------------------------------------------- | | Evaluating audience reach efficiency | Compare against standard CPC to see repeat click impact | | Optimizing retargeting campaigns | Monitor if the same users click repeatedly without converting | | Budget allocation decisions | Identify campaigns with efficient unique user acquisition | | Audience fatigue analysis | Rising cost per unique click may indicate creative exhaustion | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ---------------------------------------------- | | [Meta Unique Clicks](/reference/metrics/advertising/meta-ads/meta-unique-clicks) | The denominator in this calculation | | [Meta CPC](/reference/metrics/advertising/meta-ads/meta-cost-per-click) | Standard cost per click without de-duplication | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The numerator in this calculation | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Cost per Video Play: Average Spend per Video Initiation Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-cost-per-video-play Track cost per video play for Meta ads. Measure average spend per video play initiation, including auto-plays, to optimize video ad efficiency. Meta Cost per Video Play measures the average spend per video play initiation on your Meta ads, including auto-plays. ## Formula **Meta Cost per Video Play** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Video Plays**](/reference/metrics/advertising/meta-ads/meta-video-plays) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ---------------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising campaigns | | [**Meta Video Plays**](/reference/metrics/advertising/meta-ads/meta-video-plays) | Number of times your video started playing, including auto-plays | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your video campaign spent **\$2,500** and generated **50,000 video plays**. | Metric | Value | Calculation | | ---------------------------- | ---------- | --------------------- | | Meta Spend | \$2,500 | Total campaign spend | | Meta Video Plays | 50,000 | All video initiations | | **Meta Cost per Video Play** | **\$0.05** | \$2,500 ÷ 50,000 | *** ## How It Works Meta Cost per Video Play divides your total ad spend by the number of video play initiations. This includes both user-initiated plays and auto-plays that occur when videos appear in feed. The metric helps you understand the efficiency of your video content at capturing initial attention. *** ## When to Use | Scenario | Action | | --------------------------------------- | -------------------------------------------------------------- | | Comparing video creative efficiency | Lower cost per play indicates more efficient attention capture | | Budget allocation for video campaigns | Identify which videos deliver plays most cost-effectively | | Benchmarking against industry standards | Track cost per play trends over time | | Optimizing video ad formats | Compare in-feed vs. Stories vs. Reels cost efficiency | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Meta Video Plays](/reference/metrics/advertising/meta-ads/meta-video-plays) | Denominator — total video play initiations | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Numerator — total advertising spend | | [Meta Cost per Video View](/reference/metrics/advertising/meta-ads/meta-cost-per-video-view) | Similar metric measuring cost per qualified view | [See all Meta Video metrics →](/reference/metrics/advertising/meta-ads) # Meta Cost per Video View: Video Awareness Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-cost-per-video-view Track Meta Cost per Video View to measure your average spend per 3-second video view. The standard cost metric for video awareness campaigns on Facebook and Instagram. Meta Cost per Video View measures your average spend for each 3-second video view on your Meta ads. ## Formula **Meta Cost per Video View** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Video Views**](/reference/metrics/advertising/meta-ads/meta-video-views) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ------------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount billed by Meta for your advertising | | [**Meta Video Views**](/reference/metrics/advertising/meta-ads/meta-video-views) | Number of times your video was watched for at least 3 seconds | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio (Spend ÷ Video Views) | *** ## Example Your skincare brand spent **\$2,400** on video awareness campaigns in March and generated **800,000 video views** across placements. | Placement | Spend | Video Views | Cost/View | | --------------- | ------- | ----------- | --------- | | Instagram Reels | \$1,200 | 480,000 | \$0.0025 | | Facebook Feed | \$800 | 240,000 | \$0.0033 | | Stories | \$400 | 80,000 | \$0.0050 | *** ## How It Works Meta counts a video view when someone watches your ad for at least 3 continuous seconds. Cost per Video View divides your spend by these qualified views, filtering out accidental scrolls and immediate skips. This metric is your primary efficiency measure when optimizing for top-of-funnel video reach and brand awareness. *** ## When to Use | Scenario | Action | | ------------------------------------ | --------------------------------------------------------------------- | | Evaluating video awareness campaigns | Compare cost per view across ad sets to find efficient audiences | | Cost per view rising | Refresh creative or expand targeting to combat ad fatigue | | Comparing to Thruplay cost | Higher Thruplay cost vs. view cost indicates drop-off after 3 seconds | | Planning brand awareness budgets | Use cost per view to forecast reach at different spend levels | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [Meta Video Views](/reference/metrics/advertising/meta-ads/meta-video-views) | The view count used in the Cost per Video View formula | | [Meta Cost per Thruplay](/reference/metrics/advertising/meta-ads/meta-cost-per-thruplay) | Cost for deeper engagement—15+ seconds or completion | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The total ad spend used in the formula | [See all Meta Video metrics →](/reference/metrics/advertising/meta-ads) # Meta Engagement Rate: Measure Ad Creative Resonance Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-engagement-rate Track the percentage of people who engaged with your Meta ads after seeing them. Learn the formula, see benchmarks, and optimize creative for higher engagement. The percentage of people who engaged with your Meta ads after seeing them. ## Formula **Meta Engagement Rate** = ( [**Meta Engagements**](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) ÷ [**Meta Reach**](/reference/metrics/advertising/meta-ads/meta-reach) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | | [**Meta Engagements**](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) | Total interactions on your ads including reactions, comments, shares, and saves | | [**Meta Reach**](/reference/metrics/advertising/meta-ads/meta-reach) | Number of unique people who saw your ads at least once | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your brand awareness campaign reached **125,000** people and generated **4,375** engagements: | Campaign | Reach | Engagements | Rate | | ----------------- | ----------- | ----------- | -------- | | Summer Collection | 85,000 | 3,400 | 4.0% | | Flash Sale | 40,000 | 975 | 2.4% | | **Total** | **125,000** | **4,375** | **3.5%** | *** ## How It Works Engagement Rate measures how compelling your ad creative is to your audience. Meta counts engagements as any interaction—reactions, comments, shares, saves, or clicks. The rate normalizes by reach so you can compare campaigns with different audience sizes. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------ | | Evaluating creative performance | Compare rates across ad variations to find top performers | | Diagnosing low conversions | High reach + low engagement suggests creative refresh needed | | Optimizing for awareness | Target 2-5% engagement rate for brand campaigns | | A/B testing ad copy | Use engagement rate as a leading indicator of resonance | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | ---------------------------------------- | | [Meta Engagements](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) | The numerator (total interactions) | | [Meta Cost per Engagement](/reference/metrics/advertising/meta-ads/engagements/meta-cost-per-engagement) | Spend efficiency for driving engagements | | [Meta Reach](/reference/metrics/advertising/meta-ads/meta-reach) | The denominator (unique people) | | [Meta CTR](/reference/metrics/advertising/meta-ads/meta-click-through-rate) | Click-based engagement measure | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Frequency: Average Ad Views per Person Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-frequency Track how many times each person saw your Meta ads. Monitor frequency to optimize ad exposure and avoid audience fatigue on Facebook and Instagram. Meta Frequency measures the average number of times each unique person saw your Meta ads. ## Formula **Meta Frequency** = [**Meta Impressions**](/reference/metrics/advertising/meta-ads/meta-impressions) ÷ [**Meta Reach**](/reference/metrics/advertising/meta-ads/meta-reach) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ------------------------------------------------------ | | [**Meta Impressions**](/reference/metrics/advertising/meta-ads/meta-impressions) | Total number of times your ads appeared on screen | | [**Meta Reach**](/reference/metrics/advertising/meta-ads/meta-reach) | Number of unique people who saw your ads at least once | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Average | *** ## Example Your Meta campaign delivered **450,000 impressions** to **90,000 unique people**: | Metric | Value | | ------------------ | ------- | | Meta Impressions | 450,000 | | Meta Reach | 90,000 | | **Meta Frequency** | **5.0** | On average, each person saw your ads 5 times across Facebook, Instagram, and Audience Network. *** ## How It Works Meta calculates frequency by dividing total impressions by unique reach. A frequency of 5.0 means users saw your ad 5 times on average. High frequency can signal ad fatigue—when users see your ad too often, engagement and conversion rates typically decline. *** ## When to Use | Scenario | Action | | -------------------------------- | --------------------------------------------------------------------------- | | Detecting ad fatigue | Frequency above 5–7 often signals diminishing returns for prospecting | | Optimizing retargeting | Higher frequency (7–15) acceptable for warm audiences with purchase intent | | Balancing reach vs. repetition | Lower frequency broadens exposure; higher deepens engagement | | Diagnosing declining performance | Rising frequency with falling CTR indicates creative or audience saturation | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | | [Meta Impressions](/reference/metrics/advertising/meta-ads/meta-impressions) | Numerator—total ad views driving the frequency calculation | | [Meta Reach](/reference/metrics/advertising/meta-ads/meta-reach) | Denominator—unique audience size that determines frequency | | [Meta CPM](/reference/metrics/advertising/meta-ads/meta-cost-per-mille) | Cost efficiency at current frequency level—higher frequency often increases CPM | [See all Meta Audience metrics →](/reference/metrics/advertising/meta-ads) # Meta Impressions: Total Ad Displays on Meta Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-impressions Track how many times your Meta ads were displayed. Understand ad visibility and reach across Facebook, Instagram, and Audience Network. Meta Impressions counts the total number of times your ads appeared on screen across Facebook, Instagram, and Audience Network. ## Formula **Meta Impressions** = **COUNT** ( Ad displays ) ### Formula Components | Metric | Definition | | --------------- | --------------------------------------------------------------------------- | | **Ad displays** | Each instance your ad renders on a user's screen, regardless of interaction | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your Meta campaign delivered **125,000 impressions** last week across all placements. | Campaign | Impressions | Reach | Frequency | | --------------- | ----------- | ---------- | --------- | | Summer Sale | 75,000 | 25,000 | 3.0 | | Brand Awareness | 50,000 | 40,000 | 1.25 | | **Total** | **125,000** | **52,000** | **2.4** | *** ## How It Works Meta counts an impression each time your ad renders on screen. One person can generate multiple impressions by seeing your ad more than once. Impressions include all placements—Feed, Stories, Reels, and Audience Network. *** ## When to Use | Scenario | Action | | ------------------------------ | -------------------------------------------------------------- | | Measuring brand visibility | Track impressions to understand how often your brand appears | | Diagnosing delivery issues | Low impressions indicate targeting, budget, or bid constraints | | Calculating efficiency metrics | Use as denominator for CPM and CTR calculations | | Comparing reach vs. frequency | Divide impressions by reach to get average frequency | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | --------------------------------------------------------------- | | [Meta Reach](/reference/metrics/advertising/meta-ads/meta-reach) | Unique users who saw your ads (impressions ÷ reach = frequency) | | [Meta Frequency](/reference/metrics/advertising/meta-ads/meta-frequency) | Average times each person saw your ad | | [Meta CPM](/reference/metrics/advertising/meta-ads/meta-cost-per-mille) | Cost per 1,000 impressions—spend efficiency metric | [See all Meta Audience metrics →](/reference/metrics/advertising/meta-ads) # Meta Inline Clicks: Track Link Clicks Within Your Meta Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-inline-clicks Track clicks on links embedded within your Meta ads, including post body links and carousel card links. Measure in-ad engagement. Meta Inline Clicks measures the number of clicks on links embedded inside the ad unit itself, such as links in the post body or carousel cards. ## Formula **Meta Inline Clicks** = **COUNT** ( Inline link clicks ) ### Formula Components | Metric | Definition | | ------------------ | --------------------------------------------------------------------- | | Inline link clicks | Clicks on links within the ad content itself, not the main CTA button | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your Meta campaign generated **2,847 inline clicks** last week from carousel card links. | Ad Format | Inline Clicks | Click Location | | ------------ | ------------- | ---------------- | | Carousel Ad | 1,623 | Card links | | Single Image | 892 | Post body link | | Video Ad | 332 | Description link | *** ## How It Works Meta tracks inline clicks separately from main CTA clicks. These are clicks on links embedded within the ad creative—like links in the post text, carousel card destinations, or video description links. This metric helps you understand engagement with supplementary links in your ad content. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------------------------------------- | | Carousel performance analysis | Compare inline clicks across carousel cards to identify top-performing products | | Ad copy optimization | Test different link placements in post body to maximize engagement | | Multi-link ad strategy | Measure effectiveness of secondary links beyond your main CTA | | Content engagement tracking | Understand how users interact with in-ad content links | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------- | ------------------------------------- | | [Meta Inline Clicks CTR](/reference/metrics/advertising/meta-ads/meta-inline-clicks-click-through-rate) | Click-through rate for inline links | | [Meta Cost per Inline Click](/reference/metrics/advertising/meta-ads/meta-cost-per-inline-click) | Cost efficiency of inline clicks | | [Meta Clicks](/reference/metrics/advertising/meta-ads/meta-clicks) | Total clicks including CTA and inline | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Inline CTR: Measure In-Ad Link Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-inline-clicks-click-through-rate Track your Meta Ads inline click-through rate to measure how often viewers click embedded links in your ad content. Optimize carousel and copy performance. Meta Inline CTR measures the percentage of impressions that resulted in clicks on links embedded within your Meta ad unit. ## Formula **Meta Inline CTR** = ( [**Meta Inline Clicks**](/reference/metrics/advertising/meta-ads/meta-inline-clicks) ÷ [**Meta Impressions**](/reference/metrics/advertising/meta-ads/meta-impressions) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------- | | [**Meta Inline Clicks**](/reference/metrics/advertising/meta-ads/meta-inline-clicks) | Clicks on links embedded within ad content (carousel cards, text links) | | [**Meta Impressions**](/reference/metrics/advertising/meta-ads/meta-impressions) | Total number of times your ads were displayed | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your carousel campaign delivered **185,000 impressions** and generated **2,960 inline clicks** last month: | Metric | Value | | ------------------- | --------- | | Meta Impressions | 185,000 | | Meta Inline Clicks | 2,960 | | **Meta Inline CTR** | **1.60%** | *** ## How It Works Inline CTR calculates how often viewers click embedded links within your ad creative—such as carousel card links or text links in post copy—rather than the primary CTA button. A higher Inline CTR indicates your ad content is compelling enough to drive engagement beyond the main call-to-action. *** ## When to Use | Scenario | Action | | -------------------------------- | --------------------------------------------------------- | | Low inline engagement | Test more compelling carousel card copy or link placement | | High overall CTR, low Inline CTR | Strengthen embedded links and in-ad content | | Comparing ad formats | Evaluate which creative types drive embedded clicks | | Optimizing multi-link ads | Identify which inline link positions perform best | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ----------------------------------------- | | [Meta Inline Clicks](/reference/metrics/advertising/meta-ads/meta-inline-clicks) | Numerator in the Inline CTR calculation | | [Meta CTR](/reference/metrics/advertising/meta-ads/meta-click-through-rate) | Overall click-through rate for comparison | | [Meta Impressions](/reference/metrics/advertising/meta-ads/meta-impressions) | Denominator in the Inline CTR calculation | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Landing Page View Rate: Measure Click-to-Load Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-landing-page-view-rate Track Meta landing page view rate to see what percentage of ad clicks actually load your page. Low rates indicate page speed or bounce issues. Meta Landing Page View Rate measures the percentage of link clicks that resulted in your landing page fully loading. ## Formula **Meta Landing Page View Rate** = ( [**Meta Landing Page Views**](/reference/metrics/advertising/meta-ads/meta-landing-page-views) ÷ [**Meta Link Clicks**](/reference/metrics/advertising/meta-ads/meta-link-clicks) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | | [**Meta Landing Page Views**](/reference/metrics/advertising/meta-ads/meta-landing-page-views) | Number of times your landing page fully loaded after an ad click | | [**Meta Link Clicks**](/reference/metrics/advertising/meta-ads/meta-link-clicks) | Clicks on your ad's CTA button or primary link directing to your destination | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Average | *** ## Example Your campaign received **2,450 link clicks** and **1,890 landing page views** in January, resulting in a **77.1% landing page view rate**. | Metric | Value | Insight | | ------------------ | ----- | -------------------------------------------- | | Link Clicks | 2,450 | Total ad clicks | | Landing Page Views | 1,890 | Pages that fully loaded | | LP View Rate | 77.1% | Share of clicks that converted to page loads | *** ## How It Works Meta calculates this rate by dividing landing page views by link clicks. A landing page view fires when your page fully loads after someone clicks your ad. Low rates suggest users are leaving before the page renders—often due to slow load times, excessive redirects, or mobile performance issues. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------- | | LP view rate below 70% | Audit page speed and reduce redirects | | Mobile rates lower than desktop | Optimize mobile page performance and reduce asset sizes | | Comparing landing pages | Identify which pages retain traffic best after ad clicks | | Diagnosing high CPA | Check if users are reaching the page before blaming targeting | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------- | ------------------------------------- | | [Meta Landing Page Views](/reference/metrics/advertising/meta-ads/meta-landing-page-views) | Numerator—total landing page loads | | [Meta Link Clicks](/reference/metrics/advertising/meta-ads/meta-link-clicks) | Denominator—total clicks on ad links | | [Meta Cost per Landing Page View](/reference/metrics/advertising/meta-ads/meta-cost-per-landing-page-view) | Cost efficiency for actual page loads | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Landing Page Views: Track Ad Click Conversions Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-landing-page-views Track Meta landing page views to measure how many people fully loaded your page after clicking ads. Identify drop-off between clicks and page loads. Meta Landing Page Views counts how many times your landing page fully loaded after someone clicked your ad. ## Formula **Meta Landing Page Views** = **COUNT** ( Landing page loads ) ### Formula Components | Metric | Definition | | ------------------ | ---------------------------------------------------------------------------------------- | | Landing page loads | Number of times the destination page fired the landing page view event after an ad click | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your campaign received **2,450 link clicks** but only **1,890 landing page views** in January. | Metric | Value | Insight | | ------------------ | --------- | --------------------------------- | | Link Clicks | 2,450 | Total ad clicks | | Landing Page Views | 1,890 | Pages that fully loaded | | Drop-off | 560 (23%) | Users who left before page loaded | *** ## How It Works Meta fires a landing page view event when your page fully loads after someone clicks your ad. This metric counts those events, giving you visibility into how many users actually reached your content versus bouncing before the page rendered. *** ## When to Use | Scenario | Action | | ---------------------------------------------- | ----------------------------------------------------------------- | | Landing page views much lower than link clicks | Improve page load speed or reduce redirects | | High drop-off rate on mobile | Optimize mobile page performance | | Comparing landing pages | Identify which pages retain traffic best | | Diagnosing conversion funnel leaks | Check if users are reaching the page before optimizing conversion | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ---------------------------------------------- | | [Meta Link Clicks](/reference/metrics/advertising/meta-ads/meta-link-clicks) | Total clicks before landing page load filter | | Meta Landing Page Views Cost | Cost per landing page view | | [Meta Landing Page View Rate](/reference/metrics/advertising/meta-ads/meta-landing-page-view-rate) | Percentage of clicks that result in page views | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Link CTR: Measure Ad Creative Performance Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-link-click-through-rate Track how often people click your primary link after seeing your Meta ad. Calculate Link Click-Through Rate to evaluate creative and targeting quality. Link Click-Through Rate measures the percentage of impressions that resulted in clicks on your ad's primary link. ## Formula **Meta Link CTR** = ( [**Meta Link Clicks**](/reference/metrics/advertising/meta-ads/meta-link-clicks) ÷ [**Meta Impressions**](/reference/metrics/advertising/meta-ads/meta-impressions) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | --------------------------------------------------------------------- | | [**Meta Link Clicks**](/reference/metrics/advertising/meta-ads/meta-link-clicks) | Clicks on your ad's call-to-action button or primary destination link | | [**Meta Impressions**](/reference/metrics/advertising/meta-ads/meta-impressions) | Total number of times your ads were shown | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your summer collection campaign generated **4,200 link clicks** from **210,000 impressions**. | Campaign | Link Clicks | Impressions | Link CTR | | ----------------- | ----------- | ----------- | --------- | | Summer Collection | 4,200 | 210,000 | 2.00% | | Spring Clearance | 2,850 | 285,000 | 1.00% | | **Total** | **7,050** | **495,000** | **1.42%** | *** ## How It Works Link CTR counts only clicks on your primary call-to-action button or destination link—not social interactions like likes or comments. This makes it more focused than overall CTR for measuring intent to visit your site or app. *** ## When to Use | Scenario | Action | | ----------------------- | ---------------------------------------------------- | | Link CTR drops below 1% | Test new creative or refine audience targeting | | Link CTR exceeds 2% | Scale budget or expand to similar audiences | | Comparing ad variations | Use Link CTR to identify highest-performing creative | | Traffic campaigns | Monitor Link CTR as primary efficiency indicator | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [Meta Link Clicks](/reference/metrics/advertising/meta-ads/meta-link-clicks) | The numerator—total clicks on your primary link | | [Meta CTR](/reference/metrics/advertising/meta-ads/meta-click-through-rate) | Broader metric counting all clicks, not just link clicks | | [Meta Outbound CTR](/reference/metrics/advertising/meta-ads/meta-outbound-click-through-rate) | Clicks that leave Meta entirely for your destination | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Link Clicks: Track Ad Link Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-link-clicks Track link clicks on your Meta ads. Measure how many people click your CTA button or primary link directing to your website or app. Meta Link Clicks measures the number of clicks specifically on your ad's call-to-action button or primary link that direct people to your website or app. ## Formula **Meta Link Clicks** = **COUNT** ( Link clicks ) ### Formula Components | Metric | Definition | | ----------- | ---------------------------------------------------------------------------- | | Link clicks | Clicks on your ad's CTA button or primary link directing to your destination | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your Meta campaign received **3,847 link clicks** last week across all ad sets. | Ad Set | Link Clicks | CTR | | ---------------------- | ----------- | ---- | | Prospecting - Broad | 2,156 | 1.8% | | Retargeting - Cart | 1,247 | 3.2% | | Lookalike - Purchasers | 444 | 1.4% | *** ## How It Works Meta counts a link click when someone clicks your ad's primary destination link—the CTA button, headline link, or any link configured to send traffic to your website or app. This excludes clicks on your profile, comments, shares, or photo expansions. Link clicks are the standard metric for measuring outbound traffic from your ads. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------------- | | Measuring traffic generation | Track link clicks to see how many people your ads send to your site | | Optimizing for website visits | Use link clicks as your campaign objective metric | | Calculating cost efficiency | Divide spend by link clicks to get cost per link click | | Comparing to landing page views | Check the ratio to identify page load or redirect issues | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [Meta Link Clicks CTR](/reference/metrics/advertising/meta-ads/meta-link-click-through-rate) | Percentage of impressions resulting in link clicks | | [Meta Cost per Link Click](/reference/metrics/advertising/meta-ads/meta-cost-per-link-click) | Average cost to generate one link click | | [Meta Landing Page Views](/reference/metrics/advertising/meta-ads/meta-landing-page-views) | How many link clicks actually loaded your landing page | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta New Customer CPA: Measure First-Time Buyer Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-new-customer-cost-per-acquisition Track Meta New Customer CPA to measure your cost per first-time buyer. Optimize acquisition spend and evaluate prospecting campaign efficiency. Meta New Customer CPA measures the average cost to acquire one first-time buyer through Meta advertising. ## Formula **Meta NC CPA** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta New Customer Purchases**](/reference/metrics/advertising/meta-ads/meta-new-customer-purchases) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising | | [**Meta New Customer Purchases**](/reference/metrics/advertising/meta-ads/meta-new-customer-purchases) | Number of purchases by first-time buyers attributed to Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your DTC brand spent **\$8,000 on Meta ads** in March and acquired **100 new customers**. | Campaign | Spend | New Customers | NC CPA | | ---------------- | ----------- | ------------- | ----------- | | Prospecting Cold | \$4,500 | 45 | \$100.00 | | Lookalike 1% | \$2,500 | 40 | \$62.50 | | Interest-Based | \$1,000 | 15 | \$66.67 | | **Total** | **\$8,000** | **100** | **\$80.00** | *** ## How It Works Meta calculates New Customer CPA by dividing ad spend by purchases from first-time buyers. This requires configuring the new customer signal through Meta's Conversions API or Pixel. The metric isolates acquisition efficiency from repeat purchases, giving you a true cost of customer growth separate from retention-driven revenue. *** ## When to Use | Scenario | Action | | --------------------------- | ---------------------------------------------------------- | | NC CPA exceeds customer LTV | Reduce prospecting spend or tighten targeting | | NC CPA varies by audience | Shift budget toward lowest-cost acquisition segments | | Comparing to blended CPA | Identify how much more new customers cost vs all purchases | | Setting acquisition budgets | Use NC CPA to forecast spend needed for growth targets | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ---------------------------------------- | | [Meta New Customer Purchases](/reference/metrics/advertising/meta-ads/meta-new-customer-purchases) | Conversion count used in denominator | | [Meta CPA](/reference/metrics/advertising/meta-ads/meta-cost-per-acquisition) | Blended acquisition cost (all customers) | | [Meta New Customer ROAS](/reference/metrics/advertising/meta-ads/meta-new-customer-return-on-ad-spend) | Revenue efficiency for first-time buyers | # Meta New Customer Cost per Purchase: Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-new-customer-cost-per-purchase Track Meta new customer cost per purchase to measure acquisition efficiency. Calculate average ad spend per first-time buyer conversion from Meta campaigns. Meta New Customer Cost per Purchase measures how much you spend on Meta ads for each first-time buyer conversion. ## Formula **Meta NC Cost per Purchase** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta New Customer Purchases**](/reference/metrics/advertising/meta-ads/meta-new-customer-purchases) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising | | [**Meta New Customer Purchases**](/reference/metrics/advertising/meta-ads/meta-new-customer-purchases) | Number of purchases by first-time buyers attributed to Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your store ran a prospecting campaign in March with **\$12,400 in Meta ad spend** that generated **124 new customer purchases**. | Metric | Value | Calculation | | ---------------------- | ------------ | ----------------- | | Ad Spend | \$12,400 | Total Meta spend | | New Customer Purchases | 124 | First-time buyers | | **NC Cost/Purchase** | **\$100.00** | \$12,400 ÷ 124 | *** ## How It Works This metric isolates your acquisition efficiency by focusing exclusively on first-time buyers. Meta identifies new customers using the customer information signals you send via the Conversions API. Unlike overall CPA, this filters out repeat purchasers to show true acquisition costs. *** ## When to Use | Scenario | Action | | ------------------------------------- | ----------------------------------------------------------- | | Evaluating prospecting campaigns | Compare NC cost across ad sets targeting cold audiences | | Setting acquisition budgets | Use as baseline to forecast spend needed for growth targets | | Comparing to customer LTV | Ensure acquisition cost stays below customer lifetime value | | Optimizing creative for new customers | Test which ads drive lowest NC acquisition costs | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Meta New Customer Purchases](/reference/metrics/advertising/meta-ads/meta-new-customer-purchases) | The denominator in this calculation | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The numerator in this calculation | | [Meta New Customer CPA](/reference/metrics/advertising/meta-ads/meta-new-customer-cost-per-acquisition) | Equivalent metric using standard CPA terminology | # Meta NC Purchases: New Customer Attributed Conversions Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-new-customer-purchases Track first-time buyer purchases attributed to your Meta ads. Measure acquisition performance with new customer conversion counts from Facebook and Instagram campaigns. Meta NC Purchases counts the number of purchases from first-time buyers that Meta attributes to your ads. ## Formula **Meta NC Purchases** = **COUNT** ( purchase events ) **WHERE** customer\_type = new ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | [**purchase events**](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Total purchase events attributed to your Meta ads | | [**customer\_type = new**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to purchases from first-time buyers with no prior purchase history | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your prospecting campaign drove **847 new customer purchases** in Q1. | Campaign | NC Purchases | Total Purchases | NC Rate | | ------------------ | ------------ | --------------- | ------- | | Lookalike - Top 1% | 412 | 523 | 79% | | Interest - Fitness | 289 | 456 | 63% | | Broad - Advantage+ | 146 | 892 | 16% | *** ## How It Works Meta identifies new customers using customer list data you provide through the Conversions API or pixel. When a purchase event fires, Meta checks if the buyer's email or phone matches your existing customer list. Purchases from unmatched users count as new customer conversions. This requires configuring your new customer signal in Meta. *** ## When to Use | Scenario | Action | | ------------------------------------- | ---------------------------------------------------------------------- | | Prospecting campaigns underperforming | Compare NC purchases across audiences to find best acquisition sources | | High ROAS but low growth | Check if most purchases come from existing customers | | Budget allocation decisions | Shift spend toward campaigns with higher NC purchase rates | | Evaluating Advantage+ Shopping | Monitor NC vs returning customer mix in automated campaigns | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [Meta Purchases](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Total purchases including new and returning customers | | Meta NC Purchases Value | Revenue from first-time buyers | | [Meta NC CPA](/reference/metrics/advertising/meta-ads/meta-new-customer-cost-per-acquisition) | Cost to acquire each new customer | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta New Customer ROAS: Measure Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-new-customer-return-on-ad-spend Meta New Customer ROAS measures revenue from first-time buyers per dollar spent on ads. Evaluate how effectively campaigns convert spend into new customers. Meta New Customer ROAS measures the return on ad spend specifically from first-time buyers acquired through your Meta campaigns. ## Formula **Meta NC ROAS** = **Meta New Customer Purchases Value** ÷ [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | ------------------------------------------------------------------ | | **Meta New Customer Purchases Value** | Revenue from purchases by first-time buyers attributed to Meta ads | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Ratio (multiplier) | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Black Friday campaign spent **\$5,000** on Meta ads and generated **\$12,500** in revenue from first-time buyers. | Metric | Value | Calculation | | -------------------- | -------- | ------------------------------ | | New Customer Revenue | \$12,500 | Revenue from first-time buyers | | Ad Spend | \$5,000 | Total Meta spend | | **NC ROAS** | **2.5x** | \$12,500 ÷ \$5,000 | *** ## How It Works This metric isolates revenue from customers making their first purchase, excluding repeat buyers. Meta identifies new customers using your customer list uploads or the new customer signal configured in your pixel. A NC ROAS of 2.5x means you earn \$2.50 from new buyers for every \$1 spent on ads. *** ## When to Use | Scenario | Action | | ---------------------------------- | ----------------------------------------------------------------- | | Evaluating prospecting campaigns | Compare NC ROAS to overall ROAS to gauge acquisition efficiency | | Budget allocation decisions | Shift spend toward campaigns with higher NC ROAS | | Customer acquisition cost analysis | Use alongside NC CPA for a complete acquisition picture | | Retention vs. acquisition balance | Low NC ROAS with high overall ROAS suggests retargeting dominance | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------- | ----------------------------------------- | | [Meta ROAS](/reference/metrics/advertising/meta-ads/meta-return-on-ad-spend) | Overall return including repeat buyers | | Meta New Customer Purchases Value | The revenue component of NC ROAS | | [Meta New Customer CPA](/reference/metrics/advertising/meta-ads/meta-new-customer-cost-per-acquisition) | Cost-based view of acquisition efficiency | # Meta Outbound Click-Through Rate: Website Traffic Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-outbound-click-through-rate Track the percentage of impressions that drove traffic off Meta to your website. The most relevant CTR for website-focused campaigns. Meta Outbound CTR measures the percentage of impressions that resulted in outbound clicks—the share of ad views that drove someone off Meta to your destination. ## Formula **Meta Outbound CTR** = ( [**Meta Outbound Clicks**](/reference/metrics/advertising/meta-ads/meta-outbound-clicks) ÷ [**Meta Impressions**](/reference/metrics/advertising/meta-ads/meta-impressions) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | [**Meta Outbound Clicks**](/reference/metrics/advertising/meta-ads/meta-outbound-clicks) | Clicks on your ad that directed users to an external destination outside Meta | | [**Meta Impressions**](/reference/metrics/advertising/meta-ads/meta-impressions) | Total number of times your ad was displayed on screen | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your traffic campaign delivered **185,000 impressions** and generated **3,145 outbound clicks** in March: | Ad Set | Impressions | Outbound Clicks | Outbound CTR | | ----------------------------- | ----------- | --------------- | ------------ | | Prospecting - Lookalike | 95,000 | 1,900 | 2.00% | | Retargeting - Cart Abandoners | 50,000 | 850 | 1.70% | | Interest - Home Decor | 40,000 | 395 | 0.99% | | **Total** | **185,000** | **3,145** | **1.70%** | *** ## How It Works Outbound CTR counts only clicks that take users away from Meta properties (Facebook, Instagram, Messenger) to your external destination. This excludes in-platform interactions like reactions, comments, and profile visits. For campaigns optimized for website traffic, outbound CTR provides a clearer signal of ad effectiveness than overall CTR. *** ## When to Use | Scenario | Action | | --------------------------------------- | ---------------------------------------------------------- | | Running traffic or conversion campaigns | Use outbound CTR as your primary click-through metric | | Outbound CTR below 1% | Test new creative or refine audience targeting | | Comparing to overall CTR | Large gaps may indicate engagement but not intent to visit | | Evaluating website-focused ads | Prioritize ad sets with higher outbound CTR | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------- | ---------------------------------------- | | [Meta Outbound Clicks](/reference/metrics/advertising/meta-ads/meta-outbound-clicks) | Numerator—total clicks leaving Meta | | [Meta CTR](/reference/metrics/advertising/meta-ads/meta-click-through-rate) | Broader metric including all click types | | [Meta Link CTR](/reference/metrics/advertising/meta-ads/meta-link-click-through-rate) | CTR for primary link clicks specifically | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Outbound Clicks: Clicks Leaving Meta Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-outbound-clicks Track Meta outbound clicks—the number of ad clicks that took people to your website or app. Measure off-platform traffic from Meta ads. Meta Outbound Clicks measures the number of clicks on your ads that sent people to destinations outside of Meta—typically your website or app. ## Formula **Meta Outbound Clicks** = **COUNT** ( Clicks leaving Meta ) ### Formula Components | Metric | Definition | | ----------------------- | ----------------------------------------------------------------------------------------------------------- | | **Clicks leaving Meta** | Clicks on your ad that directed users to an external destination such as your website, app, or landing page | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your Meta campaign generated **4,872 outbound clicks** this week, sending users directly to your product pages. | Campaign | Impressions | Outbound Clicks | Outbound CTR | | ------------ | ----------- | --------------- | ------------ | | Summer Sale | 125,000 | 2,340 | 1.87% | | New Arrivals | 98,000 | 1,532 | 1.56% | | Retargeting | 45,000 | 1,000 | 2.22% | *** ## How It Works Meta counts an outbound click each time someone clicks on your ad and is directed to a destination outside of Meta's properties. This includes clicks to your website, app store listing, or any external URL. Outbound clicks exclude interactions that stay within Meta (like expanding an ad, viewing a profile, or clicking to comment). *** ## When to Use | Scenario | Action | | --------------------------------------- | ------------------------------------------------------------------- | | Measuring website traffic from ads | Track outbound clicks to see how many users Meta sent to your site | | Comparing link vs. engagement campaigns | Use outbound clicks to focus on traffic-driving objectives | | Optimizing landing page performance | Compare outbound clicks to landing page views to identify drop-off | | Evaluating cost efficiency | Calculate cost per outbound click to measure acquisition efficiency | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [Meta Outbound Clicks CTR](/reference/metrics/advertising/meta-ads/meta-outbound-click-through-rate) | Percentage of impressions resulting in outbound clicks | | [Meta Cost Per Outbound Click](/reference/metrics/advertising/meta-ads/meta-cost-per-outbound-click) | Average cost for each outbound click | | [Meta Landing Page Views](/reference/metrics/advertising/meta-ads/meta-landing-page-views) | Users who clicked and loaded your landing page | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Reach: Unique People Who Saw Your Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-reach Track unique people reached by your Meta ads. Understand audience size vs impressions to optimize frequency and reduce ad fatigue. Meta Reach measures the number of unique people who saw your Meta ads at least once. ## Formula **Meta Reach** = **COUNT DISTINCT** ( People who saw ad ) ### Formula Components | Metric | Definition | | --------------------- | ----------------------------------------------------------------------------- | | **People who saw ad** | Individual users who viewed your ad at least once during the reporting period | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count Distinct | *** ## Example Your Meta campaign reached **45,000 unique people** in the last 7 days. | Campaign | Reach | Impressions | Frequency | | --------------- | ------ | ----------- | --------- | | Summer Sale | 45,000 | 135,000 | 3.0 | | Brand Awareness | 28,000 | 56,000 | 2.0 | | Retargeting | 8,500 | 42,500 | 5.0 | The Summer Sale campaign reached 45,000 unique people who saw the ad an average of 3 times each (135,000 impressions ÷ 45,000 reach). *** ## How It Works Reach counts each person only once, regardless of how many times they saw your ad. Meta tracks this using anonymized user identifiers across their platforms (Facebook, Instagram, Messenger, Audience Network). This differs from impressions, which count every ad view including repeat views to the same person. *** ## When to Use | Scenario | Action | | ------------------------------------ | ---------------------------------------------------------------- | | High impressions but low conversions | Check if reach is low—you may be oversaturating a small audience | | Planning brand awareness campaigns | Use reach to estimate total audience exposure | | Comparing campaign efficiency | Evaluate cost per person reached (CPP) across campaigns | | Managing ad fatigue | Monitor reach vs frequency to avoid showing ads too often | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------- | ----------------------------------------------- | | [Meta Impressions](/reference/metrics/advertising/meta-ads/meta-impressions) | Total ad views; reach × frequency = impressions | | [Meta CPP](/reference/metrics/advertising/meta-ads/meta-cost-per-thousand-people-reached) | Cost to reach each unique person | [See all Meta Audience metrics →](/reference/metrics/advertising/meta-ads) # Meta ROAS: Measure Your Meta Ad Return on Investment Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-return-on-ad-spend Track Meta ROAS to measure revenue generated per dollar spent on Meta ads. Calculate return on ad spend and optimize campaign profitability. Meta ROAS measures the revenue Meta attributes to your ads for every dollar spent. ## Formula **Meta ROAS** = [**Meta Purchases Value**](/reference/metrics/advertising/meta-ads/purchases/meta-purchases-value) ÷ [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | --------------------------------------------------- | | [**Meta Purchases Value**](/reference/metrics/advertising/meta-ads/purchases/meta-purchases-value) | Total revenue from purchases attributed to Meta ads | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Ratio (multiplier) | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$5,000** on Meta ads in January and drove \$18,500 in attributed revenue. | Campaign | Spend | Revenue | ROAS | | ----------- | ------- | ------- | ---- | | Prospecting | \$3,000 | \$9,000 | 3.0x | | Retargeting | \$1,500 | \$7,500 | 5.0x | | Lookalike | \$500 | \$2,000 | 4.0x | *** ## How It Works Meta calculates ROAS by dividing the total purchase value it attributes to your ads by your ad spend. A ROAS of 3x means Meta credits \$3 in revenue for every \$1 spent. This metric uses Meta's attribution model, which may differ from your actual store revenue due to attribution windows and cross-platform purchases. *** ## When to Use | Scenario | Action | | ------------------------- | --------------------------------------------------------- | | Campaign isn't profitable | Pause campaigns with ROAS below your break-even threshold | | Scaling decisions | Increase budget on campaigns exceeding target ROAS | | Creative testing | Compare ROAS across ad variations to identify winners | | Channel comparison | Benchmark Meta ROAS against other paid channels | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | -------------------------------------------------- | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The denominator in ROAS calculation | | [Meta Purchases Value](/reference/metrics/advertising/meta-ads/purchases/meta-purchases-value) | The numerator in ROAS calculation | | [Meta CPA](/reference/metrics/advertising/meta-ads/meta-cost-per-acquisition) | Cost efficiency per purchase (inverse perspective) | | [Meta New Customer ROAS](/reference/metrics/advertising/meta-ads/meta-new-customer-return-on-ad-spend) | ROAS from first-time buyers only | # Meta Spend: Track Your Total Ad Budget Consumption Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-spend Track total Meta ad spend. See how much Meta billed you during any period to monitor budget consumption and calculate efficiency metrics. Meta Spend measures the total amount Meta billed you for advertising during the selected period. ## Formula **Meta Spend** = **SUM** ( Ad Costs ) | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your store spent **\$4,850** on Meta ads in January across three campaigns. | Campaign | Spend | Share of Budget | | --------------- | ------- | --------------- | | Prospecting | \$2,400 | 49.5% | | Retargeting | \$1,650 | 34.0% | | Brand Awareness | \$800 | 16.5% | *** ## How It Works Meta Spend is pulled directly from your Meta Ads account via the Marketing API. It reflects the actual amount billed to your payment method, updated daily. This value serves as the denominator for efficiency metrics like ROAS and CPA. *** ## When to Use | Scenario | Action | | ------------------- | ------------------------------------------- | | Budget pacing | Monitor daily spend against monthly targets | | Campaign comparison | Compare spend distribution across campaigns | | Efficiency analysis | Combine with revenue to calculate ROAS | | Cost control | Set alerts when spend exceeds thresholds | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ------------------------------------ | | [Meta CPM](/reference/metrics/advertising/meta-ads/meta-cost-per-mille) | Spend divided by impressions × 1,000 | | [Meta CPC](/reference/metrics/advertising/meta-ads/meta-cost-per-click) | Spend divided by clicks | | [Meta ROAS](/reference/metrics/advertising/meta-ads/meta-return-on-ad-spend) | Revenue divided by spend | # Meta Thruplay: Video Completion Measurement Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-thruplay Track Meta Thruplay for video ads. Measure videos watched to completion or for at least 15 seconds—Meta's recommended metric for video campaign optimization. The number of videos watched to completion or for at least 15 seconds—Meta's recommended metric for video campaign optimization. ## Formula **Meta Thruplay** = **COUNT** ( Thruplay Views ) ### Formula Components | Metric | Definition | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------- | | **Thruplay Views** | Individual video views counted when a viewer watches your video to completion or for at least 15 seconds, whichever comes first | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your video ad campaign achieved **8,250 Thruplay views** last week across three creative variants. | Video Creative | Thruplay Views | Video Length | | -------------- | -------------- | ------------ | | Product Demo | 3,840 | 45 seconds | | Customer Story | 2,910 | 28 seconds | | Quick Promo | 1,500 | 12 seconds | The 12-second promo counts completions only since it's under 15 seconds. *** ## How It Works Meta counts a Thruplay when a viewer watches your entire video or at least 15 continuous seconds, whichever comes first. For videos shorter than 15 seconds, the user must complete the full video. This metric provides a more meaningful engagement signal than standard 3-second video views. *** ## When to Use | Scenario | Action | | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | Optimizing video campaigns | Use Thruplay as your primary optimization event for awareness objectives | | Comparing video creatives | Identify which videos hold viewer attention longest | | Calculating cost efficiency | Pair with [Meta Cost per Thruplay](/reference/metrics/advertising/meta-ads/meta-cost-per-thruplay) to evaluate engaged view cost | | Benchmarking engagement | Compare Thruplay against [Meta Video Views 100%](/reference/metrics/advertising/meta-ads/meta-video-views-100-percent) for full completion | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | [Meta Thruplay Views](/reference/metrics/advertising/meta-ads/meta-thruplay-views) | Same metric with alternate name | | [Meta Cost per Thruplay](/reference/metrics/advertising/meta-ads/meta-cost-per-thruplay) | Ad Spend ÷ Thruplay Views—efficiency metric for video spend | | [Meta Video Views 100%](/reference/metrics/advertising/meta-ads/meta-video-views-100-percent) | Views where the entire video was watched—stricter completion metric | | [Meta Video Views 15 Sec](/reference/metrics/advertising/meta-ads/meta-video-views-15-seconds) | Views reaching 15 seconds—component of Thruplay for longer videos | [See all Meta Video metrics →](/reference/metrics/advertising/meta-ads) # Meta Thruplay Views: Video Completion Measurement Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-thruplay-views Track Meta Thruplay Views for your video ads. Measure completions or 15+ second views to optimize video campaign performance. Meta Thruplay Views counts video views that were either watched to completion or for at least 15 seconds—Meta's recommended metric for video campaign optimization. ## Formula **Meta Thruplay Views** = **COUNT** ( Thruplay Views ) ### Formula Components | Metric | Definition | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------- | | **Thruplay Views** | Individual video views counted when a viewer watches your video to completion or for at least 15 seconds, whichever comes first | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your video ad campaign achieved **12,450 Thruplay Views** last month across three creative variants. | Video Creative | Thruplay Views | Completion Rate | | -------------------- | -------------- | --------------- | | Product Demo (45s) | 5,230 | 42% | | Customer Story (30s) | 4,120 | 55% | | Brand Intro (15s) | 3,100 | 78% | *** ## How It Works Meta counts a Thruplay View when a user watches your video ad to completion OR for at least 15 seconds, whichever occurs first. For videos shorter than 15 seconds, the user must watch the entire video. This metric provides a more meaningful engagement signal than standard video views. *** ## When to Use | Scenario | Action | | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | Optimizing video campaigns | Use Thruplay as your primary optimization event for video-focused objectives | | Comparing video creatives | Identify which videos hold viewer attention longest | | Calculating cost efficiency | Pair with [Meta Thruplay Cost](/reference/metrics/advertising/meta-ads/meta-cost-per-thruplay) to evaluate cost per engaged view | | Benchmarking engagement | Compare Thruplay rate against [Meta 100% Watched](/reference/metrics/advertising/meta-ads/meta-video-views-100-percent) for full completion insights | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | [Meta Thruplay Cost](/reference/metrics/advertising/meta-ads/meta-cost-per-thruplay) | Cost per Thruplay View—efficiency metric for video spend | | [Meta 100% Watched](/reference/metrics/advertising/meta-ads/meta-video-views-100-percent) | Views where the entire video was watched—stricter completion metric | | [Meta 15 Second Views](/reference/metrics/advertising/meta-ads/meta-video-views-15-seconds) | Views reaching 15 seconds—component of Thruplay for longer videos | [See all Meta Video metrics →](/reference/metrics/advertising/meta-ads) # Meta Unique CTR: Click Rate Without Repeat Clickers Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-unique-click-through-rate Track the percentage of people who clicked your Meta ads at least once. Measure true engagement by removing inflation from repeat clickers. Meta Unique CTR measures the percentage of people who clicked on your ad at least once, removing the inflation from repeat clickers. ## Formula **Meta Unique CTR** = ( [**Meta Unique Clicks**](/reference/metrics/advertising/meta-ads/meta-unique-clicks) ÷ [**Meta Reach**](/reference/metrics/advertising/meta-ads/meta-reach) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------ | -------------------------------------------------------------- | | [**Meta Unique Clicks**](/reference/metrics/advertising/meta-ads/meta-unique-clicks) | Number of distinct people who clicked on your ad at least once | | [**Meta Reach**](/reference/metrics/advertising/meta-ads/meta-reach) | Number of unique people who saw your ad at least once | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your prospecting campaign reached **85,000 unique people** last week, and **2,550 distinct individuals** clicked on your ads. | Metric | Value | Insight | | -------------------------------------------------------------------------------- | ------ | ----------------------------- | | [Meta Reach](/reference/metrics/advertising/meta-ads/meta-reach) | 85,000 | Unique people who saw the ad | | [Meta Unique Clicks](/reference/metrics/advertising/meta-ads/meta-unique-clicks) | 2,550 | Distinct people who clicked | | Meta Unique CTR | 3.00% | Share of audience who clicked | This tells you that 3% of the people who saw your ad took action—a cleaner engagement signal than standard CTR. *** ## How It Works Unique CTR divides unique clickers by unique viewers, giving you a person-based click rate. Unlike standard [Meta CTR](/reference/metrics/advertising/meta-ads/meta-click-through-rate) which uses impressions (and can be inflated by high frequency), Unique CTR shows what share of your actual audience engaged. This makes it especially useful for comparing ads served at different frequencies. *** ## When to Use | Scenario | Action | | ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | Comparing ads with different frequencies | Use Unique CTR to normalize for impression count differences | | Measuring true audience engagement | Unique CTR shows what percentage of reached people clicked | | Identifying ad fatigue | If [Meta CTR](/reference/metrics/advertising/meta-ads/meta-click-through-rate) is high but Unique CTR is low, the same people are clicking repeatedly | | Evaluating prospecting creative | Unique CTR reveals how well your ad resonates with new audiences | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ------------------------------------------------------------ | | [Meta Unique Clicks](/reference/metrics/advertising/meta-ads/meta-unique-clicks) | The numerator—distinct people who clicked | | [Meta CTR](/reference/metrics/advertising/meta-ads/meta-click-through-rate) | Standard click-through rate based on impressions, not people | | [Meta Reach](/reference/metrics/advertising/meta-ads/meta-reach) | The denominator—unique people who saw your ad | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Unique Clicks: Distinct Ad Clickers Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-unique-clicks Track how many distinct people clicked your Meta ads. Measure true audience reach and engagement by counting unique clickers, not repeat clicks. Meta Unique Clicks measures the number of distinct individuals who clicked on your Meta ads, counting each person only once regardless of how many times they clicked. ## Formula **Meta Unique Clicks** = **COUNT DISTINCT** ( People who clicked ) ### Formula Components | Metric | Definition | | ---------------------- | -------------------------------------------------------------------------------------- | | **People who clicked** | Individual users who clicked on your Meta ad at least once during the reporting period | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your Meta campaign reached **45,000 people** last week, and **3,240 unique individuals** clicked on your ads. | Metric | Value | Insight | | ------------------------------------------------------------------ | ----- | --------------------------------- | | [Meta Clicks](/reference/metrics/advertising/meta-ads/meta-clicks) | 4,850 | Total click events recorded | | Meta Unique Clicks | 3,240 | Distinct people who clicked | | Repeat Click Rate | 1.5× | Average clicks per unique clicker | This tells you that 3,240 real people engaged with your ads, with some clicking multiple times. *** ## How It Works Meta tracks user identity across sessions to deduplicate click events. When the same person clicks your ad three times, Meta Clicks counts 3 while Meta Unique Clicks counts 1. This deduplication uses Meta's cross-device identity graph to recognize the same person across different devices and browsers. *** ## When to Use | Scenario | Action | | ----------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | | Measuring true audience engagement | Use unique clicks instead of total clicks to understand how many real people interacted | | Identifying repeat clicker patterns | Compare unique clicks to total clicks to find ads driving curiosity vs. immediate action | | Calculating accurate CTR | Use [Meta Unique Clicks CTR](/reference/metrics/advertising/meta-ads/meta-unique-click-through-rate) for click-through rate based on unique clickers | | Frequency capping decisions | High ratio of total clicks to unique clicks may indicate over-exposure | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | -------------------------------------------------------------- | | [Meta Clicks](/reference/metrics/advertising/meta-ads/meta-clicks) | Total click count including repeat clicks from the same person | | [Meta Unique Clicks CTR](/reference/metrics/advertising/meta-ads/meta-unique-click-through-rate) | Click-through rate calculated using unique clickers | | [Meta Impressions](/reference/metrics/advertising/meta-ads/meta-impressions) | Total ad views that drive click behavior | [See all Meta Clicks metrics →](/reference/metrics/advertising/meta-ads) # Meta Video Completions: Full Video Watch Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-video-completions Meta Video Completions count views where your entire video ad was watched from start to finish. The strongest video engagement signal for evaluating content. The number of times your video ads were watched to 100% completion. ## Formula **Meta Video Completions** = **COUNT** ( Video Completions ) ### Formula Components | Metric | Definition | | --------------------- | ------------------------------------------------------------------------------------------------- | | **Video Completions** | Individual instances where a viewer watched your entire video ad from the first frame to the last | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your brand story campaign generated **4,250 video completions** across three video lengths: | Video | Length | Completions | Completion Rate | | -------------------- | ------ | ----------- | --------------- | | Customer Testimonial | 28 sec | 2,100 | 18.2% | | Product Tutorial | 45 sec | 1,450 | 12.8% | | Brand Documentary | 90 sec | 700 | 6.1% | Shorter videos typically see higher completion rates, but completions on longer content signal deeper engagement. *** ## How It Works Meta registers a video completion when someone watches your entire video ad from start to finish. This is the strictest engagement metric—viewers who reach 100% have seen your complete message. Completions are especially valuable for videos with calls-to-action or key information at the end. *** ## When to Use | Scenario | Action | | ------------------------------ | -------------------------------------------------------- | | Evaluating message delivery | High completions mean viewers saw your full story | | Testing video length | Compare completion rates across different durations | | Identifying engaging content | Videos with high completions resonate with your audience | | Building retargeting audiences | Target users who completed videos for warm leads | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | | [Meta Thruplay Views](/reference/metrics/advertising/meta-ads/meta-thruplay-views) | Completions or 15+ second views—Meta's recommended video optimization metric | | [Meta Video 75% Views](/reference/metrics/advertising/meta-ads/meta-video-views-75-percent) | Near-completions—viewers who watched most of your video | | [Meta Video Views](/reference/metrics/advertising/meta-ads/meta-video-views) | 3-second views—top of the video engagement funnel | [See all Meta Video metrics →](/reference/metrics/advertising/meta-ads) # Meta Video Plays: Track Video Starts on Your Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-video-plays Track how many times your Meta video ads started playing, including auto-plays. Compare plays to views to measure engagement and creative performance. The total number of times your Meta video ads started playing, including auto-plays. ## Formula **Meta Video Plays** = **COUNT** ( Video Plays ) ### Formula Components | Metric | Definition | | --------------- | --------------------------------------------------------------------------------------- | | **Video Plays** | Each instance a video ad started playing, whether auto-played in feed or user-initiated | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your video campaign generated **142,800 plays** across three ad sets this week: | Ad Set | Plays | Views | Play-to-View Rate | | ------------ | ------ | ------ | ----------------- | | Lifestyle | 68,400 | 52,100 | 76% | | Product Demo | 51,200 | 41,000 | 80% | | Testimonial | 23,200 | 16,500 | 71% | *** ## How It Works Video Plays counts every time your video starts playing, including auto-plays as users scroll through their feed. This number is typically higher than Video Views because Meta only counts a "view" after 3+ seconds of watch time. The gap between plays and views reveals how many people scrolled past immediately. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------- | | Measuring initial exposure | Track raw video starts across campaigns | | Diagnosing drop-off | Compare plays to views to find early abandonment | | Evaluating hook effectiveness | Low play-to-view rate suggests weak opening | | Optimizing cost efficiency | Divide spend by plays to find cost per video play | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | ----------------------------------------- | | [Meta Cost per Video Play](/reference/metrics/advertising/meta-ads/meta-cost-per-video-play) | Ad Spend ÷ Video Plays | | [Meta Video Views](/reference/metrics/advertising/meta-ads/meta-video-views) | Plays that reached the 3-second threshold | [See all Meta Video metrics →](/reference/metrics/advertising/meta-ads) # Meta Video Views: Measure Video Ad Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-video-views Track how many times your Meta video ads were watched for at least 3 seconds. Evaluate creative performance and optimize video campaigns. Meta Video Views counts how many times your video ad was watched for at least 3 seconds—Meta's default view threshold. ## Formula **Meta Video Views** = **COUNT** ( 3-Second Video Views ) ### Formula Components | Metric | Definition | | ------------------------ | -------------------------------------------------------------------- | | **3-Second Video Views** | Video plays where the user watched for at least 3 continuous seconds | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your product demo campaign generated **125,000 video views** across Instagram and Facebook last month. | Placement | Video Views | Video Plays | View Rate | | --------------- | ----------- | ----------- | --------- | | Instagram Reels | 72,000 | 95,000 | 75.8% | | Facebook Feed | 38,000 | 52,000 | 73.1% | | Stories | 15,000 | 28,000 | 53.6% | *** ## How It Works Meta registers a video view when a user watches your ad for at least 3 continuous seconds. This threshold filters out accidental scrolls and auto-play skips, giving you a cleaner signal of intentional engagement. Views are counted across Facebook, Instagram, Messenger, and the Audience Network. *** ## When to Use | Scenario | Action | | ------------------------------------ | -------------------------------------------------------- | | Comparing video creative performance | Higher view counts signal more engaging content | | Evaluating audience targeting | Low views relative to plays indicates targeting mismatch | | Measuring brand awareness lift | Track views alongside reach for exposure metrics | | Optimizing cost efficiency | Compare cost per view across ad sets | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [Meta Cost per Video View](/reference/metrics/advertising/meta-ads/meta-cost-per-video-view) | Spend efficiency—how much each 3-second view costs | | [Meta Video Plays](/reference/metrics/advertising/meta-ads/meta-video-plays) | Total plays including auto-play—always higher than views | | [Meta Thruplay Views](/reference/metrics/advertising/meta-ads/meta-thruplay-views) | Videos watched to completion or 15+ seconds | [See all Meta Video metrics →](/reference/metrics/advertising/meta-ads) # Meta Video 100% Views: Complete Video Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-video-views-100-percent Track Meta video ads watched to 100% completion. Measure your strongest video engagement signal and optimize creative performance. Meta Video 100% Views measures the number of times your video ads were watched to complete 100% of their duration. ## Formula **Meta Video 100% Views** = **COUNT** ( 100% Completion Views ) ### Formula Components | Metric | Definition | | ------------------------- | ---------------------------------------------------------------------------------------- | | **100% Completion Views** | The raw count of video plays where viewers watched the entire video from start to finish | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example A sportswear brand runs a 30-second product video campaign across Meta platforms. | Ad Creative | Total Plays | 100% Views | Completion Rate | | ------------- | ----------- | ---------- | --------------- | | Product Demo | 15,000 | 2,250 | 15% | | Athlete Story | 12,500 | 3,750 | 30% | | Quick Cuts | 20,000 | 1,800 | 9% | The "Athlete Story" creative drives 67% more complete views than "Product Demo" despite fewer total plays—indicating stronger engagement with narrative content. *** ## How It Works Meta counts a 100% view when a user watches your entire video from the first frame to the last. Unlike ThruPlay (15 seconds or completion), this metric requires full video consumption. It represents the highest intent signal for video creative performance. *** ## When to Use | Scenario | Action | | -------------------------------- | -------------------------------------------------------------- | | Comparing creative performance | Identify which videos hold attention to completion | | Measuring brand awareness impact | Complete views indicate strong message delivery | | Optimizing video length | High completion rates on longer videos signal engaging content | | Evaluating audience targeting | Low completion rates may indicate audience-content mismatch | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | -------------------------------------------------- | | Meta Video 95% Views | Near-complete views—useful when 100% is too strict | | [Meta ThruPlay Views](/reference/metrics/advertising/meta-ads/meta-thruplay-views) | Meta's standard video metric (15s or completion) | | [Meta Video Views](/reference/metrics/advertising/meta-ads/meta-video-views) | 3-second views—top-of-funnel video engagement | [See all Meta Video metrics →](/reference/metrics/advertising/meta-ads) # Meta 15-Second Video Views: Measure Deep Video Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-video-views-15-seconds Track Meta video ads watched for at least 15 seconds to measure deeper viewer engagement beyond the 3-second threshold. Counts how many times your Meta video ads were watched for at least 15 continuous seconds. ## Formula **Meta 15-Second Video Views** = **COUNT** ( 15-Second Video Views ) ### Formula Components | Metric | Definition | | ------------------------- | -------------------------------------------------------------------------------------------------------- | | **15-Second Video Views** | Individual video views counted when a viewer watches your video ad for at least 15 uninterrupted seconds | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your skincare brand ran a 30-second product demo video ad last week, generating **18,450** fifteen-second views. | Ad Creative | 15s Views | 3s Views | Retention | | --------------- | --------- | -------- | --------- | | Product Demo | 18,450 | 42,000 | 44% | | Testimonial | 12,300 | 38,500 | 32% | | How-To Tutorial | 24,100 | 48,200 | 50% | *** ## How It Works Meta records a 15-second view whenever a viewer watches your video ad continuously for at least 15 seconds without skipping. This threshold indicates stronger intent than the standard 3-second view metric, as viewers have invested meaningful attention in your content. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------------------- | | Evaluating creative quality | Compare 15s views across ad variants to find engaging content | | Measuring brand storytelling | Track if viewers watch long enough to absorb your message | | Building retargeting audiences | Use 15s viewers as a higher-intent audience segment | | Optimizing video length | Analyze where viewers drop off between 3s and 15s | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [Meta Cost per 15-Second View](/reference/metrics/advertising/meta-ads/meta-cost-per-15-second-view) | Cost efficiency of driving 15-second views | | [Meta Video Views](/reference/metrics/advertising/meta-ads/meta-video-views) | Total 3-second views for baseline comparison | | [Meta Thruplay Views](/reference/metrics/advertising/meta-ads/meta-thruplay-views) | Views watched to completion or 15+ seconds | [See all Meta Video metrics →](/reference/metrics/advertising/meta-ads) # Meta Video 25% Views: Track Early Video Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-video-views-25-percent Track how many viewers watched at least 25% of your Meta video ads. Identify early drop-off points and optimize video creative for better retention. The number of times your video ads were watched to at least 25% completion—part of the video completion rate funnel. ## Formula **Meta Video 25% Views** = **COUNT** ( 25% Completion Views ) ### Formula Components | Metric | Definition | | ------------------------ | -------------------------------------------------------------------------- | | **25% Completion Views** | Each instance where a viewer watches at least one quarter of your video ad | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your skincare brand ran a 60-second product demo video ad last week. Here's the completion breakdown: | Video | Impressions | 25% Views | 25% View Rate | | --------------- | ----------- | --------- | ------------- | | Product Demo | 45,000 | 12,150 | 27% | | How-To Tutorial | 38,000 | 15,200 | 40% | | Brand Story | 52,000 | 9,360 | 18% | The tutorial captures attention better in the first 15 seconds, while the brand story loses viewers early. *** ## How It Works Meta fires a 25% completion event when a viewer watches at least one quarter of your video's total duration. For a 60-second video, this means watching at least 15 seconds. This metric counts each qualifying view, including repeat views from the same person. *** ## When to Use | Scenario | Action | | ------------------------------------ | ------------------------------------------------------- | | High impressions but low 25% views | Improve your video hook in the first 3-5 seconds | | Comparing creative variations | Identify which opening sequences retain viewers best | | Building video remarketing audiences | Target users who reached 25%+ for mid-funnel ads | | Diagnosing funnel drop-off | Compare 25% to 50%/75%/100% to find where viewers leave | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [Meta Video 50% Views](/reference/metrics/advertising/meta-ads/meta-video-views-50-percent) | Next milestone in the video completion funnel | | [Meta Video Views](/reference/metrics/advertising/meta-ads/meta-video-views) | Base 3-second view count—always higher than 25% views | | [Meta Video Completions](/reference/metrics/advertising/meta-ads/meta-video-completions) | Viewers who watched your entire video | [See all Meta Video metrics →](/reference/metrics/advertising/meta-ads) # Meta Video 50% Views: Measure Mid-Video Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-video-views-50-percent Track how many viewers watched at least half of your Meta video ads. A key milestone for measuring message delivery and evaluating creative effectiveness. The number of times your video ads were watched to at least 50% completion—indicates moderate viewing engagement. ## Formula **Meta Video 50% Views** = **COUNT** ( 50% Completion Views ) ### Formula Components | Metric | Definition | | ------------------------ | ------------------------------------------------------------------- | | **50% Completion Views** | Each instance where a viewer watches at least half of your video ad | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your fitness brand ran a 40-second workout preview across three ad sets last week. Here's how viewers progressed through each video: | Ad Set | Impressions | 50% Views | 50% View Rate | | --------------- | ----------- | --------- | ------------- | | Morning Routine | 62,000 | 18,600 | 30% | | HIIT Preview | 48,000 | 20,160 | 42% | | Recovery Tips | 55,000 | 11,000 | 20% | The HIIT preview maintains viewer attention through the midpoint, while Recovery Tips needs a stronger narrative hook. *** ## How It Works Meta fires a 50% completion event when a viewer watches at least half of your video's total duration. For a 40-second video, this means watching at least 20 seconds. This metric counts each qualifying view, including repeat views from the same person. *** ## When to Use | Scenario | Action | | ----------------------------------- | -------------------------------------------------------- | | Strong 25% but weak 50% views | Your middle content loses viewers—tighten the narrative | | Comparing video lengths | Shorter videos often have higher 50% rates; test formats | | Building warm remarketing audiences | Target 50%+ viewers for bottom-funnel conversion ads | | Evaluating message delivery | 50% completion means your core message likely landed | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [Meta Video 25% Views](/reference/metrics/advertising/meta-ads/meta-video-views-25-percent) | Earlier funnel stage showing initial hook effectiveness | | [Meta Video 75% Views](/reference/metrics/advertising/meta-ads/meta-video-views-75-percent) | Next milestone showing strong content retention | | [Meta Video Completions](/reference/metrics/advertising/meta-ads/meta-video-completions) | Viewers who watched your entire video | [See all Meta Video metrics →](/reference/metrics/advertising/meta-ads) # Meta Video 75% Views: Measure Deep Video Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/meta-video-views-75-percent Track how many viewers watched three-quarters of your Meta video ads. Identify highly engaged audiences and optimize video creative for retention. The number of times your video ads were watched to at least 75% completion—signals strong content retention. ## Formula **Meta Video 75% Views** = **COUNT** ( 75% Completion Views ) ### Formula Components | Metric | Definition | | ------------------------ | ----------------------------------------------------------------------------- | | **75% Completion Views** | Each instance where a viewer watches at least three-quarters of your video ad | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your skincare brand ran video ads in May showing product application tutorials. **12,847 viewers watched to 75% completion**. | Campaign | 25% Views | 50% Views | 75% Views | Completions | | --------------- | --------- | --------- | --------- | ----------- | | Tutorial Series | 45,200 | 28,100 | 12,847 | 8,920 | | Product Demo | 32,100 | 18,400 | 7,650 | 4,210 | | Brand Story | 28,500 | 12,300 | 4,120 | 2,180 | *** ## How It Works Meta tracks video watch progress and fires a 75% completion event when a viewer reaches three-quarters of your video's duration. For a 60-second video, this means watching at least 45 seconds. This threshold filters out casual scrollers, capturing viewers who demonstrated genuine interest in your content. *** ## When to Use | Scenario | Action | | --------------------------------- | --------------------------------------------------------------------- | | Evaluating video creative quality | Compare 75% rates across videos to find formats that hold attention | | Building retargeting audiences | Target 75% viewers for bottom-funnel campaigns—they're highly engaged | | Optimizing video length | Low 75% rates may signal videos are too long for the platform | | Measuring brand storytelling | Use for brand awareness videos where message delivery matters | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [Meta Video 50% Views](/reference/metrics/advertising/meta-ads/meta-video-views-50-percent) | Earlier milestone—compare drop-off between 50% and 75% | | [Meta Video Completions](/reference/metrics/advertising/meta-ads/meta-video-completions) | Final milestone—100% completion for full message delivery | | [Meta Video 25% Views](/reference/metrics/advertising/meta-ads/meta-video-views-25-percent) | Initial hook effectiveness—measures early attention capture | [See all Meta Video metrics →](/reference/metrics/advertising/meta-ads) # Meta Page Likes Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/page-likes All Meta metrics for page-likes — volume, value, and cost in one place. Metrics for page likes across your Meta campaigns: * [Meta Cost per Page Like: Follower Acquisition Metric](/reference/metrics/advertising/meta-ads/page-likes/meta-cost-per-page-like) * [Meta Page Likes: Grow Your Organic Facebook Audience](/reference/metrics/advertising/meta-ads/page-likes/meta-page-likes) # Meta Cost per Page Like: Follower Acquisition Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/page-likes/meta-cost-per-page-like Track Meta cost per page like to measure how efficiently your ads acquire new Page followers. Evaluate spend against the lifetime organic reach value of each follower. Measures the average amount you spend to acquire each new follower for your Facebook Page through Meta ads. ## Formula **Meta Cost per Page Like** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Page Likes**](/reference/metrics/advertising/meta-ads/page-likes/meta-page-likes) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising campaigns | | [**Meta Page Likes**](/reference/metrics/advertising/meta-ads/page-likes/meta-page-likes) | Number of Facebook Page follows attributed to your Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Page growth campaign spent **\$1,200** and gained **800 new followers** this month. | Campaign | Spend | Page Likes | Cost/Like | | ----------------------- | ----- | ---------- | --------- | | Page Growth - Lookalike | \$700 | 520 | \$1.35 | | Page Growth - Interest | \$500 | 280 | \$1.79 | *** ## How It Works Upstack pulls Page like data directly from Meta Ads API. The cost per page like is calculated by dividing total ad spend by new Page followers gained during the selected period. This metric specifically tracks Facebook Page follows, not post reactions. *** ## When to Use | Scenario | Action | | ---------------------------------- | ----------------------------------------------------- | | Building organic reach | Lower cost indicates efficient audience growth | | Comparing audience targeting | Identify which targeting drives cheapest followers | | Evaluating follower lifetime value | Compare acquisition cost against organic reach value | | Benchmarking Page campaigns | Track efficiency across different creative approaches | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [Meta Page Likes](/reference/metrics/advertising/meta-ads/page-likes/meta-page-likes) | The follower count this metric divides spend by | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The ad spend this metric divides by page likes | | [Meta Cost per Engagement](/reference/metrics/advertising/meta-ads/engagements/meta-cost-per-engagement) | Broader engagement cost including all social actions | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Page Likes: Grow Your Organic Facebook Audience Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/page-likes/meta-page-likes Track Meta Page Likes to measure Facebook Page followers gained from ads. Build your organic audience, monitor campaign effectiveness, and grow future reach. How many people liked your Facebook Page after seeing your ad. Measures page growth from advertising. ## Formula **Meta Page Likes** = **COUNT** ( Page Likes ) ### Formula Components | Metric | Definition | | -------------- | ------------------------------------------------------- | | **Page Likes** | Each new Facebook Page like attributed to your Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your brand awareness campaign generated **2,340 page likes** in Q1, growing your Facebook following by 15%. | Campaign | Page Likes | Reach | Page Like Rate | | --------------- | ---------- | ------- | -------------- | | Brand Awareness | 2,340 | 425,000 | 0.55% | | Product Launch | 890 | 180,000 | 0.49% | | Retargeting | 156 | 45,000 | 0.35% | *** ## How It Works When someone clicks "Like" on your Facebook Page after viewing or engaging with your ad, Meta attributes that page like to the campaign. Page likes differ from ad likes—they represent a lasting connection where followers will see your future organic posts in their feed. *** ## When to Use | Scenario | Action | | --------------------------------- | --------------------------------------------------------------- | | Building brand presence | Run page like campaigns to establish your Facebook audience | | Page likes declining | Refresh creative or expand targeting to reach new prospects | | Comparing organic reach potential | Higher page likes mean larger organic audience for future posts | | Evaluating acquisition cost | Track cost per page like alongside page like volume | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | [Meta Cost per Page Like](/reference/metrics/advertising/meta-ads/page-likes/meta-cost-per-page-like) | Spend required for each new page follower | | [Meta Engagements](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) | Total ad interactions including reactions, comments, and shares | | [Meta Likes](/reference/metrics/advertising/meta-ads/likes/meta-likes) | Likes on your ads, distinct from page follows | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Photo Views Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/photo-views All Meta metrics for photo-views — volume, value, and cost in one place. Metrics for photo views across your Meta campaigns: * [Meta Cost per Photo View: Photo Ad Engagement Efficiency](/reference/metrics/advertising/meta-ads/photo-views/meta-cost-per-photo-view) * [Meta Photo Views: Track Visual Content Engagement](/reference/metrics/advertising/meta-ads/photo-views/meta-photo-views) # Meta Cost per Photo View: Photo Ad Engagement Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/photo-views/meta-cost-per-photo-view Track cost per photo view for Meta ads. Measure photo ad engagement efficiency and optimize creative spend across Facebook and Instagram. Average spend per photo view on your Meta ads—useful for measuring photo ad engagement efficiency. ## Formula **Meta Cost per Photo View** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Photo Views**](/reference/metrics/advertising/meta-ads/photo-views/meta-photo-views) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | --------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising campaigns | | [**Meta Photo Views**](/reference/metrics/advertising/meta-ads/photo-views/meta-photo-views) | Number of times photos in your Meta ads were viewed | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Meta campaigns spent **\$1,200** and generated **15,000 photo views** last week. | Metric | Value | | ---------------------------- | ---------- | | Meta Spend | \$1,200 | | Meta Photo Views | 15,000 | | **Meta Cost per Photo View** | **\$0.08** | At \$0.08 per photo view, you're paying eight cents for each time a user views a photo in your ad creative. *** ## How It Works Meta Cost per Photo View divides your total ad spend by the number of photo views. This metric helps you understand how efficiently your budget drives engagement with photo-based creative. Lower values indicate more cost-effective photo ad performance. *** ## When to Use | Scenario | Action | | ---------------------------------- | ------------------------------------------------------------- | | Comparing photo vs. video creative | Use to benchmark photo engagement costs against video metrics | | Optimizing carousel ads | Track cost per photo view across carousel cards | | Budget allocation | Identify which campaigns deliver photo views most efficiently | | Creative testing | Compare photo engagement costs across different ad variations | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [Meta Photo Views](/reference/metrics/advertising/meta-ads/photo-views/meta-photo-views) | Denominator in this calculation | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Numerator in this calculation | | [Meta CPM](/reference/metrics/advertising/meta-ads/meta-cost-per-mille) | Alternative cost efficiency metric based on impressions | | [Meta CPC](/reference/metrics/advertising/meta-ads/meta-cost-per-click) | Cost efficiency metric based on clicks | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Photo Views: Track Visual Content Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/photo-views/meta-photo-views Measure how many times photos in your Meta ads were viewed in expanded or full-screen mode. High photo views indicate strong visual content engagement. The number of times photos in your Meta ads were viewed. Includes clicks to expand or zoom on images. ## Formula **Meta Photo Views** = **COUNT** ( Photo Views ) ### Formula Components | Metric | Definition | | --------------- | ----------------------------------------------------------------- | | **Photo Views** | Each tap or click to view a photo in expanded or full-screen mode | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your furniture brand ran a carousel ad featuring 6 product photos. Over the campaign, the ad generated **12,840 photo views**. | Photo Position | Views | Share | | --------------- | ----- | ----- | | Hero image | 5,136 | 40% | | Detail shot 1 | 3,210 | 25% | | Detail shot 2 | 2,568 | 20% | | Lifestyle image | 1,284 | 10% | | Other photos | 642 | 5% | *** ## How It Works Meta counts a photo view when a user actively engages with an image by tapping or clicking to view it in expanded or full-screen mode. This differs from impressions, which count when the ad appears on screen. Photo views indicate intentional engagement with your visual content. *** ## When to Use | Scenario | Action | | --------------------------- | --------------------------------------------------------------------- | | Evaluating visual creative | Compare photo views across ad variants to identify compelling imagery | | Product photography testing | Use photo view patterns to guide image selection | | Carousel optimization | Identify which carousel positions drive the most engagement | | Visual content strategy | High photo views signal strong visual storytelling | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [Meta Cost per Photo View](/reference/metrics/advertising/meta-ads/photo-views/meta-cost-per-photo-view) | How much you pay per expanded photo view | | [Meta Engagements](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) | Total social interactions including photo views | | [Meta Reactions](/reference/metrics/advertising/meta-ads/reactions/meta-reactions) | Emoji reactions to your visual content | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Post Comments Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/post-comments All Meta metrics for post-comments — volume, value, and cost in one place. Metrics for post comments across your Meta campaigns: * [Meta Post Comments: Track Ad Conversation Depth](/reference/metrics/advertising/meta-ads/post-comments/meta-post-comments) # Meta Post Comments: Track Ad Conversation Depth Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/post-comments/meta-post-comments Track comments on your Meta ad posts. Comments indicate high engagement and surface customer questions or feedback about your products. Comments left directly on your ad post. Indicates high engagement and potential customer questions or feedback. ## Formula **Meta Post Comments** = **COUNT** ( Post Comments ) ### Formula Components | Metric | Definition | | ----------------- | ------------------------------------------------------------------------------------------- | | **Post Comments** | Each comment posted directly on your ad post, including replies to existing comment threads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your fitness apparel brand ran a new product launch campaign, and your ads generated **1,847 post comments** over three weeks. | Ad Creative | Post Comments | Insight | | ----------------------- | ------------- | --------------------------------------- | | Workout Video Demo | 892 | Questions about sizing and fabric | | Customer Transformation | 623 | Mix of motivation and product inquiries | | Product Features | 332 | Pricing questions and color requests | *** ## How It Works Meta counts every comment posted directly on your ad post, including threaded replies within existing comment chains. Post comments accumulate over the ad's lifetime and are attributed based on when the comment was posted, not when the ad was first shown. *** ## When to Use | Scenario | Action | | --------------------------------- | ----------------------------------------------------------------------------------- | | Measuring creative resonance | Compare post comment volume across ads to identify content that sparks conversation | | Surfacing customer objections | Review comment content to identify common questions or product concerns | | Prioritizing community management | Higher comment counts require active monitoring and response | | Evaluating engagement depth | Post comments indicate deeper engagement than passive likes or reactions | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | | [Meta Cost per Comment](/reference/metrics/advertising/meta-ads/comments/meta-cost-per-comment) | Measures spend efficiency per comment received | | [Meta Engagements](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) | Parent metric that includes comments plus likes, shares, and saves | | [Meta Post Shares](/reference/metrics/advertising/meta-ads/post-shares/meta-post-shares) | Measures organic amplification through user shares | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Post Saves Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/post-saves Post saves and their cost — volume, value, and cost efficiency for saved Meta posts. Metrics for saved posts across your Meta campaigns: * [Post Saves](/reference/metrics/advertising/meta-ads/post-saves/meta-post-saves) — number of saves * [Cost per Post Save](/reference/metrics/advertising/meta-ads/post-saves/meta-cost-per-save) — cost efficiency # Meta Cost per Save: Efficiency of Ad Engagement Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/post-saves/meta-cost-per-save Track Meta Cost per Save to measure how efficiently your ad spend generates saves. Lower cost per save indicates stronger ad resonance with audiences. Meta Cost per Save measures the average amount you spend to generate one ad save on Meta platforms. ## Formula **Meta Cost per Save** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Saves**](/reference/metrics/advertising/meta-ads/saves/meta-saves) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | ------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising campaigns | | [**Meta Saves**](/reference/metrics/advertising/meta-ads/saves/meta-saves) | Number of times users saved your ad for later reference | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your brand spent **\$2,500** on Meta ads last week and generated **312 saves**. | Metric | Value | Calculation | | ---------------------- | ---------- | ------------------- | | Meta Spend | \$2,500 | Total ad budget | | Meta Saves | 312 | Users who saved ads | | **Meta Cost per Save** | **\$8.01** | \$2,500 ÷ 312 | *** ## How It Works Meta Cost per Save divides your total Meta ad spend by the number of saves your ads received. Saves indicate strong purchase intent—users bookmarking your ad to revisit later. A lower cost per save suggests your creative resonates well enough that users want to return to it. *** ## When to Use | Scenario | Action | | ---------------------------------- | ----------------------------------------------------------------------- | | Comparing ad creatives | Identify which visuals or messages drive saves most efficiently | | Evaluating consideration campaigns | Measure mid-funnel engagement where users show intent to return | | Optimizing for purchase intent | Saves often correlate with future conversions—track alongside ROAS | | Benchmarking engagement costs | Compare against other engagement metrics like cost per share or comment | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | | [Meta Saves](/reference/metrics/advertising/meta-ads/saves/meta-saves) | The volume metric this efficiency metric normalizes | | [Meta Cost per Engagement](/reference/metrics/advertising/meta-ads/engagements/meta-cost-per-engagement) | Broader engagement efficiency including all interaction types | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The numerator in this cost efficiency calculation | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Post Saves: Track Ad Saves & Purchase Intent Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/post-saves/meta-post-saves Track Meta post saves to measure purchase intent. Saves reveal high-value audiences who bookmark your ads to revisit later—a strong buying signal. Meta Post Saves counts how many times users saved your ad posts to view later. ## Formula **Meta Post Saves** = **COUNT** ( Post Saves ) ### Formula Components | Metric | Definition | | -------------- | ------------------------------------------------------------------- | | **Post Saves** | Individual save actions when users tap the bookmark icon on your ad | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your skincare brand ran a carousel ad featuring a 5-step routine. The ad received **847 saves** over two weeks. | Campaign | Saves | CTR | Purchases | | ---------------- | ----- | ---- | --------- | | Routine Carousel | 847 | 2.1% | 156 | | Single Product | 312 | 1.8% | 89 | | Video Tutorial | 623 | 1.4% | 134 | The carousel with the highest saves also drove the most purchases, confirming saves as a strong intent signal. *** ## How It Works When users save your ad, Meta records the action as a post engagement. Saves indicate the user found your content valuable enough to bookmark for later—often signaling purchase consideration. Unlike reactions or comments, saves require deliberate intent to revisit. *** ## When to Use | Scenario | Action | | ---------------------------- | --------------------------------------------------------- | | High saves but low purchases | Add urgency or clearer CTA to convert saved audiences | | Testing ad creative | Prioritize concepts with higher save rates | | Building retargeting pools | Target users who saved ads for follow-up campaigns | | Measuring content value | Compare saves across product education vs promotional ads | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------- | ------------------------------------ | | [Meta Cost per Save](/reference/metrics/advertising/meta-ads/post-saves/meta-cost-per-save) | Efficiency of driving saves | | [Meta Engagements](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) | Total interactions including saves | | [Meta Add to Carts](/reference/metrics/advertising/meta-ads/add-to-carts/meta-add-to-carts) | Downstream conversion from saved ads | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Post Shares Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/post-shares All Meta metrics for post-shares — volume, value, and cost in one place. Metrics for post shares across your Meta campaigns: * [Meta Post Shares: Track Ad Content Virality](/reference/metrics/advertising/meta-ads/post-shares/meta-post-shares) # Meta Post Shares: Track Ad Content Virality Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/post-shares/meta-post-shares Track Meta Post Shares to measure ad virality. See how often people share your content, analyze resonance, and optimize for organic reach. The number of times people shared your Meta ad posts to their feed, stories, or with friends. Shares extend organic reach. ## Formula **Meta Post Shares** = **COUNT** ( Post Shares ) ### Formula Components | Metric | Definition | | --------------- | ------------------------------------------------------------------------------------------- | | **Post Shares** | Each instance someone shares your ad post to their timeline, stories, or via direct message | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your summer collection campaign generated **847 shares** in June across three ad sets. | Ad Set | Shares | Share Rate | | ------------ | ------ | ---------- | | UGC Video | 412 | 0.8% | | Carousel | 298 | 0.5% | | Static Image | 137 | 0.2% | *** ## How It Works Meta counts a share whenever someone distributes your ad content through any sharing mechanism—posting to their feed, sharing to stories, or sending to friends via Messenger. High shares indicate content that resonates strongly enough for people to endorse with their personal network. *** ## When to Use | Scenario | Action | | ---------------------------- | --------------------------------------------------------------------- | | Evaluating content resonance | Compare share rates across creative formats to identify viral content | | Building brand awareness | Prioritize ad sets with high shares for organic amplification | | Measuring social proof | Track shares alongside reactions and comments for engagement health | | Optimizing creative strategy | Double down on themes and formats that drive sharing behavior | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------- | | [Meta Cost per Share](/reference/metrics/advertising/meta-ads/shares/meta-cost-per-share) | Efficiency of driving shares | | [Meta Reactions](/reference/metrics/advertising/meta-ads/reactions/meta-reactions) | Emotional engagement complement | | [Meta Post Comments](/reference/metrics/advertising/meta-ads/post-comments/meta-post-comments) | Conversation-driving engagement | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Purchases Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/purchases All Meta metrics for purchases — volume, value, and cost in one place. Metrics for purchases across your Meta campaigns: * [Meta Cost per Purchase: Track Ad Acquisition Cost](/reference/metrics/advertising/meta-ads/purchases/meta-cost-per-purchase) * [Meta Purchases: Attributed Conversion Count](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) * [Meta Purchases Value: Attributed Revenue](/reference/metrics/advertising/meta-ads/purchases/meta-purchases-value) # Meta Cost per Purchase: Track Ad Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/purchases/meta-cost-per-purchase Track your Meta Cost per Purchase to measure advertising efficiency. See how much you spend on average for each purchase attributed to your Meta campaigns. Meta Cost per Purchase measures how much you spend on average for each purchase attributed to your Meta ads. ## Formula **Meta Cost per Purchase** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Purchases**](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ------------------------------------------ | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising | | [**Meta Purchases**](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Number of purchases attributed to Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your skincare brand spent **\$2,450** on Meta ads in March and drove **98 purchases**. | Metric | Value | Insight | | --------------------- | ----------- | -------------------------- | | Ad Spend | \$2,450 | Total Meta budget consumed | | Purchases | 98 | Orders attributed to Meta | | **Cost per Purchase** | **\$25.00** | Average acquisition cost | *** ## How It Works Meta tracks purchases using pixel events and Conversions API data. When a user who saw or clicked your ad completes a purchase within the attribution window, Meta credits that sale to the campaign. This metric divides your total spend by those attributed purchases. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------- | | Compare campaign efficiency | Lower cost per purchase = more efficient spend | | Set target acquisition costs | Benchmark against your average order value | | Identify underperforming ads | Pause ads with cost per purchase above target | | Scale profitable campaigns | Increase budget on ads with low acquisition costs | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ----------------------------------------- | | [Meta Purchases](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | The denominator in this calculation | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The numerator in this calculation | | [Meta CPA](/reference/metrics/advertising/meta-ads/meta-cost-per-acquisition) | Alternative name for cost per acquisition | # Meta Purchases: Attributed Conversion Count Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/purchases/meta-purchases Track how many completed purchases Meta attributes to your ads via pixel or Conversions API to measure campaign effectiveness. Meta Purchases counts how many completed purchases Meta attributes to your ads, based on pixel or Conversions API data. ## Formula **Meta Purchases** = **COUNT** ( purchase events ) Each purchase event attributed to your Meta ads is counted once, regardless of order value. ### Formula Components | Metric | Definition | | ------------------- | -------------------------------------------------------------------- | | **purchase events** | Purchase conversion events reported by Meta Pixel or Conversions API | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your Meta campaigns drove **847 purchases** in March across three ad sets. | Ad Set | Purchases | Spend | CPA | | ----------- | --------- | ------- | ------- | | Retargeting | 412 | \$2,060 | \$5.00 | | Lookalike | 298 | \$2,682 | \$9.00 | | Prospecting | 137 | \$2,740 | \$20.00 | *** ## How It Works Meta counts a purchase when a visitor completes checkout after interacting with your ad within the attribution window. The purchase event is captured via the Meta Pixel on your site or sent through the Conversions API from your server. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------------- | | Evaluating campaign performance | Compare purchase counts across campaigns to identify top performers | | Optimizing ad spend allocation | Shift budget toward ad sets generating more purchases | | Assessing funnel health | Track purchase volume alongside add-to-cart and checkout metrics | | Benchmarking seasonal trends | Compare monthly purchase counts to identify growth patterns | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ---------------------------------- | | [Meta Purchases Value](/reference/metrics/advertising/meta-ads/purchases/meta-purchases-value) | Total revenue from these purchases | | [Meta CPA](/reference/metrics/advertising/meta-ads/meta-cost-per-acquisition) | Cost per purchase conversion | | [Meta ROAS](/reference/metrics/advertising/meta-ads/meta-return-on-ad-spend) | Return on ad spend from purchases | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Purchases Value: Attributed Revenue Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/purchases/meta-purchases-value Track total revenue Meta attributes to your ads. Calculate ROAS, evaluate campaign profitability, and optimize ad spend allocation. Meta Purchases Value is the total revenue from purchases that Meta attributes to your ads. ## Formula **Meta Purchases Value** = **SUM** ( purchase values ) Each purchase order total attributed to your Meta ads is summed across the selected period. ### Formula Components | Metric | Definition | | ------------------- | --------------------------------------------------------------------------- | | **purchase values** | Order totals from purchase events reported by Meta Pixel or Conversions API | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your Meta campaigns generated **\$42,800** in attributed revenue in March across three campaign types. | Campaign | Revenue | Purchases | Avg Order | | ----------- | -------- | --------- | --------- | | Retargeting | \$18,540 | 412 | \$45.00 | | Lookalike | \$16,072 | 298 | \$53.93 | | Prospecting | \$8,188 | 137 | \$59.77 | *** ## How It Works Meta captures the order total each time a purchase event fires after someone interacts with your ad. Revenue is attributed based on Meta's attribution window (default 7-day click, 1-day view). This value forms the numerator when calculating ROAS. *** ## When to Use | Scenario | Action | | ------------------------ | ----------------------------------------------------- | | Measuring campaign ROI | Divide by spend to calculate ROAS | | Budget allocation | Shift spend toward campaigns driving the most revenue | | Evaluating profitability | Compare revenue against ad spend and product margins | | Seasonal planning | Track revenue trends to forecast peak period budgets | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | -------------------------------------------------- | | [Meta Purchases](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Count of purchases (this metric sums their values) | | [Meta ROAS](/reference/metrics/advertising/meta-ads/meta-return-on-ad-spend) | Purchases Value ÷ Ad Spend | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The denominator for ROAS calculations | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Reactions Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/reactions All Meta metrics for reactions — volume, value, and cost in one place. Metrics for reactions across your Meta campaigns: * [Meta Reactions: Measure Emotional Engagement on Your Ads](/reference/metrics/advertising/meta-ads/reactions/meta-reactions) # Meta Reactions: Measure Emotional Engagement on Your Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/reactions/meta-reactions Track Meta Reactions to measure emotional engagement on your ads. Monitor emoji responses like love, wow, care, and haha to evaluate creative resonance. Meta Reactions counts all emoji responses on your Meta ads—likes, loves, wows, cares, hahas, and more. ## Formula **Meta Reactions** = **COUNT** ( Reactions ) ### Formula Components | Metric | Definition | | ------------- | -------------------------------------------------------------------------------------------------- | | **Reactions** | Emoji responses recorded by Meta on your ads including like, love, care, haha, wow, sad, and angry | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your holiday campaign video generated **12,850 reactions** across 180,000 impressions in December. | Campaign | Reactions | Impressions | Reaction Rate | | ------------------ | --------- | ----------- | ------------- | | Holiday Gift Guide | 12,850 | 180,000 | 7.1% | | Winter Clearance | 4,320 | 95,000 | 4.5% | | New Year Sale | 6,740 | 120,000 | 5.6% | *** ## How It Works Meta tracks every emoji reaction on your ad—including like, love, care, haha, wow, sad, and angry. Reactions provide a quick signal of emotional resonance beyond basic engagement. A high reaction count suggests your creative strikes an emotional chord with viewers. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------------------ | | Testing creative concepts | Compare reaction counts to identify emotionally resonant ads | | Measuring brand sentiment | Track reaction trends to gauge audience emotional response | | Optimizing awareness campaigns | Prioritize ads with high reactions for organic amplification | | Identifying viral potential | High reactions relative to reach signal share-worthy content | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | --------------------------------------------------- | | Meta Cost per Reaction | How much you pay per emoji reaction | | [Meta Likes](/reference/metrics/advertising/meta-ads/likes/meta-likes) | Thumbs-up reactions, a subset of total reactions | | [Meta Engagements](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) | Broader count including comments, shares, and saves | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Saves Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/saves All Meta metrics for saves — volume, value, and cost in one place. Metrics for saves across your Meta campaigns: * [Meta Saves: Measure Bookmark Interest](/reference/metrics/advertising/meta-ads/saves/meta-saves) # Meta Saves: Measure Bookmark Interest Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/saves/meta-saves Track how many people saved your Meta ads for later viewing. Saves indicate strong product interest and future purchase intent. Measures how many times people bookmarked your Meta ad to revisit later. ## Formula **Meta Saves** = **COUNT** ( Saves ) ### Formula Components | Metric | Definition | | --------- | ----------------------------------------------------------- | | **Saves** | Each tap of the bookmark icon on your ad counts as one save | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your new product launch campaign generated **523 saves** on Instagram and Facebook last week. | Ad Creative | Saves | Est. Return Rate | | ------------------------- | ----- | ---------------- | | Product lifestyle video | 218 | \~12% | | Limited-time offer static | 189 | \~8% | | Product feature carousel | 116 | \~6% | The lifestyle video earned the most saves, suggesting viewers plan to return and purchase later. Consider retargeting users who saved but haven't converted. *** ## How It Works When someone saves your ad, they're bookmarking it for future reference—often because they're interested but not ready to buy. Meta tracks saves across Facebook and Instagram, including posts saved to Collections. High save counts indicate strong product interest and potential future conversions, making savers ideal candidates for retargeting campaigns. *** ## When to Use | Scenario | Action | | --------------------------------- | ----------------------------------------------------- | | Identifying high-intent audiences | Build retargeting segments from users who saved | | Evaluating creative appeal | Compare save counts to find ads with lasting interest | | Measuring consideration intent | High saves signal people researching before buying | | Optimizing for future conversions | Prioritize creatives that drive saves for remarketing | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [Meta Cost per Save](/reference/metrics/advertising/meta-ads/post-saves/meta-cost-per-save) | How much you pay per save action | | [Meta Engagements](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) | Total interactions including saves, likes, comments, shares | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Schedule Events Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/schedule-events All Meta metrics for schedule-events — volume, value, and cost in one place. Metrics for schedule events across your Meta campaigns: * [Meta Cost per Schedule: Appointment Booking Efficiency](/reference/metrics/advertising/meta-ads/schedule-events/meta-cost-per-schedule) * [Meta Schedule Events: Appointment Bookings from Ads](/reference/metrics/advertising/meta-ads/schedule-events/meta-schedule-events) # Meta Cost per Schedule: Appointment Booking Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/schedule-events/meta-cost-per-schedule Calculate your Meta Ads cost per schedule event. Track appointment booking efficiency for service businesses and optimize your marketing spend effectively. Meta Cost per Schedule measures the average spend to generate each appointment booking from your Meta ads. ## Formula **Meta Cost per Schedule** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Schedule Events**](/reference/metrics/advertising/meta-ads/schedule-events/meta-schedule-events) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising | | [**Meta Schedule Events**](/reference/metrics/advertising/meta-ads/schedule-events/meta-schedule-events) | Number of appointment bookings attributed to Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your wellness spa spent **\$3,600** on Meta ads and generated **120** appointment bookings. | Campaign | Spend | Bookings | Cost per Schedule | | ---------------- | ------- | -------- | ----------------- | | Massage Promo | \$1,800 | 60 | \$30.00 | | Facial Package | \$1,200 | 45 | \$26.67 | | New Client Offer | \$600 | 15 | \$40.00 | *** ## How It Works Cost per Schedule divides your total Meta ad spend by the number of schedule events tracked via the Meta Pixel or Conversions API. Schedule events fire when someone books an appointment, reserves a time slot, or completes a scheduling action on your site. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------- | | Evaluating booking efficiency | Compare cost per schedule across campaigns | | Budget optimization | Shift spend to campaigns with lower booking costs | | Benchmarking service business ads | Track cost per schedule trends over time | | Comparing acquisition channels | Analyze schedule costs vs. contact costs | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------- | ------------------------------------------- | | [Meta Schedule Events](/reference/metrics/advertising/meta-ads/schedule-events/meta-schedule-events) | The denominator in this calculation | | [Meta Cost per Contact](/reference/metrics/advertising/meta-ads/contact-events/meta-cost-per-contact) | Similar metric for contact form submissions | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The numerator in this calculation | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Schedule Events: Appointment Bookings from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/schedule-events/meta-schedule-events Track how many schedule events your Meta ads generate. Measure appointment bookings and service scheduling for service-based businesses. Meta Schedule Events counts how many people booked appointments or scheduled services after engaging with your Meta ads. ## Formula **Meta Schedule Events** = **COUNT** ( Schedule Events ) | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your med spa generated **186 appointment bookings** in February across three service lines. | Service | Bookings | Spend | Cost per Booking | | ------------------- | -------- | ------- | ---------------- | | Botox Consultations | 82 | \$1,640 | \$20.00 | | Facial Treatments | 64 | \$1,280 | \$20.00 | | Laser Services | 40 | \$1,080 | \$27.00 | *** ## How It Works Meta counts a schedule event when someone books an appointment or schedules a service after interacting with your ad within the attribution window. Schedule events are captured via the Meta Pixel or Conversions API when you fire the Schedule standard event on your booking confirmation page. *** ## When to Use | Scenario | Action | | ------------------------------- | --------------------------------------------------- | | Measuring service bookings | Track schedules as your primary conversion metric | | Evaluating campaign performance | Compare booking volume across ad sets and creatives | | Optimizing for appointments | Use schedule events as your conversion objective | | Calculating booking costs | Pair with cost per schedule to measure efficiency | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | ------------------------------------- | | [Meta Cost per Schedule](/reference/metrics/advertising/meta-ads/schedule-events/meta-cost-per-schedule) | Cost to acquire each booking | | [Meta Contact Events](/reference/metrics/advertising/meta-ads/contact-events/meta-contact-events) | Alternative lead metric for inquiries | | [Meta Leads](/reference/metrics/advertising/meta-ads/leads/meta-leads) | Form submission lead metric | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Search Events Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/search-events All Meta metrics for search-events — volume, value, and cost in one place. Metrics for search events across your Meta campaigns: * [Meta Cost per Search: Search Event Efficiency](/reference/metrics/advertising/meta-ads/search-events/meta-cost-per-search) * [Meta Search Events: On-Site Searches from Ads](/reference/metrics/advertising/meta-ads/search-events/meta-search-events) # Meta Cost per Search: Search Event Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/search-events/meta-cost-per-search Calculate the cost to generate each on-site search from Meta ads. Optimize your product discovery campaigns for efficient engagement. Meta Cost per Search measures the average advertising spend required to generate one on-site search event through your Meta campaigns. ## Formula **Meta Cost per Search** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Search Events**](/reference/metrics/advertising/meta-ads/search-events/meta-search-events) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising campaigns | | [**Meta Search Events**](/reference/metrics/advertising/meta-ads/search-events/meta-search-events) | Number of on-site searches attributed to Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your product discovery campaigns spent **\$8,500** and generated **12,847 searches**, resulting in a cost per search of **\$0.66**. | Campaign | Spend | Searches | Cost per Search | | ------------ | ------- | -------- | --------------- | | New Arrivals | \$3,200 | 5,312 | \$0.60 | | Sale Items | \$2,800 | 4,285 | \$0.65 | | Gift Guide | \$2,500 | 3,250 | \$0.77 | *** ## How It Works Cost per Search divides your total Meta advertising spend by the number of on-site search events generated. Lower values indicate campaigns are efficiently driving product discovery behavior at a minimal cost. *** ## When to Use | Scenario | Action | | ------------------------------ | --------------------------------------------------- | | Evaluating discovery campaigns | Assess efficiency of driving product exploration | | Budget optimization | Allocate spend to campaigns with lower search costs | | Audience analysis | Identify segments that engage more actively | | Funnel efficiency | Compare cost per search against cost per purchase | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Meta Search Events](/reference/metrics/advertising/meta-ads/search-events/meta-search-events) | Denominator showing total searches generated | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Numerator showing total advertising investment | | [Meta CPC](/reference/metrics/advertising/meta-ads/meta-cost-per-click) | Cost per click for broader engagement comparison | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Search Events: On-Site Searches from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/search-events/meta-search-events Track on-site search events driven by Meta ads. Measure how your Facebook and Instagram campaigns generate product discovery and search engagement. Meta Search Events counts the total number of on-site search actions attributed to your Meta advertising campaigns. ## Formula **Meta Search Events** = **COUNT** ( search events ) ### Formula Components | Metric | Definition | | ------------- | --------------------------------------------------------------- | | search events | On-site search actions tracked by Meta Pixel or Conversions API | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your product discovery campaign generated **12,847 search events** last month as users explored your catalog after engaging with Meta ads. | Campaign | Search Events | Searches per Session | | ------------ | ------------- | -------------------- | | New Arrivals | 5,312 | 2.4 | | Sale Items | 4,285 | 1.8 | | Gift Guide | 3,250 | 2.1 | *** ## How It Works Meta tracks search events when users perform searches on your website after clicking or viewing your ads. These events are captured through Meta Pixel or Conversions API and indicate high purchase intent as users actively look for specific products. *** ## When to Use | Scenario | Action | | ------------------------------------------ | ---------------------------------------------------- | | Measuring discovery campaign effectiveness | Track how well ads drive product exploration | | Identifying high-intent audiences | Analyze which ad sets generate the most searches | | Optimizing for bottom-funnel behavior | Use search events as a signal for purchase intent | | Improving site experience | Understand what users search for after ad engagement | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [Meta Cost per Search](/reference/metrics/advertising/meta-ads/search-events/meta-cost-per-search) | Efficiency metric showing cost to generate each search | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Total ad spend used to calculate search costs | | [Meta Add to Cart Events](/reference/metrics/advertising/meta-ads/add-to-carts/meta-add-to-carts) | Next funnel step after product discovery | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Shares Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/shares All Meta metrics for shares — volume, value, and cost in one place. Metrics for shares across your Meta campaigns: * [Meta Cost per Share: Ad Spend per Share Efficiency](/reference/metrics/advertising/meta-ads/shares/meta-cost-per-share) * [Meta Shares: Track Ad Virality](/reference/metrics/advertising/meta-ads/shares/meta-shares) # Meta Cost per Share: Ad Spend per Share Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/shares/meta-cost-per-share Track cost per share for Meta ads. A lower cost-per-share signals strong word-of-mouth potential and organic reach amplification. Average spend per ad share—a lower cost-per-share can signal strong word-of-mouth potential. ## Formula **Meta Cost per Share** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Shares**](/reference/metrics/advertising/meta-ads/shares/meta-shares) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------- | ------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising campaigns | | [**Meta Shares**](/reference/metrics/advertising/meta-ads/shares/meta-shares) | Number of times users shared your Meta ad content | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your brand awareness campaign spent **\$4,000** and generated **800 shares** last month. | Metric | Value | | ----------------------- | ---------- | | Meta Spend | \$4,000 | | Meta Shares | 800 | | **Meta Cost per Share** | **\$5.00** | At \$5.00 per share, each share costs five dollars—but that share exposes your ad to the sharer's entire network at no additional cost. *** ## How It Works Meta Cost per Share divides your total ad spend by the number of shares. Shares amplify your reach organically—each share exposes your ad to the sharer's network without additional spend. Lower cost per share indicates content that resonates enough for users to publicly endorse and redistribute. *** ## When to Use | Scenario | Action | | ------------------------------------------ | ------------------------------------------------------------------------------------------ | | Identifying viral-worthy content | Compare cost per share across creatives to find what audiences want to redistribute | | Evaluating organic amplification potential | Lower cost indicates stronger word-of-mouth efficiency per dollar spent | | Optimizing brand awareness campaigns | Prioritize ad sets with lower cost per share for earned reach | | Benchmarking shareability | Compare to cost per other engagement types to understand sharing versus passive engagement | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | | [Meta Shares](/reference/metrics/advertising/meta-ads/shares/meta-shares) | Denominator in this calculation | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Numerator in this calculation | | [Meta Cost per Engagement](/reference/metrics/advertising/meta-ads/engagements/meta-cost-per-engagement) | Broader engagement efficiency including all interaction types | | [Meta Engagement Rate](/reference/metrics/advertising/meta-ads/meta-engagement-rate) | Shows engagement as percentage of reach, not cost efficiency | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Shares: Track Ad Virality Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/shares/meta-shares Track how many times people shared your Meta ads to their own feed or stories. Shares extend organic reach at no extra cost. Measures how many times people shared your Meta ad to their own feed or stories. ## Formula **Meta Shares** = **COUNT** ( Shares ) ### Formula Components | Metric | Definition | | ---------- | ------------------------------------------------------------------------------------------ | | **Shares** | Each time a user taps "Share" and distributes your ad to their network counts as one share | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Sum | *** ## Example Your spring sale campaign generated **847 shares** across Facebook and Instagram last week. | Ad Creative | Shares | Organic Impressions | | ------------------- | ------ | ------------------- | | Carousel with UGC | 412 | \~8,200 | | Video testimonial | 289 | \~5,800 | | Static product shot | 146 | \~2,900 | The UGC carousel earned the most shares, extending reach to an estimated 8,200 additional viewers without increasing ad spend. *** ## How It Works When someone shares your ad, their followers see it organically—without you paying for that impression. Meta tracks all share actions across Facebook feed, Stories, Messenger, and Instagram DMs. Shares indicate strong resonance and can amplify campaign reach beyond your paid audience. *** ## When to Use | Scenario | Action | | ---------------------------- | -------------------------------------------------------------- | | Evaluating creative virality | Compare share counts across ad sets to identify what resonates | | Measuring brand awareness | High shares signal content worth spreading | | Optimizing for organic reach | Prioritize creatives that earn the most shares | | Reducing cost per impression | More shares means more free exposure | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [Meta Cost per Share](/reference/metrics/advertising/meta-ads/shares/meta-cost-per-share) | How much you pay per share action | | [Meta Engagements](/reference/metrics/advertising/meta-ads/engagements/meta-engagements) | Total interactions including shares, likes, comments | [See all Meta Engagement metrics →](/reference/metrics/advertising/meta-ads) # Meta Start Trials Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/start-trials All Meta metrics for start-trials — volume, value, and cost in one place. Metrics for start trials across your Meta campaigns: * [Meta Cost per Start Trial: Trial Acquisition Efficiency](/reference/metrics/advertising/meta-ads/start-trials/meta-cost-per-start-trial) * [Meta Start Trials: Free Trial Sign-ups from Ads](/reference/metrics/advertising/meta-ads/start-trials/meta-start-trials) # Meta Cost per Start Trial: Trial Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/start-trials/meta-cost-per-start-trial Calculate the average cost to acquire a trial start from Meta ads. Measure trial CPA efficiency and optimize subscription acquisition campaigns. The average spend required to generate one free trial start from your Meta ads—a key efficiency metric for subscription-based businesses. ## Formula **Meta Cost per Start Trial** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Start Trials**](/reference/metrics/advertising/meta-ads/start-trials/meta-start-trials) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising campaigns | | [**Meta Start Trials**](/reference/metrics/advertising/meta-ads/start-trials/meta-start-trials) | Count of free trial initiations attributed to your Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your SaaS campaign spent **\$3,200** on Meta ads and generated **160 trial starts** this month: | Campaign | Spend | Trials | Cost per Trial | | ----------- | ------- | ------ | -------------- | | Prospecting | \$2,000 | 80 | \$25.00 | | Retargeting | \$800 | 60 | \$13.33 | | Lookalike | \$400 | 20 | \$20.00 | **Cost per Start Trial:** \$3,200 ÷ 160 = **\$20.00** *** ## How It Works Meta attributes trial starts using Pixel or Conversions API data. The cost is calculated by dividing total spend by trial count within your selected date range and attribution window. Multiply this by your trial-to-paid conversion rate to estimate true customer acquisition cost. *** ## When to Use | Scenario | Action | | ---------------------------- | --------------------------------------------------- | | Evaluating trial efficiency | Compare cost per trial across campaigns and ad sets | | Forecasting acquisition cost | Multiply by trial-to-paid rate to estimate full CPA | | Budget allocation | Shift spend toward lower cost-per-trial campaigns | | Testing creative performance | Identify which ads drive the most affordable trials | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [Meta Start Trials](/reference/metrics/advertising/meta-ads/start-trials/meta-start-trials) | The denominator—trial volume generated by your ads | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | The numerator—total ad investment | | [Meta Subscriptions](/reference/metrics/advertising/meta-ads/subscriptions/meta-subscriptions) | Completed subscriptions after trial conversion | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Start Trials: Free Trial Sign-ups from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/start-trials/meta-start-trials Track free trial sign-ups from Meta ads. Measure subscription intent and optimize campaigns for trial acquisition performance. Counts how many people started a free trial after engaging with your Meta ad—an early indicator of subscription conversion potential. ## Formula **Meta Start Trials** = **COUNT** ( trial\_start events ) ### Formula Components | Metric | Definition | | ----------------------- | ------------------------------------------------------------------------------------ | | **trial\_start events** | Each free trial initiation attributed to your Meta ads within the attribution window | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your SaaS company ran a prospecting campaign in March, generating **847 trial starts** across ad sets. | Ad Set | Trials Started | Cost per Trial | | --------------------------- | -------------- | -------------- | | Lookalike - High Value | 312 | \$8.42 | | Interest - Small Business | 285 | \$11.67 | | Retargeting - Site Visitors | 250 | \$5.23 | *** ## How It Works Meta fires a `StartTrial` event when a user initiates a free trial on your site or app. This event is captured via the Meta Pixel or Conversions API and attributed to the ad that influenced the conversion within your attribution window. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------------------------------ | | Subscription model launch | Track trial volume as your primary top-of-funnel metric | | Campaign optimization | Compare trial rates across audiences to find high-intent segments | | Budget allocation | Shift spend toward ad sets with lower cost per trial | | Funnel analysis | Pair with subscriptions to calculate trial-to-paid conversion rate | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [Meta Cost per Start Trial](/reference/metrics/advertising/meta-ads/start-trials/meta-cost-per-start-trial) | Average spend required to generate one trial start | | [Meta Subscriptions](/reference/metrics/advertising/meta-ads/subscriptions/meta-subscriptions) | Completed subscriptions—tracks trial-to-paid conversion | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Total ad spend used to calculate cost per trial | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Submit Application Events Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/submit-application-events All Meta metrics for submit-application-events — volume, value, and cost in one place. Metrics for submit application events across your Meta campaigns: * [Meta Cost per Submit Application: Application Acquisition Efficiency](/reference/metrics/advertising/meta-ads/submit-application-events/meta-cost-per-submit-application) * [Meta Submit Application: Application Submissions from Ads](/reference/metrics/advertising/meta-ads/submit-application-events/meta-submit-application-events) # Meta Cost per Submit Application: Application Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/submit-application-events/meta-cost-per-submit-application Calculate the cost to acquire each application submission from Meta ads. Optimize your recruitment and lead generation campaigns for efficiency. Meta Cost per Submit Application measures the average advertising spend required to generate one application submission through your Meta campaigns. ## Formula **Meta Cost per Submit Application** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Submit Application Events**](/reference/metrics/advertising/meta-ads/submit-application-events/meta-submit-application-events) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta advertising campaigns | | [**Meta Submit Application Events**](/reference/metrics/advertising/meta-ads/submit-application-events/meta-submit-application-events) | Number of application submissions attributed to Meta ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your recruitment campaigns spent **\$18,500** and generated **847 applications**, resulting in a cost per submit application of **\$21.84**. | Campaign | Spend | Applications | Cost per Application | | ------------------ | ------- | ------------ | -------------------- | | Software Engineers | \$5,750 | 312 | \$18.43 | | Marketing Roles | \$6,312 | 285 | \$22.15 | | Sales Positions | \$6,438 | 250 | \$25.75 | *** ## How It Works Cost per Submit Application divides your total Meta advertising spend by the number of application submissions received. Lower values indicate more efficient campaigns where you're acquiring applicants at a lower cost. *** ## When to Use | Scenario | Action | | --------------------------- | -------------------------------------------------------------- | | Budget allocation decisions | Shift spend toward campaigns with lower cost per application | | Campaign optimization | Test creative and audience changes to reduce acquisition costs | | Benchmarking performance | Compare efficiency across job categories or time periods | | ROI analysis | Evaluate if application costs justify the value of hires | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [Meta Submit Application Events](/reference/metrics/advertising/meta-ads/submit-application-events/meta-submit-application-events) | Denominator showing total applications received | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Numerator showing total advertising investment | | [Meta CPA](/reference/metrics/advertising/meta-ads/meta-cost-per-acquisition) | General cost per action for comparison | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Submit Application: Application Submissions from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/submit-application-events/meta-submit-application-events Track application submissions driven by Meta ads. Measure how effectively your Facebook and Instagram campaigns generate job, membership, or form submissions. Meta Submit Application Events counts the total number of application submissions attributed to your Meta advertising campaigns. ## Formula **Meta Submit Application Events** = **COUNT** ( submit\_application events ) ### Formula Components | Metric | Definition | | -------------------------- | --------------------------------------------------------------------- | | submit\_application events | Application form completions tracked by Meta Pixel or Conversions API | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your job recruitment campaign generated **847 application submissions** last month across Facebook and Instagram placements. | Campaign | Submit Applications | Cost per Application | | ------------------ | ------------------- | -------------------- | | Software Engineers | 312 | \$18.42 | | Marketing Roles | 285 | \$22.15 | | Sales Positions | 250 | \$25.80 | *** ## How It Works Meta tracks submit\_application events when users complete application forms on your website after clicking or viewing your ads. These events are captured through Meta Pixel or Conversions API and attributed based on your configured attribution window. *** ## When to Use | Scenario | Action | | -------------------------------------------- | ------------------------------------------------------------ | | Measuring recruitment campaign effectiveness | Compare application volume across job categories and ad sets | | Optimizing for qualified applicants | Analyze which audiences drive the most submissions | | Calculating application acquisition costs | Combine with spend data to find cost per submission | | Comparing application channels | Benchmark Meta against other recruitment sources | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | [Meta Cost per Submit Application](/reference/metrics/advertising/meta-ads/submit-application-events/meta-cost-per-submit-application) | Efficiency metric showing cost to acquire each application | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Total ad spend used to calculate application costs | | Meta Conversions | Total conversions including applications | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Subscribes Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/subscribes All Meta metrics for subscribes — volume, value, and cost in one place. Metrics for subscribes across your Meta campaigns: * [Meta Cost per Subscribe: Subscription Acquisition Efficiency](/reference/metrics/advertising/meta-ads/subscribes/meta-cost-per-subscribe) * [Meta Subscribes: Subscription Sign-ups from Ads](/reference/metrics/advertising/meta-ads/subscribes/meta-subscribes) # Meta Cost per Subscribe: Subscription Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/subscribes/meta-cost-per-subscribe Track your Meta Cost per Subscribe to measure how efficiently your ads acquire new subscribers. Optimize acquisition costs for subscription-based businesses. Meta Cost per Subscribe measures the average spend to acquire each new subscriber from your Meta ads. ## Formula **Meta Cost per Subscribe** = [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) ÷ [**Meta Subscribes**](/reference/metrics/advertising/meta-ads/subscribes/meta-subscribes) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------- | ------------------------------------------------- | | [**Meta Spend**](/reference/metrics/advertising/meta-ads/meta-spend) | Total amount spent on Meta ads | | [**Meta Subscribes**](/reference/metrics/advertising/meta-ads/subscribes/meta-subscribes) | Number of subscription sign-ups attributed to ads | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your subscription box company spent **\$5,400** on Meta ads this month and acquired **180 new subscribers**. | Metric | Value | | --------------------------- | ----------- | | Meta Spend | \$5,400 | | Meta Subscribes | 180 | | **Meta Cost per Subscribe** | **\$30.00** | *** ## How It Works Meta Cost per Subscribe divides your total Meta ad spend by the number of subscription events tracked via the Meta Pixel or Conversions API. A subscribe event fires when someone signs up for a subscription after engaging with your ad. This metric is critical for subscription-based businesses to ensure acquisition costs remain below subscriber lifetime value. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------ | | Evaluating subscriber acquisition | Compare cost per subscribe across campaigns | | Unit economics analysis | Ensure cost stays below subscriber lifetime value | | Budget allocation | Shift spend toward ads with lower subscriber costs | | Creative testing | Identify which messaging drives cheapest subscriptions | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | --------------------------------------------------- | | [Meta Subscribes](/reference/metrics/advertising/meta-ads/subscribes/meta-subscribes) | Denominator—subscription events used in calculation | | [Meta Spend](/reference/metrics/advertising/meta-ads/meta-spend) | Numerator—total spend divided by subscribes | | [Meta Cost per Lead](/reference/metrics/advertising/meta-ads/leads/meta-cost-per-lead) | Top-of-funnel cost metric for lead generation | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Subscribes: Subscription Sign-ups from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/subscribes/meta-subscribes Track subscription sign-ups attributed to your Meta ads. Measure how effectively your campaigns drive recurring revenue for SaaS and subscription businesses. Meta Subscribes counts how many subscription sign-ups your Meta ads generated during the selected period. ## Formula **Meta Subscribes** = **COUNT** ( Subscribe Events ) Each subscription event triggered by Meta ad engagement is counted once. | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your SaaS product acquired **127 new subscribers** from Meta campaigns this quarter. | Campaign | Subscribes | Cost per Subscribe | | ------------------ | ---------- | ------------------ | | Retargeting | 52 | \$18.50 | | Lookalike Audience | 45 | \$24.20 | | Interest Targeting | 30 | \$31.80 | *** ## How It Works Meta tracks subscription events when users complete a subscribe action after engaging with your ad. This requires the Meta Pixel or Conversions API to fire a Subscribe event. Attribution follows your configured window (typically 7-day click, 1-day view). *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------------ | | Evaluating subscription campaigns | Compare subscribe volume across ad sets | | Calculating acquisition cost | Divide Meta Spend by Meta Subscribes for cost per subscriber | | Optimizing for recurring revenue | Identify which audiences convert to subscribers | | Forecasting LTV | Combine with subscription value for revenue projections | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------- | --------------------------------------------- | | [Meta Cost per Subscribe](/reference/metrics/advertising/meta-ads/subscribes/meta-cost-per-subscribe) | Meta Spend ÷ Meta Subscribes | | [Meta Purchases](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | One-time purchases vs recurring subscriptions | | [Meta Start Trials](/reference/metrics/advertising/meta-ads/start-trials/meta-start-trials) | Trial conversions that may become subscribers | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta Subscriptions Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/subscriptions All Meta metrics for subscriptions — volume, value, and cost in one place. Metrics for subscriptions across your Meta campaigns: * [Meta Subscriptions: Subscription Sign-ups from Ads](/reference/metrics/advertising/meta-ads/subscriptions/meta-subscriptions) # Meta Subscriptions: Subscription Sign-ups from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/subscriptions/meta-subscriptions Track how many subscription sign-ups your Meta ads generate to measure recurring revenue acquisition from paid social campaigns. Meta Subscriptions counts how many people signed up for a subscription after engaging with your Meta ad. ## Formula **Meta Subscriptions** = **COUNT** ( Subscription Events ) Each subscription sign-up attributed to your Meta ads is counted once. | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your subscription box brand drove **428 new subscribers** in March across three campaign objectives. | Campaign | Subscriptions | Spend | Cost/Sub | | ----------- | ------------- | ------- | -------- | | Prospecting | 186 | \$5,580 | \$30.00 | | Retargeting | 157 | \$3,140 | \$20.00 | | Lookalike | 85 | \$2,975 | \$35.00 | *** ## How It Works Meta counts a subscription when someone completes a subscription sign-up event after interacting with your ad within the attribution window. Subscription events are captured via the Meta Pixel or through the Conversions API when you fire the Subscribe standard event. *** ## When to Use | Scenario | Action | | -------------------------------------- | ------------------------------------------------------------------- | | Measuring subscription campaign ROI | Compare subscription volume against spend to evaluate profitability | | Optimizing for recurring revenue | Prioritize campaigns driving the most subscription sign-ups | | Tracking subscriber acquisition funnel | Monitor subscription conversions as a key business outcome | | Comparing acquisition channels | Benchmark Meta subscription performance against other paid channels | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------- | --------------------------------------------------- | | [Meta Cost per Subscribe](/reference/metrics/advertising/meta-ads/subscribes/meta-cost-per-subscribe) | Cost to acquire each subscriber | | [Meta Start Trials](/reference/metrics/advertising/meta-ads/start-trials/meta-start-trials) | Trial initiations that may convert to subscriptions | | [Meta Purchases](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | One-time purchase conversions for comparison | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # Meta View Contents Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/view-contents All Meta metrics for view-contents — volume, value, and cost in one place. Metrics for view contents across your Meta campaigns: * [Meta View Contents: Product Page Views from Ads](/reference/metrics/advertising/meta-ads/view-contents/meta-view-contents) # Meta View Contents: Product Page Views from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/meta-ads/view-contents/meta-view-contents Track how many product page views Meta attributes to your ads. Measure top-of-funnel engagement to optimize campaigns for product discovery. Meta View Contents counts how many times visitors viewed a product detail page after clicking your ad—a top-of-funnel engagement signal. ## Formula **Meta View Contents** = **COUNT** ( view\_content events ) Each product or content page view attributed to your Meta ads is counted once per view event. | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your Meta campaigns drove **12,340 product page views** in March across three audience segments. | Audience | View Contents | Spend | Cost/View | | ----------- | ------------- | ------- | --------- | | Retargeting | 5,420 | \$890 | \$0.16 | | Lookalike | 4,180 | \$1,450 | \$0.35 | | Prospecting | 2,740 | \$1,980 | \$0.72 | *** ## How It Works Meta counts a view content event when a visitor lands on a product detail page after interacting with your ad within the attribution window. The event is captured via the Meta Pixel or Conversions API when the shopper views a specific product page on your site. *** ## When to Use | Scenario | Action | | --------------------------------------- | ----------------------------------------------------------------- | | Measuring top-of-funnel traffic quality | Compare view content volumes across campaigns to assess interest | | Identifying high-intent audiences | High view contents signal that ads are driving product discovery | | Diagnosing funnel entry points | Compare view contents vs add-to-carts to find engagement drop-off | | Optimizing for awareness campaigns | Shift budget to campaigns with strong view content rates | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------- | ---------------------------------------- | | Meta Cost per View Content | Efficiency of driving product page views | | [Meta Add to Carts](/reference/metrics/advertising/meta-ads/add-to-carts/meta-add-to-carts) | Next step in the purchase funnel | | [Meta Purchases](/reference/metrics/advertising/meta-ads/purchases/meta-purchases) | Final conversion from product views | [See all Meta Conversions metrics →](/reference/metrics/advertising/meta-ads) # TikTok Ads Metrics Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads Measure TikTok advertising performance with metrics for spend, conversions, video engagement, and ROI. TikTok Ads metrics help you understand how your TikTok advertising campaigns drive engagement, video views, and conversions. **Data Source:** [TikTok Ads Manager API](/sources/catalog/tiktok)\ **Metrics:** 77\ **Action Metric Groups:** 16 ## How These Metrics Are Organized TikTok Ads metrics are split into two groups: * **Core metrics** (24) — spend, audience, clicks, efficiency, and video metrics that live directly under this channel * **Action metric groups** (16) — per-action folders pairing a conversion or engagement event with its value and cost-per-action metrics ### Action Metric Groups | Group | Metrics | Covers | | ---------------------------------------------------------------------------------- | ------- | ----------------------------------- | | [Purchases](/reference/metrics/advertising/tiktok-ads/purchases) | 2 | Purchase count and revenue value | | [Add to Carts](/reference/metrics/advertising/tiktok-ads/add-to-carts) | 3 | Add-to-cart events, value, and cost | | [Add to Wishlists](/reference/metrics/advertising/tiktok-ads/add-to-wishlists) | 3 | Wishlist additions, value, and cost | | [Initiate Checkouts](/reference/metrics/advertising/tiktok-ads/initiate-checkouts) | 3 | Checkout starts, value, and cost | | [Leads](/reference/metrics/advertising/tiktok-ads/leads) | 3 | Lead submissions, value, and cost | | [App Installs](/reference/metrics/advertising/tiktok-ads/app-installs) | 2 | Mobile app installs and cost | | [View Contents](/reference/metrics/advertising/tiktok-ads/view-contents) | 3 | Product page views, value, and cost | | [Schedules](/reference/metrics/advertising/tiktok-ads/schedules) | 3 | Booking actions, value, and cost | | [Searches](/reference/metrics/advertising/tiktok-ads/searches) | 3 | On-site searches, value, and cost | | [Subscribes](/reference/metrics/advertising/tiktok-ads/subscribes) | 3 | Subscribe actions, value, and cost | | [Engagements](/reference/metrics/advertising/tiktok-ads/engagements) | 2 | All social interactions and cost | | [Likes](/reference/metrics/advertising/tiktok-ads/likes) | 1 | Like reactions | | [Comments](/reference/metrics/advertising/tiktok-ads/comments) | 1 | Comment count | | [Shares](/reference/metrics/advertising/tiktok-ads/shares) | 1 | Share count | | [Follows](/reference/metrics/advertising/tiktok-ads/follows) | 2 | Follow actions and cost | | [Profile Visits](/reference/metrics/advertising/tiktok-ads/profile-visits) | 2 | Profile visits and cost | Completed registration metrics (count, value, and cost) also exist as flat metrics directly under this channel. ## TikTok-Specific Features TikTok provides unique metrics for video-first advertising: * **Video completion metrics**: Track 25%, 50%, 75%, and 100% watch rates * **6-second and 15-second view benchmarks**: Industry-standard video engagement thresholds * **Social engagement**: Native metrics for likes, comments, shares, and follows * **Profile visits**: Track how ads drive traffic to your TikTok profile ## Data Source All TikTok Ads metrics are sourced from the [TikTok Ads Manager API](/sources/catalog/tiktok), synchronized daily with your Upstack dashboard. # TikTok Add To Carts Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/add-to-carts All TikTok metrics for add-to-carts — volume, value, and cost in one place. Metrics for add to carts across your TikTok campaigns: * [TikTok Add to Carts: Attributed Cart Actions](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts) * [TikTok Cost per Add to Cart: Measure Purchase Intent Efficiency](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts-cost) * [TikTok Add to Carts Value: Track Cart Revenue Potential](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts-value) # TikTok Add to Carts: Attributed Cart Actions Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts Track add-to-cart events TikTok attributes to your ads. Monitor mid-funnel purchase intent signals to optimize TikTok ad campaigns. TikTok Add to Carts counts the number of add-to-cart events TikTok attributes to your ads—a mid-funnel signal of purchase intent. ## Formula **TikTok Add to Carts** = **COUNT** ( TikTok-Attributed Add to Cart Events ) ### Formula Components | Metric | Definition | | ---------------------------------------- | ------------------------------------------------------------------------------------ | | **TikTok-Attributed Add to Cart Events** | Cart additions tracked by TikTok's pixel or Events API within the attribution window | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example A skincare brand spent **\$2,400 on TikTok ads** last week targeting Gen Z audiences with influencer-style content. | Campaign | Add to Carts | Cost per Add to Cart | | ---------------- | ------------ | -------------------- | | UGC Testimonials | 847 | \$1.42 | | Product Demo | 312 | \$3.85 | | Flash Sale | 1,203 | \$0.99 | | **Total** | **2,362** | **\$1.02** | *** ## How It Works TikTok counts an add-to-cart event when a user adds a product to their cart on your site after interacting with your ad. Attribution uses TikTok's click-through and view-through windows (typically 7-day click, 1-day view). The count reflects TikTok's attribution model, which may differ from Upstack's first-party attribution. *** ## When to Use | Scenario | Action | | ------------------------------------------ | ---------------------------------------------- | | Evaluating campaign mid-funnel performance | Compare add-to-cart volume across campaigns | | Optimizing for purchase intent | Scale campaigns with high add-to-cart counts | | Diagnosing checkout drop-off | Compare add-to-carts vs. initiated checkouts | | Benchmarking creative performance | Identify which ads drive the most cart actions | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | | [TikTok Cost per Add to Cart](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts-cost) | Cost efficiency of driving cart actions | | [TikTok Initiate Checkouts](/reference/metrics/advertising/tiktok-ads/initiate-checkouts/tiktok-initiate-checkouts) | Next step in purchase funnel | | [TikTok Purchases](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases) | Final conversion event | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per Add to Cart: Measure Purchase Intent Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts-cost Track your TikTok cost per add to cart to measure how efficiently your ads drive purchase intent. Lower costs mean better mid-funnel performance. Average spend per add-to-cart event from your TikTok ads—a key indicator of how efficiently your campaigns drive purchase intent. ## Formula **TikTok Cost per Add to Cart** = [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Add to Carts**](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on your TikTok ads | | [**TikTok Add to Carts**](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts) | Number of add to cart actions attributed to your TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your TikTok prospecting campaign spent **\$2,400** last week and drove **800 add to carts**. | Campaign | Spend | Add to Carts | Cost/ATC | | ---------------------- | ----------- | ------------ | ---------- | | Prospecting - Video | \$1,500 | 600 | \$2.50 | | Retargeting - Carousel | \$900 | 200 | \$4.50 | | **Total** | **\$2,400** | **800** | **\$3.00** | *** ## How It Works TikTok tracks add-to-cart events through its Pixel or Events API. Upstack calculates cost per add to cart by dividing your total TikTok ad spend by the number of attributed add-to-cart events during the selected period. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------ | | Evaluating mid-funnel efficiency | Compare cost/ATC across campaigns to find best performers | | Creative testing | Lower cost/ATC signals more compelling product presentation | | Audience optimization | Identify which audiences show strongest purchase intent | | Budget allocation | Shift spend toward campaigns with lower cost per add to cart | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [TikTok Add to Carts](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts) | The denominator—total add to cart events | | [TikTok CPA](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-acquisition) | Cost per purchase—measures full conversion efficiency | | [TikTok Cost per Initiate Checkout](/reference/metrics/advertising/tiktok-ads/initiate-checkouts/tiktok-initiate-checkouts-cost) | Next funnel stage—cost per checkout started | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Add to Carts Value: Track Cart Revenue Potential Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts-value Measure the total dollar value of products added to cart from your TikTok ads. Track mid-funnel revenue potential and identify high-value audiences. The combined dollar value of all products added to shopping carts by visitors from your TikTok ads. ## Formula **TikTok Add to Carts Value** = **SUM** ( Product Values Added to Cart ) ### Formula Components | Metric | Definition | | -------------------------------- | -------------------------------------------------------------------------- | | **Product Values Added to Cart** | The dollar value passed with each AddToCart event attributed to TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example A skincare brand's TikTok campaign drove **\$47,200 in cart value** last week across three ad sets. | Ad Set | Add to Carts | Cart Value | Avg Cart | | ---------------- | ------------ | ---------- | -------- | | Serum Collection | 284 | \$22,720 | \$80 | | Bundle Deals | 156 | \$18,720 | \$120 | | New Arrivals | 145 | \$5,760 | \$40 | The Bundle Deals ad set shows the highest average cart value despite fewer add-to-carts, indicating stronger purchase intent from that audience. *** ## How It Works TikTok tracks the value parameter passed with each AddToCart event and attributes it to your ads based on your attribution window. The total is summed across all cart additions from ad-driven traffic. This reflects the potential revenue sitting in carts, not completed purchases. *** ## When to Use | Scenario | Action | | --------------------------------- | --------------------------------------------------------------------- | | Comparing ad creative performance | Higher cart values indicate ads attracting buyers with larger baskets | | Evaluating audience targeting | Audiences with high cart value are more likely to convert profitably | | Forecasting revenue potential | Cart value indicates pipeline revenue before checkout drop-off | | Optimizing for value over volume | Prioritize campaigns with higher value per cart, not just cart count | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ------------------------------------ | | [TikTok Add to Carts](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts) | Count of add-to-cart events (volume) | | [TikTok Purchases Value](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases-value) | Revenue from completed purchases | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Add To Wishlists Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/add-to-wishlists All TikTok metrics for add-to-wishlists — volume, value, and cost in one place. Metrics for add to wishlists across your TikTok campaigns: * [TikTok Add to Wishlists: Wishlist Intent from Ads](/reference/metrics/advertising/tiktok-ads/add-to-wishlists/tiktok-add-to-wishlists) * [TikTok Cost per Add to Wishlist: Wishlist Efficiency Metric](/reference/metrics/advertising/tiktok-ads/add-to-wishlists/tiktok-add-to-wishlists-cost) * [TikTok Add to Wishlists Value: Total Wishlist Revenue](/reference/metrics/advertising/tiktok-ads/add-to-wishlists/tiktok-add-to-wishlists-value) # TikTok Add to Wishlists: Wishlist Intent from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/add-to-wishlists/tiktok-add-to-wishlists Track wishlist additions attributed to your TikTok ads. Measure future purchase intent and optimize campaigns targeting high-intent shoppers. The number of add-to-wishlist actions attributed to your TikTok ads. ## Formula **TikTok Add to Wishlists** = **COUNT** ( TikTok-Attributed Add to Wishlist Events ) ### Formula Components | Metric | Definition | | -------------------------------------------- | ------------------------------------------------------------------------------ | | **TikTok-Attributed Add to Wishlist Events** | Wishlist additions that occurred after a user viewed or clicked your TikTok ad | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your TikTok campaigns generated **2,847 wishlist additions** this month: | Campaign | Wishlists | Cost per Wishlist | | ------------------ | --------- | ----------------- | | Holiday Gift Guide | 1,245 | \$0.42 | | New Arrivals | 892 | \$0.58 | | Flash Sale Teaser | 710 | \$0.31 | *** ## How It Works TikTok tracks when users add products to their wishlist after viewing or clicking your ads. These events signal strong purchase intent—users are saving items for later. Attribution follows TikTok's click-through and view-through windows. *** ## When to Use | Scenario | Action | | ------------------------- | -------------------------------------------------------- | | Measuring purchase intent | Track wishlists as a leading indicator before sales | | Optimizing for intent | Target campaigns toward wishlist-prone audiences | | Retargeting lists | Build audiences from users who wishlisted but didn't buy | | Seasonal planning | Monitor wishlist spikes before major shopping events | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------- | | [TikTok Wishlist Cost](/reference/metrics/advertising/tiktok-ads/add-to-wishlists/tiktok-add-to-wishlists-cost) | Cost per wishlist addition | | [TikTok Wishlist Value](/reference/metrics/advertising/tiktok-ads/add-to-wishlists/tiktok-add-to-wishlists-value) | Revenue from wishlisted items | | [TikTok Add to Carts](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts) | Next step in funnel after wishlisting | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per Add to Wishlist: Wishlist Efficiency Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/add-to-wishlists/tiktok-add-to-wishlists-cost Track your TikTok cost per wishlist addition to measure how efficiently your ads capture future purchase intent. Lower costs signal stronger wishlist appeal. Average spend per wishlist add from your TikTok ads—measures how efficiently your campaigns drive future purchase intent. ## Formula **TikTok Cost per Add to Wishlist** = [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Add to Wishlists**](/reference/metrics/advertising/tiktok-ads/add-to-wishlists/tiktok-add-to-wishlists) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on your TikTok ads | | [**TikTok Add to Wishlists**](/reference/metrics/advertising/tiktok-ads/add-to-wishlists/tiktok-add-to-wishlists) | Number of wishlist additions attributed to your TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your TikTok holiday campaign spent **\$1,800** and drove **4,500 wishlist additions**. | Campaign | Spend | Wishlists | Cost/Wishlist | | ------------------ | ----------- | --------- | ------------- | | Holiday Gift Guide | \$1,200 | 3,200 | \$0.38 | | New Arrivals | \$600 | 1,300 | \$0.46 | | **Total** | **\$1,800** | **4,500** | **\$0.40** | *** ## How It Works TikTok tracks wishlist events through its Pixel or Events API. Upstack calculates cost per wishlist by dividing your total TikTok ad spend by the number of attributed wishlist additions during the selected period. *** ## When to Use | Scenario | Action | | --------------------------- | ------------------------------------------------------------------ | | Measuring intent efficiency | Compare cost/wishlist across campaigns to find best performers | | Seasonal planning | Track wishlist efficiency before major shopping events | | Creative testing | Lower cost/wishlist signals more desirable product presentation | | Budget allocation | Shift spend toward campaigns with lower wishlist acquisition costs | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [TikTok Add to Wishlists](/reference/metrics/advertising/tiktok-ads/add-to-wishlists/tiktok-add-to-wishlists) | The denominator—total wishlist events | | [TikTok Cost per Add to Cart](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts-cost) | Next funnel stage—cost per cart addition | | [TikTok CPA](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-acquisition) | Cost per purchase—measures full conversion efficiency | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Add to Wishlists Value: Total Wishlist Revenue Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/add-to-wishlists/tiktok-add-to-wishlists-value Track the total monetary value of add to wishlist actions attributed to your TikTok ads. Measures future purchase intent value. TikTok Add to Wishlists Value measures the combined monetary value of all products added to wishlists by visitors from your TikTok ads. ## Formula **TikTok Add to Wishlists Value** = **SUM** ( Product Values Added to Wishlist ) ### Formula Components | Metric | Definition | | ------------------------------------ | -------------------------------------------------------------- | | **Product Values Added to Wishlist** | Catalog value of each product added to wishlist via TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your TikTok campaigns generated **\$12,450** in wishlist value last month from visitors saving products for later. | Campaign | Wishlists | Wishlist Value | Avg Item Value | | ----------------- | --------- | -------------- | -------------- | | Summer Collection | 847 | \$6,230 | \$7.35 | | New Arrivals | 512 | \$4,180 | \$8.16 | | Clearance Sale | 423 | \$2,040 | \$4.82 | *** ## How It Works TikTok tracks when users add products to wishlists after interacting with your ads and sums the catalog value of those items. This metric signals future purchase intent—visitors who wishlist products often return to buy when timing or budget allows. *** ## When to Use | Scenario | Action | | ------------------------------------------ | -------------------------------------------------------- | | Evaluating consideration stage performance | Compare wishlist value against actual purchase value | | Identifying high-intent products | Find items with high wishlist value but low purchases | | Planning retargeting campaigns | Target users who wishlisted high-value items | | Seasonal trend analysis | Track wishlist value spikes before peak shopping periods | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [TikTok Add to Wishlists](/reference/metrics/advertising/tiktok-ads/add-to-wishlists/tiktok-add-to-wishlists) | Count of wishlist actions generating this value | | [TikTok Cost per Add to Wishlist](/reference/metrics/advertising/tiktok-ads/add-to-wishlists/tiktok-add-to-wishlists-cost) | Efficiency of driving wishlist actions | | [TikTok Add to Carts Value](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts-value) | Next stage in purchase funnel | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok App Installs Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/app-installs All TikTok metrics for app-installs — volume, value, and cost in one place. Metrics for app installs across your TikTok campaigns: * [TikTok App Installs: Mobile App Downloads from TikTok Ads](/reference/metrics/advertising/tiktok-ads/app-installs/tiktok-app-installs) * [TikTok Cost per App Install: CPI for App Campaigns](/reference/metrics/advertising/tiktok-ads/app-installs/tiktok-app-installs-cost) # TikTok App Installs: Mobile App Downloads from TikTok Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/app-installs/tiktok-app-installs Track app installs attributed to your TikTok ads. Measure mobile app download performance and optimize app install campaigns. TikTok App Installs counts the number of app downloads TikTok attributes to your ads. ## Formula **TikTok App Installs** = **COUNT** ( TikTok-Attributed App Install Events ) ### Formula Components | Metric | Definition | | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | | **TikTok-Attributed App Install Events** | App download events tracked by TikTok via mobile measurement partners (MMPs) or TikTok SDK within the attribution window | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Count | *** ## Example **Your fitness app campaign drove 2,847 installs in March** across three ad groups targeting different audiences. | Ad Group | App Installs | Spend | Cost per Install | | -------------------- | ------------ | ------- | ---------------- | | Health Enthusiasts | 1,245 | \$2,490 | \$2.00 | | New Year Resolutions | 982 | \$2,455 | \$2.50 | | Athletes | 620 | \$1,860 | \$3.00 | *** ## How It Works TikTok tracks app installs using mobile measurement partners (MMPs) and TikTok's own SDK. When a user clicks your ad and installs your app within the attribution window, TikTok counts it as an attributed install. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------ | | Launching a new app | Track total installs to measure campaign reach | | Comparing ad creatives | Identify which videos drive the most downloads | | Scaling install campaigns | Monitor volume against budget increases | | Evaluating audience targeting | Compare install rates across different ad groups | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | --------------------------- | | [TikTok Cost per App Install](/reference/metrics/advertising/tiktok-ads/app-installs/tiktok-app-installs-cost) | Cost efficiency per install | | [TikTok Completed Registrations](/reference/metrics/advertising/tiktok-ads/tiktok-complete-registrations) | Post-install signup actions | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total ad budget consumed | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per App Install: CPI for App Campaigns Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/app-installs/tiktok-app-installs-cost Track the cost per app install from your TikTok ads. Learn how CPI is calculated, see examples, and optimize your app install campaign efficiency. The average cost to acquire one app install from your TikTok advertising. ## Formula **TikTok Cost per App Install** = [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok App Installs**](/reference/metrics/advertising/tiktok-ads/app-installs/tiktok-app-installs) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok advertising | | [**TikTok App Installs**](/reference/metrics/advertising/tiktok-ads/app-installs/tiktok-app-installs) | Number of app installs attributed to TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your app install campaign spent **\$2,400** and drove **800 installs** this week: | Ad Group | Spend | Installs | CPI | | ------------------ | ------- | -------- | ------ | | Lookalike Audience | \$1,200 | 480 | \$2.50 | | Interest Targeting | \$800 | 240 | \$3.33 | | Retargeting | \$400 | 80 | \$5.00 | *** ## How It Works CPI divides your TikTok ad spend by the number of app installs TikTok attributes to your ads. Lower CPI means you're acquiring users more efficiently. TikTok tracks installs through its SDK integration with your mobile app. *** ## When to Use | Scenario | Action | | ---------------------------------- | --------------------------------------------------- | | Evaluating app campaign efficiency | Compare CPI across ad groups and creatives | | Setting install targets | Use CPI to forecast budget needed for install goals | | Benchmarking performance | Compare your CPI to industry averages | | Optimizing creative | Test new creatives to lower acquisition cost | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [TikTok App Installs](/reference/metrics/advertising/tiktok-ads/app-installs/tiktok-app-installs) | The denominator for CPI | | [TikTok CPA](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-acquisition) | Cost per purchase (compare to CPI for full-funnel view) | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Comments Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/comments All TikTok metrics for comments — volume, value, and cost in one place. Metrics for comments across your TikTok campaigns: * [TikTok Comments: Ad Engagement Metric](/reference/metrics/advertising/tiktok-ads/comments/tiktok-comments) # TikTok Comments: Ad Engagement Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/comments/tiktok-comments Track total comments on your TikTok ads. Measure deeper audience engagement and identify content that sparks conversation. Total comments left on your ad. Comments often indicate strong opinions or questions about your product. ## Formula **TikTok Comments** = **SUM** ( Comments ) || Metadata | | ||---|---| || **Type** | Number | || **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | || **Aggregation** | Sum | *** ## Example Your product launch campaign received **1,847 comments** across all ad groups in June. | Campaign | Comments | Impressions | Comment Rate | | ---------------- | -------- | ----------- | ------------ | | Product Demo | 1,234 | 425,000 | 0.29% | | UGC Testimonials | 613 | 312,000 | 0.20% | *** ## How It Works TikTok counts each comment left on your ad by viewers. Comments indicate deeper engagement than likes—users take time to type a response. High comment counts often signal content that sparks curiosity, questions, or strong opinions about your product. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------ | | Measuring content resonance | High comments indicate strong audience interest | | Identifying FAQ opportunities | Analyze comment themes to improve messaging | | Evaluating ad creative | Content that sparks discussion drives awareness | | Community building | Ads with many comments help build brand presence | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------- | | [TikTok Engagements](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements) | Total of all engagement types (includes comments) | | [TikTok Likes](/reference/metrics/advertising/tiktok-ads/likes/tiktok-likes) | Lighter engagement signal than comments | | [TikTok Shares](/reference/metrics/advertising/tiktok-ads/shares/tiktok-shares) | Indicates content worth spreading | [See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Engagements Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/engagements All TikTok metrics for engagements — volume, value, and cost in one place. Metrics for engagements across your TikTok campaigns: * [TikTok Engagements: Total Ad Interactions](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements) * [TikTok Cost per Engagement: Ad Efficiency Metric](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements-cost) # TikTok Engagements: Total Ad Interactions Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements Track total social interactions on your TikTok ads including likes, comments, and shares. Measure creative resonance and audience engagement. All social interactions on your ad reported by TikTok, such as likes, comments, and shares. High engagement signals resonant creative. ## Formula **TikTok Engagements** = **SUM** ( Engagements ) || Metadata | | ||---|---| || **Type** | Number | || **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | || **Aggregation** | Sum | *** ## Example Your TikTok campaign generated **12,450 engagements** last week: | Ad Creative | Engagements | Breakdown | | --------------- | ----------- | ------------------------------------- | | Product Demo | 5,200 | 3,800 likes, 950 comments, 450 shares | | UGC Testimonial | 4,850 | 4,100 likes, 420 comments, 330 shares | | Brand Story | 2,400 | 1,900 likes, 280 comments, 220 shares | *** ## How It Works TikTok Engagements counts all social interactions with your ads—likes, comments, and shares. High engagement signals that your creative resonates with your audience and indicates potential for organic reach through shares. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------- | | Evaluating creative performance | Compare engagements across ad variations | | Measuring brand awareness | Track engagement growth over time | | Identifying viral potential | High shares indicate content worth boosting | | Optimizing for community building | Prioritize creatives that spark comments | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------- | | [TikTok Cost per Engagement](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements-cost) | Cost efficiency of generating engagements | | [TikTok Engagement Rate](/reference/metrics/advertising/tiktok-ads/tiktok-engagement-rate) | Engagements as percentage of impressions | | [TikTok Likes](/reference/metrics/advertising/tiktok-ads/likes/tiktok-likes) | Subset: positive reactions only | | [TikTok Shares](/reference/metrics/advertising/tiktok-ads/shares/tiktok-shares) | Subset: viral distribution actions | [See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per Engagement: Ad Efficiency Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements-cost Track your TikTok cost per engagement to measure ad efficiency. Calculate average spend per like, comment, share, or follow on TikTok campaigns. Average spend per social interaction. Useful for evaluating brand awareness and community-building campaigns. ## Formula **TikTok Cost per Engagement** = [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Engagements**](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok ads | | [**TikTok Engagements**](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements) | Total likes, comments, shares, and follows on ads | || Metadata | | ||---|---| || **Type** | Currency | || **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | || **Aggregation** | Ratio | *** ## Example A beauty brand's TikTok campaign spent **\$2,400** and generated **12,000 engagements** over two weeks. | Metric | Value | Calculation | | ----------------------- | ---------- | ----------------------------------- | | Ad Spend | \$2,400 | — | | Engagements | 12,000 | Likes + comments + shares + follows | | **Cost per Engagement** | **\$0.20** | \$2,400 ÷ 12,000 | *** ## How It Works TikTok reports total engagements (likes, comments, shares, follows) for your ads. Upstack divides your total ad spend by total engagements to calculate the average cost per social interaction. *** ## When to Use | Scenario | Action | | ----------------------------------- | ----------------------------------------------------- | | Running brand awareness campaigns | Track if engagement costs are sustainable | | Comparing creative performance | Lower cost/engagement indicates more resonant content | | Budgeting for community growth | Estimate spend needed to hit engagement targets | | Evaluating influencer-style content | Measure audience interaction efficiency | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [TikTok Engagements](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements) | Denominator in this calculation | | [TikTok Engagement Rate](/reference/metrics/advertising/tiktok-ads/tiktok-engagement-rate) | Measures engagement as percentage of impressions | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Numerator in this calculation | [See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Follows Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/follows All TikTok metrics for follows — volume, value, and cost in one place. Metrics for follows across your TikTok campaigns: * [TikTok Follows: Follower Acquisition Metric](/reference/metrics/advertising/tiktok-ads/follows/tiktok-follows) * [TikTok Cost per Follow: Follower Acquisition Efficiency](/reference/metrics/advertising/tiktok-ads/follows/tiktok-follows-cost) # TikTok Follows: Follower Acquisition Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/follows/tiktok-follows Track new followers gained from your TikTok ads. Measure community growth and brand account interest from paid campaigns. How many users followed your TikTok account after seeing your ad. ## Formula **TikTok Follows** = **SUM** ( Follows ) || Metadata | | ||---|---| || **Type** | Number | || **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | || **Aggregation** | Sum | *** ## Example Your brand awareness campaign generated **2,847 new followers** across all ad groups in June. | Campaign | Follows | Impressions | Follow Rate | | -------------- | ------- | ----------- | ----------- | | Brand Story | 1,534 | 425,000 | 0.36% | | Creator Collab | 913 | 312,000 | 0.29% | | Product Demo | 400 | 180,000 | 0.22% | *** ## How It Works TikTok counts each time a viewer taps the follow button on your ad or navigates to your profile from the ad and follows. Follows indicate strong brand interest—users want to see more of your content in their feed. This builds long-term organic reach. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------ | | Measuring community growth | Track follower acquisition from paid campaigns | | Evaluating brand interest | High follows indicate strong brand appeal | | Comparing creative performance | Content that drives follows builds lasting value | | Planning organic strategy | More followers means more organic reach | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [TikTok Cost per Follow](/reference/metrics/advertising/tiktok-ads/follows/tiktok-follows-cost) | Cost efficiency of follower acquisition | | [TikTok Engagements](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements) | Total of all engagement types (includes follows) | | [TikTok Profile Visits](/reference/metrics/advertising/tiktok-ads/profile-visits/tiktok-profile-visits) | Users who visited your profile (may or may not follow) | [See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per Follow: Follower Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/follows/tiktok-follows-cost Track the cost per new follower from TikTok ads. Measure follower acquisition efficiency and optimize your community-building campaigns. Average spend per new follower from TikTok ads. ## Formula **TikTok Cost per Follow** = [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Follows**](/reference/metrics/advertising/tiktok-ads/follows/tiktok-follows) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ---------------------------------------------- | | [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok ads | | [**TikTok Follows**](/reference/metrics/advertising/tiktok-ads/follows/tiktok-follows) | Number of new followers gained from TikTok ads | || Metadata | | ||---|---| || **Type** | Currency | || **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | || **Aggregation** | Ratio | *** ## Example A beauty brand ran follower-focused campaigns in April with **\$2,400 in TikTok spend** generating **800 new followers**. | Campaign | Spend | Follows | Cost per Follow | | ----------------- | ----------- | ------- | --------------- | | Spring Launch | \$1,200 | 500 | \$2.40 | | Influencer Collab | \$800 | 250 | \$3.20 | | Tutorial Series | \$400 | 50 | \$8.00 | | **Total** | **\$2,400** | **800** | **\$3.00** | *** ## How It Works TikTok Cost per Follow divides your total ad spend by the number of new followers attributed to your ads. This metric helps you understand the efficiency of campaigns optimized for community growth and brand awareness. *** ## When to Use | Scenario | Action | | ---------------------------- | --------------------------------------------------------- | | Comparing follower campaigns | Identify which creatives drive followers most efficiently | | Budget allocation | Shift spend toward lower cost-per-follow campaigns | | Community growth strategy | Track follower acquisition costs over time | | Influencer partnerships | Measure follower efficiency of creator collaborations | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------------- | ------------------------------- | | [TikTok Follows](/reference/metrics/advertising/tiktok-ads/follows/tiktok-follows) | Denominator in this calculation | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Numerator in this calculation | | [TikTok Cost per Engagement](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements-cost) | Broader engagement cost metric | [See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Initiate Checkouts Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/initiate-checkouts All TikTok metrics for initiate-checkouts — volume, value, and cost in one place. Metrics for initiate checkouts across your TikTok campaigns: * [TikTok Initiate Checkouts: Attributed Checkout Starts](/reference/metrics/advertising/tiktok-ads/initiate-checkouts/tiktok-initiate-checkouts) * [TikTok Cost per Initiate Checkout: Checkout Acquisition Cost](/reference/metrics/advertising/tiktok-ads/initiate-checkouts/tiktok-initiate-checkouts-cost) * [TikTok Initiate Checkouts Value: Total Checkout Revenue](/reference/metrics/advertising/tiktok-ads/initiate-checkouts/tiktok-initiate-checkouts-value) # TikTok Initiate Checkouts: Attributed Checkout Starts Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/initiate-checkouts/tiktok-initiate-checkouts Track checkout initiations attributed to TikTok ads. Measure how many users start the checkout process after engaging with your TikTok campaigns. TikTok Initiate Checkouts counts the number of checkout initiations attributed to your TikTok ad campaigns. ## Formula **TikTok Initiate Checkouts** = **COUNT** ( TikTok-Attributed Initiate Checkout Events ) ### Formula Components | Metric | Definition | | ---------------------------------------------- | ------------------------------------------------------------------------------------------ | | **TikTok-Attributed Initiate Checkout Events** | Checkout starts from users who clicked or viewed a TikTok ad within the attribution window | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Count | *** ## Example Your TikTok campaigns drove **892 checkout initiations** during a product launch week. | Campaign | Initiate Checkouts | Conversion Rate to Purchase | | ----------------- | ------------------ | --------------------------- | | Summer Collection | 534 | 68% | | Flash Sale | 285 | 72% | | New Arrivals | 73 | 61% | *** ## How It Works When a user views or clicks a TikTok ad and later initiates checkout on your store, Upstack attributes that checkout start to TikTok. Attribution uses TikTok's click ID (ttclid) and view-through tracking within the configured attribution window. *** ## When to Use | Scenario | Action | | ------------------------- | ---------------------------------------------------------------------- | | Measuring checkout intent | Compare initiate checkouts to completed purchases to identify drop-off | | Evaluating ad creative | Analyze which TikTok ads drive the most checkout starts | | Funnel optimization | Calculate the initiate checkout to purchase conversion rate | | Campaign comparison | Compare checkout intent across different TikTok campaign types | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | TikTok Conversions | Completed purchases vs. checkout starts | | [TikTok Add to Carts](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts) | Earlier funnel stage before checkout | | TikTok Conversion Value | Revenue from completed TikTok-attributed purchases | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per Initiate Checkout: Checkout Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/initiate-checkouts/tiktok-initiate-checkouts-cost Track TikTok Cost per Initiate Checkout to measure spend efficiency for driving checkout starts. Lower values indicate better bottom-of-funnel ad performance. TikTok Cost per Initiate Checkout measures the average spend per checkout started from your TikTok ads. ## Formula **TikTok Cost per Initiate Checkout** = [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Initiate Checkouts**](/reference/metrics/advertising/tiktok-ads/initiate-checkouts/tiktok-initiate-checkouts) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok advertising | | [**TikTok Initiate Checkouts**](/reference/metrics/advertising/tiktok-ads/initiate-checkouts/tiktok-initiate-checkouts) | Number of checkout starts attributed to TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio (Spend ÷ Initiate Checkouts) | *** ## Example Your activewear brand spent **\$2,400** on TikTok ads last week and drove **320 checkout starts**. | Campaign | Spend | Checkouts | Cost/Checkout | | ----------------- | ------- | --------- | ------------- | | Summer Collection | \$1,200 | 200 | \$6.00 | | Influencer Collab | \$800 | 96 | \$8.33 | | Flash Sale | \$400 | 24 | \$16.67 | *** ## How It Works TikTok calculates this metric by dividing your total ad spend by the number of checkout initiations attributed to your ads. A lower cost per checkout indicates efficient bottom-of-funnel performance—your ads successfully move high-intent shoppers toward purchase at a reasonable cost. *** ## When to Use | Scenario | Action | | --------------------------------- | ---------------------------------------------------------------------- | | Cost rising while checkouts drop | Test new creative angles or refine audience targeting | | Lower cost than CPA | Strong mid-funnel—investigate checkout abandonment for conversion gaps | | Cost varies by campaign | Reallocate budget toward campaigns with lower checkout costs | | Cost acceptable but purchases low | Focus on checkout experience and retargeting abandoners | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [TikTok Initiate Checkouts](/reference/metrics/advertising/tiktok-ads/initiate-checkouts/tiktok-initiate-checkouts) | The checkout count used in this formula | | [TikTok CPA](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-acquisition) | Compare checkout cost to final purchase cost | | [TikTok Add to Carts Cost](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts-cost) | Earlier funnel stage cost for comparison | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Initiate Checkouts Value: Total Checkout Revenue Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/initiate-checkouts/tiktok-initiate-checkouts-value Track total checkout initiation value from TikTok ads. Measure the combined cart value of users entering checkout from your campaigns. Combined value of all checkout initiations by visitors from your TikTok ads. ## Formula **TikTok Initiate Checkouts Value** = **SUM** ( Checkout Values ) ### Formula Components | Metric | Definition | | ------------------- | ------------------------------------------------------------------------ | | **Checkout Values** | The cart value at checkout initiation for each TikTok-attributed visitor | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your TikTok campaigns drove **\$18,450 in checkout value** last week across 312 checkout initiations. | Campaign | Checkout Value | Checkouts | Avg Cart | | ----------------- | -------------- | --------- | -------- | | Spring Collection | \$12,300 | 198 | \$62.12 | | Flash Sale | \$4,150 | 89 | \$46.63 | | New Arrivals | \$2,000 | 25 | \$80.00 | *** ## How It Works TikTok reports the total cart value each time a user attributed to your ads initiates the checkout process. This value represents purchase intent — not completed sales — and typically exceeds final purchase value due to cart abandonment. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------------------------------------- | | Forecasting revenue | Use checkout value as a leading indicator for expected purchases | | Comparing ad creative | Higher checkout value suggests ads attract higher-value customers | | Optimizing for value | Pair with checkout count to calculate average cart size | | Funnel analysis | Compare against purchases value to measure checkout completion rate | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | | [TikTok Initiate Checkouts](/reference/metrics/advertising/tiktok-ads/initiate-checkouts/tiktok-initiate-checkouts) | Count of checkout initiations (volume) | | [TikTok Purchases Value](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases-value) | Completed purchase revenue (downstream) | | [TikTok Cost per Initiate Checkout](/reference/metrics/advertising/tiktok-ads/initiate-checkouts/tiktok-initiate-checkouts-cost) | Efficiency of driving checkout value | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Leads Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/leads All TikTok metrics for leads — volume, value, and cost in one place. Metrics for leads across your TikTok campaigns: * [TikTok Leads: Track Lead Generation from TikTok Ads](/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads) * [TikTok Cost per Lead: Lead Generation Efficiency](/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads-cost) * [TikTok Leads Value: Total Revenue from Lead Generation](/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads-value) # TikTok Leads: Track Lead Generation from TikTok Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads Track lead events attributed to your TikTok ads. Monitor form submissions and lead actions to measure campaign effectiveness. TikTok Leads counts the number of lead events TikTok attributes to your ads, including form submissions and equivalent lead actions. ## Formula **TikTok Leads** = **COUNT** ( TikTok-Attributed Lead Events ) ### Formula Components | Metric | Definition | | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | | **TikTok-Attributed Lead Events** | Lead actions (form submissions, sign-ups) that TikTok attributes to your ads based on click-through and view-through attribution windows | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Count | *** ## Example Your skincare brand ran a TikTok lead generation campaign offering a free consultation. **In March, you generated 847 leads** from your TikTok ads. | Week | Leads | Spend | Cost per Lead | | ------ | ----- | ------- | ------------- | | Week 1 | 189 | \$1,420 | \$7.51 | | Week 2 | 234 | \$1,680 | \$7.18 | | Week 3 | 198 | \$1,520 | \$7.68 | | Week 4 | 226 | \$1,580 | \$6.99 | *** ## How It Works TikTok tracks when users complete lead actions after engaging with your ads, typically form submissions on your landing page or TikTok's native Lead Gen Forms. Attribution follows TikTok's click-through and view-through windows configured in your ad account settings. *** ## When to Use | Scenario | Action | | --------------------------------------- | ---------------------------------------------------------- | | Measuring lead gen campaign performance | Compare lead volume across ad groups and creatives | | Evaluating audience quality | Track leads alongside conversion rates to downstream sales | | Optimizing for lead volume | Identify which creatives drive the most form submissions | | Planning budget allocation | Compare lead efficiency across TikTok vs other platforms | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------- | --------------------------------------- | | [TikTok Cost per Lead](/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads-cost) | Cost efficiency of lead generation | | [TikTok Leads Value](/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads-value) | Total assigned value of leads generated | | [TikTok Purchases](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases) | Downstream purchase conversions | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per Lead: Lead Generation Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads-cost Track the cost per lead from your TikTok ads. Optimize lead generation campaign efficiency with CPL benchmarking. TikTok Cost per Lead (CPL) measures the average spend required to generate one lead from your TikTok ads. ## Formula **TikTok Cost per Lead** = [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Leads**](/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ---------------------------------------------- | | [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok advertising | | [**TikTok Leads**](/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads) | Number of lead events attributed to TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example A B2B company spent **\$4,500** on TikTok lead gen ads in March and captured **150 leads**. | Month | Ad Spend | Leads | Cost per Lead | | -------- | -------- | ----- | ------------- | | January | \$3,200 | 80 | \$40.00 | | February | \$3,800 | 95 | \$40.00 | | March | \$4,500 | 150 | \$30.00 | March's CPL of **\$30.00** shows a 25% improvement from better targeting. *** ## How It Works TikTok tracks lead events when users complete form submissions or sign-ups attributed to your ads. CPL divides total spend by lead events to show average acquisition cost. *** ## When to Use | Scenario | Action | | -------------------- | --------------------------------------------------- | | Evaluating campaigns | Compare CPL across campaigns to find top performers | | Budget allocation | Shift spend toward campaigns with lower CPL | | Creative testing | A/B test ad creatives and measure CPL impact | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------- | ------------------------------------------------ | | [TikTok Leads](/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads) | Denominator—total leads driving this calculation | | [TikTok CPA](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-acquisition) | Similar efficiency metric for purchases | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Leads Value: Total Revenue from Lead Generation Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads-value Track total value of leads from TikTok ads. Monitor lead generation revenue and optimize campaigns for higher-value leads. TikTok Leads Value measures the combined assigned monetary value of all leads generated through your TikTok advertising campaigns. ## Formula **TikTok Leads Value** = **SUM** ( Lead Values ) ### Formula Components | Metric | Definition | | --------------- | ---------------------------------------------------------------- | | **Lead Values** | Monetary value assigned to each lead event from TikTok campaigns | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your fitness app ran TikTok lead generation campaigns targeting gym-goers. In March, you generated **847 leads** with a total value of **\$42,350**. | Week | Leads | Lead Value | Avg Lead Value | | ------ | ----- | ---------- | -------------- | | Week 1 | 185 | \$9,250 | \$50.00 | | Week 2 | 224 | \$11,200 | \$50.00 | | Week 3 | 198 | \$9,900 | \$50.00 | | Week 4 | 240 | \$12,000 | \$50.00 | *** ## How It Works TikTok tracks lead events (form submissions, sign-ups, or custom lead actions) and sums their assigned values. The value comes from either your TikTok Pixel configuration or the value passed with each lead event. This metric aggregates across all campaigns, ad groups, and ads in your selected time period. *** ## When to Use | Scenario | Action | | ----------------------- | -------------------------------------------------------------------------- | | Evaluating lead gen ROI | Compare total lead value against ad spend to assess campaign profitability | | Optimizing for quality | Monitor lead value trends to ensure campaigns attract high-value prospects | | Budget allocation | Shift spend toward campaigns generating higher total lead value | | Comparing channels | Benchmark TikTok lead value against Meta or Google lead generation | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------- | --------------------------------------------------- | | [TikTok Leads](/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads) | Count of leads generated (quantity vs. this value) | | [TikTok Cost per Lead](/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads-cost) | Efficiency metric showing acquisition cost per lead | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Likes Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/likes All TikTok metrics for likes — volume, value, and cost in one place. Metrics for likes across your TikTok campaigns: * [TikTok Likes: Ad Engagement Metric](/reference/metrics/advertising/tiktok-ads/likes/tiktok-likes) # TikTok Likes: Ad Engagement Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/likes/tiktok-likes Track total likes on your TikTok ads. Measure audience approval and basic positive engagement signals across campaigns. Total likes on your ad. Likes are a basic positive engagement signal. ## Formula **TikTok Likes** = **SUM** ( Likes ) || Metadata | | ||---|---| || **Type** | Number | || **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | || **Aggregation** | Sum | *** ## Example Your summer collection campaign received **12,847 likes** across all ad groups in June. | Campaign | Likes | Impressions | Like Rate | | ------------ | ----- | ----------- | --------- | | Summer Sale | 8,234 | 425,000 | 1.94% | | New Arrivals | 4,613 | 312,000 | 1.48% | *** ## How It Works TikTok counts each time a viewer taps the like (heart) button on your ad. One user can only like an ad once, making likes a unique engagement signal. Likes are aggregated at the campaign, ad group, or ad level. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------- | | Comparing creative performance | Higher likes indicate more resonant content | | Benchmarking engagement | Compare like rates across ad sets | | Identifying viral potential | Ads with high likes may spread organically | | Evaluating brand sentiment | Likes signal positive audience reception | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [TikTok Engagements](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements) | Total of all engagement types (includes likes) | | [TikTok Comments](/reference/metrics/advertising/tiktok-ads/comments/tiktok-comments) | Deeper engagement signal than likes | | [TikTok Shares](/reference/metrics/advertising/tiktok-ads/shares/tiktok-shares) | Highest engagement signal; extends organic reach | [See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Profile Visits Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/profile-visits All TikTok metrics for profile-visits — volume, value, and cost in one place. Metrics for profile visits across your TikTok campaigns: * [TikTok Profile Visits: Profile Traffic Metric](/reference/metrics/advertising/tiktok-ads/profile-visits/tiktok-profile-visits) * [TikTok Cost per Profile Visit: Profile Traffic Efficiency](/reference/metrics/advertising/tiktok-ads/profile-visits/tiktok-profile-visits-cost) # TikTok Profile Visits: Profile Traffic Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/profile-visits/tiktok-profile-visits Track how many users visited your TikTok profile after seeing your ad. Measure brand interest and profile engagement from paid campaigns. How many users visited your TikTok profile after seeing your ad. ## Formula **TikTok Profile Visits** = **SUM** ( Profile Visits ) || Metadata | | ||---|---| || **Type** | Number | || **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | || **Aggregation** | Sum | *** ## Example Your brand campaign drove **4,532 profile visits** across all ad groups in June. | Campaign | Profile Visits | Impressions | Visit Rate | | ------------ | -------------- | ----------- | ---------- | | Brand Story | 2,156 | 425,000 | 0.51% | | Product Demo | 1,534 | 312,000 | 0.49% | | UGC Content | 842 | 180,000 | 0.47% | *** ## How It Works TikTok counts each time a viewer taps on your profile from an ad. Profile visits indicate strong brand curiosity—users want to learn more about your brand before following or purchasing. This is a mid-funnel signal between ad view and follow. *** ## When to Use | Scenario | Action | | ------------------------ | --------------------------------------------------------- | | Measuring brand interest | High profile visits indicate curiosity about your brand | | Evaluating ad creative | Content that drives profile visits builds brand awareness | | Comparing funnel stages | Compare profile visits to follows to measure conversion | | Optimizing for discovery | Prioritize content that encourages profile exploration | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | | [TikTok Cost per Profile Visit](/reference/metrics/advertising/tiktok-ads/profile-visits/tiktok-profile-visits-cost) | Cost efficiency of driving profile traffic | | [TikTok Follows](/reference/metrics/advertising/tiktok-ads/follows/tiktok-follows) | Users who followed after visiting profile | | [TikTok Engagements](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements) | Total of all engagement types | [See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per Profile Visit: Profile Traffic Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/profile-visits/tiktok-profile-visits-cost Track the cost per profile visit from TikTok ads. Measure efficiency of driving users to your TikTok profile from paid campaigns. Average spend per profile visit from TikTok ads. ## Formula **TikTok Cost per Profile Visit** = [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Profile Visits**](/reference/metrics/advertising/tiktok-ads/profile-visits/tiktok-profile-visits) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok ads | | [**TikTok Profile Visits**](/reference/metrics/advertising/tiktok-ads/profile-visits/tiktok-profile-visits) | Number of users who visited your TikTok profile from ads | || Metadata | | ||---|---| || **Type** | Currency | || **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | || **Aggregation** | Ratio | *** ## Example A fashion brand ran profile-focused campaigns in April with **\$3,000 in TikTok spend** generating **2,500 profile visits**. | Campaign | Spend | Profile Visits | Cost per Visit | | ---------------- | ----------- | -------------- | -------------- | | Brand Story | \$1,500 | 1,500 | \$1.00 | | Creator Collab | \$1,000 | 750 | \$1.33 | | Product Showcase | \$500 | 250 | \$2.00 | | **Total** | **\$3,000** | **2,500** | **\$1.20** | *** ## How It Works TikTok Cost per Profile Visit divides your total ad spend by the number of profile visits attributed to your ads. This metric helps you understand the efficiency of campaigns designed to drive brand discovery and profile exploration. *** ## When to Use | Scenario | Action | | ------------------------------ | -------------------------------------------------------------- | | Comparing brand campaigns | Identify which creatives drive profile visits most efficiently | | Budget allocation | Shift spend toward lower cost-per-visit campaigns | | Measuring discovery efficiency | Track profile visit costs over time | | Funnel analysis | Compare cost per profile visit to cost per follow | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [TikTok Profile Visits](/reference/metrics/advertising/tiktok-ads/profile-visits/tiktok-profile-visits) | Denominator in this calculation | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Numerator in this calculation | | [TikTok Cost per Follow](/reference/metrics/advertising/tiktok-ads/follows/tiktok-follows-cost) | Related efficiency metric for follower acquisition | [See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Purchases Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/purchases All TikTok metrics for purchases — volume, value, and cost in one place. Metrics for purchases across your TikTok campaigns: * [TikTok Purchases: Track TikTok-Attributed Conversions](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases) * [TikTok Purchases Value: Track Ad-Attributed Revenue](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases-value) # TikTok Purchases: Track TikTok-Attributed Conversions Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases Track purchase conversions attributed to TikTok ads. Measure how many sales your TikTok campaigns generate. TikTok Purchases counts the total number of purchase conversions attributed to your TikTok ad campaigns. ## Formula **TikTok Purchases** = **COUNT** ( TikTok-Attributed Purchase Events ) ### Formula Components | Metric | Definition | | ------------------------------------- | -------------------------------------------------------------------------------------------- | | **TikTok-Attributed Purchase Events** | Purchase conversions tracked by the TikTok pixel and attributed to TikTok ad clicks or views | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Count | *** ## Example Your TikTok campaigns generated **847 purchases** last month across all ad groups. | Campaign | TikTok Purchases | TikTok Spend | Cost per Purchase | | ------------ | ---------------- | ------------ | ----------------- | | Summer Sale | 412 | \$8,240 | \$20.00 | | New Arrivals | 289 | \$7,225 | \$25.00 | | Retargeting | 146 | \$2,190 | \$15.00 | | **Total** | **847** | **\$17,655** | **\$20.84** | *** ## How It Works TikTok Purchases counts each purchase event that TikTok attributes to your ad campaigns. Attribution includes both click-through conversions (user clicked an ad before purchasing) and view-through conversions (user saw an ad before purchasing). The attribution window is configurable in your TikTok Ads Manager settings. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------- | | Measuring campaign effectiveness | Compare purchases across campaigns to identify top performers | | Calculating cost per acquisition | Divide TikTok Spend by TikTok Purchases for CPA | | Evaluating creative performance | Track which ad creatives drive the most purchases | | Budget allocation | Shift spend toward campaigns generating more purchases | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------- | --------------------------------------------------------- | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total cost of TikTok campaigns generating these purchases | | [TikTok ROAS](/reference/metrics/advertising/tiktok-ads/tiktok-return-on-ad-spend) | Return on ad spend calculated from purchase revenue | | [TikTok CPA](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-acquisition) | Cost per purchase acquisition | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Purchases Value: Track Ad-Attributed Revenue Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases-value Track total revenue from purchases attributed to your TikTok ads. Use purchases value to measure campaign profitability, calculate ROAS, and optimize budget allocation. Total revenue from purchases that TikTok attributes to your advertising campaigns. ## Formula **TikTok Purchases Value** = **SUM** ( Purchase Revenue ) ### Formula Components | Metric | Definition | | -------------------- | --------------------------------------------------------------------------------------- | | **Purchase Revenue** | The transaction value recorded when a tracked purchase event fires after ad interaction | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your TikTok campaigns generated **\$24,650 in attributed revenue** last month across 412 purchases. | Campaign | Purchases | Purchases Value | Avg. Order Value | | ----------------- | --------- | --------------- | ---------------- | | Spring Collection | 248 | \$15,120 | \$61 | | Flash Sale | 164 | \$9,530 | \$58 | | **Total** | **412** | **\$24,650** | **\$60** | *** ## How It Works TikTok tracks purchases that occur after users interact with your ads within your attribution window. When a tracked purchase event fires, TikTok records the transaction value and attributes it to the ad that drove the conversion. *** ## When to Use | Scenario | Action | | -------------------------- | ------------------------------------------------------------------- | | Measuring campaign revenue | Compare purchases value across campaigns to identify top performers | | Calculating ROAS | Divide purchases value by spend to get return on ad spend | | Budget allocation | Shift spend toward campaigns generating highest revenue | | Profitability analysis | Subtract ad spend from purchases value to assess net return | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ---------------------------------------------- | | [TikTok Purchases](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases) | Count of purchases that generated this revenue | | [TikTok ROAS](/reference/metrics/advertising/tiktok-ads/tiktok-return-on-ad-spend) | Revenue return per dollar spent | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Ad budget used to generate this revenue | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Schedules Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/schedules All TikTok metrics for schedules — volume, value, and cost in one place. Metrics for schedules across your TikTok campaigns: * [TikTok Schedules: Ad-Attributed Appointment Bookings](/reference/metrics/advertising/tiktok-ads/schedules/tiktok-schedules) * [TikTok Cost per Schedule: Booking Efficiency Metric](/reference/metrics/advertising/tiktok-ads/schedules/tiktok-schedules-cost) * [TikTok Schedules Value: Total Revenue from Schedule Events](/reference/metrics/advertising/tiktok-ads/schedules/tiktok-schedules-value) # TikTok Schedules: Ad-Attributed Appointment Bookings Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/schedules/tiktok-schedules Track schedule events attributed to your TikTok ads. Measure appointment bookings, demo requests, and consultation sign-ups driven by TikTok campaigns. TikTok Schedules counts the number of schedule events (appointment bookings, demo requests, consultation sign-ups) that TikTok attributes to your ads. ## Formula **TikTok Schedules** = **COUNT** ( TikTok-Attributed Schedule Events ) ### Formula Components | Metric | Definition | | ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | | **TikTok-Attributed Schedule Events** | Appointment bookings, demo requests, or consultation sign-ups that occur within TikTok's attribution window after ad interaction | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example **Your salon ran a TikTok campaign promoting online booking.** Over the week, 156 users clicked through and scheduled appointments. | Day | Schedules | Spend | Cost per Schedule | | --------- | --------- | --------- | ----------------- | | Monday | 28 | \$140 | \$5.00 | | Tuesday | 31 | \$155 | \$5.00 | | Wednesday | 22 | \$132 | \$6.00 | | Thursday | 35 | \$140 | \$4.00 | | Friday | 40 | \$160 | \$4.00 | | **Total** | **156** | **\$727** | **\$4.66** | *** ## How It Works TikTok tracks when users complete a schedule event (appointment booking, demo request, or consultation sign-up) after interacting with your ad. Attribution follows TikTok's click-through and view-through windows, crediting your ad when the booking occurs within the attribution period. *** ## When to Use | Scenario | Action | | ----------------------- | ------------------------------------------ | | Service-based campaigns | Track bookings driven by TikTok ads | | B2B demo requests | Measure demo sign-ups from ad traffic | | Consultation funnels | Monitor consultation bookings per campaign | | Scheduling efficiency | Compare cost per schedule across ad sets | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------- | ---------------------------------- | | [TikTok Cost per Schedule](/reference/metrics/advertising/tiktok-ads/schedules/tiktok-schedules-cost) | Cost efficiency per booking | | [TikTok Schedules Value](/reference/metrics/advertising/tiktok-ads/schedules/tiktok-schedules-value) | Revenue value of bookings | | [TikTok Leads](/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads) | Alternative lead conversion metric | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per Schedule: Booking Efficiency Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/schedules/tiktok-schedules-cost Track TikTok Cost per Schedule to measure how efficiently your ads drive appointment bookings and scheduling events. TikTok Cost per Schedule measures the average ad spend required to generate one schedule event from your TikTok campaigns. ## Formula **TikTok Cost per Schedule** = [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Schedules**](/reference/metrics/advertising/tiktok-ads/schedules/tiktok-schedules) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | ---------------------------------------- | | [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok advertising | | [**TikTok Schedules**](/reference/metrics/advertising/tiktok-ads/schedules/tiktok-schedules) | Schedule events attributed to TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example A wellness brand spent **\$2,400** on TikTok ads in March, generating **120 appointment bookings**. | Metric | Value | Calculation | | --------------------- | ----------- | ------------- | | TikTok Spend | \$2,400 | — | | TikTok Schedules | 120 | — | | **Cost per Schedule** | **\$20.00** | \$2,400 ÷ 120 | *** ## How It Works TikTok reports schedule events when users complete booking actions after interacting with your ads. This metric divides your total TikTok ad spend by the number of schedule events to show the average cost of acquiring each booking. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------- | | High cost per schedule | Test new creative or audience targeting | | Comparing campaign efficiency | Identify which campaigns drive bookings cheapest | | Budget planning | Estimate spend needed for booking volume goals | | Benchmarking against CPA | Compare schedule acquisition cost to purchase CPA | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | -------------------------------------- | | [TikTok Schedules](/reference/metrics/advertising/tiktok-ads/schedules/tiktok-schedules) | The denominator — total booking events | | [TikTok CPA](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-acquisition) | Cost per purchase for comparison | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | The numerator — total ad investment | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Schedules Value: Total Revenue from Schedule Events Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/schedules/tiktok-schedules-value Track total value of schedule events from TikTok ads. Measure revenue from appointment bookings attributed to your TikTok campaigns. The combined monetary value of all schedule events attributed to your TikTok ads. ## Formula **TikTok Schedules Value** = **SUM** ( Schedule Values ) ### Formula Components | Metric | Definition | | ------------------- | -------------------------------------------------------------------------------------------- | | **Schedule Values** | The monetary value assigned to each schedule event (appointment booking, consultation, etc.) | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your TikTok campaigns generated **\$12,400** in schedule value from 62 appointments this month: | Campaign | Schedules | Value | Avg Value | | ------------ | --------- | ------- | --------- | | Spring Sale | 38 | \$7,600 | \$200 | | New Customer | 24 | \$4,800 | \$200 | *** ## How It Works TikTok Schedules Value sums the monetary value of each schedule event that TikTok attributes to your ads. Schedule events capture appointment bookings, consultations, and other scheduled interactions. Values are reported by TikTok based on the event data you pass to their pixel. *** ## When to Use | Scenario | Action | | ------------------------- | --------------------------------------------------------- | | Measuring booking revenue | Track total revenue from scheduled appointments | | Comparing campaign value | Identify which campaigns drive highest-value bookings | | Calculating schedule ROI | Divide by ad spend to find return on schedule events | | Optimizing for value | Shift budget toward campaigns with higher schedule values | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [TikTok Schedules](/reference/metrics/advertising/tiktok-ads/schedules/tiktok-schedules) | Count of events (this metric sums their values) | | [TikTok Cost per Schedule](/reference/metrics/advertising/tiktok-ads/schedules/tiktok-schedules-cost) | TikTok Spend ÷ Schedules | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Searches Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/searches All TikTok metrics for searches — volume, value, and cost in one place. Metrics for searches across your TikTok campaigns: * [TikTok Searches: Attributed Search Events](/reference/metrics/advertising/tiktok-ads/searches/tiktok-searches) * [TikTok Cost per Search: Measure Search Event Efficiency](/reference/metrics/advertising/tiktok-ads/searches/tiktok-searches-cost) * [TikTok Searches Value: Total Value from Search Events](/reference/metrics/advertising/tiktok-ads/searches/tiktok-searches-value) # TikTok Searches: Attributed Search Events Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/searches/tiktok-searches Track search events TikTok attributes to your ads. Measure how effectively your campaigns drive site search activity and product discovery. TikTok Searches counts how many on-site search events TikTok attributes to your ads. ## Formula **TikTok Searches** = **COUNT** ( TikTok-Attributed Search Events ) ### Formula Components | Metric | Definition | | ----------------------------------- | ---------------------------------------------------------------------------- | | **TikTok-Attributed Search Events** | On-site search actions performed by users after interacting with a TikTok ad | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your TikTok campaign generated **842 searches** in March. Users clicked your ads and searched for products on your site, indicating strong purchase intent. | Campaign | Searches | Add to Carts | Conversion | | ----------------- | -------- | ------------ | ---------- | | Spring Collection | 512 | 287 | 56% | | New Arrivals | 330 | 156 | 47% | *** ## How It Works TikTok fires a search event when a user performs an on-site search after interacting with your ad. Attribution follows TikTok's default window (typically 7-day click, 1-day view). Higher search counts indicate your ads drive product discovery. *** ## When to Use | Scenario | Action | | ---------------------------------- | --------------------------------------------------------- | | Evaluating brand awareness | More searches suggest users want to explore your catalog | | Optimizing top-of-funnel campaigns | Track search-to-purchase ratio | | Comparing creative performance | Higher searches indicate more curiosity-driven engagement | | Identifying high-intent audiences | Audiences that search often convert better | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------- | ----------------------------------- | | [TikTok Cost per Search](/reference/metrics/advertising/tiktok-ads/searches/tiktok-searches-cost) | Efficiency of driving search events | | [TikTok Searches Value](/reference/metrics/advertising/tiktok-ads/searches/tiktok-searches-value) | Monetary value of search activity | | [TikTok Purchases](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases) | Downstream conversion from searches | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per Search: Measure Search Event Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/searches/tiktok-searches-cost Track your TikTok cost per search to measure how efficiently your ads drive site search activity. Lower costs mean better product discovery performance. Average spend per search event from your TikTok ads—a key indicator of how efficiently your campaigns drive product discovery and site engagement. ## Formula **TikTok Cost per Search** = [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Searches**](/reference/metrics/advertising/tiktok-ads/searches/tiktok-searches) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on your TikTok ads | | [**TikTok Searches**](/reference/metrics/advertising/tiktok-ads/searches/tiktok-searches) | Number of search events attributed to your TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your TikTok awareness campaign spent **\$1,800** last week and drove **600 search events** on your site. | Campaign | Spend | Searches | Cost/Search | | --------------- | ----------- | -------- | ----------- | | Spring Lookbook | \$1,200 | 480 | \$2.50 | | New Arrivals | \$600 | 120 | \$5.00 | | **Total** | **\$1,800** | **600** | **\$3.00** | *** ## How It Works TikTok tracks search events through its Pixel or Events API when users perform on-site searches after interacting with your ad. Upstack calculates cost per search by dividing your total TikTok ad spend by the number of attributed search events during the selected period. *** ## When to Use | Scenario | Action | | ------------------------------------- | -------------------------------------------------------------- | | Evaluating brand awareness efficiency | Compare cost/search across campaigns to find best performers | | Creative testing | Lower cost/search signals more curiosity-driven engagement | | Audience optimization | Identify which audiences explore your catalog most efficiently | | Budget allocation | Shift spend toward campaigns with lower cost per search | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [TikTok Searches](/reference/metrics/advertising/tiktok-ads/searches/tiktok-searches) | The denominator—total search events | | [TikTok CPA](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-acquisition) | Cost per purchase—measures full conversion efficiency | | [TikTok Searches Value](/reference/metrics/advertising/tiktok-ads/searches/tiktok-searches-value) | Monetary value of search activity | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Searches Value: Total Value from Search Events Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/searches/tiktok-searches-value Track the total monetary value of search events from your TikTok ads. Learn how search value measures conversion quality and campaign ROI. The combined monetary value of all search events attributed to your TikTok ads. ## Formula **TikTok Searches Value** = **SUM** ( Search Values ) ### Formula Components | Metric | Definition | | ----------------- | ---------------------------------------------------------------------- | | **Search Values** | The dollar value assigned to each search event from TikTok ad visitors | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your TikTok campaigns drove **\$8,450** in search value from 1,690 search events this month: | Campaign | Searches | Search Value | Avg Value | | ----------------- | -------- | ------------ | --------- | | Spring Collection | 820 | \$4,510 | \$5.50 | | New Arrivals | 540 | \$2,430 | \$4.50 | | Clearance Sale | 330 | \$1,510 | \$4.58 | *** ## How It Works TikTok Searches Value sums the monetary value assigned to each search event from visitors who clicked your TikTok ads. This value reflects user intent—visitors actively searching for products after engaging with your ads signal strong purchase consideration. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------------------ | | Measuring search intent quality | Compare search values across campaigns to identify high-intent audiences | | Evaluating cost efficiency | Divide by TikTok Cost per Search to assess ROI | | Optimizing ad targeting | Shift budget toward audiences generating higher search values | | Funnel analysis | Track how search behavior correlates with downstream conversions | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [TikTok Searches](/reference/metrics/advertising/tiktok-ads/searches/tiktok-searches) | Count of search events (this metric sums their values) | | [TikTok Cost per Search](/reference/metrics/advertising/tiktok-ads/searches/tiktok-searches-cost) | Ad Spend ÷ Searches—measure efficiency | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Shares Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/shares All TikTok metrics for shares — volume, value, and cost in one place. Metrics for shares across your TikTok campaigns: * [TikTok Shares: Ad Engagement Metric](/reference/metrics/advertising/tiktok-ads/shares/tiktok-shares) # TikTok Shares: Ad Engagement Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/shares/tiktok-shares Track how many times your TikTok ads were shared. Measure viral potential and organic reach extension from paid campaigns. How many times your ad was shared. Shares extend your audience organically at no extra cost. ## Formula **TikTok Shares** = **SUM** ( Shares ) || Metadata | | ||---|---| || **Type** | Number | || **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | || **Aggregation** | Sum | *** ## Example Your brand campaign generated **3,245 shares** across all ad groups in June. | Campaign | Shares | Impressions | Share Rate | | --------------- | ------ | ----------- | ---------- | | Viral Challenge | 2,156 | 425,000 | 0.51% | | Product Demo | 734 | 312,000 | 0.24% | | Brand Story | 355 | 180,000 | 0.20% | *** ## How It Works TikTok counts each time a viewer shares your ad to their followers, friends, or other platforms. Shares represent the highest level of engagement—users actively distribute your content to their network. Each share extends your organic reach at no additional cost. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------ | | Identifying viral content | High share rates indicate content worth boosting | | Measuring organic amplification | Shares extend reach beyond paid impressions | | Comparing creative performance | Shareable content resonates most with audiences | | Optimizing for awareness | Prioritize ad formats that encourage sharing | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [TikTok Engagements](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements) | Total of all engagement types (includes shares) | | [TikTok Likes](/reference/metrics/advertising/tiktok-ads/likes/tiktok-likes) | Lighter engagement signal than shares | | [TikTok Comments](/reference/metrics/advertising/tiktok-ads/comments/tiktok-comments) | Indicates audience discussion and interest | [See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Subscribes Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/subscribes All TikTok metrics for subscribes — volume, value, and cost in one place. Metrics for subscribes across your TikTok campaigns: * [TikTok Subscribes: Attributed Subscription Events](/reference/metrics/advertising/tiktok-ads/subscribes/tiktok-subscribes) * [TikTok Cost per Subscribe: Subscription Campaign Efficiency](/reference/metrics/advertising/tiktok-ads/subscribes/tiktok-subscribes-cost) * [TikTok Subscribes Value: Track Subscription Revenue from Ads](/reference/metrics/advertising/tiktok-ads/subscribes/tiktok-subscribes-value) # TikTok Subscribes: Attributed Subscription Events Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/subscribes/tiktok-subscribes Track subscribe events TikTok attributes to your ads. Measure newsletter signups, service subscriptions, and recurring revenue conversions from TikTok campaigns. TikTok Subscribes counts how many subscribe events TikTok attributes to your ads. ## Formula **TikTok Subscribes** = **COUNT** ( TikTok-Attributed Subscribe Events ) ### Formula Components | Metric | Definition | | -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | | **TikTok-Attributed Subscribe Events** | Subscribe events (newsletter signups, trial starts, memberships) where TikTok attributed the conversion to an ad interaction | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your TikTok campaign generated **1,247 subscribes** in Q1. Users signed up for your newsletter or subscription service after engaging with your ads, building your recurring customer base. | Campaign | Subscribes | Cost/Subscribe | LTV Impact | | --------------- | ---------- | -------------- | ---------- | | Loyalty Program | 782 | \$2.45 | High | | Newsletter Push | 465 | \$1.89 | Medium | *** ## How It Works TikTok fires a subscribe event when a user completes a subscription action after interacting with your ad—such as signing up for a newsletter, starting a trial, or joining a membership program. Attribution follows TikTok's default window (typically 7-day click, 1-day view). *** ## When to Use | Scenario | Action | | -------------------------------- | ---------------------------------------------- | | Building email lists | Track newsletter signups from TikTok traffic | | Launching subscription services | Measure trial starts and membership signups | | Evaluating campaign ROI | Compare subscribe cost to subscriber LTV | | Optimizing for recurring revenue | Focus on campaigns with higher subscribe rates | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | --------------------------------------- | | [TikTok Cost per Subscribe](/reference/metrics/advertising/tiktok-ads/subscribes/tiktok-subscribes-cost) | Efficiency of driving subscribe events | | [TikTok Subscribes Value](/reference/metrics/advertising/tiktok-ads/subscribes/tiktok-subscribes-value) | Monetary value of subscription activity | | [TikTok Purchases](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases) | Downstream conversion from subscribers | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per Subscribe: Subscription Campaign Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/subscribes/tiktok-subscribes-cost Track the cost per subscribe event from your TikTok ads. Measure subscription campaign efficiency and optimize your audience targeting for lower acquisition costs. TikTok Cost per Subscribe measures the average spend required to generate one subscribe event from your TikTok ads. ## Formula **TikTok Cost per Subscribe** = [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Subscribes**](/reference/metrics/advertising/tiktok-ads/subscribes/tiktok-subscribes) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------- | --------------------------------------------------- | | [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok advertising | | [**TikTok Subscribes**](/reference/metrics/advertising/tiktok-ads/subscribes/tiktok-subscribes) | Number of subscribe events attributed to TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example A subscription box company spent **\$6,000** on TikTok ads in April and generated **240 new subscribers**. | Month | Ad Spend | Subscribes | Cost per Subscribe | | -------- | -------- | ---------- | ------------------ | | February | \$4,200 | 140 | \$30.00 | | March | \$5,000 | 180 | \$27.78 | | April | \$6,000 | 240 | \$25.00 | April's cost per subscribe of **\$25.00** shows a 10% improvement from refined audience targeting. *** ## How It Works TikTok tracks subscribe events when users complete subscription sign-ups attributed to your ads. This metric divides total ad spend by subscribe events to show your average acquisition cost per subscriber. *** ## When to Use | Scenario | Action | | --------------------- | ---------------------------------------------------------------------- | | Evaluating campaigns | Compare cost per subscribe across campaigns to identify top performers | | Budget planning | Calculate required spend for subscriber acquisition goals | | Creative testing | A/B test ad creatives and measure impact on subscription cost | | Audience optimization | Refine targeting to lower cost per subscribe | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [TikTok Subscribes](/reference/metrics/advertising/tiktok-ads/subscribes/tiktok-subscribes) | Denominator—total subscribes driving this calculation | | [TikTok CPA](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-acquisition) | Similar efficiency metric for purchase conversions | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Subscribes Value: Track Subscription Revenue from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/subscribes/tiktok-subscribes-value Track total value of subscribe events attributed to your TikTok ads. Use subscribes value to measure subscription campaign performance and optimize ad spend. Total dollar value of subscribe events that TikTok attributes to your advertising campaigns. ## Formula **TikTok Subscribes Value** = **SUM** ( Subscribe Values ) ### Formula Components | Metric | Definition | | -------------------- | ------------------------------------------------------------------------ | | **Subscribe Values** | Dollar amounts assigned to individual subscribe events tracked by TikTok | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your TikTok campaigns generated **\$8,450 in subscription value** last month from 169 subscribe events. | Campaign | Subscribes | Value | Avg. Value | | ----------------- | ---------- | ----------- | ---------- | | Newsletter Signup | 102 | \$5,100 | \$50 | | Premium Tier | 67 | \$3,350 | \$50 | | **Total** | **169** | **\$8,450** | **\$50** | *** ## How It Works TikTok tracks subscribe events that occur after users interact with your ads within your attribution window. When a tracked subscribe event fires with an assigned value, TikTok records that value and attributes it to the ad that drove the conversion. *** ## When to Use | Scenario | Action | | ------------------------------ | -------------------------------------------------------------------- | | Measuring subscription revenue | Compare subscribes value across campaigns to identify top performers | | Evaluating cost efficiency | Divide value by Cost per Subscribe to assess return on acquisition | | Budget allocation | Shift spend toward campaigns generating highest subscription value | | Subscription campaign ROI | Compare subscribes value against ad spend to gauge profitability | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | | [TikTok Subscribes](/reference/metrics/advertising/tiktok-ads/subscribes/tiktok-subscribes) | Count of subscribe events that generated this value | | [TikTok Cost per Subscribe](/reference/metrics/advertising/tiktok-ads/subscribes/tiktok-subscribes-cost) | Average spend per subscribe event | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok CTR: Click-Through Rate on TikTok Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-click-through-rate Track how often people click your TikTok ad after seeing it. Higher CTR signals more engaging creative or targeting. Optimize ad performance. TikTok CTR measures how often people click your ad after seeing it. Higher CTR signals more engaging creative or targeting. ## Formula **TikTok CTR** = ( [**TikTok Clicks**](/reference/metrics/advertising/tiktok-ads/tiktok-clicks) ÷ [**TikTok Impressions**](/reference/metrics/advertising/tiktok-ads/tiktok-impressions) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | -------------------------------------- | | [**TikTok Clicks**](/reference/metrics/advertising/tiktok-ads/tiktok-clicks) | Total clicks on your TikTok ads | | [**TikTok Impressions**](/reference/metrics/advertising/tiktok-ads/tiktok-impressions) | Total times your TikTok ads were shown | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Percentage | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your TikTok campaign received **25,000 clicks** from **1,250,000 impressions** in January: | Ad Group | Impressions | Clicks | CTR | | ----------- | ------------- | ---------- | --------- | | Prospecting | 750,000 | 12,000 | 1.60% | | Retargeting | 300,000 | 9,000 | 3.00% | | Lookalike | 200,000 | 4,000 | 2.00% | | **Total** | **1,250,000** | **25,000** | **2.00%** | *** ## How It Works TikTok CTR divides clicks by impressions and multiplies by 100 to express the result as a percentage. A 2% CTR means 2 out of every 100 people who saw your ad clicked on it. CTR reflects how compelling your creative and targeting are—higher rates typically indicate stronger audience resonance. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------------------------- | | Creative testing | Compare CTR across video variations to identify winners | | Audience quality | Higher CTR suggests better targeting alignment | | Platform benchmarking | Compare TikTok CTR to other channels | | Performance diagnosis | Declining CTR may signal creative fatigue | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | -------------------------------------------- | | [TikTok Clicks](/reference/metrics/advertising/tiktok-ads/tiktok-clicks) | Numerator — total clicks on ads | | [TikTok Impressions](/reference/metrics/advertising/tiktok-ads/tiktok-impressions) | Denominator — total ad views | | [TikTok CPC](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-click) | Cost per click — higher CTR often lowers CPC | [See all TikTok Clicks metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Clicks: Total Clicks on Your TikTok Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-clicks Track total clicks on your TikTok ads including destination clicks and other interactions. Measure ad engagement and traffic volume. TikTok Clicks measures the total number of clicks on your TikTok ads, including destination clicks and other interactions. ## Formula **TikTok Clicks** = **SUM** ( Clicks ) **FROM** TikTok Ads | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your TikTok campaign received **18,500 clicks** in March across all ad groups: | Ad Group | Clicks | % of Total | | ----------- | ---------- | ---------- | | Prospecting | 11,100 | 60% | | Retargeting | 5,550 | 30% | | Lookalike | 1,850 | 10% | | **Total** | **18,500** | **100%** | *** ## How It Works TikTok Clicks counts every interaction that registers as a click on your ad. This includes taps on the call-to-action button, profile visits, and destination clicks that send users to your website or app. The metric updates in near real-time as TikTok processes ad engagement data. *** ## When to Use | Scenario | Action | | -------------------- | ---------------------------------------------------------- | | Measuring engagement | Track clicks to gauge audience interest in your creative | | Calculating CPC | Use clicks as the denominator to determine cost efficiency | | Comparing ad sets | Identify which targeting or creative drives more clicks | | Forecasting traffic | Estimate website visitors based on historical click rates | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | ------------------------------------------ | | [TikTok CPC](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-click) | Cost efficiency — spend divided by clicks | | [TikTok CTR](/reference/metrics/advertising/tiktok-ads/tiktok-click-through-rate) | Click rate — clicks divided by impressions | | [TikTok Landing Page Views](/reference/metrics/advertising/tiktok-ads/tiktok-landing-page-views) | Clicks that fully loaded your page | [See all TikTok Clicks metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Complete Registrations: Account Signups from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-complete-registrations Track completed registration events from your TikTok ads. Measure account signups and user acquisitions attributed to your TikTok campaigns. The number of completed registration events TikTok attributes to your ads. ## Formula **TikTok Complete Registrations** = **COUNT** ( TikTok-Attributed Registration Events ) ### Formula Components | Metric | Definition | | ----------------------------------------- | -------------------------------------------------------------------------- | | **TikTok-Attributed Registration Events** | CompleteRegistration events fired by the TikTok Pixel after ad interaction | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Count | *** ## Example Your signup campaign generated **842 registrations** this week across three ad groups: | Ad Group | Registrations | Cost per Registration | | ------------------- | ------------- | --------------------- | | Lookalike Audiences | 412 | \$2.85 | | Interest Targeting | 287 | \$3.42 | | Retargeting | 143 | \$1.94 | *** ## How It Works TikTok counts a completed registration when a user triggers the `CompleteRegistration` event on your site or app after interacting with your ad. This event is typically fired after account creation, email verification, or form submission. Attribution follows TikTok's configured click and view windows. *** ## When to Use | Scenario | Action | | --------------------------------- | -------------------------------------------------------------- | | Measuring user acquisition | Track how many new accounts your ads generate | | Optimizing signup campaigns | Compare registration rates across ad groups | | Calculating cost per registration | Divide spend by registrations to find acquisition cost | | Evaluating lead quality | Compare registrations to downstream conversions like purchases | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | | [TikTok Cost per Completed Registration](/reference/metrics/advertising/tiktok-ads/tiktok-complete-registrations-cost) | Spend ÷ Registrations | | [TikTok Completed Registrations Value](/reference/metrics/advertising/tiktok-ads/tiktok-complete-registrations-value) | Total value assigned to registrations | | [TikTok Leads](/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads) | Another top-of-funnel conversion event | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per Registration: Ad Efficiency Metric Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-complete-registrations-cost Track your cost per completed registration from TikTok ads. Measure registration acquisition efficiency and optimize signup campaigns. TikTok Cost per Registration measures the average amount you spend on TikTok ads to acquire one completed registration. ## Formula **TikTok Cost per Registration** = [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Complete Registrations**](/reference/metrics/advertising/tiktok-ads/tiktok-complete-registrations) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------------ | -------------------------------------------- | | [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok advertising | | [**TikTok Complete Registrations**](/reference/metrics/advertising/tiktok-ads/tiktok-complete-registrations) | Total registrations attributed to TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example A DTC brand spent **\$2,400** on TikTok registration campaigns and generated **120 complete registrations**. | Metric | Value | | ------------------------- | ----------- | | TikTok Spend | \$2,400 | | Complete Registrations | 120 | | **Cost per Registration** | **\$20.00** | *** ## How It Works Upstack calculates this metric by dividing your total TikTok ad spend by the number of complete registrations attributed to those ads. Lower values indicate more efficient registration acquisition from your TikTok campaigns. *** ## When to Use | Scenario | Action | | ------------------------------------- | ---------------------------------------------------- | | Evaluating signup campaign efficiency | Compare cost per registration across ad sets | | Budget allocation decisions | Shift spend toward lower-cost registration sources | | Campaign optimization | Identify which creatives drive cheaper registrations | | Benchmarking performance | Track cost per registration trends over time | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | ----------------------------------- | | [TikTok Complete Registrations](/reference/metrics/advertising/tiktok-ads/tiktok-complete-registrations) | The denominator in this calculation | | [TikTok Cost per Lead](/reference/metrics/advertising/tiktok-ads/leads/tiktok-leads-cost) | Similar efficiency metric for leads | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | The numerator in this calculation | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Complete Registrations Value: Revenue from Signups Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-complete-registrations-value Track total value of completed registrations attributed to TikTok ads. Measure signup revenue, optimize registration campaigns, and calculate cost efficiency. The combined monetary value of all completed registrations attributed to your TikTok ads. ## Formula **TikTok Complete Registrations Value** = **SUM** ( Registration Values ) ### Formula Components | Metric | Definition | | ----------------------- | ---------------------------------------------------------------- | | **Registration Values** | The monetary value assigned to each completed registration event | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your TikTok registration campaigns generated **\$12,400** in value from 620 completed signups this month: | Campaign | Registrations | Value | Avg Value | | ---------------------- | ------------- | ------- | --------- | | Lead Gen - Fitness App | 340 | \$6,800 | \$20.00 | | Free Trial - SaaS | 180 | \$3,600 | \$20.00 | | Newsletter Signup | 100 | \$2,000 | \$20.00 | *** ## How It Works Registration Value sums the monetary value assigned to each completed registration event. TikTok attributes registrations to your ads based on view-through and click-through windows. Values are typically set as a fixed amount per registration or calculated from expected customer lifetime value. *** ## When to Use | Scenario | Action | | ----------------------------- | ---------------------------------------------------------------------- | | Evaluating lead gen campaigns | Compare total registration value across campaigns | | Calculating registration ROAS | Divide Registration Value by TikTok Spend | | Optimizing signup flow | Identify which creatives drive the highest-value registrations | | Budget planning | Allocate spend toward campaigns generating the most registration value | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------ | | [TikTok Complete Registrations](/reference/metrics/advertising/tiktok-ads/tiktok-complete-registrations) | Count of registrations (this metric sums their values) | | [TikTok Cost per Registration](/reference/metrics/advertising/tiktok-ads/tiktok-complete-registrations-cost) | TikTok Spend ÷ Completed Registrations | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok CPA: Cost Per Acquisition Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-acquisition Track TikTok CPA to measure how much you spend for each TikTok-attributed purchase. Lower CPA means more efficient ad spend. TikTok CPA measures how much you spend on average for each purchase TikTok attributes to your ads—lower is better. ## Formula **TikTok CPA** = [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Purchases**](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | ------------------------------------------------- | | [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok ads | | [**TikTok Purchases**](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases) | Number of purchases TikTok attributes to your ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your TikTok campaigns spent **\$12,000** and TikTok reported **400 attributed purchases**. | Metric | Value | Calculation | | ---------------- | ----------- | ---------------------- | | TikTok Spend | \$12,000 | Total ad spend | | TikTok Purchases | 400 | Attributed conversions | | **TikTok CPA** | **\$30.00** | \$12,000 ÷ 400 | *** ## How It Works TikTok CPA divides your total TikTok ad spend by the number of purchases TikTok attributes to those ads. This attribution uses TikTok's click and view windows to connect ad interactions with conversions. A lower CPA indicates more efficient customer acquisition from your TikTok advertising. *** ## When to Use | Scenario | Action | | ------------------------------ | --------------------------------------------------------------- | | Campaign efficiency comparison | Compare CPA across campaigns to identify top performers | | Budget allocation decisions | Shift budget toward campaigns with lower CPA | | Scaling evaluation | Monitor CPA as you increase spend to catch efficiency drops | | Creative testing | Use CPA to measure which ad creatives drive cheaper conversions | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | [TikTok ROAS](/reference/metrics/advertising/tiktok-ads/tiktok-return-on-ad-spend) | Revenue efficiency counterpart to cost efficiency | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Numerator in CPA calculation | | [TikTok Purchases](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases) | Denominator in CPA calculation | | [TikTok Purchases Value](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases-value) | Revenue generated from TikTok purchases | [See all TikTok Efficiency metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok CPC: Average Cost Per Click on TikTok Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-click Track your average cost per click on TikTok ads. Lower CPC means you are driving traffic more efficiently. Optimize ad spend allocation. TikTok CPC measures the average cost each time someone clicks your TikTok ad. Lower CPC means you are driving traffic more efficiently. ## Formula **TikTok CPC** = [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Clicks**](/reference/metrics/advertising/tiktok-ads/tiktok-clicks) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | -------------------------------- | | [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok ads | | [**TikTok Clicks**](/reference/metrics/advertising/tiktok-ads/tiktok-clicks) | Total clicks on your TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your brand spent **\$4,500** on TikTok ads in February and received **15,000 clicks**: | Ad Group | Spend | Clicks | CPC | | ----------- | ----------- | ---------- | ---------- | | Prospecting | \$2,250 | 9,000 | \$0.25 | | Retargeting | \$1,500 | 4,500 | \$0.33 | | Lookalike | \$750 | 1,500 | \$0.50 | | **Total** | **\$4,500** | **15,000** | **\$0.30** | *** ## How It Works TikTok CPC divides your total TikTok ad spend by the number of clicks received. This weighted average reflects your true cost to drive one click across all campaigns. A lower CPC indicates more efficient traffic acquisition, though click quality and conversion rate matter more than raw click cost. *** ## When to Use | Scenario | Action | | --------------------- | ---------------------------------------------------- | | Budget planning | Estimate clicks you can generate from a given budget | | Creative testing | Compare CPC across ad variations to find winners | | Platform comparison | Benchmark TikTok CPC against Meta or Google | | Optimization triggers | Pause or adjust campaigns with rising CPC | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------- | ------------------------------------------------------- | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Numerator — total cost of TikTok ads | | [TikTok Clicks](/reference/metrics/advertising/tiktok-ads/tiktok-clicks) | Denominator — total clicks received | | [TikTok CTR](/reference/metrics/advertising/tiktok-ads/tiktok-click-through-rate) | Click rate — higher CTR often correlates with lower CPC | [See all TikTok Clicks metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok CPM: Cost Per 1,000 Impressions Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-mille Track how much you pay for every 1,000 TikTok ad impressions. Lower CPM means cheaper reach to your target audience. TikTok CPM measures how much you pay for every 1,000 times your ad is shown — lower CPM means cheaper impressions. ## Formula **TikTok CPM** = [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Impressions**](/reference/metrics/advertising/tiktok-ads/tiktok-impressions) × 1,000 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | -------------------------------------- | | [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok ads | | [**TikTok Impressions**](/reference/metrics/advertising/tiktok-ads/tiktok-impressions) | Number of times ads appeared on screen | || Metadata | | ||---|---| || **Type** | Currency | || **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | || **Aggregation** | Ratio | *** ## Example Your TikTok campaign spent **\$5,000** and delivered **1,250,000 impressions** last month. | Metric | Value | | ------------------ | ---------- | | TikTok Spend | \$5,000 | | TikTok Impressions | 1,250,000 | | **TikTok CPM** | **\$4.00** | Calculation: \$5,000 ÷ 1,250,000 × 1,000 = **\$4.00 CPM** *** ## How It Works CPM divides your total ad spend by the number of impressions, then multiplies by 1,000 to express cost per thousand views. TikTok CPM varies by audience competitiveness, ad placement, time of year, and creative quality. Broader targeting typically yields lower CPMs while niche audiences cost more. *** ## When to Use | Scenario | Action | | ------------------------------------ | ----------------------------------------------------------------------------------- | | Comparing reach efficiency | Lower CPM means you're reaching more people for the same budget | | Evaluating audience targeting | Narrow audiences often have higher CPMs — assess if the precision is worth the cost | | Seasonal budget planning | CPMs rise during peak seasons (holidays, events) — plan accordingly | | Benchmarking against other platforms | Compare TikTok CPM to Meta or Google to allocate budget efficiently | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | --------------------------------------------------- | | [TikTok Impressions](/reference/metrics/advertising/tiktok-ads/tiktok-impressions) | Denominator in CPM calculation — total ad views | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Numerator in CPM calculation — total cost | | [TikTok CPC](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-click) | Cost per click — efficiency metric for engagement | | [TikTok CTR](/reference/metrics/advertising/tiktok-ads/tiktok-click-through-rate) | Click-through rate — measures ad engagement quality | [See all TikTok Audience metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Engagement Rate: Measure Content Resonance Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-engagement-rate Calculate TikTok ad engagement rate as a percentage of impressions. Learn the formula, see benchmarks, and optimize your creative performance. Engagements divided by impressions. Higher rates indicate more compelling content. ## Formula **TikTok Engagement Rate** = ( [**TikTok Engagements**](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements) ÷ [**TikTok Impressions**](/reference/metrics/advertising/tiktok-ads/tiktok-impressions) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | | [**TikTok Engagements**](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements) | Total interactions including likes, comments, shares, and clicks | | [**TikTok Impressions**](/reference/metrics/advertising/tiktok-ads/tiktok-impressions) | Number of times your ads were displayed | || Metadata | | ||---|---| || **Type** | Percentage | || **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | || **Aggregation** | Ratio | *** ## Example Your TikTok campaign delivered **2.4M impressions** with **86,400 engagements**, resulting in a **3.6% engagement rate**: | Ad Group | Impressions | Engagements | Engagement Rate | | ---------------- | ----------- | ----------- | --------------- | | Gen Z Creators | 1,200,000 | 54,000 | 4.5% | | Product Demo | 800,000 | 24,000 | 3.0% | | UGC Testimonials | 400,000 | 8,400 | 2.1% | *** ## How It Works TikTok Engagement Rate calculates the percentage of ad impressions that generate user interactions. Higher rates indicate more compelling content that resonates with your audience. TikTok's algorithm favors engaging content, so higher engagement rates often correlate with lower costs. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------------- | | Comparing creative performance | Higher engagement rates signal better content resonance | | Optimizing for awareness | Target 3-5% engagement rate for top-funnel campaigns | | Identifying viral potential | Engagement rates above 5% indicate share-worthy content | | Reducing cost per result | Improve engagement to lower CPM and CPC | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------------- | ------------------------------------ | | [TikTok Engagements](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements) | Numerator in this calculation | | [TikTok Impressions](/reference/metrics/advertising/tiktok-ads/tiktok-impressions) | Denominator in this calculation | | [TikTok Cost per Engagement](/reference/metrics/advertising/tiktok-ads/engagements/tiktok-engagements-cost) | How much you pay for each engagement | [See all TikTok Engagement metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Impressions: Ad Views on TikTok Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-impressions Track how many times your TikTok ads appeared on screen. Monitor ad visibility and reach to optimize campaign delivery. TikTok Impressions measures how many times your ads appeared on screen — the same viewer can account for multiple impressions. ## Formula **TikTok Impressions** = **SUM** ( Ad Impressions ) **FROM** TikTok Ads || Metadata | | ||---|---| || **Type** | Number | || **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | || **Aggregation** | Sum | *** ## Example Your TikTok campaign delivered **2.4 million impressions** last week across three ad groups. | Ad Group | Impressions | Spend | CPM | | ---------- | ------------- | ------------ | ---------- | | Awareness | 1,200,000 | \$4,800 | \$4.00 | | Engagement | 850,000 | \$3,825 | \$4.50 | | Conversion | 350,000 | \$1,925 | \$5.50 | | **Total** | **2,400,000** | **\$10,550** | **\$4.40** | *** ## How It Works TikTok counts an impression each time your ad appears on a user's screen. This includes feed ads, in-stream ads, and TopView placements. The same user can generate multiple impressions if they see your ad more than once. *** ## When to Use | Scenario | Action | | ------------------------------ | ---------------------------------------------------------------------- | | Measuring brand awareness | Track impression volume to gauge how many eyes see your ads | | Diagnosing delivery issues | Low impressions with sufficient budget may indicate targeting problems | | Calculating efficiency metrics | Use as denominator for CPM and CTR calculations | | Comparing ad group performance | Identify which audiences generate the most ad views | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [TikTok CPM](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-mille) | Cost per 1,000 impressions — measures impression efficiency | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total cost to generate these impressions | | [TikTok CTR](/reference/metrics/advertising/tiktok-ads/tiktok-click-through-rate) | Percentage of impressions that resulted in clicks | [See all TikTok Audience metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Landing Page View Rate: Click-to-Page-Load Conversion Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-landing-page-view-rate Track the share of clicks that actually loaded your landing page. Low rates suggest slow load times or bounce issues. Optimize page performance. TikTok Landing Page View Rate measures the share of clicks that actually loaded your landing page. Low rates suggest slow load times or bounce issues. ## Formula **TikTok LP View Rate** = ( [**TikTok Landing Page Views**](/reference/metrics/advertising/tiktok-ads/tiktok-landing-page-views) ÷ [**TikTok Clicks**](/reference/metrics/advertising/tiktok-ads/tiktok-clicks) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------- | ---------------------------------------- | | [**TikTok Landing Page Views**](/reference/metrics/advertising/tiktok-ads/tiktok-landing-page-views) | Total landing page loads from TikTok ads | | [**TikTok Clicks**](/reference/metrics/advertising/tiktok-ads/tiktok-clicks) | Total clicks on your TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Percentage | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your TikTok campaign received **20,000 clicks** and **16,000 landing page views** in January: | Ad Group | Clicks | LP Views | LP View Rate | | ----------- | ---------- | ---------- | ------------ | | Prospecting | 12,000 | 9,600 | 80% | | Retargeting | 6,000 | 4,800 | 80% | | Lookalike | 2,000 | 1,600 | 80% | | **Total** | **20,000** | **16,000** | **80%** | *** ## How It Works TikTok Landing Page View Rate divides landing page views by clicks and expresses the result as a percentage. An 80% rate means 80 out of every 100 clicks resulted in a fully loaded page. The remaining 20% bounced before the page finished loading—often due to slow page speeds, poor mobile experience, or users abandoning before load completion. *** ## When to Use | Scenario | Action | | ------------------------ | ------------------------------------------------- | | Page speed diagnosis | Rates below 70% suggest critical load time issues | | Mobile optimization | Compare rates between mobile and desktop traffic | | Landing page testing | Measure which pages retain more clickers | | Campaign troubleshooting | Identify ad sets with unusually low load rates | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------- | --------------------------------------- | | [TikTok Landing Page Views](/reference/metrics/advertising/tiktok-ads/tiktok-landing-page-views) | Numerator — completed page loads | | [TikTok Clicks](/reference/metrics/advertising/tiktok-ads/tiktok-clicks) | Denominator — total ad clicks | | [TikTok Cost per LP View](/reference/metrics/advertising/tiktok-ads/tiktok-landing-page-views-cost) | Cost efficiency — affected by this rate | [See all TikTok Clicks metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Landing Page Views: Completed Page Loads from TikTok Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-landing-page-views Track how many times your landing page fully loaded after a TikTok ad click. Lower than clicks indicates drop-off before the page loaded. TikTok Landing Page Views measures how many times your landing page fully loaded after a click. Lower than clicks indicates drop-off before the page loaded. ## Formula **TikTok Landing Page Views** = **SUM** ( Landing Page Views ) **FROM** TikTok Ads | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your TikTok campaign received **12,000 clicks** but only **9,600 landing page views** in March: | Ad Group | Clicks | LP Views | Drop-off | | ----------- | ---------- | --------- | -------- | | Prospecting | 7,200 | 5,760 | 20% | | Retargeting | 3,600 | 2,880 | 20% | | Lookalike | 1,200 | 960 | 20% | | **Total** | **12,000** | **9,600** | **20%** | *** ## How It Works TikTok Landing Page Views counts clicks that result in a fully loaded landing page. Unlike total clicks, this metric only fires when your page loads completely. The gap between clicks and landing page views reveals bounce and load-time issues—a significant drop-off suggests slow page speeds or mobile optimization problems. *** ## When to Use | Scenario | Action | | -------------------- | ------------------------------------------------------- | | Page speed diagnosis | Large click-to-LP-view gap indicates slow load times | | Mobile optimization | Check if mobile landing pages load properly | | Traffic quality | Use LP views instead of clicks for cleaner traffic data | | Campaign comparison | Identify which ad sets deliver actual site visitors | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [TikTok Clicks](/reference/metrics/advertising/tiktok-ads/tiktok-clicks) | Total clicks — LP views should be close to this | | [TikTok Cost per LP View](/reference/metrics/advertising/tiktok-ads/tiktok-landing-page-views-cost) | Cost efficiency for actual page loads | | [TikTok LP View Rate](/reference/metrics/advertising/tiktok-ads/tiktok-landing-page-view-rate) | Percentage of clicks that loaded the page | [See all TikTok Clicks metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per Landing Page View: Cost for Completed Page Loads Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-landing-page-views-cost Track average spend per landing page load from TikTok ads. A more reliable traffic metric than clicks alone. Optimize ad spend efficiency. TikTok Cost per Landing Page View measures the average spend per landing page load. A more reliable traffic metric than clicks alone. ## Formula **TikTok Cost per LP View** = [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Landing Page Views**](/reference/metrics/advertising/tiktok-ads/tiktok-landing-page-views) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------- | ---------------------------------------- | | [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok ads | | [**TikTok Landing Page Views**](/reference/metrics/advertising/tiktok-ads/tiktok-landing-page-views) | Total landing page loads from TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your brand spent **\$3,600** on TikTok ads in February and received **9,000 landing page views**: | Ad Group | Spend | LP Views | Cost/LP View | | ----------- | ----------- | --------- | ------------ | | Prospecting | \$1,800 | 4,500 | \$0.40 | | Retargeting | \$1,200 | 3,000 | \$0.40 | | Lookalike | \$600 | 1,500 | \$0.40 | | **Total** | **\$3,600** | **9,000** | **\$0.40** | *** ## How It Works TikTok Cost per Landing Page View divides total spend by landing page views rather than clicks. Since landing page views only count when your page fully loads, this metric gives a truer picture of what you pay for actual website traffic. It's typically higher than CPC because some clicks never result in a loaded page. *** ## When to Use | Scenario | Action | | ------------------------ | ---------------------------------------------------- | | True traffic cost | Use instead of CPC when page speed varies | | Budget forecasting | Estimate actual site visitors from planned spend | | Campaign comparison | Identify which ad sets deliver cheapest real traffic | | Performance benchmarking | Track efficiency improvements over time | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------ | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Numerator — total TikTok ad cost | | [TikTok Landing Page Views](/reference/metrics/advertising/tiktok-ads/tiktok-landing-page-views) | Denominator — completed page loads | | [TikTok CPC](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-click) | Cost per click — typically lower than cost per LP view | [See all TikTok Clicks metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok ROAS: Return on Ad Spend Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-return-on-ad-spend Track TikTok ROAS to measure revenue generated per dollar spent on TikTok ads. A ROAS of 3x means $3 in revenue for every $1 spent. TikTok ROAS measures revenue TikTok reports per dollar spent on ads—a ROAS of 3x means \$3 in attributed revenue for every \$1 spent. ## Formula **TikTok ROAS** = [**TikTok Purchases Value**](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases-value) ÷ [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | [**TikTok Purchases Value**](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases-value) | Total revenue from purchases TikTok attributes to your ads | | [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Multiplier | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your TikTok campaigns generated **\$45,000** in attributed revenue from **\$15,000** in ad spend. | Metric | Value | Calculation | | ---------------------- | -------- | ------------------- | | TikTok Purchases Value | \$45,000 | Attributed revenue | | TikTok Spend | \$15,000 | Total ad spend | | **TikTok ROAS** | **3.0x** | \$45,000 ÷ \$15,000 | *** ## How It Works TikTok ROAS divides the total revenue from TikTok-attributed purchases by your total TikTok ad spend. TikTok uses its click and view attribution windows to connect ad interactions with conversions and their associated order values. A ROAS above 1.0x means you're generating more revenue than you're spending on ads. *** ## When to Use | Scenario | Action | | --------------------------------- | ---------------------------------------------------------- | | Campaign profitability assessment | Identify campaigns generating positive returns | | Budget reallocation | Shift spend toward high-ROAS campaigns | | Scaling decisions | Monitor ROAS while increasing spend to maintain efficiency | | Cross-platform comparison | Compare TikTok ROAS against other channels | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | [TikTok CPA](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-acquisition) | Cost efficiency counterpart to revenue efficiency | | [TikTok Purchases Value](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases-value) | Numerator in ROAS calculation | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Denominator in ROAS calculation | | [TikTok Purchases](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases) | Conversion count driving purchases value | [See all TikTok Efficiency metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Spend: Total Advertising Investment Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-spend Track your total TikTok advertising spend. Monitor budget consumption across campaigns to optimize ad investment and maintain spend efficiency. TikTok Spend measures the total ad budget consumed by TikTok during the selected period—this is what TikTok billed you. ## Formula **TikTok Spend** = **SUM** ( Ad Spend ) | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example **Your brand spent \$12,450 on TikTok ads in March across three campaign objectives:** | Campaign Type | Spend | Share of Budget | | -------------------- | ------- | --------------- | | Conversion campaigns | \$7,800 | 62.7% | | Traffic campaigns | \$3,200 | 25.7% | | Video view campaigns | \$1,450 | 11.6% | *** ## How It Works TikTok Spend reflects the actual costs billed by TikTok for your advertising. This is a raw value pulled directly from the TikTok Ads API—it includes all spend across campaigns, ad groups, and ads within your selected date range and filters. *** ## When to Use | Scenario | Action | | ------------------------ | -------------------------------------------------- | | Budget tracking | Monitor daily/weekly spend against planned budgets | | ROAS calculation | Compare spend to attributed revenue for efficiency | | Campaign allocation | Identify which campaigns consume the most budget | | Cost per action analysis | Divide spend by conversions to calculate CPA | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ------------------------------------------------- | | [TikTok CPM](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-mille) | Cost per thousand impressions—efficiency of reach | | [TikTok CPC](/reference/metrics/advertising/tiktok-ads/tiktok-cost-per-click) | Cost per click—traffic efficiency | | [TikTok ROAS](/reference/metrics/advertising/tiktok-ads/tiktok-return-on-ad-spend) | Revenue generated per dollar spent | [See all TikTok Spend metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Video 25% Completion Views: Quarter Watched Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-video-25-percent-watched Track TikTok views where viewers watched at least 25% of your video. Measure early video retention in your completion funnel. TikTok Video 25% Completion Views counts views where viewers watched at least a quarter of your video — part of the completion rate funnel. ## Formula **TikTok Video 25% Completion Views** = **SUM** ( 25% Completion Views ) ### Formula Components | Metric | Definition | | ------------------------ | -------------------------------------------------------- | | **25% Completion Views** | Each instance a viewer watched at least 25% of the video | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your 60-second video ad achieved **425,000 plays** with **297,500 reaching 25%** completion — a 70% first-quarter retention rate. | Video Length | Plays | 25% Views | 25% Rate | | ------------ | ----------- | ----------- | --------- | | 15 seconds | 185,000 | 148,000 | 80.0% | | 30 seconds | 145,000 | 101,500 | 70.0% | | 60 seconds | 95,000 | 48,000 | 50.5% | | **Total** | **425,000** | **297,500** | **70.0%** | *** ## How It Works TikTok tracks when viewers reach the 25% mark of your video. This represents the first stage of the completion funnel and measures initial content retention. For a 60-second video, 25% completion means 15 seconds watched. High 25% rates indicate your opening hook is effective. *** ## When to Use | Scenario | Action | | ------------------- | ---------------------------------------------------------- | | Hook effectiveness | High 25% rates mean your opening seconds capture attention | | Funnel diagnostics | Compare 25% → 50% → 75% → 100% to find drop-off points | | Content pacing | Low 25% rates suggest the intro needs improvement | | A/B testing openers | Test different hooks and compare 25% completion rates | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | | [TikTok Video Plays](/reference/metrics/advertising/tiktok-ads/tiktok-video-plays) | Starting point for the completion funnel | | [TikTok Video 50% Completion Views](/reference/metrics/advertising/tiktok-ads/tiktok-video-50-percent-watched) | Next stage in the completion funnel | | [TikTok Video Completions](/reference/metrics/advertising/tiktok-ads/tiktok-video-completions) | Final stage — 100% completion | [See all TikTok Video metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Video 50% Completion Views: Half Watched Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-video-50-percent-watched Track TikTok views where viewers watched at least 50% of your video. Measure mid-video engagement in your completion funnel. TikTok Video 50% Completion Views counts views where viewers watched at least half of your video — indicating moderate viewing engagement. ## Formula **TikTok Video 50% Completion Views** = **SUM** ( 50% Completion Views ) ### Formula Components | Metric | Definition | | ------------------------ | -------------------------------------------------------- | | **50% Completion Views** | Each instance a viewer watched at least 50% of the video | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaign videos achieved **297,500 at 25%** with **178,500 reaching 50%** — a 60% retention from quarter to halfway. | Video | 25% Views | 50% Views | 25→50% Retention | | ------------ | ----------- | ----------- | ---------------- | | Product Demo | 148,000 | 96,200 | 65.0% | | Brand Story | 101,500 | 55,825 | 55.0% | | Tutorial | 48,000 | 26,475 | 55.2% | | **Total** | **297,500** | **178,500** | **60.0%** | *** ## How It Works TikTok records a 50% completion when viewers reach the midpoint of your video. This metric measures sustained engagement beyond the initial hook. For a 60-second video, 50% completion means 30 seconds watched. The 50% mark is critical for delivering your core message. *** ## When to Use | Scenario | Action | | ----------------------- | ------------------------------------------------------------------ | | Mid-video retention | High 50% rates indicate content holds attention through the middle | | Content pacing analysis | Large 25%→50% drop suggests mid-video content needs work | | Message delivery timing | Ensure key information appears before the 50% mark | | Comparing video lengths | Shorter videos often have higher 50% rates | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | --------------------------------------- | | [TikTok Video 25% Completion Views](/reference/metrics/advertising/tiktok-ads/tiktok-video-25-percent-watched) | Previous stage in the completion funnel | | [TikTok Video 75% Completion Views](/reference/metrics/advertising/tiktok-ads/tiktok-video-75-percent-watched) | Next stage in the completion funnel | | [TikTok Video Completions](/reference/metrics/advertising/tiktok-ads/tiktok-video-completions) | Final stage — 100% completion | [See all TikTok Video metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Video 75% Completion Views: Three-Quarters Watched Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-video-75-percent-watched Track TikTok views where viewers watched at least 75% of your video. Measure strong content retention near completion. TikTok Video 75% Completion Views counts views where viewers watched at least three quarters of your video — signaling strong content retention. ## Formula **TikTok Video 75% Completion Views** = **SUM** ( 75% Completion Views ) ### Formula Components | Metric | Definition | | ------------------------ | -------------------------------------------------------- | | **75% Completion Views** | Each instance a viewer watched at least 75% of the video | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaign achieved **178,500 at 50%** with **107,100 reaching 75%** — viewers who made it halfway are 60% likely to reach three-quarters. | Video | 50% Views | 75% Views | 50→75% Retention | | ------------ | ----------- | ----------- | ---------------- | | Product Demo | 96,200 | 62,530 | 65.0% | | Brand Story | 55,825 | 30,704 | 55.0% | | Tutorial | 26,475 | 13,866 | 52.4% | | **Total** | **178,500** | **107,100** | **60.0%** | *** ## How It Works TikTok records a 75% completion when viewers reach three-quarters through your video. This metric identifies highly engaged viewers who are likely to complete. For a 60-second video, 75% completion means 45 seconds watched. These viewers have absorbed most of your content. *** ## When to Use | Scenario | Action | | --------------------------- | -------------------------------------------------------------- | | High-intent audience sizing | 75% viewers are your most engaged audience segment | | Call-to-action placement | Viewers reaching 75% are primed for your CTA | | Content quality assessment | High 75% rates indicate compelling content throughout | | Completion prediction | 75% viewers usually complete — low 75%→100% drop-off is normal | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | --------------------------------------- | | [TikTok Video 50% Completion Views](/reference/metrics/advertising/tiktok-ads/tiktok-video-50-percent-watched) | Previous stage in the completion funnel | | [TikTok Video Completions](/reference/metrics/advertising/tiktok-ads/tiktok-video-completions) | Final stage — 100% completion | | [TikTok Video 25% Completion Views](/reference/metrics/advertising/tiktok-ads/tiktok-video-25-percent-watched) | First stage of the completion funnel | [See all TikTok Video metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Video Completions: 100% Watched Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-video-completions Track TikTok views where viewers watched your entire video. Measure the strongest video engagement signal for your campaigns. TikTok Video Completions counts views where viewers watched your entire video from start to finish — the strongest video engagement signal. ## Formula **TikTok Video Completions** = **SUM** ( Video Completions ) ### Formula Components | Metric | Definition | | --------------------- | ------------------------------------------------ | | **Video Completions** | Each instance a viewer watched 100% of the video | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaign generated **107,100 at 75%** with **85,680 full completions** — an 80% conversion from three-quarters to finish. | Video Length | 75% Views | Completions | Completion Rate | | ------------ | ----------- | ----------- | --------------- | | 15 seconds | 45,900 | 41,310 | 90.0% | | 30 seconds | 38,200 | 30,560 | 80.0% | | 60 seconds | 23,000 | 13,810 | 60.0% | | **Total** | **107,100** | **85,680** | **80.0%** | *** ## How It Works TikTok counts a completion when a viewer watches your video all the way through. This is the ultimate engagement metric — these viewers received your full message, saw your complete story, and experienced your entire call-to-action. Completion rates vary significantly by video length: shorter videos naturally achieve higher completion rates. *** ## When to Use | Scenario | Action | | ---------------------------- | -------------------------------------------------------- | | Full message delivery | Completions confirm viewers absorbed your entire message | | Video length optimization | Compare completion rates across video lengths | | High-value audience building | Create retargeting audiences from video completers | | Content effectiveness | High completions indicate compelling content throughout | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [TikTok Video 75% Completion Views](/reference/metrics/advertising/tiktok-ads/tiktok-video-75-percent-watched) | Previous stage in the completion funnel | | [TikTok Video Plays](/reference/metrics/advertising/tiktok-ads/tiktok-video-plays) | Starting point for calculating overall completion rate | | [TikTok Video Views](/reference/metrics/advertising/tiktok-ads/tiktok-video-views) | 6-second views for comparison | [See all TikTok Video metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Video Plays: Total Video Start Count Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-video-plays Track total TikTok video plays including auto-plays. Understand initial video engagement before the 6-second view threshold. TikTok Video Plays counts the total times your video started playing, including auto-plays — higher than views because very short watches are excluded from "views". ## Formula **TikTok Video Plays** = **SUM** ( Video Plays ) ### Formula Components | Metric | Definition | | --------------- | ------------------------------------------------------- | | **Video Plays** | Each instance a video starts playing in the TikTok feed | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your TikTok campaign generated **847,500 video plays** across all ad groups last week. | Ad Group | Video Plays | Video Views | Play-to-View Rate | | -------------------- | ----------- | ----------- | ----------------- | | Awareness Creative A | 425,000 | 312,000 | 73.4% | | Awareness Creative B | 312,500 | 198,000 | 63.4% | | Awareness Creative C | 110,000 | 84,000 | 76.4% | | **Total** | **847,500** | **594,000** | **70.1%** | *** ## How It Works TikTok counts a play the moment your video starts, including auto-plays as users scroll through their feed. This number is always higher than Video Views because plays include viewers who watch less than 6 seconds. The gap between plays and views indicates how many users scroll past quickly. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------------------------------ | | Measuring raw reach | Compare plays across campaigns to understand total exposure | | Analyzing scroll behavior | High plays with low views means users aren't stopping to watch | | Creative testing | Use play-to-view ratio to identify which thumbnails grab attention | | Funnel analysis | Plays → Views → Completions shows the full engagement funnel | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | -------------------------------------- | | [TikTok Video Views](/reference/metrics/advertising/tiktok-ads/tiktok-video-views) | Views that pass the 6-second threshold | | [TikTok Video Completions](/reference/metrics/advertising/tiktok-ads/tiktok-video-completions) | Users who watched the entire video | | [TikTok Impressions](/reference/metrics/advertising/tiktok-ads/tiktok-impressions) | Total times ads were shown | [See all TikTok Video metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Video Views: 6-Second View Count Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-video-views Track TikTok video views with the 6-second threshold. Measure meaningful video engagement for your TikTok ad campaigns. TikTok Video Views counts how many times your video ad was watched for at least 6 seconds — TikTok's default view threshold. ## Formula **TikTok Video Views** = **SUM** ( Video Views ) ### Formula Components | Metric | Definition | | --------------- | ------------------------------------------------------- | | **Video Views** | Each instance a video is watched for at least 6 seconds | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your TikTok awareness campaign generated **594,000 video views** in Q1. | Month | Video Views | Spend | Cost per View | | ------------ | ----------- | ------------ | ------------- | | January | 185,000 | \$4,625 | \$0.025 | | February | 198,000 | \$4,752 | \$0.024 | | March | 211,000 | \$4,853 | \$0.023 | | **Q1 Total** | **594,000** | **\$14,230** | **\$0.024** | *** ## How It Works TikTok registers a view when a user watches your video for at least 6 continuous seconds. This threshold filters out accidental scrolls and brief glances, providing a more meaningful engagement metric than raw plays. The 6-second view is TikTok's standard metric for video awareness campaigns. *** ## When to Use | Scenario | Action | | -------------------- | ----------------------------------------------------------- | | Awareness campaigns | Primary KPI for video awareness objectives | | Budget optimization | Use cost per view to compare campaign efficiency | | Creative performance | Higher views relative to plays indicates compelling content | | Platform comparison | Compare TikTok's 6s views against Meta's 3s ThruPlays | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------- | ---------------------------------------- | | [TikTok Video Plays](/reference/metrics/advertising/tiktok-ads/tiktok-video-plays) | Total starts including sub-6s watches | | [TikTok Cost per Video View](/reference/metrics/advertising/tiktok-ads/tiktok-video-views-cost) | Efficiency metric for video views | | [TikTok 15-Second Video Views](/reference/metrics/advertising/tiktok-ads/tiktok-video-views-15-seconds) | Deeper engagement metric (15s threshold) | [See all TikTok Video metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok 15-Second Video Views: Extended View Count Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-video-views-15-seconds Track TikTok video views with the 15-second threshold. Measure deeper video engagement beyond the standard 6-second view. TikTok 15-Second Video Views counts views where the viewer watched at least 15 continuous seconds — indicating deeper engagement than the 6-second threshold. ## Formula **TikTok 15-Second Video Views** = **SUM** ( 15-Second Video Views ) ### Formula Components | Metric | Definition | | ------------------------- | ------------------------------------------------------------------- | | **15-Second Video Views** | Each instance a video is watched for at least 15 continuous seconds | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your campaign generated **185,400 fifteen-second views** from **594,000 total video views** — a 31.2% retention rate. | Ad Group | Video Views | 15s Views | 15s Rate | | -------------- | ----------- | ----------- | --------- | | Tutorial Style | 198,000 | 79,200 | 40.0% | | UGC Creative | 245,000 | 68,600 | 28.0% | | Product Demo | 151,000 | 37,600 | 24.9% | | **Total** | **594,000** | **185,400** | **31.2%** | *** ## How It Works TikTok records a 15-second view when a user watches at least 15 continuous seconds of your video. This metric filters for genuinely engaged viewers who chose to keep watching beyond the initial hook. The 15-second threshold is especially meaningful for longer-form content where you need sustained attention to deliver your message. *** ## When to Use | Scenario | Action | | ------------------------ | ------------------------------------------------------------------ | | Content quality analysis | Higher 15s rates indicate compelling content beyond the hook | | Engaged view campaigns | Primary KPI when optimizing for sustained attention | | Message delivery | Verify viewers are watching long enough to receive key information | | Creative comparison | Compare 6s-to-15s retention across different creative approaches | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------------- | ---------------------------------- | | [TikTok Video Views](/reference/metrics/advertising/tiktok-ads/tiktok-video-views) | Standard 6-second view count | | [TikTok Cost per 15-Second Video View](/reference/metrics/advertising/tiktok-ads/tiktok-video-views-15-seconds-cost) | Efficiency metric for 15s views | | [TikTok Video 25% Completion Views](/reference/metrics/advertising/tiktok-ads/tiktok-video-25-percent-watched) | Percentage-based completion metric | [See all TikTok Video metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per 15-Second Video View: Extended CPV Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-video-views-15-seconds-cost Calculate TikTok cost per 15-second video view. Optimize spend for engaged video view campaigns with this deeper engagement metric. TikTok Cost per 15-Second Video View measures the average spend per 15-second video view — useful when optimizing for engaged video view campaigns. ## Formula **TikTok Cost per 15s View** = [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok 15s Video Views**](/reference/metrics/advertising/tiktok-ads/tiktok-video-views-15-seconds) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok ads | | [**TikTok 15s Video Views**](/reference/metrics/advertising/tiktok-ads/tiktok-video-views-15-seconds) | Video views that reached the 15-second threshold | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your campaign spent **\$14,230** and generated **185,400 fifteen-second views**, resulting in a cost per 15s view of **\$0.077**. | Campaign | Spend | 15s Views | Cost per 15s View | | ---------------- | ------------ | ----------- | ----------------- | | Brand Story | \$5,200 | 81,250 | \$0.064 | | Product Tutorial | \$4,800 | 60,000 | \$0.080 | | User Testimonial | \$4,230 | 44,150 | \$0.096 | | **Total** | **\$14,230** | **185,400** | **\$0.077** | *** ## How It Works TikTok Cost per 15-Second Video View divides your total ad spend by the number of 15-second views. This metric measures the efficiency of acquiring deeply engaged viewers. Expect this CPV to be higher than standard 6-second CPV since fewer viewers reach the 15-second threshold. *** ## When to Use | Scenario | Action | | ------------------------------ | ----------------------------------------------------------- | | Engaged view optimization | Primary efficiency metric for sustained attention campaigns | | Content investment decisions | Lower 15s CPV justifies investment in longer-form content | | Quality vs. quantity tradeoffs | Balance 6s CPV (reach) against 15s CPV (engagement) | | Budget forecasting | Estimate costs for engaged view objectives | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------- | ------------------------------------ | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Numerator in the calculation | | [TikTok 15-Second Video Views](/reference/metrics/advertising/tiktok-ads/tiktok-video-views-15-seconds) | Denominator in the calculation | | [TikTok Cost per Video View](/reference/metrics/advertising/tiktok-ads/tiktok-video-views-cost) | Standard 6-second CPV for comparison | [See all TikTok Video metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per Video View: CPV Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/tiktok-video-views-cost Calculate TikTok cost per video view. Optimize your video awareness campaign spend with this standard CPV efficiency metric. TikTok Cost per Video View measures the average spend per 6-second video view — the standard cost metric for video awareness campaigns. ## Formula **TikTok Cost per Video View** = [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok Video Views**](/reference/metrics/advertising/tiktok-ads/tiktok-video-views) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ----------------------------------------------- | | [**TikTok Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok ads | | [**TikTok Video Views**](/reference/metrics/advertising/tiktok-ads/tiktok-video-views) | Video views that reached the 6-second threshold | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example Your awareness campaign spent **\$14,230** and generated **594,000 video views**, resulting in a cost per view of **\$0.024**. | Campaign | Spend | Video Views | Cost per View | | ------------------ | ------------ | ----------- | ------------- | | Brand Awareness Q1 | \$8,500 | 354,167 | \$0.024 | | Product Launch | \$3,200 | 142,222 | \$0.023 | | Seasonal Promo | \$2,530 | 97,611 | \$0.026 | | **Total** | **\$14,230** | **594,000** | **\$0.024** | *** ## How It Works TikTok Cost per Video View divides your total ad spend by the number of 6-second video views. This metric helps you understand how efficiently you're buying video engagement. Lower CPV means more views for your budget, but should be balanced against view quality and downstream conversions. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------------------------------------- | | Budget allocation | Compare CPV across campaigns to shift spend to efficient performers | | Creative testing | Lower CPV often indicates more engaging content | | Platform benchmarking | Compare against industry averages (\$0.01–\$0.05 typical range) | | Bid optimization | Adjust bids based on target CPV goals | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | | [TikTok Spend](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Numerator in the CPV calculation | | [TikTok Video Views](/reference/metrics/advertising/tiktok-ads/tiktok-video-views) | Denominator in the CPV calculation | | [TikTok Cost per 15-Second Video View](/reference/metrics/advertising/tiktok-ads/tiktok-video-views-15-seconds-cost) | CPV for deeper engagement threshold | [See all TikTok Video metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok View Contents Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/view-contents All TikTok metrics for view-contents — volume, value, and cost in one place. Metrics for view contents across your TikTok campaigns: * [TikTok View Contents: Product Page Views from Ads](/reference/metrics/advertising/tiktok-ads/view-contents/tiktok-view-contents) * [TikTok Cost per View Content: Top-of-Funnel Traffic Efficiency](/reference/metrics/advertising/tiktok-ads/view-contents/tiktok-view-contents-cost) * [TikTok View Contents Value: Product View Revenue Tracking](/reference/metrics/advertising/tiktok-ads/view-contents/tiktok-view-contents-value) # TikTok View Contents: Product Page Views from Ads Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/view-contents/tiktok-view-contents Track product page views attributed to TikTok ads. Measure top-of-funnel engagement and optimize your ad creative for browsing behavior. TikTok View Contents measures the number of product or content page views that TikTok attributes to your ads. ## Formula **TikTok View Contents** = **COUNT** ( TikTok-Attributed View Content Events ) ### Formula Components | Metric | Definition | | ----------------------------------------- | ---------------------------------------------------------------------------------------------- | | **TikTok-Attributed View Content Events** | ViewContent events fired when users visit product pages after interacting with your TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Number | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example Your skincare brand spent **\$2,500** on TikTok ads in March. TikTok attributed **8,420 view content events** to those ads. | Campaign | Spend | View Contents | Cost per View | | ----------- | ------- | ------------- | ------------- | | Spring Sale | \$1,200 | 4,850 | \$0.25 | | New Product | \$800 | 2,340 | \$0.34 | | Retargeting | \$500 | 1,230 | \$0.41 | *** ## How It Works TikTok fires a ViewContent event when a user visits a product detail page on your site after interacting with your ad. This metric counts all such events within TikTok's attribution window. It's a top-of-funnel signal showing how many users are actively browsing your products. *** ## When to Use | Scenario | Action | | ---------------------------- | ---------------------------------------------------------------------------- | | Evaluating ad creative | Compare view content rates across creatives to identify what drives browsing | | Measuring top-of-funnel | Track view contents as an early indicator of purchase intent | | Optimizing traffic campaigns | Use view content volume to gauge landing page engagement | | Diagnosing drop-off | Compare view contents to add-to-carts to find where users exit | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | | [TikTok Cost per View Content](/reference/metrics/advertising/tiktok-ads/view-contents/tiktok-view-contents-cost) | Cost efficiency of driving product views | | [TikTok Add to Carts](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts) | Next step in the funnel after viewing | | [TikTok Purchases](/reference/metrics/advertising/tiktok-ads/purchases/tiktok-purchases) | Final conversion from the funnel | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok Cost per View Content: Top-of-Funnel Traffic Efficiency Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/view-contents/tiktok-view-contents-cost Track cost per product page view from TikTok ads. Optimize top-of-funnel traffic spend by monitoring view content cost efficiency. TikTok Cost per View Content measures the average spend per product or content page view from your TikTok ads. ## Formula **TikTok Cost per View Content** = [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) ÷ [**TikTok View Contents**](/reference/metrics/advertising/tiktok-ads/view-contents/tiktok-view-contents) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------- | ------------------------------------------- | | [**TikTok Ad Spend**](/reference/metrics/advertising/tiktok-ads/tiktok-spend) | Total amount spent on TikTok advertising | | [**TikTok View Contents**](/reference/metrics/advertising/tiktok-ads/view-contents/tiktok-view-contents) | Product page views attributed to TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Ratio | *** ## Example A skincare brand spent **\$2,400** on TikTok ads in February, generating **8,000 product page views**. | Period | Ad Spend | View Contents | Cost per View Content | | ------ | -------- | ------------- | --------------------- | | Week 1 | \$600 | 1,800 | \$0.33 | | Week 2 | \$600 | 2,100 | \$0.29 | | Week 3 | \$600 | 2,200 | \$0.27 | | Week 4 | \$600 | 1,900 | \$0.32 | *** ## How It Works Cost per View Content divides your total TikTok ad spend by the number of product page views TikTok attributes to your campaigns. A lower value indicates more efficient top-of-funnel traffic acquisition, meaning you're paying less for each potential customer to browse your products. *** ## When to Use | Scenario | Action | | --------------------- | ----------------------------------------------------- | | New creative testing | Compare cost per view across ad variations | | Audience optimization | Identify which audiences drive cheapest product views | | Budget allocation | Shift spend toward campaigns with lower view costs | | Funnel analysis | Compare against add-to-cart cost to measure drop-off | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | ------------------------------------- | | [TikTok View Contents](/reference/metrics/advertising/tiktok-ads/view-contents/tiktok-view-contents) | Denominator; total product page views | | [TikTok Cost per Add to Cart](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts-cost) | Next funnel stage efficiency metric | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # TikTok View Contents Value: Product View Revenue Tracking Source: https://docs.upstackdata.com/reference/metrics/advertising/tiktok-ads/view-contents/tiktok-view-contents-value Track the total catalog value of product pages viewed by visitors from your TikTok ads. Measure top-of-funnel engagement value. TikTok View Contents Value measures the combined catalog value of all product pages viewed by visitors from your TikTok ads. ## Formula **TikTok View Contents Value** = **SUM** ( View Content Values ) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | | [**View Content Values**](/reference/metrics/advertising/tiktok-ads/view-contents/tiktok-view-contents) | Catalog price of each product viewed, attributed to TikTok ads | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [TikTok Ads](/sources/catalog/tiktok) | | **Aggregation** | Sum | *** ## Example A home decor brand ran TikTok ads in March and drove **8,450 product page views** with a combined catalog value of **\$127,680**. | Week | View Contents | View Contents Value | Avg Value/View | | ------ | ------------- | ------------------- | -------------- | | Week 1 | 1,890 | \$28,350 | \$15.00 | | Week 2 | 2,240 | \$33,600 | \$15.00 | | Week 3 | 2,120 | \$31,800 | \$15.00 | | Week 4 | 2,200 | \$33,930 | \$15.42 | *** ## How It Works TikTok tracks the view\_content event when a visitor lands on a product page after engaging with your ad. The value is pulled from your product catalog—typically the listed price of the viewed item. This metric sums all product values across view events. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------------- | | Evaluate top-of-funnel value | Compare view value against add-to-cart value to gauge intent | | Assess product interest | High view value indicates visitors are browsing premium items | | Benchmark campaign creative | Higher-value views may indicate better audience targeting | | Calculate funnel conversion rates | Divide cart value by view value to measure progression | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [TikTok View Contents](/reference/metrics/advertising/tiktok-ads/view-contents/tiktok-view-contents) | Count of product views (pair with value for avg view value) | | [TikTok Add to Carts Value](/reference/metrics/advertising/tiktok-ads/add-to-carts/tiktok-add-to-carts-value) | Next funnel stage—value of items added to cart | [See all TikTok Conversions metrics →](/reference/metrics/advertising/tiktok-ads) # Data Quality Metrics: Monitor Event Match Quality and Tracking Health Source: https://docs.upstackdata.com/reference/metrics/data-quality Track data quality metrics in Upstack. View 16 metrics including EMQ Score, Event Coverage, and Match Key Coverage with formulas, examples, and best practices. Data Quality metrics measure how well your tracking setup is performing—specifically Meta's Event Match Quality (EMQ) scores that determine how accurately your conversion events match to Facebook users. Higher quality scores mean better ad targeting, more accurate attribution, and improved campaign performance. **Data Source:** [Upstack Pixel](/pixel)\ **Metrics in Category:** 16 ## Subcategories | Subcategory | Metrics | Description | | ---------------------------------------------------------- | ------- | ----------------------------------------------------------------------------- | | [Event Match Quality](/reference/metrics/data-quality/emq) | 16 | Meta's EMQ scores, match key coverage, diagnostics, and deduplication metrics | ## When to Use * **Event Match Quality:** When you need to monitor and improve your Meta Conversions API event matching, diagnose tracking issues, or optimize your customer identifier coverage for better attribution. ## All Data Quality Metrics | Metric | Description | | ---------------------------------------------------------------------------------------- | ------------------------------------------------ | | [EMQ Score](/reference/metrics/data-quality/emq/emq-score) | Event Match Quality score from Meta (0-10 scale) | | [Event Coverage](/reference/metrics/data-quality/emq/event-coverage) | Percentage of events with valid match keys | | [Event Coverage Goal](/reference/metrics/data-quality/emq/event-coverage-goal) | Target event coverage percentage from Meta | | [Diagnostics Count](/reference/metrics/data-quality/emq/diagnostics-count) | Number of active diagnostic issues | | [Match Key Issues](/reference/metrics/data-quality/emq/match-key-issues) | Number of match keys with identified issues | | [ACR Percentage](/reference/metrics/data-quality/emq/acr-percentage) | Attributed Conversion Rate percentage | | [Coverage Potential ACR](/reference/metrics/data-quality/emq/coverage-potential-acr) | Potential ACR improvement from event coverage | | [Event Potential ACR](/reference/metrics/data-quality/emq/event-potential-acr) | Potential ACR improvement from event quality | | [Match Key Coverage](/reference/metrics/data-quality/emq/match-key-coverage) | Coverage percentage for specific match keys | | [Expected EMQ Increase](/reference/metrics/data-quality/emq/expected-emq-increase) | Predicted EMQ score increase from fixes | | [Match Key Potential ACR](/reference/metrics/data-quality/emq/match-key-potential-acr) | Potential ACR if match key is improved | | [Affected Events %](/reference/metrics/data-quality/emq/affected-events-percentage) | Percentage of events affected by issues | | [Affected Event Count](/reference/metrics/data-quality/emq/affected-event-count) | Number of events affected by issues | | [Browser Dedupe Coverage](/reference/metrics/data-quality/emq/browser-dedupe-coverage) | Browser events with deduplication key | | [Server Dedupe Coverage](/reference/metrics/data-quality/emq/server-dedupe-coverage) | Server events with deduplication key | | [Overall Browser Coverage](/reference/metrics/data-quality/emq/overall-browser-coverage) | Overall browser deduplication coverage | # Event Match Quality: Meta CAPI Performance Metrics Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq Track Meta Event Match Quality (EMQ) metrics in Upstack. Includes EMQ Score, Event Coverage, Match Key Coverage, and diagnostics with formulas and optimization tips. Event Match Quality (EMQ) metrics measure how well your conversion events match to Facebook users. Meta uses these scores to determine attribution accuracy and ad delivery optimization. Higher EMQ scores mean your events are more likely to be attributed correctly and your campaigns will perform better. **Data Source:** [Meta Ads (Pixel Quality API)](/sources/catalog/facebook-ads)\ **Metrics:** 16 ## Metrics in This Group | Metric | Description | When to Use | | ---------------------------------------------------------------------------------------- | ------------------------------------------------ | ----------------------------------- | | [EMQ Score](/reference/metrics/data-quality/emq/emq-score) | Event Match Quality score from Meta (0-10 scale) | Monitor overall tracking health | | [Event Coverage](/reference/metrics/data-quality/emq/event-coverage) | Percentage of events with valid match keys | Measure identifier completeness | | [Event Coverage Goal](/reference/metrics/data-quality/emq/event-coverage-goal) | Target event coverage percentage from Meta | Set coverage benchmarks | | [Diagnostics Count](/reference/metrics/data-quality/emq/diagnostics-count) | Number of active diagnostic issues | Identify setup problems | | [Match Key Issues](/reference/metrics/data-quality/emq/match-key-issues) | Number of match keys with identified issues | Find specific data quality problems | | [ACR Percentage](/reference/metrics/data-quality/emq/acr-percentage) | Attributed Conversion Rate percentage | Measure attribution accuracy | | [Coverage Potential ACR](/reference/metrics/data-quality/emq/coverage-potential-acr) | Potential ACR improvement from event coverage | Prioritize coverage improvements | | [Event Potential ACR](/reference/metrics/data-quality/emq/event-potential-acr) | Potential ACR improvement from event quality | Prioritize quality fixes | | [Match Key Coverage](/reference/metrics/data-quality/emq/match-key-coverage) | Coverage percentage for specific match keys | Analyze individual identifiers | | [Expected EMQ Increase](/reference/metrics/data-quality/emq/expected-emq-increase) | Predicted EMQ score increase from fixes | Estimate improvement impact | | [Match Key Potential ACR](/reference/metrics/data-quality/emq/match-key-potential-acr) | Potential ACR if match key is improved | Prioritize key fixes | | [Affected Events %](/reference/metrics/data-quality/emq/affected-events-percentage) | Percentage of events affected by issues | Assess issue severity | | [Affected Event Count](/reference/metrics/data-quality/emq/affected-event-count) | Number of events affected by issues | Quantify issue impact | | [Browser Dedupe Coverage](/reference/metrics/data-quality/emq/browser-dedupe-coverage) | Browser events with deduplication key | Monitor browser-side dedupe | | [Server Dedupe Coverage](/reference/metrics/data-quality/emq/server-dedupe-coverage) | Server events with deduplication key | Monitor server-side dedupe | | [Overall Browser Coverage](/reference/metrics/data-quality/emq/overall-browser-coverage) | Overall browser deduplication coverage | Track total dedupe health | ## How These Metrics Relate EMQ metrics form a hierarchy of data quality measurement: * [**EMQ Score**](/reference/metrics/data-quality/emq/emq-score) is the primary health indicator—a 0-10 rating from Meta * [**Event Coverage**](/reference/metrics/data-quality/emq/event-coverage) and [**Match Key Coverage**](/reference/metrics/data-quality/emq/match-key-coverage) measure how complete your customer identifiers are (email, phone, etc.) * [**ACR Percentage**](/reference/metrics/data-quality/emq/acr-percentage) shows what percentage of conversions Meta can actually attribute to ads * **Potential ACR** metrics show how much attribution could improve if you fix specific issues * [**Diagnostics Count**](/reference/metrics/data-quality/emq/diagnostics-count) and [**Match Key Issues**](/reference/metrics/data-quality/emq/match-key-issues) help identify specific problems to fix * **Dedupe Coverage** metrics ensure browser and server events aren't double-counted ## Choosing the Right Metric * **Overall health check**: Start with EMQ Score to see your aggregate rating * **Diagnosing issues**: Use Diagnostics Count and Match Key Issues to find problems * **Prioritizing fixes**: Compare Potential ACR metrics to find highest-impact improvements * **Deduplication audit**: Check Browser and Server Dedupe Coverage to prevent duplicate conversions * **Setting goals**: Use Event Coverage Goal as your benchmark target # ACR Percentage: Attributed Conversion Rate for Meta Events Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/acr-percentage Measure the share of conversions Meta can attribute to ad interactions. Higher ACR means better tracking and more accurate campaign optimization. ACR Percentage measures the share of your conversions that Meta can successfully attribute to ad interactions. ## Formula **ACR Percentage** = [**Attributed Conversions**](/reference/metrics/funnel/conversions) ÷ **Total Conversions** × 100 ### Formula Components | Metric | Definition | | -------------------------- | ---------------------------------------------- | | **Attributed Conversions** | Conversions Meta linked to an ad click or view | | **Total Conversions** | All purchase events sent through your pixel | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Average | *** ## Example **Your store achieved 68.4% ACR last month**, meaning Meta attributed over two-thirds of your conversions to specific ad interactions. | Week | Total Conversions | Attributed | ACR % | | ------ | ----------------- | ---------- | ------ | | Week 1 | 1,247 | 842 | 67.52% | | Week 2 | 1,389 | 962 | 69.26% | | Week 3 | 1,156 | 791 | 68.43% | *** ## How It Works ACR reflects how well Meta can trace conversions back to ad touches. Higher ACR comes from better match key coverage—sending hashed emails, phone numbers, and external IDs with your events. When ACR is low, Meta's ad optimization algorithms have less signal to work with, reducing campaign effectiveness. *** ## When to Use | Scenario | Action | | ----------------------------------- | ---------------------------------------------------------- | | ACR below 50% | Prioritize improving event coverage and match key quality | | ACR dropping over time | Investigate changes to data collection or privacy settings | | Comparing to Coverage Potential ACR | Gauge how much headroom exists for improvement | | Evaluating EMQ investments | Higher ACR directly improves Meta campaign optimization | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | ----------------------------------------------- | | [EMQ Score](/reference/metrics/data-quality/emq/emq-score) | Overall quality rating that influences ACR | | [Coverage Potential ACR](/reference/metrics/data-quality/emq/coverage-potential-acr) | How much ACR could improve with better coverage | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # Affected Event Count: Events Impacted by EMQ Issues Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/affected-event-count Track how many events are impacted by Meta EMQ diagnostic issues. Identify scale of data quality problems affecting your conversion matching. Affected Event Count shows the number of events impacted by a specific EMQ diagnostic issue, helping you understand the scale of data quality problems. ## Formula **Affected Event Count** = **COUNT** ( Events ) **WHERE** diagnostic\_issue = active ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | ---------------------------------------------------------------------- | | **Events** | Total events sent via Conversions API | | [**diagnostic\_issue = active**](/data-dictionary/measures-and-dimensions) | Filters to events with a specific data quality problem flagged by Meta | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example Your Purchase event has a diagnostic issue flagged for **missing phone numbers**: | Event Type | Total Events | Affected Events | Impact | | ----------- | ------------ | --------------- | -------------- | | Purchase | 12,450 | 3,847 | 30.9% affected | | AddToCart | 45,200 | 8,104 | 17.9% affected | | ViewContent | 128,000 | 15,360 | 12.0% affected | *** ## How It Works Meta's Event Match Quality system scans your Conversions API events for data quality issues. Each diagnostic issue tracks how many events are impacted. Higher counts indicate a broader problem that affects more of your conversion data and may reduce attribution accuracy. *** ## When to Use | Scenario | Action | | --------------------- | -------------------------------------------------------- | | Prioritizing fixes | Focus on diagnostics affecting the most events first | | Measuring improvement | Track affected count over time after implementing fixes | | Assessing impact | Understand how widespread a specific data issue is | | Resource allocation | Allocate engineering time based on event volume affected | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------- | ---------------------------------------- | | [Affected Events %](/reference/metrics/data-quality/emq/affected-events-percentage) | Percentage version of this metric | | [Diagnostics Count](/reference/metrics/data-quality/emq/diagnostics-count) | Total number of active diagnostic issues | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # Affected Events %: Share of Events with Quality Issues Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/affected-events-percentage Track the percentage of events impacted by a specific diagnostic issue. Identify which issues affect the most events to prioritize fixes. The share of your total events impacted by a specific diagnostic issue. ## Formula **Affected Events %** = [**Affected Event Count**](/reference/metrics/data-quality/emq/affected-event-count) ÷ **Total Events** × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------ | -------------------------------------------------- | | [**Affected Event Count**](/reference/metrics/data-quality/emq/affected-event-count) | Number of events impacted by this diagnostic issue | | **Total Events** | Total number of events sent during the period | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Average | *** ## Example Your pixel has **3 active diagnostics**. Here's how they affect your events: | Diagnostic Issue | Affected % | Priority | | -------------------- | ---------- | -------- | | Missing email hash | 42.3% | High | | Invalid phone format | 8.7% | Medium | | Missing external\_id | 2.1% | Low | The "Missing email hash" issue impacts 42.3% of your events and should be fixed first. *** ## How It Works Meta analyzes your event data and flags quality issues that reduce matching accuracy. Affected Events % shows what portion of your total event volume is impacted by each specific issue. Higher percentages indicate issues affecting more of your data. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------------------ | | Prioritizing fixes | Address issues with the highest affected % first | | Measuring fix impact | Compare before/after to confirm resolution | | Tracking data quality | Monitor trends over time for quality regressions | | Resource allocation | Focus engineering time on highest-impact issues | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [Affected Event Count](/reference/metrics/data-quality/emq/affected-event-count) | Absolute count of events (this metric shows the percentage) | | [Diagnostics Count](/reference/metrics/data-quality/emq/diagnostics-count) | Total number of active diagnostic issues | | [EMQ Score](/reference/metrics/data-quality/emq/emq-score) | Overall quality score impacted by these issues | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # Browser Dedupe Coverage: Pixel Event Deduplication Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/browser-dedupe-coverage Track what percentage of your browser pixel events include a deduplication key. Higher coverage prevents double-counting conversions. Browser Dedupe Coverage measures the percentage of browser pixel events that include a deduplication key, preventing double-counting when browser and server events overlap. ## Formula **Browser Dedupe Coverage** = **Browser Events with Dedupe Key** ÷ **Total Browser Events** × 100 ### Formula Components | Metric | Definition | | ---------------------------------- | ---------------------------------------------------------------- | | **Browser Events with Dedupe Key** | Browser pixel events that include an event\_id for deduplication | | **Total Browser Events** | All browser pixel events sent to Meta | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Average | *** ## Example A brand's pixel fires **12,450 browser events** in January. **11,830** include a deduplication key. | Metric | Value | | ------------------------------ | --------- | | Browser Events with Dedupe Key | 11,830 | | Total Browser Events | 12,450 | | **Browser Dedupe Coverage** | **95.0%** | *** ## How It Works When both your browser pixel and Conversions API send the same event, Meta needs a deduplication key (event\_id) to recognize them as one conversion rather than two. Browser Dedupe Coverage shows how many of your browser events include this key. Higher coverage means more accurate conversion counts and better attribution. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------ | | Coverage below 90% | Verify pixel is sending event\_id with all conversion events | | Conversion counts seem inflated | Check both browser and server dedupe coverage for gaps | | Setting up Conversions API | Ensure matching event\_ids between browser and server events | | Optimizing EMQ Score | Improve dedupe coverage to prevent duplicate conversions | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | --------------------------------------------------------------------- | | [Server Dedupe Coverage](/reference/metrics/data-quality/emq/server-dedupe-coverage) | Server-side equivalent—both should be high for accurate deduplication | | [Overall Browser Coverage](/reference/metrics/data-quality/emq/overall-browser-coverage) | Combined deduplication effectiveness across all browser events | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # Coverage Potential ACR: Conversion Rate Improvement Opportunity Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/coverage-potential-acr Measure how much your attributed conversion rate could improve by increasing event coverage to Meta's recommended goal. Coverage Potential ACR shows how much your attributed conversion rate could improve if you increase event coverage to the recommended goal. ## Formula **Coverage Potential ACR** = **Coverage Gap** × **ACR Improvement Factor** ### Formula Components | Metric | Definition | | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | **Coverage Gap** | [Event Coverage Goal](/reference/metrics/data-quality/emq/event-coverage-goal) − [Event Coverage](/reference/metrics/data-quality/emq/event-coverage) | | **ACR Improvement Factor** | Meta's estimated conversion rate gain per coverage percentage point | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Average | *** ## Example Your store currently has **72% event coverage** but Meta recommends **95%** for optimal matching. Coverage Potential ACR shows **+4.8%**. | Current State | Value | Impact | | ---------------------- | ----- | ------------------------- | | Event Coverage | 72% | Below goal | | Coverage Goal | 95% | Meta recommended | | Coverage Potential ACR | +4.8% | Potential ACR improvement | *** ## How It Works Meta calculates how much additional conversion attribution you could gain by closing the gap between your current event coverage and the recommended goal. This improvement comes from more events having valid customer identifiers that Meta can match to ad interactions. *** ## When to Use | Scenario | Action | | ----------------------------------- | --------------------------------------------------- | | Prioritizing EMQ improvements | Focus on coverage if potential ACR gain is high | | Comparing improvement opportunities | Weigh coverage gains against match key fixes | | Building the business case | Quantify revenue impact of better event coverage | | Tracking progress | Monitor potential ACR decrease as coverage improves | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ----------------------------------------------------- | | [ACR Percentage](/reference/metrics/data-quality/emq/acr-percentage) | Current attributed conversion rate this could improve | | [Event Coverage](/reference/metrics/data-quality/emq/event-coverage) | Current coverage percentage to increase | | [Event Coverage Goal](/reference/metrics/data-quality/emq/event-coverage-goal) | Target coverage to achieve full potential | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # Diagnostics Count: Active Event Setup Issues Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/diagnostics-count Track the number of active diagnostic issues Meta has flagged with your event setup. Resolve issues to improve your EMQ score and attribution quality. Diagnostics Count shows how many active issues Meta has flagged with your event setup that may reduce your EMQ score and attribution quality. ## Formula **Diagnostics Count** = **COUNT** ( Active Diagnostic Issues ) | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example **Your pixel has 3 active diagnostic issues** flagged by Meta this week. | Issue | Severity | Impact | | ------------------------------ | -------- | --------------- | | Missing external\_id parameter | High | −0.8 EMQ points | | Invalid phone format | Medium | −0.3 EMQ points | | Low email coverage | Low | −0.2 EMQ points | Resolving all three issues could improve your EMQ score by up to 1.3 points. *** ## How It Works Meta continuously monitors your Conversions API event data and flags issues that affect matching quality. Each diagnostic issue identifies a specific problem—like missing parameters, invalid formatting, or low coverage—that prevents Meta from matching events to users. Upstack syncs these diagnostics daily from Meta's Events Manager API. *** ## When to Use | Scenario | Action | | ------------------------ | ---------------------------------------------------- | | EMQ score dropped | Check diagnostics for new issues causing the decline | | Setting up a new pixel | Monitor diagnostics during initial configuration | | Poor attribution results | Prioritize high-severity diagnostics first | | Weekly health check | Review and resolve any new flagged issues | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ------------------------------------------------------- | | [EMQ Score](/reference/metrics/data-quality/emq/emq-score) | Each diagnostic issue can reduce your overall EMQ score | | [Match Key Issues](/reference/metrics/data-quality/emq/match-key-issues) | Specific match key problems that appear as diagnostics | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # EMQ Score: Meta Event Match Quality Rating Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/emq-score Track your Meta Event Match Quality score on a 0-10 scale. Higher EMQ scores improve ad delivery accuracy and attribution for your Meta campaigns. EMQ Score measures how well Meta can match your conversion events to Facebook users, rated on a 0-10 scale. ## Formula **EMQ Score** = Meta's proprietary scoring algorithm based on [**Match Key Coverage**](/reference/metrics/data-quality/emq/match-key-coverage), [**Event Coverage**](/reference/metrics/data-quality/emq/event-coverage), and deduplication ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [**Match Key Coverage**](/reference/metrics/data-quality/emq/match-key-coverage) | Percentage of events with valid customer identifiers | | [**Event Coverage**](/reference/metrics/data-quality/emq/event-coverage) | Percentage of events with at least one matchable identifier | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Average | | **Scale** | 0-10 | *** ## Example **Your pixel achieved an EMQ score of 8.4/10 this week**, up from 7.2 last month after improving email capture rates. | Event Type | EMQ Score | Match Keys Present | | ----------- | --------- | ------------------ | | Purchase | 9.1/10 | Email, Phone, FBP | | Add to Cart | 7.8/10 | FBP, External ID | | Page View | 6.2/10 | FBP only | *** ## How It Works Meta calculates your EMQ score based on how many customer identifiers you pass with each event and how accurately those identifiers can be matched to Facebook profiles. Events with multiple high-quality match keys (hashed email, phone, external ID) receive higher scores than events with only browser-based identifiers. *** ## When to Use | Scenario | Action | | ---------------------- | ---------------------------------------------------------------- | | Score below 6.0 | Audit customer data capture at checkout and login points | | Score dropped suddenly | Check for pixel implementation changes or data collection issues | | Score plateaued at 7-8 | Focus on capturing phone numbers and secondary identifiers | | Score above 9.0 | Maintain current implementation; monitor for regressions | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ----------------------------------------------------------- | | [Event Coverage](/reference/metrics/data-quality/emq/event-coverage) | Shows what percentage of events have matchable data | | [Match Key Coverage](/reference/metrics/data-quality/emq/match-key-coverage) | Shows coverage for specific identifiers like email or phone | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # Event Coverage: Percentage of Events with Valid Match Keys Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/event-coverage Track what percentage of your events include valid customer identifiers for Meta matching. Improve coverage to boost EMQ scores and attribution accuracy. Event Coverage measures the percentage of your events that include at least one valid customer identifier (email, phone, etc.) that Meta can use for matching. ## Formula **Event Coverage** = **Events with Valid Match Keys** ÷ [**Total Events**](/reference/metrics/funnel/engagement/total-events) × 100 ### Formula Components | Metric | Definition | | -------------------------------- | ----------------------------------------------------------------- | | **Events with Valid Match Keys** | Count of events containing at least one valid customer identifier | | **Total Events** | Total events sent to Meta during the period | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Average | *** ## Example **Your store sends 10,000 events to Meta in a week.** Of those, 8,500 include at least one valid match key (email, phone, or external ID). | Metric | Value | | ---------------------- | --------- | | Events with Match Keys | 8,500 | | Total Events | 10,000 | | **Event Coverage** | **85.0%** | *** ## How It Works Meta evaluates each event you send via the Conversions API to determine if it contains usable customer identifiers. Events with valid identifiers (properly hashed emails, phone numbers, or external IDs) count toward coverage. Higher coverage means more events can be matched to Facebook users for attribution. *** ## When to Use | Scenario | Action | | --------------------------------- | --------------------------------------------------------------------- | | Event coverage below 80% | Add more customer identifiers to your event payloads | | EMQ score isn't improving | Check if coverage is the limiting factor before addressing match keys | | Setting up new event types | Monitor coverage to ensure identifiers are being captured | | Comparing pixel vs. server events | Identify which channel captures more customer data | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | -------------------------------------------------------- | | [EMQ Score](/reference/metrics/data-quality/emq/emq-score) | Overall quality score that event coverage contributes to | | [Match Key Coverage](/reference/metrics/data-quality/emq/match-key-coverage) | Breakdown of coverage by specific identifier type | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # Event Coverage Goal: Meta's Recommended Coverage Target Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/event-coverage-goal View the event coverage target Meta recommends for your pixel. Meet this goal to achieve optimal ad delivery and attribution accuracy. Event Coverage Goal is the target coverage percentage Meta recommends for your pixel to achieve optimal ad delivery and attribution. ## Formula **Event Coverage Goal** = Target percentage provided by Meta based on your event volume and account configuration | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Point-in-time | *** ## Example **Meta sets your Event Coverage Goal at 90.0%.** Your current Event Coverage is 82.5%, meaning you need to improve by 7.5 percentage points. | Metric | Value | | ---------------- | ----- | | Coverage Goal | 90.0% | | Current Coverage | 82.5% | | Gap to Target | 7.5% | *** ## How It Works Meta evaluates your pixel's event volume and account requirements to set a personalized coverage target. This goal represents the minimum percentage of events that should include valid match keys (email, phone, etc.) for optimal ad delivery and attribution accuracy. *** ## When to Use | Scenario | Action | | ------------------------------- | ----------------------------------------------------- | | Current coverage below goal | Prioritize adding customer identifiers to more events | | Goal recently increased | Review new event types that may lack identifiers | | Coverage equals or exceeds goal | Focus on improving match key quality instead | | Planning CAPI improvements | Use the gap between current and goal to scope work | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | -------------------------------------------------------- | | [Event Coverage](/reference/metrics/data-quality/emq/event-coverage) | Your current coverage percentage (compare to this goal) | | [Coverage Potential ACR](/reference/metrics/data-quality/emq/coverage-potential-acr) | Potential attribution improvement from reaching the goal | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # Event Potential ACR: Conversion Rate Gains from Quality Fixes Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/event-potential-acr Measure how much your attributed conversion rate could improve by resolving event quality issues identified in Meta diagnostics. Event Potential ACR shows how much your attributed conversion rate could improve by resolving event quality issues identified in diagnostics. ## Formula **Event Potential ACR** = **Quality Issues** × **ACR Improvement Factor** ### Formula Components | Metric | Definition | | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | | **Quality Issues** | Event setup issues flagged in [Diagnostics Count](/reference/metrics/data-quality/emq/diagnostics-count) that reduce matching | | **ACR Improvement Factor** | Meta's estimated conversion rate gain from resolving each issue | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Average | *** ## Example Your store has **3 active diagnostic issues** affecting event quality. Meta estimates an Event Potential ACR of **+2.35%**. | Issue Type | Affected Events | Potential ACR Impact | | -------------------- | --------------- | -------------------- | | Missing event\_id | 12,450 | +1.2% | | Invalid phone format | 3,200 | +0.8% | | Missing user\_data | 1,800 | +0.35% | | **Total** | **17,450** | **+2.35%** | *** ## How It Works Meta analyzes event quality issues from your Conversions API setup and estimates how much attributed conversion rate you're losing. Resolving these issues—such as fixing data formatting, adding missing parameters, or correcting event timing—enables better user matching and more accurate attribution. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------------- | | Prioritizing EMQ improvements | Focus on event quality if potential ACR gain is high | | Comparing fix opportunities | Weigh event quality fixes against coverage improvements | | Building the business case | Quantify revenue impact of resolving diagnostic issues | | Tracking remediation progress | Monitor potential ACR decrease as issues are resolved | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | ------------------------------------------------------ | | [ACR Percentage](/reference/metrics/data-quality/emq/acr-percentage) | Current attributed conversion rate this could improve | | [Diagnostics Count](/reference/metrics/data-quality/emq/diagnostics-count) | Number of issues contributing to potential improvement | | [Coverage Potential ACR](/reference/metrics/data-quality/emq/coverage-potential-acr) | Alternative improvement path through event coverage | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # Expected EMQ Increase: Projected Score Improvement Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/expected-emq-increase Track predicted EMQ score gains from fixing specific match key issues. Prioritize data quality fixes by their potential impact on Meta event matching. Expected EMQ Increase shows how many EMQ score points you would gain by fixing a specific match key issue. ## Formula **Expected EMQ Increase** = Predicted [**EMQ Score**](/reference/metrics/data-quality/emq/emq-score) improvement from resolving the [**Match Key Coverage**](/reference/metrics/data-quality/emq/match-key-coverage) issue ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ------------------------------------------------------ | | [**EMQ Score**](/reference/metrics/data-quality/emq/emq-score) | Your existing Event Match Quality score (0-10) | | [**Match Key Coverage**](/reference/metrics/data-quality/emq/match-key-coverage) | Current coverage percentage for the specific match key | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Prediction | | **Format** | +X.XX | *** ## Example Your **email match key** has 45% coverage and is flagged as an issue. The Expected EMQ Increase shows **+1.25 points**. | Match Key | Current Coverage | Expected EMQ Increase | Priority | | ----------- | ---------------- | --------------------- | -------- | | Email | 45% | +1.25 | High | | Phone | 62% | +0.78 | Medium | | External ID | 28% | +0.42 | Low | *** ## How It Works Meta calculates the predicted score improvement based on your current EMQ score, the specific match key's coverage gap, and historical matching patterns. Higher predicted increases indicate match keys with greater potential to improve your overall event quality. *** ## When to Use | Scenario | Action | | ------------------- | ------------------------------------------------------- | | Prioritizing fixes | Address match keys with highest expected increase first | | Resource allocation | Focus engineering effort on highest-impact improvements | | Reporting progress | Track cumulative potential gains as issues are resolved | | Setting targets | Use predictions to set realistic EMQ improvement goals | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ---------------------------------------------- | | [EMQ Score](/reference/metrics/data-quality/emq/emq-score) | The score this metric predicts improvement for | | [Match Key Coverage](/reference/metrics/data-quality/emq/match-key-coverage) | Coverage percentage affecting the prediction | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # Match Key Coverage: Identifier Presence by Type Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/match-key-coverage Track what percentage of events include specific customer identifiers like email or phone. Improve coverage per match key to boost Meta matching quality. Match Key Coverage measures the percentage of events that include a specific customer identifier (email, phone, external ID, etc.). ## Formula **Match Key Coverage** = **Events with This Match Key** ÷ [**Total Events**](/reference/metrics/funnel/engagement/total-events) × 100 ### Formula Components | Metric | Definition | | ------------------------------ | ------------------------------------------------------- | | **Events with This Match Key** | Count of events containing the specific identifier type | | **Total Events** | Total events sent to Meta during the period | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Average | *** ## Example **Your store sends 12,000 purchase events to Meta this month.** Coverage varies significantly by identifier type. | Match Key | Events Present | Coverage | | ----------- | -------------- | -------- | | Email | 10,800 | 90.0% | | Phone | 4,200 | 35.0% | | External ID | 11,400 | 95.0% | | FBP Cookie | 12,000 | 100.0% | *** ## How It Works Meta evaluates each match key type independently. Coverage is calculated per identifier—email coverage shows how many events have hashed emails, phone coverage shows phone numbers, etc. Higher coverage for high-quality identifiers (email, phone) improves your EMQ score more than browser-based identifiers alone. *** ## When to Use | Scenario | Action | | ---------------------------- | ---------------------------------------------------------------- | | Email coverage below 80% | Audit checkout and account flows to capture more emails | | Phone coverage below 30% | Add optional phone field to checkout or offer SMS signup | | External ID coverage low | Ensure logged-in users have IDs passed in all events | | Single key has zero coverage | Check if that identifier type is being hashed and sent correctly | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------- | ----------------------------------------------------------- | | [EMQ Score](/reference/metrics/data-quality/emq/emq-score) | Overall quality score improved by higher match key coverage | | [Event Coverage](/reference/metrics/data-quality/emq/event-coverage) | Shows overall percentage of events with any match key | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # Match Key Issues: Data Quality Problems in Customer Identifiers Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/match-key-issues Track the number of match keys with data quality issues affecting Meta matching. Monitor email, phone, and other identifier fields to improve your EMQ score. The count of customer identifier fields (email, phone, etc.) that have data quality problems affecting Meta matching. ## Formula **Match Key Issues** = **COUNT** ( Match Keys with Identified Issues ) | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Number | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Count | *** ## Example **Your pixel has 3 match key issues** flagged by Meta this week: | Match Key | Issue | Impact | | ----------- | ----------------------- | ------ | | Email | Invalid format detected | High | | Phone | Missing country codes | Medium | | External ID | Inconsistent hashing | Low | *** ## How It Works Meta analyzes each customer identifier field you send with conversion events and flags issues that reduce matching accuracy. Common problems include invalid email formats, phone numbers without country codes, unhashed data, or inconsistent formatting across events. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------------------------------------------ | | Issue count increased | Review recent implementation changes to customer data capture | | Persistent high count | Audit data validation before sending events to Meta | | Count dropped to zero | Confirm fixes resolved issues; monitor for regressions | | New issue appeared | Check the specific match key field for formatting or collection problems | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ------------------------------------------------------ | | [Diagnostics Count](/reference/metrics/data-quality/emq/diagnostics-count) | Total diagnostic issues (Match Key Issues is a subset) | | [Match Key Coverage](/reference/metrics/data-quality/emq/match-key-coverage) | Coverage percentage for each identifier type | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # Match Key Potential ACR: Conversion Rate Improvement Opportunity Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/match-key-potential-acr See how much your attributed conversion rate could improve by fixing a specific match key. Prioritize data quality fixes by potential ACR gain. The potential improvement to your Attributed Conversion Rate if a specific match key is fixed. ## Formula **Match Key Potential ACR** = Estimated [**ACR Percentage**](/reference/metrics/data-quality/emq/acr-percentage) gain from improving coverage or quality of a specific match key (email, phone, etc.) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ------------------------------------------------------- | | [**Match Key Coverage**](/reference/metrics/data-quality/emq/match-key-coverage) | Current coverage percentage for the specific identifier | | [**ACR Percentage**](/reference/metrics/data-quality/emq/acr-percentage) | Current attributed conversion rate to improve | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Average | *** ## Example Your store has a **2.4%** potential ACR gain from fixing the phone match key: | Match Key | Current Coverage | Potential ACR Gain | | ----------- | ---------------- | ------------------ | | Email | 92% | 0.3% | | Phone | 45% | 2.4% | | External ID | 78% | 0.8% | | First Name | 88% | 0.2% | Improving phone coverage would have the highest impact on your attributed conversion rate. *** ## How It Works Meta estimates how much your Attributed Conversion Rate would improve if you increase coverage or fix quality issues for each match key. This helps you prioritize which customer identifiers to focus on first for maximum attribution improvement. *** ## When to Use | Scenario | Action | | ------------------------------- | --------------------------------------------------- | | Prioritizing data quality fixes | Focus on match keys with highest potential ACR gain | | Low attributed conversions | Identify which match keys are limiting attribution | | Planning pixel improvements | Target specific identifiers for better coverage | | Comparing fix impact | Evaluate ROI of different data collection efforts | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ----------------------------------------------------------------- | | [ACR Percentage](/reference/metrics/data-quality/emq/acr-percentage) | Your current attributed conversion rate this metric could improve | | [Match Key Coverage](/reference/metrics/data-quality/emq/match-key-coverage) | Coverage level that affects this potential gain | | [EMQ Score](/reference/metrics/data-quality/emq/emq-score) | Overall quality score affected by match key improvements | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # Overall Browser Coverage: Deduplication Key Coverage Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/overall-browser-coverage Track combined deduplication key coverage across all browser events to prevent duplicate conversion reporting in Meta ads. Overall Browser Coverage measures the percentage of browser pixel events that include a deduplication key, reflecting how well your setup prevents duplicate conversion reporting. ## Formula **Overall Browser Coverage** = **Browser Events with Dedupe Key** ÷ **Total Browser Events** × 100 ### Formula Components | Metric | Definition | | ---------------------------------- | ------------------------------------------------------------------- | | **Browser Events with Dedupe Key** | Count of browser pixel events containing a deduplication identifier | | **Total Browser Events** | Total count of browser pixel events sent to Meta | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Average | *** ## Example Your store sends **12,450 browser events** to Meta, with **11,580 including deduplication keys**. | Metric | Value | Interpretation | | ---------------------------- | --------- | ----------------------------- | | Events with Dedupe Key | 11,580 | Browser events with event IDs | | Total Browser Events | 12,450 | All browser pixel events | | **Overall Browser Coverage** | **93.0%** | Strong deduplication coverage | *** ## How It Works When both browser pixel and server Conversions API send the same conversion event, Meta uses deduplication keys to avoid double-counting. This metric shows the percentage of your browser events that include the required identifier (typically `event_id`) for accurate deduplication. *** ## When to Use | Scenario | Action | | ----------------------------- | -------------------------------------------------- | | Coverage below 90% | Check pixel configuration for missing event IDs | | Seeing duplicate conversions | Verify browser events include matching dedupe keys | | Setting up redundant tracking | Ensure browser and server events share identifiers | | Auditing data quality | Compare with server coverage for full picture | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | -------------------------------------------- | | [Browser Dedupe Coverage](/reference/metrics/data-quality/emq/browser-dedupe-coverage) | Per-event breakdown of browser deduplication | | [Server Dedupe Coverage](/reference/metrics/data-quality/emq/server-dedupe-coverage) | Server-side deduplication key coverage | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # Server Dedupe Coverage: Conversions API Deduplication Source: https://docs.upstackdata.com/reference/metrics/data-quality/emq/server-dedupe-coverage Track what percentage of your server-side Conversions API events include a deduplication key. Higher coverage ensures accurate deduplication against browser pixel events. Server Dedupe Coverage measures the percentage of server-side Conversions API events that include a deduplication key, enabling accurate deduplication against browser pixel events. ## Formula **Server Dedupe Coverage** = **Server Events with Dedupe Key** ÷ **Total Server Events** × 100 ### Formula Components | Metric | Definition | | --------------------------------- | ------------------------------------------------------------------ | | **Server Events with Dedupe Key** | Conversions API events that include an event\_id for deduplication | | **Total Server Events** | All server-side Conversions API events sent to Meta | | Metadata | | | --------------- | ----------------------------------------- | | **Type** | Percentage | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads) | | **Aggregation** | Average | *** ## Example A brand's Conversions API sends **8,920 server events** in January. **8,654** include a deduplication key. | Metric | Value | | ----------------------------- | --------- | | Server Events with Dedupe Key | 8,654 | | Total Server Events | 8,920 | | **Server Dedupe Coverage** | **97.0%** | *** ## How It Works When you send events via the Conversions API, Meta needs a deduplication key (event\_id) to match them against browser pixel events and avoid double-counting. Server Dedupe Coverage shows how many of your server events include this key. Higher coverage means Meta can accurately deduplicate overlapping browser and server events, improving attribution accuracy. *** ## When to Use | Scenario | Action | | ------------------------------- | -------------------------------------------------------------------------- | | Coverage below 95% | Verify your Conversions API implementation sends event\_id with all events | | Conversion counts seem inflated | Check both server and browser dedupe coverage for mismatches | | Implementing Conversions API | Ensure event\_ids match between browser pixel and server events | | Optimizing EMQ Score | Improve server dedupe coverage to enable accurate deduplication | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | | [Browser Dedupe Coverage](/reference/metrics/data-quality/emq/browser-dedupe-coverage) | Browser-side equivalent—both should be high for accurate deduplication | | [Overall Browser Coverage](/reference/metrics/data-quality/emq/overall-browser-coverage) | Combined deduplication effectiveness across all browser events | [See all EMQ metrics →](/reference/metrics/data-quality/emq) # Funnel Metrics: Track Conversions and Customer Journey Source: https://docs.upstackdata.com/reference/metrics/funnel Track attributed conversions and customer journey progression in Upstack. Browse 296 funnel metrics across Awareness, Engagement, Attributed Conversions, and Sessions. Funnel metrics track how users progress through your conversion funnel—from initial engagement to completed purchase. These metrics help you understand attribution effectiveness and identify where customers convert. **Data Source:** Upstack Pixel + Shopify\ **Metrics in Category:** 296 ## Subcategories | Subcategory | Metrics | Description | | --------------------------------------------------------------- | ------- | ------------------------------------------------------- | | [Awareness](/reference/metrics/funnel/awareness) | 19 | Page views, sessions, and visitor traffic | | [Engagement](/reference/metrics/funnel/engagement) | 77 | Product views, add-to-carts, and checkout starts | | [Attributed Conversions](/reference/metrics/funnel/conversions) | 176 | Cross-channel attributed conversions and their value | | [Sessions](/reference/metrics/funnel/sessions) | 24 | Session duration, scroll depth, and interaction quality | ## Key Funnel Metrics | Metric | Description | | ------------------------------------------------------------------------------------------ | -------------------------------------------- | | [Attributed Conversions](/reference/metrics/funnel/conversions/conversions) | Attributed conversion events | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total value of conversions | | [Unique Converters](/reference/metrics/funnel/conversions/unique-converters) | Distinct customers who converted | | [Average Conversion Value](/reference/metrics/funnel/conversions/average-conversion-value) | Average value per conversion | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Percentage of sessions resulting in purchase | ## When to Use Funnel Metrics * **Measure campaign ROI** — Compare conversion value against ad spend to calculate true return on investment * **Optimize attribution** — Understand which touchpoints drive conversions across the customer journey * **Identify high-value segments** — Use average conversion value to find and target your most valuable customers # Awareness Metrics: Visitor Traffic & Acquisition for E-commerce Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness Track visitor awareness metrics in Upstack Funnel. Includes Page Views, Unique Sessions, Unique Visitors, and New Visitors with formulas and optimization tips. Awareness metrics measure the top of your marketing funnel—how many visitors your site attracts and whether they're new or returning. Use these to evaluate traffic volume, acquisition effectiveness, and audience growth. **Data Source:** [Upstack Pixel](/pixel)\ **Metrics:** 19 ## Key Metrics in This Group The table below highlights the most commonly used awareness metrics — browse the full list of 19 in the sidebar. | Metric | Description | When to Use | | -------------------------------------------------------------------------------------- | ------------------------------------------------------- | --------------------------------------- | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Total page load events across your site | Measure overall traffic volume | | [Cost per Page View](/reference/metrics/funnel/awareness/cost-per-page-view) | Ad spend divided by page views | Evaluate traffic acquisition efficiency | | [Page Views Value](/reference/metrics/funnel/awareness/page-views-value) | Monetary value attributed to page views | Measure awareness-stage value | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Count of distinct browsing sessions | Track site visits (not just page loads) | | [Cost per Session](/reference/metrics/funnel/awareness/cost-per-session) | Ad spend divided by sessions | Evaluate session acquisition efficiency | | [Unique Visitors](/reference/metrics/funnel/awareness/unique-visitors) | Count of distinct individuals using identity resolution | Measure unique audience size | | [New Visitors](/reference/metrics/funnel/awareness/new-visitors) | First-time visitors to your store | Track customer acquisition | | [New Visitors Percentage](/reference/metrics/funnel/awareness/new-visitors-percentage) | Percentage of traffic from new visitors | Balance acquisition vs retention | | [Bounce Rate](/reference/metrics/funnel/awareness/bounce-rate) | Percentage of single-page sessions | Identify landing page engagement issues | ## How These Metrics Relate These metrics form a hierarchy of audience measurement: * **Page Views** counts every page load (one session can have many page views) * **Unique Sessions** counts browsing sessions (one visitor can have many sessions) * **Unique Visitors** counts distinct people using identity resolution * **New Visitors** is a subset: first-time visitors only * [**New Visitors Percentage**](/reference/metrics/funnel/awareness/new-visitors-percentage) = [**New Visitors**](/reference/metrics/funnel/awareness/new-visitors) ÷ [**Unique Visitors**](/reference/metrics/funnel/awareness/unique-visitors) × 100 * [**Bounce Rate**](/reference/metrics/funnel/awareness/bounce-rate) = Bounced Sessions ÷ [**Unique Sessions**](/reference/metrics/funnel/awareness/unique-sessions) × 100 (measures engagement quality) Cost and value metrics help you understand efficiency: * [**Cost per Page View**](/reference/metrics/funnel/awareness/cost-per-page-view) = Ad Spend ÷ [**Page Views**](/reference/metrics/funnel/awareness/page-views) * [**Cost per Session**](/reference/metrics/funnel/awareness/cost-per-session) = Ad Spend ÷ [**Sessions**](/reference/metrics/funnel/awareness/sessions) * **Page Views Value** = Attributed value from awareness-stage events ## Choosing the Right Metric * **Traffic volume**: Use Page Views for raw traffic, Unique Sessions for visit count * **Audience size**: Use Unique Visitors to count distinct people * **Acquisition analysis**: Use New Visitors and New Visitors % to measure growth * **Efficiency**: Compare Cost per Page View or Cost per Session across channels * **Attribution value**: Use Page Views Value to see top-funnel impact on revenue * **Engagement quality**: Use Bounce Rate to identify landing pages losing visitors # Bounce Rate: Single-Page Session Percentage Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/bounce-rate Track your e-commerce store's bounce rate to understand what percentage of sessions leave without engagement. Optimize landing pages and reduce exits. Bounce Rate measures the percentage of sessions where visitors left after viewing only one page without any further interaction. ## Formula **Bounce Rate** = ( **Bounced Sessions** ÷ [**Unique Sessions**](/reference/metrics/funnel/awareness/unique-sessions) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | | **Bounced Sessions** | Sessions where the visitor viewed only one page and left without additional interactions | | [**Unique Sessions**](/reference/metrics/funnel/awareness/unique-sessions) | Total distinct sessions tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your online store recorded **15,000 unique sessions** this week with **4,500 bounced sessions**. | Metric | Value | Calculation | | ---------------- | ------- | -------------------- | | Unique Sessions | 15,000 | Total site sessions | | Bounced Sessions | 4,500 | Single-page sessions | | **Bounce Rate** | **30%** | 4,500 ÷ 15,000 × 100 | *** ## How It Works The Upstack pixel tracks each session and monitors whether visitors navigate to additional pages or trigger engagement events. A session counts as "bounced" if the visitor leaves after only the landing page view. Lower bounce rates indicate better engagement and content relevance. *** ## When to Use | Scenario | Action | | ---------------------------- | -------------------------------------------------------------- | | High bounce on landing pages | Improve page load speed, content relevance, or calls-to-action | | Comparing traffic sources | Identify channels sending low-intent traffic | | Evaluating page redesigns | Monitor before/after bounce rates to measure impact | | Diagnosing funnel drop-off | High bounce indicates awareness-to-engagement gap | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Denominator — total sessions tracked | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Total pages viewed (higher pages per session = lower bounce) | | [Avg. Page Views per Session](/reference/metrics/funnel/engagement/avg-page-views-per-session) | Inverse relationship — higher engagement, lower bounce | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # Cost per Page View: Measure Traffic Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/cost-per-page-view Calculate cost per page view to measure how efficiently your ad spend drives traffic. Track ad efficiency at the awareness stage with formula and optimization tips. Average ad spend per page view event tracked by the Upstack pixel. ## Formula **Cost per Page View** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Page Views**](/reference/metrics/funnel/awareness/page-views) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ----------------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across connected ad platforms | | [**Page Views**](/reference/metrics/funnel/awareness/page-views) | Total page load events tracked by the Upstack pixel | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), Ad Platforms | | **Aggregation** | Ratio | *** ## Example Your store spent **\$2,400** on ads last week and generated **48,000 page views**: | Channel | Spend | Page Views | Cost per Page View | | ------- | ------- | ---------- | ------------------ | | Meta | \$1,500 | 30,000 | \$0.05 | | Google | \$900 | 18,000 | \$0.05 | *** ## How It Works Cost per Page View divides your total advertising spend by the number of page view events captured by the Upstack pixel. Lower values indicate more efficient traffic acquisition—you're paying less for each visitor touchpoint. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------ | | Comparing channel efficiency | Identify which platforms drive traffic most cost-effectively | | Setting awareness budgets | Estimate spend needed to hit traffic targets | | Optimizing top-of-funnel | Reallocate budget toward lower-cost channels | | Benchmarking campaigns | Track efficiency trends over time | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ---------------------------------------------------- | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Denominator—total traffic volume | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Alternative volume metric for session-based analysis | | [Page Views Value](/reference/metrics/funnel/awareness/page-views-value) | Attributed revenue from page view events | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # Cost per Session: Measure Session Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/cost-per-session Calculate cost per session to measure how efficiently your ad spend drives visitor sessions. Track ad efficiency at the awareness stage with formula and benchmarks. Average ad spend per session tracked by the Upstack pixel. Calculated as Channel Spend ÷ Sessions. ## Formula **Cost per Session** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Unique Sessions**](/reference/metrics/funnel/awareness/unique-sessions) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | ---------------------------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across connected ad platforms | | [**Unique Sessions**](/reference/metrics/funnel/awareness/unique-sessions) | Count of distinct browsing sessions tracked by the Upstack pixel | | Metadata | | | --------------- | ------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), Ad Platforms | | **Aggregation** | Ratio | *** ## Example Your store spent **\$5,000** on ads last week and generated **25,000 unique sessions**: | Channel | Spend | Sessions | Cost per Session | | ------- | ------- | -------- | ---------------- | | Meta | \$3,000 | 15,000 | \$0.20 | | Google | \$2,000 | 10,000 | \$0.20 | *** ## How It Works Cost per Session divides your total advertising spend by the number of unique sessions captured by the Upstack pixel. Unlike Cost per Page View, this metric counts each visitor session once regardless of how many pages they view—giving you a cleaner measure of traffic acquisition cost. *** ## When to Use | Scenario | Action | | ----------------------------------- | ---------------------------------------------------------------------- | | Comparing channel efficiency | Identify which platforms deliver sessions most cost-effectively | | Setting traffic acquisition budgets | Estimate spend needed to hit session volume targets | | Evaluating campaign quality | Lower cost per session with strong engagement signals better campaigns | | Benchmarking over time | Track acquisition efficiency trends across weeks and months | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ----------------------------------------------- | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Denominator—total session volume | | [Cost per Page View](/reference/metrics/funnel/awareness/cost-per-page-view) | Alternative cost metric at the page level | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Measures how many sessions convert to purchases | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # Cost per View Category: Collection Page Traffic Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/cost-per-view-category Track cost per view category event to measure collection page traffic efficiency. Calculate ad spend per category page visit tracked by the Upstack pixel. The average ad spend required to drive one view category event (collection page visit) tracked by the Upstack pixel. ## Formula **Cost per View Category** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **View Category Events** ### Formula Components | Metric | Definition | | ------------------------ | --------------------------------------------------------------------- | | **Channel Spend** | Total advertising spend across the selected channel or all channels | | **View Category Events** | Number of collection/category page views tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your campaigns spent **\$5,000** and drove **25,000 view category events** this month: | Channel | Spend | View Category Events | Cost per View Category | | ---------- | ----------- | -------------------- | ---------------------- | | Meta Ads | \$3,000 | 18,000 | \$0.17 | | Google Ads | \$2,000 | 7,000 | \$0.29 | | **Total** | **\$5,000** | **25,000** | **\$0.20** | *** ## How It Works Cost per View Category calculates the average cost to drive a visitor to a collection or category page on your site. The Upstack pixel fires a View Category event each time a visitor lands on a collection page, giving you precise cost efficiency data independent of ad platform reporting. *** ## When to Use | Scenario | Action | | --------------------------------- | --------------------------------------------------------------------------------- | | Evaluate top-of-funnel efficiency | Compare cost per view category across channels to optimize budget allocation | | Benchmark collection page traffic | Track trends in cost efficiency for driving category page visits | | Optimize product discovery | Lower cost per view category means more efficient product browsing traffic | | Compare to downstream costs | Relate to cost per view content and cost per add to cart for full funnel analysis | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------- | -------------------------------------------------- | | [Cost per Page View](/reference/metrics/funnel/awareness/cost-per-page-view) | Broader awareness metric measuring all page views | | [Cost per View Content](/reference/metrics/funnel/engagement/cost-per-view-content) | Next funnel step measuring product page efficiency | | [Cost per Add to Cart](/reference/metrics/funnel/engagement/cost-per-add-to-cart) | Downstream engagement efficiency | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # Cost per View Item List: Measure Collection Page Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/cost-per-view-item-list Track your cost per view item list event. Measure how efficiently your ad spend drives collection and product list page views on your Shopify store. Cost per View Item List measures the average ad spend required to drive one collection or product list page view on your store. ## Formula **Cost per View Item List** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **View Item List Events** ### Formula Components | Metric | Definition | | ------------------------- | ------------------------------------------------------------------------ | | **Channel Spend** | Total advertising spend across all connected ad platforms | | **View Item List Events** | Total collection or product list page views tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your e-commerce store spent **\$2,500** on ads last week and drove **8,200 view item list events**: | Metric | Value | | --------------------------- | ---------- | | Channel Spend | \$2,500 | | View Item List Events | 8,200 | | **Cost per View Item List** | **\$0.30** | A cost of \$0.30 per collection page view indicates efficient awareness-stage traffic from your ad campaigns. *** ## How It Works View Item List events fire when visitors browse collection pages, category pages, or search results that display multiple products. Upstack tracks these events via the pixel and divides your total ad spend by the event count to calculate acquisition efficiency at the discovery stage of your funnel. *** ## When to Use | Scenario | Action | | ------------------------------ | ---------------------------------------------------------------------------------- | | Evaluating awareness campaigns | Compare cost per view item list across campaigns to find efficient traffic sources | | Optimizing collection traffic | Identify which ad creatives drive cheaper collection page visits | | Budget allocation | Shift spend toward channels with lower cost per view item list | | Funnel benchmarking | Track awareness-stage cost efficiency alongside engagement metrics | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | | [Cost per Page View](/reference/metrics/funnel/awareness/cost-per-page-view) | Broader awareness metric; Cost per View Item List is collection-specific | | [Cost per View Content](/reference/metrics/funnel/engagement/cost-per-view-content) | Next funnel stage—measures cost to drive product detail page views | | [View Item Lists](/reference/metrics/funnel/awareness/view-item-list) | Denominator—total collection page view events | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # New Visitors: First-Time Store Visitors Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/new-visitors Track first-time visitors to your store with the Upstack pixel. Measure customer acquisition effectiveness and identify growth opportunities. The count of visitors identified by the Upstack pixel as first-time visitors to your store. ## Formula **New Visitors** = **COUNT** ( Visitors ) **WHERE** [first\_visit = true](/data-dictionary/measures-and-dimensions#visitor-dimensions) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | **Visitors** | Individual people identified by the Upstack pixel's identity resolution | | [**first\_visit = true**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to visitors on their first-ever tracked visit to your store | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your store attracted **8,420 new visitors** last month from acquisition campaigns: | Source | New Visitors | Share | | -------------- | ------------ | ----- | | Paid Social | 4,210 | 50% | | Organic Search | 2,526 | 30% | | Direct | 1,684 | 20% | *** ## How It Works The Upstack pixel identifies first-time visitors using browser fingerprinting and cookie data. A visitor is counted as "new" only once—their first session on your store. Returning visitors are excluded from this count. *** ## When to Use | Scenario | Action | | --------------------------- | ---------------------------------------------------- | | Measuring acquisition reach | Track how many net-new people your campaigns attract | | Evaluating ad platforms | Compare which channels bring the most new traffic | | Seasonal planning | Identify when new visitor volume peaks | | Funnel analysis | Use as top-of-funnel baseline for conversion rates | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------- | ----------------------------------------- | | [Unique Visitors](/reference/metrics/funnel/awareness/unique-visitors) | Total visitors (new + returning combined) | | [New Visitors %](/reference/metrics/funnel/awareness/new-visitors-percentage) | New Visitors ÷ Unique Visitors | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Total sessions across all visitors | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # New Visitors Percentage: Measure Acquisition vs Retention Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/new-visitors-percentage Track the percentage of new visitors to your store. Measure acquisition effectiveness and balance with returning visitor retention in Upstack. Percentage of total unique visitors who are first-time visitors. High percentages indicate strong acquisition but may suggest retention challenges. ## Formula **New Visitors Percentage** = ( [**New Visitors**](/reference/metrics/funnel/awareness/new-visitors) ÷ [**Unique Visitors**](/reference/metrics/funnel/awareness/unique-visitors) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | ---------------------------------------------------------- | | [**New Visitors**](/reference/metrics/funnel/awareness/new-visitors) | First-time visitors identified through identity resolution | | [**Unique Visitors**](/reference/metrics/funnel/awareness/unique-visitors) | Distinct individuals visiting your store | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store had **8,500 unique visitors** last month, with **5,950 being new visitors**: | Segment | Count | Percentage | | ------------------ | ----- | ---------- | | New Visitors | 5,950 | 70% | | Returning Visitors | 2,550 | 30% | A 70% new visitor rate indicates strong top-of-funnel acquisition, but you may want to invest in retention strategies to bring visitors back. *** ## How It Works The Upstack pixel identifies unique visitors using cross-device identity resolution. A visitor is classified as "new" on their first tracked visit and "returning" on subsequent visits. This metric calculates the ratio of new visitors to total unique visitors. *** ## When to Use | Scenario | Action | | -------------------------------- | ----------------------------------------------------------- | | Evaluating acquisition campaigns | High percentages indicate effective reach to new audiences | | Diagnosing retention issues | Consistently high rates may signal poor retention | | Seasonal analysis | Compare new visitor ratios across peak and off-peak periods | | Channel comparison | Identify which channels drive new vs returning traffic | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------- | -------------------------------------------------- | | [New Visitors](/reference/metrics/funnel/awareness/new-visitors) | Numerator—count of first-time visitors | | [Unique Visitors](/reference/metrics/funnel/awareness/unique-visitors) | Denominator—total distinct visitors | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Alternative denominator for session-based analysis | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # Page Views: Total Pages Viewed Across Your Site Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/page-views Track total page views across your e-commerce site. Measure traffic volume and user engagement with the Upstack pixel's page load tracking. Total number of page load events tracked by the Upstack pixel across your site in the selected period. ## Formula **Page Views** = **COUNT** ( Page Load Events ) ### Formula Components | Metric | Definition | | -------------------- | ------------------------------------------------------------------------------ | | **Page Load Events** | Individual page load events fired by the Upstack pixel on each page navigation | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your skincare brand recorded **87,340 page views** during a product launch week: | Page Type | Views | Share | | ---------------- | ------ | ----- | | Homepage | 24,150 | 28% | | Product pages | 41,200 | 47% | | Collection pages | 15,890 | 18% | | Other | 6,100 | 7% | *** ## How It Works Every time a visitor loads a page tracked by the Upstack pixel, a page view event fires. Multiple views of the same page by the same visitor each count as separate page views. This metric includes all page types: homepage, product pages, collections, cart, and checkout. *** ## When to Use | Scenario | Action | | ------------------------------ | -------------------------------------------- | | Measuring overall site traffic | Track total engagement volume over time | | Identifying popular content | Compare page views across different sections | | Evaluating campaign reach | Monitor page view spikes after ad launches | | Calculating engagement rates | Use as denominator for view-through metrics | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | --------------------------------------------------- | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Distinct visits (one session = multiple page views) | | [Avg. Page Views per Session](/reference/metrics/funnel/engagement/avg-page-views-per-session) | Page Views ÷ Unique Sessions | | [Page Views Value](/reference/metrics/funnel/awareness/page-views-value) | Total monetary value attributed to page view events | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # Page Views Value: Total Monetary Value of Page Views Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/page-views-value Track the total monetary value of page view events. Measure awareness-stage value contribution and optimize top-of-funnel investment. The total monetary value attributed to page view events tracked by the Upstack pixel. ## Formula **Page Views Value** = **SUM** ( Page View Event Values ) ### Formula Components | Metric | Definition | | -------------------------- | ----------------------------------------------------------------------------- | | **Page View Event Values** | Monetary value assigned to each page view event based on attribution modeling | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store generated **\$12,450** in page views value this week across 24,900 page views: | Source | Page Views | Value | Avg Value | | ---------- | ---------- | ------- | --------- | | Meta Ads | 15,200 | \$7,600 | \$0.50 | | Google Ads | 6,800 | \$3,400 | \$0.50 | | Direct | 2,900 | \$1,450 | \$0.50 | *** ## How It Works Page Views Value sums the monetary value assigned to each page view event. This value represents the attributed contribution of awareness-stage traffic to your funnel. Higher values indicate stronger top-of-funnel performance from your marketing channels. *** ## When to Use | Scenario | Action | | ------------------------ | ---------------------------------------------------------- | | Measuring awareness ROI | Compare value generated by different traffic sources | | Evaluating ad efficiency | Assess which campaigns drive highest-value traffic | | Budget planning | Allocate spend toward channels with better awareness value | | Funnel optimization | Track value flow from page views to deeper funnel stages | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ----------------------------------------------- | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Count of events (this metric sums their values) | | [Cost per Page View](/reference/metrics/funnel/awareness/cost-per-page-view) | Spend efficiency for generating page views | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Related awareness metric for unique visits | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # Sessions: Unique Website Visits Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/sessions Track unique website sessions for your e-commerce store. Measure awareness and traffic volume with sessions counted by the Upstack Pixel. Sessions measures the total number of unique visits to your website, where each session represents a distinct browsing period from a visitor. ## Formula **Sessions** = **COUNT DISTINCT** ( Session ID ) ### Formula Components | Metric | Definition | | -------------- | ------------------------------------------------------------------------ | | **Session ID** | Unique identifier assigned to each browsing session by the Upstack Pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Count | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count Distinct | *** ## Example Your e-commerce store had **12,450 sessions** in April, representing unique browsing periods from visitors. | Week | Sessions | Change | | ------ | -------- | ------ | | Week 1 | 2,890 | — | | Week 2 | 3,150 | +9.0% | | Week 3 | 3,210 | +1.9% | | Week 4 | 3,200 | -0.3% | *** ## How It Works A session begins when a visitor arrives on your site and ends after 30 minutes of inactivity or at midnight. The Upstack Pixel assigns a unique session ID to track each browsing period separately from individual page views or the visitor's identity. *** ## When to Use | Scenario | Action | | ------------------------------ | -------------------------------------------------- | | Measure overall traffic volume | Compare sessions week-over-week to gauge awareness | | Evaluate campaign impact | Check if paid campaigns drive more sessions | | Calculate conversion rate | Use as the denominator with purchases or sign-ups | | Identify traffic patterns | Analyze sessions by day or hour to find peak times | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------- | ----------------------------------------------- | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Total pages viewed across all sessions | | [Unique Visitors](/reference/metrics/funnel/awareness/visitors) | Distinct individuals who created these sessions | | [New Sessions](/reference/metrics/funnel/awareness/sessions) | Sessions from first-time visitors | | Conversion Rate | Purchases divided by sessions | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # Unique Page Views: Session-Deduplicated Page Views Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/unique-page-views Track unique page views for your store. Count distinct pages viewed per session to measure content reach and visitor engagement. Unique Page Views counts the number of distinct pages viewed within each session, eliminating duplicate views of the same page during a single visit. ## Formula **Unique Page Views** = **COUNT DISTINCT** ( page\_view events per session ) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------- | ------------------------------------------------------------- | | [**Page Views**](/reference/metrics/funnel/awareness/page-views) | Total number of page load events tracked by the Upstack pixel | | **Session** | A continuous visit from a user, bounded by inactivity timeout | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your store had **12,847 page views** across **3,421 sessions** last week, but only **8,932 unique page views** — meaning visitors viewed an average of 1.4 unique pages per session while revisiting some pages multiple times. | Metric | Value | Insight | | ----------------- | ------ | -------------------------- | | Total Page Views | 12,847 | Raw page load count | | Unique Page Views | 8,932 | Distinct pages per session | | Unique Sessions | 3,421 | Total visitor sessions | *** ## How It Works Unique Page Views deduplicates page view events within each session. If a visitor views the same product page three times during their session, it counts as one unique page view. This provides a cleaner measure of content reach compared to raw page views, which can be inflated by refreshes or back-button navigation. *** ## When to Use | Scenario | Action | | ----------------------------- | ---------------------------------------------------------------------------- | | Measuring content reach | Use unique page views to understand how many distinct pages visitors explore | | Reducing noise from refreshes | Filter out duplicate views from page reloads or navigation patterns | | Comparing to total page views | High page views vs low unique page views indicates repeat viewing behavior | | Analyzing site exploration | Track how broadly visitors engage across your content | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------- | ---------------------------------------- | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Total page views without deduplication | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Sessions that generated these page views | | [Unique Visitors](/reference/metrics/funnel/awareness/unique-visitors) | Individual visitors across sessions | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # Unique Sessions: Count of Distinct Visitor Sessions Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/unique-sessions Track the number of unique sessions on your site. Measure traffic volume and visitor engagement with the Upstack pixel's session tracking. Count of distinct sessions tracked by the Upstack pixel. Each continuous visit from a user counts as one session. ## Formula **Unique Sessions** = **COUNT** ( Distinct Sessions ) ### Formula Components | Metric | Definition | | --------------------- | ------------------------------------------------------------------------------------------------------- | | **Distinct Sessions** | Individual browsing sessions identified by the Upstack pixel, separated by 30-minute inactivity timeout | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your store recorded **12,450 unique sessions** during a weekend flash sale: | Day | Sessions | Bounce Rate | | -------- | -------- | ----------- | | Saturday | 6,820 | 38% | | Sunday | 5,630 | 41% | *** ## How It Works A session begins when a visitor loads a page tracked by the Upstack pixel and ends after 30 minutes of inactivity or at midnight. Returning visitors within the timeout window continue the same session; visits after the timeout start a new session. *** ## When to Use | Scenario | Action | | ------------------------------- | ---------------------------------------------- | | Measuring traffic volume | Track total site visits over time | | Campaign effectiveness | Compare sessions before and after launches | | Identifying traffic patterns | Spot peak days and seasonal trends | | Calculating session-based rates | Use as denominator for conversion rate metrics | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | | [Unique Visitors](/reference/metrics/funnel/awareness/unique-visitors) | Distinct people across sessions (one visitor = multiple sessions) | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Total pages viewed across all sessions | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Conversions ÷ Unique Sessions | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # Unique Visitors: Distinct Individuals on Your Site Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/unique-visitors Track unique visitors identified by the Upstack pixel using identity resolution. Understand your audience reach and measure top-of-funnel awareness. Count of distinct individual visitors identified by the Upstack pixel using identity resolution. One visitor can have multiple sessions. ## Formula **Unique Visitors** = **COUNT DISTINCT** ( Visitors ) ### Formula Components | Metric | Definition | | ------------ | ------------------------------------------------------------------------------------ | | **Visitors** | Individual people identified by the Upstack pixel's cross-device identity resolution | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count (Distinct) | *** ## Example Your store attracted **12,450 unique visitors** this month across all traffic sources: | Source | Visitors | Share | | -------------- | -------- | ----- | | Paid Social | 5,230 | 42% | | Organic Search | 3,115 | 25% | | Direct | 2,490 | 20% | | Email | 1,615 | 13% | *** ## How It Works The Upstack pixel identifies visitors using identity resolution across devices and sessions. When the same person visits from their phone and laptop, they're counted as one unique visitor. This deduplication provides accurate audience measurement regardless of how many times or ways someone visits. *** ## When to Use | Scenario | Action | | ------------------------------------ | -------------------------------------------- | | Measuring audience reach | Track how many people your marketing reaches | | Calculating visitor-to-customer rate | Divide conversions by unique visitors | | Comparing traffic sources | See which channels bring the most people | | Planning capacity | Estimate demand based on visitor trends | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ---------------------------------------------- | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Total visits (one visitor = multiple sessions) | | [New Visitors](/reference/metrics/funnel/awareness/new-visitors) | Subset: first-time visitors only | | [Revenue per Visitor](/reference/metrics/funnel/conversions/revenue-per-visitor) | Total revenue ÷ Unique Visitors | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # View Category: Category Page Views Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/view-category Track how often customers view category pages. Measure awareness and product discovery as visitors browse collections in your Shopify store. The total number of times a category page was viewed on your store. ## Formula **View Category** = **COUNT** ( Category Page Views ) ### Formula Components | Metric | Definition | | ----------------------- | ------------------------------------------------------------------------------------------- | | **Category Page Views** | Each visit to a collection page fires one View Category event, tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your fashion brand tracked **8,532 category page views** last week: | Category | Views | Share | | ----------------- | ----- | ----- | | New Arrivals | 2,987 | 35% | | Summer Collection | 2,134 | 25% | | Sale | 1,877 | 22% | | Accessories | 1,534 | 18% | *** ## How It Works View Category counts each time a visitor lands on a collection or category page. This includes traffic from ads, navigation menus, homepage links, and direct visits. Multiple views by the same visitor are counted separately. *** ## When to Use | Scenario | Action | | -------------------------------- | --------------------------------------------------- | | Identify popular categories | Find which collections attract the most browsing | | Measure navigation effectiveness | Track how visitors discover your product categories | | Optimize merchandising | Feature high-view categories more prominently | | Plan inventory | Use category interest to forecast demand | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------- | ------------------------------------- | | [Page Views](/reference/metrics/funnel/awareness/page-views) | All page views across your site | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Product page views (next funnel step) | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Cart additions from category browsing | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # View Category Value: Total Monetary Value of Category Page Views Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/view-category-value Track the total monetary value of category page view events. Measure awareness-stage value from product category browsing and optimize category merchandising. The total monetary value attributed to category page view events tracked by the Upstack pixel. ## Formula **View Category Value** = **SUM** ( View Category Event Values ) ### Formula Components | Metric | Definition | | ------------------------------ | --------------------------------------------------------------------------------- | | **View Category Event Values** | Monetary value assigned to each view category event based on attribution modeling | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store generated **\$8,750** in view category value this week across 17,500 category page views: | Category | Views | Value | Avg Value | | ----------------- | ----- | ------- | --------- | | Women's Apparel | 8,200 | \$4,100 | \$0.50 | | Men's Accessories | 5,100 | \$2,550 | \$0.50 | | Sale Items | 4,200 | \$2,100 | \$0.50 | *** ## How It Works View Category Value sums the monetary value assigned to each category page view event. This value represents the attributed contribution of category browsing behavior to your funnel. Higher values indicate that visitors exploring your product categories are more likely to convert downstream. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------------------- | | Category performance analysis | Compare value generated by different product categories | | Merchandising optimization | Identify which category pages drive highest-value traffic | | Navigation UX testing | Measure impact of category layout changes on attributed value | | Marketing attribution | Track value flow from category discovery to conversion | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | --------------------------------------------- | | [Page Views Value](/reference/metrics/funnel/awareness/page-views-value) | Similar value metric for all page views | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Related awareness metric for total page views | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Related awareness metric for unique visits | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # View Contents Rate: Product Page Engagement Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/view-contents-rate Track your View Contents Rate to understand what percentage of page views reach product pages. Measure funnel awareness and optimize traffic quality. View Contents Rate measures the percentage of total page views that were product detail page views. ## Formula **View Contents Rate** = ( [**View Contents**](/reference/metrics/advertising/blended/view-contents) ÷ [**Page Views**](/reference/metrics/funnel/awareness/page-views) ) × 100 ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------- | ------------------------------------------------------------ | | [**View Contents**](/reference/metrics/funnel/engagement/view-contents) | Total product detail page views tracked by the Upstack pixel | | [**Page Views**](/reference/metrics/funnel/awareness/page-views) | Total page views across your site | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your site recorded **50,000 page views** in January with **12,500 product page views**. | Metric | Value | Calculation | | ---------------------- | ------- | ------------------------- | | Page Views | 50,000 | Total site page views | | View Contents | 12,500 | Product detail page views | | **View Contents Rate** | **25%** | 12,500 ÷ 50,000 × 100 | *** ## How It Works The Upstack pixel tracks every page view and identifies when visitors land on product detail pages (View Content events). View Contents Rate divides product page views by total page views to show what percentage of your site traffic reaches products. *** ## When to Use | Scenario | Action | | -------------------------- | -------------------------------------------------------------- | | Low product discovery | Improve navigation, homepage merchandising, or internal search | | High bounce rates | Analyze landing pages and add product recommendations | | Traffic quality assessment | Compare rate across channels to identify high-intent sources | | Site redesign evaluation | Monitor before/after to measure impact on product visibility | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------- | ------------------------------------------------ | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Numerator — absolute count of product page views | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Denominator — total page views | | [Add to Cart Rate](/reference/metrics/funnel/engagement/add-to-cart-rate) | Next funnel step — conversion from view to cart | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # View Item List: Collection Page Views Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/view-item-list Track collection and category page views with the View Item List metric. Measure product discovery and browsing behavior across your store. View Item List tracks the total number of times visitors view collection, category, or product listing pages on your site. ## Formula **View Item List** = **COUNT** ( view\_item\_list events ) ### Formula Components | Metric | Definition | | --------------------------- | -------------------------------------------------------------------- | | **view\_item\_list events** | Collection or category page view events tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your store received **4,832 View Item List events** in March, indicating strong browsing activity on collection pages. | Collection | View Item List | View Content Rate | | ------------ | -------------- | ----------------- | | New Arrivals | 1,456 | 38% | | Best Sellers | 1,124 | 42% | | Sale Items | 892 | 35% | | Featured | 760 | 29% | | Clearance | 600 | 31% | *** ## How It Works The Upstack pixel fires a View Item List event whenever a visitor lands on a collection, category, or product listing page. This includes pages that display multiple products in a grid or list format, such as "All Products," category pages, or search results pages. Each page view counts as one event, regardless of how many products are displayed on the page. *** ## When to Use | Scenario | Action | | --------------------------------- | --------------------------------------------------------- | | Measure product discovery | Track how visitors browse your catalog | | Analyze collection performance | Identify which categories attract the most traffic | | Optimize merchandising | Prioritize collections with high views but low conversion | | Evaluate navigation effectiveness | Check if visitors find collection pages easily | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------- | -------------------------------------------- | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Total site-wide page views | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Product detail page views (next funnel step) | | [Sessions](/reference/metrics/funnel/awareness/sessions) | Unique browsing sessions | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # View Item List Value: Total Monetary Value of Product List Views Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/view-item-list-value Track the total monetary value of view item list events. Measure awareness-stage value from product discovery and optimize collection page performance. The total monetary value attributed to view item list events tracked by the Upstack pixel. ## Formula **View Item List Value** = **SUM** ( View Item List Event Values ) ### Formula Components | Metric | Definition | | ------------------------------- | ---------------------------------------------------------------------------------- | | **View Item List Event Values** | Monetary value assigned to each view item list event based on attribution modeling | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store generated **\$8,750** in view item list value this week from visitors browsing product collections: | Source | View Item Lists | Value | Avg Value | | ---------- | --------------- | ------- | --------- | | Meta Ads | 4,200 | \$4,200 | \$1.00 | | Google Ads | 2,800 | \$2,940 | \$1.05 | | Direct | 1,500 | \$1,610 | \$1.07 | *** ## How It Works View Item List Value sums the monetary value assigned to each view item list event. This event fires when visitors browse product collections, category pages, or search results displaying multiple items. Higher values indicate stronger product discovery engagement and effective merchandising. *** ## When to Use | Scenario | Action | | --------------------------- | ------------------------------------------------------------ | | Evaluating collection pages | Compare value generated by different product collections | | Measuring discovery ROI | Assess which traffic sources drive highest-value browsing | | Optimizing merchandising | Track which product lists generate the most attributed value | | Funnel analysis | Measure value flow from product discovery to consideration | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ------------------------------------------------- | | [Page Views Value](/reference/metrics/funnel/awareness/page-views-value) | Related awareness value metric for all page views | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Total page view count for comparison | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Session-level awareness metric | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # Visitors: Unique Site Visitors Source: https://docs.upstackdata.com/reference/metrics/funnel/awareness/visitors Track unique visitors to your Shopify store. Measure website traffic and audience reach with deduplicated visitor counts from Upstack Pixel. Visitors measures the count of unique individuals who visited your website during the selected time period. ## Formula **Unique Visitors** = **COUNT** ( distinct visitor\_id ) ### Formula Components | Metric | Definition | | --------------- | ---------------------------------------------------------------- | | **visitor\_id** | Unique identifier assigned to each visitor via the Upstack Pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count (Distinct) | *** ## Example Your Shopify store had **12,847 unique visitors** in January. | Week | Visitors | Sessions | Pages/Visitor | | ------ | -------- | -------- | ------------- | | Week 1 | 3,124 | 4,892 | 3.2 | | Week 2 | 3,456 | 5,234 | 2.9 | | Week 3 | 2,987 | 4,567 | 3.1 | | Week 4 | 3,280 | 5,012 | 3.4 | *** ## How It Works Upstack assigns each visitor a unique identifier on their first visit. Subsequent visits from the same browser are deduplicated, giving you an accurate count of distinct people reaching your site. Cross-device visitors may be counted separately unless identity resolution links their sessions. *** ## When to Use | Scenario | Action | | --------------------------- | ----------------------------------------------------------- | | Measuring campaign reach | Compare visitors before and after campaign launch | | Analyzing traffic trends | Track visitor growth week-over-week or month-over-month | | Calculating conversion rate | Divide conversions by visitors for top-of-funnel efficiency | | Benchmarking audience size | Compare visitor counts across time periods or channels | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | --------------------------------------- | | [Sessions](/reference/metrics/funnel/awareness/sessions) | Each visitor may have multiple sessions | | [New Visitors](/reference/metrics/funnel/awareness/new-visitors) | Subset of visitors who are first-time | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Total pages viewed by all visitors | | [Revenue per Visitor](/reference/metrics/funnel/conversions/revenue-per-visitor) | Revenue divided by visitor count | [See all Awareness metrics →](/reference/metrics/funnel/awareness) # Attributed Conversions: Revenue Attribution Metrics Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions Track attributed conversions in Upstack funnel metrics. Includes Conversions, Conversion Value, Unique Converters, Average Conversion Value, and Session Conversion Rate. Conversion metrics measure the outcomes of your marketing funnel—how many visitors complete a desired action and the value those actions generate. These metrics are the foundation of marketing attribution and ROI analysis. **Data Source:** Upstack Pixel + Shopify\ **Metrics:** 176 ## Key Metrics in This Group The table below highlights the most commonly used conversion metrics — browse the full list of 176 in the sidebar. | Metric | Description | When to Use | | ------------------------------------------------------------------------------------------ | ------------------------------------------------ | ---------------------------------- | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Count of tracked purchase events | Measure conversion volume | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Count of attributed conversion events | Measure action volume | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total monetary value of conversions | Measure revenue impact | | [Unique Converters](/reference/metrics/funnel/conversions/unique-converters) | Distinct individuals who converted | Count new customers | | [Average Conversion Value](/reference/metrics/funnel/conversions/average-conversion-value) | Average value per conversion | Measure quality of conversions | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Percentage of sessions resulting in purchase | Measure store efficiency | | [Upsell Purchases](/reference/metrics/funnel/conversions/upsell-purchases) | Count of upsell purchase events | Track post-purchase revenue | | [Cost per All Purchase](/reference/metrics/funnel/conversions/cost-per-all-purchase) | Ad spend per purchase event (all types) | Measure acquisition efficiency | | [Cost per Purchase](/reference/metrics/funnel/conversions/cost-per-purchase) | Average ad spend per purchase event | Measure ad efficiency | | [High AOV Purchases](/reference/metrics/funnel/conversions/high-aov-purchases) | Purchases above average order value | Identify premium buyers | | [Low AOV Purchases](/reference/metrics/funnel/conversions/low-aov-purchases) | Purchases below average order value | Identify upsell opportunities | | [Lead Value](/reference/metrics/funnel/conversions/lead-value) | Total monetary value of lead events | Measure lead generation revenue | | [Checkout Rate](/reference/metrics/funnel/conversions/checkout-rate) | Percentage of sessions that reach checkout | Measure checkout funnel efficiency | | [Repeat Purchase Rate](/reference/metrics/funnel/conversions/repeat-purchase-rate) | Percentage of purchases from returning customers | Measure customer retention | ## How These Metrics Relate These metrics form a complete picture of conversion performance: * **Conversions** counts individual conversion events (one person can convert multiple times) * **Conversion Value** sums the monetary value of all those events * **Unique Converters** counts distinct people, regardless of how many times each converted * [**Average Conversion Value**](/reference/metrics/funnel/conversions/average-conversion-value) = [**Conversion Value**](/reference/metrics/funnel/conversions/conversion-value) ÷ [**Conversions**](/reference/metrics/funnel/conversions/conversions) * [**Session Conversion Rate**](/reference/metrics/funnel/conversions/session-conversion-rate) = [**Purchases**](/reference/metrics/funnel/conversions/purchases) ÷ [**Sessions**](/reference/metrics/funnel/awareness/sessions) × 100 * [**Cost per All Purchase**](/reference/metrics/funnel/conversions/cost-per-all-purchase) = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**All Purchases**](/reference/metrics/funnel/conversions/all-purchases) * [**Cost per Purchase**](/reference/metrics/funnel/conversions/cost-per-purchase) = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ Purchase Events * [**Checkout Rate**](/reference/metrics/funnel/conversions/checkout-rate) = [**Initiate Checkouts**](/reference/metrics/funnel/engagement/initiate-checkouts) ÷ [**Sessions**](/reference/metrics/funnel/awareness/sessions) × 100 * [**Repeat Purchase Rate**](/reference/metrics/funnel/conversions/repeat-purchase-rate) = [**Returning Customer Purchases**](/reference/metrics/funnel/conversions/returning-customer-purchases) ÷ [**Total Purchases**](/reference/metrics/funnel/conversions/all-purchases) × 100 The relationship between Conversions and Unique Converters reveals repeat conversion behavior—a higher ratio indicates customers converting multiple times. Repeat Purchase Rate directly measures what percentage of your purchases come from returning customers. Session Conversion Rate measures overall store efficiency, while Cost per Purchase and Cost per All Purchase show your acquisition efficiency from different perspectives. ## Choosing the Right Metric * **Volume analysis**: Use Conversions to count total conversion events * **Revenue attribution**: Use Conversion Value to measure monetary impact by channel * **New customer acquisition**: Use Unique Converters to count new customers acquired * **Quality analysis**: Compare Average Conversion Value across channels to find high-value sources * **Efficiency analysis**: Use Session Conversion Rate to measure overall store conversion efficiency * **Cost analysis**: Use Cost per Purchase to track ad efficiency per purchase event * **Funnel analysis**: Use Checkout Rate to measure how many sessions reach checkout * **Retention analysis**: Use Repeat Purchase Rate to measure customer loyalty and retention # Account Created: Track New Account Registrations Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/account-created Track when users create new accounts. Measure top-of-funnel conversion for SaaS signup flows. Account Created counts the number of times users successfully create new accounts in your application. ## Formula **Account Created** = **COUNT** ( account\_created events ) ### Formula Components | Metric | Definition | | --------------------------- | ------------------------------------------------------- | | **account\_created events** | Events fired when a user completes account registration | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your SaaS application tracked **1,250 account\_created events** in January. | Metric | Value | Notes | | --------------- | ------ | ----------------------------- | | Site Visitors | 45,000 | Total unique visitors | | Account Created | 1,250 | New registrations | | Signup Rate | 2.78% | Visitor-to-account conversion | *** ## How It Works The Upstack pixel tracks `account_created` events when users complete the account registration process. This is typically fired after email verification or when the user first logs in to their new account. *** ## When to Use | Scenario | Action | | ---------------------- | -------------------------------------------------- | | Signup funnel analysis | Measure conversion from visitor to registered user | | Campaign attribution | Identify which channels drive signups | | Landing page testing | Compare registration rates across variants | | Growth tracking | Monitor account creation trends over time | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | -------------------------------- | | [Account Created Cost](/reference/metrics/funnel/conversions/account-created-cost) | Cost per new account | | [Account Created Value](/reference/metrics/funnel/conversions/account-created-value) | Value attributed to new accounts | | [Signup Completed](/reference/metrics/funnel/conversions/signup-completed) | Completed signup flow | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Account Created Cost: Ad Spend per New Account Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/account-created-cost Calculate advertising cost per new account registration. Optimize your CAC for SaaS user acquisition. Account Created Cost measures how much you spend on advertising for each new account registration. ## Formula **Account Created Cost** = **Ad Spend** ÷ [**Account Created**](/reference/metrics/funnel/conversions/account-created) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**Account Created**](/reference/metrics/funnel/conversions/account-created) | Count of new account registrations | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$5,000** on Google Ads in January and drove **250 account creations**. | Metric | Value | Notes | | -------------------- | ------- | ------------------------ | | Ad Spend | \$5,000 | Monthly advertising cost | | Account Created | 250 | New registrations | | Account Created Cost | \$20.00 | Cost per new account | *** ## How It Works This metric divides your total ad spend by the number of account creations to calculate your cost per acquisition (CPA) for new users. This is a key input for calculating customer acquisition cost (CAC) in SaaS businesses. *** ## When to Use | Scenario | Action | | ------------------- | --------------------------------------------------- | | CAC optimization | Identify channels with lowest account creation cost | | Budget allocation | Shift spend toward efficient acquisition channels | | Funnel benchmarking | Compare signup costs across campaigns | | LTV/CAC analysis | Balance acquisition cost against lifetime value | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | ----------------------------------- | | [Account Created](/reference/metrics/funnel/conversions/account-created) | The denominator in this calculation | | [Account Created Value](/reference/metrics/funnel/conversions/account-created-value) | Value attributed to new accounts | | [Trial Started Cost](/reference/metrics/funnel/conversions/trial-started-cost) | Cost per trial start | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Account Created Value: Revenue from New Accounts Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/account-created-value Track the monetary value attributed to new account registrations. Measure signup conversion value. Account Created Value totals the monetary value attributed to new account registrations. ## Formula **Account Created Value** = **SUM** ( value ) **FROM** [**account\_created**](/reference/metrics/funnel/conversions/account-created) events ### Formula Components | Metric | Definition | | --------------------------- | ------------------------------------------------------------ | | **value** | The monetary value attributed to each account creation event | | **account\_created events** | Events fired when users complete registration | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example You had **250 account creations** in January with an average attributed value of **\$50**. | Metric | Value | Notes | | --------------------- | -------- | ------------------------- | | Account Created | 250 | New registrations | | Avg Account Value | \$50 | Average value per account | | Account Created Value | \$12,500 | Total attributed value | *** ## How It Works This metric sums the value attribute from all account\_created events. The value can represent the expected LTV of a new account, the first payment amount, or a custom value you assign to signups. *** ## When to Use | Scenario | Action | | ------------------------ | --------------------------------------------------- | | ROAS calculation | Calculate return on ad spend for signup campaigns | | Channel value comparison | Compare attributed value across acquisition sources | | Campaign ROI | Measure the monetary impact of marketing campaigns | | Growth planning | Project revenue from signup volume | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ------------------------ | | [Account Created](/reference/metrics/funnel/conversions/account-created) | Count of new accounts | | [Account Created Cost](/reference/metrics/funnel/conversions/account-created-cost) | Cost to acquire accounts | | [Trial Started Value](/reference/metrics/funnel/conversions/trial-started-value) | Value from trial starts | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Add Payment Info: Track Checkout Payment Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/add-payment-info Count payment info additions in your checkout funnel. Measure how many visitors submit payment details to identify checkout drop-off points. Add Payment Info counts the total number of times visitors submit their payment information during checkout. ## Formula **Add Payment Info** = **COUNT** ( Add Payment Info Events ) ### Formula Components | Metric | Definition | | --------------------------- | ------------------------------------------------------------------------------------ | | **Add Payment Info Events** | Each instance a visitor submits payment details (card, PayPal, etc.) during checkout | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your Shopify store tracked payment info submissions throughout the checkout funnel in March: | Week | Add Payment Info | Add Shipping Info | Drop-off Rate | | --------- | ---------------- | ----------------- | ------------- | | Week 1 | 1,247 | 1,456 | 14.4% | | Week 2 | 1,389 | 1,598 | 13.1% | | Week 3 | 1,156 | 1,342 | 13.9% | | Week 4 | 1,423 | 1,687 | 15.6% | | **Total** | **5,215** | **6,083** | **14.3%** | *** ## How It Works Add Payment Info counts every payment submission event fired by the Upstack Pixel. When a visitor enters their payment method—credit card, PayPal, Shop Pay, or other payment options—one event is recorded. This metric captures visitors who have progressed through shipping and are ready to complete their purchase. *** ## When to Use | Scenario | Action | | --------------------------- | ----------------------------------------------------------- | | Checkout funnel analysis | Compare against shipping info to find payment step drop-off | | Payment friction diagnosis | Identify if payment form complexity causes abandonment | | Payment method optimization | A/B test different payment options and measure impact | | Purchase intent tracking | Measure high-intent visitors who reach final checkout stage | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ----------------------------------- | | [Add Shipping Info Value](/reference/metrics/funnel/conversions/add-shipping-info-value) | Previous step in checkout funnel | | [Purchases](/reference/metrics/funnel/conversions/all-purchases) | Final conversion after payment info | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Overall checkout efficiency | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Add Payment Info Value: Total Checkout Value at Payment Step Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/add-payment-info-value Track the total monetary value of add payment info events in your checkout funnel. Measure cart values when shoppers submit payment details. Total monetary value of all add payment info events tracked by the Upstack pixel. ## Formula **Add Payment Info Value** = **SUM** ( Cart Values at Payment Info Step ) ### Formula Components | Metric | Definition | | --------------- | ---------------------------------------------------------------- | | **SUM** | Aggregation function that totals all values | | **Cart Values** | Monetary value of carts when visitors submit payment information | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your Shopify store recorded **\$118,500** in cart value at the payment info step this month: | Day | Events | Value | | --------- | ------ | -------- | | Monday | 782 | \$39,100 | | Tuesday | 856 | \$42,800 | | Wednesday | 732 | \$36,600 | *** ## How It Works Add Payment Info Value captures the cart total when a shopper submits their payment information during checkout. This represents high-intent revenue from visitors who have progressed past shipping and are one step away from purchase completion. *** ## When to Use | Scenario | Action | | -------------------------------- | -------------------------------------------------------- | | Analyzing checkout funnel value | Compare against add shipping info value to find drop-off | | Measuring purchase readiness | Track how much value reaches the final checkout step | | Identifying payment friction | Spot where cart value leaks between payment and purchase | | Evaluating checkout optimization | Measure impact of payment form improvements | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | ------------------------------------------- | | [Add Payment Info](/reference/metrics/funnel/conversions/add-payment-info) | Event count (this metric sums their values) | | [Cost per Add Payment Info](/reference/metrics/funnel/conversions/cost-per-add-payment-info) | Ad spend per payment info event | | [Add Shipping Info Value](/reference/metrics/funnel/conversions/add-shipping-info-value) | Previous step in checkout funnel | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Add Shipping Info: Track Checkout Shipping Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/add-shipping-info Count shipping info additions in your checkout funnel. Measure how many visitors submit shipping details to identify checkout drop-off points. Add Shipping Info counts the total number of times visitors submit their shipping information during checkout. ## Formula **Add Shipping Info** = **COUNT** ( Add Shipping Info Events ) ### Formula Components | Metric | Definition | | ---------------------------- | ---------------------------------------------------------------------------------------- | | **Add Shipping Info Events** | Each instance a visitor submits shipping details (address, method, etc.) during checkout | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your Shopify store tracked shipping info submissions throughout the checkout funnel in March: | Week | Add Shipping Info | Initiate Checkouts | Progression Rate | | --------- | ----------------- | ------------------ | ---------------- | | Week 1 | 1,456 | 2,187 | 66.6% | | Week 2 | 1,598 | 2,394 | 66.8% | | Week 3 | 1,342 | 2,012 | 66.7% | | Week 4 | 1,687 | 2,531 | 66.7% | | **Total** | **6,083** | **9,124** | **66.7%** | *** ## How It Works Add Shipping Info counts every shipping submission event fired by the Upstack Pixel. When a visitor enters their shipping address and delivery preferences during checkout, one event is recorded. This metric captures visitors who have progressed past checkout initiation and are actively completing the purchase flow. *** ## When to Use | Scenario | Action | | ---------------------------- | ----------------------------------------------------------------- | | Checkout funnel analysis | Compare against initiate checkouts to find shipping step drop-off | | Shipping friction diagnosis | Identify if shipping form complexity causes abandonment | | Shipping option optimization | A/B test different shipping presentations and measure impact | | Purchase intent tracking | Measure committed visitors who progress past initial checkout | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | -------------------------------- | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Previous step in checkout funnel | | [Add Payment Info](/reference/metrics/funnel/conversions/add-payment-info) | Next step in checkout funnel | | [Add Shipping Info Value](/reference/metrics/funnel/conversions/add-shipping-info-value) | Monetary value of these events | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Add Shipping Info Value: Total Checkout Value at Shipping Step Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/add-shipping-info-value Track the total monetary value of add shipping info events in your checkout funnel. Measure cart values when shoppers submit shipping details. Total monetary value of all add shipping info events tracked by the Upstack pixel. ## Formula **Add Shipping Info Value** = **SUM** ( Cart Values at Shipping Info Step ) ### Formula Components | Metric | Definition | | --------------- | ----------------------------------------------------------------- | | **SUM** | Aggregation function that totals all values | | **Cart Values** | Monetary value of carts when visitors submit shipping information | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your Shopify store recorded **\$125,000** in cart value at the shipping info step this month: | Day | Events | Value | | --------- | ------ | -------- | | Monday | 847 | \$42,350 | | Tuesday | 912 | \$45,600 | | Wednesday | 741 | \$37,050 | *** ## How It Works Add Shipping Info Value captures the cart total when a shopper submits their shipping information during checkout. This represents the potential revenue from visitors who have progressed past cart abandonment and are actively completing the checkout process. *** ## When to Use | Scenario | Action | | ---------------------------------- | -------------------------------------------------------- | | Analyzing checkout funnel value | Compare against initiate checkout value to find drop-off | | Measuring payment step progression | Track how much value moves from shipping to payment | | Identifying high-value segments | Find which traffic sources bring larger cart values | | Diagnosing checkout friction | Spot where cart value leaks occur in the funnel | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------------------- | | [Add Shipping Info](/reference/metrics/funnel/conversions/add-shipping-info) | Event count (this metric sums their values) | | [Cost per Add Shipping Info](/reference/metrics/funnel/conversions/cost-per-add-shipping-info) | Ad spend per shipping info event | | [Add Payment Info Value](/reference/metrics/funnel/conversions/add-payment-info-value) | Next step in checkout funnel | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # All Purchase Value: Total Revenue Across All Customer Types Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/all-purchase-value Track total purchase value across your Shopify store. Measure combined revenue from new, returning, and subscription customers in one unified metric. All Purchase Value measures the total monetary value of every purchase event tracked by the Upstack pixel, combining revenue from all customer types. ## Formula **All Purchase Value** = **SUM** ( Purchase Event Value ) ### Formula Components | Metric | Definition | | ------------------------ | -------------------------------------------------------------------------------------------------------- | | **Purchase Event Value** | The monetary value of each completed order event tracked by the Upstack Pixel from your Shopify checkout | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store generated **\$52,840** in All Purchase Value this week from **623 total purchases**. | Customer Segment | Purchase Value | % of Total | | ------------------------------ | -------------- | ---------- | | New Customers | \$24,320 | 46.0% | | Returning Customers | \$26,180 | 49.5% | | Subscription Initial | \$2,340 | 4.4% | | **Total (All Purchase Value)** | **\$52,840** | **100%** | *** ## How It Works All Purchase Value aggregates the monetary value of every completed order event tracked by the Upstack Pixel on your Shopify store. This metric combines new customer revenue, returning customer revenue, subscription orders, and all other purchase types into a single unified value. It syncs with your Shopify order data in real-time for consistent revenue tracking across all advertising destinations. *** ## When to Use | Scenario | Action | | -------------------------------------- | ----------------------------------------------------------------------------- | | Measuring total campaign revenue | Use All Purchase Value to track combined revenue across all customer segments | | Optimizing for value-based conversions | Send All Purchase Value to Meta, Google, and TikTok for value optimization | | Comparing revenue across time periods | Track All Purchase Value week-over-week to measure overall growth | | Calculating blended ROAS | Divide All Purchase Value by total ad spend for unified return on ad spend | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- | | [All Purchases](/reference/metrics/funnel/conversions/all-purchases) | Count of all purchase events — divide All Purchase Value by this for average order value | | [Cost per All Purchase](/reference/metrics/funnel/conversions/cost-per-all-purchase) | Ad spend per purchase — compare against average value for profitability analysis | | [Purchases Value](/reference/metrics/funnel/conversions/purchases-value) | Original purchase value before customer type segmentation | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # All Purchases: Track Total Shopify Store Conversions Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/all-purchases Track all purchase events across your Shopify store. Count total conversions including new, returning, and subscription customers in one metric. All Purchases counts every completed purchase event across your Shopify store, regardless of customer type or order source. ## Formula **All Purchases** = **COUNT** ( Purchase Events ) ### Formula Components | Metric | Definition | | ------------------- | ----------------------------------------------------------------------------------------- | | **Purchase Events** | Individual completed order events tracked by the Upstack Pixel from your Shopify checkout | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store completed **847 purchases** this week across all customer segments. | Customer Type | Purchases | % of Total | | ------------------------- | --------- | ---------- | | New Customers | 412 | 48.6% | | Returning Customers | 389 | 45.9% | | Subscription Initial | 46 | 5.4% | | **Total (All Purchases)** | **847** | **100%** | *** ## How It Works All Purchases aggregates every completed order event tracked by the Upstack Pixel, combining new customer purchases, returning customer purchases, subscription orders, and all other purchase types into a single unified count. This metric is server-generated from your Shopify order data for consistent destination tracking across all advertising platforms. *** ## When to Use | Scenario | Action | | ----------------------------------------------- | ----------------------------------------------------------- | | Measuring overall store conversion volume | Use All Purchases as your primary conversion count | | Setting up conversion tracking for ad platforms | Send All Purchases to Meta, Google, and TikTok destinations | | Comparing total performance across time periods | Track All Purchases week-over-week or month-over-month | | Building a unified conversion funnel | Start with All Purchases before segmenting by customer type | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Original purchase event count before customer segmentation | | [New Customer Purchases](/reference/metrics/funnel/conversions/new-customer-purchases) | Subset: first-time customer orders only | | [Returning Customer Purchases](/reference/metrics/funnel/conversions/returning-customer-purchases) | Subset: repeat customer orders only | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Average Conversion Value (ACV) Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/average-conversion-value Calculate average revenue per conversion across all marketing channels. Compare channel performance, identify high-value segments, and optimize targeting. The average monetary value of each conversion event. ## Formula **Average Conversion Value** = [**Conversion Value**](/reference/metrics/funnel/conversions/conversion-value) ÷ [**Conversions**](/reference/metrics/funnel/conversions/conversions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | ---------------------------------------------------- | | [**Conversion Value**](/reference/metrics/funnel/conversions/conversion-value) | Sum of all revenue from attributed conversion events | | [**Conversions**](/reference/metrics/funnel/conversions/conversions) | Count of attributed conversion events | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example With **\$47,500** in conversion value from **950 conversions**: | Metric | Value | | ---------------------------- | ----------- | | Conversion Value | \$47,500 | | Conversions | 950 | | **Average Conversion Value** | **\$50.00** | *** ## How It Works This metric divides total conversion value by the number of conversions. It reveals the typical order size or deal value driven by your marketing, helping you understand conversion quality, not just quantity. *** ## When to Use | Scenario | Action | | ------------------- | -------------------------------------------------------------- | | ACV increasing | Campaigns attracting higher-value customers—scale them | | ACV dropping | Check if discounts or lower-tier products dominate conversions | | Comparing channels | Identify which platforms drive premium vs. budget customers | | Setting CPA targets | Ensure CPA stays below ACV for profitable acquisition | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ----------------------------- | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | The numerator (total revenue) | | [Conversions](/reference/metrics/funnel/conversions/conversions) | The denominator (event count) | | [Unique Converters](/reference/metrics/funnel/conversions/unique-converters) | Distinct people who converted | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Avg. Sessions per Visitor: Measure Return Visit Frequency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/avg-sessions-per-visitor Track average sessions per visitor for your e-commerce site. Measure return visit frequency and identify strong brand loyalty with the Upstack pixel. Average number of sessions each unique visitor has had. Higher values indicate returning visitors and stronger brand loyalty. ## Formula **Avg. Sessions per Visitor** = [**Sessions**](/reference/metrics/funnel/awareness/sessions) ÷ [**Unique Visitors**](/reference/metrics/funnel/awareness/unique-visitors) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | ----------------------------------------------------------- | | [**Sessions**](/reference/metrics/funnel/awareness/unique-sessions) | Count of distinct sessions tracked by the Upstack pixel | | [**Unique Visitors**](/reference/metrics/funnel/awareness/unique-visitors) | Distinct individuals identified across devices and sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store had **8,400 unique visitors** who generated **12,600 sessions** in March: | Week | Visitors | Sessions | Avg. Sessions/Visitor | | --------- | --------- | ---------- | --------------------- | | Week 1 | 2,100 | 2,940 | 1.40 | | Week 2 | 2,000 | 3,000 | 1.50 | | Week 3 | 2,200 | 3,300 | 1.50 | | Week 4 | 2,100 | 3,360 | 1.60 | | **Total** | **8,400** | **12,600** | **1.50** | *** ## How It Works Avg. Sessions per Visitor divides the total number of sessions by unique visitors identified through the Upstack pixel's identity resolution. A value of 1.0 means each visitor came once; higher values indicate visitors return multiple times before converting. Rising values suggest growing brand affinity. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------------------- | | Measure brand loyalty | Track how often visitors return before purchasing | | Evaluate retargeting | Monitor if ad campaigns bring visitors back repeatedly | | Compare traffic sources | Identify channels that drive repeat engagement | | Optimize the purchase journey | Higher values may indicate friction requiring multiple visits | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------- | ----------------------------------------------- | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Numerator — total session count | | [Unique Visitors](/reference/metrics/funnel/awareness/unique-visitors) | Denominator — distinct visitor count | | [New Visitors](/reference/metrics/funnel/awareness/new-visitors) | First-time visitors (subset of unique visitors) | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Book Call: Call Booking Conversions Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/book-call Track call bookings from your website. Measure how many visitors schedule calls and optimize your lead generation funnel. Book Call counts the total number of call booking events tracked by the Upstack pixel — a key conversion metric for service-based businesses. ## Formula **Book Call** = **COUNT** ( call\_booked events ) ### Formula Components | Metric | Definition | | ----------------------- | ------------------------------------------------------------------------------------------------ | | **call\_booked events** | Individual call booking events fired when a visitor schedules a call through your booking system | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your website generated **47 call bookings** in January from paid advertising campaigns. | Channel | Book Call Events | Conversion Rate | | ---------- | ---------------- | --------------- | | Meta Ads | 28 | 2.8% | | Google Ads | 15 | 3.2% | | Organic | 4 | 1.1% | *** ## How It Works The Upstack pixel fires a `book_call` event when a visitor completes a call booking action — typically when they submit a scheduling form or confirm an appointment through your booking widget. Each booking fires one event, regardless of whether the call is ultimately completed. *** ## When to Use | Scenario | Action | | ------------------------- | ---------------------------------------------------------------------- | | Measuring lead quality | Compare Book Call volume against actual call completion rates | | Optimizing ad campaigns | Identify which channels drive the most call bookings | | Funnel analysis | Track Book Call as the conversion step after Add to Cart or Form Start | | Calculating cost per lead | Divide ad spend by Book Call count for cost per call booked | *** ## Related Metrics | Metric | Relationship | | --------------- | ---------------------------------------------------- | | Sessions | Total visitors who could potentially book a call | | Form Starts | Visitors who began the booking process | | Conversion Rate | Percentage of sessions that result in a call booking | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Book Call Value: Track Revenue from Scheduled Calls Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/book-call-value Track the total monetary value of scheduled calls and consultations. Measure high-intent lead quality from book call events captured by the Upstack Pixel. Book Call Value measures the total monetary value associated with scheduled call or consultation events tracked by the Upstack Pixel. ## Formula **Book Call Value** = **SUM** ( value ) **WHERE** event = [**book\_call**](/reference/metrics/funnel/conversions/book-call) ### Formula Components | Metric | Definition | | ---------------------- | ----------------------------------------------------- | | **value** | The monetary value passed with each book call event | | **event = book\_call** | Filters to only book call events tracked by the pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your business scheduled **47 consultation calls** last month with a total Book Call Value of **\$14,100**. | Week | Book Calls | Book Call Value | | ------ | ---------- | --------------- | | Week 1 | 12 | \$3,600 | | Week 2 | 15 | \$4,500 | | Week 3 | 8 | \$2,400 | | Week 4 | 12 | \$3,600 | *** ## How It Works Book Call Value sums the `value` parameter passed with each `book_call` event tracked by the Upstack Pixel. This value typically represents the estimated or actual revenue associated with scheduling a call—such as consultation fees, expected deal size, or lead scoring weights. *** ## When to Use | Scenario | Action | | ----------------------- | ------------------------------------------------------------------------------ | | Measuring lead quality | Compare Book Call Value across channels to identify highest-value lead sources | | Optimizing ad spend | Calculate cost per Book Call Value to evaluate campaign efficiency | | Forecasting revenue | Use Book Call Value trends to predict pipeline from scheduled consultations | | Attributing conversions | Track which touchpoints drive the highest-value call bookings | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------- | | [Book Call](/reference/metrics/funnel/conversions/book-call) | Total count of book call events—use with Book Call Value to calculate average value per call | | [Cost per Book Call](/reference/metrics/funnel/conversions/cost-per-book-call) | Ad spend efficiency metric—divide by Book Call count to understand acquisition cost | | [Lead](/reference/metrics/funnel/conversions/lead) | Broader lead capture metric—Book Call is a high-intent subset of lead generation | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cart to Purchase Rate: Measure Checkout Completion Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cart-to-purchase-rate Track the percentage of shoppers who complete a purchase after adding items to cart. Identify checkout friction and optimize your conversion funnel. Cart to Purchase Rate measures the percentage of shoppers who complete a purchase after adding items to their cart. ## Formula **Cart to Purchase Rate** = ( [**Purchases**](/reference/metrics/funnel/conversions/all-purchases) ÷ [**Add to Carts**](/reference/metrics/advertising/blended/add-to-carts) ) × 100 ### Formula Components | Metric | Definition | | ---------------- | -------------------------------------------------------- | | **Purchases** | Total number of completed purchases tracked by the pixel | | **Add to Carts** | Total number of add-to-cart events tracked by the pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store tracked **2,847 add-to-cart events** and **712 purchases** last month. | Metric | Value | | ------------------------- | --------- | | Add to Carts | 2,847 | | Purchases | 712 | | **Cart to Purchase Rate** | **25.0%** | A 25% cart to purchase rate means 1 in 4 shoppers who add items to cart complete a purchase. *** ## How It Works Cart to Purchase Rate is calculated by dividing the total number of completed purchases by the total number of add-to-cart events, then multiplying by 100. This metric tracks events captured by the Upstack Pixel and reflects the efficiency of your checkout funnel. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------------------------ | | Checkout optimization | Identify friction points causing cart abandonment | | A/B testing | Compare checkout flow variants by conversion rate | | Seasonal analysis | Track how purchase intent varies by period | | Campaign evaluation | Measure if traffic quality affects checkout completion | *** ## Related Metrics | Metric | Relationship | | ------------------- | ---------------------------------------------- | | **Add to Carts** | Numerator component — total cart additions | | **Purchases** | Denominator component — completed transactions | | **Conversion Rate** | Similar funnel metric — sessions to purchases | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Checkout Rate: Measure Checkout Funnel Efficiency for Your Shopify Store Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/checkout-rate Track the percentage of sessions that reach checkout on your Shopify store. Checkout Rate helps you measure funnel efficiency and identify drop-off points before purchase. Checkout Rate measures the percentage of sessions that reach the checkout step on your Shopify store. ## Formula **Checkout Rate** = ( [**Initiate Checkouts**](/reference/metrics/advertising/blended/initiate-checkouts) ÷ [**Sessions**](/reference/metrics/funnel/awareness/sessions) ) × 100 ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------- | ------------------------------------------------------------- | | [**Initiate Checkouts**](/reference/metrics/funnel/engagement/initiate-checkouts) | Total checkout initiation events tracked by the Upstack Pixel | | [**Sessions**](/reference/metrics/funnel/sessions/session-count) | Total unique sessions tracked on your website | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store had **18,000 sessions** and **1,620 checkout initiations** this month: | Metric | Value | | ------------------ | --------- | | Sessions | 18,000 | | Initiate Checkouts | 1,620 | | **Checkout Rate** | **9.00%** | By channel: | Channel | Sessions | Checkouts | Checkout Rate | | ---------- | -------- | --------- | ------------- | | Meta Ads | 9,000 | 900 | 10.00% | | Google Ads | 6,000 | 480 | 8.00% | | Organic | 3,000 | 240 | 8.00% | *** ## How It Works Upstack tracks checkout initiation events when visitors reach the checkout step on your Shopify store. The Checkout Rate is calculated by dividing the number of checkout initiations by the total sessions and multiplying by 100 to express it as a percentage. This metric captures all sessions that progressed through the funnel to reach checkout, regardless of whether they completed a purchase. *** ## When to Use | Scenario | Action | | ------------------------- | ---------------------------------------------------------------- | | Checkout rate dropping | Investigate cart page issues, shipping info, or unexpected costs | | Comparing traffic quality | Identify which channels drive the most checkout-ready visitors | | Funnel optimization | Measure impact of cart page improvements on checkout progression | | Campaign targeting | Find audiences with higher intent who reach checkout more often | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Measures sessions that complete purchase (beyond checkout) | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Numerator in this calculation | | [Add to Cart Rate](/reference/metrics/funnel/engagement/add-to-cart-rate) | Measures earlier funnel step (product page → cart) | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Initiate Checkout to Purchase Rate: Measure Checkout Completion Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/checkout-to-purchase-rate Track checkout to purchase rate for your Shopify store. Measure what percentage of checkout initiations convert to completed purchases. Initiate Checkout to Purchase Rate measures the percentage of checkout initiations that completed as purchases. Low rates can indicate checkout friction or payment issues. ## Formula **Initiate Checkout to Purchase Rate** = [**Purchases**](/reference/metrics/funnel/conversions/all-purchases) ÷ [**Initiate Checkouts**](/reference/metrics/advertising/blended/initiate-checkouts) × 100 ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------- | ------------------------------------------------------------- | | [**Purchases**](/reference/metrics/funnel/conversions/purchases) | Total completed purchase events tracked by the Upstack pixel | | [**Initiate Checkouts**](/reference/metrics/funnel/engagement/initiate-checkouts) | Total checkout initiation events tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store recorded **2,450 checkout initiations** and **1,838 completed purchases** in January. | Metric | Value | | ------------------- | ------ | | Initiate Checkouts | 2,450 | | Purchases | 1,838 | | IC to Purchase Rate | 75.02% | *** ## How It Works The Upstack pixel tracks each checkout initiation and purchase event. The rate is calculated by dividing the number of completed purchases by the total number of checkout initiations, then multiplying by 100 to express as a percentage. *** ## When to Use | Scenario | Action | | ------------------------------ | ----------------------------------------------------------------- | | Checkout abandonment is high | Optimize checkout flow, reduce form fields, or add trust signals | | Comparing acquisition channels | Identify which traffic sources have highest checkout completion | | Testing checkout changes | Measure impact of payment options, shipping costs, or UI updates | | Diagnosing revenue drops | Determine if issue is at checkout conversion vs earlier in funnel | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ------------------------------------- | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Denominator — total checkouts started | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Numerator — completed transactions | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Overall session-level conversion rate | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Complete Payment: Track Payment Completion Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/complete-payment Track complete payment events captured by the Upstack Pixel. Count successful payment completions to measure checkout funnel performance and revenue attribution. Complete Payment counts the total number of payment completion events tracked by the Upstack Pixel on your site. ## Formula **Complete Payment** = **COUNT** ( Complete Payment Events ) ### Formula Components | Metric | Definition | | --------------------------- | -------------------------------------------------------------------------------------------- | | **Complete Payment Events** | Each complete payment event tracked when a visitor successfully finishes the payment process | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your store tracked **3,847 complete payments** across attribution channels in January. | Channel | Complete Payments | % of Total | | ---------- | ----------------- | ---------- | | Meta Ads | 1,654 | 43.0% | | Google Ads | 1,039 | 27.0% | | Organic | 731 | 19.0% | | Direct | 423 | 11.0% | | **Total** | **3,847** | **100%** | *** ## How It Works Complete Payment counts every payment completion event tracked by the Upstack Pixel. When a visitor successfully completes the payment step in your checkout flow—confirming their payment method and finalizing the transaction—the pixel fires a complete payment event. This metric captures the moment a customer commits to their purchase, providing accurate attribution data for conversion tracking and funnel analysis. *** ## When to Use | Scenario | Action | | ----------------------------- | ----------------------------------------------------------- | | Measuring checkout completion | Track successful payment completions across channels | | Analyzing checkout funnel | Compare complete payments to checkout initiations | | Evaluating payment flow | Identify drop-off between payment initiation and completion | | Attribution analysis | Attribute completed transactions to marketing channels | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | -------------------------------------------- | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Final transaction confirmation after payment | | [Initiate Checkout](/reference/metrics/funnel/engagement/initiate-checkouts) | Upstream step in the checkout funnel | | [Add Payment Info](/reference/metrics/funnel/conversions/add-payment-info) | Payment details entry before completion | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Complete Payment Value: Track Payment Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/complete-payment-value Track total revenue from complete payment events with the Upstack pixel. Monitor payment conversion value for your e-commerce funnel. Complete Payment Value measures the total monetary value from all successfully completed payment events tracked by the Upstack pixel. ## Formula **Complete Payment Value** = **SUM** ( value ) **WHERE** event = complete\_payment ### Formula Components | Metric | Definition | | ----------------------------- | ----------------------------------------------------------- | | **value** | The monetary value passed with each complete\_payment event | | **event = complete\_payment** | Filters to only complete payment conversion events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your Shopify store tracked **847 complete payment events** in January, with a total value of **\$124,350**. | Week | Complete Payments | Complete Payment Value | | ------ | ----------------- | ---------------------- | | Week 1 | 198 | \$28,740 | | Week 2 | 215 | \$31,890 | | Week 3 | 221 | \$32,115 | | Week 4 | 213 | \$31,605 | *** ## How It Works The Upstack pixel captures complete\_payment events when customers successfully finish the payment step of checkout. Each event includes the transaction value, which is summed to calculate total Complete Payment Value for the selected period. *** ## When to Use | Scenario | Action | | ------------------------------------------------ | ---------------------------------------------------------------------------- | | Tracking revenue from completed transactions | Monitor Complete Payment Value to see total revenue from successful payments | | Comparing payment completion across time periods | Use date comparisons to identify revenue trends | | Analyzing payment conversion performance | Pair with Complete Payment count to calculate average payment value | | Measuring funnel bottom performance | Track as your primary revenue metric from pixel data | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | --------------------------------------------- | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Total conversion events tracked | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total value across all conversion event types | | [Average Conversion Value](/reference/metrics/funnel/conversions/average-conversion-value) | Average value per conversion event | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Complete Registration: Funnel Conversion Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/complete-registration Track registration form completions from visitors. Measure sign-up conversions driven by your marketing across all channels with the Upstack Pixel. Complete Registration measures the total number of times visitors completed a registration form, tracked by the Upstack pixel. ## Formula **Complete Registration** = **COUNT** ( Complete Registration Events ) ### Formula Components | Metric | Definition | | -------------------------------- | --------------------------------------------------------------------- | | **Complete Registration Events** | Individual registration form submissions tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example A SaaS company launched a new product announcement campaign. Over the week, they tracked **1,247 complete registrations**: | Channel | Registrations | % of Total | | ------------ | ------------- | ---------- | | Paid Search | 523 | 41.9% | | Social Media | 412 | 33.0% | | Email | 198 | 15.9% | | Direct | 114 | 9.2% | | **Total** | **1,247** | **100%** | *** ## How It Works Complete Registration events are captured when a visitor submits a registration form on your site. The Upstack pixel tracks these submissions and associates them with the visitor's session and attribution data. This allows you to measure which channels and campaigns drive the most signups. *** ## When to Use | Scenario | Action | | --------------------------------- | ---------------------------------------------------------- | | Measuring lead generation | Track complete registrations as a top-of-funnel conversion | | Evaluating campaign effectiveness | Compare registrations by traffic source | | Optimizing signup flows | Monitor registration rates across landing pages | | Building remarketing audiences | Target users who registered but haven't converted | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ----------------------------------------------- | | [Sign Up](/reference/metrics/funnel/conversions/sign-up) | Similar conversion event for account creation | | [Lead](/reference/metrics/funnel/conversions/lead) | Broader lead capture events beyond registration | | [Cost per Complete Registration](/reference/metrics/funnel/conversions/cost-per-complete-registration) | Ad spend efficiency for driving registrations | [See all Funnel Conversions metrics →](/reference/metrics/funnel/conversions) # Complete Registration Value: Total Revenue from Registrations Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/complete-registration-value Track total monetary value of complete registration events captured by the Upstack pixel. Measure the revenue potential of your registration campaigns. Total monetary value of complete registration events tracked by the Upstack pixel. ## Formula **Complete Registration Value** = **SUM** ( Complete Registration Event Values ) ### Formula Components | Metric | Definition | | -------------------------------------- | ------------------------------------------------------------------------ | | **SUM** | Aggregation function that totals all complete registration event values | | **Complete Registration Event Values** | Monetary value assigned to each complete registration event when tracked | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your registration campaigns generated **\$8,500** in registration value this month across 425 completed registrations: | Channel | Registration Value | Registrations | Avg Value | | ---------- | ------------------ | ------------- | --------- | | Meta Ads | \$4,800 | 240 | \$20.00 | | Google Ads | \$2,600 | 130 | \$20.00 | | TikTok Ads | \$1,100 | 55 | \$20.00 | *** ## How It Works Complete Registration Value sums the monetary value assigned to each complete registration event tracked by the Upstack pixel. When a visitor completes a registration form (account creation, membership signup, service enrollment), the event can include a custom value representing expected lifetime value or subscription revenue. This metric helps quantify the total pipeline value generated by your acquisition campaigns. *** ## When to Use | Scenario | Action | | --------------------- | ----------------------------------------------------------------------------- | | Pipeline valuation | Measure total revenue potential from registration campaigns | | Channel comparison | Compare registration value contribution across advertising platforms | | User quality analysis | Higher registration values may indicate more valuable user segments | | LTV forecasting | Project downstream revenue based on registration-to-customer conversion rates | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | --------------------------------------------- | | [Cost per Complete Registration](/reference/metrics/funnel/conversions/cost-per-complete-registration) | Spend efficiency for generating registrations | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Similar aggregation for purchase events | | [Sign Up Value](/reference/metrics/funnel/conversions/sign-up-value) | Similar value metric for sign up events | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Contact: Track Contact Form Submissions Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/contact Track contact form submissions on your website. Measure lead generation performance and optimize form placement to drive higher conversion rates. Contact measures the total number of contact form submissions tracked by the Upstack Pixel. ## Formula **Contact** = **COUNT** ( Contact Form Submissions ) ### Formula Components | Metric | Definition | | ------------------------ | -------------------------------------------------------------------------------------- | | Contact Form Submissions | Each submission of a contact form tracked by the Upstack Pixel fires one Contact event | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your site received **847 contact form submissions** in January. | Week | Contact Submissions | Conversion Rate | | ------ | ------------------- | --------------- | | Week 1 | 198 | 2.1% | | Week 2 | 215 | 2.3% | | Week 3 | 221 | 2.4% | | Week 4 | 213 | 2.2% | *** ## How It Works The Upstack Pixel fires a Contact event each time a visitor submits a contact form on your site. This tracks lead generation activity and helps measure the effectiveness of your contact pages and forms. *** ## When to Use | Scenario | Action | | ------------------------------- | ---------------------------------------------------------------------- | | Measuring lead generation | Track how many visitors are reaching out through contact forms | | Optimizing form placement | Compare contact rates across different pages to find optimal placement | | Evaluating campaign performance | See which traffic sources drive the most contact form submissions | | Calculating cost per lead | Combine with ad spend to determine your cost per contact submission | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------- | ------------------------------------------------------------ | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Top-of-funnel metric showing total site traffic | | [Sessions](/reference/metrics/funnel/awareness/sessions) | Unique visitor sessions that may lead to contact submissions | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Engagement metric showing purchase intent | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Contact Value: Total Revenue from Contact Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/contact-value Track total monetary value of contact events captured by the Upstack pixel. Measure the revenue potential of your contact form submissions. Total monetary value of contact events tracked by the Upstack pixel. ## Formula **Contact Value** = **SUM** ( Contact Event Values ) ### Formula Components | Metric | Definition | | ------------------------ | ---------------------------------------------------------- | | **SUM** | Aggregation function that totals all contact event values | | **Contact Event Values** | Monetary value assigned to each contact event when tracked | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your contact forms captured **\$8,500** in contact value this month across 425 submissions: | Channel | Contact Value | Contacts | Avg Value | | ---------- | ------------- | -------- | --------- | | Meta Ads | \$4,800 | 240 | \$20.00 | | Google Ads | \$2,600 | 130 | \$20.00 | | Organic | \$1,100 | 55 | \$20.00 | *** ## How It Works Contact Value sums the monetary value assigned to each contact event tracked by the Upstack pixel. When a visitor submits a contact form or initiates contact through your site, the event can include a custom value representing expected revenue potential. This metric helps quantify the total pipeline value generated by contact-driven campaigns. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------------------------------------------ | | Pipeline valuation | Measure total revenue potential from contact form submissions | | Channel comparison | Compare contact value contribution across advertising platforms | | Lead quality analysis | Higher contact values may indicate more qualified prospects | | ROI forecasting | Project downstream revenue based on contact-to-customer conversion rates | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | ---------------------------------------- | | [Cost per Contact](/reference/metrics/funnel/conversions/cost-per-contact) | Spend efficiency for generating contacts | | [Lead Value](/reference/metrics/funnel/conversions/lead-value) | Similar aggregation for lead events | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Similar aggregation for purchase events | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Content Downloaded: Track Content Downloads Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/content-downloaded Track when users download gated content. Measure content marketing lead generation. Content Downloaded counts the number of times users download gated content like ebooks, whitepapers, or guides. ## Formula **Content Downloaded** = **COUNT** ( content\_downloaded events ) ### Formula Components | Metric | Definition | | ------------------------------ | ------------------------------------------------ | | **content\_downloaded events** | Events fired when a user downloads gated content | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your marketing site tracked **567 content\_downloaded events** in January. | Metric | Value | Notes | | ------------------ | ----- | ------------------------------ | | Content Page Views | 4,500 | Visitors to content pages | | Content Downloaded | 567 | Downloads completed | | Download Rate | 12.6% | Visitor-to-download conversion | *** ## How It Works The Upstack pixel tracks `content_downloaded` events when users complete a content download—typically after submitting a lead form for gated content. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------ | | Content marketing ROI | Track downloads per content piece | | Lead generation | Measure content as lead source | | Campaign attribution | Identify channels driving downloads | | Content optimization | Compare download rates across assets | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ------------------ | | [Content Downloaded Cost](/reference/metrics/funnel/conversions/content-downloaded-cost) | Cost per download | | [Content Downloaded Value](/reference/metrics/funnel/conversions/content-downloaded-value) | Value of downloads | | [Demo Requested](/reference/metrics/funnel/conversions/demo-requested) | Next funnel stage | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Content Downloaded Cost: Ad Spend per Content Download Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/content-downloaded-cost Calculate advertising cost per content download. Measure content marketing efficiency. Content Downloaded Cost measures how much you spend on advertising for each content download. ## Formula **Content Downloaded Cost** = **Ad Spend** ÷ [**Content Downloaded**](/reference/metrics/funnel/conversions/content-downloaded) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**Content Downloaded**](/reference/metrics/funnel/conversions/content-downloaded) | Count of content downloads | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$3,000** on content promotion ads in January and drove **227 downloads**. | Metric | Value | Notes | | ----------------------- | ------- | ---------------------- | | Ad Spend | \$3,000 | Content promotion cost | | Content Downloaded | 227 | Downloads completed | | Content Downloaded Cost | \$13.22 | Cost per download | *** ## How It Works This metric divides your total ad spend by the number of content downloads. It measures the cost efficiency of content-based lead generation. *** ## When to Use | Scenario | Action | | ------------------- | --------------------------------------- | | Content ROI | Measure return on content promotion | | Channel comparison | Compare download costs across platforms | | Budget allocation | Optimize spend for content campaigns | | Content performance | Compare cost across different assets | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ----------------------------------- | | [Content Downloaded](/reference/metrics/funnel/conversions/content-downloaded) | The denominator in this calculation | | [Content Downloaded Value](/reference/metrics/funnel/conversions/content-downloaded-value) | Value of downloads | | [Demo Requested Cost](/reference/metrics/funnel/conversions/demo-requested-cost) | Compare to demo CPL | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Content Downloaded Value: Lead Value from Downloads Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/content-downloaded-value Track the monetary value attributed to content downloads. Measure expected lead value. Content Downloaded Value totals the monetary value attributed to content downloads. ## Formula **Content Downloaded Value** = **SUM** ( value ) **FROM** [**content\_downloaded**](/reference/metrics/funnel/conversions/content-downloaded) events ### Formula Components | Metric | Definition | | ------------------------------ | ------------------------------------------------------ | | **value** | The monetary value attributed to each content download | | **content\_downloaded events** | Events fired when users download content | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example You had **227 content downloads** in January with an average attributed value of **\$25**. | Metric | Value | Notes | | ------------------------ | ------- | --------------------------- | | Content Downloaded | 227 | Downloads completed | | Avg Download Value | \$25 | Expected value per download | | Content Downloaded Value | \$5,675 | Total lead value | *** ## How It Works This metric sums the value attribute from all content\_downloaded events. The value typically represents expected revenue based on historical conversion rates from content download to customer. *** ## When to Use | Scenario | Action | | ------------------- | -------------------------------------- | | Content ROI | Calculate return on content investment | | Pipeline projection | Estimate revenue from content leads | | Channel comparison | Compare lead value by source | | Content strategy | Prioritize high-value content types | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ------------------- | | [Content Downloaded](/reference/metrics/funnel/conversions/content-downloaded) | Count of downloads | | [Content Downloaded Cost](/reference/metrics/funnel/conversions/content-downloaded-cost) | Cost per download | | [Demo Requested Value](/reference/metrics/funnel/conversions/demo-requested-value) | Compare lead values | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Conversion Value: Total Revenue from Conversions Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/conversion-value Track total revenue from attributed conversions across Meta, Google, and TikTok. Learn the formula, see examples, and optimize your marketing ROI. The sum of all revenue from attributed conversion events. ## Formula **Conversion Value** = **SUM** ( Attributed Purchase Values ) ### Formula Components | Metric | Definition | | ------------------------------ | ---------------------------------------------------------------- | | **SUM** | Aggregation function that totals all conversion values | | **Attributed Purchase Values** | Monetary value of each purchase linked to a marketing touchpoint | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your campaigns generated **\$47,500** from 950 conversions this month: | Channel | Value | Share | | ---------- | -------- | ----- | | Meta Ads | \$28,500 | 60% | | Google Ads | \$12,350 | 26% | | TikTok Ads | \$6,650 | 14% | *** ## How It Works Conversion Value sums the monetary value of each attributed conversion event. For e-commerce, this equals order totals. Values are captured at conversion and attributed to marketing touchpoints based on your attribution model. *** ## When to Use | Scenario | Action | | ------------------------- | -------------------------------------------------- | | Measuring channel revenue | Compare total revenue contribution by platform | | Calculating ROAS | Divide by Ad Spend to find return on investment | | Evaluating campaign ROI | Identify which campaigns generate the most revenue | | Budget allocation | Shift spend toward highest-value channels | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ----------------------------------------------- | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Count of events (this metric sums their values) | | [Average Conversion Value](/reference/metrics/funnel/conversions/average-conversion-value) | Conversion Value ÷ Conversions | | [Unique Converters](/reference/metrics/funnel/conversions/unique-converters) | Distinct people who generated this value | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Add Payment Info: Measure Payment Step Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-add-payment-info Track cost per add payment info to measure checkout payment step efficiency. Calculate your average ad spend per payment info submission event. Cost per Add Payment Info measures the average advertising spend required to generate one payment info submission event tracked by the Upstack pixel. ## Formula **Cost per Add Payment Info** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Add Payment Info Events** ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | ----------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | [**Add Payment Info**](/reference/metrics/funnel/conversions/add-payment-info) | Payment info submission events tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$12,000 on ads** in March and the Upstack pixel tracked **4,800 add payment info events**. | Week | Ad Spend | Add Payment Info | Cost/Add Payment Info | | --------- | ------------ | ---------------- | --------------------- | | Week 1 | \$2,800 | 1,120 | \$2.50 | | Week 2 | \$3,200 | 1,280 | \$2.50 | | Week 3 | \$2,900 | 1,160 | \$2.50 | | Week 4 | \$3,100 | 1,240 | \$2.50 | | **Total** | **\$12,000** | **4,800** | **\$2.50** | *** ## How It Works Upstack calculates Cost per Add Payment Info by dividing your total advertising spend across all channels by the number of payment info submission events tracked by the pixel. This metric measures how efficiently your ads drive visitors to the payment stage of checkout—a high-intent action that indicates strong purchase likelihood. *** ## When to Use | Scenario | Action | | -------------------------- | ------------------------------------------------------------------------------ | | Funnel efficiency analysis | Compare against cost per purchase to measure payment-to-purchase drop-off cost | | Budget optimization | Identify channels that drive payment info submissions most efficiently | | Checkout optimization | Monitor how checkout UX changes affect acquisition costs at payment stage | | Campaign targeting | Evaluate which audiences reach payment stage at lower cost | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ------------------------------------------ | | [Add Payment Info](/reference/metrics/funnel/conversions/add-payment-info) | Count of payment info events (denominator) | | [Add Payment Info Value](/reference/metrics/funnel/conversions/add-payment-info-value) | Monetary value of payment info events | | [Cost per Purchase](/reference/metrics/funnel/conversions/cost-per-purchase) | Next funnel stage cost efficiency | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Add Shipping Info: Checkout Funnel Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-add-shipping-info Track cost per add shipping info to measure ad spend efficiency at the shipping step. Calculate checkout funnel acquisition cost for your Shopify store. Cost per Add Shipping Info measures the average ad spend required to generate one shipping information submission event during checkout. ## Formula **Cost per Add Shipping Info** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Add Shipping Info Events** ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | --------------------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | [**Add Shipping Info**](/reference/metrics/funnel/conversions/add-shipping-info) | Count of shipping info submission events tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$8,000 on ads** this month and generated **2,000 add shipping info events** during checkout. | Stage | Events | Cost per Event | | ----------------- | ------ | -------------- | | Initiate Checkout | 3,200 | \$2.50 | | Add Shipping Info | 2,000 | \$4.00 | | Add Payment Info | 1,600 | \$5.00 | | Purchase | 1,200 | \$6.67 | **Cost per Add Shipping Info** = \$8,000 ÷ 2,000 = **\$4.00** *** ## How It Works This metric divides your total advertising spend by the number of times visitors submitted their shipping information during checkout, as tracked by the Upstack pixel. It provides visibility into the cost efficiency of moving shoppers through the shipping information stage—a critical mid-funnel checkpoint between checkout initiation and payment. *** ## When to Use | Scenario | Action | | -------------------------- | ----------------------------------------------------------------------------------- | | Checkout funnel analysis | Compare against other checkout stage costs to identify drop-off points | | Shipping form optimization | High cost per shipping info may indicate form friction or address validation issues | | Campaign optimization | Use as a leading indicator of purchase intent before payment | | Geographic targeting | Analyze by region to identify markets with efficient shipping conversions | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | -------------------------------------- | | [Add Shipping Info](/reference/metrics/funnel/conversions/add-shipping-info) | Denominator in this calculation | | [Add Shipping Info Value](/reference/metrics/funnel/conversions/add-shipping-info-value) | Monetary value of shipping info events | | [Cost per Select Shipping Method](/reference/metrics/funnel/conversions/cost-per-select-shipping-method) | Next checkout step efficiency metric | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per All Purchase: Acquisition Efficiency for All Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-all-purchase Track cost per all purchase to measure ad spend efficiency across your Shopify store. Calculate your blended CPA across all customer types. Cost per All Purchase measures the average ad spend required to generate one purchase event of any type—new customer, returning customer, subscription, or otherwise. ## Formula **Cost per All Purchase** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**All Purchases**](/reference/metrics/funnel/conversions/all-purchases) ### Formula Components | Metric | Definition | | ----------------- | -------------------------------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | **All Purchases** | Total purchase events tracked by the Upstack pixel, including all customer types | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$12,000 on ads** this month and generated **400 total purchases** across all customer types. | Purchase Type | Count | Share | | ------------------ | ------- | -------- | | New Customer | 180 | 45% | | Returning Customer | 160 | 40% | | Subscription | 60 | 15% | | **Total** | **400** | **100%** | **Cost per All Purchase** = \$12,000 ÷ 400 = **\$30.00** *** ## How It Works This metric divides your total advertising spend by all purchase events tracked by the Upstack pixel. Unlike new customer CPA, which only counts first-time buyers, Cost per All Purchase includes every transaction—giving you a blended view of acquisition efficiency across your entire Shopify customer base. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------- | | Benchmarking overall efficiency | Compare against target CPA to gauge campaign health | | High returning customer rate | This metric reflects repeat purchase value that NC CPA misses | | Budget planning | Use for total cost forecasting across all order types | | Channel comparison | Compare blended efficiency across Meta, Google, and TikTok | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ------------------------------------------------------ | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Attributed conversions for ROAS calculations | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Revenue generated from all conversions | | [Average Conversion Value](/reference/metrics/funnel/conversions/average-conversion-value) | Average revenue per conversion for break-even analysis | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Book Call: Lead Generation Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-book-call Track cost per booked call to measure lead generation efficiency. Calculate average ad spend per consultation booking and optimize campaigns. Cost per Book Call measures the average advertising spend required to generate one booked call or consultation. ## Formula **Cost per Book Call** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Book Call Events** ### Formula Components | Metric | Definition | | -------------------- | ---------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | **Book Call Events** | Total number of call bookings tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your business spent **\$3,500** on advertising last month and generated **70 booked calls**. | Metric | Value | Calculation | | ---------------------- | ----------- | ---------------- | | Channel Spend | \$3,500 | Total ad spend | | Book Calls | 70 | Tracked bookings | | **Cost per Book Call** | **\$50.00** | \$3,500 ÷ 70 | *** ## How It Works Cost per Book Call divides your total advertising spend by the number of book\_call events tracked by the Upstack pixel. This metric helps you understand the efficiency of your ad campaigns in driving consultation or demo bookings—a key conversion event for service-based and B2B businesses. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------ | | Comparing campaign performance | Use to identify which campaigns generate calls at lower cost | | Budget allocation decisions | Shift spend toward campaigns with better cost efficiency | | Setting lead generation targets | Calculate required budget based on target call volume | | Evaluating channel effectiveness | Compare cost per call across Meta, Google, and TikTok | *** ## Related Metrics | Metric | Relationship | | --------------- | ------------------------------------------------- | | Book Calls | Base event count used as the denominator | | Book Call Value | Total value generated from booked calls | | Cost per Lead | Similar efficiency metric for general lead events | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Complete Registration: Measure Registration Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-complete-registration Track cost per complete registration for your marketing campaigns. Measure ad spend efficiency for registration events tracked by the Upstack pixel. Average ad spend per registration event tracked by the Upstack pixel—measuring how efficiently your campaigns drive account signups and user registrations. ## Formula **Cost per Complete Registration** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Complete Registration Events** ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ----------------------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected ad platforms | | **Complete Registration Events** | Total registration completions tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$12,000 on ads** this month driving users to your registration flow. The Upstack pixel tracked registration completions across channels: | Channel | Spend | Registrations | Cost per Registration | | ---------- | ------------ | ------------- | --------------------- | | Meta Ads | \$6,500 | 325 | \$20.00 | | Google Ads | \$4,000 | 180 | \$22.22 | | TikTok Ads | \$1,500 | 95 | \$15.79 | | **Total** | **\$12,000** | **600** | **\$20.00** | **Cost per Complete Registration** = \$12,000 ÷ 600 = **\$20.00** *** ## How It Works This metric divides your total advertising spend by complete registration events tracked by the Upstack pixel. A CompleteRegistration event fires when a visitor finishes creating an account or completing a signup flow. Use this metric to evaluate how efficiently your campaigns acquire registered users who can later be nurtured into paying customers. *** ## When to Use | Scenario | Action | | ---------------------- | -------------------------------------------------------------------- | | Registration campaigns | Measure cost efficiency for ads driving account signups | | Channel comparison | Identify which platforms deliver registrations most cost-effectively | | Budget allocation | Shift spend toward channels with lower registration costs | | Funnel optimization | Compare registration CPAs across audiences and creatives | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | ------------------------------------------- | | [Complete Registration Value](/reference/metrics/funnel/conversions/complete-registration-value) | Total monetary value of registration events | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Total ad spend used in the cost calculation | | [Cost per Lead](/reference/metrics/funnel/conversions/cost-per-lead) | Similar acquisition metric for lead events | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Contact: Measure Contact Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-contact Track cost per contact for your marketing campaigns. Measure ad spend efficiency for contact events tracked by the Upstack pixel. Average ad spend per contact event tracked by the Upstack pixel—measuring how efficiently your campaigns generate contact form submissions. ## Formula **Cost per Contact** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Contact Events**](/reference/metrics/advertising/meta-ads/contact-events) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected ad platforms | | **Contact Events** | Total times visitors submitted a contact form or initiated contact, tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your e-commerce store spent **\$12,000 on ads** this month across Meta, Google, and TikTok. Your campaigns captured contact form submissions: | Channel | Spend | Contacts | Cost per Contact | | ---------- | ------------ | -------- | ---------------- | | Meta Ads | \$6,500 | 380 | \$17.11 | | Google Ads | \$4,000 | 245 | \$16.33 | | TikTok Ads | \$1,500 | 72 | \$20.83 | | **Total** | **\$12,000** | **697** | **\$17.22** | **Cost per Contact** = \$12,000 ÷ 697 = **\$17.22** *** ## How It Works This metric divides your total advertising spend by contact events tracked by the Upstack pixel. Contact events are triggered when visitors submit a contact form or initiate contact through your site. The metric helps identify how efficiently your ad campaigns drive prospects to reach out to your business. *** ## When to Use | Scenario | Action | | ---------------------- | -------------------------------------------------------------------------- | | Contact form campaigns | Measure cost efficiency for ads focused on capturing inquiries | | Channel comparison | Identify which platforms deliver contacts most cost-effectively | | Budget allocation | Shift spend toward channels with lower cost per contact | | Campaign optimization | Compare contact CPAs across audiences, creatives, and targeting strategies | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------- | ------------------------------------------- | | [Contact Value](/reference/metrics/funnel/conversions/contact-value) | Total monetary value of contact events | | [Cost per Lead](/reference/metrics/funnel/conversions/cost-per-lead) | Similar CPA metric for lead events | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Total ad spend used in the cost calculation | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Demo Requested: Track Demo Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-demo-requested Track the average ad spend per demo request. Calculate your cost per high-intent sales lead. Cost per Demo Requested measures the average advertising spend required to generate one product demo request. ## Formula **Cost per Demo Requested** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Demo Requested Events** ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | --------------------------------------- | | **Channel Spend** | Total advertising spend across channels | | [**Demo Requested**](/reference/metrics/funnel/conversions/demo-requested) | Total demo request events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your B2B SaaS spent **\$25,000** on ads and generated **200 demo requests** this month. | Channel | Spend | Demo Requests | Cost per Demo | | ---------- | ------------ | ------------- | ------------- | | Google Ads | \$12,000 | 80 | \$150.00 | | LinkedIn | \$10,000 | 90 | \$111.11 | | Facebook | \$3,000 | 30 | \$100.00 | | **Total** | **\$25,000** | **200** | **\$125.00** | *** ## How It Works This metric divides your total channel spend by the number of demo requests. Demo requests are high-intent actions that typically convert at higher rates than other lead types. This metric helps you understand the true cost of acquiring sales-ready leads. *** ## When to Use | Scenario | Action | | -------------------- | ------------------------------------ | | CAC calculation | Measure cost per sales-ready lead | | Channel optimization | Identify most efficient demo sources | | Budget allocation | Optimize spend for demo generation | | Unit economics | Calculate blended acquisition costs | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ------------------------- | | [Demo Requested](/reference/metrics/funnel/conversions/demo-requested) | Count of demo requests | | [Demo Requested Value](/reference/metrics/funnel/conversions/demo-requested-value) | Value of demo requests | | [Cost per Book Call](/reference/metrics/funnel/conversions/cost-per-book-call) | Similar sales action cost | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Donate: Measure Donation Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-donate Calculate cost per donate event to measure how efficiently your ad spend generates charitable donations. Track donation campaign efficiency with formula and tips. Average ad spend per donation event tracked by the Upstack pixel. ## Formula **Cost per Donate** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Donates** ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across connected ad platforms | | **Donates** | Total donate events (charitable donations) tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your nonprofit spent **\$5,000** on ads last month and generated **250 donations**: | Channel | Spend | Donates | Cost per Donate | | --------- | ----------- | ------- | --------------- | | Meta | \$3,000 | 150 | \$20.00 | | Google | \$1,500 | 75 | \$20.00 | | TikTok | \$500 | 25 | \$20.00 | | **Total** | **\$5,000** | **250** | **\$20.00** | *** ## How It Works Cost per Donate divides your total advertising spend by the number of donate events captured by the Upstack pixel. These events fire when visitors complete a charitable donation action on your site. Lower values indicate more efficient donor acquisition—you're paying less for each new donation. *** ## When to Use | Scenario | Action | | ------------------------------ | ---------------------------------------------------------------- | | Fundraising campaign budgeting | Estimate spend needed to hit donation targets | | Channel efficiency comparison | Identify which platforms acquire donors most cost-effectively | | Donor acquisition analysis | Compare donation acquisition cost against average donation value | | Campaign optimization | Reallocate budget toward channels with lower cost per donate | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ------------------------------------------------- | | [Cost per Lead](/reference/metrics/funnel/conversions/cost-per-lead) | Similar efficiency metric for lead capture events | | [Cost per Subscribe](/reference/metrics/funnel/conversions/cost-per-subscribe) | Similar efficiency metric for subscription events | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Total ad spend used in the cost calculation | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Fulfillment: Ad Efficiency for Fulfilled Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-fulfillment Track your cost per fulfilled order in Shopify. Calculate ad spend efficiency for orders that completed fulfillment to optimize your marketing ROI. Cost per Fulfillment measures the average advertising spend required to generate one fulfilled order in your Shopify store. ## Formula **Cost per Fulfillment** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Order Fulfilled Events** ### Formula Components | Metric | Definition | | -------------------------- | -------------------------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | **Order Fulfilled Events** | Total orders that reached fulfillment status, tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$15,000** on advertising in March and fulfilled **750 orders** during the same period. | Metric | Value | Calculation | | ------------------------ | ----------- | ---------------- | | Channel Spend | \$15,000 | Total ad spend | | Fulfilled Orders | 750 | Orders completed | | **Cost per Fulfillment** | **\$20.00** | \$15,000 ÷ 750 | *** ## How It Works Cost per Fulfillment divides your total advertising spend by the number of orders that were successfully fulfilled. Unlike Cost per Purchase, this metric only counts orders that progressed past payment to actual fulfillment, giving you a more accurate picture of customer acquisition cost for completed transactions. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------------------------------- | | Evaluating true acquisition cost | Use this metric to exclude cancelled or unfulfilled orders from your CPA calculations | | Comparing channel efficiency | Identify which ad platforms drive the most cost-effective fulfilled orders | | Subscription box businesses | Track acquisition cost for orders that actually ship to customers | | High-cancellation product lines | Get accurate CPA by focusing on orders that complete fulfillment | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | -------------------------------------------------------------- | | [Cost per Purchase](/reference/metrics/funnel/conversions/cost-per-purchase) | Cost per completed purchase (regardless of fulfillment status) | | [Cost per Order Shipped](/reference/metrics/funnel/conversions/cost-per-order-shipped) | Cost per order that entered shipping status | | [Fulfillments](/reference/metrics/funnel/conversions/fulfillment) | Total count of fulfilled orders | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per High AOV Purchase: High-Value Acquisition Costs Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-high-aov-purchase Track cost per high AOV purchase for your Shopify store. Measure ad spend efficiency for high-value orders exceeding your AOV threshold. Average ad spend per high AOV purchase event tracked by the Upstack pixel—orders exceeding your store's average order value threshold. ## Formula **Cost per High AOV Purchase** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**High AOV Purchases**](/reference/metrics/funnel/conversions/high-aov-purchases) ### Formula Components | Metric | Definition | | ---------------------- | ----------------------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | **High AOV Purchases** | Purchase events where order value exceeds your configured AOV threshold | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$25,000 on ads** this month. You track purchases where order value exceeds **\$150** as high AOV purchases: | Order Value Segment | Purchases | Share | | ------------------- | --------- | -------- | | High AOV (>\$150) | 320 | 26% | | Standard AOV | 900 | 74% | | **Total** | **1,220** | **100%** | **Cost per High AOV Purchase** = \$25,000 ÷ 320 = **\$78.13** *** ## How It Works This metric divides your total advertising spend by high AOV purchase events tracked by the Upstack pixel. High AOV purchases are orders where the cart value exceeds a predefined threshold based on your store's average order value. The metric helps identify how efficiently your ad campaigns drive premium, high-margin transactions from your Shopify store. *** ## When to Use | Scenario | Action | | ------------------------- | -------------------------------------------------------------------- | | Premium product campaigns | Measure cost efficiency for ads targeting high-ticket items | | Bundle promotion analysis | Track whether bundle offers drive cost-effective high-value orders | | Channel optimization | Identify which platforms deliver high AOV purchases most efficiently | | Campaign ROI assessment | Compare high AOV CPA against customer LTV for premium segments | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | -------------------------------------------------------------- | | [Cost per All Purchase](/reference/metrics/funnel/conversions/cost-per-all-purchase) | Blended CPA across all purchase types for comparison | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total revenue from all attributed conversions | | [Average Conversion Value](/reference/metrics/funnel/conversions/average-conversion-value) | Average revenue per conversion to contextualize AOV thresholds | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Lapsed Purchase: Win-Back Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-lapsed-purchase Track the cost to reactivate lapsed customers for your Shopify store. Calculate Channel Spend divided by Lapsed Purchases to optimize win-back campaigns. Cost per Lapsed Purchase measures the average ad spend required to generate one purchase from a lapsed customer, tracked by the Upstack pixel. ## Formula **Cost per Lapsed Purchase** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Lapsed Purchases**](/reference/metrics/funnel/conversions/lapsed-purchases) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | --------------------------------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total amount spent on advertising across all channels | | [**Lapsed Purchases**](/reference/metrics/funnel/conversions/lapsed-purchases) | Purchase events from customers who returned after extended inactivity | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$8,500** on win-back campaigns in February and reactivated **170 lapsed customers** who completed purchases. | Metric | Value | Calculation | | ---------------------------- | ----------- | ------------------------------------ | | Channel Spend | \$8,500 | Total ad spend on win-back campaigns | | Lapsed Purchases | 170 | Reactivated customer conversions | | **Cost per Lapsed Purchase** | **\$50.00** | \$8,500 ÷ 170 | *** ## How It Works Upstack tracks purchase events from your Shopify store and identifies lapsed customers—those who have been inactive beyond the typical repurchase window. When these dormant customers return and complete a purchase, the event is tracked as a lapsed purchase. This metric divides your total advertising spend by the number of these win-back conversions, showing the true cost to reactivate a churned customer. *** ## When to Use | Scenario | Action | | ----------------------------- | -------------------------------------------------------------------------------- | | Evaluating win-back campaigns | Compare cost per lapsed purchase against lifetime value of reactivated customers | | Optimizing reactivation spend | Identify which channels reactivate dormant customers most efficiently | | Budget allocation | Weigh investment in win-back vs. new customer acquisition | | Benchmarking retention costs | Compare against cost per new customer to assess reactivation ROI | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ------------------------------------------- | | [Lapsed Purchases](/reference/metrics/funnel/conversions/lapsed-purchases) | Denominator in this calculation | | [Channel Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in this calculation | | [New Customer Purchase Cost](/reference/metrics/funnel/conversions/cost-per-new-customer-purchase) | Compare acquisition vs. win-back efficiency | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Lead: Acquisition Efficiency Metric Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-lead Track Cost per Lead (CPL) to measure lead generation efficiency. Calculate ad spend required per lead captured through your Upstack Pixel. Cost per Lead (CPL) measures how much you spend on advertising to acquire each lead captured by your pixel. ## Formula **Cost per Lead** = **Total Spend** ÷ [**Leads**](/reference/metrics/funnel/conversions/lead) ### Formula Components | Metric | Definition | | --------------- | --------------------------------------------------------- | | **Total Spend** | Total advertising spend across all connected ad platforms | | **Leads** | Count of lead events tracked by the Upstack Pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your business spent **\$5,000** on ads last month and captured **250 leads** through your lead forms. | Metric | Value | Calculation | | ----------------- | ----------- | -------------------- | | Total Spend | \$5,000 | Sum of ad spend | | Leads | 250 | Count of lead events | | **Cost per Lead** | **\$20.00** | \$5,000 ÷ 250 | *** ## How It Works Cost per Lead divides your total advertising spend by the number of leads captured through the Upstack Pixel. A lead event fires when a visitor completes a lead form, signs up for a newsletter, requests a demo, or takes any action you've configured as a lead conversion. Lower CPL indicates more efficient lead generation. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------------------ | | Comparing campaign efficiency | Use CPL to identify which campaigns generate leads most cost-effectively | | Budget allocation | Shift budget toward channels with lower CPL | | Benchmarking performance | Compare CPL month-over-month to track improvement | | Evaluating lead quality vs. cost | Pair CPL with lead-to-customer conversion rate for full picture | *** ## Related Metrics | Metric | Relationship | | --------------- | ----------------------------------------------- | | Leads | Denominator — total lead events captured | | Total Spend | Numerator — advertising investment | | Conversion Rate | Tracks what percentage of sessions become leads | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Low AOV Purchase: Budget-Conscious Acquisition Costs Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-low-aov-purchase Track cost per low AOV purchase for your Shopify store. Measure ad spend efficiency for below-threshold orders and optimize budget-conscious customer acquisition. Average ad spend per low AOV purchase event tracked by the Upstack pixel—orders falling below your store's average order value threshold. ## Formula **Cost per Low AOV Purchase** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Low AOV Purchases**](/reference/metrics/funnel/conversions/low-aov-purchases) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | [**Low AOV Purchases**](/reference/metrics/funnel/conversions/low-aov-purchases) | Purchase events where order value falls below your configured AOV threshold | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$25,000 on ads** this month. You track purchases where order value falls below **\$85** as low AOV purchases: | Order Value Segment | Purchases | Share | | -------------------- | --------- | -------- | | Low AOV (under \$85) | 788 | 72% | | High AOV (\$85+) | 312 | 28% | | **Total** | **1,100** | **100%** | **Cost per Low AOV Purchase** = \$25,000 ÷ 788 = **\$31.73** *** ## How It Works This metric divides your total advertising spend by low AOV purchase events tracked by the Upstack pixel. Low AOV purchases are orders where the cart value falls below a predefined threshold based on your store's average order value. The metric helps identify how much you're spending to acquire budget-conscious customers from your Shopify store and whether campaigns are efficiently driving lower-value orders. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------------------------- | | Evaluating campaign efficiency | Compare low AOV CPA against high AOV CPA to assess audience quality | | Identifying upsell opportunities | High volume of low AOV purchases signals potential for cart-building strategies | | Setting free shipping thresholds | Use CPA data to justify minimum order requirements that improve profitability | | Channel budget allocation | Shift spend away from channels with high low-AOV acquisition costs | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | [Cost per High AOV Purchase](/reference/metrics/funnel/conversions/cost-per-high-aov-purchase) | Inverse: acquisition cost for premium orders above threshold | | [Low AOV Purchases](/reference/metrics/funnel/conversions/low-aov-purchases) | Denominator: count of below-threshold orders | | [Cost per All Purchase](/reference/metrics/funnel/conversions/cost-per-all-purchase) | Blended CPA across all purchase types for comparison | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per New Customer Purchase: Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-new-customer-purchase Track cost per new customer purchase for your Shopify store. Measure acquisition efficiency and optimize ad spend per first-time buyer conversion. Cost per New Customer Purchase measures the average ad spend required to generate one first-time customer purchase, tracked by the Upstack pixel. ## Formula **Cost per New Customer Purchase** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**New Customer Purchases**](/reference/metrics/funnel/conversions/new-customer-purchases) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total amount spent on advertising across all channels | | [**New Customer Purchases**](/reference/metrics/funnel/conversions/new-customer-purchases) | Total purchase events from first-time customers tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$12,500** on ads in January and tracked **125 new customer purchases** through the Upstack pixel. | Metric | Value | Calculation | | ------------------------ | ------------ | ---------------------------- | | Channel Spend | \$12,500 | Total ad spend | | New Customer Purchases | 125 | First-time buyer conversions | | **Cost per NC Purchase** | **\$100.00** | \$12,500 ÷ 125 | *** ## How It Works Upstack tracks purchase events from your Shopify store and identifies first-time customers using identity resolution. The metric divides your total advertising spend by the number of these tracked new customer purchases, giving you the true cost to acquire a converting first-time buyer. *** ## When to Use | Scenario | Action | | -------------------------------- | --------------------------------------------------------------- | | Comparing acquisition channels | Identify which platforms deliver new customers most efficiently | | Optimizing ad campaigns | Reduce spend on high-cost acquisition channels | | Setting CAC targets | Use as a benchmark for customer acquisition cost goals | | Evaluating prospecting campaigns | Assess performance of campaigns targeting new audiences | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [New Customer Purchases](/reference/metrics/funnel/conversions/new-customer-purchases) | Denominator in this calculation | | [Channel Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in this calculation | | [Returning Customer Purchase Cost](/reference/metrics/funnel/conversions/cost-per-returning-customer-purchase) | Compare acquisition vs. retention efficiency | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Order Cancelled: Track Wasted Ad Spend Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-order-cancelled Track cost per cancelled order to measure wasted ad spend on your Shopify store. Identify channels driving cancellations and optimize acquisition efficiency. Cost per Order Cancelled measures the average advertising spend associated with orders that were subsequently cancelled—helping you identify wasted ad spend. ## Formula **Cost per Order Cancelled** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Orders Cancelled** ### Formula Components | Metric | Definition | | -------------------- | -------------------------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | **Orders Cancelled** | Count of Shopify orders with cancelled status tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$20,000 on ads** in Q1 and had **80 orders cancelled** out of 2,000 total orders. | Month | Ad Spend | Orders Cancelled | Cost/Order Cancelled | | --------- | ------------ | ---------------- | -------------------- | | January | \$6,000 | 22 | \$272.73 | | February | \$7,000 | 28 | \$250.00 | | March | \$7,000 | 30 | \$233.33 | | **Total** | **\$20,000** | **80** | **\$250.00** | *** ## How It Works Upstack calculates Cost per Order Cancelled by dividing your total advertising spend across all channels by the number of cancelled orders tracked by the pixel. This represents the ad dollars "lost" to cancelled orders—giving you insight into how cancellations impact your true customer acquisition cost and overall marketing efficiency. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------ | | Evaluating true acquisition cost | Add to Cost per Purchase to see full acquisition picture | | Channel quality analysis | Compare across channels to find those driving cancellations | | Fraud detection | Spike in cancellation costs may indicate fraudulent orders | | Policy optimization | High values may signal need for stricter checkout validation | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ---------------------------------------------------- | | [Cost per Purchase](/reference/metrics/funnel/conversions/cost-per-purchase) | Acquisition cost before accounting for cancellations | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Total attributed conversion events | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Count of tracked purchase events | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Order Delivered: Ad Spend Efficiency for Fulfilled Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-order-delivered Track your Cost per Order Delivered for Shopify stores. Measure ad spend efficiency for orders that have been fulfilled and delivered to customers. Cost per Order Delivered measures how much ad spend it takes to generate a fully delivered order, giving you a true cost efficiency metric that accounts for fulfillment completion. ## Formula **Cost per Order Delivered** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Orders Delivered** ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ------------------------------------------------------------------ | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all channels in the selected period | | **Orders Delivered** | Count of orders that have been fulfilled and marked as delivered | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$15,000** on advertising in March. During that period, **375 orders** were fulfilled and delivered to customers. | Metric | Value | | ---------------------------- | ----------- | | Channel Spend | \$15,000 | | Orders Delivered | 375 | | **Cost per Order Delivered** | **\$40.00** | *** ## How It Works Cost per Order Delivered calculates your advertising efficiency based on orders that have completed the full customer journey—from click to delivery. Unlike Cost per Purchase, which counts orders at checkout, this metric waits until Shopify marks the order as fulfilled and delivered, giving you a more accurate picture of your true customer acquisition cost. *** ## When to Use | Scenario | Action | | ---------------------------------- | ------------------------------------------------------------------------------------------ | | Measuring true acquisition costs | Use Cost per Order Delivered to account for canceled orders and returns before fulfillment | | Comparing fulfillment efficiency | Compare this metric across channels to see which sources deliver the most reliable orders | | Evaluating subscription businesses | Track delivered orders to measure actual recurring shipments, not just initial sign-ups | | Analyzing seasonal fulfillment | Monitor how shipping delays during peak seasons affect your delivered order costs | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ---------------------------------------------------------- | | [Cost per Purchase](/reference/metrics/funnel/conversions/cost-per-purchase) | Measures cost at checkout, before fulfillment verification | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Total orders tracked at checkout | | [Revenue](/reference/metrics/funnel/conversions/revenue) | Total revenue from delivered orders | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Order Placed: Measure Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-order-placed Track cost per order placed for your Shopify store. Calculate average advertising spend required to generate each order placement event and optimize acquisition. Cost per Order Placed measures the average advertising spend required to generate one order placement event tracked by the Upstack pixel. ## Formula **Cost per Order Placed** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Order Placed Events** ### Formula Components | Metric | Definition | | ----------------------- | --------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | **Order Placed Events** | Order placement events tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$12,000 on ads** in February and the Upstack pixel tracked **400 order placed events**. | Week | Ad Spend | Order Placed | Cost/Order Placed | | --------- | ------------ | ------------ | ----------------- | | Week 1 | \$2,800 | 88 | \$31.82 | | Week 2 | \$3,200 | 105 | \$30.48 | | Week 3 | \$3,000 | 98 | \$30.61 | | Week 4 | \$3,000 | 109 | \$27.52 | | **Total** | **\$12,000** | **400** | **\$30.00** | *** ## How It Works Upstack calculates Cost per Order Placed by dividing your total advertising spend across all channels by the number of order placed events tracked by the pixel. This metric spans Meta, Google, TikTok, and any other connected ad platforms—showing how much you spend on average to generate each Shopify order placement. *** ## When to Use | Scenario | Action | | --------------------------------- | --------------------------------------------------------- | | Evaluating acquisition efficiency | Compare against target CPA to assess campaign health | | Budget allocation | Shift spend toward channels with lower cost per order | | Forecasting order volume | Project total ad spend needed to hit order targets | | Channel benchmarking | Identify which platforms generate orders most efficiently | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | --------------------------------------------- | | [Cost per Purchase](/reference/metrics/funnel/conversions/cost-per-purchase) | Similar efficiency metric for purchase events | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Count of purchase events tracked | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Percentage of sessions that convert | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Order Shipped: Track Fulfillment Acquisition Costs Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-order-shipped Track cost per order shipped for your Shopify store. Calculate average ad spend required to generate each fulfilled order shipment event. Cost per Order Shipped measures the average advertising spend required to generate one fulfilled order shipment event tracked by the Upstack pixel. ## Formula **Cost per Order Shipped** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Order Shipped Events** ### Formula Components | Metric | Definition | | ------------------------ | --------------------------------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | **Order Shipped Events** | Order shipment events tracked by the Upstack pixel when Shopify fulfills an order | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$15,000 on ads** in March and the Upstack pixel tracked **450 order shipped events**. | Week | Ad Spend | Orders Shipped | Cost/Order Shipped | | --------- | ------------ | -------------- | ------------------ | | Week 1 | \$3,500 | 102 | \$34.31 | | Week 2 | \$3,800 | 118 | \$32.20 | | Week 3 | \$3,700 | 115 | \$32.17 | | Week 4 | \$4,000 | 115 | \$34.78 | | **Total** | **\$15,000** | **450** | **\$33.33** | *** ## How It Works Upstack calculates Cost per Order Shipped by dividing your total advertising spend across all channels by the number of order shipped events tracked by the pixel. This metric reflects the true cost to acquire a fulfilled order—not just a placed order—giving you a more accurate picture of acquisition efficiency for orders that actually shipped from your Shopify store. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------------------ | | Measuring true acquisition cost | Use instead of Cost per Purchase to account for cancelled orders | | Evaluating fulfillment efficiency | Compare against Cost per Order Placed to identify fulfillment gaps | | Budget planning | Forecast ad spend needed to ship target number of orders | | Channel performance | Identify which platforms drive fulfilled orders most efficiently | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | ----------------------------------------- | | [Order Shipped Value](/reference/metrics/funnel/conversions/order-shipped-value) | Total value of orders shipped | | [Cost per Order Placed](/reference/metrics/funnel/conversions/cost-per-order-placed) | Similar metric for order placement events | | [Cost per Purchase](/reference/metrics/funnel/conversions/cost-per-purchase) | Cost efficiency for purchase events | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Purchase: Measure Ad Spend Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-purchase Track cost per purchase to measure ad spend efficiency for your Shopify store. Calculate your average advertising cost per conversion event. Cost per Purchase measures the average advertising spend required to generate one purchase event tracked by the Upstack pixel. ## Formula **Cost per Purchase** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Purchase Events** ### Formula Components | Metric | Definition | | ------------------- | --------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | **Purchase Events** | Purchase events tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$15,000 on ads** in March and the Upstack pixel tracked **500 purchase events**. | Week | Ad Spend | Purchase Events | Cost/Purchase | | --------- | ------------ | --------------- | ------------- | | Week 1 | \$3,500 | 110 | \$31.82 | | Week 2 | \$4,000 | 130 | \$30.77 | | Week 3 | \$3,800 | 125 | \$30.40 | | Week 4 | \$3,700 | 135 | \$27.41 | | **Total** | **\$15,000** | **500** | **\$30.00** | *** ## How It Works Upstack calculates Cost per Purchase by dividing your total advertising spend across all channels by the number of purchase events tracked by the pixel. This gives you a unified cost efficiency metric that spans Meta, Google, TikTok, and any other connected ad platforms—measuring how much you spend on average to generate each Shopify purchase. *** ## When to Use | Scenario | Action | | ------------------------ | --------------------------------------------------------- | | Evaluating ad efficiency | Compare against target CPA to assess campaign health | | Budget optimization | Shift spend toward channels with lower cost per purchase | | Forecasting | Project total ad spend needed to hit revenue targets | | Channel comparison | Identify which platforms drive purchases most efficiently | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ---------------------------------------------- | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Attributed conversion events for ROAS analysis | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total revenue from conversions | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Percentage of sessions that convert | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Refund: Ad Spend Efficiency for Refunded Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-refund Track Cost per Refund for your Shopify store. Measure ad spend efficiency by calculating the average advertising cost associated with each refunded order. Cost per Refund measures the average advertising spend associated with each refunded order on your Shopify store. ## Formula **Cost per Refund** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Refund Events** ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ------------------------------------------------------------------ | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all channels in the selected period | | **Refund Events** | Total number of refund events tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$10,000** on advertising in January and recorded **50 refunded orders** tracked by the Upstack pixel. | Metric | Value | Calculation | | ------------------- | ------------ | --------------------- | | Channel Spend | \$10,000 | Total ad spend | | Refund Events | 50 | Total refunds tracked | | **Cost per Refund** | **\$200.00** | \$10,000 ÷ 50 | *** ## How It Works Cost per Refund divides your total advertising spend by the number of refund events tracked by the Upstack pixel. This metric helps you understand how much ad budget is effectively "lost" when customers request refunds. Lower values indicate fewer refunds relative to your ad spend. *** ## When to Use | Scenario | Action | | ---------------------------------------- | --------------------------------------------------------------------- | | High refund rates from specific channels | Investigate product-market fit or ad targeting for those channels | | Monitoring acquisition quality | Compare cost per refund to cost per purchase to assess order quality | | Evaluating ad creative performance | Identify if certain creatives attract customers more likely to refund | | Seasonal refund analysis | Track how refund costs fluctuate during peak shopping periods | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | --------------------------------------------------------------- | | [Cost per Purchase](/reference/metrics/funnel/conversions/cost-per-purchase) | Primary conversion cost metric; compare to assess order quality | | [Channel Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in the formula | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Total orders to compare against refund volume | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Repeat Purchase: Returning Customer Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-repeat-purchase Track cost per repeat purchase for your Shopify store. Measure advertising efficiency in converting returning customers and optimize retention spend. Cost per Repeat Purchase measures how much ad spend is required to generate one purchase from a returning customer. ## Formula **Cost per Repeat Purchase** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Repeat Purchase Events** ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected ad platforms | | [**Repeat Purchases**](/reference/metrics/funnel/conversions/repeat-purchase) | Total purchase events from returning customers tracked by the Upstack Pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$15,000** on ads last month and tracked **750** repeat purchases from returning customers. | Metric | Value | Calculation | | ---------------------------- | ----------- | ------------------------- | | Channel Spend | \$15,000 | Total ad spend | | Repeat Purchases | 750 | Returning customer orders | | **Cost per Repeat Purchase** | **\$20.00** | \$15,000 ÷ 750 | *** ## How It Works The Upstack Pixel tracks every purchase event and identifies whether the customer has previously purchased from your Shopify store. Repeat purchases are orders placed by customers who have at least one prior order. This metric divides your total ad spend by the count of repeat purchase events to show your cost efficiency for returning customer conversions. *** ## When to Use | Scenario | Action | | ------------------------------------------------------ | ------------------------------------------------------------------------------ | | Comparing new vs. returning customer acquisition costs | Compare against Cost per New Customer Purchase to optimize budget allocation | | Evaluating retention campaign efficiency | Monitor whether retargeting campaigns deliver cost-effective repeat purchases | | Budgeting for customer reactivation | Use as a baseline for setting CPA targets on win-back campaigns | | Analyzing channel performance by customer type | Break down by channel to find which platforms drive efficient repeat purchases | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------- | | [Repeat Purchases](/reference/metrics/funnel/conversions/repeat-purchase) | The denominator in this calculation | | [Cost per New Customer Purchase](/reference/metrics/funnel/conversions/cost-per-new-customer-purchase) | Compare acquisition cost for first-time buyers | | [Cost per Purchase](/reference/metrics/funnel/conversions/cost-per-purchase) | Overall purchase cost regardless of customer type | | [Channel Spend](/reference/metrics/advertising/blended/blended-spend) | The numerator in this calculation | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Returning Customer Purchase: Measure Retention Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-returning-customer-purchase Track cost per returning customer purchase for your Shopify store. Measure how efficiently your ad spend drives repeat buyer conversions. Average ad spend per returning customer purchase event tracked by the Upstack pixel. ## Formula **Cost per Returning Customer Purchase** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Returning Customer Purchases**](/reference/metrics/funnel/conversions/returning-customer-purchases) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | [**Returning Customer Purchases**](/reference/metrics/funnel/conversions/returning-customer-purchases) | Purchase events from customers who have previously bought from your Shopify store | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$15,000 on ads** this month and generated **750 returning customer purchases**: | Purchase Type | Count | Share | | ------------------ | --------- | -------- | | New Customer | 450 | 37% | | Returning Customer | 750 | 63% | | **Total** | **1,200** | **100%** | **Cost per Returning Customer Purchase** = \$15,000 ÷ 750 = **\$20.00** *** ## How It Works This metric divides your total advertising spend by the number of returning customer purchase events tracked by the Upstack pixel. It measures how efficiently your ad budget drives repeat purchases from existing Shopify customers—those who have at least one prior completed order. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------------------------------- | | Evaluating retention campaigns | Compare RC cost against new customer CPA to assess remarketing efficiency | | High repeat purchase rate | Track whether returning customers justify continued ad investment | | Budget allocation | Balance spending between acquisition and retention campaigns | | Channel comparison | Identify which platforms drive repeat purchases most cost-effectively | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------- | | [Returning Customer Purchases](/reference/metrics/funnel/conversions/returning-customer-purchases) | Denominator—total returning customer purchase events | | [Cost per All Purchase](/reference/metrics/funnel/conversions/cost-per-all-purchase) | Blended CPA across all customer types | | [Returning Customer Purchase Value](/reference/metrics/funnel/conversions/returning-customer-purchase-value) | Total revenue from returning customer orders | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Schedule: Appointment Booking Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-schedule Track cost per scheduled appointment to measure booking efficiency. Calculate average ad spend per appointment scheduling and optimize campaigns. Cost per Schedule measures the average advertising spend required to generate one scheduled appointment or event. ## Formula **Cost per Schedule** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Schedule Events**](/reference/metrics/funnel/conversions/schedule) ### Formula Components | Metric | Definition | | ------------------- | ------------------------------------------------------------------------------ | | **Channel Spend** | Total advertising spend across all connected ad platforms | | **Schedule Events** | Total number of appointments or events scheduled, tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your business spent **\$4,200** on advertising last month and generated **84 scheduled appointments**. | Metric | Value | Calculation | | --------------------- | ----------- | -------------------- | | Channel Spend | \$4,200 | Total ad spend | | Schedule Events | 84 | Tracked appointments | | **Cost per Schedule** | **\$50.00** | \$4,200 ÷ 84 | *** ## How It Works Cost per Schedule divides your total advertising spend by the number of schedule events tracked by the Upstack pixel. This metric helps you understand the efficiency of your ad campaigns in driving appointment bookings—a key conversion event for service-based businesses, healthcare providers, and any business that relies on scheduled consultations. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------------- | | Comparing campaign performance | Use to identify which campaigns generate appointments at lower cost | | Budget allocation decisions | Shift spend toward campaigns with better scheduling efficiency | | Setting appointment targets | Calculate required budget based on target booking volume | | Evaluating channel effectiveness | Compare cost per schedule across Meta, Google, and TikTok | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ------------------------------------------------------ | | [Schedule Events](/reference/metrics/funnel/conversions/schedule) | Base event count used as the denominator | | [Schedule Value](/reference/metrics/funnel/conversions/schedule-value) | Total value generated from scheduled appointments | | [Cost per Book Call](/reference/metrics/funnel/conversions/cost-per-book-call) | Similar efficiency metric for booked calls | | [Cost per Contact](/reference/metrics/funnel/conversions/cost-per-contact) | Similar efficiency metric for contact form submissions | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Select Shipping Method: Checkout Shipping Selection Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-select-shipping-method Track cost per select shipping method to measure ad spend efficiency at the shipping selection stage. Calculate checkout funnel acquisition cost for your Shopify store. Cost per Select Shipping Method measures the average ad spend required to generate one shipping method selection event during checkout. ## Formula **Cost per Select Shipping Method** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Select Shipping Method Events** ### Formula Components | Metric | Definition | | -------------------------- | -------------------------------------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | **Select Shipping Method** | Count of shipping method selection events tracked by the Upstack pixel during checkout | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$10,000 on ads** this month and generated **2,500 shipping method selection events** during checkout. | Stage | Events | Cost per Event | | ---------------------- | ------ | -------------- | | Initiate Checkout | 4,200 | \$2.38 | | Select Shipping Method | 2,500 | \$4.00 | | Add Payment Info | 2,100 | \$4.76 | | Purchase | 1,800 | \$5.56 | **Cost per Select Shipping Method** = \$10,000 ÷ 2,500 = **\$4.00** *** ## How It Works This metric divides your total advertising spend by the number of times visitors selected a shipping method during checkout, as tracked by the Upstack pixel. It provides visibility into the cost efficiency of moving shoppers through the shipping selection stage—a critical mid-funnel checkpoint before payment. *** ## When to Use | Scenario | Action | | ------------------------ | ---------------------------------------------------------------------------- | | Checkout funnel analysis | Compare against other checkout stage costs to identify drop-off points | | Shipping UX optimization | High cost per shipping selection may indicate UX friction or limited options | | Campaign optimization | Use as a leading indicator before purchase completion | | Seasonal planning | Track changes during peak periods when shipping expectations shift | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ------------------------------------------------- | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Final conversion outcome after shipping selection | | [Cost per All Purchase](/reference/metrics/funnel/conversions/cost-per-all-purchase) | Downstream cost efficiency at purchase completion | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Overall store conversion efficiency | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Sign Up: Ad Spend Efficiency for Sign Up Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-sign-up Track the average cost to acquire a sign up through your advertising. Calculate ad spend efficiency for sign up conversions tracked by Upstack. Cost per Sign Up measures the average advertising spend required to generate one sign up event tracked by the Upstack pixel. ## Formula **Cost per Sign Up** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Sign Up Events** ### Formula Components | Metric | Definition | | ------------------ | --------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | **Sign Up Events** | Total sign up events tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$2,500** on advertising in April and tracked **500 sign ups**: | Week | Spend | Sign Ups | Cost per Sign Up | | --------- | ----------- | -------- | ---------------- | | Week 1 | \$600 | 150 | \$4.00 | | Week 2 | \$650 | 130 | \$5.00 | | Week 3 | \$625 | 125 | \$5.00 | | Week 4 | \$625 | 95 | \$6.58 | | **Total** | **\$2,500** | **500** | **\$5.00** | *** ## How It Works Cost per Sign Up divides your total advertising spend by the number of sign up events captured by the Upstack pixel. This efficiency metric helps you understand how much you're paying to acquire each new sign up through your paid channels. *** ## When to Use | Scenario | Action | | ----------------------------- | ---------------------------------------------------------------------- | | Evaluating lead gen campaigns | Compare cost per sign up across campaigns to find best performers | | Setting acquisition targets | Use historical cost per sign up to forecast sign up volume from budget | | Optimizing ad creative | Identify which creatives drive lower cost sign ups | | Budget allocation | Shift spend toward channels with lower cost per sign up | *** ## Related Metrics | Metric | Relationship | | ------------------ | -------------------------------------------------------- | | **Sign Up Events** | Denominator — total sign ups tracked by Upstack | | **Channel Spend** | Numerator — advertising cost driving sign ups | | **Sign Up Value** | Measures total value of sign ups; pair with cost for ROI | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Signup Completed: Track Registration Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-signup-completed Track the average ad spend per completed signup. Calculate your cost per acquired registered user. Cost per Signup Completed measures the average advertising spend required to generate one successful registration. ## Formula **Cost per Signup Completed** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Signup Completed Events** ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | --------------------------------------- | | **Channel Spend** | Total advertising spend across channels | | [**Signup Completed**](/reference/metrics/funnel/conversions/signup-completed) | Total completed signup events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your SaaS spent **\$15,000** on ads and generated **300 completed signups** this month. | Channel | Spend | Signups Completed | Cost per Signup | | ---------- | ------------ | ----------------- | --------------- | | Google Ads | \$8,000 | 140 | \$57.14 | | LinkedIn | \$5,000 | 100 | \$50.00 | | Facebook | \$2,000 | 60 | \$33.33 | | **Total** | **\$15,000** | **300** | **\$50.00** | *** ## How It Works This metric divides your total channel spend by the number of completed signups. It measures your customer acquisition cost at the registration stage, helping you understand how efficiently you're converting ad spend into new registered users. *** ## When to Use | Scenario | Action | | -------------------- | ------------------------------------- | | CAC calculation | Measure cost per registered user | | Channel optimization | Identify most efficient channels | | Budget planning | Project costs for growth targets | | ROI analysis | Calculate return on signup investment | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | -------------------- | | [Signup Completed](/reference/metrics/funnel/conversions/signup-completed) | Count of completions | | [Cost per Signup Started](/reference/metrics/funnel/conversions/cost-per-signup-started) | Top-funnel cost | | [Signup Completed Value](/reference/metrics/funnel/conversions/signup-completed-value) | Value of signups | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Signup Started: Track Registration Intent Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-signup-started Track the average ad spend per signup started event. Calculate how much you spend to generate each registration initiation. Cost per Signup Started measures the average advertising spend required to generate one signup initiation event. ## Formula **Cost per Signup Started** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Signup Started Events** ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | --------------------------------------- | | **Channel Spend** | Total advertising spend across channels | | [**Signup Started**](/reference/metrics/funnel/conversions/signup-started) | Total signup initiation events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your B2B SaaS spent **\$8,000** on ads and generated **400 signup started** events this month. | Channel | Spend | Signups Started | Cost per Signup Started | | ---------- | ----------- | --------------- | ----------------------- | | Google Ads | \$4,000 | 180 | \$22.22 | | LinkedIn | \$3,000 | 150 | \$20.00 | | Facebook | \$1,000 | 70 | \$14.29 | | **Total** | **\$8,000** | **400** | **\$20.00** | *** ## How It Works This metric divides your total channel spend by the number of signup started events. It measures the cost of generating registration intent, helping you understand top-of-funnel acquisition efficiency before accounting for signup completion rates. *** ## When to Use | Scenario | Action | | --------------------- | ---------------------------------------- | | Top-funnel efficiency | Measure cost to generate signup intent | | Channel comparison | Identify best channels for signup intent | | Budget allocation | Optimize spend across channels | | Funnel economics | Calculate full funnel acquisition cost | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | --------------------------- | | [Signup Started](/reference/metrics/funnel/conversions/signup-started) | Count of signup initiations | | [Cost per Signup Completed](/reference/metrics/funnel/conversions/cost-per-signup-completed) | Cost for completed signups | | [Signup Started Value](/reference/metrics/funnel/conversions/signup-started-value) | Value of signup initiations | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Submit Application: Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-submit-application Track cost per submit application event. Measure acquisition efficiency for application-based conversion funnels using Upstack pixel tracking. Cost per Submit Application measures the average ad spend required to generate one application submission tracked by the Upstack pixel. ## Formula **Cost per Submit Application** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Submit Application Events**](/reference/metrics/advertising/meta-ads/submit-application-events) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | [**Submit Application Events**](/reference/metrics/funnel/conversions/submit-application) | Total application submissions tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your loan application funnel received **847 submit application events** last month. Your total ad spend across Meta and Google was **\$12,500**. | Metric | Value | | ------------------------------- | ----------- | | Total Channel Spend | \$12,500 | | Submit Application Events | 847 | | **Cost per Submit Application** | **\$14.76** | *** ## How It Works This metric divides your total advertising spend by the number of application submissions tracked by the Upstack pixel. It provides a unified cost efficiency view across all ad platforms, helping you understand the true acquisition cost for application-based conversion funnels. *** ## When to Use | Scenario | Action | | ------------------------------ | -------------------------------------------------------------------------- | | Evaluating campaign efficiency | Compare cost per application across campaigns to identify top performers | | Budget allocation decisions | Shift spend toward channels with lower cost per application | | Funnel optimization | High cost per application may indicate targeting or landing page issues | | Benchmarking over time | Track trends to ensure acquisition efficiency improves as campaigns mature | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ---------------------------------------------------- | | [Submit Application](/reference/metrics/funnel/conversions/submit-application) | The event count used in the denominator | | [Submit Application Value](/reference/metrics/funnel/conversions/submit-application-value) | Total monetary value of application submissions | | [Complete Registration](/reference/metrics/funnel/conversions/complete-registration) | Related conversion event for registration funnels | | [Lead](/reference/metrics/funnel/conversions/lead) | Related conversion event for lead generation funnels | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Subscribe: Measure Subscriber Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-subscribe Calculate cost per subscribe event to measure how efficiently your ad spend acquires newsletter subscribers. Track subscriber acquisition efficiency with formula and tips. Average ad spend per subscribe event tracked by the Upstack pixel. ## Formula **Cost per Subscribe** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Subscribes**](/reference/metrics/funnel/conversions/subscribe) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ------------------------------------------------------------------------ | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across connected ad platforms | | [**Subscribes**](/reference/metrics/funnel/conversions/subscribe) | Total subscribe events (newsletter signups) tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$3,000** on ads last week and generated **1,200 newsletter subscriptions**: | Channel | Spend | Subscribes | Cost per Subscribe | | --------- | ----------- | ---------- | ------------------ | | Meta | \$2,000 | 800 | \$2.50 | | Google | \$700 | 280 | \$2.50 | | TikTok | \$300 | 120 | \$2.50 | | **Total** | **\$3,000** | **1,200** | **\$2.50** | *** ## How It Works Cost per Subscribe divides your total advertising spend by the number of subscribe events captured by the Upstack pixel. These events fire when visitors sign up for newsletters, mailing lists, or SMS subscriptions. Lower values indicate more efficient subscriber acquisition—you're paying less for each new email or SMS contact. *** ## When to Use | Scenario | Action | | ------------------------------ | --------------------------------------------------------------------- | | Email list growth budgeting | Estimate spend needed to hit subscriber acquisition targets | | Channel efficiency comparison | Identify which platforms acquire subscribers most cost-effectively | | Lead nurturing funnel analysis | Compare subscriber acquisition cost against eventual conversion value | | Campaign optimization | Reallocate budget toward channels with lower cost per subscribe | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | --------------------------------------------------- | | [Subscribe](/reference/metrics/funnel/conversions/subscribe) | Denominator—total subscriber count | | [Subscribe Value](/reference/metrics/funnel/conversions/subscribe-value) | Total monetary value attributed to subscribe events | | [Cost per Lead](/reference/metrics/funnel/conversions/cost-per-lead) | Similar efficiency metric for lead form submissions | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Trial Activated: Track Activation Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-trial-activated Track the average ad spend per trial activation. Calculate your cost to acquire activated trial users. Cost per Trial Activated measures the average advertising spend required to generate one activated trial user. ## Formula **Cost per Trial Activated** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Trial Activated Events** ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | --------------------------------------- | | **Channel Spend** | Total advertising spend across channels | | [**Trial Activated**](/reference/metrics/funnel/conversions/trial-activated) | Total trial activation events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your SaaS spent **\$18,000** on ads and generated **300 activated trials** this month. | Channel | Spend | Activations | Cost per Activation | | ---------- | ------------ | ----------- | ------------------- | | Google Ads | \$9,000 | 135 | \$66.67 | | Facebook | \$6,000 | 110 | \$54.55 | | LinkedIn | \$3,000 | 55 | \$54.55 | | **Total** | **\$18,000** | **300** | **\$60.00** | *** ## How It Works This metric divides your total channel spend by the number of activated trial users. Activated users convert at much higher rates than non-activated users, making this a more predictive CAC metric than cost per trial start alone. *** ## When to Use | Scenario | Action | | ------------------- | -------------------------------------------- | | True CAC proxy | More accurate than cost per trial start | | Channel quality | Compare activation rates by source | | Budget optimization | Prioritize channels with low activation cost | | LTV/CAC analysis | Pair with activation-to-paid conversion | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | -------------------- | | [Trial Activated](/reference/metrics/funnel/conversions/trial-activated) | Count of activations | | [Cost per Trial Started](/reference/metrics/funnel/conversions/cost-per-trial-started) | Top-funnel cost | | [Trial Activated Value](/reference/metrics/funnel/conversions/trial-activated-value) | Value of activations | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Trial Started: Track Trial Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-trial-started Track the average ad spend per trial start. Calculate your cost to acquire trial users. Cost per Trial Started measures the average advertising spend required to generate one free trial start. ## Formula **Cost per Trial Started** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Trial Started Events** ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------ | --------------------------------------- | | **Channel Spend** | Total advertising spend across channels | | [**Trial Started**](/reference/metrics/funnel/conversions/trial-started) | Total trial start events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your SaaS spent **\$20,000** on ads and generated **500 trial starts** this month. | Channel | Spend | Trials Started | Cost per Trial | | ---------- | ------------ | -------------- | -------------- | | Google Ads | \$10,000 | 220 | \$45.45 | | Facebook | \$6,000 | 180 | \$33.33 | | LinkedIn | \$4,000 | 100 | \$40.00 | | **Total** | **\$20,000** | **500** | **\$40.00** | *** ## How It Works This metric divides your total channel spend by the number of trial starts. For product-led growth companies, this is a key efficiency metric that feeds into your overall customer acquisition cost when combined with trial-to-paid conversion rates. *** ## When to Use | Scenario | Action | | -------------------- | ----------------------------------------------- | | CAC calculation | Calculate full acquisition cost with conversion | | Channel optimization | Find most efficient trial sources | | PLG efficiency | Measure product-led acquisition cost | | Budget planning | Project spend for trial targets | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | --------------------- | | [Trial Started](/reference/metrics/funnel/conversions/trial-started) | Count of trial starts | | [Trial Started Value](/reference/metrics/funnel/conversions/trial-started-value) | Value of trial starts | | [Cost per Trial Converted](/reference/metrics/funnel/conversions/trial-converted-cost) | Full conversion cost | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Upsell Purchase: Post-Purchase Conversion Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-upsell-purchase Track the cost to generate post-purchase upsells in your Shopify store. Calculate Channel Spend divided by Upsell Purchases to optimize upsell campaigns. Average ad spend required to generate one post-purchase upsell completion tracked by the Upstack pixel. ## Formula **Cost per Upsell Purchase** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Upsell Purchases**](/reference/metrics/funnel/conversions/upsell-purchases) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all channels | | **Upsell Purchases** | Count of completed post-purchase upsell transactions tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$15,000** on advertising and generated **375 upsell purchases** this month: | Channel | Spend | Upsell Purchases | Cost/Upsell Purchase | | ---------- | ------------ | ---------------- | -------------------- | | Meta Ads | \$9,000 | 270 | \$33.33 | | Google Ads | \$4,500 | 90 | \$50.00 | | TikTok Ads | \$1,500 | 15 | \$100.00 | | **Total** | **\$15,000** | **375** | **\$40.00** | *** ## How It Works Cost per Upsell Purchase measures how efficiently your advertising drives post-purchase upsell completions. These are additional purchases customers make after their initial checkout—typically through thank-you page offers or post-purchase flows. Lower values indicate more cost-effective upsell acquisition from your Shopify store traffic. *** ## When to Use | Scenario | Action | | ----------------------------------- | ---------------------------------------------------------------- | | Evaluating upsell ROI | Compare cost per upsell against average upsell value | | Optimizing post-purchase flows | Identify which traffic sources convert best on upsells | | Budget allocation | Shift spend toward channels with lower upsell costs | | Comparing to initial purchase costs | Benchmark against cost per conversion to gauge upsell efficiency | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ---------------------------------------------------- | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Primary purchase events (upsells are secondary) | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total revenue from all conversions including upsells | | [Average Conversion Value](/reference/metrics/funnel/conversions/average-conversion-value) | Average order value across all conversion types | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Webinar Registered: Track Registration Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/cost-per-webinar-registered Track the average ad spend per webinar registration. Calculate your cost per engaged prospect. Cost per Webinar Registered measures the average advertising spend required to generate one webinar registration. ## Formula **Cost per Webinar Registered** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Webinar Registered Events** ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------- | --------------------------------------- | | **Channel Spend** | Total advertising spend across channels | | [**Webinar Registered**](/reference/metrics/funnel/conversions/webinar-registered) | Total webinar registration events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your B2B company spent **\$9,000** on ads and generated **450 webinar registrations** this month. | Channel | Spend | Registrations | Cost per Registration | | ---------- | ----------- | ------------- | --------------------- | | LinkedIn | \$5,000 | 200 | \$25.00 | | Google Ads | \$3,000 | 180 | \$16.67 | | Facebook | \$1,000 | 70 | \$14.29 | | **Total** | **\$9,000** | **450** | **\$20.00** | *** ## How It Works This metric divides your total channel spend by the number of webinar registrations. It measures the cost of acquiring engaged, high-intent prospects through webinar marketing, helping you optimize your event marketing budget. *** ## When to Use | Scenario | Action | | ------------------ | ------------------------------------------- | | Event ROI | Calculate cost per webinar registrant | | Channel efficiency | Compare registration costs across platforms | | Budget planning | Project costs for webinar campaigns | | Topic optimization | Compare costs by webinar type | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ----------------------------- | | [Webinar Registered](/reference/metrics/funnel/conversions/webinar-registered) | Count of registrations | | [Webinar Registered Value](/reference/metrics/funnel/conversions/webinar-registered-value) | Value of registrations | | [Cost per Lead](/reference/metrics/funnel/conversions/cost-per-lead) | Overall lead acquisition cost | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Demo Requested: Track Demo Requests Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/demo-requested Track when users request product demos. Measure lead generation for sales-led motions. Demo Requested counts the number of times users submit demo request forms. ## Formula **Demo Requested** = **COUNT** ( demo\_requested events ) ### Formula Components | Metric | Definition | | -------------------------- | ----------------------------------------------- | | **demo\_requested events** | Events fired when a user submits a demo request | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your marketing site tracked **234 demo\_requested events** in January. | Metric | Value | Notes | | ----------------- | ------ | -------------------------- | | Site Visitors | 12,500 | Total visitors | | Demo Requested | 234 | Demo form submissions | | Demo Request Rate | 1.9% | Visitor-to-demo conversion | *** ## How It Works The Upstack pixel tracks `demo_requested` events when users submit a demo request form. This is a key lead generation metric for sales-led SaaS businesses. *** ## When to Use | Scenario | Action | | ------------------------- | --------------------------------------- | | Lead generation | Track demo request volume | | Campaign attribution | Identify channels driving demo requests | | Sales pipeline | Forecast sales opportunities | | Landing page optimization | Compare demo rates across pages | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ---------------------- | | [Demo Requested Cost](/reference/metrics/funnel/conversions/demo-requested-cost) | Cost per demo request | | [Demo Requested Value](/reference/metrics/funnel/conversions/demo-requested-value) | Value of demo requests | | [Trial Started](/reference/metrics/funnel/conversions/trial-started) | PLG alternative | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Demo Requested Cost: Ad Spend per Demo Request Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/demo-requested-cost Calculate advertising cost per demo request. Measure cost per qualified lead. Demo Requested Cost measures how much you spend on advertising for each demo request. ## Formula **Demo Requested Cost** = **Ad Spend** ÷ [**Demo Requested**](/reference/metrics/funnel/conversions/demo-requested) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**Demo Requested**](/reference/metrics/funnel/conversions/demo-requested) | Count of demo requests | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$5,000** on LinkedIn ads in January and drove **94 demo requests**. | Metric | Value | Notes | | ------------------- | ------- | ------------------------ | | Ad Spend | \$5,000 | Monthly advertising cost | | Demo Requested | 94 | Demo submissions | | Demo Requested Cost | \$53.19 | Cost per demo lead | *** ## How It Works This metric divides your total ad spend by the number of demo requests. It represents your cost per lead (CPL) for the sales-led funnel. *** ## When to Use | Scenario | Action | | ---------------------- | ---------------------------------------- | | Lead cost optimization | Track cost per demo lead | | Channel comparison | Compare CPL across ad platforms | | Budget allocation | Allocate spend to efficient lead sources | | Sales efficiency | Factor into customer acquisition cost | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ----------------------------------- | | [Demo Requested](/reference/metrics/funnel/conversions/demo-requested) | The denominator in this calculation | | [Demo Requested Value](/reference/metrics/funnel/conversions/demo-requested-value) | Value of demo requests | | [Trial Started Cost](/reference/metrics/funnel/conversions/trial-started-cost) | PLG cost comparison | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Demo Requested Value: Pipeline Value from Demos Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/demo-requested-value Track the monetary value attributed to demo requests. Measure expected pipeline value. Demo Requested Value totals the monetary value attributed to demo requests. ## Formula **Demo Requested Value** = **SUM** ( value ) **FROM** [**demo\_requested**](/reference/metrics/funnel/conversions/demo-requested) events ### Formula Components | Metric | Definition | | -------------------------- | -------------------------------------------------- | | **value** | The monetary value attributed to each demo request | | **demo\_requested events** | Events fired when users request demos | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example You had **94 demo requests** in January with an average attributed value of **\$500**. | Metric | Value | Notes | | -------------------- | -------- | ----------------------- | | Demo Requested | 94 | Demo submissions | | Avg Demo Value | \$500 | Expected value per demo | | Demo Requested Value | \$47,000 | Total pipeline value | *** ## How It Works This metric sums the value attribute from all demo\_requested events. The value typically represents expected deal value based on historical demo-to-close rates. *** ## When to Use | Scenario | Action | | -------------------- | ----------------------------------- | | Pipeline forecasting | Project revenue from demo volume | | ROAS calculation | Calculate return on lead generation | | Channel comparison | Compare pipeline value by source | | Sales planning | Forecast close potential | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ---------------------- | | [Demo Requested](/reference/metrics/funnel/conversions/demo-requested) | Count of demo requests | | [Demo Requested Cost](/reference/metrics/funnel/conversions/demo-requested-cost) | Cost per demo | | [Trial Started Value](/reference/metrics/funnel/conversions/trial-started-value) | PLG value comparison | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Donate: Track Charitable Donation Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/donate Track total donate events on your site. Count charitable donations captured by the Upstack Pixel to measure fundraising conversion volume and campaign effectiveness. Donate counts the total number of charitable donation events tracked by the Upstack Pixel on your site. ## Formula **Donate** = **COUNT** ( [**Donate Events**](/reference/metrics/advertising/meta-ads/donate-events) ) ### Formula Components | Metric | Definition | | ----------------- | ---------------------------------------------------------------------------------- | | **Donate Events** | Each completed donation action that fires a donate event through the Upstack Pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your nonprofit tracked **892 donations** across attribution channels in January. | Channel | Donates | % of Total | | ---------- | ------- | ---------- | | Meta Ads | 423 | 47.4% | | Google Ads | 267 | 29.9% | | Organic | 134 | 15.0% | | Direct | 68 | 7.6% | | **Total** | **892** | **100%** | *** ## How It Works Donate counts every donate event tracked by the Upstack Pixel. When a visitor completes a charitable donation on your site, the pixel fires a donate event. This metric represents your total donation count as seen by the tracking pixel, giving you accurate conversion volume for fundraising attribution analysis. *** ## When to Use | Scenario | Action | | ------------------------------------- | -------------------------------------------------------- | | Measuring donation volume | Track total donations across channels | | Evaluating fundraising campaigns | Compare donation counts by attribution source | | Calculating donation conversion rates | Use as numerator for donation-focused conversion metrics | | Monitoring fundraising trends | Track daily, weekly, or monthly donation patterns | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ----------------------------------------------- | | [Cost per Donate](/reference/metrics/funnel/conversions/cost-per-donate) | Ad spend efficiency for acquiring each donation | | [Lead](/reference/metrics/funnel/conversions/lead) | Similar event-based conversion metric | | [Subscribe](/reference/metrics/funnel/conversions/subscribe) | Similar event-based conversion metric | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Events Value: Total Monetary Value of Tracked Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/events-value Track the total monetary value of all events captured by the Upstack pixel. Monitor conversion funnel value and optimize your e-commerce performance. Events Value is the total monetary value across all events tracked by the Upstack pixel. ## Formula **Events Value** = **SUM** ( Event Value ) ### Formula Components | Metric | Definition | | --------------- | ----------------------------------------------------- | | **Event Value** | The monetary value associated with each tracked event | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store tracked **3,247 events** with associated values during a promotional campaign. | Time Period | Events | Events Value | | ------------- | ------ | ------------ | | Campaign Week | 3,247 | \$42,580.00 | | Previous Week | 2,891 | \$36,120.00 | | Difference | +356 | +\$6,460.00 | *** ## How It Works The Upstack pixel captures events across your site, including add-to-carts, checkouts, purchases, and custom events. Each event may include an associated monetary value. Events Value sums all these values to give you a complete picture of the monetary activity flowing through your conversion funnel. *** ## When to Use | Scenario | Action | | ---------------------- | ------------------------------------------------------------------ | | Measuring funnel value | Track total monetary value across all conversion events | | Campaign performance | Compare Events Value across different traffic sources or campaigns | | Event value analysis | Identify which event types contribute most to total value | | Trend monitoring | Monitor changes in aggregate event value over time | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | --------------------------------------------------------------------------------- | | [Total Events](/reference/metrics/funnel/engagement/total-events) | Count of all tracked events — divide Events Value by this for average event value | | [Revenue](/reference/metrics/funnel/conversions/revenue) | Total tracked revenue from purchase events specifically | | [Purchases Value](/reference/metrics/funnel/conversions/purchases-value) | Total value from purchase events only | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Fulfillment: Track Order Fulfillment Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/fulfillment Track fulfillment events for your Shopify store. Monitor when orders are shipped and fulfilled to understand delivery performance. Fulfillment counts the number of orders that have been fulfilled (shipped) in your Shopify store. ## Formula **Fulfillment** = **COUNT** ( Fulfillment Events ) ### Formula Components | Metric | Definition | | ---------------------- | ------------------------------------------------- | | **Fulfillment Events** | Individual order fulfillment records from Shopify | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Count | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store received **1,247 orders** in January, and **1,189 fulfillments** were recorded during the same period. | Period | Orders | Fulfillments | Fulfillment Rate | | ------------- | --------- | ------------ | ---------------- | | January 1–15 | 623 | 598 | 96.0% | | January 16–31 | 624 | 591 | 94.7% | | **Total** | **1,247** | **1,189** | **95.3%** | *** ## How It Works Fulfillment events are captured when Shopify marks an order as fulfilled. This typically occurs when a shipping label is created or when the order is handed off to a carrier. Upstack syncs these fulfillment events in real-time from your Shopify store. *** ## When to Use | Scenario | Action | | ----------------------------- | -------------------------------------------------- | | Tracking shipping performance | Monitor fulfillments vs orders to identify backlog | | Analyzing fulfillment speed | Compare fulfillment counts across time periods | | Auditing warehouse operations | Spot days with low fulfillment counts | | Reporting delivery metrics | Include in operational dashboards | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------- | -------------------------------------------- | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Orders that fulfillments are associated with | | [Total Orders](/reference/metrics/orders/counts/orders) | All orders including unfulfilled | | [Refunds](/reference/metrics/orders/adjustments/refund-amount) | Post-fulfillment returns | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Fulfillment Value: Total Value of Fulfilled Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/fulfillment-value Track the total monetary value of fulfilled orders from your Shopify store. Measure fulfillment performance and revenue delivery. Fulfillment Value measures the total monetary value of orders that have been fulfilled and shipped to customers. ## Formula **Fulfillment Value** = **SUM** ( Order Value ) **WHERE** status = fulfilled ### Formula Components | Metric | Definition | | ------------------------------------------------------------------ | -------------------------------------------------------- | | **Order Value** | The total value of each order at the time of fulfillment | | [**status = fulfilled**](/data-dictionary/measures-and-dimensions) | Filters to orders that have been fulfilled and shipped | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store fulfilled 847 orders in February, totaling **\$127,450** in fulfillment value. | Week | Orders Fulfilled | Fulfillment Value | Avg. Order Value | | ------ | ---------------- | ----------------- | ---------------- | | Week 1 | 198 | \$29,700 | \$150.00 | | Week 2 | 215 | \$32,250 | \$150.00 | | Week 3 | 221 | \$33,150 | \$150.00 | | Week 4 | 213 | \$32,350 | \$151.88 | *** ## How It Works Fulfillment Value is calculated by summing the order value of all orders that have been marked as fulfilled in your Shopify store. The fulfillment event is triggered when an order is shipped or marked complete, capturing the actual revenue delivered to customers. This metric syncs with Shopify fulfillment data in real-time. *** ## When to Use | Scenario | Action | | ------------------------------- | -------------------------------------------------------------------------- | | Tracking revenue delivery | Compare fulfillment value to purchase value to identify fulfillment delays | | Measuring warehouse performance | Monitor daily fulfillment value to assess operational capacity | | Forecasting cash flow | Use fulfillment trends to predict when revenue converts to delivered goods | | Analyzing fulfillment lag | Compare purchase date values vs. fulfillment date values | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | --------------------------------------------------- | | [Purchases Value](/reference/metrics/funnel/conversions/purchases-value) | Total value at time of purchase, before fulfillment | | [Order Fulfilled](/reference/metrics/funnel/conversions/fulfillment) | Count of fulfilled orders | | [Total Orders](/reference/metrics/orders/counts/orders) | All Shopify orders regardless of fulfillment status | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Gross Profit: Attributed Revenue Minus COGS Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/gross-profit Track attributed gross profit from your Shopify store. Measure the profit remaining after subtracting cost of goods sold from net revenue. Gross Profit measures the revenue remaining after subtracting the cost of goods sold—your fundamental product profitability before operating expenses. ## Formula **Gross Profit** = [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) − [**COGS**](/reference/metrics/orders/cogs/cogs) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------- | --------------------------------------------- | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds | | [**COGS**](/reference/metrics/orders/cogs/cogs) | Cost of goods sold from product variant costs | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your Shopify store generated **\$125,000** in net revenue in January with **\$47,500** in product costs: | Component | Amount | Calculation | | ---------------- | ------------ | --------------------------- | | Net Revenue | \$125,000 | After discounts and refunds | | COGS | −\$47,500 | Product variant costs | | **Gross Profit** | **\$77,500** | Revenue retained | *** ## How It Works Gross Profit subtracts your cost of goods sold from net revenue, showing how much money remains from each sale before accounting for operating expenses like marketing, fulfillment, and overhead. This metric is attributed through the Upstack Pixel, allowing you to measure gross profit by channel, campaign, or traffic source. *** ## When to Use | Scenario | Action | | ------------------------------- | ---------------------------------------------------------------- | | Measuring product profitability | Compare Gross Profit across product lines to identify winners | | Channel performance analysis | Track Gross Profit by traffic source to find profitable channels | | Campaign efficiency | Evaluate whether campaigns generate profit after product costs | | Pricing decisions | Use Gross Profit margins to inform price adjustments | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | ----------------------------------------------------- | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue component (Gross Profit = Net Revenue − COGS) | | [COGS](/reference/metrics/orders/cogs/cogs) | Cost component subtracted from revenue | | [CM1](/reference/metrics/orders/contribution-margin/cm1) | First contribution margin (similar concept) | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total value of attributed conversions | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # High AOV Purchase Value: Track Premium Order Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/high-aov-purchase-value Track high AOV purchase value on your Shopify store. Measure revenue from above-average orders to optimize campaigns for premium conversions. High AOV Purchase Value is the total monetary value of all purchase events that exceed your Shopify store's average order value threshold, tracked by the Upstack pixel. ## Formula **High AOV Purchase Value** = **SUM** ( [**Purchase Value**](/reference/metrics/funnel/conversions/purchases-value) ) **WHERE** purchase\_type = high\_aov\_purchase ### Formula Components | Metric | Definition | | ---------------------------------------- | ----------------------------------------------------------------- | | **Purchase Value** | Monetary value of individual purchase events tracked by the pixel | | **purchase\_type = high\_aov\_purchase** | Filters to purchases exceeding your store's AOV threshold | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store tracked **\$44,424** in high AOV purchase value from **312 above-threshold orders** this month: | Week | High AOV Value | High AOV Purchases | Avg Value | | ------ | -------------- | ------------------ | --------- | | Week 1 | \$11,360 | 80 | \$142.00 | | Week 2 | \$10,366 | 73 | \$142.00 | | Week 3 | \$11,786 | 83 | \$142.00 | | Week 4 | \$10,912 | 76 | \$143.58 | *** ## How It Works The Upstack pixel tracks every purchase event on your Shopify store and classifies it based on order value relative to your store's AOV baseline. High AOV Purchase Value sums the monetary value of all purchases that exceed this threshold, helping you quantify revenue from premium buyers and measure the impact of strategies designed to drive higher-value conversions. *** ## When to Use | Scenario | Action | | ---------------------------------- | ------------------------------------------------------------------------------------ | | Measuring premium customer revenue | Track total revenue from above-average orders to assess high-value customer impact | | Evaluating product bundling ROI | Measure whether bundles increase total high AOV revenue, not just count | | Assessing campaign profitability | Compare high AOV purchase value against ad spend for true ROI on premium conversions | | Forecasting revenue segments | Project revenue from different customer value tiers for planning | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | | [High AOV Purchases](/reference/metrics/funnel/conversions/high-aov-purchases) | Count of above-threshold purchases that contribute to this value | | [Cost per High AOV Purchase](/reference/metrics/funnel/conversions/cost-per-high-aov-purchase) | Acquisition cost to evaluate against this revenue | | [Average Conversion Value](/reference/metrics/funnel/conversions/average-conversion-value) | The threshold that defines high AOV classification | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # High AOV Purchases: Track Above-Average Order Value Conversions Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/high-aov-purchases Track high average order value purchases for your Shopify store. Identify premium buyers and optimize campaigns for higher-value conversions. High AOV Purchases counts purchase events where the order value exceeds your Shopify store's average order value threshold. ## Formula **High AOV Purchases** = **COUNT** ( [**Purchases**](/reference/metrics/funnel/conversions/purchases) ) **WHERE** order\_value > [**average\_order\_value**](/reference/metrics/orders/aov) ### Formula Components | Metric | Definition | | ---------------------------------------- | --------------------------------------------------------------------------- | | **Purchases** | All purchase events tracked by the Upstack pixel from your Shopify checkout | | **order\_value > average\_order\_value** | Filters to orders exceeding your store's calculated average order value | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store recorded **312 high AOV purchases** in February with an average order value of \$85: | Order Value Segment | Purchases | % of Total | Avg Order Value | | -------------------- | --------- | ---------- | --------------- | | High AOV (>\$85) | 312 | 28% | \$142 | | Standard AOV (≤\$85) | 788 | 72% | \$62 | | **Total** | **1,100** | **100%** | **\$85** | *** ## How It Works The Upstack pixel tracks every purchase event on your Shopify store and calculates whether each order exceeds your store's average order value. High AOV purchases are counted when the order value surpasses this threshold, helping you identify premium buyers and higher-value conversion patterns across your marketing channels. *** ## When to Use | Scenario | Action | | ----------------------------------------- | ---------------------------------------------------------------- | | Optimizing for premium customers | Target campaigns to drive more high AOV conversions | | Evaluating product bundling effectiveness | Track whether bundles increase high AOV purchase volume | | Assessing channel quality | Compare high AOV purchase rates across traffic sources | | Building value-based audiences | Identify and retarget customers who make above-average purchases | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ------------------------------------------ | | [All Purchases](/reference/metrics/funnel/conversions/all-purchases) | Total purchases including all order values | | [Purchases Value](/reference/metrics/funnel/conversions/purchases-value) | Total revenue from all purchase events | | [Average Conversion Value](/reference/metrics/funnel/conversions/average-conversion-value) | Average order value across all conversions | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Initiate Checkout to Purchase Rate: Measure Checkout Completion Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/initiate-checkout-to-purchase-rate Track the percentage of initiated checkouts that result in a purchase on your Shopify store. Identify checkout friction and payment issues affecting conversions. Initiate Checkout to Purchase Rate measures the percentage of checkout initiations that complete as purchases on your Shopify store. ## Formula **Initiate Checkout to Purchase Rate** = ( [**Purchases**](/reference/metrics/funnel/conversions/all-purchases) ÷ [**Initiate Checkouts**](/reference/metrics/advertising/blended/initiate-checkouts) ) × 100 ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | | [**Purchases**](/reference/metrics/funnel/conversions/purchases) | Total purchase events tracked by the Upstack Pixel from completed Shopify orders | | [**Initiate Checkouts**](/reference/metrics/funnel/engagement/initiate-checkouts) | Number of times visitors begin the checkout process by loading the checkout page | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store had **2,450 checkout initiations** and **1,568 purchases** this month: | Metric | Value | | ----------------------- | --------- | | Initiate Checkouts | 2,450 | | Purchases | 1,568 | | **IC to Purchase Rate** | **64.0%** | By channel: | Channel | Initiate Checkouts | Purchases | IC to Purchase Rate | | ---------- | ------------------ | --------- | ------------------- | | Meta Ads | 1,200 | 816 | 68.0% | | Google Ads | 800 | 488 | 61.0% | | Organic | 450 | 264 | 58.7% | *** ## How It Works Upstack tracks checkout initiations when visitors load your Shopify checkout page and purchases when orders complete. The IC to Purchase Rate divides purchases by initiated checkouts, expressed as a percentage. Low rates often indicate checkout friction—payment issues, shipping cost surprises, or lengthy checkout forms. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------------- | | Checkout abandonment is high | Audit payment options, shipping costs, and checkout form fields | | Comparing traffic source quality | Identify which channels drive visitors who complete checkout | | A/B testing checkout changes | Measure impact of checkout optimizations on completion rate | | Diagnosing conversion drops | Distinguish between cart-to-checkout vs checkout-to-purchase issues | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Denominator in this calculation | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Numerator in this calculation | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Measures overall funnel from session to purchase | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Lapsed Purchase Value: Win-Back Customer Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/lapsed-purchase-value Track lapsed purchase value for your Shopify store. Measure win-back revenue from dormant customers who returned to purchase after extended inactivity. Lapsed Purchase Value measures the total monetary value of purchase events from customers who returned after an extended period of inactivity. ## Formula **Lapsed Purchase Value** = **SUM** ( [**Purchase Value**](/reference/metrics/funnel/conversions/purchases-value) ) **WHERE** customer\_type = lapsed\_customer ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | **Purchase Value** | Monetary value of individual purchase events tracked by the pixel | | [**customer\_type = lapsed\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to purchases from customers who have been inactive beyond the expected repurchase window | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store tracked **\$12,350** in lapsed purchase value last quarter from **85 win-back customers**: | Period | Lapsed Value | Lapsed Purchases | Avg Value | | ------- | ------------ | ---------------- | --------- | | Month 1 | \$3,850 | 26 | \$148.08 | | Month 2 | \$4,200 | 29 | \$144.83 | | Month 3 | \$4,300 | 30 | \$143.33 | *** ## How It Works The Upstack pixel tracks purchase events on your Shopify store and identifies lapsed customers as those who have purchased before but have been inactive beyond the typical repurchase window. Lapsed Purchase Value sums the monetary value of all purchase events where the customer has returned after this extended dormancy period. *** ## When to Use | Scenario | Action | | ------------------------------------- | ----------------------------------------------------------------- | | Measuring win-back ROI | Compare lapsed purchase value against reactivation campaign spend | | Evaluating dormant customer potential | Quantify revenue potential from inactive customer segments | | Optimizing reactivation timing | Track which dormancy windows yield highest value win-backs | | Assessing customer lifetime value | Include win-back revenue in holistic LTV calculations | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------- | | [Lapsed Purchases](/reference/metrics/funnel/conversions/lapsed-purchases) | Count of lapsed customer purchases (volume vs. value) | | [Returning Customer Purchase Value](/reference/metrics/funnel/conversions/returning-customer-purchase-value) | Broader segment — all repeat buyer revenue including lapsed | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total revenue from all attributed conversions | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Lapsed Purchases: Track Win-Back Customer Conversions Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/lapsed-purchases Track lapsed customer purchases for your Shopify store. Measure win-back conversions from customers who returned after extended inactivity. Lapsed Purchases counts purchase events from customers who returned to buy after an extended period of inactivity. ## Formula **Lapsed Purchases** = **COUNT** ( [**Purchases**](/reference/metrics/funnel/conversions/purchases) ) **WHERE** customer\_type = lapsed\_customer ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | | **Purchases** | All purchase events tracked by the Upstack pixel | | [**customer\_type = lapsed\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to orders from customers who have been inactive beyond the expected repurchase window | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store recorded **347 lapsed customer purchases** in Q1: | Customer Segment | Purchases | % of Returning | | ------------------- | --------- | -------------- | | Active Returning | 2,500 | 88% | | Lapsed Win-Back | 347 | 12% | | **Total Returning** | **2,847** | **100%** | *** ## How It Works The Upstack pixel identifies lapsed customers as those who have purchased before but have been inactive beyond the typical repurchase window for your Shopify store. When these customers return and complete a purchase, the event is tracked as a lapsed purchase. This metric helps you measure the effectiveness of win-back campaigns and understand customer reactivation patterns. *** ## When to Use | Scenario | Action | | ---------------------------------- | ------------------------------------------------------------------------------------- | | Evaluating win-back campaigns | Track lapsed purchases to measure reactivation campaign effectiveness | | Identifying dormant customer value | Quantify revenue potential from inactive customer segments | | Optimizing reactivation timing | Compare lapsed purchase volume across different inactivity windows | | Refining audience exclusions | Decide whether to advertise to or exclude customers past a certain dormancy threshold | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | [Returning Customer Purchases](/reference/metrics/funnel/conversions/returning-customer-purchases) | Broader segment — all repeat buyer conversions including lapsed | | [Total Purchases](/reference/metrics/funnel/conversions/all-purchases) | Sum of all customer purchase types | | [Lapsed Purchase Value](/reference/metrics/funnel/conversions/lapsed-purchase-value) | Total revenue from lapsed customer orders | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Leads: Track Lead Generation Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/lead Track total lead events captured by the Upstack Pixel. Count form submissions and lead generation conversions to measure marketing effectiveness. Leads counts the total number of lead generation events tracked by the Upstack Pixel on your site. ## Formula **Leads** = **COUNT** ( Lead Events ) ### Formula Components | Metric | Definition | | --------------- | -------------------------------------------------------------------------------- | | **Lead Events** | Each lead event tracked when a visitor submits a form or completes a lead action | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your site tracked **2,156 leads** across attribution channels in January. | Channel | Leads | % of Total | | ---------- | --------- | ---------- | | Meta Ads | 1,034 | 48.0% | | Google Ads | 583 | 27.0% | | Organic | 345 | 16.0% | | Direct | 194 | 9.0% | | **Total** | **2,156** | **100%** | *** ## How It Works Leads counts every lead event tracked by the Upstack Pixel. When a visitor completes a lead action on your site—such as submitting a contact form, signing up for a newsletter, or requesting a quote—the pixel fires a lead event. This metric represents your total lead volume as captured by the tracking pixel, enabling accurate attribution analysis for lead generation campaigns. *** ## When to Use | Scenario | Action | | ------------------------------- | -------------------------------------------------- | | Measuring lead volume | Track total leads across channels | | Evaluating campaign performance | Compare lead counts by attribution source | | Optimizing lead generation | Identify high-converting traffic sources | | Calculating cost per lead | Combine with spend metrics for efficiency analysis | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ----------------------------------- | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Downstream conversion from leads | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Top-of-funnel traffic driving leads | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Overall conversion efficiency | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Lead Value: Total Monetary Value of Leads Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/lead-value Track total monetary value of lead events captured by the Upstack Pixel. Measure lead generation revenue potential and optimize high-value lead sources. Lead Value measures the total monetary value assigned to lead events tracked by your Upstack Pixel. ## Formula **Lead Value** = **SUM** ( Lead Event Values ) ### Formula Components | Metric | Definition | | --------------------- | -------------------------------------------------------------------- | | **Lead Event Values** | Monetary value assigned to each lead event when tracked by the pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your marketing campaigns generated **\$125,400** in lead value from 2,090 leads this month: | Channel | Lead Value | Leads | Avg Value | | ---------- | ------------- | --------- | ----------- | | Meta Ads | \$68,970 | 1,149 | \$60.03 | | Google Ads | \$35,112 | 523 | \$67.14 | | Organic | \$21,318 | 418 | \$51.00 | | **Total** | **\$125,400** | **2,090** | **\$60.00** | *** ## How It Works Lead Value sums the monetary value assigned to each lead event captured by the Upstack Pixel. When tracking lead events, you can pass a `value` property representing the estimated worth of that lead. This allows you to differentiate between high-value and low-value leads, enabling revenue-focused optimization of lead generation campaigns. *** ## When to Use | Scenario | Action | | ---------------------- | ------------------------------------------------------------- | | Measuring lead quality | Compare lead value across channels to find high-value sources | | Calculating lead ROI | Divide Lead Value by ad spend to measure efficiency | | Prioritizing campaigns | Focus budget on campaigns generating highest lead value | | Forecasting revenue | Use lead value trends to project pipeline growth | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | -------------------------------------------------------------- | | [Leads](/reference/metrics/funnel/conversions/lead) | Count of lead events (Lead Value ÷ Leads = average lead value) | | [Cost per Lead](/reference/metrics/funnel/conversions/cost-per-lead) | Ad spend efficiency for lead generation | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Downstream revenue from converted leads | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Low AOV Purchase Value: Track Below-Threshold Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/low-aov-purchase-value Track low AOV purchase value on your Shopify store. Measure revenue from purchases below your average order value threshold to identify optimization opportunities. Low AOV Purchase Value is the total monetary value of all purchase events that fall below your store's average order value threshold, tracked by the Upstack pixel. ## Formula **Low AOV Purchase Value** = **SUM** ( [**Purchase Value**](/reference/metrics/funnel/conversions/purchases-value) ) **WHERE** purchase\_type = low\_aov\_purchase ### Formula Components | Metric | Definition | | --------------------------------------- | ----------------------------------------------------------------- | | **Purchase Value** | Monetary value of individual purchase events tracked by the pixel | | **purchase\_type = low\_aov\_purchase** | Filters to purchases below your store's AOV threshold | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store tracked **\$12,350** in low AOV purchase value from **247 below-threshold orders** this month: | Week | Low AOV Value | Low AOV Purchases | Avg Value | | ------ | ------------- | ----------------- | --------- | | Week 1 | \$3,100 | 62 | \$50.00 | | Week 2 | \$3,250 | 65 | \$50.00 | | Week 3 | \$2,850 | 57 | \$50.00 | | Week 4 | \$3,150 | 63 | \$50.00 | *** ## How It Works The Upstack pixel tracks every purchase event on your Shopify store and classifies it based on order value relative to your store's AOV baseline. Low AOV Purchase Value sums the monetary value of all purchases that fall below this threshold, helping you identify revenue from smaller orders that may benefit from upsell or bundling strategies. *** ## When to Use | Scenario | Action | | -------------------------------- | ----------------------------------------------------------------------------------- | | Identifying upsell opportunities | Target low AOV customers with product bundles or add-ons to increase order value | | Optimizing product mix | Analyze which products drive low AOV purchases and create higher-value alternatives | | Evaluating promotional impact | Track whether discounts or promotions disproportionately drive low AOV orders | | Segmenting ad performance | Measure whether certain ad campaigns attract lower-spending customers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | -------------------------------------------------------- | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total purchase value from all conversions | | [Average Conversion Value](/reference/metrics/funnel/conversions/average-conversion-value) | Mean purchase value to compare against low AOV threshold | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Total purchase count across all AOV tiers | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Low AOV Purchases: Track Below-Average Order Value Conversions Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/low-aov-purchases Track low average order value purchases for your Shopify store. Identify budget-conscious buyers and optimize upsell strategies for higher-value conversions. Low AOV Purchases counts purchase events where the order value falls below your Shopify store's average order value threshold. ## Formula **Low AOV Purchases** = **COUNT** ( Purchases ) **WHERE** order\_value \< [**average\_order\_value**](/reference/metrics/orders/aov) ### Formula Components | Metric | Definition | | ----------------------------------------- | --------------------------------------------------------------------------- | | **Purchases** | All purchase events tracked by the Upstack pixel from your Shopify checkout | | **order\_value \< average\_order\_value** | Filters to orders below your store's calculated average order value | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store recorded **788 low AOV purchases** in February with an average order value of \$85: | Order Value Segment | Purchases | % of Total | Avg Order Value | | -------------------- | --------- | ---------- | --------------- | | Low AOV (under \$85) | 788 | 72% | \$52 | | High AOV (\$85+) | 312 | 28% | \$142 | | **Total** | **1,100** | **100%** | **\$85** | *** ## How It Works The Upstack pixel tracks every purchase event on your Shopify store and calculates whether each order falls below your store's average order value. Low AOV purchases are counted when the order value is under this threshold, helping you identify opportunities to increase basket size through upsells, bundles, or minimum order incentives. *** ## When to Use | Scenario | Action | | ----------------------------------- | --------------------------------------------------------------------------- | | Identifying upsell opportunities | Target low AOV customers with product bundles or add-ons | | Evaluating promotional impact | Track whether discounts drive disproportionately low AOV orders | | Optimizing free shipping thresholds | Set minimums to convert low AOV shoppers to higher-value orders | | Assessing channel quality | Compare low AOV rates across traffic sources to find higher-value audiences | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ---------------------------------------------------- | | [High AOV Purchases](/reference/metrics/funnel/conversions/high-aov-purchases) | Inverse: orders above your average order value | | [All Purchases](/reference/metrics/funnel/conversions/all-purchases) | Total purchases including all order values | | [Average Conversion Value](/reference/metrics/funnel/conversions/average-conversion-value) | Average order value threshold that defines the split | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # NC AOV: New Customer Average Order Value Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/nc-aov Track New Customer AOV for your Shopify store. Measure average order value from first-time buyers to optimize acquisition and pricing strategy. NC AOV measures the average order value from first-time customers purchasing from your Shopify store. ## Formula **NC AOV** = [**NC Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) ÷ **NC Purchases** ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | --------------------------------------------------------------------- | | [**NC Revenue**](/reference/metrics/funnel/conversions/nc-revenue) | Total revenue from first-time customer purchases tracked by the pixel | | [**NC Purchases**](/reference/metrics/funnel/conversions/new-customer-purchases) | Count of purchase events from first-time customers | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your Shopify store acquired **247 new customers** in January who generated **\$18,725** in revenue. | Metric | Value | | ------------ | ----------- | | NC Revenue | \$18,725 | | NC Purchases | 247 | | **NC AOV** | **\$75.81** | An NC AOV of \$75.81 means first-time buyers spend an average of \$75.81 per order at your Shopify store. *** ## How It Works NC AOV calculates the average transaction value specifically from first-time purchasers, using pixel-tracked purchase events filtered by new customer status. This metric syncs with your Shopify order data to provide accurate revenue calculations. Unlike total AOV, it excludes returning customer orders—giving you a clear view of what new customers spend on their first purchase. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------------------------------------------------------- | | Evaluating acquisition quality | Compare NC AOV to total AOV to understand if new customers spend more or less than average | | Setting CPA targets | Use NC AOV to determine acceptable customer acquisition costs based on first-order value | | Optimizing landing pages | Test landing page variations and measure impact on NC AOV to find high-value entry points | | Pricing strategy | Monitor NC AOV trends when adjusting pricing or promotions to understand new customer sensitivity | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------ | ------------------------------------------------------------------------------------- | | [Revenue](/reference/metrics/funnel/conversions/revenue) | Total revenue from all customers—NC AOV focuses on first-time buyer portion | | [NC ROAS](/reference/metrics/funnel/conversions/nc-roas) | Revenue efficiency metric—use NC AOV to understand the revenue quality behind NC ROAS | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Total purchase events—NC Purchases is the new customer subset | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # NC Revenue: New Customer Revenue from Your Shopify Store Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/nc-revenue Track new customer revenue from first-time buyers in your Shopify store. Measure acquisition revenue with pixel-tracked attribution. NC Revenue measures the total revenue generated from first-time customer purchases, tracked by the Upstack Pixel on your Shopify store. ## Formula **NC Revenue** = **SUM** ( [**Revenue**](/reference/metrics/funnel/conversions/revenue) ) **WHERE** customer\_type = new\_customer ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | | **Revenue** | Monetary value of purchase events tracked by the pixel | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to purchases from customers completing their first order | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store generated **\$87,500** in new customer revenue from **1,250 first-time purchases** in March. | Channel | NC Revenue | NC Orders | NC AOV | | ---------- | ---------- | --------- | ------- | | Meta Ads | \$42,000 | 600 | \$70.00 | | Google Ads | \$28,500 | 380 | \$75.00 | | TikTok Ads | \$12,000 | 180 | \$66.67 | | Organic | \$5,000 | 90 | \$55.56 | *** ## How It Works NC Revenue tracks the total revenue from first-time purchasers on your Shopify store. When a customer completes their first order, the Upstack Pixel identifies them as a new customer and attributes the order value to NC Revenue. This metric helps you understand how much revenue your acquisition efforts are generating—separate from repeat purchases by existing customers. *** ## When to Use | Scenario | Action | | ---------------------------------- | ------------------------------------------------------------------------------ | | Evaluating acquisition performance | Track how much revenue comes specifically from first-time buyers | | Calculating NC ROAS | Use as the numerator when measuring return on ad spend for new customers | | Setting acquisition targets | Establish NC revenue goals and monitor progress against benchmarks | | Comparing channels | Break down NC revenue by source to identify highest-value acquisition channels | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------- | | [NC ROAS](/reference/metrics/funnel/conversions/nc-roas) | Uses NC Revenue as the numerator to calculate acquisition efficiency | | [New Customer Purchases](/reference/metrics/funnel/conversions/new-customer-purchases) | Count of first-time purchase events generating this revenue | | [New Customer Purchase Value](/reference/metrics/funnel/conversions/new-customer-purchase-value) | Individual purchase values that sum to NC Revenue | | [Total Revenue](/reference/metrics/funnel/conversions/total-revenue) | Combined new and returning customer revenue | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # NC ROAS: New Customer Return on Ad Spend Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/nc-roas Track New Customer ROAS to measure revenue efficiency from first-time buyers. Calculate how much new customer revenue each ad dollar generates. NC ROAS measures the revenue generated from new customers for every dollar spent on advertising. ## Formula **NC ROAS** = [**NC Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) ÷ **Ad Spend** ### Formula Components | Metric | Definition | | -------------- | --------------------------------------------------------------------- | | **NC Revenue** | Total revenue from first-time customer purchases tracked by the pixel | | **Ad Spend** | Total advertising spend across all connected ad platforms | | Metadata | | | --------------- | ----------------------- | | **Type** | Ratio | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$10,000** on ads in January and generated **\$35,000** in revenue from new customers. | Metric | Value | | ----------- | -------- | | NC Revenue | \$35,000 | | Ad Spend | \$10,000 | | **NC ROAS** | **3.5x** | An NC ROAS of 3.5x means every dollar of ad spend generated \$3.50 in revenue from new customers. *** ## How It Works NC ROAS isolates revenue from first-time purchasers to show how efficiently your ad spend acquires new customers. Unlike total ROAS, it excludes returning customer revenue—giving you a clearer picture of true customer acquisition performance. This metric uses pixel-tracked purchase events filtered by new customer status. *** ## When to Use | Scenario | Action | | ------------------------------------- | ------------------------------------------------------------------------------------------------- | | Evaluating acquisition efficiency | Compare NC ROAS across campaigns to identify which channels acquire new customers most profitably | | Scaling ad spend | Use NC ROAS thresholds to determine when to increase or decrease budget on acquisition campaigns | | Separating acquisition from retention | Pair with RC ROAS to understand the revenue split between new and returning customers | | Setting CAC targets | Calculate acceptable NC CPA by working backwards from NC ROAS targets | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------ | --------------------------------------------------------------------- | | [Revenue](/reference/metrics/funnel/conversions/revenue) | Total revenue from all customers (numerator uses NC portion only) | | Conversion Rate | Session-to-purchase conversion rate—affects both NC and total revenue | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Total purchase events tracked by the pixel | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # New Customer Purchase Value: First-Time Buyer Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/new-customer-purchase-value Track new customer purchase value in your Shopify store. Measure first-time buyer revenue from pixel-tracked purchase events. New Customer Purchase Value measures the total monetary value of purchase events from first-time customers, tracked by the Upstack pixel. ## Formula **New Customer Purchase Value** = **SUM** ( [**Purchase Value**](/reference/metrics/funnel/conversions/purchases-value) ) **WHERE** customer\_type = new\_customer ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | | **Purchase Value** | Monetary value of individual purchase events tracked by the pixel | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to purchases from customers completing their first order | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store tracked **\$62,400** in new customer purchase value last month from **520 first-time purchases**. | Period | NC Purchase Value | NC Purchases | Avg Value | | ------ | ----------------- | ------------ | --------- | | Week 1 | \$14,800 | 125 | \$118.40 | | Week 2 | \$16,200 | 138 | \$117.39 | | Week 3 | \$15,100 | 127 | \$118.90 | | Week 4 | \$16,300 | 130 | \$125.38 | *** ## How It Works The Upstack pixel tracks purchase events on your Shopify store and identifies whether each buyer is a new or returning customer. New Customer Purchase Value sums the monetary value of all purchase events where the customer is completing their first order. *** ## When to Use | Scenario | Action | | -------------------------------- | ----------------------------------------------------------------- | | Measuring acquisition revenue | Track revenue specifically from first-time customer conversions | | Evaluating prospecting campaigns | Compare NC purchase value across channels targeting new audiences | | Calculating CAC payback | Combine with acquisition costs to assess payback period | | Optimizing new customer AOV | Identify opportunities to increase first-order values | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------ | | [Cost per New Customer Purchase](/reference/metrics/funnel/conversions/cost-per-new-customer-purchase) | Ad spend efficiency for acquiring first-time purchases | | [Returning Customer Purchase Value](/reference/metrics/funnel/conversions/returning-customer-purchase-value) | Repeat buyer revenue for comparison | | [New Customers](/reference/metrics/orders/customers/new-customers) | Order-based count of first-time buyers | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # New Customer Purchases: First-Time Buyer Conversions Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/new-customer-purchases Track purchases from first-time buyers in your Shopify store. Measure customer acquisition performance, CAC, and new customer conversion trends. New Customer Purchases counts the total number of orders placed by first-time buyers — customers who have never purchased from your Shopify store before. ## Formula **New Customer Purchases** = **COUNT** ( [**Orders**](/reference/metrics/orders/counts/orders) ) **WHERE** customer\_type = new\_customer ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | **Orders** | Individual purchase transactions from your Shopify store | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from customers making their first purchase | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store received **1,247 orders** in January. Of those, **412 were New Customer Purchases** — first-time buyers who had never ordered before. | Period | Total Orders | New Customer Purchases | NC Rate | | -------- | ------------ | ---------------------- | ------- | | January | 1,247 | 412 | 33% | | February | 1,089 | 389 | 36% | | March | 1,456 | 521 | 36% | *** ## How It Works Upstack identifies new customers by checking purchase history against your Shopify order data. When a customer places an order and has no prior transactions in your store, that order counts as a New Customer Purchase. This attribution persists across sessions and devices through Upstack's identity resolution. *** ## When to Use | Scenario | Action | | ------------------------------------- | --------------------------------------------------------------------------------- | | Measuring acquisition campaigns | Compare New Customer Purchases before and after launching acquisition-focused ads | | Evaluating prospecting vs retargeting | Track ratio of new vs returning customer purchases by channel | | Forecasting growth | Project customer base expansion using new customer conversion trends | | Calculating customer acquisition cost | Divide acquisition spend by New Customer Purchases to find CAC | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ------------------------------------------------ | | [New Customer Revenue](/reference/metrics/funnel/conversions/nc-revenue) | Revenue generated from these purchases | | [New Customer AOV](/reference/metrics/funnel/conversions/nc-aov) | Average order value for first-time buyers | | [Total Orders](/reference/metrics/orders/counts/orders) | All orders including new and returning customers | | [New Customers](/reference/metrics/orders/customers/new-customers) | Unique count of first-time buyers | [See all Conversion metrics →](/reference/metrics/funnel/conversions) # Order Cancelled: Track Shopify Order Cancellations Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/order-cancelled Track order cancellation events for your Shopify store. Monitor cancellation rates, identify patterns, and understand the impact on revenue and fulfillment. Order Cancelled counts the total number of order cancellation events for your Shopify store. ## Formula **Order Cancelled** = **COUNT** ( Order Cancelled Events ) ### Formula Components | Metric | Definition | | -------------------------- | -------------------------------------------------------------------------- | | **Order Cancelled Events** | Individual order cancellation transactions processed in your Shopify store | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store had **28 orders cancelled** last month out of **2,156 total orders**. | Period | Orders | Cancelled | Cancellation Rate | | -------- | ------ | --------- | ----------------- | | January | 2,156 | 28 | 1.3% | | February | 2,341 | 35 | 1.5% | | March | 1,987 | 22 | 1.1% | *** ## How It Works The Upstack pixel tracks order cancellation events when orders are cancelled in Shopify before fulfillment. Each cancelled order is counted as one event, synced from your Shopify order data. Unlike refunds, cancellations typically occur before shipping and represent orders that never completed fulfillment. *** ## When to Use | Scenario | Action | | ---------------------------- | ----------------------------------------------------------------------- | | High cancellation volume | Investigate inventory issues or fulfillment delays | | Cancellation rate increasing | Review order processing workflows and customer communication | | Channel comparison | Compare cancellation rates by traffic source to identify fraud patterns | | Pre-fulfillment analysis | Track cancellations to optimize inventory allocation | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------ | --------------------------------- | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Total completed orders | | [Refunds](/reference/metrics/funnel/conversions/refund) | Post-fulfillment order reversals | | [Revenue](/reference/metrics/funnel/conversions/revenue) | Revenue impacted by cancellations | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Order Cancelled Value: Track Revenue Lost to Cancellations Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/order-cancelled-value Track the total monetary value of cancelled Shopify orders. Identify revenue leakage, measure cancellation impact, and optimize retention. The total monetary value of all cancelled orders in the selected period. ## Formula **Order Cancelled Value** = **SUM** ( Cancelled Order Values ) ### Formula Components | Metric | Definition | | -------------------------- | ------------------------------------------------------------------ | | **SUM** | Aggregation function that totals all cancelled order values | | **Cancelled Order Values** | Monetary value of each order that was cancelled before fulfillment | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store had **\$12,450** in cancelled orders this month: | Cancellation Reason | Value | Share | | ------------------- | ------- | ----- | | Customer Request | \$7,470 | 60% | | Payment Failed | \$2,490 | 20% | | Inventory Issue | \$1,867 | 15% | | Fraud Suspected | \$623 | 5% | *** ## How It Works Order Cancelled Value sums the monetary value of each cancelled order from your Shopify store. When an order status changes to cancelled, its value is captured and attributed to the original conversion touchpoint. This helps you understand how much potential revenue was lost to cancellations. *** ## When to Use | Scenario | Action | | --------------------------------- | ----------------------------------------------------------------- | | Measuring revenue leakage | Track total value lost to cancellations over time | | Identifying cancellation patterns | Compare cancelled value across products or channels | | Calculating net revenue | Subtract from Conversion Value to find actual realized revenue | | Improving retention | Investigate high-value cancellations for prevention opportunities | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | -------------------------------------------------------------- | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total revenue before cancellations (this metric measures loss) | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Count of conversion events (compare with cancellation rate) | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Completed purchase events (excludes cancelled orders) | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Order Delivered: Track Fulfilled Shopify Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/order-delivered Track order delivered events for your Shopify store. Monitor fulfillment completion and delivery confirmation for e-commerce attribution. Order Delivered counts the number of orders that have been successfully delivered to customers. ## Formula **Order Delivered** = **COUNT** ( [**Orders**](/reference/metrics/orders/counts/orders) ) **WHERE** status = delivered ### Formula Components | Metric | Definition | | ---------------------- | -------------------------------------------------------- | | **Orders** | Total orders tracked in your Shopify store | | **status = delivered** | Filters to orders confirmed as delivered to the customer | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Count | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store fulfilled **1,847 orders** in January. Of those, **1,623** have been confirmed as delivered. | Period | Orders Fulfilled | Orders Delivered | Delivery Rate | | ------ | ---------------- | ---------------- | ------------- | | Week 1 | 412 | 389 | 94.4% | | Week 2 | 478 | 421 | 88.1% | | Week 3 | 445 | 398 | 89.4% | | Week 4 | 512 | 415 | 81.1% | *** ## How It Works Order Delivered events are tracked when Shopify confirms that an order has been successfully delivered to the customer. This data syncs from your Shopify order fulfillment status and carrier tracking information, giving you visibility into the complete customer journey from purchase to delivery. *** ## When to Use | Scenario | Action | | ------------------------------ | ---------------------------------------------------------- | | Measuring fulfillment success | Track delivery completion rates across carriers | | Post-purchase attribution | Understand which marketing channels drive delivered orders | | Carrier performance analysis | Compare delivery rates between shipping providers | | Customer experience monitoring | Identify delivery delays or failures by region | *** ## Related Metrics | Metric | Relationship | | ---------------- | --------------------------------------------------- | | Total Orders | All orders placed, before delivery confirmation | | Order Shipped | Orders that have been shipped but not yet delivered | | Conversion Value | Revenue associated with delivered orders | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Order Delivered Value: Delivered Order Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/order-delivered-value Track the total value of delivered orders for your Shopify store. Measure fulfilled delivery revenue and post-purchase conversions. Order Delivered Value measures the total monetary value of orders that have been delivered to customers. ## Formula **Order Delivered Value** = **SUM** ( Order Value ) **WHERE** status = delivered ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------- | -------------------------------------------------------- | | **Order Value** | The total value of each order at time of delivery | | [**status = delivered**](/data-dictionary/measures-and-dimensions#order-status) | Filters to orders confirmed as delivered to the customer | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store had **47 orders delivered** last week with a total delivered value of **\$8,450**. | Day | Orders Delivered | Order Delivered Value | | --------- | ---------------- | --------------------- | | Monday | 8 | \$1,240 | | Tuesday | 6 | \$980 | | Wednesday | 7 | \$1,350 | | Thursday | 9 | \$1,620 | | Friday | 10 | \$1,890 | | Saturday | 4 | \$720 | | Sunday | 3 | \$650 | *** ## How It Works Order Delivered Value is tracked when an order's fulfillment status changes to delivered. This event is synced from your Shopify order data and captured by the Upstack pixel. The value includes the full order amount at the time of delivery confirmation. *** ## When to Use | Scenario | Action | | ------------------------------------------- | ----------------------------------------------------------------------------- | | Measuring post-purchase fulfillment revenue | Compare delivered value to purchase value to identify fulfillment gaps | | Tracking delivery performance by channel | Segment by acquisition source to see which channels drive reliable deliveries | | Analyzing delivery timing impact | Correlate delivery speed with customer satisfaction and repeat purchases | | Calculating true delivered ROAS | Use delivered value instead of purchase value for more accurate ad efficiency | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | --------------------------------------------------------- | | [Order Delivered](/reference/metrics/funnel/conversions/order-delivered) | Count of delivered orders (this metric shows the value) | | [Order Shipped Value](/reference/metrics/funnel/conversions/order-shipped-value) | Value at shipping stage (prior step in fulfillment) | | [Order Fulfilled Value](/reference/metrics/funnel/conversions/fulfillment-value) | Value at fulfillment stage (alternate fulfillment status) | | [Revenue](/reference/metrics/funnel/conversions/revenue) | Total purchase revenue (pre-delivery value) | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Order Placed: Track Shopify Purchase Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/order-placed Track order placed events for your Shopify store. Count completed purchases, monitor conversion volume, and measure e-commerce performance over time. Order Placed counts the total number of completed purchases tracked on your Shopify store. ## Formula **Order Placed** = **COUNT** ( [**Orders**](/reference/metrics/orders/counts/orders) ) **WHERE** status = completed ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------- | ---------------------------------------------------------------- | | **Orders** | Individual purchase transactions completed on your Shopify store | | [**status = completed**](/data-dictionary/measures-and-dimensions#order-status) | Filters to orders that have been successfully placed | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store received **1,247 orders** in January. | Week | Orders Placed | Change | | ------ | ------------- | ------ | | Week 1 | 289 | — | | Week 2 | 312 | +8.0% | | Week 3 | 298 | -4.5% | | Week 4 | 348 | +16.8% | *** ## How It Works The Upstack Pixel tracks purchase events when customers complete checkout on your Shopify store. Each successful order fires one purchase event, which is counted and synced with your Shopify order data in real-time. *** ## When to Use | Scenario | Action | | ----------------------------- | -------------------------------------------------------- | | Measuring conversion volume | Track total orders to understand demand patterns | | Comparing channel performance | Evaluate which channels drive the most orders | | Calculating conversion rates | Combine with sessions to find checkout completion rates | | Monitoring promotional impact | Compare order counts before, during, and after campaigns | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | -------------------------------------------- | | [Revenue](/reference/metrics/funnel/conversions/revenue) | Total value of orders placed | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Checkout starts that precede orders | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Percentage of sessions resulting in an order | [See all Conversion metrics →](/reference/metrics/funnel/conversions) # Order Placed Value: Total Attributed Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/order-placed-value Track Order Placed Value from your Shopify store attributed through the Upstack Pixel. Measure total conversion revenue across all marketing channels. Order Placed Value measures the total monetary value of all attributed orders placed in your Shopify store. ## Formula **Order Placed Value** = **SUM** ( Order Value ) **WHERE** status = placed ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | | **Order Value** | The total value of each individual order including products, shipping, and taxes | | [**status = placed**](/data-dictionary/measures-and-dimensions#order-status) | Filters to orders that have been successfully placed | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store received **247 orders** in January with a total Order Placed Value of **\$38,450**. | Date | Orders | Order Placed Value | AOV | | --------- | ------ | ------------------ | ----- | | Jan 1-7 | 58 | \$8,120 | \$140 | | Jan 8-14 | 71 | \$11,350 | \$160 | | Jan 15-21 | 62 | \$9,300 | \$150 | | Jan 22-31 | 56 | \$9,680 | \$173 | *** ## How It Works Order Placed Value sums the total value of all orders attributed through the Upstack Pixel and synced from your Shopify store. Each order's value includes the full purchase amount at the time of order placement. This metric captures revenue at the point of conversion, providing accurate attribution data for calculating ROAS and channel performance. *** ## When to Use | Scenario | Action | | --------------------------------- | -------------------------------------------------------------------------------- | | Measuring channel performance | Compare Order Placed Value by traffic source to identify top-performing channels | | Calculating ROAS | Divide Order Placed Value by ad spend to measure return on ad spend | | Evaluating campaign effectiveness | Track Order Placed Value during promotional periods vs. baseline | | Revenue forecasting | Use historical Order Placed Value trends to project future performance | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------- | ----------------------------------------------- | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Count of orders (Order Placed Value ÷ AOV) | | [Average Order Value](/reference/metrics/orders/aov/total-aov) | Revenue per order (Order Placed Value ÷ Orders) | | [ROAS](/reference/metrics/advertising/meta-ads/meta-return-on-ad-spend) | Efficiency metric (Order Placed Value ÷ Spend) | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Order Shipped: Track Fulfillment Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/order-shipped Track order shipped events for your Shopify store. Monitor fulfillment performance and delivery timing to optimize post-purchase experience. Order Shipped counts the total number of orders that have been shipped from your Shopify store. ## Formula **Order Shipped** = **COUNT** ( [**Orders**](/reference/metrics/orders/counts/orders) ) **WHERE** status = shipped ### Formula Components | Metric | Definition | | ---------------------------------------------------------------- | -------------------------------------------------- | | **Orders** | Total orders from your Shopify store | | [**status = shipped**](/data-dictionary/measures-and-dimensions) | Filters to orders that have been marked as shipped | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store processed **1,247 orders** in January. Of those, **1,189 orders were shipped** by month end, giving you a 95% fulfillment rate. | Week | Orders Placed | Orders Shipped | Fulfillment Rate | | ------ | ------------- | -------------- | ---------------- | | Week 1 | 312 | 298 | 95.5% | | Week 2 | 287 | 285 | 99.3% | | Week 3 | 341 | 322 | 94.4% | | Week 4 | 307 | 284 | 92.5% | *** ## How It Works Order Shipped events are triggered when an order fulfillment status changes to shipped in Shopify. The Upstack Pixel tracks these fulfillment events server-side via Shopify webhooks, ensuring accurate capture regardless of customer browser state. *** ## When to Use | Scenario | Action | | ---------------------------- | ----------------------------------------------- | | Track fulfillment speed | Monitor time between purchase and shipment | | Identify fulfillment delays | Compare shipped counts against total orders | | Measure warehouse efficiency | Track daily/weekly shipped volume | | Optimize delivery experience | Correlate ship times with customer satisfaction | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------- | ---------------------------- | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Orders that precede shipping | | [Order Fulfilled](/reference/metrics/funnel/conversions/fulfillment) | Related fulfillment stage | | [Revenue](/reference/metrics/funnel/conversions/revenue) | Value of shipped orders | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Order Shipped Value: Track Fulfilled Order Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/order-shipped-value Track total monetary value of shipped orders for your Shopify store. Measure fulfillment revenue, shipped order performance, and confirmed revenue. Order Shipped Value measures the total monetary value of orders that have been shipped to customers. ## Formula **Order Shipped Value** = **SUM** ( value ) **WHERE** event = order\_shipped ### Formula Components | Metric | Definition | | -------------------------- | ----------------------------------------------------------- | | **value** | The monetary value of each shipped order | | **event = order\_shipped** | Filters to only orders that have been shipped and fulfilled | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store shipped **847 orders** in March with a total shipped value of **\$94,230**. | Week | Orders Shipped | Shipped Value | | ------ | -------------- | ------------- | | Week 1 | 198 | \$22,140 | | Week 2 | 215 | \$24,890 | | Week 3 | 221 | \$23,450 | | Week 4 | 213 | \$23,750 | *** ## How It Works Order Shipped Value sums the monetary value of all `order_shipped` events tracked by the Upstack Pixel. When Shopify fulfills an order and marks it as shipped, the event is captured with the order value. This metric reflects actual fulfilled revenue rather than placed orders. *** ## When to Use | Scenario | Action | | ------------------------------- | ---------------------------------------------------------------------- | | Measure fulfillment performance | Track shipped value vs. total order value to identify fulfillment gaps | | Calculate shipped revenue | Understand how much revenue has actually left your warehouse | | Identify fulfillment delays | Compare order value to shipped value over time periods | | Forecast cash flow | Use shipped orders as a proxy for confirmed revenue | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | ------------------------------------- | | [Total Orders](/reference/metrics/orders/counts/orders) | Count of all orders placed | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total value of attributed conversions | | [Order Count](/reference/metrics/orders/counts/orders) | Total number of orders | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # P70 AOV Purchase Cost: Ad Spend per High-Value Order Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/p70-aov-purchase-cost Calculate advertising cost per high-value purchase (P70 AOV). Optimize your ad spend for premium customer acquisition. P70 AOV Purchase Cost measures how much you spend on advertising for each order above the 70th percentile AOV. ## Formula **P70 AOV Purchase Cost** = **Ad Spend** ÷ [**P70 AOV Purchases**](/reference/metrics/funnel/conversions/p70-aov-purchases) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**P70 AOV Purchases**](/reference/metrics/funnel/conversions/p70-aov-purchases) | Count of orders above the 70th percentile AOV | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$8,500** on Meta ads in January and drove **340 P70 AOV purchases**. | Metric | Value | Notes | | --------------------- | ------- | ------------------------- | | Ad Spend | \$8,500 | Monthly advertising cost | | P70 AOV Purchases | 340 | High-value orders | | P70 AOV Purchase Cost | \$25.00 | Cost per high-value order | *** ## How It Works This metric divides your total ad spend by the number of P70 AOV purchases to calculate the acquisition cost for premium customers. Lower values indicate more efficient premium customer acquisition. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------------------------------------- | | Channel comparison | Identify which platforms acquire premium customers most efficiently | | Budget allocation | Shift spend toward channels with lower P70 purchase costs | | Campaign benchmarking | Compare premium acquisition costs across campaigns | | ROAS optimization | Balance P70 purchase cost against high-value customer LTV | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ----------------------------------- | | [P70 AOV Purchases](/reference/metrics/funnel/conversions/p70-aov-purchases) | The denominator in this calculation | | [P70 AOV Purchase Value](/reference/metrics/funnel/conversions/p70-aov-purchase-value) | Revenue from P70 purchases | | [Purchase Cost](/reference/metrics/funnel/conversions/cost-per-purchase) | Cost per any purchase | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # P70 AOV Purchase Value: Revenue from High-Value Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/p70-aov-purchase-value Track revenue generated from high-value orders (P70 AOV). Measure premium customer contribution to total revenue. P70 AOV Purchase Value totals the revenue from orders above the 70th percentile of your AOV distribution. ## Formula **P70 AOV Purchase Value** = **SUM** ( order\_value ) **WHERE** order\_value > P70\_threshold ### Formula Components | Metric | Definition | | ------------------ | --------------------------------------------------------------- | | **order\_value** | The monetary value of each tracked purchase | | **P70\_threshold** | The 70th percentile of your historical order value distribution | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store had **423 P70 AOV purchases** in January with an average value of **\$185**. | Metric | Value | Notes | | ---------------------- | -------- | ----------------------------- | | P70 AOV Purchases | 423 | High-value orders | | Avg P70 Order Value | \$185 | Average above-threshold order | | P70 AOV Purchase Value | \$78,255 | Total high-value revenue | *** ## How It Works This metric sums the revenue from all orders that exceed the 70th percentile AOV threshold. It quantifies the total contribution of premium orders to your revenue, helping identify the business impact of high-value customer segments. *** ## When to Use | Scenario | Action | | ------------------- | ----------------------------------------------------- | | Revenue attribution | Understand how much revenue comes from premium orders | | ROAS calculation | Calculate return on ad spend for high-value campaigns | | Segment analysis | Compare P70 value contribution across channels | | Growth tracking | Monitor premium revenue trends over time | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | -------------------------------- | | [P70 AOV Purchases](/reference/metrics/funnel/conversions/p70-aov-purchases) | Count of high-value orders | | [P70 AOV Purchase Cost](/reference/metrics/funnel/conversions/p70-aov-purchase-cost) | Cost to acquire these orders | | [Purchase Value](/reference/metrics/funnel/conversions/purchases-value) | Total revenue from all purchases | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # P70 AOV Purchases: Track High-Value Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/p70-aov-purchases Track purchases above the 70th percentile AOV. Identify high-value customer segments and optimize campaigns for premium orders. P70 AOV Purchases counts orders with a value above the 70th percentile of your store's average order value distribution. ## Formula **P70 AOV Purchases** = **COUNT** ( [**Orders**](/reference/metrics/orders/counts/orders) ) **WHERE** order\_value > P70\_threshold ### Formula Components | Metric | Definition | | ------------------ | --------------------------------------------------------------- | | **Orders** | Total purchase events tracked by the Upstack pixel | | **P70\_threshold** | The 70th percentile of your historical order value distribution | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your Shopify store has a P70 AOV threshold of **\$125**. In January, you received **847 orders** above this threshold. | Metric | Value | Notes | | ----------------- | ----- | ---------------------- | | Total Orders | 2,820 | All tracked purchases | | P70 AOV Purchases | 847 | Orders > \$125 | | P70 Percentage | 30% | High-value order share | *** ## How It Works The Upstack pixel calculates the 70th percentile of your historical order values to establish the P70 threshold. Any order above this threshold is counted as a P70 AOV Purchase. This metric helps identify campaigns driving premium customers. *** ## When to Use | Scenario | Action | | --------------------------- | --------------------------------------------- | | Campaign optimization | Identify channels driving high-value orders | | Audience targeting | Build lookalike audiences from P70 purchasers | | Premium product performance | Track adoption of higher-priced items | | Seasonal analysis | Compare high-value order trends over time | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | --------------------------------------------- | | [High AOV Purchases](/reference/metrics/funnel/conversions/high-aov-purchases) | Above-average order value purchases | | [P80 AOV Purchases](/reference/metrics/funnel/conversions/p80-aov-purchases) | Even higher value threshold (80th percentile) | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Total purchase events | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # P80 AOV Purchase Cost: Ad Spend per Premium Order Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/p80-aov-purchase-cost Calculate advertising cost per premium purchase (P80 AOV). Optimize your ad spend for high-value customer acquisition. P80 AOV Purchase Cost measures how much you spend on advertising for each order above the 80th percentile AOV. ## Formula **P80 AOV Purchase Cost** = **Ad Spend** ÷ [**P80 AOV Purchases**](/reference/metrics/funnel/conversions/p80-aov-purchases) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**P80 AOV Purchases**](/reference/metrics/funnel/conversions/p80-aov-purchases) | Count of orders above the 80th percentile AOV | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$8,500** on Meta ads in January and drove **226 P80 AOV purchases**. | Metric | Value | Notes | | --------------------- | ------- | ------------------------ | | Ad Spend | \$8,500 | Monthly advertising cost | | P80 AOV Purchases | 226 | Premium orders | | P80 AOV Purchase Cost | \$37.61 | Cost per premium order | *** ## How It Works This metric divides your total ad spend by the number of P80 AOV purchases to calculate the acquisition cost for your top-spending customers. Since P80 represents the top 20% of orders, this is a premium customer acquisition benchmark. *** ## When to Use | Scenario | Action | | ------------------------------ | ----------------------------------------------------------- | | Premium channel identification | Find channels most efficient at acquiring whales | | Budget optimization | Allocate more to channels with low P80 costs | | Campaign comparison | Benchmark premium CPA across campaigns | | LTV optimization | Balance P80 cost against high-value customer lifetime value | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ----------------------------------- | | [P80 AOV Purchases](/reference/metrics/funnel/conversions/p80-aov-purchases) | The denominator in this calculation | | [P80 AOV Purchase Value](/reference/metrics/funnel/conversions/p80-aov-purchase-value) | Revenue from P80 purchases | | [P70 AOV Purchase Cost](/reference/metrics/funnel/conversions/p70-aov-purchase-cost) | Cost per slightly lower threshold | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # P80 AOV Purchase Value: Revenue from Premium Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/p80-aov-purchase-value Track revenue generated from premium orders (P80 AOV). Measure top-tier customer contribution to total revenue. P80 AOV Purchase Value totals the revenue from orders above the 80th percentile of your AOV distribution. ## Formula **P80 AOV Purchase Value** = **SUM** ( order\_value ) **WHERE** order\_value > P80\_threshold ### Formula Components | Metric | Definition | | ------------------ | --------------------------------------------------------------- | | **order\_value** | The monetary value of each tracked purchase | | **P80\_threshold** | The 80th percentile of your historical order value distribution | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store had **282 P80 AOV purchases** in January with an average value of **\$225**. | Metric | Value | Notes | | ---------------------- | -------- | ----------------------------- | | P80 AOV Purchases | 282 | Premium orders | | Avg P80 Order Value | \$225 | Average above-threshold order | | P80 AOV Purchase Value | \$63,450 | Total premium revenue | *** ## How It Works This metric sums the revenue from all orders that exceed the 80th percentile AOV threshold. It quantifies the total contribution of your top 20% of orders to your revenue, highlighting the business impact of premium customer segments. *** ## When to Use | Scenario | Action | | --------------------- | ----------------------------------------------------- | | Revenue concentration | Understand how much revenue comes from top 20% orders | | Premium ROAS | Calculate return on ad spend for premium campaigns | | Channel profitability | Compare P80 value contribution across channels | | Segment growth | Monitor premium revenue trends over time | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ------------------------------------- | | [P80 AOV Purchases](/reference/metrics/funnel/conversions/p80-aov-purchases) | Count of premium orders | | [P80 AOV Purchase Cost](/reference/metrics/funnel/conversions/p80-aov-purchase-cost) | Cost to acquire these orders | | [P70 AOV Purchase Value](/reference/metrics/funnel/conversions/p70-aov-purchase-value) | Revenue from slightly lower threshold | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # P80 AOV Purchases: Track Premium Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/p80-aov-purchases Track purchases above the 80th percentile AOV. Identify your top-spending customer segment and optimize for premium conversions. P80 AOV Purchases counts orders with a value above the 80th percentile of your store's average order value distribution. ## Formula **P80 AOV Purchases** = **COUNT** ( [**Orders**](/reference/metrics/orders/counts/orders) ) **WHERE** order\_value > P80\_threshold ### Formula Components | Metric | Definition | | ------------------ | --------------------------------------------------------------- | | **Orders** | Total purchase events tracked by the Upstack pixel | | **P80\_threshold** | The 80th percentile of your historical order value distribution | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your Shopify store has a P80 AOV threshold of **\$165**. In January, you received **564 orders** above this threshold. | Metric | Value | Notes | | ----------------- | ----- | --------------------- | | Total Orders | 2,820 | All tracked purchases | | P80 AOV Purchases | 564 | Orders > \$165 | | P80 Percentage | 20% | Premium order share | *** ## How It Works The Upstack pixel calculates the 80th percentile of your historical order values to establish the P80 threshold. Any order above this threshold is counted as a P80 AOV Purchase. This represents your top 20% of orders by value. *** ## When to Use | Scenario | Action | | -------------------------- | --------------------------------------------- | | VIP targeting | Build campaigns targeting high-spenders | | Premium product analysis | Track performance of high-ticket items | | Channel quality assessment | Compare premium conversion rates by source | | Whale identification | Find channels that attract top-tier customers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ----------------------------------- | | [P70 AOV Purchases](/reference/metrics/funnel/conversions/p70-aov-purchases) | Lower threshold (70th percentile) | | [P90 AOV Purchases](/reference/metrics/funnel/conversions/p90-aov-purchases) | Higher threshold (90th percentile) | | [High AOV Purchases](/reference/metrics/funnel/conversions/high-aov-purchases) | Above-average order value purchases | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # P90 AOV Purchase Cost: Ad Spend per Top-Tier Order Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/p90-aov-purchase-cost Calculate advertising cost per top-tier purchase (P90 AOV). Optimize your ad spend for whale customer acquisition. P90 AOV Purchase Cost measures how much you spend on advertising for each order above the 90th percentile AOV. ## Formula **P90 AOV Purchase Cost** = **Ad Spend** ÷ [**P90 AOV Purchases**](/reference/metrics/funnel/conversions/p90-aov-purchases) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**P90 AOV Purchases**](/reference/metrics/funnel/conversions/p90-aov-purchases) | Count of orders above the 90th percentile AOV | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$8,500** on Meta ads in January and drove **113 P90 AOV purchases**. | Metric | Value | Notes | | --------------------- | ------- | ------------------------ | | Ad Spend | \$8,500 | Monthly advertising cost | | P90 AOV Purchases | 113 | Top-tier orders | | P90 AOV Purchase Cost | \$75.22 | Cost per whale order | *** ## How It Works This metric divides your total ad spend by the number of P90 AOV purchases to calculate the acquisition cost for your top-spending customers. Since P90 represents the top 10% of orders, this is your whale acquisition cost benchmark. *** ## When to Use | Scenario | Action | | ---------------------------- | -------------------------------------------------- | | Whale acquisition efficiency | Find channels best at attracting top-tier spenders | | High-ticket optimization | Optimize campaigns for luxury purchasers | | VIP targeting cost | Understand the price of acquiring VIP customers | | Budget justification | Balance high P90 costs against exceptional LTV | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ----------------------------------- | | [P90 AOV Purchases](/reference/metrics/funnel/conversions/p90-aov-purchases) | The denominator in this calculation | | [P90 AOV Purchase Value](/reference/metrics/funnel/conversions/p90-aov-purchase-value) | Revenue from P90 purchases | | [P80 AOV Purchase Cost](/reference/metrics/funnel/conversions/p80-aov-purchase-cost) | Cost per slightly lower threshold | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # P90 AOV Purchase Value: Revenue from Top-Tier Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/p90-aov-purchase-value Track revenue generated from top-tier orders (P90 AOV). Measure whale customer contribution to total revenue. P90 AOV Purchase Value totals the revenue from orders above the 90th percentile of your AOV distribution. ## Formula **P90 AOV Purchase Value** = **SUM** ( order\_value ) **WHERE** order\_value > P90\_threshold ### Formula Components | Metric | Definition | | ------------------ | --------------------------------------------------------------- | | **order\_value** | The monetary value of each tracked purchase | | **P90\_threshold** | The 90th percentile of your historical order value distribution | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store had **141 P90 AOV purchases** in January with an average value of **\$385**. | Metric | Value | Notes | | ---------------------- | -------- | ----------------------------- | | P90 AOV Purchases | 141 | Top-tier orders | | Avg P90 Order Value | \$385 | Average above-threshold order | | P90 AOV Purchase Value | \$54,285 | Total whale revenue | *** ## How It Works This metric sums the revenue from all orders that exceed the 90th percentile AOV threshold. It quantifies the total contribution of your top 10% of orders to your revenue, highlighting the outsized impact of whale customers on your business. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------------------ | | Revenue concentration | Measure how much top 10% of orders contributes | | Whale ROAS | Calculate return on ad spend for whale campaigns | | VIP segment analysis | Compare P90 value contribution across channels | | Premium strategy | Decide whether to focus on whale acquisition | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ------------------------------------- | | [P90 AOV Purchases](/reference/metrics/funnel/conversions/p90-aov-purchases) | Count of top-tier orders | | [P90 AOV Purchase Cost](/reference/metrics/funnel/conversions/p90-aov-purchase-cost) | Cost to acquire these orders | | [P80 AOV Purchase Value](/reference/metrics/funnel/conversions/p80-aov-purchase-value) | Revenue from slightly lower threshold | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # P90 AOV Purchases: Track Top-Tier Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/p90-aov-purchases Track purchases above the 90th percentile AOV. Identify your highest-spending customers and whale acquisition performance. P90 AOV Purchases counts orders with a value above the 90th percentile of your store's average order value distribution. ## Formula **P90 AOV Purchases** = **COUNT** ( [**Orders**](/reference/metrics/orders/counts/orders) ) **WHERE** order\_value > P90\_threshold ### Formula Components | Metric | Definition | | ------------------ | --------------------------------------------------------------- | | **Orders** | Total purchase events tracked by the Upstack pixel | | **P90\_threshold** | The 90th percentile of your historical order value distribution | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your Shopify store has a P90 AOV threshold of **\$275**. In January, you received **282 orders** above this threshold. | Metric | Value | Notes | | ----------------- | ----- | --------------------- | | Total Orders | 2,820 | All tracked purchases | | P90 AOV Purchases | 282 | Orders > \$275 | | P90 Percentage | 10% | Top-tier order share | *** ## How It Works The Upstack pixel calculates the 90th percentile of your historical order values to establish the P90 threshold. Any order above this threshold is counted as a P90 AOV Purchase. This represents your top 10% of orders by value—your whale customers. *** ## When to Use | Scenario | Action | | ----------------------- | ------------------------------------------------- | | Whale hunting | Identify campaigns that attract top-tier spenders | | VIP program targeting | Build audiences for exclusive offers | | Luxury product tracking | Monitor high-ticket item performance | | Channel quality | Find sources driving the highest-value customers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | -------------------------------------- | | [P80 AOV Purchases](/reference/metrics/funnel/conversions/p80-aov-purchases) | Lower threshold (80th percentile) | | [P70 AOV Purchases](/reference/metrics/funnel/conversions/p70-aov-purchases) | Even lower threshold (70th percentile) | | [High AOV Purchases](/reference/metrics/funnel/conversions/high-aov-purchases) | Above-average order value purchases | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Payment Failed: Track Failed Payments Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/payment-failed Track when payments fail to process. Measure payment failure rate and revenue at risk. Payment Failed counts the number of payments that failed to process successfully. ## Formula **Payment Failed** = **COUNT** ( payment\_failed events ) ### Formula Components | Metric | Definition | | -------------------------- | -------------------------------------------- | | **payment\_failed events** | Events fired when a payment fails to process | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your application tracked **89 payment\_failed events** in January. | Metric | Value | Notes | | ----------------- | ----- | -------------------- | | Payment Attempted | 2,245 | Total attempts | | Payment Failed | 89 | Failed payments | | Failure Rate | 4.0% | Payment failure rate | *** ## How It Works The Upstack pixel tracks `payment_failed` events when payment processing fails. This includes declined cards, insufficient funds, expired cards, and other payment errors. *** ## When to Use | Scenario | Action | | ------------------------- | ---------------------------------- | | Payment health monitoring | Track failure rates over time | | Dunning optimization | Identify failed payments for retry | | Revenue recovery | Prioritize recovery efforts | | Billing system analysis | Diagnose payment processing issues | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ----------------------------- | | [Payment Failed Cost](/reference/metrics/funnel/conversions/payment-failed-cost) | Cost associated with failures | | [Payment Failed Value](/reference/metrics/funnel/conversions/payment-failed-value) | Revenue at risk from failures | | [Payment Succeeded](/reference/metrics/funnel/conversions/payment-succeeded) | Successful payments | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Payment Failed Cost: Ad Spend Associated with Failed Payments Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/payment-failed-cost Calculate advertising cost associated with failed payments. Measure wasted acquisition cost. Payment Failed Cost measures advertising spend associated with customers whose payments failed. ## Formula **Payment Failed Cost** = **Ad Spend** ÷ [**Payment Failed**](/reference/metrics/funnel/conversions/payment-failed) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**Payment Failed**](/reference/metrics/funnel/conversions/payment-failed) | Count of failed payments | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$10,000** on advertising in January and had **89 failed payments**. | Metric | Value | Notes | | ------------------- | -------- | ------------------------ | | Ad Spend | \$10,000 | Monthly advertising cost | | Payment Failed | 89 | Failed payments | | Payment Failed Cost | \$112.36 | Ad spend per failure | *** ## How It Works This metric divides your total ad spend by the number of failed payments. It helps contextualize acquisition cost against payment success, identifying potential issues with customer quality or payment methods. *** ## When to Use | Scenario | Action | | ----------------------- | ------------------------------------------- | | Acquisition quality | Identify sources with high payment failures | | Channel optimization | Reduce spend on high-failure sources | | Payment method analysis | Compare failure rates by payment type | | Recovery prioritization | Focus on high-value failed payments | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ----------------------------------- | | [Payment Failed](/reference/metrics/funnel/conversions/payment-failed) | The denominator in this calculation | | [Payment Failed Value](/reference/metrics/funnel/conversions/payment-failed-value) | Revenue at risk | | [Payment Succeeded Cost](/reference/metrics/funnel/conversions/payment-succeeded-cost) | Cost for successful payments | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Payment Failed Value: Revenue at Risk from Failed Payments Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/payment-failed-value Track the monetary value of failed payments. Measure revenue at risk for recovery. Payment Failed Value totals the revenue at risk from failed payments. ## Formula **Payment Failed Value** = **SUM** ( value ) **FROM** [**payment\_failed**](/reference/metrics/funnel/conversions/payment-failed) events ### Formula Components | Metric | Definition | | -------------------------- | ------------------------------------------ | | **value** | The monetary amount of each failed payment | | **payment\_failed events** | Events fired when payments fail | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example You had **89 failed payments** in January with an average value of **\$52**. | Metric | Value | Notes | | -------------------- | ------- | --------------------- | | Payment Failed | 89 | Failed payments | | Avg Failed Value | \$52 | Average failed amount | | Payment Failed Value | \$4,628 | Revenue at risk | *** ## How It Works This metric sums the value attribute from all payment\_failed events. The value represents revenue that was not collected due to payment failures, highlighting the potential recovery opportunity. *** ## When to Use | Scenario | Action | | --------------------- | -------------------------------------------- | | Revenue recovery | Prioritize dunning based on failed value | | Churn prevention | High-value failures need immediate attention | | Billing optimization | Quantify impact of payment issues | | Financial forecasting | Factor failed payments into projections | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ---------------------------- | | [Payment Failed](/reference/metrics/funnel/conversions/payment-failed) | Count of failed payments | | [Payment Failed Cost](/reference/metrics/funnel/conversions/payment-failed-cost) | CAC associated with failures | | [Payment Succeeded Value](/reference/metrics/funnel/conversions/payment-succeeded-value) | Collected revenue | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Payment Succeeded: Track Successful Payments Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/payment-succeeded Track when payments are successfully processed. Measure payment success rate and revenue collection. Payment Succeeded counts the number of successfully processed payments. ## Formula **Payment Succeeded** = **COUNT** ( payment\_succeeded events ) ### Formula Components | Metric | Definition | | ----------------------------- | ----------------------------------------------------- | | **payment\_succeeded events** | Events fired when a payment is successfully processed | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your application tracked **2,156 payment\_succeeded events** in January. | Metric | Value | Notes | | ----------------- | ----- | -------------------- | | Payment Attempted | 2,245 | Total attempts | | Payment Succeeded | 2,156 | Successful payments | | Success Rate | 96.0% | Payment success rate | *** ## How It Works The Upstack pixel tracks `payment_succeeded` events when payments are successfully processed. This includes initial subscription payments, renewals, one-time purchases, and any other successful transactions. *** ## When to Use | Scenario | Action | | --------------------- | ----------------------------------------- | | Revenue tracking | Monitor successful payment volume | | Payment success rate | Track payment processing health | | Billing optimization | Identify issues affecting payment success | | Financial forecasting | Project revenue from payment trends | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | --------------------------- | | [Payment Succeeded Cost](/reference/metrics/funnel/conversions/payment-succeeded-cost) | Cost per successful payment | | [Payment Succeeded Value](/reference/metrics/funnel/conversions/payment-succeeded-value) | Revenue from payments | | [Payment Failed](/reference/metrics/funnel/conversions/payment-failed) | Failed payments | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Payment Succeeded Cost: Ad Spend per Successful Payment Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/payment-succeeded-cost Calculate advertising cost per successful payment. Measure payment acquisition efficiency. Payment Succeeded Cost measures how much you spend on advertising for each successful payment. ## Formula **Payment Succeeded Cost** = **Ad Spend** ÷ [**Payment Succeeded**](/reference/metrics/funnel/conversions/payment-succeeded) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**Payment Succeeded**](/reference/metrics/funnel/conversions/payment-succeeded) | Count of successful payments | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$10,000** on advertising in January and processed **2,156 successful payments**. | Metric | Value | Notes | | ---------------------- | -------- | --------------------------- | | Ad Spend | \$10,000 | Monthly advertising cost | | Payment Succeeded | 2,156 | Successful payments | | Payment Succeeded Cost | \$4.64 | Cost per successful payment | *** ## How It Works This metric divides your total ad spend by the number of successful payments. It provides a view of acquisition efficiency at the payment level, useful for businesses with multiple transactions per customer. *** ## When to Use | Scenario | Action | | --------------------- | ----------------------------------------- | | Transaction-level CAC | Measure cost per payment event | | Channel comparison | Compare payment efficiency across sources | | Budget optimization | Allocate spend based on payment volume | | Unit economics | Factor into per-transaction profitability | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ----------------------------------- | | [Payment Succeeded](/reference/metrics/funnel/conversions/payment-succeeded) | The denominator in this calculation | | [Payment Succeeded Value](/reference/metrics/funnel/conversions/payment-succeeded-value) | Revenue from payments | | [Payment Failed Cost](/reference/metrics/funnel/conversions/payment-failed-cost) | Cost for failed payments | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Payment Succeeded Value: Revenue from Successful Payments Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/payment-succeeded-value Track the monetary value of successful payments. Measure collected revenue. Payment Succeeded Value totals the revenue from successfully processed payments. ## Formula **Payment Succeeded Value** = **SUM** ( value ) **FROM** [**payment\_succeeded**](/reference/metrics/funnel/conversions/payment-succeeded) events ### Formula Components | Metric | Definition | | ----------------------------- | ---------------------------------------------- | | **value** | The monetary amount of each successful payment | | **payment\_succeeded events** | Events fired when payments succeed | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example You processed **2,156 successful payments** in January with an average value of **\$49**. | Metric | Value | Notes | | ----------------------- | --------- | ----------------------- | | Payment Succeeded | 2,156 | Successful payments | | Avg Payment Value | \$49 | Average payment amount | | Payment Succeeded Value | \$105,644 | Total collected revenue | *** ## How It Works This metric sums the value attribute from all payment\_succeeded events. The value represents the actual revenue collected from successful transactions. *** ## When to Use | Scenario | Action | | ------------------- | ---------------------------------- | | Revenue tracking | Monitor collected revenue | | ROAS calculation | Calculate return on ad spend | | Payment health | Compare against attempted payments | | Financial reporting | Track actual cash collected | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ---------------------------- | | [Payment Succeeded](/reference/metrics/funnel/conversions/payment-succeeded) | Count of successful payments | | [Payment Succeeded Cost](/reference/metrics/funnel/conversions/payment-succeeded-cost) | Cost per payment | | [Payment Failed Value](/reference/metrics/funnel/conversions/payment-failed-value) | Lost revenue from failures | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Profit: Attributed Revenue After Costs Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/profit Track profit from purchases attributed by the Upstack Pixel. Understand your true earnings after accounting for costs across your marketing channels. Profit measures the dollar amount remaining after subtracting costs from revenue for purchases tracked by the Upstack Pixel. ## Formula **Profit** = [**Revenue**](/reference/metrics/funnel/conversions/revenue) − **Costs** ### Formula Components | Metric | Definition | | ------------------------------------------------------------ | ------------------------------------------------------------------------------------- | | [**Revenue**](/reference/metrics/funnel/conversions/revenue) | Total revenue from tracked purchases | | **Costs** | Variable costs associated with fulfilled orders (COGS, fulfillment, transaction fees) | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your Shopify store generated **\$85,000** in tracked revenue last month with **\$42,500** in total costs. | Period | Revenue | Costs | Profit | | -------------- | -------- | -------- | -------- | | Last Month | \$85,000 | \$42,500 | \$42,500 | | Previous Month | \$72,000 | \$38,000 | \$34,000 | Profit increased by **\$8,500** (25%) month-over-month, driven by higher revenue and improved cost efficiency. *** ## How It Works Profit is calculated by subtracting all variable costs from the attributed revenue tracked by the Upstack Pixel. This gives you a clear picture of actual earnings from your marketing-attributed purchases, accounting for costs like COGS, fulfillment, and transaction fees. *** ## When to Use | Scenario | Action | | -------------------------------- | -------------------------------------------------------------------- | | Evaluating channel profitability | Compare profit by channel to identify highest-margin traffic sources | | Setting ad spend budgets | Use profit to determine sustainable spend levels by channel | | Measuring campaign performance | Track profit trends alongside revenue to ensure growth is profitable | | Comparing customer segments | Analyze profit from new vs returning customers | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | [Revenue](/reference/metrics/funnel/conversions/revenue) | The numerator before costs are subtracted | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Count of orders driving this profit | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Percentage of sessions that resulted in profitable purchases | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Purchases: Track Completed Shopify Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/purchases Track total purchase events on your Shopify store. Count completed orders captured by the Upstack Pixel to measure conversion volume and marketing effectiveness. Purchases counts the total number of completed orders tracked by the Upstack Pixel on your Shopify store. ## Formula **Purchases** = **COUNT** ( Purchase Events ) ### Formula Components | Metric | Definition | | ------------------- | ---------------------------------------------------------------------------------- | | **Purchase Events** | Each completed Shopify order that fires a purchase event through the Upstack Pixel | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store tracked **1,847 purchases** across attribution channels in January. | Channel | Purchases | % of Total | | ---------- | --------- | ---------- | | Meta Ads | 892 | 48.3% | | Google Ads | 512 | 27.7% | | Organic | 298 | 16.1% | | Direct | 145 | 7.9% | | **Total** | **1,847** | **100%** | *** ## How It Works Purchases counts every purchase event tracked by the Upstack Pixel. When a customer completes checkout on your Shopify store, the pixel fires a purchase event. This metric represents your actual Shopify order count as seen by the tracking pixel, giving you accurate conversion volume for attribution analysis. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------- | | Measuring conversion volume | Track total purchases across channels | | Evaluating campaign performance | Compare purchase counts by attribution source | | Calculating conversion rates | Use as numerator for Session Conversion Rate | | Monitoring sales trends | Track daily, weekly, or monthly purchase patterns | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ----------------------------------------------- | | [Revenue](/reference/metrics/funnel/conversions/revenue) | The monetary value generated by these purchases | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Prior funnel step before purchase | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Purchases ÷ Sessions × 100 | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Purchases Value: Total Revenue from Tracked Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/purchases-value Track total purchase value from your Shopify store. Monitor revenue from pixel-tracked orders and optimize your e-commerce conversion funnel performance. Purchases Value is the total monetary value of all purchase events tracked by the Upstack pixel from your Shopify store. ## Formula **Purchases Value** = **SUM** ( Purchase Event Value ) ### Formula Components | Metric | Definition | | ------------------------ | ------------------------------------------------------------------- | | **Purchase Event Value** | The monetary value of each individual purchase tracked by the pixel | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store completed **127 tracked purchases** during a Black Friday campaign. | Time Period | Purchases | Purchases Value | | ------------- | --------- | --------------- | | Black Friday | 127 | \$18,450.00 | | Previous Week | 84 | \$11,230.00 | | Difference | +43 | +\$7,220.00 | *** ## How It Works The Upstack pixel tracks purchase events when customers complete orders on your Shopify store. Each purchase event includes the order value, which is summed to calculate the total Purchases Value. This metric syncs with your Shopify order data in real-time, ensuring accurate revenue tracking. *** ## When to Use | Scenario | Action | | --------------------------------- | ----------------------------------------------------------------------------------- | | Measuring campaign revenue | Compare Purchases Value across ad channels to identify highest-performing campaigns | | Tracking conversion funnel health | Monitor if purchase values align with expected AOV from your Shopify store | | Evaluating promotional impact | Compare Purchases Value during sales versus regular periods | | Attribution analysis | Use alongside tracked purchases to understand revenue per conversion | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Count of tracked purchases — divide Purchases Value by this to get AOV | | [Cost per Purchase](/reference/metrics/funnel/conversions/cost-per-purchase) | Ad spend per purchase — compare against average order value for profitability | | [Revenue](/reference/metrics/funnel/conversions/revenue) | Total tracked revenue including all order components | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Refunds: Track Returns and Order Reversals Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/refund Track refund events for your Shopify store with the Upstack Pixel. Monitor return rates, identify problem products, and understand revenue impact from customer refunds. Refunds counts the total number of refund events processed for your Shopify store. ## Formula **Refunds** = **COUNT** ( Refund Events ) ### Formula Components | Metric | Definition | | ----------------- | -------------------------------------------------------------- | | **Refund Events** | Individual refund transactions processed in your Shopify store | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store processed **47 refunds** last month out of **1,892 total orders**. | Period | Orders | Refunds | Refund Rate | | -------- | ------ | ------- | ----------- | | January | 1,892 | 47 | 2.5% | | February | 2,104 | 63 | 3.0% | | March | 1,756 | 35 | 2.0% | *** ## How It Works The Upstack pixel tracks refund events when orders are fully or partially refunded in Shopify. Each refund transaction is counted as one event, synced in real-time from your Shopify order data. *** ## When to Use | Scenario | Action | | ---------------------- | ----------------------------------------------------------------- | | High refund volume | Investigate product quality or fulfillment issues | | Refund rate increasing | Review customer feedback and return reasons | | Channel comparison | Compare refund rates by traffic source to identify quality issues | | Seasonal analysis | Track refund patterns around peak shopping periods | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------ | --------------------------------- | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Total orders before refunds | | [Revenue](/reference/metrics/funnel/conversions/revenue) | Gross revenue impacted by refunds | | [Refund Value](/reference/metrics/funnel/conversions/refund-value) | Monetary amount of refunds | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Refund Value: Track E-Commerce Return Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/refund-value Track refund value for your Shopify store. Measure the total monetary value of refunds to understand return impact on revenue. Refund Value measures the total monetary value of all refund events tracked by the Upstack pixel. ## Formula **Refund Value** = **SUM** ( Refund Event Values ) ### Formula Components | Metric | Definition | | ---------------------- | ---------------------------------------------------------------- | | **Refund Event Value** | The monetary amount associated with each individual refund event | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store processed **\$12,450** in refunds during January across 87 refund events. | Week | Refund Events | Refund Value | Avg per Refund | | ------ | ------------- | ------------ | -------------- | | Week 1 | 18 | \$2,340 | \$130 | | Week 2 | 24 | \$3,680 | \$153 | | Week 3 | 21 | \$2,890 | \$138 | | Week 4 | 24 | \$3,540 | \$148 | *** ## How It Works Refund Value sums the monetary amounts from all refund events captured by the Upstack pixel. When a refund is processed in your Shopify store, the pixel tracks the refund amount and adds it to the total. This metric helps you understand the financial impact of returns on your e-commerce revenue. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------------------ | | Monitoring return rates | Track refund value alongside total revenue to calculate your return rate | | Identifying problem products | Filter by product to find items with high refund values | | Seasonal analysis | Compare refund values across time periods to spot trends | | Net revenue calculation | Subtract refund value from gross revenue for accurate net calculations | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ---------------------------------------------------------------------- | | [Refunds](/reference/metrics/funnel/conversions/refund) | Count of refund events (use with Refund Value for average refund size) | | [Cost per Refund](/reference/metrics/funnel/conversions/cost-per-refund) | Ad spend efficiency relative to refund events | | [Revenue](/reference/metrics/funnel/conversions/revenue) | Combine with Refund Value for net revenue analysis | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Repeat Purchase: Track Returning Customer Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/repeat-purchase Track repeat purchase events from returning customers in your Shopify store. Measure customer loyalty and retention with pixel-tracked order data. Repeat Purchase counts the number of purchase events from returning customers — shoppers who have previously completed an order on your Shopify store. ## Formula **Repeat Purchases** = **COUNT** ( [**Purchases**](/reference/metrics/funnel/conversions/purchases) ) **WHERE** customer\_type = returning\_customer ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | **Purchases** | Total tracked purchase events from the Upstack pixel | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to orders from customers who have purchased before | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store completed **847 total purchases** in March. Of those, **312 were repeat purchases** from returning customers. | Metric | Value | Insight | | ---------------- | ----- | --------------------------------------------- | | Total Purchases | 847 | All tracked purchase events | | Repeat Purchases | 312 | Orders from returning customers | | Repeat Rate | 36.8% | Percentage of orders from returning customers | *** ## How It Works The Upstack pixel tracks purchase events and matches them to known customer identities. When a customer completes their second or subsequent order, it counts as a repeat purchase. This metric pulls order data directly from your Shopify store and cross-references it with identity resolution to determine customer status. *** ## When to Use | Scenario | Action | | ---------------------------------- | -------------------------------------------------------------------- | | Measuring customer loyalty | Track how many orders come from returning customers vs new customers | | Evaluating retention campaigns | Monitor repeat purchase counts after email/SMS retention campaigns | | Comparing acquisition vs retention | Balance new customer acquisition spend against retention revenue | | Assessing product stickiness | Higher repeat purchases indicate strong product-market fit | *** ## Related Metrics | Metric | Relationship | | ----------------------- | ----------------------------------------------------------------- | | Purchases | Total purchase count including both new and returning customers | | New Customer Purchases | Purchases from first-time customers (inverse of repeat purchases) | | Session Conversion Rate | Overall conversion rate for all traffic | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Repeat Purchase Rate: Track Returning Customer Purchases Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/repeat-purchase-rate Track the percentage of purchases from returning customers in your Shopify store. Measure customer loyalty and retention with Repeat Purchase Rate. Repeat Purchase Rate measures the percentage of tracked purchase events from returning customers—those who have made at least one previous purchase on your Shopify store. ## Formula **Repeat Purchase Rate** = ( [**Returning Customer Purchases**](/reference/metrics/funnel/conversions/returning-customer-purchases) ÷ [**Total Purchases**](/reference/metrics/funnel/conversions/all-purchases) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | **Returning Customer Purchases** | Purchase events from customers who have completed at least one previous order | | [**Total Purchases**](/reference/metrics/funnel/conversions/purchases) | All purchase events tracked by the Upstack Pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store tracked **1,250 purchases** this month, of which **425 were from returning customers**: | Metric | Value | | ---------------------------- | --------- | | Total Purchases | 1,250 | | Returning Customer Purchases | 425 | | **Repeat Purchase Rate** | **34.0%** | By channel: | Channel | Total Purchases | Repeat Purchases | Repeat Rate | | ---------- | --------------- | ---------------- | ----------- | | Meta Ads | 680 | 204 | 30.0% | | Google Ads | 320 | 115 | 35.9% | | Organic | 250 | 106 | 42.4% | *** ## How It Works Upstack identifies returning customers by matching the customer email or identity from Shopify order data against previous purchase history. When a returning customer completes a purchase, it counts toward the repeat purchase total. The rate is calculated by dividing repeat purchases by all purchases and expressing it as a percentage. *** ## When to Use | Scenario | Action | | ---------------------- | ----------------------------------------------------------------- | | Repeat rate increasing | Customer loyalty improving—consider loyalty programs or VIP tiers | | Repeat rate declining | Audit post-purchase experience, email flows, and product quality | | Comparing channels | Identify which traffic sources drive loyal, repeat buyers | | Forecasting LTV | Higher repeat rates indicate stronger customer lifetime value | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ----------------------------------- | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Denominator in this calculation | | [Unique Converters](/reference/metrics/funnel/conversions/unique-converters) | Distinct customers who converted | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Overall store conversion efficiency | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Repeat Purchase Value: Multi-Order Customer Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/repeat-purchase-value Track repeat purchase value in your Shopify store. Measure revenue from customers who have made multiple purchases, tracked by the Upstack pixel. Repeat Purchase Value measures the total monetary value of purchase events from customers who have completed multiple orders, tracked by the Upstack pixel. ## Formula **Repeat Purchase Value** = **SUM** ( [**Purchase Value**](/reference/metrics/funnel/conversions/purchases-value) ) **WHERE** customer\_type = repeat\_customer ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | | **Purchase Value** | Monetary value of individual purchase events tracked by the pixel | | [**customer\_type = repeat\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to purchases from customers who have completed multiple orders | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store tracked **\$89,200** in repeat purchase value last quarter from **645 multi-order customers**: | Period | Repeat Value | Repeat Purchases | Avg Value | | ------- | ------------ | ---------------- | --------- | | Month 1 | \$28,400 | 205 | \$138.54 | | Month 2 | \$31,600 | 228 | \$138.60 | | Month 3 | \$29,200 | 212 | \$137.74 | *** ## How It Works The Upstack pixel tracks purchase events on your Shopify store and identifies repeat customers as those who have completed multiple orders. Repeat Purchase Value sums the monetary value of all purchase events where the customer has a history of multiple purchases. *** ## When to Use | Scenario | Action | | ----------------------------------- | ---------------------------------------------------------------------- | | Measuring retention revenue | Track revenue from your most loyal multi-purchase customers | | Evaluating loyalty programs | Measure impact of retention campaigns on repeat buyer revenue | | Calculating customer lifetime value | Use repeat purchase data to refine LTV models | | Optimizing retention spend | Assess whether remarketing investments drive profitable repeat revenue | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------- | | [Returning Customer Purchase Value](/reference/metrics/funnel/conversions/returning-customer-purchase-value) | Broader segment — all repeat buyer revenue including second-time purchasers | | [New Customer Purchase Value](/reference/metrics/funnel/conversions/new-customer-purchase-value) | First-time buyer revenue for comparison | | [Lapsed Purchase Value](/reference/metrics/funnel/conversions/lapsed-purchase-value) | Win-back revenue from dormant customers | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Returning Customer Purchase Value: Repeat Buyer Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/returning-customer-purchase-value Track returning customer purchase value in your Shopify store. Measure repeat buyer revenue from pixel-tracked purchase events. Returning Customer Purchase Value measures the total monetary value of purchase events from customers who have bought before, tracked by the Upstack pixel. ## Formula **Returning Customer Purchase Value** = **SUM** ( [**Purchase Value**](/reference/metrics/funnel/conversions/purchases-value) ) **WHERE** customer\_type = returning\_customer ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | | **Purchase Value** | Monetary value of individual purchase events tracked by the pixel | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to purchases from customers who have ordered before | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store tracked **\$47,500** in returning customer purchase value last month from **312 repeat purchases**. | Period | RC Purchase Value | RC Purchases | Avg Value | | ------ | ----------------- | ------------ | --------- | | Week 1 | \$11,200 | 78 | \$143.59 | | Week 2 | \$12,800 | 85 | \$150.59 | | Week 3 | \$10,500 | 72 | \$145.83 | | Week 4 | \$13,000 | 77 | \$168.83 | *** ## How It Works The Upstack pixel tracks purchase events on your Shopify store and identifies whether each buyer is a new or returning customer. Returning Customer Purchase Value sums the monetary value of all purchase events where the customer has previously completed an order. *** ## When to Use | Scenario | Action | | ---------------------------- | ----------------------------------------------------------------------------- | | Measuring retention revenue | Compare RC purchase value to total revenue to gauge repeat buyer contribution | | Evaluating loyalty programs | Track changes in RC purchase value after launching retention campaigns | | Calculating customer LTV | Use as input for lifetime value models based on repeat purchase behavior | | Optimizing remarketing spend | Assess whether remarketing ads drive profitable returning customer revenue | *** ## Related Metrics | Metric | Relationship | | ------------------------------------ | -------------------------------------------------- | | Returning Customer Purchases | Count of repeat buyer purchases (volume vs. value) | | Cost per Returning Customer Purchase | Ad spend efficiency for acquiring repeat purchases | | New Customer Purchase Value | First-time buyer revenue for comparison | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Returning Customer Purchases: Track Repeat Buyer Conversions Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/returning-customer-purchases Track returning customer purchases for your Shopify store. Measure repeat buyer conversions and customer retention effectiveness. Returning Customer Purchases counts the total number of purchase events from customers who have previously purchased from your Shopify store. ## Formula **Returning Customer Purchases** = **COUNT** ( [**Purchases**](/reference/metrics/funnel/conversions/purchases) ) **WHERE** customer\_type = returning\_customer ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | **Purchases** | All purchase events tracked by the Upstack pixel | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to orders from customers who have purchased before | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store recorded **2,847 returning customer purchases** in March: | Customer Type | Purchases | % of Total | | ------------------- | --------- | ---------- | | Returning Customers | 2,847 | 62% | | New Customers | 1,753 | 38% | | **Total** | **4,600** | **100%** | *** ## How It Works The Upstack pixel tracks every purchase event on your Shopify store and identifies whether the customer has purchased before based on their email, phone, or identity match. Returning customer purchases are counted when the customer\_type dimension equals "returning\_customer" — indicating they have at least one prior completed order. *** ## When to Use | Scenario | Action | | ------------------------------------- | ----------------------------------------------------------------------------- | | Measuring retention success | Track returning customer purchases to evaluate loyalty and repeat buying | | Calculating customer acquisition cost | Compare new vs returning purchase volume to understand CAC efficiency | | Evaluating remarketing campaigns | Assess whether retargeting drives repeat purchases | | Benchmarking LTV performance | Monitor returning purchases as a leading indicator of customer lifetime value | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------ | ----------------------------------------------- | | [New Customer Purchases](/reference/metrics/funnel/conversions/new-customer-purchases) | Opposite segment — first-time buyer conversions | | [Total Purchases](/reference/metrics/funnel/conversions/all-purchases) | Sum of new + returning customer purchases | | [Returning Customer Purchase Value](/reference/metrics/funnel/conversions/returning-customer-purchase-value) | Total revenue from returning customer orders | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Revenue: Total Purchase Value from Your Shopify Store Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/revenue Track total revenue from completed purchases in your Shopify store. Measure conversion value from the Upstack Pixel across all attribution channels. Revenue measures the total monetary value from completed purchases tracked by the Upstack Pixel on your Shopify store. ## Formula **Revenue** = **SUM** ( [**Purchase Value**](/reference/metrics/funnel/conversions/purchases-value) ) **WHERE** event = purchase ### Formula Components | Metric | Definition | | -------------------- | ------------------------------------------------------------ | | **Purchase Value** | The total order value from each completed purchase event | | **event = purchase** | Filters to only purchase events tracked by the Upstack Pixel | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store had **\$127,450** in tracked revenue from **1,847 purchases** in January. | Week | Revenue | Purchases | Avg. Order Value | | --------- | -------- | --------- | ---------------- | | Jan 1–7 | \$28,340 | 412 | \$68.79 | | Jan 8–14 | \$31,220 | 453 | \$68.92 | | Jan 15–21 | \$34,890 | 498 | \$70.06 | | Jan 22–31 | \$33,000 | 484 | \$68.18 | *** ## How It Works Revenue is calculated by summing the total value of all purchase events tracked by the Upstack Pixel. Each time a customer completes a checkout on your Shopify store, the purchase event fires with the order total. This metric represents the complete picture of revenue attributed through Upstack tracking. *** ## When to Use | Scenario | Action | | -------------------------------- | ----------------------------------------------------------------------------------- | | Measuring overall performance | Compare revenue across date ranges to identify growth trends | | Evaluating channel effectiveness | Break down revenue by attribution source to see which channels drive the most value | | Calculating efficiency metrics | Use as the numerator for ROAS, revenue per visitor, and conversion value metrics | | Setting campaign goals | Establish revenue targets and track progress against benchmarks | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ---------------------------------------------------- | | [Purchases](/reference/metrics/funnel/conversions/purchases) | The count of transactions that generate this revenue | | [Revenue per Visitor](/reference/metrics/funnel/conversions/revenue-per-visitor) | Divides this revenue by unique visitors | | [Revenue per Session](/reference/metrics/funnel/conversions/revenue-per-session) | Divides this revenue by total sessions | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Revenue per Session: Average Revenue Generated Per Session Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/revenue-per-session Track Revenue per Session for your Shopify store. Measure how efficiently sessions convert into revenue and optimize your e-commerce funnel. Revenue per Session measures the average revenue generated from each browsing session on your Shopify store. ## Formula **Revenue per Session** = [**Revenue**](/reference/metrics/funnel/conversions/revenue) ÷ [**Sessions**](/reference/metrics/funnel/awareness/sessions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------ | ----------------------------------------------------- | | [**Revenue**](/reference/metrics/funnel/conversions/revenue) | Total tracked revenue from completed Shopify orders | | [**Sessions**](/reference/metrics/funnel/awareness/sessions) | Count of unique sessions tracked by the Upstack pixel | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generated **\$47,500** in revenue from **12,500 sessions** in February: | Week | Revenue | Sessions | Rev/Session | | --------- | ------------ | ---------- | ----------- | | Week 1 | \$10,200 | 2,800 | \$3.64 | | Week 2 | \$11,800 | 3,100 | \$3.81 | | Week 3 | \$12,500 | 3,400 | \$3.68 | | Week 4 | \$13,000 | 3,200 | \$4.06 | | **Total** | **\$47,500** | **12,500** | **\$3.80** | *** ## How It Works Revenue per Session divides your total tracked revenue from Shopify orders by the number of unique sessions tracked by the Upstack pixel. A higher value indicates that sessions are converting more efficiently into revenue, either through higher conversion rates or larger order values. *** ## When to Use | Scenario | Action | | -------------------------- | ---------------------------------------------------------------------- | | Compare traffic quality | Identify which channels drive sessions with higher revenue potential | | Measure funnel efficiency | Track whether site improvements increase session value over time | | Evaluate campaigns | Compare Revenue per Session across marketing campaigns to find winners | | Set performance benchmarks | Establish baseline targets for session monetization | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ------------------------------------------------- | | [Revenue](/reference/metrics/funnel/conversions/revenue) | Numerator — total tracked revenue | | [Sessions](/reference/metrics/funnel/awareness/sessions) | Denominator — unique session count | | [Revenue per Visitor](/reference/metrics/funnel/conversions/revenue-per-visitor) | Similar metric using visitors instead of sessions | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Revenue per Visitor: Average Revenue Per Unique Visitor Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/revenue-per-visitor Track Revenue per Visitor (RPV) for your Shopify store. Compare traffic quality across channels and optimize marketing spend by visitor value. Revenue per Visitor measures the average revenue generated for every unique visitor to your Shopify store. ## Formula **Revenue per Visitor** = [**Revenue**](/reference/metrics/funnel/conversions/revenue) ÷ [**Unique Visitors**](/reference/metrics/funnel/awareness/unique-visitors) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | ---------------------------------------------------------- | | [**Revenue**](/reference/metrics/funnel/conversions/revenue) | Total purchase value tracked from your Shopify orders | | [**Unique Visitors**](/reference/metrics/funnel/awareness/unique-visitors) | Count of distinct visitors identified by the Upstack pixel | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generated **\$47,500** in revenue from **12,500 unique visitors** in March: | Channel | Revenue | Visitors | Revenue per Visitor | | -------------- | ------------ | ---------- | ------------------- | | Organic Search | \$18,000 | 5,000 | \$3.60 | | Meta Ads | \$15,500 | 4,500 | \$3.44 | | Email | \$8,500 | 1,500 | \$5.67 | | Direct | \$5,500 | 1,500 | \$3.67 | | **Total** | **\$47,500** | **12,500** | **\$3.80** | *** ## How It Works Revenue per Visitor divides total Shopify order revenue by the number of unique visitors tracked through the Upstack pixel. This metric combines purchase data from your Shopify store with visitor identity resolution to measure the monetary value each visitor brings to your site. *** ## When to Use | Scenario | Action | | --------------------------------- | -------------------------------------------------------- | | Comparing traffic sources | Identify which channels drive higher-value visitors | | Evaluating campaign quality | Measure if paid traffic converts into meaningful revenue | | Setting traffic acquisition goals | Calculate visitors needed to hit revenue targets | | Optimizing marketing spend | Shift budget toward channels with higher RPV | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ------------------------------------------------- | | [Revenue](/reference/metrics/funnel/conversions/revenue) | Numerator — total revenue tracked | | [Unique Visitors](/reference/metrics/funnel/awareness/unique-visitors) | Denominator — total visitors tracked | | [Revenue per Session](/reference/metrics/funnel/conversions/revenue-per-session) | Similar metric using sessions instead of visitors | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # ROAS: Return on Ad Spend Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/roas Track your Return on Ad Spend (ROAS) with attributed revenue from Upstack's conversion tracking. Measure ad efficiency and optimize campaigns. ROAS measures how much revenue you generate for every dollar spent on advertising, using Upstack's first-party conversion tracking. ## Formula **ROAS** = [**Attributed Revenue**](/reference/metrics/funnel/conversions/revenue) ÷ **Ad Spend** ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------- | -------------------------------------------------------------- | | [**Attributed Revenue**](/reference/metrics/funnel/conversions/revenue) | Total revenue from conversions attributed to your ad campaigns | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected platforms | | Metadata | | | --------------- | ----------------------- | | **Type** | Ratio | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$10,000** on advertising last month and generated **\$45,000** in attributed revenue tracked by Upstack. | Metric | Value | Calculation | | ------------------ | -------- | --------------------------------- | | Ad Spend | \$10,000 | Total across Meta, Google, TikTok | | Attributed Revenue | \$45,000 | Tracked conversions from ads | | **ROAS** | **4.5x** | \$45,000 ÷ \$10,000 | A ROAS of 4.5x means every dollar spent on advertising generated \$4.50 in revenue. *** ## How It Works Upstack tracks customer journeys from ad click to purchase using first-party data. When a customer converts, the revenue is attributed to the ad campaign that drove them. ROAS divides this attributed revenue by your total ad spend to show the true efficiency of your advertising. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------------------- | | Evaluating campaign efficiency | Compare ROAS across campaigns to identify top performers | | Setting ad budgets | Increase spend on campaigns with ROAS above your target threshold | | Measuring marketing ROI | Track ROAS trends to understand overall advertising effectiveness | | Optimizing creative and targeting | Low ROAS signals a need to refresh ads or refine audience targeting | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------- | ------------------------------------------------------- | | [Attributed Revenue](/reference/metrics/funnel/conversions/revenue) | The numerator in the ROAS calculation | | Conversion Rate | Higher conversion rates typically improve ROAS | | [Cost Per Acquisition](/reference/metrics/funnel/conversions/cost-per-purchase) | Inverse efficiency metric — lower CPA means higher ROAS | [See all Conversion metrics →](/reference/metrics/funnel/conversions) # Schedule: Track Appointment Bookings Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/schedule Track schedule events for your site. Measure how often visitors book appointments or events with the Upstack pixel. Schedule measures the total number of times visitors scheduled an appointment or event on your site. ## Formula **Schedule** = **COUNT** ( [**schedule\_events**](/reference/metrics/advertising/meta-ads/schedule-events) ) ### Formula Components | Metric | Definition | | -------------------- | ---------------------------------------------------------- | | **schedule\_events** | Individual scheduling actions tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your business had **247 schedule events** in March across all marketing channels. | Channel | Schedule Events | Conversion Rate | | -------------- | --------------- | --------------- | | Organic Search | 89 | 3.2% | | Paid Social | 102 | 2.8% | | Email | 56 | 5.1% | *** ## How It Works The Upstack pixel tracks every time a visitor completes a scheduling action on your site. This includes booking appointments, consultations, demos, or any calendar-based event. Each completed schedule action increments the count. *** ## When to Use | Scenario | Action | | ------------------------------- | ----------------------------------------------------------- | | Measuring lead generation | Track how many prospects book consultations or demos | | Evaluating campaign performance | Compare schedule rates across marketing channels | | Optimizing conversion funnels | Identify drop-off points before scheduling | | Calculating cost per lead | Divide ad spend by schedule events to find acquisition cost | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ------------------------------------------ | | [Book Call](/reference/metrics/funnel/conversions/book-call) | Similar conversion event for call bookings | | [Contact](/reference/metrics/funnel/conversions/contact) | Tracks contact form submissions | | [Cost per Schedule](/reference/metrics/funnel/conversions/cost-per-schedule) | Ad spend divided by schedule events | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Schedule Value: Revenue from Appointment Bookings Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/schedule-value Track total revenue from scheduled appointments and bookings. Measure the monetary value of your lead generation and scheduling funnel. The total monetary value of all tracked schedule events (appointments and bookings). ## Formula **Schedule Value** = **SUM** ( Schedule Event Values ) ### Formula Components | Metric | Definition | | ------------------------- | ---------------------------------------------------------- | | **SUM** | Aggregation function that totals all schedule event values | | **Schedule Event Values** | Monetary value assigned to each schedule event | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your campaigns generated **\$18,750** from scheduled appointments this month: | Source | Value | Share | | ---------- | -------- | ----- | | Meta Ads | \$11,250 | 60% | | Google Ads | \$4,690 | 25% | | Organic | \$2,810 | 15% | *** ## How It Works Schedule Value sums the monetary value from each tracked schedule event. When a visitor books an appointment or schedules a consultation, the pixel captures the event value and attributes it to the originating marketing touchpoint based on your attribution model. *** ## When to Use | Scenario | Action | | -------------------------------- | --------------------------------------------------- | | Measuring lead gen revenue | Track total pipeline value from booked appointments | | Comparing acquisition channels | Identify which sources drive highest-value bookings | | Calculating cost per appointment | Divide Ad Spend by Schedule Value for efficiency | | Optimizing booking funnels | Track value changes after landing page improvements | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ---------------------------------------------- | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Total conversion events (schedule is one type) | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total value across all conversion types | | [Average Conversion Value](/reference/metrics/funnel/conversions/average-conversion-value) | Average value per conversion event | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Select Shipping Method: Track Checkout Shipping Selections Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/select-shipping-method Count shipping method selections in your checkout funnel. Measure how many visitors choose a shipping option to identify checkout drop-off points. Select Shipping Method counts the total number of times visitors select a shipping option during checkout. ## Formula **Select Shipping Method** = **COUNT** ( Select Shipping Method Events ) ### Formula Components | Metric | Definition | | --------------------------------- | ------------------------------------------------------------------------------------------- | | **Select Shipping Method Events** | Each instance a visitor selects a shipping option (standard, express, etc.) during checkout | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your Shopify store tracked shipping method selections throughout the checkout funnel in March: | Week | Select Shipping Method | Initiate Checkout | Drop-off Rate | | --------- | ---------------------- | ----------------- | ------------- | | Week 1 | 1,456 | 1,892 | 23.0% | | Week 2 | 1,598 | 2,034 | 21.4% | | Week 3 | 1,342 | 1,756 | 23.6% | | Week 4 | 1,687 | 2,189 | 22.9% | | **Total** | **6,083** | **7,871** | **22.7%** | *** ## How It Works Select Shipping Method counts every shipping selection event fired by the Upstack Pixel. When a visitor chooses a shipping option—standard, express, local pickup, or other delivery methods—one event is recorded. This metric captures visitors who have progressed past checkout initiation and are actively completing their order details. *** ## When to Use | Scenario | Action | | --------------------------- | ---------------------------------------------------------------- | | Checkout funnel analysis | Compare against initiate checkout to find shipping step drop-off | | Shipping friction diagnosis | Identify if limited shipping options cause abandonment | | Shipping UX optimization | A/B test shipping presentation and measure impact | | Regional analysis | Compare shipping selection rates across geographic segments | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | ------------------------------------------- | | [Add Payment Info](/reference/metrics/funnel/conversions/add-payment-info) | Next step in checkout funnel after shipping | | [Cost per Select Shipping Method](/reference/metrics/funnel/conversions/cost-per-select-shipping-method) | Cost efficiency for this checkout stage | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Overall checkout efficiency | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Select Shipping Method Value: Total Cart Value at Shipping Selection Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/select-shipping-method-value Track the total monetary value of select shipping method events in your checkout funnel. Measure cart values when shoppers choose their shipping option. Total monetary value of all select shipping method events tracked by the Upstack pixel. ## Formula **Select Shipping Method Value** = **SUM** ( Cart Values at Shipping Method Selection ) ### Formula Components | Metric | Definition | | --------------- | ------------------------------------------------------------------------------ | | **SUM** | Aggregation function that totals all values | | **Cart Values** | Monetary value of carts when visitors select a shipping method during checkout | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your Shopify store recorded **\$98,500** in cart value at the shipping method selection step this month: | Day | Events | Value | | --------- | ------ | -------- | | Monday | 623 | \$31,150 | | Tuesday | 704 | \$35,200 | | Wednesday | 643 | \$32,150 | *** ## How It Works Select Shipping Method Value captures the cart total when a shopper selects their preferred shipping option during checkout. This represents potential revenue from visitors who have moved past the initial checkout and shipping info stages and are actively comparing delivery options before payment. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------------- | | Analyzing checkout funnel value | Compare against add shipping info value to find drop-off | | Measuring shipping option impact | Track how shipping choices affect cart abandonment | | Identifying high-value segments | Find which traffic sources bring larger cart values at this stage | | Diagnosing checkout friction | Spot where cart value leaks occur between shipping info and payment | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [Cost per Select Shipping Method](/reference/metrics/funnel/conversions/cost-per-select-shipping-method) | Ad spend per shipping method selection event | | [Add Shipping Info Value](/reference/metrics/funnel/conversions/add-shipping-info-value) | Previous step in checkout funnel | | [Add Payment Info Value](/reference/metrics/funnel/conversions/add-payment-info-value) | Next step in checkout funnel | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Session Conversion Rate: Measure Your Shopify Store's Conversion Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/session-conversion-rate Track the percentage of Shopify sessions that result in a purchase. Session Conversion Rate helps you measure overall store efficiency and optimize your e-commerce funnel. Session Conversion Rate measures the percentage of tracked sessions that result in a purchase on your Shopify store. ## Formula **Session Conversion Rate** = ( [**Purchases**](/reference/metrics/funnel/conversions/all-purchases) ÷ [**Sessions**](/reference/metrics/funnel/awareness/sessions) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------- | -------------------------------------------------------------------------------- | | **Purchases** | Total purchase events tracked by the Upstack Pixel from completed Shopify orders | | [**Sessions**](/reference/metrics/funnel/sessions/session-count) | Total unique sessions tracked on your website | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store had **24,500 sessions** and **490 purchases** this month: | Metric | Value | | --------------------------- | --------- | | Sessions | 24,500 | | Purchases | 490 | | **Session Conversion Rate** | **2.00%** | By channel: | Channel | Sessions | Purchases | Conversion Rate | | ---------- | -------- | --------- | --------------- | | Meta Ads | 12,000 | 276 | 2.30% | | Google Ads | 8,000 | 152 | 1.90% | | Organic | 4,500 | 62 | 1.38% | *** ## How It Works Upstack tracks every session on your Shopify store using the [Upstack Pixel](/pixel) and counts purchases from completed Shopify orders. The conversion rate is calculated by dividing the number of purchases by the total sessions and multiplying by 100 to express it as a percentage. *** ## When to Use | Scenario | Action | | ------------------------- | ----------------------------------------------------------- | | Conversion rate dropping | Audit checkout flow, page speed, and product pages | | Comparing traffic sources | Identify which channels drive the highest conversion rates | | A/B testing landing pages | Measure impact of page changes on conversion rate | | Setting campaign goals | Benchmark against historical rates to set realistic targets | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | -------------------------------------------- | | [Session Count](/reference/metrics/funnel/sessions/session-count) | Denominator in this calculation | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Total attributed conversions across channels | | [Revenue per Session](/reference/metrics/funnel/conversions/revenue-per-session) | Average revenue generated per session | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Sign Up: Account Registration Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/sign-up Track sign up events when visitors create an account on your site. Measure account registration funnel performance and optimize user acquisition campaigns. The total number of times visitors signed up for an account, tracked by the Upstack pixel. ## Formula **Sign Up** = **COUNT** ( Sign Up Events ) ### Formula Components | Metric | Definition | | ------------------ | -------------------------------------------------------------- | | **COUNT** | Aggregation function that counts each sign up event | | **Sign Up Events** | Events triggered when a visitor completes account registration | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your site recorded **2,340 sign ups** this month from paid campaigns: | Channel | Sign Ups | Share | | ---------- | -------- | ----- | | Meta Ads | 1,287 | 55% | | Google Ads | 702 | 30% | | TikTok Ads | 351 | 15% | *** ## How It Works Upstack counts sign up events fired by your pixel when visitors complete account registration. Each unique sign up event increments the count, providing visibility into how effectively your campaigns drive account creation. *** ## When to Use | Scenario | Action | | ------------------- | ------------------------------------------------------ | | Sign ups increasing | Scale campaigns driving registrations | | Sign ups dropping | Check registration form, landing pages, or pixel setup | | Comparing channels | Identify which platforms drive the most registrations | | Building audiences | Create lookalike audiences from sign up converters | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | --------------------------------------------------- | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Total attributed conversions across all event types | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Revenue generated from conversion events | | [Unique Converters](/reference/metrics/funnel/conversions/unique-converters) | Distinct visitors who converted | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Sign Up Value: Total Revenue from Sign Up Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/sign-up-value Track total monetary value of sign up events captured by the Upstack pixel. Measure the revenue potential of your sign up campaigns. Total monetary value of sign up events tracked by the Upstack pixel. ## Formula **Sign Up Value** = **SUM** ( Sign Up Event Values ) ### Formula Components | Metric | Definition | | ------------------------ | ---------------------------------------------------------- | | **SUM** | Aggregation function that totals all sign up event values | | **Sign Up Event Values** | Monetary value assigned to each sign up event when tracked | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your sign up campaigns captured **\$8,500** in sign up value this month across 850 sign ups: | Channel | Sign Up Value | Sign Ups | Avg Value | | ---------- | ------------- | -------- | --------- | | Meta Ads | \$5,000 | 500 | \$10.00 | | Google Ads | \$2,500 | 250 | \$10.00 | | TikTok Ads | \$1,000 | 100 | \$10.00 | *** ## How It Works Sign Up Value sums the monetary value assigned to each sign up event tracked by the Upstack pixel. When a visitor creates an account or registers on your site, the event can include a custom value representing expected lifetime value or lead score. This metric helps quantify the total pipeline value generated by your user acquisition campaigns. *** ## When to Use | Scenario | Action | | -------------------------- | --------------------------------------------------------------- | | User acquisition valuation | Measure total revenue potential from sign up campaigns | | Channel comparison | Compare sign up value contribution across advertising platforms | | Lead quality analysis | Higher sign up values may indicate more qualified prospects | | ROI calculation | Pair with cost per sign up to calculate acquisition ROI | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | ----------------------------------------------------- | | [Sign Up](/reference/metrics/funnel/conversions/sign-up) | Count of sign up events that contribute to this value | | [Cost per Sign Up](/reference/metrics/funnel/conversions/cost-per-sign-up) | Spend efficiency for generating sign ups | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Signup Completed: Track Finished Registrations Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/signup-completed Track when users complete the signup process. Measure registration conversion. Signup Completed counts the number of times users successfully complete registration. ## Formula **Signup Completed** = **COUNT** ( signup\_completed events ) ### Formula Components | Metric | Definition | | ---------------------------- | -------------------------------------------------- | | **signup\_completed events** | Events fired when a user completes the signup flow | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your application tracked **1,250 signup\_completed events** in January. | Metric | Value | Notes | | ---------------- | ----- | ------------------------ | | Signup Started | 3,450 | Started signup flow | | Signup Completed | 1,250 | Finished registration | | Completion Rate | 36.2% | Signup funnel conversion | *** ## How It Works The Upstack pixel tracks `signup_completed` events when users successfully complete the registration flow. This typically fires after email verification or when the user reaches the welcome/onboarding screen. *** ## When to Use | Scenario | Action | | ---------------------- | ------------------------------------- | | Signup funnel analysis | Measure start-to-complete conversion | | Campaign attribution | Identify channels driving completions | | Form optimization | Track impact of UX improvements | | Growth tracking | Monitor registration volume | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | -------------------------- | | [Signup Completed Cost](/reference/metrics/funnel/conversions/signup-completed-cost) | Cost per completion | | [Signup Completed Value](/reference/metrics/funnel/conversions/signup-completed-value) | Value from completions | | [Signup Started](/reference/metrics/funnel/conversions/signup-started) | Beginning of signup funnel | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Signup Completed Cost: Ad Spend per Registration Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/signup-completed-cost Calculate advertising cost per completed registration. Measure signup acquisition cost. Signup Completed Cost measures how much you spend on advertising for each completed registration. ## Formula **Signup Completed Cost** = **Ad Spend** ÷ [**Signup Completed**](/reference/metrics/funnel/conversions/signup-completed) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**Signup Completed**](/reference/metrics/funnel/conversions/signup-completed) | Count of completed registrations | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$5,000** on Meta ads in January and drove **500 completed signups**. | Metric | Value | Notes | | --------------------- | ------- | ------------------------ | | Ad Spend | \$5,000 | Monthly advertising cost | | Signup Completed | 500 | Completed registrations | | Signup Completed Cost | \$10.00 | Cost per signup | *** ## How It Works This metric divides your total ad spend by the number of completed signups. It represents your cost per registered user, a key input for calculating customer acquisition cost. *** ## When to Use | Scenario | Action | | ------------------- | ----------------------------------------- | | Registration CPA | Track cost per completed signup | | Channel comparison | Compare registration costs across sources | | Budget optimization | Allocate spend to efficient channels | | CAC calculation | Factor into total acquisition cost | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ----------------------------------- | | [Signup Completed](/reference/metrics/funnel/conversions/signup-completed) | The denominator in this calculation | | [Signup Completed Value](/reference/metrics/funnel/conversions/signup-completed-value) | Value from completions | | [Account Created Cost](/reference/metrics/funnel/conversions/account-created-cost) | Cost per account creation | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Signup Completed Value: Revenue from Completed Signups Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/signup-completed-value Track the monetary value attributed to completed registrations. Measure expected revenue. Signup Completed Value totals the monetary value attributed to completed registrations. ## Formula **Signup Completed Value** = **SUM** ( value ) **FROM** [**signup\_completed**](/reference/metrics/funnel/conversions/signup-completed) events ### Formula Components | Metric | Definition | | ---------------------------- | ------------------------------------------------------ | | **value** | The monetary value attributed to each completed signup | | **signup\_completed events** | Events fired when users complete registration | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example You had **500 completed signups** in January with an average attributed value of **\$40**. | Metric | Value | Notes | | ---------------------- | -------- | ------------------------- | | Signup Completed | 500 | Completed registrations | | Avg Signup Value | \$40 | Expected value per signup | | Signup Completed Value | \$20,000 | Total attributed value | *** ## How It Works This metric sums the value attribute from all signup\_completed events. The value typically represents expected LTV based on historical conversion rates from signup to paying customer. *** ## When to Use | Scenario | Action | | ------------------ | --------------------------------------- | | Revenue projection | Estimate revenue from signups | | ROAS calculation | Calculate return on signup campaigns | | Channel comparison | Compare expected value by source | | LTV/CAC analysis | Factor signup value into unit economics | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | --------------------------- | | [Signup Completed](/reference/metrics/funnel/conversions/signup-completed) | Count of completed signups | | [Signup Completed Cost](/reference/metrics/funnel/conversions/signup-completed-cost) | Cost per signup | | [Account Created Value](/reference/metrics/funnel/conversions/account-created-value) | Value from account creation | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Signup Started: Track Registration Initiations Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/signup-started Track when users begin the signup process. Measure top-of-funnel intent. Signup Started counts the number of times users initiate the registration process. ## Formula **Signup Started** = **COUNT** ( signup\_started events ) ### Formula Components | Metric | Definition | | -------------------------- | ----------------------------------------------- | | **signup\_started events** | Events fired when a user begins the signup flow | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your application tracked **3,450 signup\_started events** in January. | Metric | Value | Notes | | ---------------- | ----- | ------------------------ | | Signup Started | 3,450 | Started signup flow | | Signup Completed | 1,250 | Finished registration | | Completion Rate | 36.2% | Signup funnel conversion | *** ## How It Works The Upstack pixel tracks `signup_started` events when users begin the registration flow—typically when they click "Sign Up" or reach the first step of the registration form. *** ## When to Use | Scenario | Action | | -------------------- | --------------------------------------- | | Funnel analysis | Measure signup intent vs completion | | Form optimization | Identify drop-off in signup flow | | Campaign attribution | Track initial interest by source | | UX improvement | Compare signup start rates across pages | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | -------------------------- | | [Signup Started Cost](/reference/metrics/funnel/conversions/signup-started-cost) | Cost per signup initiation | | [Signup Started Value](/reference/metrics/funnel/conversions/signup-started-value) | Value attributed to starts | | [Signup Completed](/reference/metrics/funnel/conversions/signup-completed) | Finished registrations | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Signup Started Cost: Ad Spend per Signup Initiation Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/signup-started-cost Calculate advertising cost per signup initiation. Measure cost to generate signup intent. Signup Started Cost measures how much you spend on advertising for each signup initiation. ## Formula **Signup Started Cost** = **Ad Spend** ÷ [**Signup Started**](/reference/metrics/funnel/conversions/signup-started) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**Signup Started**](/reference/metrics/funnel/conversions/signup-started) | Count of signup initiations | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$5,000** on Meta ads in January and drove **1,380 signup starts**. | Metric | Value | Notes | | ------------------- | ------- | ------------------------ | | Ad Spend | \$5,000 | Monthly advertising cost | | Signup Started | 1,380 | Signup initiations | | Signup Started Cost | \$3.62 | Cost per signup start | *** ## How It Works This metric divides your total ad spend by the number of signup starts. It measures the cost to generate signup intent, useful for top-of-funnel optimization. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------ | | Top-of-funnel efficiency | Measure cost to generate intent | | Channel comparison | Compare signup interest by source | | Landing page optimization | Compare signup start costs across variants | | Budget allocation | Optimize for early funnel conversions | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | ----------------------------------- | | [Signup Started](/reference/metrics/funnel/conversions/signup-started) | The denominator in this calculation | | [Signup Started Value](/reference/metrics/funnel/conversions/signup-started-value) | Value of signup starts | | [Signup Completed Cost](/reference/metrics/funnel/conversions/signup-completed-cost) | Cost for completed signups | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Signup Started Value: Attributed Value of Signup Initiations Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/signup-started-value Track the monetary value attributed to signup initiations. Measure expected value from intent. Signup Started Value totals the monetary value attributed to signup initiations. ## Formula **Signup Started Value** = **SUM** ( value ) **FROM** [**signup\_started**](/reference/metrics/funnel/conversions/signup-started) events ### Formula Components | Metric | Definition | | -------------------------- | -------------------------------------------------- | | **value** | The monetary value attributed to each signup start | | **signup\_started events** | Events fired when users begin signup | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example You had **1,380 signup starts** in January with an average attributed value of **\$15**. | Metric | Value | Notes | | -------------------- | -------- | ------------------------ | | Signup Started | 1,380 | Signup initiations | | Avg Start Value | \$15 | Expected value per start | | Signup Started Value | \$20,700 | Total attributed value | *** ## How It Works This metric sums the value attribute from all signup\_started events. The value typically represents expected revenue based on historical conversion rates from signup start to paying customer. *** ## When to Use | Scenario | Action | | -------------------- | -------------------------------------------- | | Pipeline forecasting | Project revenue from signup intent | | ROAS calculation | Calculate return on intent generation | | Channel comparison | Compare expected value by acquisition source | | Funnel optimization | Understand value at each stage | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ---------------------- | | [Signup Started](/reference/metrics/funnel/conversions/signup-started) | Count of signup starts | | [Signup Started Cost](/reference/metrics/funnel/conversions/signup-started-cost) | Cost per signup start | | [Signup Completed Value](/reference/metrics/funnel/conversions/signup-completed-value) | Value from completions | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Submit Application: Track Application Submissions Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/submit-application Track application submissions on your website. Measure lead generation conversions from form completions and application funnel performance. Submit Application counts the total number of application form submissions tracked on your website. ## Formula **Submit Applications** = **COUNT** ( Submit Application Events ) ### Formula Components | Metric | Definition | | ----------------------------- | -------------------------------------------------------------------------- | | **Submit Application Events** | Individual application form submission events tracked by the Upstack Pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your website received **847 application submissions** in March across all traffic sources. | Source | Applications | Conversion Rate | | ----------- | ------------ | --------------- | | Paid Search | 312 | 4.2% | | Organic | 289 | 3.8% | | Social | 156 | 2.9% | | Direct | 90 | 5.1% | *** ## How It Works Submit Application tracks when visitors complete and submit application forms on your website. Each submission fires a `submit_application` event that the Upstack Pixel captures and attributes to the visitor's traffic source. *** ## When to Use | Scenario | Action | | ----------------------------------- | --------------------------------------------------------------- | | Measure lead generation performance | Compare application volume across campaigns and channels | | Optimize application funnel | Identify drop-off points by comparing to earlier funnel stages | | Calculate cost per application | Divide ad spend by application count for acquisition efficiency | | Evaluate landing page effectiveness | Compare application rates across different page variants | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | ------------------------------------- | | [Submit Application Value](/reference/metrics/funnel/conversions/submit-application-value) | Total value of submitted applications | | [Submit Application Cost](/reference/metrics/funnel/conversions/cost-per-submit-application) | Cost per application submission | | [Lead](/reference/metrics/funnel/conversions/lead) | Broader lead capture metric | | [Complete Registration](/reference/metrics/funnel/conversions/complete-registration) | Related account creation metric | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Submit Application Value: Track Conversion Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/submit-application-value Track the total monetary value of submit application events. Measure application submission revenue and optimize your funnel performance. Submit Application Value measures the total monetary value associated with application submission events tracked by the Upstack pixel. ## Formula **Submit Application Value** = **SUM** ( value ) **WHERE** event = submit\_application ### Formula Components | Metric | Definition | | ------------------------------- | ---------------------------------------------------------- | | **value** | Monetary amount passed with each submit\_application event | | **event = submit\_application** | Filters to application submission conversion events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example A SaaS company tracks application submissions for their enterprise plan. In March, they received **127 applications** with a total Submit Application Value of **\$254,000**. | Week | Applications | Submit Application Value | | ------ | ------------ | ------------------------ | | Week 1 | 28 | \$56,000 | | Week 2 | 35 | \$70,000 | | Week 3 | 32 | \$64,000 | | Week 4 | 32 | \$64,000 | *** ## How It Works Submit Application Value sums the monetary value passed with each `submit_application` event tracked by the Upstack pixel. When a visitor submits an application on your site, you can pass a value parameter representing the potential or actual revenue associated with that application. This metric aggregates all those values over your selected time period. *** ## When to Use | Scenario | Action | | ------------------------------------ | ---------------------------------------------------------- | | Measuring application pipeline value | Track total potential revenue from submitted applications | | Optimizing ad spend for applications | Compare Submit Application Value against advertising costs | | Evaluating campaign performance | Identify which campaigns drive higher-value applications | | Calculating cost efficiency | Use with Cost per Submit Application to measure ROI | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | --------------------------------------------------- | | [Submit Application](/reference/metrics/funnel/conversions/submit-application) | Count of application submissions (volume vs. value) | | [Cost per Submit Application](/reference/metrics/funnel/conversions/cost-per-submit-application) | Efficiency metric for application acquisition | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscribe: Newsletter and Mailing List Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscribe Track subscribe events when visitors join your newsletter or mailing list. Measure subscription funnel performance and optimize email acquisition campaigns. The total number of times visitors subscribed to a newsletter or mailing list, tracked by the Upstack pixel. ## Formula **Subscribe** = **COUNT** ( Subscribe Events ) ### Formula Components | Metric | Definition | | -------------------- | -------------------------------------------------------------------------- | | **COUNT** | Aggregation function that counts each subscribe event | | **Subscribe Events** | Events triggered when a visitor subscribes to a newsletter or mailing list | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your Shopify store recorded **1,847 subscribe events** this month from paid campaigns: | Channel | Subscribes | Share | | ---------- | ---------- | ----- | | Meta Ads | 1,016 | 55% | | Google Ads | 554 | 30% | | TikTok Ads | 277 | 15% | *** ## How It Works Upstack counts subscribe events fired by your pixel when visitors opt in to your newsletter, mailing list, or email marketing. Each subscription event increments the count, providing visibility into how effectively your campaigns drive email list growth. *** ## When to Use | Scenario | Action | | --------------------- | ----------------------------------------------------- | | Subscribes increasing | Scale campaigns driving email signups | | Subscribes dropping | Check subscription forms, popups, or pixel setup | | Comparing channels | Identify which platforms drive the most email signups | | Building audiences | Create lookalike audiences from email subscribers | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | --------------------------------------------------- | | [Sign Up](/reference/metrics/funnel/conversions/sign-up) | Account registration events (vs email subscription) | | [Lead](/reference/metrics/funnel/conversions/lead) | Broader lead capture including subscribes | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Total attributed conversions across all event types | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscribe Value: Total Revenue from Subscribe Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscribe-value Track total monetary value of subscribe events captured by the Upstack pixel. Measure the revenue potential of your newsletter and mailing list campaigns. Total monetary value of subscribe events tracked by the Upstack pixel. ## Formula **Subscribe Value** = **SUM** ( Subscribe Event Values ) ### Formula Components | Metric | Definition | | -------------------------- | ------------------------------------------------------------ | | **SUM** | Aggregation function that totals all subscribe event values | | **Subscribe Event Values** | Monetary value assigned to each subscribe event when tracked | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your newsletter campaigns captured **\$9,200** in subscribe value this month across 1,840 subscriptions: | Channel | Subscribe Value | Subscribes | Avg Value | | ---------- | --------------- | ---------- | --------- | | Meta Ads | \$5,500 | 1,100 | \$5.00 | | Google Ads | \$2,760 | 552 | \$5.00 | | TikTok Ads | \$940 | 188 | \$5.00 | *** ## How It Works Subscribe Value sums the monetary value assigned to each subscribe event tracked by the Upstack pixel. When a visitor subscribes to your newsletter or mailing list, the event can include a custom value representing expected lifetime value or subscriber worth. This metric helps quantify the total pipeline value generated by your email acquisition campaigns. *** ## When to Use | Scenario | Action | | --------------------------- | --------------------------------------------------------------------------- | | Email list valuation | Measure total revenue potential from newsletter campaigns | | Channel comparison | Compare subscribe value contribution across advertising platforms | | Subscriber quality analysis | Higher subscribe values may indicate more qualified prospects | | ROI forecasting | Project downstream revenue based on subscriber-to-customer conversion rates | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | ------------------------------------------- | | [Subscribe](/reference/metrics/funnel/conversions/subscribe) | Count of subscribe events (vs total value) | | [Lead Value](/reference/metrics/funnel/conversions/lead-value) | Similar aggregation for lead capture events | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total value of all attributed conversions | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Churned: Track Subscription Cancellations Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-churned Track when subscriptions churn (fail to renew). Measure revenue attrition from lost subscribers. Subscription Churned counts subscriptions that churned (failed to renew or were cancelled). ## Formula **Subscription Churned** = **COUNT** ( subscription\_churned events ) ### Formula Components | Metric | Definition | | -------------------------------- | --------------------------------------- | | **subscription\_churned events** | Events fired when a subscription churns | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your SaaS application tracked **89 subscription\_churned events** in January. | Metric | Value | Notes | | -------------------- | ----- | ----------------- | | Active Subscriptions | 2,340 | Start of month | | Subscription Churned | 89 | Lost during month | | Monthly Churn Rate | 3.8% | Churn percentage | *** ## How It Works The Upstack pixel tracks `subscription_churned` events when a subscription ends due to non-renewal, cancellation, or payment failure. This metric captures involuntary and voluntary churn for retention analysis. *** ## When to Use | Scenario | Action | | ------------------- | -------------------------------------------- | | Retention analysis | Monitor churn rates over time | | Cohort analysis | Compare churn by acquisition source | | Revenue forecasting | Factor churn into MRR projections | | Win-back campaigns | Target churned subscribers for re-engagement | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | -------------------------- | | [Subscription Churned Cost](/reference/metrics/funnel/conversions/subscription-churned-cost) | CAC wasted on churned subs | | [Subscription Churned Value](/reference/metrics/funnel/conversions/subscription-churned-value) | MRR lost to churn | | [Subscription Cancelled](/reference/metrics/funnel/conversions/subscription-churned) | Voluntary cancellations | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Churned Cost: Wasted CAC from Churn Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-churned-cost Calculate advertising cost associated with churned subscriptions. Measure CAC lost to subscriber attrition. Subscription Churned Cost measures the advertising spend associated with subscriptions that churned. ## Formula **Subscription Churned Cost** = **Ad Spend** ÷ [**Subscription Churned**](/reference/metrics/funnel/conversions/subscription-churned) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**Subscription Churned**](/reference/metrics/funnel/conversions/subscription-churned) | Count of churned subscriptions | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$10,000** on advertising in January and had **89 churned subscriptions**. | Metric | Value | Notes | | ------------------------- | -------- | ------------------------ | | Ad Spend | \$10,000 | Monthly advertising cost | | Subscription Churned | 89 | Lost subscriptions | | Subscription Churned Cost | \$112.36 | Ad spend per churned sub | *** ## How It Works This metric divides your total ad spend by the number of churned subscriptions. While not a direct causation metric, it helps contextualize acquisition cost against retention performance. *** ## When to Use | Scenario | Action | | ------------------------ | ---------------------------------------------- | | Channel quality analysis | Identify sources with high churn attribution | | CAC efficiency | Compare acquisition cost to retention outcomes | | Win-back budgeting | Allocate spend to reduce churn impact | | Cohort performance | Analyze churn rates by acquisition channel | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ----------------------------------- | | [Subscription Churned](/reference/metrics/funnel/conversions/subscription-churned) | The denominator in this calculation | | [Subscription Churned Value](/reference/metrics/funnel/conversions/subscription-churned-value) | Revenue lost to churn | | [Subscription Created Cost](/reference/metrics/funnel/conversions/subscription-created-cost) | Cost to acquire new subs | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Churned Value: MRR Lost to Churn Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-churned-value Track the monetary value of churned subscriptions. Measure MRR attrition from subscriber loss. Subscription Churned Value totals the MRR lost from churned subscriptions. ## Formula **Subscription Churned Value** = **SUM** ( value ) **FROM** subscription\_churned events ### Formula Components | Metric | Definition | | -------------------------------- | ------------------------------------- | | **value** | The MRR of each churned subscription | | **subscription\_churned events** | Events fired when subscriptions churn | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example You had **89 churned subscriptions** in January with an average MRR of **\$65**. | Metric | Value | Notes | | -------------------------- | ------- | ------------------ | | Subscription Churned | 89 | Lost subscriptions | | Avg Churned MRR | \$65 | Average lost value | | Subscription Churned Value | \$5,785 | Total MRR lost | *** ## How It Works This metric sums the value attribute from all subscription\_churned events. The value represents the monthly recurring revenue that was lost, helping you understand the revenue impact of churn. *** ## When to Use | Scenario | Action | | ------------------------- | --------------------------------------- | | Revenue attrition | Track MRR lost to churn | | Net MRR calculation | Factor lost MRR into net revenue growth | | High-value churn analysis | Identify valuable subscribers at risk | | Retention ROI | Justify retention program investment | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------- | | [Subscription Churned](/reference/metrics/funnel/conversions/subscription-churned) | Count of churned subs | | [Subscription Churned Cost](/reference/metrics/funnel/conversions/subscription-churned-cost) | CAC associated with churn | | [Subscription Created Value](/reference/metrics/funnel/conversions/subscription-created-value) | New MRR for comparison | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Created: Track New Subscriptions Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-created Track when users create new subscriptions. Measure subscription acquisition for recurring revenue businesses. Subscription Created counts the number of new subscription creations in your application. ## Formula **Subscription Created** = **COUNT** ( subscription\_created events ) ### Formula Components | Metric | Definition | | -------------------------------- | ----------------------------------------------- | | **subscription\_created events** | Events fired when a new subscription is created | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your SaaS application tracked **567 subscription\_created events** in January. | Metric | Value | Notes | | -------------------- | ----- | ----------------------- | | Trial Converted | 267 | From trial funnel | | Direct Signups | 300 | Skipped trial | | Subscription Created | 567 | Total new subscriptions | *** ## How It Works The Upstack pixel tracks `subscription_created` events when a new subscription is established. This includes both conversions from free trials and direct paid signups, capturing all new recurring revenue relationships. *** ## When to Use | Scenario | Action | | -------------------- | ---------------------------------------- | | Growth tracking | Monitor new subscription volume | | Campaign attribution | Identify channels driving subscriptions | | Pricing analysis | Compare subscription uptake across plans | | MRR forecasting | Project recurring revenue from new subs | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------ | | [Subscription Created Cost](/reference/metrics/funnel/conversions/subscription-created-cost) | Cost per new subscription | | [Subscription Created Value](/reference/metrics/funnel/conversions/subscription-created-value) | Revenue from new subscriptions | | [Trial Converted](/reference/metrics/funnel/conversions/trial-converted) | Trial-originated subscriptions | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Created Cost: Ad Spend per New Subscription Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-created-cost Calculate advertising cost per new subscription. Optimize your subscription acquisition efficiency. Subscription Created Cost measures how much you spend on advertising for each new subscription. ## Formula **Subscription Created Cost** = **Ad Spend** ÷ [**Subscription Created**](/reference/metrics/funnel/conversions/subscription-created) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**Subscription Created**](/reference/metrics/funnel/conversions/subscription-created) | Count of new subscriptions | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$10,000** on advertising in January and drove **283 new subscriptions**. | Metric | Value | Notes | | ------------------------- | -------- | ------------------------- | | Ad Spend | \$10,000 | Monthly advertising cost | | Subscription Created | 283 | New subscriptions | | Subscription Created Cost | \$35.34 | Cost per new subscription | *** ## How It Works This metric divides your total ad spend by the number of new subscriptions to calculate your cost per subscription acquisition. This is a key metric for understanding the economics of subscriber growth. *** ## When to Use | Scenario | Action | | ------------------ | -------------------------------------------- | | CAC benchmarking | Track cost to acquire recurring customers | | Channel comparison | Identify most efficient subscription sources | | Budget allocation | Shift spend to lowest-cost channels | | Unit economics | Factor into LTV/CAC calculations | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ----------------------------------- | | [Subscription Created](/reference/metrics/funnel/conversions/subscription-created) | The denominator in this calculation | | [Subscription Created Value](/reference/metrics/funnel/conversions/subscription-created-value) | Revenue from new subscriptions | | [Trial Converted Cost](/reference/metrics/funnel/conversions/trial-converted-cost) | Cost for trial-originated subs | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Created Value: Revenue from New Subscriptions Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-created-value Track the monetary value of new subscriptions. Measure MRR contribution from subscriber acquisition. Subscription Created Value totals the monetary value of new subscriptions. ## Formula **Subscription Created Value** = **SUM** ( value ) **FROM** subscription\_created events ### Formula Components | Metric | Definition | | -------------------------------- | ------------------------------------------------------------------ | | **value** | The monetary value of each new subscription (MRR or first payment) | | **subscription\_created events** | Events fired when new subscriptions are created | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example You had **283 new subscriptions** in January with an average MRR of **\$49**. | Metric | Value | Notes | | -------------------------- | -------- | --------------------- | | Subscription Created | 283 | New subscriptions | | Avg Subscription MRR | \$49 | Average monthly value | | Subscription Created Value | \$13,867 | Total new MRR | *** ## How It Works This metric sums the value attribute from all subscription\_created events. The value typically represents the monthly recurring revenue (MRR) or first payment amount, giving you direct insight into revenue growth from new subscribers. *** ## When to Use | Scenario | Action | | ---------------- | -------------------------------------------------- | | MRR tracking | Monitor new recurring revenue | | ROAS calculation | Calculate return on subscription acquisition | | Channel revenue | Compare MRR contribution by acquisition source | | Growth analysis | Understand revenue impact of acquisition campaigns | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | ----------------------------- | | [Subscription Created](/reference/metrics/funnel/conversions/subscription-created) | Count of new subscriptions | | [Subscription Created Cost](/reference/metrics/funnel/conversions/subscription-created-cost) | Cost to acquire subscriptions | | [Trial Converted Value](/reference/metrics/funnel/conversions/trial-converted-value) | Value from trial conversions | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Downgraded: Track Plan Downgrades Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-downgraded Track when subscribers downgrade their plan. Measure contraction revenue from downsells. Subscription Downgraded counts the number of subscribers who downgrade to a lower-tier plan. ## Formula **Subscription Downgraded** = **COUNT** ( subscription\_downgraded events ) ### Formula Components | Metric | Definition | | ----------------------------------- | ---------------------------------------------------- | | **subscription\_downgraded events** | Events fired when a subscriber downgrades their plan | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your SaaS application tracked **45 subscription\_downgraded events** in January. | Metric | Value | Notes | | ----------------------- | ----- | ---------------------- | | Active Subscriptions | 2,340 | Total active subs | | Subscription Downgraded | 45 | Downgrades this month | | Downgrade Rate | 1.9% | Monthly downgrade rate | *** ## How It Works The Upstack pixel tracks `subscription_downgraded` events when a subscriber moves to a less expensive plan tier. This includes plan downgrades, seat removals, or any contraction of subscription value. *** ## When to Use | Scenario | Action | | ---------------------- | ------------------------------------- | | Contraction tracking | Monitor downgrade rates | | Churn prediction | Downgrades often precede cancellation | | Pricing analysis | Identify pricing friction | | Retention intervention | Target downgrades for win-back | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ------------------------------- | | [Subscription Downgraded Cost](/reference/metrics/funnel/conversions/subscription-downgraded-cost) | Cost associated with downgrades | | [Subscription Downgraded Value](/reference/metrics/funnel/conversions/subscription-downgraded-value) | MRR lost to downgrades | | [Subscription Upgraded](/reference/metrics/funnel/conversions/subscription-upgraded) | Opposite direction | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Downgraded Cost: Ad Spend for Downgrades Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-downgraded-cost Calculate advertising cost associated with plan downgrades. Analyze acquisition quality. Subscription Downgraded Cost measures advertising spend associated with subscribers who downgraded. ## Formula **Subscription Downgraded Cost** = **Ad Spend** ÷ [**Subscription Downgraded**](/reference/metrics/funnel/conversions/subscription-downgraded) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**Subscription Downgraded**](/reference/metrics/funnel/conversions/subscription-downgraded) | Count of plan downgrades | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$10,000** on advertising in January and had **45 downgrades**. | Metric | Value | Notes | | ---------------------------- | -------- | ------------------------ | | Ad Spend | \$10,000 | Monthly advertising cost | | Subscription Downgraded | 45 | Plan downgrades | | Subscription Downgraded Cost | \$222.22 | Ad spend per downgrade | *** ## How It Works This metric divides your total ad spend by the number of downgrades. While not a direct causation metric, it helps identify channels that may be attracting subscribers who don't retain their initial plan tier. *** ## When to Use | Scenario | Action | | ------------------------ | -------------------------------------------------- | | Channel quality analysis | Identify sources with high downgrade rates | | Acquisition targeting | Refine targeting to avoid downgrade-prone segments | | CAC efficiency | Factor downgrades into true acquisition cost | | Cohort analysis | Compare downgrade rates by acquisition source | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ----------------------------------- | | [Subscription Downgraded](/reference/metrics/funnel/conversions/subscription-downgraded) | The denominator in this calculation | | [Subscription Downgraded Value](/reference/metrics/funnel/conversions/subscription-downgraded-value) | MRR lost to downgrades | | [Subscription Upgraded Cost](/reference/metrics/funnel/conversions/subscription-upgraded-cost) | Cost for upgrades | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Downgraded Value: MRR Lost to Downgrades Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-downgraded-value Track the monetary value lost from plan downgrades. Measure contraction MRR. Subscription Downgraded Value totals the MRR lost from plan downgrades. ## Formula **Subscription Downgraded Value** = **SUM** ( value ) **FROM** subscription\_downgraded events ### Formula Components | Metric | Definition | | ----------------------------------- | --------------------------------------- | | **value** | The MRR decrease from each downgrade | | **subscription\_downgraded events** | Events fired when subscribers downgrade | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example You had **45 downgrades** in January with an average MRR decrease of **\$28**. | Metric | Value | Notes | | ----------------------------- | ------- | --------------------- | | Subscription Downgraded | 45 | Plan downgrades | | Avg Downgrade Value | \$28 | Average MRR lost | | Subscription Downgraded Value | \$1,260 | Total contraction MRR | *** ## How It Works This metric sums the value attribute from all subscription\_downgraded events. The value represents the MRR lost due to plan downgrades, capturing revenue contraction. *** ## When to Use | Scenario | Action | | ------------------------ | ------------------------------------- | | Contraction MRR tracking | Monitor revenue lost to downgrades | | Net MRR calculation | Factor contraction into net revenue | | Pricing impact | Assess impact of pricing changes | | Retention analysis | Identify high-value customers at risk | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ------------------------------- | | [Subscription Downgraded](/reference/metrics/funnel/conversions/subscription-downgraded) | Count of downgrades | | [Subscription Downgraded Cost](/reference/metrics/funnel/conversions/subscription-downgraded-cost) | Cost associated with downgrades | | [Subscription Upgraded Value](/reference/metrics/funnel/conversions/subscription-upgraded-value) | Expansion for comparison | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Initial Purchase Cost: Ad Spend per New Subscriber Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-initial-purchase-cost Calculate advertising cost per first-time subscription order. Measure subscriber CAC. Subscription Initial Purchase Cost measures your advertising spend per new subscription acquisition. ## Formula **Subscription Initial Purchase Cost** = **Ad Spend** ÷ [**Subscription Initial Purchases**](/reference/metrics/funnel/conversions/subscription-initial-purchases) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**Subscription Initial Purchases**](/reference/metrics/funnel/conversions/subscription-initial-purchases) | Count of first-time subscription orders | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$12,000** on advertising in January and acquired **169 new subscribers**. | Metric | Value | Notes | | ---------------------------------- | -------- | ------------------------ | | Ad Spend | \$12,000 | Monthly advertising cost | | Subscription Initial Purchases | 169 | New subscribers | | Subscription Initial Purchase Cost | \$71.01 | Subscriber CAC | *** ## How It Works This metric divides your total ad spend by the number of first-time subscription orders. It represents your true subscriber acquisition cost, excluding recurring orders that aren't new customers. *** ## When to Use | Scenario | Action | | -------------------- | ----------------------------------------------------- | | Subscriber CAC | Track true new subscriber acquisition cost | | LTV/CAC analysis | Compare acquisition cost to subscriber lifetime value | | Channel optimization | Identify efficient subscriber acquisition sources | | Budget planning | Forecast spend for subscriber growth targets | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------- | ----------------------------------- | | [Subscription Initial Purchases](/reference/metrics/funnel/conversions/subscription-initial-purchases) | The denominator in this calculation | | [Subscription Initial Purchase Value](/reference/metrics/funnel/conversions/subscription-initial-purchase-value) | Revenue from new subscribers | | [Purchase Cost](/reference/metrics/funnel/conversions/cost-per-purchase) | Overall purchase cost | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Initial Purchase Value: Revenue from New Subscribers Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-initial-purchase-value Track revenue from first-time subscription orders. Measure new subscriber revenue contribution. Subscription Initial Purchase Value totals revenue from first-time subscription orders. ## Formula **Subscription Initial Purchase Value** = **SUM** ( value ) **FROM** subscription\_initial\_purchase events ### Formula Components | Metric | Definition | | ------------------------------------------ | -------------------------------------------------------- | | **value** | The monetary value of each first-time subscription order | | **subscription\_initial\_purchase events** | Events fired for first subscription orders | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example You had **169 new subscribers** in January with an average first order of **\$45**. | Metric | Value | Notes | | ----------------------------------- | ------- | ---------------------- | | Subscription Initial Purchases | 169 | New subscribers | | Avg First Order Value | \$45 | Average initial order | | Subscription Initial Purchase Value | \$7,605 | New subscriber revenue | *** ## How It Works This metric sums the value attribute from all first-time subscription orders. It captures revenue specifically from new subscriber acquisition, separate from recurring revenue. *** ## When to Use | Scenario | Action | | ------------------- | ------------------------------------------ | | Acquisition revenue | Track revenue from new subscribers | | ROAS calculation | Calculate return on subscriber acquisition | | Channel comparison | Compare new subscriber value by source | | Growth analysis | Monitor new subscriber revenue trends | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------------- | ------------------------ | | [Subscription Initial Purchases](/reference/metrics/funnel/conversions/subscription-initial-purchases) | Count of new subscribers | | [Subscription Initial Purchase Cost](/reference/metrics/funnel/conversions/subscription-initial-purchase-cost) | Cost per new subscriber | | [Subscription Recurring Purchase Value](/reference/metrics/funnel/conversions/subscription-recurring-purchase-value) | Retention revenue | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Initial Purchases: First Subscription Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-initial-purchases Track first-time subscription purchases. Measure new subscriber acquisition for subscription boxes. Subscription Initial Purchases counts first-time subscription orders from new subscribers. ## Formula **Subscription Initial Purchases** = **COUNT** ( subscription\_initial\_purchase events ) ### Formula Components | Metric | Definition | | ------------------------------------------ | ------------------------------------------ | | **subscription\_initial\_purchase events** | Events fired for first subscription orders | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your subscription box business tracked **423 subscription\_initial\_purchase events** in January. | Metric | Value | Notes | | -------------------- | ----- | ---------------------- | | All Purchases | 2,560 | Total purchase events | | Subscription Initial | 423 | First-time subscribers | | Initial % of Total | 16.5% | New subscriber share | *** ## How It Works The Upstack pixel tracks subscription\_initial\_purchase events for first-time subscription orders. This distinguishes new subscriber acquisition from recurring subscriber revenue. *** ## When to Use | Scenario | Action | | ---------------------- | ------------------------------------------ | | Subscriber acquisition | Track new subscriber growth | | Campaign attribution | Identify channels driving new subscribers | | CAC calculation | Calculate true subscriber acquisition cost | | Cohort analysis | Analyze new subscriber performance | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------- | ---------------------------- | | [Subscription Initial Purchase Cost](/reference/metrics/funnel/conversions/subscription-initial-purchase-cost) | Cost per new subscriber | | [Subscription Initial Purchase Value](/reference/metrics/funnel/conversions/subscription-initial-purchase-value) | Revenue from new subscribers | | [Subscription Recurring Purchases](/reference/metrics/funnel/conversions/subscription-recurring-purchases) | Repeat orders | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Recurring Purchase Cost: Ad Spend per Repeat Order Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-recurring-purchase-cost Calculate advertising cost associated with repeat subscription orders. Analyze retention marketing efficiency. Subscription Recurring Purchase Cost measures advertising spend associated with repeat subscription orders. ## Formula **Subscription Recurring Purchase Cost** = **Ad Spend** ÷ [**Subscription Recurring Purchases**](/reference/metrics/funnel/conversions/subscription-recurring-purchases) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**Subscription Recurring Purchases**](/reference/metrics/funnel/conversions/subscription-recurring-purchases) | Count of repeat subscription orders | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$12,000** on advertising in January and had **2,137 recurring orders**. | Metric | Value | Notes | | ------------------------------------ | -------- | ------------------------ | | Ad Spend | \$12,000 | Monthly advertising cost | | Subscription Recurring Purchases | 2,137 | Repeat orders | | Subscription Recurring Purchase Cost | \$5.62 | Cost per repeat order | *** ## How It Works This metric divides your total ad spend by the number of recurring subscription orders. While recurring orders aren't directly caused by ads, this helps contextualize overall marketing efficiency. *** ## When to Use | Scenario | Action | | -------------------- | --------------------------------------------------- | | Marketing efficiency | Contextualize ad spend against retention | | Channel analysis | Compare recurring order rates by acquisition source | | Retention marketing | Measure retention campaign effectiveness | | Cohort performance | Analyze recurring rates by original source | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | | [Subscription Recurring Purchases](/reference/metrics/funnel/conversions/subscription-recurring-purchases) | The denominator in this calculation | | [Subscription Recurring Purchase Value](/reference/metrics/funnel/conversions/subscription-recurring-purchase-value) | Recurring revenue | | [Subscription Initial Purchase Cost](/reference/metrics/funnel/conversions/subscription-initial-purchase-cost) | Acquisition cost | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Recurring Purchase Value: Retention Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-recurring-purchase-value Track revenue from repeat subscription orders. Measure recurring subscriber revenue. Subscription Recurring Purchase Value totals revenue from repeat subscription orders. ## Formula **Subscription Recurring Purchase Value** = **SUM** ( value ) **FROM** subscription\_recurring\_purchase events ### Formula Components | Metric | Definition | | -------------------------------------------- | ---------------------------------------------------- | | **value** | The monetary value of each repeat subscription order | | **subscription\_recurring\_purchase events** | Events fired for repeat subscription orders | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example You had **2,137 recurring orders** in January with an average value of **\$42**. | Metric | Value | Notes | | ------------------------------------- | -------- | -------------------- | | Subscription Recurring Purchases | 2,137 | Repeat orders | | Avg Recurring Order Value | \$42 | Average repeat order | | Subscription Recurring Purchase Value | \$89,754 | Retention revenue | *** ## How It Works This metric sums the value attribute from all repeat subscription orders. It captures your recurring subscriber revenue, which is the foundation of subscription business health. *** ## When to Use | Scenario | Action | | -------------------- | -------------------------------------------- | | Retention revenue | Track recurring subscriber revenue | | Revenue mix analysis | Compare recurring vs new subscriber revenue | | Cohort LTV | Measure lifetime value by acquisition source | | Forecasting | Project future recurring revenue | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------ | ---------------------- | | [Subscription Recurring Purchases](/reference/metrics/funnel/conversions/subscription-recurring-purchases) | Count of repeat orders | | [Subscription Recurring Purchase Cost](/reference/metrics/funnel/conversions/subscription-recurring-purchase-cost) | Cost attribution | | [Subscription Initial Purchase Value](/reference/metrics/funnel/conversions/subscription-initial-purchase-value) | New subscriber revenue | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Recurring Purchases: Repeat Subscription Orders Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-recurring-purchases Track repeat subscription orders from existing subscribers. Measure subscription retention. Subscription Recurring Purchases counts repeat orders from existing subscription customers. ## Formula **Subscription Recurring Purchases** = **COUNT** ( subscription\_recurring\_purchase events ) ### Formula Components | Metric | Definition | | -------------------------------------------- | ------------------------------------------- | | **subscription\_recurring\_purchase events** | Events fired for repeat subscription orders | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your subscription box business tracked **2,137 subscription\_recurring\_purchase events** in January. | Metric | Value | Notes | | ---------------------- | ----- | ----------------------- | | All Purchases | 2,560 | Total purchase events | | Subscription Recurring | 2,137 | Repeat orders | | Recurring % of Total | 83.5% | Retention revenue share | *** ## How It Works The Upstack pixel tracks subscription\_recurring\_purchase events for orders from existing subscribers. This represents retained subscriber revenue and measures subscription retention health. *** ## When to Use | Scenario | Action | | ------------------- | ------------------------------------------- | | Retention tracking | Monitor recurring order volume | | Churn analysis | Compare recurring orders to subscriber base | | Revenue forecasting | Project recurring revenue | | Cohort retention | Analyze retention by acquisition cohort | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------------- | ----------------- | | [Subscription Recurring Purchase Cost](/reference/metrics/funnel/conversions/subscription-recurring-purchase-cost) | Cost attribution | | [Subscription Recurring Purchase Value](/reference/metrics/funnel/conversions/subscription-recurring-purchase-value) | Recurring revenue | | [Subscription Initial Purchases](/reference/metrics/funnel/conversions/subscription-initial-purchases) | New vs repeat | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Upgraded: Track Plan Upgrades Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-upgraded Track when subscribers upgrade their plan. Measure expansion revenue from upsells. Subscription Upgraded counts the number of subscribers who upgrade to a higher-tier plan. ## Formula **Subscription Upgraded** = **COUNT** ( subscription\_upgraded events ) ### Formula Components | Metric | Definition | | --------------------------------- | -------------------------------------------------- | | **subscription\_upgraded events** | Events fired when a subscriber upgrades their plan | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your SaaS application tracked **156 subscription\_upgraded events** in January. | Metric | Value | Notes | | --------------------- | ----- | -------------------- | | Active Subscriptions | 2,340 | Total active subs | | Subscription Upgraded | 156 | Upgrades this month | | Upgrade Rate | 6.7% | Monthly upgrade rate | *** ## How It Works The Upstack pixel tracks `subscription_upgraded` events when a subscriber moves to a more expensive plan tier. This includes plan upgrades, seat additions, or any expansion of subscription value. *** ## When to Use | Scenario | Action | | -------------------- | ------------------------------------- | | Expansion tracking | Monitor upsell and upgrade success | | Product adoption | Identify features driving upgrades | | Campaign attribution | Measure upsell campaign effectiveness | | Revenue growth | Track expansion MRR contribution | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | --------------------- | | [Subscription Upgraded Cost](/reference/metrics/funnel/conversions/subscription-upgraded-cost) | Cost per upgrade | | [Subscription Upgraded Value](/reference/metrics/funnel/conversions/subscription-upgraded-value) | Revenue from upgrades | | [Subscription Downgraded](/reference/metrics/funnel/conversions/subscription-downgraded) | Opposite direction | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Upgraded Cost: Ad Spend per Upgrade Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-upgraded-cost Calculate advertising cost per plan upgrade. Measure efficiency of upsell campaigns. Subscription Upgraded Cost measures how much you spend on advertising for each plan upgrade. ## Formula **Subscription Upgraded Cost** = **Ad Spend** ÷ [**Subscription Upgraded**](/reference/metrics/funnel/conversions/subscription-upgraded) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**Subscription Upgraded**](/reference/metrics/funnel/conversions/subscription-upgraded) | Count of plan upgrades | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$2,000** on upsell campaigns in January and drove **78 upgrades**. | Metric | Value | Notes | | -------------------------- | ------- | -------------------- | | Ad Spend | \$2,000 | Upsell campaign cost | | Subscription Upgraded | 78 | Plan upgrades | | Subscription Upgraded Cost | \$25.64 | Cost per upgrade | *** ## How It Works This metric divides your total ad spend by the number of upgrades to calculate your cost per expansion. Since upgrades typically have higher LTV, the acceptable CPA is often higher than initial acquisition. *** ## When to Use | Scenario | Action | | ------------------ | ----------------------------------------- | | Upsell efficiency | Measure upgrade campaign performance | | Budget allocation | Compare upgrade cost to expansion revenue | | Channel comparison | Identify most efficient upsell sources | | ROI analysis | Calculate return on expansion campaigns | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | ----------------------------------- | | [Subscription Upgraded](/reference/metrics/funnel/conversions/subscription-upgraded) | The denominator in this calculation | | [Subscription Upgraded Value](/reference/metrics/funnel/conversions/subscription-upgraded-value) | Revenue from upgrades | | [Subscription Created Cost](/reference/metrics/funnel/conversions/subscription-created-cost) | Cost for initial acquisition | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Subscription Upgraded Value: Expansion MRR from Upgrades Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/subscription-upgraded-value Track the monetary value of plan upgrades. Measure expansion MRR from upsells. Subscription Upgraded Value totals the expansion MRR from plan upgrades. ## Formula **Subscription Upgraded Value** = **SUM** ( value ) **FROM** subscription\_upgraded events ### Formula Components | Metric | Definition | | --------------------------------- | ------------------------------------- | | **value** | The MRR increase from each upgrade | | **subscription\_upgraded events** | Events fired when subscribers upgrade | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example You had **156 upgrades** in January with an average MRR increase of **\$35**. | Metric | Value | Notes | | --------------------------- | ------- | -------------------- | | Subscription Upgraded | 156 | Plan upgrades | | Avg Upgrade Value | \$35 | Average MRR increase | | Subscription Upgraded Value | \$5,460 | Total expansion MRR | *** ## How It Works This metric sums the value attribute from all subscription\_upgraded events. The value represents the incremental MRR from upgrading to a higher-tier plan, capturing expansion revenue. *** ## When to Use | Scenario | Action | | ---------------------- | ---------------------------------------- | | Expansion MRR tracking | Monitor revenue from upgrades | | Net MRR calculation | Factor expansion into net revenue growth | | Upsell campaign ROI | Calculate return on upsell investments | | Product tier analysis | Compare upgrade values across plans | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | -------------------------- | | [Subscription Upgraded](/reference/metrics/funnel/conversions/subscription-upgraded) | Count of upgrades | | [Subscription Upgraded Cost](/reference/metrics/funnel/conversions/subscription-upgraded-cost) | Cost per upgrade | | [Subscription Downgraded Value](/reference/metrics/funnel/conversions/subscription-downgraded-value) | Contraction for comparison | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Total Revenue: Complete Order Value from Shopify Purchases Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/total-revenue Track total revenue including taxes and shipping from your Shopify store. Measure complete purchase value with pixel-tracked attribution. Total Revenue measures the complete monetary value from all purchases, including taxes and shipping, tracked by the Upstack Pixel on your Shopify store. ## Formula **Total Revenue** = **SUM** ( Order Total ) **WHERE** event = purchase ### Formula Components | Metric | Definition | | -------------------- | ------------------------------------------------------------------------ | | **Order Total** | The complete order value including product subtotal, taxes, and shipping | | **event = purchase** | Filters to purchase events tracked by the Upstack Pixel | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store generated **\$156,280** in total revenue from **2,134 orders** in February. | Week | Total Revenue | Orders | Avg. Order Value | | --------- | ------------- | ------ | ---------------- | | Feb 1–7 | \$35,420 | 487 | \$72.73 | | Feb 8–14 | \$38,760 | 521 | \$74.40 | | Feb 15–21 | \$41,890 | 568 | \$73.75 | | Feb 22–28 | \$40,210 | 558 | \$72.06 | *** ## How It Works Total Revenue is calculated by summing the complete order value of all purchase events tracked by the Upstack Pixel. When a customer completes checkout on your Shopify store, the purchase event fires with the full order total—including product subtotal, taxes, and shipping charges. This metric captures the gross revenue before any adjustments for refunds or discounts. *** ## When to Use | Scenario | Action | | ---------------------------------------- | ------------------------------------------------------------------------- | | Measuring gross business performance | Track complete revenue before deductions to understand total sales volume | | Calculating ROAS and efficiency metrics | Use as the revenue component for return on ad spend calculations | | Comparing revenue by attribution channel | Break down total revenue by source to identify highest-value channels | | Setting revenue targets | Establish gross revenue goals and track progress against benchmarks | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | ------------------------------------------------- | | [Revenue](/reference/metrics/funnel/conversions/revenue) | Purchase value tracked by the pixel | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total monetary value of conversions | | [Purchases](/reference/metrics/funnel/conversions/purchases) | The count of transactions generating this revenue | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Trial Activated: Track Trial User Activations Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/trial-activated Track the total number of trial activation events. Monitor users completing key actions during trial. Trial Activated measures the total number of times trial users completed activation steps, tracked by the Upstack pixel. ## Formula **Trial Activated** = **COUNT** ( Events ) **WHERE** event\_type = trial\_activated ### Formula Components | Metric | Definition | | ---------------------------------- | ----------------------------------------- | | **Events** | All tracked events from the Upstack pixel | | **event\_type = trial\_activated** | Filters to only trial activation events | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your SaaS tracked trial activation milestones this month. | Activation Milestone | Trial Started | Trial Activated | Activation Rate | | -------------------- | ------------- | --------------- | --------------- | | Week 1 cohort | 250 | 175 | 70% | | Week 2 cohort | 220 | 160 | 73% | | Week 3 cohort | 280 | 195 | 70% | | Week 4 cohort | 300 | 225 | 75% | | **Total** | **1,050** | **755** | **72%** | *** ## How It Works This metric counts all trial activated events tracked by the Upstack pixel. A trial activated event fires when a trial user completes key activation milestones (e.g., completing onboarding, using core features). Activated users convert to paid at significantly higher rates. *** ## When to Use | Scenario | Action | | ----------------------- | ----------------------------------- | | Activation optimization | Improve trial-to-activation rate | | Conversion prediction | Identify high-propensity converters | | Onboarding analysis | Track activation funnel drop-off | | Product-market fit | Measure feature adoption in trials | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ------------------- | | [Trial Started](/reference/metrics/funnel/conversions/trial-started) | Top of trial funnel | | [Trial Converted](/reference/metrics/funnel/conversions/trial-converted) | End of trial funnel | | [Cost per Trial Activated](/reference/metrics/funnel/conversions/cost-per-trial-activated) | Acquisition cost | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Trial Activated: Engaged Trial Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/trial-activated-cost Calculate cost per activated trial to measure quality acquisition. Track spend required to acquire trial users who engage. Cost per Trial Activated measures the average advertising spend required to acquire one trial user who completes activation milestones. ## Formula **Cost per Trial Activated** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Trial Activated**](/reference/metrics/funnel/conversions/trial-activated) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | ------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all channels | | [**Trial Activated**](/reference/metrics/funnel/conversions/trial-activated) | Count of trial activation events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your SaaS company spent **\$30,000** on acquisition in July, generating **1,200 activated trials**. | Channel | Spend | Activated Trials | Cost/Activated | | ------------ | ------------ | ---------------- | -------------- | | Google Ads | \$12,000 | 560 | \$21.43 | | Meta | \$10,000 | 400 | \$25.00 | | LinkedIn | \$5,000 | 160 | \$31.25 | | Partnerships | \$3,000 | 80 | \$37.50 | | **Total** | **\$30,000** | **1,200** | **\$25.00** | *** ## How It Works The metric divides total advertising spend by the number of trial activation events tracked by the Upstack Pixel. This metric is more predictive of conversions than Cost per Trial Started because activated users have demonstrated genuine product engagement. *** ## When to Use | Scenario | Action | | --------------------------- | ---------------------------------------------- | | Measure acquisition quality | Compare to Cost per Trial Started | | Optimize for engagement | Focus on channels with lower activated costs | | Predict CAC | Activated trial cost × inverse conversion rate | | Budget planning | Target activated trials, not just starts | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | ----------------------------------- | | [Trial Activated](/reference/metrics/funnel/conversions/trial-activated) | The denominator in this calculation | | [Trial Activated Value](/reference/metrics/funnel/conversions/trial-activated-value) | Revenue to compare against cost | | [Cost per Trial Started](/reference/metrics/funnel/conversions/trial-started-cost) | Top-of-funnel cost comparison | [See all Funnel Conversion metrics →](/reference/metrics/funnel/conversions) # Trial Activated Value: Total Value of Activations Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/trial-activated-value Track the total monetary value of trial activations. Measure expected revenue from activated trials. Trial Activated Value measures the total monetary value associated with all trial activation events tracked by the Upstack pixel. ## Formula **Trial Activated Value** = **SUM** ( Value ) **WHERE** event\_type = trial\_activated ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | ------------------------------------------ | | [**Trial Activated**](/reference/metrics/funnel/conversions/trial-activated) | Total trial activation events | | **Value** | Expected value assigned to each activation | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your SaaS tracked **250 trial activations** this month with varying plan intents. | Activation Segment | Count | Expected LTV | Total Value | | ------------------ | ------- | ------------ | ------------- | | Power users | 50 | \$8,000 | \$400,000 | | Standard users | 120 | \$3,000 | \$360,000 | | Casual users | 80 | \$1,000 | \$80,000 | | **Total** | **250** | - | **\$840,000** | *** ## How It Works This metric sums the expected monetary value associated with each trial activation. Value is typically calculated based on historical activated-to-paid conversion rates and expected lifetime value by activation behavior. Activated users have significantly higher expected value than non-activated trials. *** ## When to Use | Scenario | Action | | ------------------- | ------------------------------------- | | Revenue forecasting | Project revenue from activated trials | | Activation scoring | Prioritize high-value activated users | | Campaign ROI | Compare activation value to spend | | Product analytics | Track value by activation milestone | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | -------------------- | | [Trial Activated](/reference/metrics/funnel/conversions/trial-activated) | Count of activations | | [Cost per Trial Activated](/reference/metrics/funnel/conversions/cost-per-trial-activated) | Cost per activation | | [Trial Started Value](/reference/metrics/funnel/conversions/trial-started-value) | Top-funnel value | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Trial Converted: Track Free Trial Conversions Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/trial-converted Track when free trials convert to paid subscriptions. Measure trial-to-paid conversion performance. Trial Converted counts the number of free trials that successfully convert to paid subscriptions. ## Formula **Trial Converted** = **COUNT** ( trial\_converted events ) ### Formula Components | Metric | Definition | | --------------------------- | ----------------------------------------------- | | **trial\_converted events** | Events fired when a trial user converts to paid | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your SaaS application tracked **267 trial\_converted events** in January from **892 trial starts**. | Metric | Value | Notes | | --------------------- | ----- | ------------------ | | Trial Started | 892 | Trial initiations | | Trial Converted | 267 | Converted to paid | | Trial Conversion Rate | 29.9% | Trial-to-paid rate | *** ## How It Works The Upstack pixel tracks `trial_converted` events when trial users complete their first payment or transition to a paid subscription. This is the critical conversion point in the SaaS funnel. *** ## When to Use | Scenario | Action | | -------------------------- | ---------------------------------------------- | | Trial funnel optimization | Measure trial-to-paid conversion rate | | Channel quality assessment | Compare conversion rates by acquisition source | | Onboarding analysis | Identify factors impacting trial conversion | | Revenue forecasting | Project paid conversions from trial volume | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | ----------------------------- | | [Trial Converted Cost](/reference/metrics/funnel/conversions/trial-converted-cost) | Cost per converted trial | | [Trial Converted Value](/reference/metrics/funnel/conversions/trial-converted-value) | Revenue from conversions | | [Trial Started](/reference/metrics/funnel/conversions/trial-started) | Beginning of the trial funnel | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Trial Converted Cost: Ad Spend per Paid Conversion Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/trial-converted-cost Calculate advertising cost per trial-to-paid conversion. Your true customer acquisition cost. Trial Converted Cost measures your advertising spend per trial that converts to a paid subscription. ## Formula **Trial Converted Cost** = **Ad Spend** ÷ [**Trial Converted**](/reference/metrics/funnel/conversions/trial-converted) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**Trial Converted**](/reference/metrics/funnel/conversions/trial-converted) | Count of trials converted to paid | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$5,000** on Meta ads in January and drove **107 trial conversions**. | Metric | Value | Notes | | -------------------- | ------- | ------------------------ | | Ad Spend | \$5,000 | Monthly advertising cost | | Trial Converted | 107 | Paid conversions | | Trial Converted Cost | \$46.73 | Cost per paying customer | *** ## How It Works This metric divides your total ad spend by the number of trial conversions to calculate your true customer acquisition cost (CAC). This represents the full cost of acquiring a paying customer through your trial funnel. *** ## When to Use | Scenario | Action | | --------------------- | --------------------------------------------------- | | CAC optimization | Find channels with lowest customer acquisition cost | | LTV/CAC analysis | Compare CAC against customer lifetime value | | Channel profitability | Identify most efficient acquisition sources | | Budget planning | Forecast spend needed for growth targets | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | ----------------------------------- | | [Trial Converted](/reference/metrics/funnel/conversions/trial-converted) | The denominator in this calculation | | [Trial Converted Value](/reference/metrics/funnel/conversions/trial-converted-value) | Revenue from conversions | | [Trial Started Cost](/reference/metrics/funnel/conversions/trial-started-cost) | Cost at trial start stage | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Trial Converted Value: Revenue from Trial Conversions Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/trial-converted-value Track the monetary value of trial-to-paid conversions. Measure actual revenue from your trial funnel. Trial Converted Value totals the revenue from free trials that converted to paid subscriptions. ## Formula **Trial Converted Value** = **SUM** ( value ) **FROM** trial\_converted events ### Formula Components | Metric | Definition | | --------------------------- | --------------------------------------------------------------------------- | | **value** | The monetary value of each trial conversion (first payment or expected LTV) | | **trial\_converted events** | Events fired when trials convert to paid | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example You had **107 trial conversions** in January with an average first payment of **\$99**. | Metric | Value | Notes | | --------------------- | -------- | ------------------------------ | | Trial Converted | 107 | Paid conversions | | Avg Conversion Value | \$99 | Average first payment | | Trial Converted Value | \$10,593 | Total revenue from conversions | *** ## How It Works This metric sums the value attribute from all trial\_converted events. The value typically represents the first payment amount or expected LTV, giving you actual revenue attribution for your trial funnel. *** ## When to Use | Scenario | Action | | -------------------------- | ------------------------------------------------ | | Revenue attribution | Track revenue generated from trial conversions | | ROAS calculation | Calculate return on trial acquisition spend | | Channel revenue comparison | Compare revenue contribution by source | | Funnel value analysis | Understand monetary impact of trial optimization | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ----------------------------------- | | [Trial Converted](/reference/metrics/funnel/conversions/trial-converted) | Count of conversions | | [Trial Converted Cost](/reference/metrics/funnel/conversions/trial-converted-cost) | Cost to acquire converted customers | | [Subscription Created Value](/reference/metrics/funnel/conversions/subscription-created-value) | Value from new subscriptions | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Trial Ending Soon: Track Expiring Trial Alerts Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/trial-ending-soon Count trial ending soon events to identify conversion opportunities. Track users approaching trial expiration for targeted outreach. Trial Ending Soon counts the total number of times a trial was flagged as approaching expiration, typically within a defined window before the trial ends. ## Formula **Trial Ending Soon** = **COUNT** ( trial\_ending\_soon events ) ### Formula Components | Metric | Definition | | ------------------------------ | --------------------------------------------------------------- | | **trial\_ending\_soon events** | Individual instances when a trial enters the ending-soon window | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your SaaS product flagged **1,420 trials ending soon** in Q1, triggering conversion workflows. | Month | Ending Soon | Converted Before Expiry | Extended | Expired | | ------------ | ----------- | ----------------------- | -------- | ------- | | January | 460 | 184 | 46 | 230 | | February | 480 | 202 | 53 | 225 | | March | 480 | 211 | 48 | 221 | | **Q1 Total** | **1,420** | **597** | **147** | **676** | *** ## How It Works The Upstack Pixel fires when a trial enters a predefined warning period before expiration, typically 3-7 days. This event triggers conversion workflows, reminder emails, and sales outreach. It helps identify users who need intervention before their trial expires without converting. *** ## When to Use | Scenario | Action | | ----------------------------- | ---------------------------------------- | | Trigger conversion campaigns | Send targeted messaging to ending trials | | Prioritize sales outreach | Focus on high-value trials ending soon | | Measure warning effectiveness | Compare conversion rates after alerts | | Optimize trial duration | Adjust timing of ending-soon triggers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | -------------------------------------- | | Cost per Trial Ending Soon | Acquisition cost for ending trials | | Trial Expired | Trials that expired without converting | | [Trial Converted](/reference/metrics/funnel/conversions/trial-converted) | Successful conversions from trial | [See all Funnel Conversion metrics →](/reference/metrics/funnel/conversions) # Trial Extended: Track Trial Extension Events Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/trial-extended Count trial extension events to measure retention efforts. Track how many trial users receive extended trial periods. Trial Extended counts the total number of times a trial period was extended for users who needed more evaluation time. ## Formula **Trial Extended** = **COUNT** ( trial\_extended events ) ### Formula Components | Metric | Definition | | -------------------------- | ---------------------------------------------------- | | **trial\_extended events** | Individual instances when a trial period is extended | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your SaaS product extended **342 trials** in Q2 from various request channels. | Extension Reason | Extended | Later Converted | Conversion Rate | | ----------------- | -------- | --------------- | --------------- | | Sales Request | 156 | 89 | 57% | | Support Request | 98 | 45 | 46% | | Onboarding Issues | 52 | 28 | 54% | | Automated Offer | 36 | 12 | 33% | | **Q2 Total** | **342** | **174** | **51%** | *** ## How It Works The Upstack Pixel fires when a trial period is extended, whether through manual sales action, support intervention, automated rules, or user request. This event helps track retention efforts for users who need additional time to evaluate your product. *** ## When to Use | Scenario | Action | | --------------------------- | ----------------------------------------------- | | Measure retention efforts | Track how often trials are extended | | Evaluate extension policies | Compare conversion rates by extension type | | Identify at-risk users | Users requesting extensions may need help | | Optimize trial length | High extensions may indicate trial is too short | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | ---------------------------------------- | | [Cost per Trial Extended](/reference/metrics/funnel/conversions/trial-extended-cost) | Cost associated with trial extensions | | [Trial Ending Soon](/reference/metrics/funnel/conversions/trial-ending-soon) | Precursor event for extension candidates | | Trial Expired | Users who didn't extend or convert | [See all Funnel Conversion metrics →](/reference/metrics/funnel/conversions) # Cost per Trial Extended: Extension Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/trial-extended-cost Calculate cost per trial extension to measure retention investment. Track spend associated with extended trial periods. Cost per Trial Extended measures the average advertising spend associated with users who received trial extensions. ## Formula **Cost per Trial Extended** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Trial Extended**](/reference/metrics/funnel/conversions/trial-extended) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | ------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all channels | | [**Trial Extended**](/reference/metrics/funnel/conversions/trial-extended) | Count of trial extension events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your SaaS company spent **\$25,500** on acquisition in August, resulting in **340 trial extensions**. | Acquisition Channel | Spend | Extensions | Cost/Extension | | ------------------- | ------------ | ---------- | -------------- | | Google Ads | \$10,000 | 120 | \$83.33 | | Meta | \$8,000 | 110 | \$72.73 | | LinkedIn | \$5,000 | 70 | \$71.43 | | Referrals | \$2,500 | 40 | \$62.50 | | **Total** | **\$25,500** | **340** | **\$75.00** | *** ## How It Works The metric divides total advertising spend by the number of trial extension events. This helps understand the acquisition cost for users who needed more evaluation time. Combined with extension conversion rates, it reveals the true cost of nurturing hesitant prospects. *** ## When to Use | Scenario | Action | | ------------------------ | ------------------------------------------ | | Evaluate extension ROI | Compare cost to conversion value | | Identify channel quality | High extension rates may indicate poor fit | | Budget retention efforts | Understand cost of extended evaluation | | Optimize trial duration | Compare against standard trial costs | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ----------------------------------- | | [Trial Extended](/reference/metrics/funnel/conversions/trial-extended) | The denominator in this calculation | | [Trial Extended Value](/reference/metrics/funnel/conversions/trial-extended-value) | Revenue to compare against cost | | [Cost per Trial Started](/reference/metrics/funnel/conversions/trial-started-cost) | Standard trial acquisition cost | [See all Funnel Conversion metrics →](/reference/metrics/funnel/conversions) # Trial Extended Value: Track Extended Trial Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/trial-extended-value Measure total revenue attributed to extended trials. Understand the monetary value generated by trial extension events. Trial Extended Value represents the total monetary value attributed to trial extension events based on downstream conversions. ## Formula **Trial Extended Value** = **SUM** ( attributed\_value ) **WHERE** event = trial\_extended ### Formula Components | Metric | Definition | | --------------------------- | ----------------------------------------------------------------------- | | **attributed\_value** | Revenue attributed to each trial extension based on conversion tracking | | **event = trial\_extended** | Filters to trial extension events only | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your SaaS tracked **280 trial extensions** in Q4 with **\$44,800** in attributed value. | Extension Type | Extensions | Attributed Value | Avg Value/Extension | | --------------- | ---------- | ---------------- | ------------------- | | Sales-Granted | 140 | \$25,200 | \$180 | | Support-Granted | 80 | \$11,200 | \$140 | | Automated | 60 | \$8,400 | \$140 | | **Q4 Total** | **280** | **\$44,800** | **\$160** | *** ## How It Works The Upstack Pixel attributes revenue to trial extension events by tracking the path from extension through to paid subscription. While extended trials convert at lower rates than standard trials, the users who do convert often become valuable long-term customers. *** ## When to Use | Scenario | Action | | --------------------------- | --------------------------------------------- | | Calculate extension ROI | Compare value against Cost per Trial Extended | | Justify extension policies | Show revenue from extended evaluations | | Optimize extension criteria | Identify which extensions generate value | | Forecast revenue | Include extension pipeline in projections | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | ------------------------------------------- | | [Trial Extended](/reference/metrics/funnel/conversions/trial-extended) | Count of events this value is attributed to | | [Cost per Trial Extended](/reference/metrics/funnel/conversions/trial-extended-cost) | Acquisition cost to compare against value | | [Trial Converted Value](/reference/metrics/funnel/conversions/trial-converted-value) | Final conversion value comparison | [See all Funnel Conversion metrics →](/reference/metrics/funnel/conversions) # Trial Started: Track Free Trial Initiations Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/trial-started Track the total number of trial start events. Monitor product-led growth and self-serve acquisition. Trial Started measures the total number of times users started a free trial, tracked by the Upstack pixel. ## Formula **Trial Started** = **COUNT** ( Events ) **WHERE** event\_type = trial\_started ### Formula Components | Metric | Definition | | -------------------------------- | ----------------------------------------- | | **Events** | All tracked events from the Upstack pixel | | **event\_type = trial\_started** | Filters to only trial start events | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your SaaS company tracked trial starts by acquisition source this month. | Source | Trial Started | Trial Activated | Converted to Paid | | --------- | ------------- | --------------- | ----------------- | | Organic | 450 | 320 | 95 | | Paid Ads | 380 | 260 | 75 | | Referral | 120 | 100 | 42 | | Partner | 80 | 65 | 28 | | **Total** | **1,030** | **745** | **240** | *** ## How It Works This metric counts all trial started events tracked by the Upstack pixel. A trial started event fires when a user begins their free trial period. This is a key PLG (product-led growth) metric that indicates acquisition success and feeds the trial-to-paid conversion funnel. *** ## When to Use | Scenario | Action | | ------------------- | ---------------------------------- | | PLG acquisition | Track product-led user acquisition | | Funnel analysis | Measure trial funnel top | | Growth planning | Set trial start targets | | Channel attribution | Track trials by acquisition source | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ------------------------------- | | [Trial Activated](/reference/metrics/funnel/conversions/trial-activated) | Users who activate during trial | | [Trial Converted](/reference/metrics/funnel/conversions/trial-converted) | Trials converted to paid | | [Cost per Trial Started](/reference/metrics/funnel/conversions/cost-per-trial-started) | Acquisition cost | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Cost per Trial Started: Trial Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/trial-started-cost Calculate cost per trial start to measure PLG efficiency. Track advertising spend required to acquire each free trial user. Cost per Trial Started measures the average advertising spend required to acquire one free trial user. ## Formula **Cost per Trial Started** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Trial Started**](/reference/metrics/funnel/conversions/trial-started) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all channels | | [**Trial Started**](/reference/metrics/funnel/conversions/trial-started) | Count of trial start events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your SaaS company spent **\$36,000** on acquisition in June, generating **1,800 trial starts**. | Channel | Spend | Trial Starts | Cost/Trial | | ------------------- | ------------ | ------------ | ----------- | | Google Ads | \$15,000 | 850 | \$17.65 | | Meta | \$12,000 | 600 | \$20.00 | | LinkedIn | \$6,000 | 250 | \$24.00 | | Content Syndication | \$3,000 | 100 | \$30.00 | | **Total** | **\$36,000** | **1,800** | **\$20.00** | *** ## How It Works The metric divides total advertising spend by the number of trial start events tracked by the Upstack Pixel. This is a critical PLG metric because trial starts represent the beginning of the product experience and the primary opportunity for conversion. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------ | | Set trial acquisition targets | Define acceptable cost per trial user | | Optimize channel mix | Shift budget to lower-cost trial sources | | Calculate CAC | Multiply by inverse of trial conversion rate | | Benchmark performance | Compare against industry trial acquisition costs | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ----------------------------------- | | [Trial Started](/reference/metrics/funnel/conversions/trial-started) | The denominator in this calculation | | [Trial Started Value](/reference/metrics/funnel/conversions/trial-started-value) | Revenue to compare against cost | | [Cost per Trial Converted](/reference/metrics/funnel/conversions/trial-converted-cost) | Full conversion cost metric | [See all Funnel Conversion metrics →](/reference/metrics/funnel/conversions) # Trial Started Value: Total Value of Trial Starts Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/trial-started-value Track the total monetary value of trial starts. Measure expected revenue from trial cohorts. Trial Started Value measures the total monetary value associated with all trial start events tracked by the Upstack pixel. ## Formula **Trial Started Value** = **SUM** ( Value ) **WHERE** event\_type = trial\_started ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------ | ------------------------------------------- | | [**Trial Started**](/reference/metrics/funnel/conversions/trial-started) | Total trial start events | | **Value** | Expected value assigned to each trial start | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your SaaS tracked **400 trial starts** this month with varying plan intents. | Trial Type | Count | Expected LTV | Total Value | | ------------ | ------- | ------------ | ------------- | | Enterprise | 40 | \$10,000 | \$400,000 | | Professional | 120 | \$2,500 | \$300,000 | | Starter | 240 | \$500 | \$120,000 | | **Total** | **400** | - | **\$820,000** | *** ## How It Works This metric sums the expected monetary value associated with each trial start. Value is typically calculated based on historical trial-to-paid conversion rates and expected lifetime value by plan type. This helps quantify the potential revenue from trial cohorts. *** ## When to Use | Scenario | Action | | ---------------------- | ------------------------------------- | | Revenue forecasting | Project revenue from trial pipeline | | Cohort analysis | Compare trial value over time | | Campaign ROI | Calculate return on trial acquisition | | Segment prioritization | Focus on high-value trial segments | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ------------------------- | | [Trial Started](/reference/metrics/funnel/conversions/trial-started) | Count of trial starts | | [Cost per Trial Started](/reference/metrics/funnel/conversions/cost-per-trial-started) | Cost per trial | | [Trial Activated Value](/reference/metrics/funnel/conversions/trial-activated-value) | Value of activated trials | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Unique Checkouts: Session-Deduplicated Checkout Count Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/unique-checkouts Track unique checkout events per session. Count session-deduplicated checkout initiations to measure true checkout intent without duplicate events. Unique Checkouts counts the number of sessions where at least one checkout event occurred, eliminating duplicate checkout events within the same session. ## Formula **Unique Checkouts** = **COUNT** ( Distinct Sessions with Checkout Event ) ### Formula Components | Metric | Definition | | ----------------------------------------- | ------------------------------------------------------------------------------------------ | | **Distinct Sessions with Checkout Event** | Sessions where the visitor initiated checkout at least once, counted only once per session | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your store recorded **2,156 unique checkouts** last week, compared to 3,891 total checkout events: | Day | Unique Checkouts | Total Checkout Events | Dedup Ratio | | --------- | ---------------- | --------------------- | ----------- | | Monday | 298 | 512 | 58% | | Tuesday | 312 | 567 | 55% | | Wednesday | 287 | 498 | 58% | | Thursday | 324 | 589 | 55% | | Friday | 356 | 684 | 52% | | Saturday | 298 | 521 | 57% | | Sunday | 281 | 520 | 54% | *** ## How It Works When a visitor reaches your checkout page, the Upstack Pixel fires a checkout event. If that same visitor refreshes the page or navigates back and forth multiple times within a session, multiple events fire. Unique Checkouts deduplicates these by counting only one checkout per session, giving you an accurate count of sessions with purchase intent. *** ## When to Use | Scenario | Action | | ------------------------------------- | ------------------------------------------------------------------------------------------ | | Measuring true checkout intent | Use Unique Checkouts instead of raw checkout events to avoid inflation from page refreshes | | Calculating accurate conversion rates | Divide purchases by Unique Checkouts for checkout-to-purchase rate | | Identifying checkout friction | Compare Unique Checkouts to Purchases to find drop-off at payment | | Evaluating campaign quality | Sessions reaching checkout indicate stronger purchase intent | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | --------------------------------------------------- | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Raw checkout event count (not session-deduplicated) | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Completed conversions from checkout | | [Checkout to Purchase Rate](/reference/metrics/funnel/conversions/checkout-to-purchase-rate) | Measures conversion from checkout to purchase | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Unique Converters: Distinct Converting Users Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/unique-converters Track unique converting users across your marketing channels. Measure customer reach, calculate frequency, and optimize acquisition strategies. The number of unique individuals who completed at least one conversion. ## Formula **Unique Converters** = **COUNT DISTINCT** ( Converting User IDs ) ### Formula Components | Metric | Definition | | ----------------------- | ------------------------------------------------------------- | | **COUNT DISTINCT** | Aggregation function that counts unique values only | | **Converting User IDs** | Identity-resolved user identifiers who completed a conversion | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count Distinct | *** ## Example Your campaigns drove **892 unique converters** who made 1,247 total conversions: | Metric | Value | | ------------------------- | ----- | | Total Conversions | 1,247 | | Unique Converters | 892 | | Conversions per Converter | 1.4× | | Repeat Converters | 28% | *** ## How It Works Upstack uses identity resolution to deduplicate converters across sessions and devices. A customer who purchases twice counts as one unique converter but two conversions. This metric reveals true customer acquisition versus repeat behavior. *** ## When to Use | Scenario | Action | | --------------------------- | ----------------------------------------------------------- | | Unique \< Total conversions | Strong repeat purchase behavior—nurture existing customers | | Unique ≈ Total conversions | Most conversions are first-time—focus on retention | | Comparing channels | Identify which platforms acquire new vs. re-engage existing | | Measuring acquisition | Track new customer growth separately from repeat purchases | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------ | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Total events (Conversions ÷ Unique Converters = repeat rate) | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total revenue from all converters | | [Average Conversion Value](/reference/metrics/funnel/conversions/average-conversion-value) | Value per conversion event | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Unique Purchases: Session-Deduplicated Conversions Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/unique-purchases Track unique purchase events for your Shopify store. Session-deduplicated count of completed orders for accurate funnel conversion measurement. Unique Purchases counts purchase events deduplicated by session, ensuring each session is counted only once regardless of multiple purchase events. ## Formula **Unique Purchases** = **COUNT DISTINCT** ( Sessions with Purchase ) ### Formula Components | Metric | Definition | | -------------------------- | ------------------------------------------------------- | | **Sessions with Purchase** | Sessions where at least one purchase event was recorded | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store recorded **892 unique purchases** in January, even though total purchase events reached 1,024 (some sessions had multiple purchase events). | Week | Unique Purchases | Total Events | Deduplication Rate | | ------ | ---------------- | ------------ | ------------------ | | Week 1 | 205 | 238 | 13.9% duplicates | | Week 2 | 228 | 261 | 12.6% duplicates | | Week 3 | 217 | 249 | 12.9% duplicates | | Week 4 | 242 | 276 | 12.3% duplicates | *** ## How It Works The Upstack Pixel tracks purchase events when customers complete checkout on your Shopify store. Unlike total purchase event counts, Unique Purchases deduplicates by session—if a visitor triggers multiple purchase events within the same session (due to page refreshes, payment retries, or tracking redundancy), only one purchase is counted. This provides a more accurate conversion count aligned with actual Shopify orders. *** ## When to Use | Scenario | Action | | ---------------------------- | --------------------------------------------------------------- | | Accurate conversion counting | Use when you need true order counts without tracking duplicates | | Funnel analysis | Measure real session-to-purchase conversion rates | | Attribution accuracy | Ensure 1:1 mapping between attributed sessions and conversions | | Comparing against Shopify | Validate tracking accuracy against Shopify Admin order counts | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | -------------------------------------------- | | [Order Placed](/reference/metrics/funnel/conversions/order-placed) | Total order events (may include duplicates) | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total monetary value of conversions | | [Session Conversion Rate](/reference/metrics/funnel/conversions/session-conversion-rate) | Percentage of sessions resulting in purchase | [See all Conversion metrics →](/reference/metrics/funnel/conversions) # Upsell Purchase Value: Track Post-Purchase Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/upsell-purchase-value Track total revenue from upsell purchases on your Shopify store. Measure post-purchase offer performance and optimize upsell conversion rates. Upsell Purchase Value is the total monetary value of all upsell purchase events tracked by the Upstack pixel. ## Formula **Upsell Purchase Value** = **SUM** ( Upsell Purchase Values ) ### Formula Components | Metric | Definition | | -------------------------- | ----------------------------------------------------------------- | | **SUM** | Aggregation function that totals all upsell purchase values | | **Upsell Purchase Values** | Monetary value of each post-purchase upsell accepted by customers | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store generated **\$8,450** in upsell revenue from 423 upsell purchases this month: | Week | Upsell Value | Upsell Purchases | Avg Value | | ------ | ------------ | ---------------- | --------- | | Week 1 | \$2,100 | 105 | \$20.00 | | Week 2 | \$2,350 | 118 | \$19.92 | | Week 3 | \$1,850 | 92 | \$20.11 | | Week 4 | \$2,150 | 108 | \$19.91 | *** ## How It Works The Upstack pixel tracks every upsell purchase event on your Shopify store, capturing the monetary value when a customer accepts a post-purchase or in-cart upsell offer. Upsell Purchase Value sums all these accepted upsell amounts, helping you measure the incremental revenue generated beyond the initial purchase. *** ## When to Use | Scenario | Action | | ----------------------------------- | ----------------------------------------------------------------------- | | Measuring upsell ROI | Compare upsell revenue against the cost of your upsell app or offers | | Optimizing post-purchase offers | Track which upsell products generate the most revenue | | Evaluating average order value lift | See how upsells contribute to overall order value on your Shopify store | | Analyzing customer behavior | Understand which customer segments accept upsells most frequently | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ------------------------------------------------------ | | [Upsell Purchases](/reference/metrics/funnel/conversions/upsell-purchases) | Count of upsell events (this metric sums their values) | | [Cost per Upsell Purchase](/reference/metrics/funnel/conversions/cost-per-upsell-purchase) | Ad spend required to generate each upsell conversion | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total revenue from all attributed conversions | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Upsell Purchases: Track Post-Purchase Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/upsell-purchases Count upsell purchase conversions in your Shopify store. Track revenue from post-purchase offers and optimize your upsell funnel with attribution data. Upsell Purchases counts the total number of purchases made through upsell or cross-sell offers. ## Formula **Upsell Purchases** = **COUNT** ( Upsell Purchase Events ) ### Formula Components | Metric | Definition | | -------------------------- | -------------------------------------------------------------------- | | **COUNT** | Aggregation function that counts each upsell purchase event | | **Upsell Purchase Events** | Purchase events triggered by accepting an upsell or cross-sell offer | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store tracked **287 upsell purchases** this month from post-purchase offers: | Upsell Offer Type | Upsell Purchases | Conversion Rate | | -------------------- | ---------------- | --------------- | | Post-checkout upsell | 156 | 12.4% | | Cart page cross-sell | 89 | 8.2% | | Thank you page offer | 42 | 6.1% | *** ## How It Works Upstack automatically tracks upsell purchases when customers accept post-purchase or cross-sell offers in your Shopify store. Each accepted offer triggers an upsell purchase event, which is attributed to the original marketing touchpoint that brought the customer to your store. *** ## When to Use | Scenario | Action | | ------------------------------- | --------------------------------------------------- | | Measuring upsell performance | Track acceptance rates of post-purchase offers | | Optimizing offer placement | Compare upsell conversion rates across touchpoints | | Calculating incremental revenue | Measure additional revenue from upsell campaigns | | Testing upsell strategies | A/B test different offers and track purchase volume | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ------------------------------------------ | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Primary purchases (upsells are additional) | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total value including upsell revenue | | [Average Conversion Value](/reference/metrics/funnel/conversions/average-conversion-value) | Average order value with upsells included | [See all Attributed Conversions metrics →](/reference/metrics/funnel/conversions) # Webinar Registered: Track Webinar Signups Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/webinar-registered Track when users register for webinars. Measure webinar marketing lead generation. Webinar Registered counts the number of times users register for webinars. ## Formula **Webinar Registered** = **COUNT** ( webinar\_registered events ) ### Formula Components | Metric | Definition | | ------------------------------ | ------------------------------------------------ | | **webinar\_registered events** | Events fired when a user registers for a webinar | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your marketing site tracked **345 webinar\_registered events** in January. | Metric | Value | Notes | | ------------------ | ----- | ----------------------------- | | Webinar Page Views | 2,100 | Visitors to registration page | | Webinar Registered | 345 | Registrations completed | | Registration Rate | 16.4% | Visitor-to-registration rate | *** ## How It Works The Upstack pixel tracks `webinar_registered` events when users complete a webinar registration form. This is a high-intent lead generation action. *** ## When to Use | Scenario | Action | | -------------------- | ---------------------------------------- | | Webinar marketing | Track registration volume | | Campaign attribution | Identify channels driving registrations | | Lead generation | Measure webinar as lead source | | Content planning | Compare registration rates across topics | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ----------------------- | | [Webinar Registered Cost](/reference/metrics/funnel/conversions/webinar-registered-cost) | Cost per registration | | [Webinar Registered Value](/reference/metrics/funnel/conversions/webinar-registered-value) | Value of registrations | | [Demo Requested](/reference/metrics/funnel/conversions/demo-requested) | Alternative lead action | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Webinar Registered Cost: Ad Spend per Registration Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/webinar-registered-cost Calculate advertising cost per webinar registration. Measure webinar promotion efficiency. Webinar Registered Cost measures how much you spend on advertising for each webinar registration. ## Formula **Webinar Registered Cost** = **Ad Spend** ÷ [**Webinar Registered**](/reference/metrics/funnel/conversions/webinar-registered) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------- | -------------------------------------------------- | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising cost from connected ad platforms | | [**Webinar Registered**](/reference/metrics/funnel/conversions/webinar-registered) | Count of webinar registrations | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example You spent **\$2,000** on webinar promotion in January and drove **138 registrations**. | Metric | Value | Notes | | ----------------------- | ------- | ---------------------- | | Ad Spend | \$2,000 | Webinar promotion cost | | Webinar Registered | 138 | Registrations | | Webinar Registered Cost | \$14.49 | Cost per registration | *** ## How It Works This metric divides your total ad spend by the number of webinar registrations. It measures the cost efficiency of webinar-based lead generation. *** ## When to Use | Scenario | Action | | ------------------- | ------------------------------------------- | | Webinar ROI | Measure return on webinar promotion | | Channel comparison | Compare registration costs across platforms | | Budget optimization | Allocate spend for webinar campaigns | | Topic analysis | Compare cost across webinar topics | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ----------------------------------- | | [Webinar Registered](/reference/metrics/funnel/conversions/webinar-registered) | The denominator in this calculation | | [Webinar Registered Value](/reference/metrics/funnel/conversions/webinar-registered-value) | Value of registrations | | [Content Downloaded Cost](/reference/metrics/funnel/conversions/content-downloaded-cost) | Compare content CPL | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Webinar Registered Value: Lead Value from Webinars Source: https://docs.upstackdata.com/reference/metrics/funnel/conversions/webinar-registered-value Track the monetary value attributed to webinar registrations. Measure expected lead value. Webinar Registered Value totals the monetary value attributed to webinar registrations. ## Formula **Webinar Registered Value** = **SUM** ( value ) **FROM** webinar\_registered events ### Formula Components | Metric | Definition | | ------------------------------ | ---------------------------------------------------------- | | **value** | The monetary value attributed to each webinar registration | | **webinar\_registered events** | Events fired when users register for webinars | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example You had **138 webinar registrations** in January with an average attributed value of **\$75**. | Metric | Value | Notes | | ------------------------ | -------- | ------------------------------- | | Webinar Registered | 138 | Registrations | | Avg Registration Value | \$75 | Expected value per registration | | Webinar Registered Value | \$10,350 | Total lead value | *** ## How It Works This metric sums the value attribute from all webinar\_registered events. The value typically represents expected revenue based on historical conversion rates from webinar registration to customer. *** ## When to Use | Scenario | Action | | ------------------- | -------------------------------------- | | Webinar ROI | Calculate return on webinar investment | | Pipeline projection | Estimate revenue from webinar leads | | Channel comparison | Compare lead value by source | | Topic strategy | Prioritize high-value webinar topics | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ---------------------- | | [Webinar Registered](/reference/metrics/funnel/conversions/webinar-registered) | Count of registrations | | [Webinar Registered Cost](/reference/metrics/funnel/conversions/webinar-registered-cost) | Cost per registration | | [Demo Requested Value](/reference/metrics/funnel/conversions/demo-requested-value) | Compare lead values | [See all Conversions metrics →](/reference/metrics/funnel/conversions) # Engagement Metrics: Shopping Behavior & Funnel Progression Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement Track engagement metrics in Upstack Funnel. Includes View Contents, Add to Carts, Initiate Checkouts, conversion rates, and shopping behavior analytics. Engagement metrics measure how visitors interact with your store—from viewing products to adding items to cart and starting checkout. These metrics help you identify drop-off points and optimize your conversion funnel. **Data Source:** [Upstack Pixel](/pixel)\ **Metrics:** 77 ## Key Metrics in This Group The tables below highlight the most commonly used engagement metrics — browse the full list of 77 in the sidebar. ### Event Counts | Metric | Description | When to Use | | ----------------------------------------------------------------------------- | ----------------------------- | -------------------------- | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Product detail page views | Measure product discovery | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Items added to shopping cart | Track purchase intent | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Checkout sessions started | Measure checkout reach | | [Total Events](/reference/metrics/funnel/engagement/total-events) | All tracking events processed | Monitor overall activity | | [Custom Events](/reference/metrics/funnel/engagement/custom-event) | Custom events fired via pixel | Track feature interactions | ### Cost per Event | Metric | Description | When to Use | | --------------------------------------------------------------------------------------------- | --------------------------- | ------------------------------- | | [Cost per View Content](/reference/metrics/funnel/engagement/cost-per-view-content) | Ad spend per product view | Evaluate product discovery cost | | [Cost per Add to Cart](/reference/metrics/funnel/engagement/cost-per-add-to-cart) | Ad spend per cart addition | Measure intent acquisition cost | | [Cost per Initiate Checkout](/reference/metrics/funnel/engagement/cost-per-initiate-checkout) | Ad spend per checkout start | Track checkout acquisition cost | ### Event Value | Metric | Description | When to Use | | ----------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------- | | [View Contents Value](/reference/metrics/funnel/engagement/view-contents-value) | Monetary value of product views | Attribute value to discovery | | [Add to Carts Value](/reference/metrics/funnel/engagement/add-to-carts-value) | Monetary value of cart additions | Attribute value to intent | | [Initiate Checkouts Value](/reference/metrics/funnel/engagement/initiate-checkouts-value) | Monetary value of checkout starts | Attribute value to checkout | | [Click Button Value](/reference/metrics/funnel/engagement/click-button-value) | Monetary value of button clicks | Attribute value to CTA interactions | ### Conversion Rates | Metric | Description | When to Use | | ------------------------------------------------------------------------------------------- | ---------------------------------- | --------------------------------- | | [View Content Rate](/reference/metrics/funnel/engagement/view-content-rate) | Page views → Product views % | Measure navigation effectiveness | | [Add to Cart Rate](/reference/metrics/funnel/engagement/add-to-cart-rate) | Product views → Cart additions % | Evaluate product page persuasion | | [Initiate Checkout Rate](/reference/metrics/funnel/engagement/initiate-checkout-rate) | Cart additions → Checkout starts % | Track cart-to-checkout conversion | | [Add to Cart to IC Rate](/reference/metrics/funnel/engagement/atc-to-ic-rate) | Cart → Checkout progression % | Identify cart abandonment | | [Page Views to View Contents Rate](/reference/metrics/funnel/engagement/pv-to-vc-rate) | All pages → Product pages % | Measure product discovery rate | | [View Contents to Add to Cart Rate](/reference/metrics/funnel/engagement/vc-to-atc-rate) | Product views → Cart % | Track product page effectiveness | | [Session View Product Rate](/reference/metrics/funnel/engagement/session-view-product-rate) | Sessions with product view % | Measure discovery engagement | ### Session Behavior | Metric | Description | When to Use | | ------------------------------------------------------------------------------------------------------- | ----------------------------- | ---------------------------- | | [Average Page Views per Session](/reference/metrics/funnel/engagement/avg-page-views-per-session) | Pages viewed per visit | Measure browsing depth | | [Average View Contents per Session](/reference/metrics/funnel/engagement/avg-view-contents-per-session) | Products viewed per visit | Track catalog exploration | | [Average Page Visits per Session](/reference/metrics/funnel/engagement/avg-page-visits-per-session) | Page visits including repeats | Compare to unique page views | ## How These Metrics Relate Engagement metrics track progression through the shopping funnel: ``` Page Views → View Contents → Add to Carts → Initiate Checkouts → Purchase ↓ ↓ ↓ ↓ VC Rate ATC Rate IC Rate Purchase Rate ``` Each funnel stage has three metrics: 1. **Count** — How many events occurred 2. **Cost** — How much ad spend per event 3. **Value** — Revenue attributed to that stage ## Choosing the Right Metric * **Funnel health**: Compare conversion rates at each stage to find drop-offs * **Product pages**: Low ATC Rate → improve product descriptions, images, or pricing * **Cart experience**: Low IC Rate → simplify cart, reduce friction, show trust signals * **Acquisition efficiency**: Compare Cost per Event across channels * **Session quality**: High Avg Page Views/Session indicates engaged visitors * **Discovery**: Session View Product Rate shows if visitors find your products # Add Billing Info: Track Checkout Payment Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/add-billing-info Track when visitors enter billing information during checkout. Monitor payment step completion rates to identify checkout friction points. Add Billing Info counts the total times visitors submitted their billing or payment information during checkout. ## Formula **Add Billing Info** = **COUNT** ( add\_billing\_info events ) ### Formula Components | Metric | Definition | | ----------------------------- | -------------------------------------------------------------------------------------- | | **add\_billing\_info events** | Individual events fired when a visitor enters billing information in the checkout flow | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your Shopify store had **2,847 visitors initiate checkout** last week, and **1,923 of them entered billing information**. | Stage | Count | Drop-off | | ----------------- | ----- | -------- | | Initiate Checkout | 2,847 | — | | Add Billing Info | 1,923 | 32.4% | | Purchase | 1,654 | 14.0% | *** ## How It Works The Add Billing Info event fires when a visitor enters payment or billing details during the checkout process. This typically occurs after shipping information is entered and before the final purchase confirmation. Tracking this step helps identify where visitors abandon the checkout funnel. *** ## When to Use | Scenario | Action | | ------------------------- | --------------------------------------------------------------------------- | | High checkout abandonment | Compare Add Billing Info to Initiate Checkout to find payment step friction | | Payment method testing | Monitor billing completion rates when adding new payment options | | Checkout optimization | Identify if billing form complexity causes drop-offs | | Fraud concerns | Spike in billing entries without purchases may indicate testing behavior | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------- | ------------------------------------------ | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Previous step in the checkout funnel | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Next step after billing info is entered | | [Add Shipping Info](/reference/metrics/funnel/engagement/add-shipping-info) | Related checkout step for shipping details | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Add Billing Info Value: Total Value from Payment Info Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/add-billing-info-value Track the total monetary value of add billing info events. Measure checkout funnel revenue potential when shoppers enter payment details. Add Billing Info Value measures the total monetary value associated with events where visitors enter payment information during checkout. ## Formula **Add Billing Info Value** = **SUM** ( value ) **WHERE** event = add\_billing\_info ### Formula Components | Metric | Definition | | ------------------------------ | -------------------------------------------------------------------- | | **value** | The monetary value passed with each add billing info event | | **event = add\_billing\_info** | Filters to only add billing info events tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example A DTC brand tracked **847 add billing info events** over a week, with a combined value of **\$127,050**. | Day | Events | Value | | --------- | ------ | -------- | | Monday | 134 | \$20,100 | | Tuesday | 112 | \$16,800 | | Wednesday | 128 | \$19,200 | | Thursday | 119 | \$17,850 | | Friday | 145 | \$21,750 | | Saturday | 108 | \$16,200 | | Sunday | 101 | \$15,150 | *** ## How It Works The Upstack pixel captures the `value` property when visitors trigger an add billing info event during checkout. This typically fires when a shopper enters or confirms their payment method. The metric sums all values to show total potential revenue at the payment information stage of your checkout funnel. *** ## When to Use | Scenario | Action | | ------------------------ | ---------------------------------------------------------------------------------------- | | Checkout funnel analysis | Compare Add Billing Info Value against purchase value to identify payment-stage drop-off | | Revenue forecasting | Use as a leading indicator of potential purchase revenue | | Campaign optimization | Evaluate which channels drive higher-value visitors to the payment step | | A/B testing checkout | Measure value impact when testing payment form changes | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [Add to Carts Value](/reference/metrics/funnel/engagement/add-to-carts-value) | Earlier funnel value — measures intent before payment | | [Initiate Checkouts Value](/reference/metrics/funnel/engagement/initiate-checkouts-value) | Checkout initiation value — precedes payment entry | | [Purchases Value](/reference/metrics/funnel/conversions/purchases-value) | Final conversion value — actual completed purchases | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Add Shipping Info: Track Checkout Shipping Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/add-shipping-info Count add shipping info events in your checkout funnel. Measure checkout progress and identify where shoppers submit their delivery details. Add Shipping Info counts the total number of times visitors enter shipping information during checkout. ## Formula **Add Shipping Info** = **COUNT** ( Add Shipping Info Events ) ### Formula Components | Metric | Definition | | ---------------------------- | ---------------------------------------------------------------- | | **Add Shipping Info Events** | Each instance a visitor submits shipping details during checkout | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store tracked shipping info submissions across checkout sessions in January. | Day | Add Shipping Info | Completed Orders | Drop-off | | --------- | ----------------- | ---------------- | -------- | | Mon | 412 | 287 | 30% | | Tue | 389 | 265 | 32% | | Wed | 456 | 324 | 29% | | Thu | 398 | 271 | 32% | | Fri | 521 | 389 | 25% | | **Total** | **2,176** | **1,536** | **29%** | *** ## How It Works Add Shipping Info counts every event fired when a visitor submits shipping details during checkout. The Upstack Pixel tracks this step in the checkout funnel, capturing when shoppers enter their delivery address or select a shipping method. Each submission counts as one event. *** ## When to Use | Scenario | Action | | ------------------------ | -------------------------------------------------- | | Checkout funnel analysis | Measure how many shoppers reach the shipping step | | Drop-off diagnosis | Identify abandonment between shipping and payment | | Shipping friction | Compare shipping info events across checkout flows | | Geographic insights | Analyze shipping submissions by region | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------- | ---------------------------------------- | | [Add Payment Info](/reference/metrics/funnel/conversions/add-payment-info) | Next checkout step after shipping | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Checkout entries preceding shipping step | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Final conversion after checkout | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Funnel step before checkout | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Add Shipping Info Value: Total Checkout Shipping Event Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/add-shipping-info-value Track the total monetary value from add shipping info events in your e-commerce checkout funnel using the Upstack Pixel. Add Shipping Info Value measures the total monetary value associated with visitors submitting shipping information during checkout. ## Formula **Add Shipping Info Value** = **SUM** ( value ) **WHERE** event = add\_shipping\_info ### Formula Components | Metric | Definition | | ------------------------------- | -------------------------------------------------------------------- | | **value** | The monetary value passed with each add\_shipping\_info event | | **event = add\_shipping\_info** | Filters to only shipping info submission events tracked by the pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your Shopify store tracked **2,847 add shipping info events** in January with a combined value of **\$142,350**. | Week | Events | Total Value | Avg Value | | ------ | ------ | ----------- | --------- | | Week 1 | 687 | \$34,350 | \$50.00 | | Week 2 | 724 | \$36,200 | \$50.00 | | Week 3 | 698 | \$34,900 | \$50.00 | | Week 4 | 738 | \$36,900 | \$50.00 | *** ## How It Works The Upstack Pixel captures the `value` property from each `add_shipping_info` event and sums them over your selected time period. This value typically represents the cart or order value at the moment the visitor submits their shipping details during checkout. *** ## When to Use | Scenario | Action | | --------------------------------- | ---------------------------------------------------------------------- | | Measuring checkout funnel revenue | Track value at the shipping info step vs. payment and purchase | | Identifying drop-off value | Compare shipping info value to purchase value to quantify lost revenue | | Segmenting by traffic source | Analyze which channels drive higher-value checkouts | | Optimizing checkout flow | A/B test shipping form changes and measure impact on total value | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | ----------------------------------------- | | [Add Shipping Info](/reference/metrics/funnel/engagement/add-shipping-info) | Event count for shipping info submissions | | [Cost per Add Shipping Info](/reference/metrics/funnel/engagement/cost-per-add-shipping-info) | Ad spend efficiency for this funnel step | | [Add Payment Info Value](/reference/metrics/funnel/conversions/add-payment-info-value) | Value at the next checkout step | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Add to Cart Rate: Measure Shopping Intent Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/add-to-cart-rate Track the percentage of product viewers who add items to cart. Analyze shopping intent and optimize product pages to increase add-to-cart conversions. Add to Cart Rate measures the percentage of product page views that result in an add-to-cart action. ## Formula **Add to Cart Rate** = ( [**Add to Carts**](/reference/metrics/funnel/engagement/add-to-carts) ÷ [**View Contents**](/reference/metrics/funnel/engagement/view-contents) ) × 100 ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------- | -------------------------------- | | [**Add to Carts**](/reference/metrics/funnel/engagement/add-to-carts) | Total add-to-cart events tracked | | [**View Contents**](/reference/metrics/funnel/engagement/view-contents) | Total product detail page views | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your product pages received **8,450 view content events** in January, resulting in **1,521 add-to-cart actions**. | Metric | Value | Calculation | | -------------------- | --------- | -------------------------- | | View Contents | 8,450 | Product page views tracked | | Add to Carts | 1,521 | Items added to cart | | **Add to Cart Rate** | **18.0%** | (1,521 ÷ 8,450) × 100 | *** ## How It Works Add to Cart Rate calculates the conversion between product discovery and purchase intent. The Upstack Pixel tracks view content events when visitors land on product pages and add-to-cart events when they click the add-to-cart button. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------------------------- | | Product page optimization | Compare rates across products to identify high/low performers | | A/B testing | Measure impact of price, imagery, or copy changes | | Seasonal analysis | Track intent changes during promotions or holidays | | Funnel diagnostics | Identify drop-off between viewing and carting | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------- | ----------------------------------- | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Numerator — total cart additions | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Denominator — product page views | | [ATC to IC Rate](/reference/metrics/funnel/engagement/atc-to-ic-rate) | Next funnel step — cart to checkout | | [Add to Carts Value](/reference/metrics/funnel/engagement/add-to-carts-value) | Monetary value of items added | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Add to Carts: Track Shopping Cart Actions Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/add-to-carts Count the total add-to-cart events on your store. Measure shopping intent and analyze which products drive the most cart additions. Add to Carts counts the total number of times visitors add products to their shopping cart. ## Formula **Add to Carts** = **COUNT** ( Add to Cart Events ) ### Formula Components | Metric | Definition | | ---------------------- | --------------------------------------------------------- | | **Add to Cart Events** | Each instance a visitor clicks "Add to Cart" on a product | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store tracked add-to-cart activity across product categories in January. | Product Category | Add to Carts | % of Total | | ---------------- | ------------ | ---------- | | Apparel | 623 | 41% | | Accessories | 412 | 27% | | Footwear | 298 | 20% | | Home Goods | 188 | 12% | | **Total** | **1,521** | **100%** | *** ## How It Works Add to Carts counts every add-to-cart event fired by the Upstack Pixel. Each click on an "Add to Cart" button triggers one event, regardless of quantity selected. Multiple adds of the same product by the same visitor count as separate events. *** ## When to Use | Scenario | Action | | ------------------- | ------------------------------------------- | | Funnel analysis | Measure volume entering the purchase funnel | | Product performance | Identify top products by cart additions | | Traffic quality | Compare cart actions across channels | | Trend monitoring | Track daily/weekly cart activity patterns | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------- | ------------------------------------ | | [Add to Cart Rate](/reference/metrics/funnel/engagement/add-to-cart-rate) | Conversion rate from views to cart | | [Add to Carts Value](/reference/metrics/funnel/engagement/add-to-carts-value) | Monetary value of cart additions | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Product views preceding cart actions | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Next funnel step after cart | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Add to Carts Value: Track Cart Monetary Intent Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/add-to-carts-value Measure the total monetary value of products added to cart. Analyze shopping intent in dollars to optimize high-value product pages and promotions. Add to Carts Value measures the total monetary value of all products added to shopping carts. ## Formula **Add to Carts Value** = **SUM** ( Add to Cart Event Values ) ### Formula Components | Metric | Definition | | ---------------------------- | --------------------------------------------------------------- | | **Add to Cart Event Values** | Product price multiplied by quantity for each add-to-cart event | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store tracked **1,521 add-to-cart events** in January with varying product values. | Product Category | Add to Carts | Avg Value | Total Value | | ---------------- | ------------ | --------- | ------------ | | Premium Items | 312 | \$89.00 | \$27,768 | | Core Products | 847 | \$45.00 | \$38,115 | | Accessories | 362 | \$18.00 | \$6,516 | | **Total** | **1,521** | — | **\$72,399** | *** ## How It Works Add to Carts Value sums the monetary value of each add-to-cart event. The Upstack Pixel captures the product price and quantity when visitors add items to cart, calculating value as price × quantity for each event. *** ## When to Use | Scenario | Action | | -------------------------- | ------------------------------------------------ | | Revenue potential analysis | Forecast potential revenue from cart intent | | Product merchandising | Identify which products drive highest cart value | | Promotion effectiveness | Compare value impact of discounts vs. full price | | Segment comparison | Analyze cart value by traffic source or audience | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------- | -------------------------------- | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Count of cart additions (volume) | | [Add to Cart Rate](/reference/metrics/funnel/engagement/add-to-cart-rate) | Conversion rate to cart | | [Initiate Checkouts Value](/reference/metrics/funnel/engagement/initiate-checkouts-value) | Value progressing to checkout | | Cart Abandonment Rate | Percentage of cart value lost | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Add to Wishlist: Track Product Interest Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/add-to-wishlist Track Add to Wishlist events to measure product interest and intent. Identify popular products and optimize retargeting for your Shopify store. Add to Wishlist counts the number of times visitors save products to their wishlist, indicating purchase intent and product interest. ## Formula **Add to Wishlist** = **COUNT** ( add\_to\_wishlist events ) ### Formula Components | Metric | Definition | | ---------------------------- | ----------------------------------------------------------------------- | | **add\_to\_wishlist events** | Individual events fired when a visitor adds a product to their wishlist | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your store's summer collection page shows **847 wishlist adds** over the past 30 days across 12 products. | Product | Wishlist Adds | Add-to-Cart Rate | | -------------------- | ------------- | ---------------- | | Coastal Linen Dress | 234 | 42% | | Sunset Beach Tote | 189 | 38% | | Ocean Breeze Sandals | 156 | 35% | *** ## How It Works The Upstack Pixel fires an `add_to_wishlist` event whenever a visitor clicks a "Add to Wishlist" or "Save for Later" button. Each event captures the product details including SKU, price, and category, enabling you to analyze which products generate the most interest before purchase. *** ## When to Use | Scenario | Action | | ------------------------------- | ----------------------------------------------------------------------- | | Identify high-interest products | Track which items get wishlisted most to inform inventory and marketing | | Retarget interested visitors | Build audiences of wishlist users for reminder campaigns | | Measure product page engagement | Compare wishlist adds vs. add-to-cart to gauge consideration behavior | | Analyze seasonal trends | Track wishlist activity around promotions and product launches | *** ## Related Metrics | Metric | Relationship | | ------------- | ----------------------------------------------------------------- | | Add to Cart | Measures stronger purchase intent when visitors add items to cart | | Product Views | Tracks initial product interest before wishlist or cart action | | Conversions | Measures completed purchases from wishlist retargeting | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Add to Wishlist Value: Total Wishlist Revenue Potential Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/add-to-wishlist-value Track the total monetary value of products added to wishlists. Measure purchase intent and identify high-value products driving customer interest. Add to Wishlist Value measures the total monetary value of products added to wishlists, representing potential future revenue and purchase intent. ## Formula **Add to Wishlist Value** = **SUM** ( Product Value ) **WHERE** event = add\_to\_wishlist ### Formula Components | Metric | Definition | | ----------------------------- | ----------------------------------------------------------- | | **Product Value** | The price or value of the product added to the wishlist | | **event = add\_to\_wishlist** | Filters to only add-to-wishlist events tracked by the pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your Shopify store tracked **\$47,250** in Add to Wishlist Value last month from 1,890 wishlist additions. | Week | Wishlist Additions | Add to Wishlist Value | Avg. Item Value | | ------ | ------------------ | --------------------- | --------------- | | Week 1 | 450 | \$11,250 | \$25.00 | | Week 2 | 480 | \$12,000 | \$25.00 | | Week 3 | 520 | \$13,000 | \$25.00 | | Week 4 | 440 | \$11,000 | \$25.00 | *** ## How It Works The Upstack Pixel captures the `add_to_wishlist` event when visitors save products to their wishlists. Each event includes the product's value, which is summed to calculate total Add to Wishlist Value. This metric represents latent demand and potential future purchases. *** ## When to Use | Scenario | Action | | -------------------------------- | ----------------------------------------------------- | | Measuring purchase intent | Track which products generate the most wishlist value | | Identifying high-demand products | Focus marketing on products with high wishlist values | | Planning inventory | Stock products that show strong wishlist interest | | Retargeting campaigns | Target users who added high-value items to wishlists | *** ## Related Metrics | Metric | Relationship | | ----------------- | ---------------------------------------------- | | Add to Wishlist | Count of wishlist additions (volume vs. value) | | Add to Cart Value | Similar metric for cart additions | | Conversion Value | Revenue from completed purchases | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # ATC to IC Rate: Cart to Checkout Conversion Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/atc-to-ic-rate Measure the percentage of cart additions that proceed to checkout. Identify cart abandonment issues and optimize the path from cart to purchase. ATC to IC Rate measures the percentage of add-to-cart events that progress to initiate checkout. ## Formula **ATC to IC Rate** = ( [**Initiate Checkouts**](/reference/metrics/funnel/engagement/initiate-checkouts) ÷ [**Add to Carts**](/reference/metrics/funnel/engagement/add-to-carts) ) × 100 ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------- | ---------------------------------------- | | [**Initiate Checkouts**](/reference/metrics/funnel/engagement/initiate-checkouts) | Total checkout initiation events tracked | | [**Add to Carts**](/reference/metrics/funnel/engagement/add-to-carts) | Total add-to-cart events tracked | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store tracked **1,521 add-to-cart events** in January, with **912 progressing to checkout**. | Metric | Value | Calculation | | ------------------ | --------- | ------------------- | | Add to Carts | 1,521 | Items added to cart | | Initiate Checkouts | 912 | Checkout starts | | **ATC to IC Rate** | **60.0%** | (912 ÷ 1,521) × 100 | *** ## How It Works ATC to IC Rate calculates the conversion between cart addition and checkout initiation. The Upstack Pixel tracks add-to-cart events when visitors add products and initiate checkout events when they begin the checkout process. *** ## When to Use | Scenario | Action | | --------------------------- | -------------------------------------------- | | Cart experience audit | Identify friction preventing checkout starts | | Shipping threshold testing | Measure impact of free shipping offers | | Trust signal optimization | Test security badges, reviews, guarantees | | Mobile vs. desktop analysis | Compare checkout intent by device | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------- | --------------------------------------- | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Denominator — cart additions | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Numerator — checkout starts | | [Add to Cart Rate](/reference/metrics/funnel/engagement/add-to-cart-rate) | Previous funnel step — views to cart | | Checkout Conversion Rate | Next funnel step — checkout to purchase | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Average Page Views per Session: Site Engagement Depth Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/avg-page-views-per-session Track average pages viewed per session to measure site engagement depth. Learn the formula, see examples, and identify content that keeps visitors exploring. The average number of pages visitors view during a single session on your site. ## Formula **Avg Page Views per Session** = [**Page Views**](/reference/metrics/funnel/awareness/page-views) ÷ [**Sessions**](/reference/metrics/funnel/awareness/sessions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------- | -------------------------------------- | | [**Page Views**](/reference/metrics/funnel/awareness/page-views) | Total pages loaded across all sessions | | [**Sessions**](/reference/metrics/funnel/awareness/unique-sessions) | Unique visitor sessions on your site | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Your site recorded **4.2 pages per session** this month across 12,400 sessions: | Traffic Source | Avg Pages/Session | Sessions | | -------------- | ----------------- | -------- | | Organic Search | 5.1 | 4,200 | | Email Campaign | 4.8 | 2,800 | | Paid Social | 3.2 | 3,100 | | Direct | 3.9 | 2,300 | *** ## How It Works Each time a visitor lands on your site, Upstack starts a session. Every page they view increments the page view count. Dividing total page views by total sessions gives you the average browsing depth across all visitors. *** ## When to Use | Scenario | Action | | ------------------------------- | ----------------------------------------------------- | | Measuring content engagement | Higher values indicate visitors explore more pages | | Evaluating landing page quality | Low values suggest visitors leave without exploring | | Comparing traffic sources | Identify which channels bring more engaged visitors | | Optimizing site navigation | Test layout changes and measure browsing depth impact | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------- | --------------------------------------------------- | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Numerator — total pages viewed | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Denominator — total sessions counted | | [Avg View Contents per Session](/reference/metrics/funnel/engagement/avg-view-contents-per-session) | Similar depth metric for product views specifically | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Average Page Visits per Session: Site Engagement Depth Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/avg-page-visits-per-session Track the average number of page visits per session to measure visitor engagement depth. Includes repeat visits to understand browsing intensity. Average Page Visits per Session measures the total number of page loads per session, including repeat visits to the same page. ## Formula **Avg Page Visits per Session** = **Page Visits** ÷ [**Sessions**](/reference/metrics/funnel/awareness/sessions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------- | --------------------------------------------------------- | | **Page Visits** | Total page loads including repeat visits to the same page | | [**Sessions**](/reference/metrics/funnel/awareness/unique-sessions) | Count of distinct visitor sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example A skincare brand analyzing their collection page performance sees **8.3 average page visits per session** during a product launch week. | Day | Sessions | Total Page Visits | Avg Visits/Session | | --------- | -------- | ----------------- | ------------------ | | Monday | 4,200 | 33,600 | 8.0 | | Tuesday | 5,100 | 43,860 | 8.6 | | Wednesday | 4,800 | 40,800 | 8.5 | *** ## How It Works This metric counts every page load event during a session, including when visitors return to pages they've already viewed. A shopper who views a product page, goes to the cart, then returns to the product page counts as 3 page visits. This differs from Page Views per Session which counts only unique pages. *** ## When to Use | Scenario | Action | | --------------------------------- | --------------------------------------------------------- | | High visits but low conversions | Visitors may be confused or unable to find what they need | | Low visits per session | Consider improving internal linking and navigation | | Compare vs Page Views per Session | Large gap indicates visitors revisiting pages frequently | | A/B testing navigation | Higher visits may indicate more exploration or confusion | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | [Avg Page Views per Session](/reference/metrics/funnel/engagement/avg-page-views-per-session) | Counts unique pages only—compare to identify repeat browsing | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Denominator in this calculation | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Average View Contents per Session: Product Browsing Depth Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/avg-view-contents-per-session Track average product detail pages viewed per session. Measure browsing depth, catalog engagement, and identify high-intent shoppers exploring your products. Average View Contents per Session measures how many product detail pages visitors view in a typical session—indicating browsing depth across your catalog. ## Formula **Avg View Contents per Session** = [**View Contents**](/reference/metrics/funnel/engagement/view-contents) ÷ [**Sessions**](/reference/metrics/funnel/awareness/sessions) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------- | ------------------------------------ | | [**View Contents**](/reference/metrics/funnel/engagement/view-contents) | Total product detail page views | | [**Sessions**](/reference/metrics/funnel/awareness/unique-sessions) | Unique visitor sessions on your site | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example A home decor store had **8,420 product views** across **3,200 sessions** last week: | Channel | View Contents | Sessions | Avg VC/Session | | -------------- | ------------- | -------- | -------------- | | Organic Search | 4,200 | 1,400 | 3.0 | | Paid Social | 2,800 | 1,200 | 2.3 | | Email | 1,420 | 600 | 2.4 | Organic search visitors browse 30% more products, signaling stronger purchase intent. *** ## How It Works Divides total View Content events by sessions. Higher values indicate visitors actively exploring multiple products rather than bouncing after one. *** ## When to Use | Scenario | Action | | ------------------------- | ----------------------------------------------- | | Catalog engagement low | Improve product discovery and recommendations | | Comparing traffic sources | Identify channels bringing engaged browsers | | Testing site navigation | Measure if changes increase product exploration | | Evaluating merchandising | Check if collections drive cross-browsing | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | ---------------------------------- | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Numerator—total product views | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Denominator—total sessions | | [Avg Page Views per Session](/reference/metrics/funnel/engagement/avg-page-views-per-session) | Similar depth metric for all pages | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Click Button: Track User Button Interactions Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/click-button Track button click events on your site. Understand user engagement patterns and optimize CTAs with click button analytics. Click Button measures the total number of button click interactions captured on your site. ## Formula **Click Button Events** = **COUNT** ( button click events ) ### Formula Components | Metric | Definition | | ----------------------- | --------------------------------------------------------- | | **button click events** | Individual button click interactions tracked by the pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Count | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your site recorded **2,847 button clicks** over the past week, with the "Add to Cart" button accounting for 1,203 of those interactions. | Button | Clicks | Share | | ----------- | ------ | ----- | | Add to Cart | 1,203 | 42.3% | | Buy Now | 687 | 24.1% | | Learn More | 512 | 18.0% | | Subscribe | 445 | 15.6% | *** ## How It Works The Upstack Pixel captures button click events when users interact with tracked buttons on your site. Each click is counted and attributed to the specific button element, allowing you to analyze engagement patterns across different CTAs and interactive elements. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------ | | Measuring CTA effectiveness | Compare click rates across different button variations | | Identifying engagement drop-offs | Find where users stop interacting in the funnel | | A/B testing button designs | Track which button styles drive more clicks | | Optimizing page layouts | Determine which button placements perform best | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | ------------------------------------------ | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Total page context for button interactions | | [Sessions](/reference/metrics/funnel/awareness/sessions) | Session context for engagement analysis | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Downstream outcome from button clicks | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Click Button Value: Button Click Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/click-button-value Track total monetary value from button click events. Measure engagement quality by seeing which button interactions lead to higher-value conversions. Total monetary value associated with button click events tracked by the Upstack pixel. ## Formula **Click Button Value** = **SUM** ( Click Button Event Values ) ### Formula Components | Metric | Definition | | ----------------------------- | ---------------------------------------------------- | | **Click Button Event Values** | Monetary value attributed to each button click event | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your marketing landing pages generated **\$84,200** in attributed click button value last month: | Button Type | Click Value | Clicks | Avg Value/Click | | ----------- | ----------- | ------ | --------------- | | Buy Now | \$42,800 | 8,200 | \$5.22 | | Add to Cart | \$24,100 | 5,400 | \$4.46 | | Learn More | \$11,600 | 3,800 | \$3.05 | | Quick View | \$5,700 | 2,100 | \$2.71 | "Buy Now" buttons generate the highest value per click, indicating visitors who click them convert at higher order values. *** ## How It Works Click Button Value sums the monetary value attributed to each button click event tracked via the Upstack pixel. This captures the downstream revenue impact of specific button interactions. Higher values indicate that visitors clicking those buttons tend to complete purchases with larger order totals. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------- | | Evaluating CTA effectiveness | Compare click values across different button types | | Prioritizing page layout | Feature buttons with highest click-to-value ratios | | Assessing traffic quality | Higher click value suggests qualified visitors | | Campaign optimization | Target audiences driving high-value button interactions | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------- | ------------------------------------------ | | [Custom Events](/reference/metrics/funnel/engagement/custom-event) | Button clicks are tracked as custom events | | [View Contents Value](/reference/metrics/funnel/engagement/view-contents-value) | Product view value (similar value metric) | | [Add to Carts Value](/reference/metrics/funnel/engagement/add-to-carts-value) | Cart addition value (similar value metric) | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total revenue from completed conversions | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Complete Tutorial Value: Track Tutorial Completion Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/complete-tutorial-value Track the total monetary value of complete tutorial events. Measure revenue associated with tutorial completions in your funnel. Complete Tutorial Value measures the total monetary value associated with tutorial completion events tracked by the Upstack Pixel. ## Formula **Complete Tutorial Value** = **SUM** ( value ) **WHERE** event = complete\_tutorial ### Formula Components | Metric | Definition | | ------------------------------ | ----------------------------------------------------------- | | **value** | The monetary value passed with each complete tutorial event | | **event = complete\_tutorial** | Filters to complete tutorial tracking events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store tracked **847 tutorial completions** in March with a total value of **\$12,450**. | Week | Completions | Value | Avg Value | | ------ | ----------- | ------- | --------- | | Week 1 | 198 | \$2,970 | \$15.00 | | Week 2 | 215 | \$3,225 | \$15.00 | | Week 3 | 224 | \$3,360 | \$15.00 | | Week 4 | 210 | \$2,895 | \$13.79 | *** ## How It Works Each complete tutorial event can include an optional `value` property representing the monetary value of that completion. The Complete Tutorial Value metric sums all values from tutorial completion events during the selected period. This helps quantify the revenue impact of your tutorial or onboarding flow. *** ## When to Use | Scenario | Action | | ---------------------- | ---------------------------------------------------------------------- | | Measuring tutorial ROI | Compare tutorial value to cost of creating and promoting tutorials | | Optimizing onboarding | Track which tutorial variations drive higher completion values | | Attribution analysis | Understand how tutorial completions contribute to overall funnel value | | Budgeting decisions | Use tutorial value data to justify investment in educational content | *** ## Related Metrics | Metric | Relationship | | -------------------------- | -------------------------------------------- | | Complete Tutorials | Count of tutorial completion events | | Cost per Complete Tutorial | Ad spend efficiency for tutorial completions | | Tutorial Completion Rate | Percentage of users who complete tutorials | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Contacts: Track Contact Form Submissions Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/contact Track contact form submissions on your site. Measure customer inquiries and lead generation to understand prospect engagement with your business. Contacts measures the total number of times visitors submitted a contact form or initiated contact on your site. ## Formula **Contacts** = **COUNT** ( Contact Events ) ### Formula Components | Metric | Definition | | ------------------ | ------------------------------------------------------------------------------------------------- | | **Contact Events** | Individual contact submissions tracked when a visitor submits a contact form or initiates contact | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your store recorded **697 contact form submissions** in March, indicating strong interest from prospective customers: | Week | Contacts | Change | | ------ | -------- | ------ | | Week 1 | 158 | — | | Week 2 | 172 | +8.9% | | Week 3 | 184 | +7.0% | | Week 4 | 183 | -0.5% | *** ## How It Works The Upstack pixel fires a contact event each time a visitor submits a contact form or initiates contact through your site. This includes submissions from contact pages, inquiry forms, callback requests, and any other contact touchpoints. Each successful submission counts as one contact event. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------ | | Measure lead generation | Track contact volume to understand prospect interest | | Evaluate campaign effectiveness | Compare contacts before and after campaign launch | | Identify channel performance | Analyze which traffic sources drive the most inquiries | | Optimize contact forms | Monitor submission trends after form changes | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | ------------------------------------------- | | [Contact Value](/reference/metrics/funnel/conversions/contact-value) | Monetary value attributed to contact events | | [Cost per Contact](/reference/metrics/funnel/conversions/cost-per-contact) | Ad spend efficiency for generating contacts | | [Leads](/reference/metrics/funnel/conversions/lead) | Similar inquiry metric for lead submissions | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Contact Value: Form Submission Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/contact-value Track total monetary value from contact form events. Measure lead quality by seeing which contact submissions drive higher-value conversions. Total monetary value associated with contact form submissions tracked by the Upstack pixel. ## Formula **Contact Value** = **SUM** ( Contact Event Values ) ### Formula Components | Metric | Definition | | ------------------------ | --------------------------------------------------------------- | | **Contact Event Values** | Monetary value attributed to each contact form submission event | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your contact forms generated **\$34,800** in attributed value last month: | Form Type | Contact Value | Submissions | Avg Value/Contact | | --------------- | ------------- | ----------- | ----------------- | | Product Inquiry | \$18,400 | 420 | \$43.81 | | Support Request | \$8,200 | 310 | \$26.45 | | Quote Request | \$6,100 | 85 | \$71.76 | | General Contact | \$2,100 | 180 | \$11.67 | Quote requests have the highest value per contact, indicating visitors requesting quotes tend to complete purchases with larger order totals. *** ## How It Works Contact Value sums the monetary value attributed to each contact form submission event. This captures the downstream revenue impact of customer inquiries and support interactions. Higher values indicate that certain contact types correlate with larger eventual purchases. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------- | | Evaluating form performance | Compare contact values across form types | | Prioritizing support resources | Focus on inquiry types with highest value | | Assessing lead quality | Higher contact value suggests qualified prospects | | Campaign optimization | Target audiences driving high-value inquiries | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------- | ---------------------------------------- | | [Lead](/event-tracking/event-taxonomy/standard-events/lead) | Alternative lead capture event | | [View Contents Value](/reference/metrics/funnel/engagement/view-contents-value) | Value from product views | | [Add to Carts Value](/reference/metrics/funnel/engagement/add-to-carts-value) | Value from cart additions | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total revenue from completed conversions | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Content Downloaded: Track Content Downloads Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/content-downloaded Track the total number of content download events. Monitor lead magnet and gated content engagement. Content Downloaded measures the total number of times visitors downloaded content such as whitepapers, guides, or ebooks, tracked by the Upstack pixel. ## Formula **Content Downloaded** = **COUNT** ( Events ) **WHERE** event\_type = content\_downloaded ### Formula Components | Metric | Definition | | ------------------------------------- | ----------------------------------------- | | **Events** | All tracked events from the Upstack pixel | | **event\_type = content\_downloaded** | Filters to only content download events | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your B2B SaaS tracked content downloads by asset type this quarter. | Content Type | Downloads | Leads Generated | Conversion Rate | | --------------- | --------- | --------------- | --------------- | | Whitepaper | 450 | 180 | 40% | | Ebook | 380 | 140 | 37% | | Industry Report | 220 | 100 | 45% | | Template | 550 | 165 | 30% | | **Total** | **1,600** | **585** | **37%** | *** ## How It Works This metric counts all content downloaded events tracked by the Upstack pixel. A content download event fires when a visitor successfully downloads gated or ungated content. This helps measure content marketing effectiveness and lead generation. *** ## When to Use | Scenario | Action | | -------------------- | ----------------------------------------- | | Content performance | Measure which assets drive most downloads | | Lead generation | Track top-of-funnel lead magnets | | Campaign attribution | Attribute downloads to marketing sources | | Content ROI | Calculate return on content investment | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------- | ------------------------------ | | [Lead](/reference/metrics/funnel/conversions/lead) | Leads generated from downloads | | [Webinar Registered](/reference/metrics/funnel/conversions/webinar-registered) | Another lead gen activity | | [Cost per Content Downloaded](/reference/metrics/funnel/engagement/cost-per-content-downloaded) | Cost per download | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Content Downloaded: Measure Content Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/content-downloaded-cost Calculate cost per content download to measure content marketing efficiency. Track advertising spend per lead magnet engagement. Cost per Content Downloaded measures the average advertising spend required to generate one content download event. ## Formula **Cost per Content Downloaded** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Content Downloaded**](/reference/metrics/funnel/engagement/content-downloaded) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------- | ------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all channels | | [**Content Downloaded**](/reference/metrics/funnel/engagement/content-downloaded) | Count of content download events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your B2B company spent **\$8,500** promoting lead magnets in March, generating **1,700 downloads**. | Content Campaign | Spend | Downloads | Cost/Download | | ------------------- | ----------- | ----------- | ------------- | | Industry Report Ads | \$4,000 | 920 | \$4.35 | | Ebook Promotion | \$2,500 | 480 | \$5.21 | | Guide Retargeting | \$2,000 | 300 | \$6.67 | | **Total** | **\$8,500** | **\$1,700** | **\$5.00** | *** ## How It Works The metric divides total advertising spend by the number of content download events tracked by the Upstack Pixel. Lower costs indicate more efficient content distribution. This helps identify which content assets and promotion channels deliver the best engagement value. *** ## When to Use | Scenario | Action | | -------------------------- | ---------------------------------------------- | | Evaluate content campaigns | Compare cost efficiency across promotions | | Budget content marketing | Allocate spend to high-performing assets | | Optimize ad targeting | Refine audiences to reduce download costs | | Benchmark against leads | Compare to Cost per Lead for funnel efficiency | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------- | ----------------------------------- | | [Content Downloaded](/reference/metrics/funnel/engagement/content-downloaded) | The denominator in this calculation | | [Content Downloaded Value](/reference/metrics/funnel/engagement/content-downloaded-value) | Revenue to compare against cost | | [Cost per Lead](/reference/metrics/funnel/conversions/cost-per-lead) | Next funnel stage cost metric | [See all Funnel Engagement metrics →](/reference/metrics/funnel/engagement) # Content Downloaded Value: Total Value of Downloads Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/content-downloaded-value Track the total monetary value of content download events. Measure the expected value of content-engaged leads. Content Downloaded Value measures the total monetary value associated with all content download events tracked by the Upstack pixel. ## Formula **Content Downloaded Value** = **SUM** ( Value ) **WHERE** event\_type = content\_downloaded ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------- | ---------------------------------------- | | [**Content Downloaded**](/reference/metrics/funnel/engagement/content-downloaded) | Total content download events | | **Value** | Expected value assigned to each download | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your B2B company tracked **300 content downloads** this month with varying lead values. | Content Type | Downloads | Lead Value | Total Value | | ---------------- | --------- | ---------- | ------------ | | Enterprise Guide | 50 | \$150 | \$7,500 | | Industry Report | 100 | \$75 | \$7,500 | | How-To Template | 150 | \$25 | \$3,750 | | **Total** | **300** | - | **\$18,750** | *** ## How It Works This metric sums the expected monetary value associated with each content download. Value is typically calculated based on historical lead-to-opportunity conversion rates and expected deal size by content type. This helps prioritize high-value content investments. *** ## When to Use | Scenario | Action | | -------------------- | --------------------------------------- | | Content ROI | Calculate value generated by each asset | | Lead scoring | Prioritize high-value content engagers | | Pipeline forecasting | Project revenue from content leads | | Asset optimization | Focus on highest-value content types | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------- | ------------------------ | | [Content Downloaded](/reference/metrics/funnel/engagement/content-downloaded) | Count of downloads | | [Cost per Content Downloaded](/reference/metrics/funnel/engagement/cost-per-content-downloaded) | Cost per download | | [Lead Value](/reference/metrics/funnel/conversions/lead-value) | Value of qualified leads | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Add Billing Info: Measure Checkout Step Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-add-billing-info Track how much ad spend drives each add billing info event in your Shopify checkout funnel. Measure efficiency by channel and optimize mid-funnel performance. Cost per Add Billing Info measures your average ad spend to generate one billing info submission during checkout. ## Formula **Cost per Add Billing Info** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Add Billing Info Events** ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ---------------------------------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across the selected channel(s) | | **Add Billing Info Events** | Number of billing information submissions tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$5,000** on Meta ads this week and tracked **250** add billing info events. | Metric | Value | Calculation | | ----------------------------- | ----------- | ------------------------ | | Channel Spend | \$5,000 | Total Meta ad spend | | Add Billing Info Events | 250 | Billing info submissions | | **Cost per Add Billing Info** | **\$20.00** | \$5,000 ÷ 250 | *** ## How It Works Cost per Add Billing Info divides your total channel spend by the number of add billing info events tracked by the Upstack pixel. This checkout step occurs when a visitor enters their payment details during the checkout process. Lower costs indicate more efficient traffic at driving users through this critical funnel step. *** ## When to Use | Scenario | Action | | ------------------------------------- | -------------------------------------------------------------------------------------------- | | Evaluating checkout funnel efficiency | Compare cost per billing info across channels to identify which drives higher-intent traffic | | Optimizing mid-funnel performance | High costs may indicate targeting users who abandon before entering payment details | | Benchmarking campaign quality | Track changes over time to measure campaign optimization effectiveness | | Diagnosing checkout drop-off | Compare against cost per initiate checkout to isolate where spend efficiency degrades | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | | [Cost per Initiate Checkout](/reference/metrics/funnel/engagement/cost-per-initiate-checkout) | Earlier funnel step — compare to identify where efficiency drops | | [Cost per Purchase](/reference/metrics/funnel/conversions/cost-per-purchase) | Later funnel step — tracks cost to complete the transaction | | [Cost per Add to Cart](/reference/metrics/funnel/engagement/cost-per-add-to-cart) | Earlier engagement step — measures top-of-funnel efficiency | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Add Shipping Info: Checkout Funnel Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-add-shipping-info Track how much you spend to get shoppers to add shipping info. Measure checkout funnel efficiency and optimize ad spend. Cost per Add Shipping Info measures the average ad spend required to drive one visitor to submit their shipping information during checkout. ## Formula **Cost per Add Shipping Info** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Add Shipping Info Events** ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | **Channel Spend** | Total advertising spend across the selected channel | | [**Add Shipping Info Events**](/reference/metrics/funnel/engagement/add-shipping-info) | Total times visitors submitted shipping information during checkout | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$5,000** on Meta ads last week and generated **625 add shipping info events** from that traffic. | Metric | Value | Calculation | | ------------------------------ | ---------- | ------------------------ | | Channel Spend | \$5,000 | Total Meta ad spend | | Add Shipping Info Events | 625 | Tracked by Upstack Pixel | | **Cost per Add Shipping Info** | **\$8.00** | \$5,000 ÷ 625 | *** ## How It Works Cost per Add Shipping Info is calculated by dividing total channel spend by the number of add shipping info events tracked by the Upstack Pixel. This metric shows how efficiently your ad spend converts visitors into shoppers who are committed enough to enter their shipping address — a strong signal of purchase intent. *** ## When to Use | Scenario | Action | | ------------------------------------- | ------------------------------------------------------------------- | | Evaluating checkout funnel efficiency | Compare cost to acquire users at different funnel stages | | Optimizing mid-funnel ad targeting | Lower cost per add shipping info indicates better-qualified traffic | | Identifying checkout friction | High cost may signal shipping-related abandonment issues | | Comparing channel performance | Use to evaluate which channels drive committed shoppers | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | -------------------------------------- | | [Add Shipping Info](/reference/metrics/funnel/engagement/add-shipping-info) | The count this cost metric is based on | | [Cost per Add Payment Info](/reference/metrics/funnel/conversions/cost-per-add-payment-info) | Next step in checkout funnel | | [Cost per Initiate Checkout](/reference/metrics/funnel/engagement/cost-per-initiate-checkout) | Previous step in checkout funnel | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Add to Cart: Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-add-to-cart Track the average cost to generate an add to cart event. Calculate Channel Spend divided by Add to Cart Events to optimize your funnel efficiency. Average ad spend required to generate one add to cart event tracked by the Upstack pixel. ## Formula **Cost per Add to Cart** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Add to Carts**](/reference/metrics/funnel/engagement/add-to-carts) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | -------------------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all channels | | [**Add to Carts**](/reference/metrics/funnel/engagement/add-to-carts) | Count of add to cart events tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your campaigns spent **\$12,000** and generated **2,400 add to carts** this month: | Channel | Spend | Add to Carts | Cost/Add to Cart | | ---------- | ------------ | ------------ | ---------------- | | Meta Ads | \$7,200 | 1,800 | \$4.00 | | Google Ads | \$3,600 | 480 | \$7.50 | | TikTok Ads | \$1,200 | 120 | \$10.00 | | **Total** | **\$12,000** | **2,400** | **\$5.00** | *** ## How It Works Cost per Add to Cart measures how efficiently your advertising converts browsers into potential buyers. Lower values indicate more cost-effective top-of-funnel acquisition. The metric uses pixel-tracked add to cart events, ensuring accurate measurement regardless of platform reporting discrepancies. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------- | | Evaluating creative performance | Compare cost per add to cart across ad sets | | Optimizing funnel efficiency | Identify channels with lowest acquisition costs | | Budget reallocation | Shift spend toward lower-cost channels | | Diagnosing conversion drops | Check if add to cart costs increased before purchases dropped | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------- | ----------------------------------- | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | The denominator in this calculation | | [Channel Spend](/reference/metrics/advertising/blended/blended-spend) | The numerator in this calculation | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Next step after add to cart | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Add to Wishlist: Wishlist Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-add-to-wishlist Track your cost per add to wishlist event. Measure how efficiently your ad spend drives wishlist engagement and product interest signals. Cost per Add to Wishlist measures how much you spend on advertising to generate one wishlist addition. ## Formula **Cost per Add to Wishlist** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Add to Wishlist Events** ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | | **Channel Spend** | Total advertising spend across your connected ad channels | | [**Add to Wishlist Events**](/reference/metrics/funnel/engagement/add-to-wishlist) | Total times visitors added products to their wishlist, tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$2,500** on advertising last week and generated **500 add to wishlist events**. | Metric | Value | | ---------------------------- | ---------- | | Channel Spend | \$2,500 | | Add to Wishlist Events | 500 | | **Cost per Add to Wishlist** | **\$5.00** | Each wishlist addition cost \$5.00 in ad spend. *** ## How It Works This metric divides your total advertising spend by the number of add to wishlist events tracked by the Upstack pixel. Lower values indicate more efficient spend — you're generating product interest at a lower cost. Wishlist additions signal high purchase intent, making this a valuable upper-funnel efficiency indicator. *** ## When to Use | Scenario | Action | | ------------------------------ | -------------------------------------------------------------------- | | Cost per wishlist add rising | Review audience targeting and creative performance | | Testing new ad creatives | Compare wishlist acquisition costs across variants | | Evaluating campaign efficiency | Benchmark against other engagement costs (add to cart, view content) | | Planning retargeting budget | Use wishlist audience size and cost to forecast spend | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------- | -------------------------------------------- | | [Add to Wishlist](/reference/metrics/funnel/engagement/add-to-wishlist) | The event count used as the denominator | | [Add to Wishlist Value](/reference/metrics/funnel/engagement/add-to-wishlist-value) | Total monetary value of wishlist additions | | [Cost per Add to Cart](/reference/metrics/funnel/engagement/cost-per-add-to-cart) | Similar efficiency metric for cart additions | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Contact: Measure Lead Generation Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-contact Track your cost per contact event to measure lead generation efficiency. Calculate average ad spend per contact form submission tracked by Upstack. Cost per Contact measures the average ad spend required to generate one contact event, such as a form submission or inquiry. ## Formula **Cost per Contact** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Contact Events**](/reference/metrics/funnel/engagement/contact) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------ | ------------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all channels during the period | | [**Contact Events**](/reference/metrics/funnel/engagement/contact) | Total contact form submissions tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your e-commerce store spent **\$5,000** on advertising last month and generated **250 contact events** (form submissions, quote requests, etc.). | Metric | Value | | -------------------- | ----------- | | Channel Spend | \$5,000 | | Contact Events | 250 | | **Cost per Contact** | **\$20.00** | A \$20 cost per contact means each lead inquiry costs \$20 in ad spend to generate. *** ## How It Works Upstack tracks contact events when visitors submit forms, request quotes, or initiate other contact actions on your site. The pixel captures these events and associates them with the advertising spend that drove the visitor. Cost per Contact divides your total channel spend by the number of contact events to calculate your average acquisition cost per inquiry. *** ## When to Use | Scenario | Action | | ------------------------------------ | -------------------------------------------------------------------------------- | | Evaluating lead generation campaigns | Compare Cost per Contact across channels to identify most efficient lead sources | | Budget allocation decisions | Shift spend toward channels with lower Cost per Contact | | Benchmarking campaign performance | Track Cost per Contact trends over time to measure optimization efforts | | Calculating lead profitability | Compare Cost per Contact to average lead value to assess ROI | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------- | ------------------------------------------------ | | [Contact Events](/reference/metrics/funnel/engagement/contact) | The denominator — total contact form submissions | | [Contact Value](/reference/metrics/funnel/engagement/contact-value) | Revenue attributed to contact events | | [Cost per Lead](/reference/metrics/funnel/conversions/cost-per-lead) | Similar metric for lead events | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Content Downloaded: Track Download Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-content-downloaded Track the average ad spend per content download. Calculate your cost per lead magnet engagement. Cost per Content Downloaded measures the average advertising spend required to generate one content download event. ## Formula **Cost per Content Downloaded** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Content Downloaded Events** ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------- | --------------------------------------- | | **Channel Spend** | Total advertising spend across channels | | [**Content Downloaded**](/reference/metrics/funnel/engagement/content-downloaded) | Total content download events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your B2B company spent **\$6,000** on ads and generated **400 content downloads** this month. | Content Asset | Spend | Downloads | Cost per Download | | --------------- | ----------- | --------- | ----------------- | | Industry Report | \$3,000 | 180 | \$16.67 | | Whitepaper | \$2,000 | 150 | \$13.33 | | Template | \$1,000 | 70 | \$14.29 | | **Total** | **\$6,000** | **400** | **\$15.00** | *** ## How It Works This metric divides your total channel spend by the number of content downloads. It measures the cost of acquiring engaged prospects through content marketing, helping you optimize your lead generation budget. *** ## When to Use | Scenario | Action | | ------------------- | ----------------------------------------------- | | Lead gen efficiency | Measure cost per engaged prospect | | Content ROI | Compare download cost to lead value | | Channel comparison | Identify best channels for content distribution | | Budget optimization | Allocate spend to highest-performing assets | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------- | -------------------------- | | [Content Downloaded](/reference/metrics/funnel/engagement/content-downloaded) | Count of downloads | | [Content Downloaded Value](/reference/metrics/funnel/engagement/content-downloaded-value) | Value of downloads | | [Cost per Lead](/reference/metrics/funnel/conversions/cost-per-lead) | Full lead acquisition cost | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Custom Event: Custom Event Efficiency Metric Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-custom-event Track cost per custom event for your Shopify store. Measure advertising efficiency for custom conversion events tracked by the Upstack pixel. Cost per Custom Event measures how much advertising spend is required to generate one custom event tracked by the Upstack pixel. ## Formula **Cost per Custom Event** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Custom Events**](/reference/metrics/funnel/engagement/custom-event) ### Formula Components | Metric | Definition | | ----------------- | --------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad platforms | | **Custom Events** | Total custom events tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your e-commerce store spent **\$5,000** on advertising in January and tracked **2,500** custom events during that period. | Metric | Value | Calculation | | ------------------------- | ---------- | ----------------------- | | Channel Spend | \$5,000 | Total ad spend | | Custom Events | 2,500 | Events tracked by pixel | | **Cost per Custom Event** | **\$2.00** | \$5,000 ÷ 2,500 | *** ## How It Works Cost per Custom Event divides your total advertising spend by the number of custom events tracked by the Upstack pixel. Custom events are user-defined events that you configure to track specific actions relevant to your business, such as quiz completions, video views, or button clicks. This metric helps you understand the advertising cost associated with driving these custom engagement actions. *** ## When to Use | Scenario | Action | | ---------------------------------------------------------- | ------------------------------------------------------------- | | Evaluating campaign efficiency for custom conversion goals | Compare Cost per Custom Event across campaigns | | Optimizing ad spend for specific engagement actions | Target campaigns with lower Cost per Custom Event | | Benchmarking custom event acquisition costs | Track trends over time to identify efficiency improvements | | Comparing custom event costs across channels | Identify which platforms drive custom events most efficiently | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Cost per View Content](/reference/metrics/funnel/engagement/cost-per-view-content) | Similar efficiency metric for product page views | | [Cost per Add to Cart](/reference/metrics/funnel/engagement/cost-per-add-to-cart) | Similar efficiency metric for cart additions | | [Cost per Initiate Checkout](/reference/metrics/funnel/engagement/cost-per-initiate-checkout) | Similar efficiency metric for checkout starts | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Customize Product: Engagement Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-customize-product Track Cost per Customize Product to measure how efficiently your ad spend drives product customization events. Optimize campaigns for engagement. Cost per Customize Product measures how much ad spend is required to generate one product customization event on your site. ## Formula **Cost per Customize Product** = **Blended Ad Spend** ÷ **Customize Products** ### Formula Components | Metric | Definition | | ---------------------- | ----------------------------------------------------------- | | **Blended Ad Spend** | Total advertising spend across all connected ad platforms | | **Customize Products** | Number of product customization events tracked by the pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$2,400** on ads last week and recorded **800** customize product events. | Metric | Value | | ------------------------------ | ---------- | | Blended Ad Spend | \$2,400 | | Customize Products | 800 | | **Cost per Customize Product** | **\$3.00** | Each product customization cost \$3.00 in ad spend to generate. *** ## How It Works The Upstack Pixel tracks `customize_product` events when visitors configure or personalize products on your site — selecting sizes, colors, engravings, or other customization options. This metric divides your total ad spend by the number of these events to show how efficiently your campaigns drive product engagement. *** ## When to Use | Scenario | Action | | ----------------------------------- | -------------------------------------------------------------------------------- | | Optimizing campaigns for engagement | Compare cost per customize product across campaigns to find efficient performers | | Evaluating product customization UX | A sudden increase may indicate friction in the customization flow | | Benchmarking acquisition costs | Track trends over time to establish performance baselines | | Assessing audience quality | Lower costs suggest ads are reaching users more likely to engage with products | *** ## Related Metrics | Metric | Relationship | | --------------------- | ----------------------------------------------------- | | Customize Products | The denominator — total customization events tracked | | Blended Ad Spend | The numerator — total spend across platforms | | Cost per Add to Cart | Related engagement efficiency metric for cart actions | | Cost per View Content | Related efficiency metric for product views | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Initiate Checkout: Checkout Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-initiate-checkout Track your cost per initiate checkout to measure checkout acquisition efficiency. Calculate spend efficiency for driving checkout initiations. Cost per Initiate Checkout measures how much you spend on advertising to generate each checkout initiation event. ## Formula **Cost per Initiate Checkout** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Initiate Checkouts**](/reference/metrics/funnel/engagement/initiate-checkouts) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------- | ------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all channels | | [**Initiate Checkouts**](/reference/metrics/funnel/engagement/initiate-checkouts) | Total checkout initiation events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$5,000** on advertising last week and generated **1,000 initiate checkout events**. | Metric | Value | Calculation | | ------------------------------ | ---------- | -------------------- | | Channel Spend | \$5,000 | Total ad spend | | Initiate Checkouts | 1,000 | Checkout initiations | | **Cost per Initiate Checkout** | **\$5.00** | \$5,000 ÷ 1,000 | *** ## How It Works Cost per Initiate Checkout divides your total advertising spend by the number of checkout initiations. This metric helps you understand how efficiently your ad spend drives high-intent shopping behavior. Lower values indicate more efficient checkout acquisition. *** ## When to Use | Scenario | Action | | ------------------------------ | -------------------------------------------------------- | | Evaluating campaign efficiency | Compare CPIC across campaigns to identify top performers | | Optimizing funnel spend | Reduce CPIC by improving ad targeting or creative | | Budget allocation | Shift budget to channels with lower CPIC | | Benchmarking performance | Track CPIC trends over time to measure improvement | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------- | -------------------------------------------- | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Denominator in this calculation | | [Channel Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in this calculation | | [Initiate Checkout Rate](/reference/metrics/funnel/engagement/initiate-checkout-rate) | Conversion rate from add to cart to checkout | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Login: Measure Login Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-login Track cost per login to measure how efficiently your ads drive authenticated engagement. Calculate average ad spend per login event for your Shopify store. Cost per Login measures the average ad spend required to generate one login event on your site. ## Formula **Cost per Login** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Logins**](/reference/metrics/funnel/engagement/login) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ----------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across channels | | [**Logins**](/reference/metrics/funnel/engagement/login) | Total login events tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$5,000** on ads in January and tracked **2,500** login events. | Metric | Value | Calculation | | ------------------ | ---------- | ------------------ | | Channel Spend | \$5,000 | Total ad spend | | Logins | 2,500 | Total login events | | **Cost per Login** | **\$2.00** | \$5,000 ÷ 2,500 | *** ## How It Works The Upstack pixel captures login events when visitors authenticate on your site. Cost per Login divides your total ad spend by the number of login events, showing how efficiently your ads drive authenticated engagement. Lower values indicate more cost-effective campaigns at re-engaging existing customers. *** ## When to Use | Scenario | Action | | -------------------------------- | -------------------------------------------------------------------- | | Evaluating retention campaigns | Compare Cost per Login across campaigns targeting existing customers | | Measuring loyalty program ROI | Track if loyalty-focused ads drive efficient re-engagement | | Assessing remarketing efficiency | Monitor cost to bring customers back to authenticate | | Identifying high-value audiences | Find segments with lower Cost per Login for optimization | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------- | ---------------------------------------------------- | | [Logins](/reference/metrics/funnel/engagement/login) | The denominator in this calculation | | [Login Value](/reference/metrics/funnel/engagement/login-value) | Total value attributed to login events | | [Cost per Sign Up](/reference/metrics/funnel/engagement/cost-per-sign-up) | Similar cost efficiency metric for new registrations | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Remove from Cart: Cart Abandonment Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-remove-from-cart Track the average cost per remove from cart event. Measure ad spend efficiency relative to cart abandonment behavior tracked by the Upstack pixel. Cost per Remove from Cart measures how much ad spend corresponds to each cart removal event tracked by the Upstack pixel. ## Formula **Cost per Remove from Cart** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Remove from Cart Events** ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all connected ad channels | | **Remove from Cart Events** | Total times visitors removed products from their cart, tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$8,000** on advertising last month and tracked **640 remove from cart events**. | Metric | Value | | ----------------------------- | ----------- | | Channel Spend | \$8,000 | | Remove from Cart Events | 640 | | **Cost per Remove from Cart** | **\$12.50** | For every \$12.50 spent on advertising, one visitor removed an item from their cart. *** ## How It Works This metric divides your total advertising spend by the number of remove from cart events tracked by the Upstack pixel. Unlike traditional funnel metrics where lower values indicate better performance, this metric provides context for understanding cart abandonment relative to ad spend. A rising cost per removal may indicate improved cart retention, while a falling cost may suggest visitors are removing items more frequently per dollar spent. *** ## When to Use | Scenario | Action | | ----------------------------------- | ------------------------------------------------------------------ | | Analyzing cart abandonment patterns | Compare against cost per add to cart to assess cart retention | | Evaluating pricing changes | Monitor if price adjustments affect removal behavior | | Testing checkout UX improvements | Track if changes reduce removal frequency relative to traffic | | Identifying product-level issues | Correlate high-value removals with specific products or categories | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [Remove from Cart Value](/reference/metrics/funnel/engagement/remove-from-cart-value) | Total monetary value of removed cart items | | [Cost per Add to Cart](/reference/metrics/funnel/engagement/cost-per-add-to-cart) | Inverse metric measuring acquisition efficiency | | [Add to Cart Value](/reference/metrics/funnel/engagement/add-to-carts-value) | Compare additions vs. removals to assess cart health | | [View Cart](/reference/metrics/funnel/engagement/view-cart) | Cart views that may precede removals | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Search: Ad Spend Efficiency for Search Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-search Track your cost per search event to measure ad spend efficiency. See how much you pay for each search interaction tracked by Upstack Pixel. Cost per Search measures how much ad spend is required to generate one search event on your site. ## Formula **Cost per Search** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Search Events**](/reference/metrics/advertising/meta-ads/search-events) ### Formula Components | Metric | Definition | | ----------------- | -------------------------------------------------------- | | **Channel Spend** | Total advertising spend across all connected ad channels | | **Search Events** | Total search interactions tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$5,000** on ads last month and tracked **2,500 search events** from visitors using your site search. | Metric | Value | Calculation | | ------------------- | ---------- | ---------------------- | | Channel Spend | \$5,000 | Total ad spend | | Search Events | 2,500 | Total searches tracked | | **Cost per Search** | **\$2.00** | \$5,000 ÷ 2,500 | *** ## How It Works Cost per Search divides your total channel ad spend by the number of search events tracked by the Upstack pixel. This gives you the average cost to generate one search interaction. Lower values indicate more efficient ad spend in driving engaged visitors who actively search for products. *** ## When to Use | Scenario | Action | | ----------------------------------- | ---------------------------------------------------------------- | | High search volume, low conversions | Investigate search result quality and relevance | | Rising cost per search | Review ad targeting to attract more intent-driven visitors | | Comparing channels | Identify which ad platforms drive engaged searchers efficiently | | Funnel optimization | Compare against other engagement costs like Cost per Add to Cart | *** ## Related Metrics | Metric | Relationship | | --------------------- | --------------------------------------------- | | Search Events | The denominator in this calculation | | Channel Spend | The numerator—total ad spend across channels | | Cost per View Content | Another engagement cost metric for comparison | | Cost per Add to Cart | Measures efficiency at a deeper funnel stage | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Select Content: Engagement Efficiency Metric Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-select-content Track how much ad spend is required for each select content engagement. Measure content interaction efficiency and optimize your targeting. Cost per Select Content measures how much ad spend is required for each content selection event, helping you evaluate engagement efficiency across campaigns. ## Formula **Cost per Select Content** = **Ad Spend** ÷ **Select Content Events** ### Formula Components | Metric | Definition | | ------------------------- | ------------------------------------------------------------ | | **Ad Spend** | Total advertising spend across all channels | | **Select Content Events** | Count of select\_content events tracked by the Upstack Pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your campaigns drove **12,450 select content events** with a total ad spend of **\$8,500** last month. | Period | Ad Spend | Select Content Events | Cost per Select Content | | --------- | ----------- | --------------------- | ----------------------- | | Week 1 | \$2,100 | 3,150 | \$0.67 | | Week 2 | \$2,200 | 3,300 | \$0.67 | | Week 3 | \$2,000 | 2,800 | \$0.71 | | Week 4 | \$2,200 | 3,200 | \$0.69 | | **Total** | **\$8,500** | **12,450** | **\$0.68** | *** ## How It Works The select\_content event fires when a user interacts with content elements—clicking product tiles, expanding descriptions, or selecting categories. Cost per Select Content divides your total ad spend by the number of these engagement events to show how efficiently your ads drive content interaction. *** ## When to Use | Scenario | Action | | --------------------------------------------- | ---------------------------------------------------------- | | Comparing content engagement across campaigns | Lower cost indicates more efficient targeting | | Evaluating creative performance | High-engagement creatives reduce cost per interaction | | Identifying underperforming ad sets | Rising costs may signal audience fatigue | | Optimizing for mid-funnel engagement | Balance cost efficiency with downstream conversion quality | *** ## Related Metrics | Metric | Relationship | | --------------------- | ---------------------------------------------- | | Select Content Events | The denominator—total content selections | | Cost per Add to Cart | Comparison metric for deeper funnel engagement | | Cost per View Content | Alternative awareness-stage cost metric | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Share: Social Engagement Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-share Measure ad spend efficiency for social share events. Track how much it costs to generate product or content shares from your site visitors. Cost per Share measures how much ad spend is required to generate one share event on your site. ## Formula **Cost per Share** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Shares**](/reference/metrics/advertising/blended/shares) ### Formula Components | Metric | Definition | | ----------------- | -------------------------------------------------------------- | | **Channel Spend** | Total advertising spend for the channel in the selected period | | **Shares** | Total share events tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Your store spent **\$5,000** on Meta ads in January and generated **1,250** share events from visitors. | Metric | Value | Calculation | | ------------------ | ---------- | -------------------- | | Channel Spend | \$5,000 | Total Meta spend | | Share Events | 1,250 | Total shares tracked | | **Cost per Share** | **\$4.00** | \$5,000 ÷ 1,250 | *** ## How It Works Cost per Share is calculated by dividing total channel spend by the number of share events tracked by the [Upstack Pixel](/pixel). Share events are fired when visitors use social sharing functionality on your product pages, blog posts, or other shareable content. Lower cost per share indicates more efficient spend at driving social engagement. *** ## When to Use | Scenario | Action | | -------------------------------------- | --------------------------------------------------------------------------------- | | Evaluating social campaign performance | Compare cost per share across campaigns to identify which creatives drive sharing | | Optimizing for virality | Target campaigns with lower cost per share to maximize organic reach | | Measuring content engagement | Track share costs for content-driven campaigns vs product campaigns | | Benchmarking channel efficiency | Compare share costs across Meta, TikTok, and other social channels | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------- | --------------------------------------------------- | | [Cost per View Content](/reference/metrics/funnel/engagement/cost-per-view-content) | Compare share costs to product view costs | | [Cost per Add to Cart](/reference/metrics/funnel/engagement/cost-per-add-to-cart) | Share engagement vs purchase intent efficiency | | [Cost per Add to Wishlist](/reference/metrics/funnel/engagement/cost-per-add-to-wishlist) | Compare social sharing vs wishlist engagement costs | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Sign Up: Measure Registration Efficiency Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-sign-up Track cost per sign up to measure how efficiently your ads drive new registrations. Calculate average ad spend per sign up event for your Shopify store. Cost per Sign Up measures the average ad spend required to generate one sign up (registration) event on your site. ## Formula **Cost per Sign Up** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Sign Ups**](/reference/metrics/funnel/engagement/sign-up) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ---------------------------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all channels | | [**Sign Ups**](/reference/metrics/funnel/engagement/sign-up) | Total sign up (registration) events tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$8,000** on ads in February and tracked **1,600** sign up events. | Metric | Value | Calculation | | -------------------- | ---------- | -------------------- | | Channel Spend | \$8,000 | Total ad spend | | Sign Ups | 1,600 | Total sign up events | | **Cost per Sign Up** | **\$5.00** | \$8,000 ÷ 1,600 | *** ## How It Works The Upstack pixel captures sign up events when visitors register for an account on your site. Cost per Sign Up divides your total ad spend by the number of registration events, showing how efficiently your ads drive new account creation. Lower values indicate more cost-effective acquisition of registered users who can be nurtured through email and remarketing. *** ## When to Use | Scenario | Action | | ------------------------------------ | ---------------------------------------------------------------- | | Evaluating acquisition campaigns | Compare Cost per Sign Up across campaigns targeting new visitors | | Measuring membership program ROI | Track if registration-focused ads efficiently drive new signups | | Assessing lead generation efficiency | Monitor cost to acquire new registered contacts | | Optimizing top-of-funnel spend | Find channels with lowest Cost per Sign Up for budget allocation | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------- | -------------------------------------------------------------- | | [Sign Ups](/reference/metrics/funnel/engagement/sign-up) | The denominator in this calculation | | [Cost per Login](/reference/metrics/funnel/engagement/cost-per-login) | Similar cost efficiency metric for existing account engagement | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Ultimate purchase goal after registration | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per Signed Out: Track Sign Out Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-signed-out Track the average ad spend per signed out event. Calculate how much you spend to generate each user sign out action. Cost per Signed Out measures the average advertising spend required to generate one user sign out event. ## Formula **Cost per Signed Out** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Signed Out Events** ### Formula Components | Metric | Definition | | ----------------------------------------------------------------- | --------------------------------------- | | **Channel Spend** | Total advertising spend across channels | | [**Signed Out**](/reference/metrics/funnel/engagement/signed-out) | Total user sign out events tracked | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your SaaS product had **\$5,000** in ad spend and **250 signed out** events last month. | Metric | Value | Calculation | | ----------------------- | ----------- | -------------------- | | Channel Spend | \$5,000 | Total ad spend | | Signed Out Events | 250 | Users who signed out | | **Cost per Signed Out** | **\$20.00** | \$5,000 ÷ 250 | *** ## How It Works This metric divides your total channel spend by the number of signed out events tracked by the Upstack pixel. While sign outs aren't typically a conversion goal, tracking this metric helps understand session behavior patterns and user engagement cycles. *** ## When to Use | Scenario | Action | | --------------------------- | -------------------------------------------- | | Tracking session patterns | Monitor sign out frequency relative to spend | | Understanding user behavior | Compare sign out rates across campaigns | | Engagement analysis | Analyze session completion patterns | | SaaS lifecycle tracking | Track user session behavior over time | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------- | ------------------------------------ | | [Signed Out](/reference/metrics/funnel/engagement/signed-out) | Count of sign out events | | [Login](/reference/metrics/funnel/engagement/login) | Opposite action in session lifecycle | | [Cost per Login](/reference/metrics/funnel/engagement/cost-per-login) | Compare sign in vs sign out costs | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per User Removed: Track Removal Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-user-removed Track the average ad spend per user removed event. Calculate advertising cost relative to team management events. Cost per User Removed measures the average advertising spend relative to each user removal event tracked. ## Formula **Cost per User Removed** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **User Removed Events** ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | --------------------------------------- | | **Channel Spend** | Total advertising spend across channels | | [**User Removed**](/reference/metrics/funnel/engagement/user-removed) | Total user removal events tracked | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your B2B platform had **\$10,000** in ad spend and **50 user removed** events this month. | Metric | Value | Calculation | | ------------------------- | ------------ | -------------------- | | Channel Spend | \$10,000 | Total ad spend | | User Removed Events | 50 | Team members removed | | **Cost per User Removed** | **\$200.00** | \$10,000 ÷ 50 | *** ## How It Works This metric divides your total channel spend by the number of user removed events. While removals aren't a marketing goal, this metric provides context for account management patterns relative to acquisition investment. *** ## When to Use | Scenario | Action | | ----------------------- | ---------------------------------------- | | Account health analysis | Monitor removal rates vs spend | | Campaign attribution | Track team changes by acquisition source | | Churn correlation | Identify spend patterns before churn | | Seat economics | Understand cost per seat lifecycle | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------- | ------------------------- | | [User Removed](/reference/metrics/funnel/engagement/user-removed) | Count of removal events | | [User Removed Value](/reference/metrics/funnel/engagement/user-removed-value) | Value of removal events | | Cost per Account Deleted | Full account closure cost | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per View Cart: Funnel Efficiency Metric Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-view-cart Track cost per view cart event to measure acquisition efficiency. Calculate ad spend required to generate cart views in your Shopify funnel. Cost per View Cart measures the average ad spend required to generate one view cart event on your site. ## Formula **Cost per View Cart** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **View Cart Events** ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------- | ------------------------------------------------------------------- | | **Channel Spend** | Total advertising spend across the selected channel or all channels | | [**View Cart Events**](/reference/metrics/funnel/engagement/view-cart) | Total times visitors viewed their shopping cart | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$12,000** on Meta ads in March and generated **4,800** view cart events. | Metric | Value | Calculation | | ---------------------- | ---------- | ------------------------ | | Channel Spend | \$12,000 | Total Meta ad spend | | View Cart Events | 4,800 | Tracked by Upstack Pixel | | **Cost per View Cart** | **\$2.50** | \$12,000 ÷ 4,800 | *** ## How It Works Cost per View Cart divides your total channel spend by the number of view cart events tracked by the Upstack Pixel. This gives you the average cost to generate one cart view, helping you understand how efficiently your ads are driving shopping engagement. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------- | | Comparing channel efficiency | Lower cost per view cart indicates more efficient acquisition | | Evaluating funnel health | Rising costs may signal audience fatigue or creative decay | | Budget allocation decisions | Shift spend toward channels with lower cost per cart view | | Campaign optimization | Test different creatives to reduce cost per view cart | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [View Cart](/reference/metrics/funnel/engagement/view-cart) | The event count used in the denominator | | [View Cart Value](/reference/metrics/funnel/engagement/view-cart-value) | Total monetary value of view cart events | | [Cost per Add to Cart](/reference/metrics/funnel/engagement/cost-per-add-to-cart) | Similar efficiency metric for earlier funnel stage | | [Cost per Initiate Checkout](/reference/metrics/funnel/engagement/cost-per-initiate-checkout) | Similar efficiency metric for later funnel stage | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Cost per View Content: Content Engagement Cost Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/cost-per-view-content Track your cost per view content to measure content engagement efficiency. Calculate spend efficiency for driving product page views. Cost per View Content measures how much you spend on advertising to generate each product page view event. ## Formula **Cost per View Content** = [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**View Contents**](/reference/metrics/funnel/engagement/view-contents) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ------------------------------------------- | | [**Channel Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend across all channels | | [**View Contents**](/reference/metrics/funnel/engagement/view-contents) | Total product page view events | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$3,000** on advertising last week and generated **15,000 view content events**. | Metric | Value | Calculation | | ------------------------- | ---------- | ------------------ | | Channel Spend | \$3,000 | Total ad spend | | View Contents | 15,000 | Product page views | | **Cost per View Content** | **\$0.20** | \$3,000 ÷ 15,000 | *** ## How It Works Cost per View Content divides your total advertising spend by the number of product page views. This metric helps you understand how efficiently your ad spend drives product discovery. Lower values indicate more efficient top-of-funnel engagement. *** ## When to Use | Scenario | Action | | ------------------------------ | --------------------------------------------------------- | | Evaluating awareness campaigns | Compare CPVC across campaigns targeting product discovery | | Optimizing top-of-funnel spend | Reduce CPVC by improving ad relevance | | Budget allocation | Prioritize channels with lower CPVC for awareness goals | | Creative testing | Measure which ad creatives drive the most efficient views | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------- | ------------------------------- | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Denominator in this calculation | | [Channel Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator in this calculation | | [Cost per Add to Cart](/reference/metrics/funnel/engagement/cost-per-add-to-cart) | Next step in funnel efficiency | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Custom Events: Track Your Own Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/custom-event Track custom event counts fired from your site. Measure user interactions, feature usage, and custom milestones to optimize your e-commerce funnel. The total number of custom events tracked on your store via the Upstack pixel. ## Formula **Custom Events** = **COUNT** ( Custom Events ) ### Formula Components | Metric | Definition | | ----------------- | ----------------------------------------------------------------------------------------- | | **Custom Events** | Each custom event fired via the Upstack pixel `track` method with your defined event name | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your outdoor gear store tracked **8,432 custom events** last week for key user interactions: | Event Name | Count | Share | | ----------------------- | ----- | ----- | | size\_guide\_opened | 3,150 | 37% | | video\_played | 2,890 | 34% | | wishlist\_added | 1,560 | 19% | | store\_locator\_clicked | 832 | 10% | *** ## How It Works Custom Events count each time your site fires a custom event via the Upstack pixel. You define the event name and properties when implementing the tracking call. Each event is counted individually regardless of the visitor or session. *** ## When to Use | Scenario | Action | | --------------------------- | -------------------------------------------------------------- | | Track feature engagement | Measure how often users interact with specific features | | Monitor user milestones | Count key actions like video plays or guide downloads | | Compare campaign variations | Track custom events tied to A/B test interactions | | Build custom funnels | Combine custom events with standard events for deeper analysis | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------- | --------------------------------------------- | | [Total Events](/reference/metrics/funnel/engagement/total-events) | Includes custom events in overall event count | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Standard event for product page views | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Standard event for cart additions | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Custom Event Value: Total Revenue from Custom Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/custom-event-value Track total monetary value of custom events captured by the Upstack pixel. Measure revenue from user-defined tracking events specific to your business. Custom Event Value measures the total monetary value of user-defined custom events tracked by the Upstack pixel. ## Formula **Custom Event Value** = **SUM** ( Custom Event Values ) ### Formula Components | Metric | Definition | | ----------------------- | --------------------------------------------------------- | | **SUM** | Aggregation function that totals all custom event values | | **Custom Event Values** | Monetary value assigned to each custom event when tracked | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store tracked **\$12,500** in custom event value this month across 2,500 events: | Event Name | Value | Count | Avg Value | | ------------------- | ------- | ----- | --------- | | quiz\_completed | \$5,200 | 520 | \$10.00 | | wishlist\_shared | \$3,800 | 760 | \$5.00 | | video\_watched | \$2,100 | 700 | \$3.00 | | size\_guide\_opened | \$1,400 | 520 | \$2.69 | *** ## How It Works Custom Event Value sums the monetary value assigned to each custom event tracked by the Upstack pixel. Custom events are user-defined tracking events you configure for actions specific to your business—such as completing a quiz, sharing a wishlist, or watching a product video. Each event can include a custom value representing expected revenue impact or conversion likelihood. This metric helps quantify the total engagement value from custom interactions across your marketing campaigns. *** ## When to Use | Scenario | Action | | -------------------------- | -------------------------------------------------------------------- | | Micro-conversion valuation | Assign value to pre-purchase engagement signals | | Feature ROI analysis | Measure revenue contribution from specific site features | | Channel comparison | Compare custom event value contribution across advertising platforms | | Funnel optimization | Identify which custom interactions correlate with conversions | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------ | ---------------------------------------------------- | | [Total Events](/reference/metrics/funnel/engagement/total-events) | Count of all tracking events including custom events | | [Events Value](/reference/metrics/funnel/conversions/events-value) | Combined value of all tracked events | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Customize Product: Product Personalization Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/customize-product Track product customization events in your Shopify store. Measure how often customers personalize or configure products before purchase. Customize Product measures the total number of times customers personalized or configured a product, such as selecting custom options, engravings, or build-your-own configurations. ## Formula **Customize Product** = **COUNT** ( customize\_product events ) ### Formula Components | Metric | Definition | | ----------------------------- | -------------------------------------------------------------------- | | **customize\_product events** | Individual product customization events tracked by the Upstack pixel | || Metadata | | ||---|---| || **Type** | Number | || **Data Source** | [Upstack Pixel](/pixel) | || **Aggregation** | Count | *** ## Example Your store offers product personalization on 500 items. In January, you tracked **3,847 customize product events** across all channels. | Channel | Customize Events | % of Total | | -------------- | ---------------- | ---------- | | Paid Social | 1,539 | 40% | | Organic Search | 962 | 25% | | Direct | 770 | 20% | | Email | 576 | 15% | *** ## How It Works The Upstack pixel fires a customize product event when a customer interacts with product customization features on your Shopify store. This includes selecting personalization options, configuring custom product builds, adding engravings, or choosing non-default product variants that require additional user input. Each customization interaction counts as one event. *** ## When to Use | Scenario | Action | | -------------------------------------------- | --------------------------------------------------------------- | | Measuring personalization feature engagement | Track how often customers use custom product options | | Comparing customization across product lines | Identify which products drive the most personalization interest | | Evaluating customization conversion impact | Correlate customize events with purchase rates | | Optimizing product configuration UX | Monitor customization drop-off to identify friction points | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------- | ----------------------------------------------- | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Customize events occur after product page views | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Customized products often proceed to cart | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Track how customizations convert to sales | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Customize Product Value: Track Personalization Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/customize-product-value Measure the total monetary value of product customization events. Track revenue from personalized items like engravings, monograms, and custom configurations. Total monetary value associated with product customization events tracked by the Upstack pixel. ## Formula **Customize Product Value** = **SUM** ( Customize Product Event Values ) ### Formula Components | Metric | Definition | | ---------------------------------- | ------------------------------------------------------------- | | **Customize Product Event Values** | Monetary value attributed to each product customization event | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store's personalization options generated **\$43,200** in attributed value last month: | Customization Type | Value | Events | Avg Value/Event | | ------------------ | -------- | ------ | --------------- | | Engravings | \$18,400 | 920 | \$20.00 | | Monograms | \$12,600 | 840 | \$15.00 | | Color Options | \$8,200 | 1,640 | \$5.00 | | Custom Bundles | \$4,000 | 200 | \$20.00 | Engravings and custom bundles drive the highest value per event, indicating premium personalization commands higher prices. *** ## How It Works Customize Product Value sums the monetary value attributed to each product customization event. When visitors personalize products—such as adding engravings, selecting custom colors, or building product bundles—the Upstack Pixel captures the associated value. This metric reveals how much revenue is driven by personalization features. *** ## When to Use | Scenario | Action | | ------------------------------ | ----------------------------------------------------------- | | Evaluating personalization ROI | Compare value generated by customization options | | Pricing custom features | Identify which personalization options drive highest value | | Product development | Prioritize customization features that increase order value | | Campaign targeting | Focus on audiences that engage with personalization | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------- | ---------------------------------------- | | [View Contents Value](/reference/metrics/funnel/engagement/view-contents-value) | Value from product page views | | [Add to Carts Value](/reference/metrics/funnel/engagement/add-to-carts-value) | Value from cart additions | | [Initiate Checkouts Value](/reference/metrics/funnel/engagement/initiate-checkouts-value) | Value from checkout starts | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total revenue from completed conversions | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Earn Virtual Currency: Track In-App Rewards Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/earn-virtual-currency Track Earn Virtual Currency events to measure in-app reward engagement. Analyze loyalty points, credits, and virtual currency earned across your site. Earn Virtual Currency counts the number of times visitors earn virtual currency, loyalty points, credits, or other in-app rewards on your site. ## Formula **Earn Virtual Currency** = **COUNT** ( earn\_virtual\_currency events ) ### Formula Components | Metric | Definition | | ---------------------------------- | ----------------------------------------------------------------------------------------- | | **earn\_virtual\_currency events** | Individual events fired when a visitor earns virtual currency, loyalty points, or rewards | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your loyalty program generated **4,892 earn events** last month as customers accumulated rewards: | Reward Type | Earn Events | Avg Value | | --------------- | ----------- | --------- | | Purchase Points | 2,340 | 150 pts | | Referral Bonus | 890 | 500 pts | | Review Rewards | 1,120 | 50 pts | | Birthday Bonus | 542 | 200 pts | *** ## How It Works The Upstack Pixel fires an `earn_virtual_currency` event when a visitor earns virtual currency, loyalty points, or credits through actions like completing purchases, referring friends, or participating in promotions. Each event captures the currency type and amount earned, enabling you to analyze reward program engagement and identify which earning mechanisms drive the most participation. *** ## When to Use | Scenario | Action | | ---------------------------- | ----------------------------------------------------------------- | | Measure loyalty engagement | Track how often customers earn rewards to evaluate program health | | Identify top earning actions | Find which activities generate the most reward events | | Optimize reward structure | Compare earning rates across different reward mechanisms | | Segment high-value customers | Identify customers who actively accumulate rewards | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------ | ---------------------------------------------- | | Spend Virtual Currency | Tracks when customers redeem earned rewards | | [Custom Events](/reference/metrics/funnel/engagement/custom-event) | Generic event tracking for custom interactions | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Often triggers earn virtual currency events | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Find Location: Store Locator Events Count Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/find-location Track store locator usage on your site. Measure how many visitors search for physical store locations to understand local purchase intent. Find Location measures the total number of times visitors used a store locator or searched for physical store locations on your site. ## Formula **Find Location** = **COUNT** ( Find Location Events ) ### Formula Components | Metric | Definition | | ------------------------ | ------------------------------------------------------------------------------------------ | | **Find Location Events** | Individual store locator searches tracked when a visitor looks up physical store locations | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your retail site recorded **2,847 store locator searches** in April, indicating strong interest in physical store visits: | Week | Find Location | Change | | ------ | ------------- | ------ | | Week 1 | 652 | — | | Week 2 | 718 | +10.1% | | Week 3 | 743 | +3.5% | | Week 4 | 734 | -1.2% | *** ## How It Works The Upstack pixel fires a find location event each time a visitor uses your store locator functionality. This includes searches by zip code, city, or using the visitor's current location to find nearby stores. Each search counts as one find location event, helping you understand how often visitors are looking to visit physical stores. *** ## When to Use | Scenario | Action | | ------------------------------ | -------------------------------------------------------------- | | Measure local purchase intent | Track store locator usage to gauge interest in in-store visits | | Evaluate omnichannel campaigns | Compare find location events before and after local campaigns | | Identify geographic demand | Analyze which regions drive the most store searches | | Optimize store locator UX | Monitor usage trends after store locator improvements | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------- | --------------------------------------------------------- | | [Find Location Value](/reference/metrics/funnel/engagement/find-location-value) | Monetary value attributed to find location events | | Cost per Find Location | Ad spend efficiency for generating store locator searches | | [Sessions](/reference/metrics/funnel/awareness/sessions) | Broader context for visitor engagement | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Find Location Value: Total Event Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/find-location-value Track the total monetary value of Find Location events from your Upstack Pixel. Measure engagement-driven revenue from store locator interactions. Find Location Value measures the total monetary value of all Find Location events tracked by your Upstack Pixel. ## Formula **Find Location Value** = **SUM** ( value ) **WHERE** event = find\_location ### Formula Components | Metric | Definition | | ------------------------------------------------------------ | ------------------------------------------------------- | | **value** | The monetary value passed with each Find Location event | | [**event = find\_location**](/event-tracking/event-taxonomy) | Filters to Find Location events tracked by the pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store's Find Location feature generated **\$2,450** in attributed value last month from users searching for nearby store locations. | Week | Find Location Events | Find Location Value | | ------ | -------------------- | ------------------- | | Week 1 | 342 | \$580.00 | | Week 2 | 398 | \$675.00 | | Week 3 | 356 | \$605.00 | | Week 4 | 347 | \$590.00 | *** ## How It Works When a visitor triggers a Find Location event on your site, the Upstack Pixel captures the event along with any associated value. Find Location Value sums all these values over your selected time period, giving you insight into the revenue potential of location-based engagement. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------- | | Measuring store locator ROI | Compare Find Location Value against feature development costs | | Optimizing local SEO | Track value from users searching for locations | | Evaluating omnichannel strategy | Assess online-to-offline engagement value | | Campaign analysis | Measure location-based engagement from ad campaigns | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------- | -------------------------------------- | | [Find Locations](/reference/metrics/funnel/engagement/find-location) | Event count this value is derived from | | Cost per Find Location | Efficiency metric for location events | | [View Contents Value](/reference/metrics/funnel/engagement/view-contents-value) | Similar value metric for product views | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Initiate Checkout Rate: Cart to Checkout Conversion Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/initiate-checkout-rate Track your initiate checkout rate to measure cart-to-checkout conversion. Calculate the percentage of add to carts that proceed to checkout. Initiate Checkout Rate measures the percentage of add to cart events that proceed to checkout initiation. ## Formula **Initiate Checkout Rate** = ( [**Initiate Checkouts**](/reference/metrics/funnel/engagement/initiate-checkouts) ÷ [**Add to Carts**](/reference/metrics/funnel/engagement/add-to-carts) ) × 100 ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------- | -------------------------------- | | [**Initiate Checkouts**](/reference/metrics/funnel/engagement/initiate-checkouts) | Total checkout initiation events | | [**Add to Carts**](/reference/metrics/funnel/engagement/add-to-carts) | Total add to cart events | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store had **2,500 add to cart events** and **750 initiate checkout events** last week. | Metric | Value | Calculation | | -------------------------- | ------- | -------------------- | | Add to Carts | 2,500 | Cart additions | | Initiate Checkouts | 750 | Checkout initiations | | **Initiate Checkout Rate** | **30%** | (750 ÷ 2,500) × 100 | *** ## How It Works Initiate Checkout Rate divides checkout initiations by add to carts and multiplies by 100 to express as a percentage. This metric reveals how effectively your store converts shopping intent into checkout behavior. Higher rates indicate a smoother cart-to-checkout experience. *** ## When to Use | Scenario | Action | | --------------------------- | ------------------------------------------------- | | Identifying funnel friction | Low rates indicate checkout barriers | | A/B testing cart experience | Compare rates across cart page variants | | Diagnosing conversion drops | Sudden rate changes signal UX or pricing issues | | Optimizing checkout flow | Improve rates by simplifying the path to checkout | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------- | ---------------------------------- | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Numerator in this calculation | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Denominator in this calculation | | [Add to Cart Rate](/reference/metrics/funnel/engagement/add-to-cart-rate) | Previous step in funnel conversion | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Initiate Checkouts: Track Checkout Intent Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/initiate-checkouts Track how many visitors initiate checkout. Use Initiate Checkouts to measure purchase intent and optimize your checkout funnel. Initiate Checkouts counts the number of times visitors begin the checkout process by loading the checkout page. ## Formula **Initiate Checkouts** = **COUNT** ( Checkout Page Loads ) ### Formula Components | Metric | Definition | | ----------------------- | ------------------------------------------------------- | | **Checkout Page Loads** | Number of times the checkout page is loaded by visitors | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your store had **3,247 checkout initiations** in April, up from 2,891 in March. | Week | Initiate Checkouts | Change | | ------ | ------------------ | ------ | | Week 1 | 782 | — | | Week 2 | 845 | +8.1% | | Week 3 | 801 | −5.2% | | Week 4 | 819 | +2.2% | *** ## How It Works The Upstack Pixel fires an event each time a visitor loads your checkout page. Initiate Checkouts counts these events to measure how many visitors reach the checkout step, regardless of whether they complete a purchase. *** ## When to Use | Scenario | Action | | ------------------------------------- | ----------------------------------------------------------------------------- | | Measuring checkout funnel performance | Compare Initiate Checkouts to purchases to calculate checkout completion rate | | Evaluating cart abandonment | High initiations with low purchases indicates checkout friction | | Assessing ad campaign quality | Campaigns driving more checkout initiations show stronger purchase intent | | A/B testing cart changes | Track if cart modifications improve checkout initiation rates | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------- | --------------------------------------------- | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Precedes checkout initiation in the funnel | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Measures completed conversions from checkout | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Earlier funnel stage showing product interest | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Initiate Checkouts Value: Checkout Intent Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/initiate-checkouts-value Track your initiate checkouts value to measure total checkout intent revenue. Sum of all values from checkout initiation events. Initiate Checkouts Value measures the total monetary value associated with all checkout initiation events. ## Formula **Initiate Checkouts Value** = **SUM** ( Initiate Checkout Event Values ) ### Formula Components | Metric | Definition | | ---------------------------------- | ------------------------------------------------------ | | **Initiate Checkout Event Values** | The cart value at the time of each checkout initiation | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store had **500 initiate checkout events** last week with varying cart values. | Event | Cart Value | | ---------------------- | ------------ | | Checkout 1 | \$85.00 | | Checkout 2 | \$125.00 | | Checkout 3 | \$45.00 | | ... | ... | | **Total (500 events)** | **\$42,500** | *** ## How It Works Initiate Checkouts Value sums the cart value from each checkout initiation event tracked by the Upstack Pixel. This metric represents the total potential revenue from visitors who reached checkout. Compare this to actual revenue to understand checkout abandonment impact. *** ## When to Use | Scenario | Action | | ---------------------------- | -------------------------------------------------- | | Measuring checkout intent | Track total potential revenue entering checkout | | Calculating abandonment loss | Subtract completed revenue to find abandoned value | | Evaluating campaign value | Compare intent value across traffic sources | | Forecasting revenue | Use checkout value as a leading indicator | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------- | --------------------------------------------- | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Count of events that contribute to this value | | [Add to Cart Value](/reference/metrics/funnel/engagement/add-to-carts-value) | Earlier funnel value metric | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Final conversion value to compare | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Logins: Track Customer Authentication Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/login Track login events on your site. Measure customer authentication frequency to understand returning visitor engagement and account usage. Logins measures the total number of times visitors authenticated (logged in) to their accounts on your site. ## Formula **Logins** = **COUNT** ( Login Events ) ### Formula Components | Metric | Definition | | ---------------- | ---------------------------------------------------------------------------- | | **Login Events** | Individual authentication events tracked when a user logs into their account | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your store recorded **4,823 logins** in March, indicating strong account engagement from returning customers. | Week | Logins | Change | | ------ | ------ | ------ | | Week 1 | 1,156 | — | | Week 2 | 1,203 | +4.1% | | Week 3 | 1,187 | -1.3% | | Week 4 | 1,277 | +7.6% | *** ## How It Works The Upstack pixel fires a login event each time a visitor successfully authenticates on your site. This includes logins from the main site, checkout, and any other authentication touchpoints. Each successful authentication counts as one login event, regardless of session or device. *** ## When to Use | Scenario | Action | | -------------------------------- | -------------------------------------------------------------------------------- | | Measure account engagement | Track login frequency to understand how often customers return to their accounts | | Identify authentication friction | Compare logins to account creation to spot drop-off in returning users | | Segment returning customers | Use login data to identify your most engaged account holders | | Evaluate loyalty programs | Monitor login trends after launching member-only benefits or rewards | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | -------------------------------------------------------------------- | | [Sessions](/reference/metrics/funnel/awareness/sessions) | Total site visits — logins represent authenticated sessions | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Overall engagement — logins indicate deeper account-level engagement | | [Conversions](/reference/metrics/funnel/conversions/conversions) | Purchase completions — logged-in users often convert at higher rates | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Login Value: Total Revenue from Login Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/login-value Track total monetary value of login events captured by the Upstack pixel. Measure the engagement value of returning authenticated users. Total monetary value of login events tracked by the Upstack pixel. ## Formula **Login Value** = **SUM** ( Login Event Values ) ### Formula Components | Metric | Definition | | ---------------------- | -------------------------------------------------------- | | **SUM** | Aggregation function that totals all login event values | | **Login Event Values** | Monetary value assigned to each login event when tracked | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store tracked **\$6,400** in login value this month across 1,280 logins: | Channel | Login Value | Logins | Avg Value | | ---------- | ----------- | ------ | --------- | | Meta Ads | \$3,800 | 760 | \$5.00 | | Google Ads | \$1,900 | 380 | \$5.00 | | TikTok Ads | \$700 | 140 | \$5.00 | *** ## How It Works Login Value sums the monetary value assigned to each login event tracked by the Upstack pixel. When a returning customer authenticates on your site, the event can include a custom value representing expected session value or customer lifetime value. This metric helps quantify the total engagement value from authenticated user sessions across your marketing campaigns. *** ## When to Use | Scenario | Action | | ---------------------------- | --------------------------------------------------------------- | | Retention campaign valuation | Measure total value from campaigns targeting existing customers | | Channel comparison | Compare login value contribution across advertising platforms | | Customer engagement analysis | Higher login values may indicate more engaged customer segments | | ROI calculation | Pair with cost per login to calculate re-engagement ROI | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------- | --------------------------------------------------- | | [Logins](/reference/metrics/funnel/engagement/login) | Count of login events that contribute to this value | | [Cost per Login](/reference/metrics/funnel/engagement/cost-per-login) | Spend efficiency for generating login events | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # PV to VC Rate: Page View to View Content Conversion Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/pv-to-vc-rate Measure the percentage of page views that lead to product views. Use PV to VC Rate to optimize site navigation and product discovery. PV to VC Rate measures the percentage of page views that result in product detail page views, indicating how effectively your site drives product discovery. ## Formula **PV to VC Rate** = ( [**View Contents**](/reference/metrics/funnel/engagement/view-contents) ÷ [**Page Views**](/reference/metrics/funnel/awareness/page-views) ) × 100 ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------- | --------------------------------------- | | [**View Contents**](/reference/metrics/funnel/engagement/view-contents) | Total product detail page views | | [**Page Views**](/reference/metrics/funnel/awareness/page-views) | Total page load events across your site | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store had **45,000 page views** and **12,150 product views** in May, producing a **27% PV to VC Rate**. | Traffic Source | Page Views | View Contents | PV to VC Rate | | -------------- | ---------- | ------------- | ------------- | | Organic Search | 18,000 | 5,400 | 30% | | Paid Social | 15,000 | 3,750 | 25% | | Direct | 12,000 | 3,000 | 25% | *** ## How It Works PV to VC Rate divides View Contents (product detail page views) by total Page Views and multiplies by 100. A higher rate indicates visitors are successfully finding and exploring products. A lower rate may suggest navigation issues or misaligned traffic. *** ## When to Use | Scenario | Action | | ------------------------------------- | -------------------------------------------------------------- | | Evaluating site navigation | Low rate indicates visitors struggle to find products | | Comparing traffic sources | Identify which channels drive more product-interested visitors | | Measuring homepage effectiveness | Track if homepage changes improve product discovery | | Analyzing collection page performance | Higher rate suggests better product merchandising | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------- | --------------------------------------- | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Numerator measuring product page views | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Denominator measuring all page loads | | [VC to ATC Rate](/reference/metrics/funnel/engagement/vc-to-atc-rate) | Next conversion step after product view | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Remove from Cart: Track Cart Removals Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/remove-from-cart Track Remove from Cart events on your Shopify store. Understand when visitors remove products from their cart to optimize your checkout funnel. Remove from Cart measures the total number of times visitors removed a product from their shopping cart. ## Formula **Remove from Cart** = **COUNT** ( product\_removed\_from\_cart events ) ### Formula Components | Metric | Definition | | --------------------------------------- | -------------------------------------------------------------- | | **product\_removed\_from\_cart events** | Each time a visitor removes a product from their shopping cart | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your Shopify store recorded **1,847 remove from cart events** last month across **1,520 unique sessions**. | Product Category | Removals | % of Total | Avg Cart Value Before Removal | | ---------------- | -------- | ---------- | ----------------------------- | | Apparel | 742 | 40.2% | \$89.50 | | Accessories | 521 | 28.2% | \$45.20 | | Footwear | 389 | 21.1% | \$125.00 | | Home Goods | 195 | 10.5% | \$62.75 | *** ## How It Works The Upstack pixel fires a `product_removed_from_cart` event whenever a visitor removes an item from their shopping cart. Each event captures product details including SKU, price, and quantity, enabling you to analyze which products are most frequently removed and identify potential friction points in your checkout funnel. *** ## When to Use | Scenario | Action | | ----------------------------- | -------------------------------------------------------------------------- | | Identify problematic products | Find items frequently removed to investigate pricing or description issues | | Cart abandonment analysis | Compare removals to add-to-cart events to understand cart behavior | | Pricing optimization | Track if price changes affect removal rates | | UX diagnostics | Monitor if site changes impact cart removal frequency | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------- | ----------------------------------------------- | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Opposite action — products added to cart | | [View Cart](/reference/metrics/funnel/engagement/view-cart) | Cart engagement — when visitors view their cart | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Next funnel step — checkout process started | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Remove from Cart Value: Total Abandoned Cart Item Value Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/remove-from-cart-value Track the total monetary value of products removed from shopping carts. Identify high-value cart abandonment patterns to optimize retention strategies. Remove from Cart Value measures the total monetary value of products that visitors removed from their shopping carts. ## Formula **Remove from Cart Value** = **SUM** ( Product Value ) **WHERE** event = product\_removed\_from\_cart ### Formula Components | Metric | Definition | | ---------------------------------------- | ----------------------------------------------------------------- | | **Product Value** | The price of the product at the time it was removed from the cart | | **event = product\_removed\_from\_cart** | Filters to cart removal events tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your e-commerce store tracked **\$12,450** in removed cart value last month across **847** removal events. | Week | Remove Events | Remove Value | Avg. Item Value | | ------ | ------------- | ------------ | --------------- | | Week 1 | 198 | \$2,890 | \$14.60 | | Week 2 | 215 | \$3,245 | \$15.09 | | Week 3 | 187 | \$2,680 | \$14.33 | | Week 4 | 247 | \$3,635 | \$14.72 | *** ## How It Works The Upstack pixel fires a `product_removed_from_cart` event each time a visitor removes an item from their cart. Remove from Cart Value sums the monetary value of all removed products, helping you quantify potential lost revenue from cart modifications. *** ## When to Use | Scenario | Action | | ------------------------------------------ | ------------------------------------------------------- | | High removal value on specific products | Review pricing, images, or descriptions for those items | | Removal spikes after price increases | Evaluate pricing strategy and test discount messaging | | High-value items removed frequently | Add urgency messaging or limited-time offers | | Compare removal value to add-to-cart value | Calculate cart retention rate to benchmark performance | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [Remove from Cart](/reference/metrics/funnel/engagement/remove-from-cart) | Count of removal events (this metric is the value) | | [Cost per Remove from Cart](/reference/metrics/funnel/engagement/cost-per-remove-from-cart) | Advertising cost efficiency for removal events | | [Add to Cart Value](/reference/metrics/funnel/engagement/add-to-carts-value) | Compare additions vs. removals to assess cart health | | [View Cart](/reference/metrics/funnel/engagement/view-cart) | Cart views that may precede removals | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Search: Site Search Events Count Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/search Track the number of site search events on your store. Understand how visitors use search to find products and optimize discoverability. Search counts the total number of site search events triggered when visitors use your store's search functionality. ## Formula **Search** = **COUNT** ( search events ) ### Formula Components | Metric | Definition | | ----------------- | ----------------------------------------------------------------- | | **search events** | Individual search actions triggered by visitors using site search | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your Shopify store recorded **3,847 searches** last week. | Day | Searches | Top Search Terms | | --------- | -------- | ------------------------------ | | Monday | 542 | "blue dress", "summer sale" | | Tuesday | 489 | "gift cards", "returns" | | Wednesday | 612 | "new arrivals", "size guide" | | Thursday | 558 | "sale", "free shipping" | | Friday | 687 | "black friday", "deals" | | Saturday | 521 | "weekend sale", "clearance" | | Sunday | 438 | "sunday deals", "best sellers" | *** ## How It Works Search events fire when visitors interact with your site's search functionality. The Upstack Pixel captures each search action, including the search query, to help you understand what visitors are looking for on your store. *** ## When to Use | Scenario | Action | | ----------------------------------- | ----------------------------------------------------------- | | Low search-to-purchase rate | Improve search result relevance and product matching | | High search volume, low conversions | Audit top search terms for missing or out-of-stock products | | Zero-result searches increasing | Add synonyms, fix typos, or expand product catalog | | Search usage declining | Review search UX placement and accessibility | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | ------------------------------ | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Broader engagement context | | [Sessions](/reference/metrics/funnel/awareness/sessions) | Search per session analysis | | [Add to Cart](/reference/metrics/funnel/engagement/add-to-carts) | Search-to-cart conversion path | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Search Value: Total Value of Site Searches Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/search-value Track Search Value to measure the total monetary value of site search events. Quantify how on-site search drives revenue and engagement for your e-commerce store. Search Value measures the total monetary value attributed to search events tracked by the Upstack pixel. ## Formula **Search Value** = **SUM** ( value ) **WHERE** event = search ### Formula Components | Metric | Definition | | ------------------ | -------------------------------------------- | | **value** | Monetary value passed with each search event | | **event = search** | Filters to search events only | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your e-commerce site had **2,847 searches** in January, with visitors finding products worth a total of **\$45,230** in search value. | Week | Searches | Search Value | Avg Value/Search | | ------ | -------- | ------------ | ---------------- | | Week 1 | 712 | \$11,392 | \$16.00 | | Week 2 | 698 | \$10,818 | \$15.50 | | Week 3 | 745 | \$12,665 | \$17.00 | | Week 4 | 692 | \$10,355 | \$14.96 | *** ## How It Works Search Value aggregates the `value` parameter from all search events tracked by the Upstack pixel. When a visitor performs a site search, you can pass an optional value representing the potential monetary worth of that search action. This helps quantify the revenue impact of your site search functionality. *** ## When to Use | Scenario | Action | | ------------------------------- | --------------------------------------------------- | | Evaluating site search ROI | Compare search value to search implementation costs | | Optimizing search experience | Track value changes after search UX improvements | | Measuring search-driven revenue | Attribute revenue contribution to site search | | Comparing engagement channels | Compare search value against other funnel metrics | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------- | --------------------------------------------- | | [Search](/reference/metrics/funnel/engagement/search) | Total search count this value is derived from | | [Cost per Search](/reference/metrics/funnel/engagement/cost-per-search) | Cost efficiency of driving search events | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Product views that often follow searches | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Select Content: Content Selection Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/select-content Track select content events when visitors click promotions, banners, or featured items on your Shopify store. Measure content engagement. Select Content counts the total number of times visitors select or click on content elements like promotional banners, featured products, or recommendation carousels. ## Formula **Select Content** = **COUNT** ( select\_content events ) ### Formula Components | Metric | Definition | | -------------------------- | ------------------------------------------------------------------------------------ | | **select\_content events** | Individual clicks on content elements such as promotions, banners, or featured items | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your Shopify store recorded **2,156 content selections** last week across promotional elements. | Content Type | Selections | Click-Through Rate | | ----------------------- | ---------- | ------------------ | | Hero Banner | 847 | 4.2% | | Product Recommendations | 612 | 3.8% | | Category Spotlights | 389 | 2.9% | | Sale Badges | 308 | 5.1% | *** ## How It Works Select Content events fire when visitors interact with highlighted content elements on your store. The Upstack Pixel captures these interactions along with the content identifier, helping you understand which promotional placements and featured content resonate with visitors. *** ## When to Use | Scenario | Action | | ---------------------------------- | ------------------------------------------------------------ | | Testing banner effectiveness | Compare select content rates across different banner designs | | Low engagement on promotions | Reposition content or improve visual hierarchy | | Optimizing product recommendations | Track which recommendation types drive the most clicks | | Evaluating homepage layout | Measure content selection distribution across page sections | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------- | ---------------------------------------------- | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Content selection often leads to product views | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Broader context for content engagement | | [Add to Cart](/reference/metrics/funnel/engagement/add-to-carts) | Downstream conversion from content selection | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Select Content Value: Track Engagement Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/select-content-value Track the total monetary value of select content events. Measure engagement value when visitors click on products or content in lists. Select Content Value measures the total monetary value of select content events tracked by the Upstack pixel. ## Formula **Select Content Value** = **SUM** ( value ) **WHERE** event\_type = select\_content ### Formula Components | Metric | Definition | | --------------------------------- | -------------------------------------------------------- | | **value** | The monetary value passed with each select content event | | **event\_type = select\_content** | Filters to select content events only | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your Shopify store tracked **2,450 select content events** in the past 30 days, with a total value of **\$18,750**. | Metric | Value | Notes | | --------------------- | -------- | ----------------------------- | | Select Content Events | 2,450 | Product clicks from listings | | Select Content Value | \$18,750 | Sum of product values clicked | | Avg Value per Event | \$7.65 | \$18,750 ÷ 2,450 | *** ## How It Works Select Content Value sums the `value` property from all `select_content` events tracked by the Upstack pixel. This event fires when visitors click on a product or content item from a list, such as a collection page, search results, or recommended products carousel. The value typically represents the product price at the time of selection. *** ## When to Use | Scenario | Action | | ------------------------------------- | ------------------------------------------------------------------------------- | | Comparing product listing performance | Identify which collections or search results drive the highest engagement value | | Measuring discovery effectiveness | Track how much potential revenue flows through product discovery touchpoints | | Optimizing merchandising | Compare select content value across different product placements and layouts | | Funnel analysis | Understand the value entering your consideration stage before add-to-cart | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [View Contents Value](/reference/metrics/funnel/engagement/view-contents-value) | Value at the product detail page stage (after selection) | | [Add to Carts Value](/reference/metrics/funnel/engagement/add-to-carts-value) | Value at the add-to-cart stage (after viewing) | | [Select Contents](/reference/metrics/funnel/engagement/select-content) | Count of select content events (use with value for average) | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Select Item: Product Selection Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/select-item Track select item events to measure product engagement when visitors click products from lists, collections, or search results on your site. Select Item counts how many times visitors click or select a product from a list, collection, or search results page. ## Formula **Select Item** = **COUNT** ( select\_item events ) ### Formula Components | Metric | Definition | | ----------------------- | ---------------------------------------------------------------------- | | **select\_item events** | Individual product selection interactions tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your Shopify store's homepage collection received **2,847 select item events** this week, indicating strong product discovery engagement. | Page Type | Select Items | Conversion to View Content | | ----------------- | ------------ | -------------------------- | | Collection Page | 1,523 | 78% | | Search Results | 892 | 82% | | Homepage Featured | 432 | 71% | *** ## How It Works The Upstack pixel fires a select\_item event when a visitor clicks or taps on a product within a list context (collection pages, search results, featured products, or recommendations). This event captures product engagement before the visitor reaches the product detail page. *** ## When to Use | Scenario | Action | | --------------------------------------- | ------------------------------------------------------------------- | | Measuring collection page effectiveness | Compare select item rates across different collection layouts | | Evaluating search result relevance | Track how often search results lead to product clicks | | Optimizing homepage merchandising | Analyze which featured product placements drive the most selections | | Identifying navigation patterns | Understand how visitors discover products before viewing details | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------- | ------------------------------------------- | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Fires after user views product detail page | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Next engagement step after viewing product | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Total page views including collection pages | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Select Promotion: Track Promotion Engagement Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/select-promotion Track when shoppers click or select promotions in your store. Measure promotion engagement and optimize banner placements for higher conversions. Select Promotion tracks the number of times shoppers click or interact with promotional banners, offers, or campaigns in your store. ## Formula **Select Promotion** = **COUNT** ( select\_promotion events ) ### Formula Components | Metric | Definition | | ---------------------------- | ---------------------------------------------------------------------------------------- | | **select\_promotion events** | User interactions with promotional content such as banners, offers, or campaign elements | | Metadata | | | --------------- | ----------------------- | | **Type** | Count | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your Shopify store ran a **"Summer Sale"** banner campaign. In one week, the banner received **2,847 select promotion events**. | Promotion | Placement | Select Promotion Events | CTR to Product | | ----------------------- | ------------- | ----------------------- | -------------- | | Summer Sale 30% Off | Homepage Hero | 1,523 | 12.4% | | Free Shipping Over \$50 | Cart Drawer | 892 | 8.7% | | New Arrivals Preview | Category Page | 432 | 15.2% | *** ## How It Works Select Promotion fires when a shopper clicks, taps, or otherwise interacts with a promotional element. The event captures the promotion name, creative, and placement to help you understand which campaigns drive engagement. This metric counts all promotion interactions regardless of whether the shopper subsequently converts. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------- | | Comparing banner performance | Identify which promotions generate the most clicks | | A/B testing creative | Measure engagement differences between promotion variants | | Optimizing placement | Determine which page locations drive higher interaction rates | | Campaign reporting | Track promotion engagement trends over time | *** ## Related Metrics | Metric | Relationship | | -------------- | --------------------------------------------------------------------- | | View Promotion | Tracks when promotions are displayed (impressions before interaction) | | Conversions | Measures purchases attributed to promotion interactions | | Sessions | Provides context for promotion engagement as a percentage of traffic | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Session View Product Rate: Sessions with Product Views Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/session-view-product-rate Measure the percentage of sessions where visitors view at least one product. Use Session View Product Rate to assess product discovery. Session View Product Rate measures the percentage of sessions where visitors viewed at least one product detail page, indicating overall product discovery effectiveness. ## Formula **Session View Product Rate** = ( **Sessions with Product View** ÷ **Total Sessions** ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ------------------------------------------------------------------------- | | **Sessions with Product View** | Count of unique sessions containing at least one product detail page view | | [**Total Sessions**](/reference/metrics/funnel/awareness/unique-sessions) | Total number of unique visitor sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store had **8,500 total sessions** in June, with **5,100 sessions** including at least one product view, producing a **60% Session View Product Rate**. | Device | Total Sessions | Sessions with Product View | Rate | | ------- | -------------- | -------------------------- | ---- | | Mobile | 5,100 | 2,856 | 56% | | Desktop | 2,890 | 1,907 | 66% | | Tablet | 510 | 337 | 66% | *** ## How It Works Session View Product Rate counts unique sessions where the visitor viewed at least one product detail page, then divides by total sessions. Unlike PV to VC Rate which measures page-level conversion, this metric measures session-level engagement—whether a visitor explored any products during their visit. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------------ | | Measuring product discovery | Track what percentage of visitors engage with products | | Comparing device experiences | Identify if mobile visitors struggle to find products | | Evaluating landing pages | Low rate from specific pages suggests poor product visibility | | Assessing traffic quality | High-quality traffic sources should have higher product view rates | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------- | ------------------------------------------------- | | [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) | Denominator measuring total sessions | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Related event that triggers session product view | | [PV to VC Rate](/reference/metrics/funnel/engagement/pv-to-vc-rate) | Page-level conversion vs session-level engagement | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Share: Track Social Engagement Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/share Track Share events to measure social engagement and content virality. Identify shareable products and content for your Shopify store. Share counts the number of times visitors share your products or content via social channels, indicating engagement and potential for organic reach. ## Formula **Share** = **COUNT** ( share events ) ### Formula Components | Metric | Definition | | ---------------- | --------------------------------------------------------------------------------------------- | | **share events** | Individual events fired when a visitor shares a product, page, or content via social channels | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your store's product pages generated **1,247 shares** over the past 30 days, with gift guides driving the highest engagement. | Content | Shares | Platform Breakdown | | ----------------------- | ------ | --------------------------- | | Holiday Gift Guide | 423 | 65% Facebook, 25% Twitter | | Best Sellers Collection | 312 | 55% Pinterest, 30% Facebook | | New Arrivals Page | 278 | 50% Instagram, 35% Email | *** ## How It Works The Upstack Pixel fires a `share` event when a visitor clicks a social share button on your site. Each event captures the content being shared and the platform or method used, enabling you to analyze which products and content types generate the most social engagement. High share counts indicate content that resonates with your audience and has potential for organic amplification. *** ## When to Use | Scenario | Action | | --------------------------- | ------------------------------------------------------------------------- | | Measure content virality | Track which products and pages get shared most to inform content strategy | | Identify shareable products | Find products with high share rates to feature in campaigns | | Evaluate social features | Measure effectiveness of share buttons and social integrations | | Optimize for organic reach | Focus on content types that drive the most shares | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------- | ----------------------------------------------------- | | [Cost per Share](/reference/metrics/funnel/engagement/cost-per-share) | Measures ad spend efficiency for generating shares | | [Add to Wishlist](/reference/metrics/funnel/engagement/add-to-wishlist) | Another engagement signal indicating product interest | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Tracks initial product interest before social sharing | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Sign Up: Account Registration Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/sign-up Track sign up events on your site. Measure account registrations and user acquisition to optimize your conversion funnel. Sign Up counts the total number of account registration events tracked by the Upstack pixel. ## Formula **Sign Up** = **COUNT** ( Sign Up Events ) ### Formula Components | Metric | Definition | | ------------------ | ---------------------------------------------------------------------------- | | **Sign Up Events** | Individual account registration events fired when visitors create an account | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your e-commerce store tracked **2,847 sign ups** in March, indicating strong interest in account creation. | Week | Sign Ups | Change | | ------ | -------- | ------ | | Week 1 | 623 | — | | Week 2 | 712 | +14.3% | | Week 3 | 758 | +6.5% | | Week 4 | 754 | -0.5% | *** ## How It Works Sign up events are tracked when visitors complete account registration on your site. The Upstack pixel fires a `sign_up` event each time a visitor successfully creates an account, capturing the moment of conversion from anonymous visitor to registered user. *** ## When to Use | Scenario | Action | | -------------------------------------- | --------------------------------------------------------- | | Tracking account growth | Monitor sign ups over time to measure user acquisition | | Optimizing registration flow | Compare sign up rates before and after form changes | | Measuring campaign effectiveness | Track sign ups attributed to specific marketing campaigns | | Identifying high-value traffic sources | Compare sign up rates across different channels | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | -------------------------------------------------------- | | [Complete Registration](/reference/metrics/funnel/conversions/complete-registration) | Similar registration event, may include additional steps | | [Login](/reference/metrics/funnel/engagement/login) | Measures returning user engagement after sign up | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Sign Up Value: Track Registration Monetary Worth Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/sign-up-value Measure the total monetary value of sign up events. Analyze registration value to understand lead quality and optimize acquisition channels. Sign Up Value measures the total monetary value assigned to sign up events on your site. ## Formula **Sign Up Value** = **SUM** ( Sign Up Event Values ) ### Formula Components | Metric | Definition | | ------------------------ | -------------------------------------------------------------- | | **Sign Up Event Values** | Value assigned to each sign up event when tracked by the pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your site tracked **847 sign up events** in January with assigned values based on registration type. | Registration Type | Sign Ups | Avg Value | Total Value | | ----------------- | -------- | --------- | ------------ | | Newsletter | 524 | \$5.00 | \$2,620 | | Account Creation | 256 | \$25.00 | \$6,400 | | Premium Trial | 67 | \$75.00 | \$5,025 | | **Total** | **847** | — | **\$14,045** | *** ## How It Works Sign Up Value sums the monetary value assigned to each sign up event. The Upstack Pixel captures the value property when a sign up event fires. You define the value in your tracking implementation based on the registration type or estimated lead worth. *** ## When to Use | Scenario | Action | | --------------------- | ---------------------------------------------------------- | | Lead value analysis | Quantify registration pipeline in monetary terms | | Channel ROI | Compare sign up value generated by traffic source | | Campaign optimization | Identify which campaigns drive highest-value registrations | | Funnel value tracking | Monitor total value entering your registration funnel | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | --------------------------------- | | [Sign Ups](/reference/metrics/funnel/engagement/sign-up) | Count of sign up events (volume) | | [Cost per Sign Up](/reference/metrics/funnel/engagement/cost-per-sign-up) | Acquisition cost for each sign up | | [Lead Value](/reference/metrics/funnel/conversions/lead-value) | Value of lead generation events | | [Complete Registration Value](/reference/metrics/funnel/conversions/complete-registration-value) | Value of completed registrations | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Signed Out: Track User Sign Out Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/signed-out Track the total number of user sign out events. Monitor session completion patterns and user engagement cycles. Signed Out measures the total number of times users signed out of your application, tracked by the Upstack pixel. ## Formula **Signed Out** = **COUNT** ( Events ) **WHERE** event\_type = signed\_out ### Formula Components | Metric | Definition | | ----------------------------- | ----------------------------------------- | | **Events** | All tracked events from the Upstack pixel | | **event\_type = signed\_out** | Filters to only sign out events | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your SaaS application tracked user activity over the past month. | Week | Logins | Signed Out | Sign Out Rate | | --------- | --------- | ---------- | ------------- | | Week 1 | 500 | 420 | 84% | | Week 2 | 550 | 480 | 87% | | Week 3 | 480 | 400 | 83% | | Week 4 | 520 | 450 | 87% | | **Total** | **2,050** | **1,750** | **85%** | *** ## How It Works This metric counts all signed out events tracked by the Upstack pixel. A sign out event fires when a user explicitly ends their session. This helps understand session completion patterns and distinguishes between clean session endings versus abandoned sessions. *** ## When to Use | Scenario | Action | | ---------------------- | ------------------------------------------- | | Session analysis | Track how often users properly end sessions | | User behavior patterns | Understand engagement lifecycle | | Security monitoring | Monitor for unusual sign out patterns | | UX optimization | Identify friction in sign out flows | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------- | ------------------------------- | | [Login](/reference/metrics/funnel/engagement/login) | Opposite action - session start | | [Cost per Signed Out](/reference/metrics/funnel/engagement/cost-per-signed-out) | Acquisition cost per sign out | | [Signed Out Value](/reference/metrics/funnel/engagement/signed-out-value) | Monetary value of sign outs | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Signed Out Value: Total Value of Sign Out Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/signed-out-value Track the total monetary value associated with signed out events. Measure the value of user session completions. Signed Out Value measures the total monetary value associated with all signed out events tracked by the Upstack pixel. ## Formula **Signed Out Value** = **SUM** ( Value ) **WHERE** event\_type = signed\_out ### Formula Components | Metric | Definition | | ----------------------------------------------------------------- | ------------------------------------------------ | | [**Signed Out**](/reference/metrics/funnel/engagement/signed-out) | Total user sign out events tracked | | **Value** | Monetary value assigned to each signed out event | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your SaaS application recorded **150 signed out** events last week with varying session values. | Session Type | Count | Avg Value | Total Value | | -------------- | ------- | --------- | ----------- | | Premium users | 50 | \$15.00 | \$750 | | Standard users | 100 | \$5.00 | \$500 | | **Total** | **150** | - | **\$1,250** | *** ## How It Works This metric sums the monetary value associated with each signed out event. Value is typically assigned based on user tier, session activity, or expected engagement value. This helps quantify the value of sessions that complete normally with a sign out action. *** ## When to Use | Scenario | Action | | ----------------------- | -------------------------------------------- | | Session value analysis | Understand value of completed sessions | | User tier comparison | Compare session values across user types | | Engagement monetization | Track value of user engagement patterns | | Campaign attribution | Attribute session value to marketing efforts | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------- | ------------------------ | | [Signed Out](/reference/metrics/funnel/engagement/signed-out) | Count of sign out events | | [Cost per Signed Out](/reference/metrics/funnel/engagement/cost-per-signed-out) | Cost efficiency metric | | [Login Value](/reference/metrics/funnel/engagement/login-value) | Value of sign in events | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Total Events: All Tracked Interactions Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/total-events Count all tracked events across your site. Use Total Events to monitor overall tracking health and visitor engagement volume. Total Events counts every tracked interaction captured by the Upstack Pixel, including page views, product views, add to carts, checkouts, and purchases. ## Formula **Total Events** = **COUNT** ( All Events ) ### Formula Components | Metric | Definition | | -------------- | ------------------------------------------------------- | | **All Events** | Every tracked interaction captured by the Upstack Pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your store tracked **127,450 total events** in July across all event types. | Event Type | Count | % of Total | | ------------------ | ------ | ---------- | | Page Views | 89,000 | 69.8% | | View Contents | 24,500 | 19.2% | | Add to Carts | 8,750 | 6.9% | | Initiate Checkouts | 3,450 | 2.7% | | Purchases | 1,750 | 1.4% | *** ## How It Works Total Events aggregates all tracked interactions captured by the Upstack Pixel. This includes standard e-commerce events (page views, product views, add to carts, checkouts, purchases) plus any custom events you've configured. Use this metric to monitor tracking health and overall site engagement. *** ## When to Use | Scenario | Action | | ----------------------------- | --------------------------------------------- | | Monitoring tracking health | Sudden drops indicate pixel or site issues | | Measuring engagement volume | Track overall interaction trends over time | | Validating pixel installation | Confirm events are firing after setup changes | | Capacity planning | Understand event volume for quota management | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------- | ------------------------------------- | | [Page Views](/reference/metrics/funnel/awareness/page-views) | Largest component of total events | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Product view events included in total | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Conversion events included in total | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Unique Add to Carts: Session-Deduplicated Cart Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/unique-add-to-carts Track unique add to cart events deduplicated by session. Measure how many sessions included at least one add-to-cart action. Unique Add to Carts counts the number of sessions where at least one product was added to the cart, regardless of how many items were added during that session. ## Formula **Unique Add to Carts** = **COUNT** ( Sessions with Add to Cart ) ### Formula Components | Metric | Definition | | ----------------------------- | -------------------------------------------------------------------- | | **Sessions with Add to Cart** | Count of distinct sessions that fired at least one add-to-cart event | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your store had **2,847 unique add-to-carts** last week, meaning 2,847 separate visitor sessions included at least one add-to-cart action. | Day | Total Add to Carts | Unique Add to Carts | Avg. Items per Session | | --------- | ------------------ | ------------------- | ---------------------- | | Monday | 1,245 | 892 | 1.4 | | Tuesday | 1,156 | 834 | 1.4 | | Wednesday | 1,389 | 1,121 | 1.2 | In this example, Monday had 1,245 total add-to-cart events but only 892 unique sessions with add-to-carts — some visitors added multiple products during their session. *** ## How It Works Each session can fire multiple add-to-cart events when visitors add different products or quantities. Unique Add to Carts deduplicates these events at the session level, counting each session only once regardless of how many items were added. This gives you a cleaner view of shopping intent without inflation from multi-item carts. *** ## When to Use | Scenario | Action | | ------------------------------------- | -------------------------------------------------------------------------------------------------------------- | | Measuring true shopping intent | Use Unique Add to Carts to see how many sessions showed purchase intent | | Comparing funnel stages | Pair with [Unique Sessions](/reference/metrics/funnel/awareness/unique-sessions) for accurate conversion rates | | Evaluating product page effectiveness | Compare against View Contents to measure add-to-cart rate | | Analyzing multi-product behavior | Compare against total Add to Carts to understand cart composition | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------- | ---------------------------------------------------- | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Total count including multiple events per session | | [Add to Cart Rate](/reference/metrics/funnel/engagement/add-to-cart-rate) | Percentage of product views resulting in add-to-cart | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Product page views — the previous funnel step | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Checkout starts — the next funnel step | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # User Removed: Track Team Member Removal Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/user-removed Track the total number of user removal events. Monitor team changes and account management patterns. User Removed measures the total number of times a user was removed from an account, tracked by the Upstack pixel. ## Formula **User Removed** = **COUNT** ( Events ) **WHERE** event\_type = user\_removed ### Formula Components | Metric | Definition | | ------------------------------- | ----------------------------------------- | | **Events** | All tracked events from the Upstack pixel | | **event\_type = user\_removed** | Filters to only user removal events | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your B2B SaaS platform tracked account management activity this quarter. | Month | Users Added | Users Removed | Net Change | | ------------ | ----------- | ------------- | ---------- | | January | 150 | 25 | +125 | | February | 180 | 30 | +150 | | March | 200 | 45 | +155 | | **Q1 Total** | **530** | **100** | **+430** | *** ## How It Works This metric counts all user removed events tracked by the Upstack pixel. A user removed event fires when an admin or account owner removes a team member from the account. This helps understand team dynamics, seat management, and potential churn indicators. *** ## When to Use | Scenario | Action | | ---------------------- | ------------------------------------ | | Seat management | Track license utilization changes | | Churn prediction | Identify accounts reducing team size | | Account health | Monitor unusual removal patterns | | Billing reconciliation | Verify seat count changes | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------- | -------------------------- | | User Invited | Track new team invitations | | [Cost per User Removed](/reference/metrics/funnel/engagement/cost-per-user-removed) | Cost per removal event | | Account Deleted | Full account closure | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # User Removed Value: Total Value of Removal Events Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/user-removed-value Track the total monetary value associated with user removed events. Measure the impact of team member removals. User Removed Value measures the total monetary value associated with all user removal events tracked by the Upstack pixel. ## Formula **User Removed Value** = **SUM** ( Value ) **WHERE** event\_type = user\_removed ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | --------------------------------------------- | | [**User Removed**](/reference/metrics/funnel/engagement/user-removed) | Total user removal events tracked | | **Value** | Monetary value assigned to each removal event | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your B2B platform removed **25 users** this month with varying seat values. | Plan Tier | Users Removed | Seat Value | Total Value | | ------------ | ------------- | ---------- | ----------- | | Enterprise | 5 | \$100/seat | \$500 | | Professional | 12 | \$50/seat | \$600 | | Starter | 8 | \$25/seat | \$200 | | **Total** | **25** | - | **\$1,300** | *** ## How It Works This metric sums the monetary value associated with each user removal event. Value is typically calculated based on the seat cost or expected lifetime value of the removed user. This helps quantify the revenue impact of team changes. *** ## When to Use | Scenario | Action | | ----------------------- | --------------------------------- | | Revenue impact analysis | Quantify lost seat revenue | | Churn forecasting | Predict revenue contraction | | Downsell identification | Track plan-level removal patterns | | Account health scoring | Weight accounts by removal value | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------- | ----------------------- | | [User Removed](/reference/metrics/funnel/engagement/user-removed) | Count of removal events | | [Cost per User Removed](/reference/metrics/funnel/engagement/cost-per-user-removed) | Cost per removal | | Seat Removed Value | Related seat metric | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # View Contents to Add to Cart Rate: Product Page Effectiveness Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/vc-to-atc-rate Measure product page effectiveness with View Contents to Add to Cart Rate. Track what percentage of product views convert to cart additions in Upstack. View Contents to Add to Cart Rate measures the percentage of product page views that resulted in an item being added to cart—indicating product page persuasiveness. ## Formula **VC to ATC Rate** = ( [**Add to Carts**](/reference/metrics/funnel/engagement/add-to-carts) ÷ [**View Contents**](/reference/metrics/funnel/engagement/view-contents) ) × 100 ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------- | -------------------------------------- | | [**Add to Carts**](/reference/metrics/funnel/engagement/add-to-carts) | Number of items added to shopping cart | | [**View Contents**](/reference/metrics/funnel/engagement/view-contents) | Number of product detail page views | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example A home decor store received **8,420 product page views** last week, resulting in **1,347 add to carts**. | Metric | Value | Calculation | | ------------------ | --------- | -------------------- | | View Contents | 8,420 | Product pages viewed | | Add to Carts | 1,347 | Items added to cart | | **VC to ATC Rate** | **16.0%** | 1,347 ÷ 8,420 × 100 | *** ## How It Works This rate is calculated by dividing total add to cart events by total view content events, then multiplying by 100. It measures how effectively your product pages convert browsers into shoppers with purchase intent. *** ## When to Use | Scenario | Action | | ------------------------------ | -------------------------------------------------- | | Low VC to ATC Rate (below 10%) | Improve product images, descriptions, or pricing | | High rate but low conversions | Focus on checkout friction, not product pages | | Comparing products | Identify which products convert browsers to buyers | | A/B testing | Measure product page layout changes | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------- | ---------------------------------- | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Denominator—total product views | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Numerator—total cart additions | | [ATC to IC Rate](/reference/metrics/funnel/engagement/atc-to-ic-rate) | Next funnel stage—cart to checkout | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # View Cart: Track Shopping Cart Views Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/view-cart Track view cart events on your Shopify store. Understand how often visitors view their shopping cart before checkout. View Cart measures the total number of times visitors viewed their shopping cart on your site. ## Formula **View Cart** = **COUNT** ( view\_cart events ) ### Formula Components | Metric | Definition | | --------------------- | -------------------------------------------------- | | **view\_cart events** | Each time a visitor views their shopping cart page | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your Shopify store recorded **4,230 view cart events** last month from **3,150 unique sessions**. | Period | View Carts | Add to Carts | Conversion | | ------ | ---------- | ------------ | ---------- | | Week 1 | 1,052 | 890 | 24.8% | | Week 2 | 1,089 | 912 | 25.1% | | Week 3 | 1,021 | 875 | 24.2% | | Week 4 | 1,068 | 901 | 24.6% | *** ## How It Works The Upstack pixel fires a view\_cart event whenever a visitor navigates to the shopping cart page. Each cart view is counted, including multiple views from the same session. This metric helps you understand shopping intent and cart abandonment patterns. *** ## When to Use | Scenario | Action | | ------------------------- | ---------------------------------------------------------- | | Cart abandonment analysis | Compare view carts to checkouts initiated to find drop-off | | UX optimization | Track if cart page changes affect view frequency | | Campaign evaluation | Measure which traffic sources generate cart engagement | | Funnel diagnostics | Identify bottlenecks between add-to-cart and checkout | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------- | --------------------------------------------- | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Previous funnel step — products added to cart | | [Initiate Checkouts](/reference/metrics/funnel/engagement/initiate-checkouts) | Next funnel step — checkout process started | | [Purchases](/reference/metrics/funnel/conversions/purchases) | Final conversion — completed orders | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # View Cart Value: Total Cart Value Tracked Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/view-cart-value Track the total monetary value of view cart events. Understand cart value patterns and optimize your Shopify store's checkout funnel. View Cart Value measures the total monetary value of all view cart events tracked by the Upstack pixel. ## Formula **View Cart Value** = **SUM** ( Cart Value ) **WHERE** event = view\_cart ### Formula Components | Metric | Definition | | ---------------------- | ----------------------------------------------------------------------- | | **Cart Value** | The monetary value of items in the cart when a visitor views their cart | | **event = view\_cart** | Filters to only include view cart events tracked by the pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your store tracked **\$47,500** in View Cart Value last month across 1,250 view cart events. | Period | View Cart Events | View Cart Value | Avg Cart Value | | ------ | ---------------- | --------------- | -------------- | | Week 1 | 285 | \$10,650 | \$37.37 | | Week 2 | 312 | \$12,480 | \$40.00 | | Week 3 | 298 | \$11,170 | \$37.48 | | Week 4 | 355 | \$13,200 | \$37.18 | *** ## How It Works View Cart Value sums the monetary value of all cart contents when visitors view their shopping cart. The value is captured from the Upstack pixel's `view_cart` event, which includes the total value of items in the cart at that moment. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------------------------------- | | Measuring cart engagement | Track how much potential revenue is sitting in carts | | Comparing to purchases | Identify revenue gap between carts viewed and purchases completed | | Analyzing abandoned value | Understand the dollar amount at risk from cart abandonment | | Funnel optimization | Monitor whether cart values trend upward with merchandising changes | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------- | ---------------------------------------------------- | | [View Cart](/reference/metrics/funnel/engagement/view-cart) | Count of view cart events (this metric tracks value) | | [Cost per View Cart](/reference/metrics/funnel/engagement/cost-per-view-cart) | Ad spend efficiency for driving cart views | | [Add to Cart Value](/reference/metrics/funnel/engagement/add-to-carts-value) | Value added to cart (earlier funnel stage) | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # View Content Rate: Product Page Discovery Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/view-content-rate Track what percentage of page views reach product pages. Learn the formula, see examples, and optimize your site navigation to improve product discovery. The percentage of page views that resulted in a product detail page view. ## Formula **View Content Rate** = ( [**View Contents**](/reference/metrics/funnel/engagement/view-contents) ÷ [**Page Views**](/reference/metrics/funnel/awareness/page-views) ) × 100 ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------- | ---------------------------------------------- | | [**View Contents**](/reference/metrics/funnel/engagement/view-contents) | Product detail page views tracked by the pixel | | [**Page Views**](/reference/metrics/funnel/awareness/page-views) | Total page load events across your site | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your store had **85,000 page views** and **34,000 product page views** last month, giving a View Content Rate of **40%**: | Traffic Source | Page Views | View Contents | VC Rate | | -------------- | ---------- | ------------- | ------- | | Organic Search | 32,000 | 15,360 | 48% | | Paid Social | 28,000 | 9,800 | 35% | | Direct | 25,000 | 8,840 | 35% | *** ## How It Works View Content Rate measures how effectively your site guides visitors to product pages. A higher rate means visitors are finding and viewing products rather than bouncing from landing pages or getting lost in navigation. *** ## When to Use | Scenario | Action | | -------------------------- | ------------------------------------------------- | | Navigation optimization | Low VC Rate suggests visitors can't find products | | Landing page analysis | Compare rates across entry points | | Traffic quality assessment | Higher VC Rate indicates more engaged visitors | | Category performance | Identify which collections drive product views | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------- | ------------------------------------------------- | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | The numerator—absolute count of product views | | [Page Views](/reference/metrics/funnel/awareness/page-views) | The denominator—total page loads | | [Add to Cart Rate](/reference/metrics/funnel/engagement/add-to-cart-rate) | Next funnel stage—product views to cart additions | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # View Contents: Product Page Views Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/view-contents Track how often customers view product detail pages. Measure top-of-funnel engagement and identify high-interest products to optimize your e-commerce marketing. The total number of times a product detail page was viewed on your store. ## Formula **View Contents** = **COUNT** ( Product Page Views ) ### Formula Components | Metric | Definition | | ---------------------- | --------------------------------------------------------------------------------------- | | **Product Page Views** | Each visit to a product page fires one View Content event, tracked by the Upstack pixel | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your skincare brand tracked **12,847 product page views** last week: | Product | Views | Share | | ---------------------- | ----- | ----- | | Vitamin C Serum | 4,250 | 33% | | Retinol Night Cream | 3,100 | 24% | | Hyaluronic Moisturizer | 2,890 | 23% | | SPF 50 Sunscreen | 2,607 | 20% | *** ## How It Works View Contents counts each time a visitor lands on a product detail page (PDP). This includes traffic from ads, organic search, email campaigns, and direct visits. Multiple views by the same visitor are counted separately. *** ## When to Use | Scenario | Action | | -------------------------- | ------------------------------------------------------ | | Identify trending products | Find which products attract the most interest | | Measure ad effectiveness | Compare views before and after campaign launch | | Calculate conversion rates | Divide Add to Carts or Purchases by View Contents | | Optimize merchandising | Feature high-view, low-conversion products differently | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------- | ----------------------------------- | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Next step in funnel after viewing | | [View Content Rate](/reference/metrics/funnel/engagement/view-content-rate) | Views as percentage of sessions | | [VC to ATC Rate](/reference/metrics/funnel/engagement/vc-to-atc-rate) | Conversion rate from views to carts | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # View Contents Value: Product View Revenue Source: https://docs.upstackdata.com/reference/metrics/funnel/engagement/view-contents-value Track total monetary value from product view events. Measure engagement quality by seeing which product views lead to higher-value conversions. Total monetary value associated with product detail page views tracked by the Upstack pixel. ## Formula **View Contents Value** = **SUM** ( View Content Event Values ) ### Formula Components | Metric | Definition | | ----------------------------- | ---------------------------------------------------- | | **View Content Event Values** | Monetary value attributed to each product view event | | Metadata | | | --------------- | ----------------------- | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Sum | *** ## Example Your summer collection pages generated **\$127,400** in attributed view value last month: | Product Category | View Value | Views | Avg Value/View | | ---------------- | ---------- | ------ | -------------- | | Dresses | \$48,200 | 12,400 | \$3.89 | | Accessories | \$34,100 | 9,800 | \$3.48 | | Footwear | \$28,600 | 6,200 | \$4.61 | | Swimwear | \$16,500 | 4,100 | \$4.02 | Footwear has the highest value per view, indicating visitors viewing those products convert at higher order values. *** ## How It Works View Contents Value sums the monetary value attributed to each product view event. This captures the downstream revenue impact of product page engagement. Higher values indicate that visitors viewing those products tend to complete purchases with larger order totals. *** ## When to Use | Scenario | Action | | ------------------------------- | -------------------------------------------------- | | Evaluating product page quality | Compare view values across product categories | | Prioritizing merchandising | Feature products with highest view-to-value ratios | | Assessing traffic quality | Higher view value suggests qualified visitors | | Campaign optimization | Target audiences driving high-value product views | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------- | ----------------------------------------------- | | [View Contents](/reference/metrics/funnel/engagement/view-contents) | Count of events (this metric sums their values) | | [Cost per View Content](/reference/metrics/funnel/engagement/cost-per-view-content) | Ad spend efficiency per view event | | [Add to Carts](/reference/metrics/funnel/engagement/add-to-carts) | Next funnel step after product views | | [Conversion Value](/reference/metrics/funnel/conversions/conversion-value) | Total revenue from completed conversions | [See all Engagement metrics →](/reference/metrics/funnel/engagement) # Session Metrics Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions Track user session behavior including duration, engagement, scroll depth, and interaction patterns across your Shopify store. Session metrics provide granular insights into how users interact with your site during each visit. Use these metrics to understand engagement quality, identify friction points, and optimize the user experience. ## Key Session Metrics Total number of sessions recorded Percentage of single-page sessions Average time spent per session Average number of pages viewed ## Engagement Metrics | Metric | Description | | --------------------------------------------------------------------------------- | ------------------------------ | | [Session Count](/reference/metrics/funnel/sessions/session-count) | Total sessions recorded | | [Bounce Rate](/reference/metrics/funnel/sessions/bounce-rate) | Single-page session percentage | | [Avg Session Duration](/reference/metrics/funnel/sessions/avg-session-duration) | Average time per session | | [Avg Pages per Session](/reference/metrics/funnel/sessions/avg-pages-per-session) | Pages viewed per session | | [Avg Max Scroll Depth](/reference/metrics/funnel/sessions/avg-max-scroll-depth) | How far users scroll | | [Avg Products Viewed](/reference/metrics/funnel/sessions/avg-products-viewed) | Products viewed per session | ## Interaction Metrics | Metric | Description | | ----------------------------------------------------------------------- | --------------------------- | | [Avg Active Time](/reference/metrics/funnel/sessions/avg-active-time) | Time actively engaging | | [Avg Idle Time](/reference/metrics/funnel/sessions/avg-idle-time) | Time spent idle | | [Avg Interactions](/reference/metrics/funnel/sessions/avg-interactions) | Total interaction events | | [Avg Clicks](/reference/metrics/funnel/sessions/avg-clicks) | Click events per session | | [Avg Keypresses](/reference/metrics/funnel/sessions/avg-keypresses) | Keyboard events per session | | [Avg Form Focuses](/reference/metrics/funnel/sessions/avg-form-focuses) | Form field interactions | ## Intent Metrics | Metric | Description | | ------------------------------------------------------------------------- | ----------------------------- | | [Intent Score](/reference/metrics/funnel/sessions/intent-score) | Predicted purchase intent | | [Peak Intent Score](/reference/metrics/funnel/sessions/peak-intent-score) | Highest intent during session | | [Session Score](/reference/metrics/funnel/sessions/session-score) | Overall session quality score | | [Avg Funnel Stage](/reference/metrics/funnel/sessions/avg-funnel-stage) | Average funnel progression | # Avg. Active Time: Engaged Time Per Session Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-active-time Track average time visitors are actively engaged per session. Excludes idle periods for a true engagement measure. Avg. Active Time measures the average time per session where visitors were actively engaged—moving mouse, typing, scrolling—excluding idle periods. ## Formula **Avg. Active Time** = **Total Active Time** ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | ------------------------------------------------- | | **Total Active Time** | Sum of active engagement time across all sessions | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Duration | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Sessions averaged **2 minutes 15 seconds** of active engagement out of a **3 minute 42 second** total duration. | Page Type | Avg. Duration | Avg. Active Time | Active % | | ------------- | ------------- | ---------------- | -------- | | Product Pages | 2:30 | 2:10 | 87% | | Blog Posts | 4:00 | 2:45 | 69% | | Checkout | 5:15 | 4:30 | 86% | *** ## How It Works Active time is measured when the Upstack Pixel detects user interaction signals: mouse movement, keyboard input, scrolling, or touch events. Periods without these signals are classified as idle time and excluded from this metric. *** ## When to Use | Scenario | Action | | -------------------------- | --------------------------------------------- | | Low active-to-total ratio | Investigate content engagement or page issues | | Comparing page performance | Identify which pages hold attention | | Checkout optimization | Ensure checkout flow keeps users active | | Content quality assessment | Measure actual reading/interaction time | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | --------------------------- | | [Avg. Session Duration](/reference/metrics/funnel/sessions/avg-session-duration) | Total time including idle | | [Avg. Idle Time](/reference/metrics/funnel/sessions/avg-idle-time) | Time spent inactive | | [Avg. Interactions](/reference/metrics/funnel/sessions/avg-interactions) | Number of engagement events | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Clicks: Click Events Per Session Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-clicks Average number of click events per session. Indicates how actively visitors navigate and interact with your site. Avg. Clicks measures the average number of click events per session, indicating how actively visitors navigate and interact with your site. ## Formula **Avg. Clicks** = **Total Click Events** ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | --------------------------------------- | | **Total Click Events** | Sum of all click events across sessions | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Sessions averaged **28 clicks** per visit across **12,000 sessions**. | Page Type | Sessions | Avg. Clicks | | ---------------- | -------- | ----------- | | Product Pages | 5,000 | 35 | | Collection Pages | 4,000 | 32 | | Checkout | 2,000 | 24 | | Blog | 1,000 | 18 | *** ## How It Works Every click event (links, buttons, images, interactive elements) is tracked by the Upstack Pixel. Higher click counts typically indicate active browsing and product exploration. Very low clicks may suggest visitors aren't finding what they need. *** ## When to Use | Scenario | Action | | ----------------------------- | --------------------------------------- | | Low clicks on navigation | Improve menu visibility and UX | | Product page analysis | Ensure CTAs are getting clicked | | Comparing page layouts | Test click-through on design variations | | Mobile vs. desktop comparison | Identify tap-ability issues on mobile | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ------------------------ | | [Avg. Interactions](/reference/metrics/funnel/sessions/avg-interactions) | Total interaction events | | [Avg. Rapid Clicks](/reference/metrics/funnel/sessions/avg-rapid-clicks) | Frustration indicator | | [Avg. Pages per Session](/reference/metrics/funnel/sessions/avg-pages-per-session) | Navigation depth | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Copy Actions: Text Copy Events Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-copy-actions Average text copy events per session. Can indicate interest in product details, prices, or contact information. Avg. Copy Actions measures how often visitors copy text per session, which can indicate interest in product details, prices, or contact information. ## Formula **Avg. Copy Actions** = **Total Copy Events** ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | ---------------------------------------- | | **Total Copy Events** | Count of text selection and copy actions | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Sessions averaged **0.8 copy actions** per visit, with product pages showing higher copy rates. | Page Type | Sessions | Avg. Copy Actions | | ---------------- | -------- | ----------------- | | Product Pages | 5,000 | 1.4 | | Contact Page | 500 | 2.1 | | FAQ | 1,000 | 0.9 | | Collection Pages | 3,500 | 0.3 | *** ## How It Works The Upstack Pixel detects when visitors select and copy text. This behavior often indicates comparison shopping (copying product names or prices), saving contact information, or sharing details with others. It's a high-intent signal for certain product types. *** ## When to Use | Scenario | Action | | ----------------------------- | --------------------------------------------------------- | | High copy on product pages | Visitors may be price comparing—add price match messaging | | Contact info copies | Ensure contact info is easy to find/click | | B2B product analysis | High copies may indicate evaluation for procurement | | Competitor research detection | Unusual copy patterns may indicate scrapers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ------------------------ | | [Avg. Interactions](/reference/metrics/funnel/sessions/avg-interactions) | Total interaction events | | [Intent Score](/reference/metrics/funnel/sessions/intent-score) | Purchase likelihood | | [Avg. Products Viewed](/reference/metrics/funnel/sessions/avg-products-viewed) | Product exploration | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Input Field Focus: Form Engagement Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-form-focuses Average input field focus events per session. Indicates engagement with search, forms, and checkout fields. Avg. Form Focuses measures how often visitors click into input fields per session, indicating engagement with search, forms, and checkout fields. ## Formula **Avg. Form Focuses** = **Total Input Focus Events** ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | ---------------------------------------------------------- | | **Total Input Focus Events** | Count of clicks into search boxes, forms, and input fields | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Sessions averaged **4.2 form focuses** per visit, with checkout showing highest form engagement. | Page Type | Sessions | Avg. Form Focuses | | ---------------------- | -------- | ----------------- | | Checkout | 2,000 | 12.5 | | Account | 1,500 | 6.8 | | Product (with options) | 4,000 | 2.1 | | Search-heavy pages | 2,500 | 8.4 | *** ## How It Works The Upstack Pixel tracks focus events on input fields, text areas, and select dropdowns. This metric helps understand form engagement patterns and can identify where visitors are attempting to interact with your site. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------- | | High focuses, low submission | Investigate form abandonment issues | | Checkout optimization | Reduce required form fields | | Search usage analysis | Measure how often visitors use search | | Newsletter signup analysis | Track form engagement vs. completion | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ------------------------ | | [Avg. Keypresses](/reference/metrics/funnel/sessions/avg-keypresses) | Actual typing in fields | | [Avg. Interactions](/reference/metrics/funnel/sessions/avg-interactions) | Total interaction events | | [Avg. Funnel Stage](/reference/metrics/funnel/sessions/avg-funnel-stage) | Checkout progress | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Funnel Stage: Purchase Funnel Progress Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-funnel-stage Average deepest funnel stage reached per session, from landing (0) to purchase (6). Higher means more visitors reach checkout. Avg. Funnel Stage measures the average deepest point in the purchase funnel visitors reached per session, from landing (0) through to purchase (6). ## Formula **Avg. Funnel Stage** = **SUM** ( Max Funnel Stage per Session ) ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | -------------------------------------------------- | | **Max Funnel Stage per Session** | Deepest funnel stage reached (0-6) in each session | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Sessions averaged a funnel stage of **2.4/6**, indicating most visitors view products but few reach checkout. | Funnel Stage | Description | Sessions | % of Total | | ------------ | ---------------- | -------- | ---------- | | 0 | Landing | 10,000 | 100% | | 1 | Browse | 7,500 | 75% | | 2 | Product View | 5,000 | 50% | | 3 | Add to Cart | 2,000 | 20% | | 4 | Begin Checkout | 800 | 8% | | 5 | Shipping/Payment | 500 | 5% | | 6 | Purchase | 300 | 3% | *** ## How It Works The purchase funnel is divided into stages: Landing (0), Browse (1), Product View (2), Add to Cart (3), Begin Checkout (4), Shipping/Payment (5), and Purchase (6). This metric averages the maximum stage reached across all sessions. *** ## When to Use | Scenario | Action | | ------------------------- | --------------------------------------------- | | Low average funnel stage | Improve product discovery | | Comparing traffic sources | Identify which channels drive funnel progress | | Checkout optimization | Focus on stages with largest drop-off | | Campaign performance | Measure how far campaign traffic progresses | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ------------------- | | [Intent Score](/reference/metrics/funnel/sessions/intent-score) | Purchase likelihood | | [Session Score](/reference/metrics/funnel/sessions/session-score) | Overall engagement | | [Avg. Products Viewed](/reference/metrics/funnel/sessions/avg-products-viewed) | Product exploration | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Idle Time: Inactive Time Per Session Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-idle-time Track average time visitors are inactive per session. High idle time may indicate distraction or difficulty finding content. Avg. Idle Time measures the average time per session where visitors were inactive, which may indicate distraction, confusion, or difficulty finding relevant content. ## Formula **Avg. Idle Time** = **Total Idle Time** ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | ---------------------------------------- | | **Total Idle Time** | Sum of inactive time across all sessions | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Duration | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Sessions averaged **1 minute 27 seconds** of idle time out of a **3 minute 42 second** total duration. | Traffic Source | Avg. Duration | Avg. Idle Time | Idle % | | -------------- | ------------- | -------------- | ------ | | Organic | 3:45 | 1:15 | 33% | | Paid Search | 2:30 | 0:45 | 30% | | Social | 4:00 | 2:00 | 50% | *** ## How It Works Idle time accumulates when the Upstack Pixel detects no user interaction for extended periods. This could indicate the user stepped away, switched tabs, or is reading content without interacting. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------- | | High idle time on checkout | Simplify checkout flow or add progress indicators | | Excessive idle on product pages | Review information architecture | | Social traffic high idle | Check if content matches social ad promise | | Comparing page performance | Identify confusing or complex pages | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | -------------------------------- | | [Avg. Session Duration](/reference/metrics/funnel/sessions/avg-session-duration) | Total time including active | | [Avg. Active Time](/reference/metrics/funnel/sessions/avg-active-time) | Time actively engaged | | [Bounce Rate](/reference/metrics/funnel/sessions/bounce-rate) | Sessions with minimal engagement | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Interactions: Total Engagement Events Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-interactions Average count of all interaction events per session including clicks, keypresses, scrolls, and more. Avg. Interactions measures the average count of all interaction events (clicks, keypresses, scrolls, etc.) per session. ## Formula **Avg. Interactions** = **Total Interaction Events** ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | -------------------------------------------------------- | | **Total Interaction Events** | Sum of all clicks, keypresses, scrolls, and other events | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Sessions averaged **47 interactions** per visit across **10,000 sessions**. | Device | Sessions | Avg. Interactions | | ------- | -------- | ----------------- | | Desktop | 4,000 | 62 | | Mobile | 5,000 | 38 | | Tablet | 1,000 | 45 | *** ## How It Works The Upstack Pixel tracks multiple interaction types: clicks, keypresses, scroll events, touch gestures, and more. This metric aggregates all interaction events to provide a complete picture of visitor activity. *** ## When to Use | Scenario | Action | | ---------------------------- | ---------------------------------------------- | | Comparing device experiences | Identify UX gaps across devices | | Content engagement analysis | Measure interactive vs. passive content | | Session quality assessment | Use alongside time metrics | | Bot detection | Unusual interaction patterns may indicate bots | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------- | ------------------------------------- | | [Avg. Clicks](/reference/metrics/funnel/sessions/avg-clicks) | Click interactions specifically | | [Session Score](/reference/metrics/funnel/sessions/session-score) | Interactions contribute to this score | | [Avg. Active Time](/reference/metrics/funnel/sessions/avg-active-time) | Time spent interacting | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Keypresses: Keyboard Input Per Session Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-keypresses Average keyboard interactions per session. Often indicates search usage or form engagement. Avg. Keypresses measures the average keyboard interactions per session, often indicating search usage or form engagement. ## Formula **Avg. Keypresses** = **Total Keypress Events** ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | ------------------------------------------------ | | **Total Keypress Events** | Sum of all keyboard input events across sessions | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Sessions averaged **12 keypresses** per visit, primarily from search and form usage. | Interaction Type | Sessions | Avg. Keypresses | | ----------------- | -------- | --------------- | | Used Search | 3,000 | 28 | | Checkout Sessions | 2,500 | 45 | | Browse Only | 6,500 | 3 | *** ## How It Works The Upstack Pixel tracks keyboard input events across forms, search boxes, and other input fields. High keypress counts typically indicate active search usage or form completion, while low counts suggest primarily browse-and-click behavior. *** ## When to Use | Scenario | Action | | ------------------------- | ---------------------------------------------- | | Low search usage | Improve search visibility or functionality | | Form abandonment analysis | High keypresses + low conversion = form issues | | Checkout optimization | Reduce required input fields | | Search quality assessment | Correlate keypresses with search success | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ------------------------ | | [Avg. Interactions](/reference/metrics/funnel/sessions/avg-interactions) | Total interaction events | | [Avg. Form Focuses](/reference/metrics/funnel/sessions/avg-form-focuses) | Input field engagement | | [Avg. Clicks](/reference/metrics/funnel/sessions/avg-clicks) | Click interactions | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Max Scroll Depth: Page Consumption Depth Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-max-scroll-depth Track how far visitors scroll on average per session. Higher scroll depth indicates visitors are consuming more content. Avg. Max Scroll Depth measures how far down the page visitors scroll on average per session, indicating content consumption depth. ## Formula **Avg. Max Scroll Depth** = **SUM** ( Max Scroll Depth per Session ) ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | ------------------------------------------------------ | | **Max Scroll Depth per Session** | Furthest scroll point reached in each session (0-100%) | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Visitors scrolled to **72% of page content** on average across **8,000 sessions**. | Page Type | Sessions | Avg. Scroll Depth | | ---------------- | -------- | ----------------- | | Homepage | 3,000 | 65% | | Product Pages | 3,500 | 82% | | Blog Posts | 1,000 | 78% | | Collection Pages | 500 | 58% | *** ## How It Works The Upstack Pixel tracks the maximum scroll position reached during each session. This is expressed as a percentage of the total page height. Pages with content below the fold are better measured by scroll depth than time on page. *** ## When to Use | Scenario | Action | | ------------------------------ | ---------------------------------------- | | Low scroll depth on long pages | Move important content higher | | Product page analysis | Ensure key info is above fold | | Blog content optimization | Measure how much content is consumed | | Landing page testing | Compare scroll behavior between variants | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------- | ---------------------------- | | [Session Score](/reference/metrics/funnel/sessions/session-score) | Overall engagement composite | | [Avg. Page Score](/reference/metrics/funnel/sessions/avg-page-score) | Per-page engagement depth | | [Avg. Scroll Ups](/reference/metrics/funnel/sessions/avg-scroll-ups) | Re-reading behavior | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Page Score: Per-Page Engagement Score Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-page-score Average engagement score per page within sessions. Reflects how deeply visitors interact with each page they visit. Avg. Page Score measures the average engagement score per page within sessions, reflecting how deeply visitors interact with each page they visit. ## Formula **Avg. Page Score** = **SUM** ( Page Scores ) ÷ **Total Page Views** ### Formula Components | Metric | Definition | | -------------------- | ------------------------------------------------------- | | **Page Scores** | Individual engagement scores (0-100) for each page view | | **Total Page Views** | Number of pages viewed across all sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Pages averaged an engagement **score of 58/100** across **42,000 page views**. | Page Type | Page Views | Avg. Page Score | | ---------------- | ---------- | --------------- | | Product Pages | 18,000 | 68 | | Collection Pages | 12,000 | 52 | | Blog Posts | 8,000 | 61 | | Homepage | 4,000 | 45 | *** ## How It Works Each page view receives a score based on time on page, scroll depth, and interactions on that specific page. Unlike Session Score which looks at the whole visit, Page Score helps identify which individual pages drive engagement. *** ## When to Use | Scenario | Action | | ------------------------ | ------------------------------------ | | Low scores on key pages | Optimize content and layout | | Comparing page templates | Identify best-performing designs | | Content prioritization | Focus on improving low-score pages | | A/B test evaluation | Compare page scores between variants | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ------------------------------ | | [Session Score](/reference/metrics/funnel/sessions/session-score) | Overall session engagement | | [Avg. Max Scroll Depth](/reference/metrics/funnel/sessions/avg-max-scroll-depth) | Scroll component of page score | | [Avg. Clicks](/reference/metrics/funnel/sessions/avg-clicks) | Interaction component | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Pages per Session: Page Views Per Visit Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-pages-per-session Track average pages viewed per session. More pages suggest higher engagement and active browsing behavior. Avg. Pages per Session measures the average number of pages a visitor views during a single session, indicating browsing depth and engagement. ## Formula **Avg. Pages per Session** = **Total Page Views** ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | ----------------------------------------- | | **Total Page Views** | Sum of all page views across all sessions | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Your store averaged **4.2 pages per session** across **10,000 sessions**. | Traffic Source | Sessions | Pages/Session | | -------------- | -------- | ------------- | | Organic Search | 4,000 | 5.1 | | Paid Social | 3,000 | 3.2 | | Email | 2,000 | 4.8 | | Direct | 1,000 | 3.9 | *** ## How It Works Each distinct page load within a session is counted. Higher pages per session typically indicates visitors are exploring your catalog, comparing products, or moving through the purchase funnel. *** ## When to Use | Scenario | Action | | -------------------------- | -------------------------------------------- | | Low pages/session | Improve internal linking and recommendations | | Comparing traffic sources | Identify which channels drive exploration | | Site redesign impact | Measure navigation improvements | | Product discovery analysis | Evaluate catalog browsability | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | -------------------------- | | [Session Count](/reference/metrics/funnel/sessions/session-count) | Total sessions | | [Avg. Session Duration](/reference/metrics/funnel/sessions/avg-session-duration) | Time per session | | [Avg. Products Viewed](/reference/metrics/funnel/sessions/avg-products-viewed) | Product pages specifically | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Pinch Zooms: Mobile Zoom Gestures Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-pinch-zooms Average pinch-to-zoom gestures per session on mobile. Often indicates interest in product images or small text. Avg. Pinch Zooms measures pinch-to-zoom gestures per session on mobile devices, often indicating interest in product images or difficulty reading small text. ## Formula **Avg. Pinch Zooms** = **Total Pinch Zoom Events** ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | ------------------------------------------------- | | **Total Pinch Zoom Events** | Count of pinch-to-zoom gestures on mobile devices | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Mobile sessions averaged **1.8 pinch zooms** per visit, primarily on product detail pages. | Page Type | Mobile Sessions | Avg. Pinch Zooms | | ---------------- | --------------- | ---------------- | | Product Pages | 3,000 | 3.2 | | Size Guide | 500 | 4.1 | | Collection Pages | 2,500 | 0.8 | | Blog | 1,000 | 0.5 | *** ## How It Works The Upstack Pixel detects pinch-to-zoom gestures on touch devices. While zooming on product images is a positive engagement signal, excessive zooming on text or UI may indicate the content is too small or images lack detail. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------- | | High zooms on product images | Provide native image zoom functionality | | High zooms on text content | Increase font size or improve mobile layout | | Comparing product categories | Identify which products need better imagery | | Mobile UX audit | Ensure content is legible at default zoom | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | --------------------------------------- | | [Avg. Swipes](/reference/metrics/funnel/sessions/avg-swipes) | Another mobile gesture | | [Avg. Interactions](/reference/metrics/funnel/sessions/avg-interactions) | Total interaction events | | [Intent Score](/reference/metrics/funnel/sessions/intent-score) | Zooming on products may indicate intent | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Products Viewed: Product Exploration Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-products-viewed Average distinct product pages viewed per session. More products viewed often indicates active shopping intent. Avg. Products Viewed measures the average number of distinct product pages visitors browse per session, indicating shopping intent and catalog exploration. ## Formula **Avg. Products Viewed** = **Total Distinct Product Views** ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | ------------------------------------------------ | | **Total Distinct Product Views** | Count of unique product pages viewed per session | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Sessions averaged **3.8 products viewed** per visit, with converting sessions showing higher exploration. | Session Outcome | Sessions | Avg. Products Viewed | | --------------- | -------- | -------------------- | | Purchased | 500 | 6.2 | | Added to Cart | 2,000 | 4.8 | | Browse Only | 7,500 | 2.9 | *** ## How It Works The Upstack Pixel tracks unique product page views within each session. Multiple views of the same product count as one. Higher product views typically correlate with purchase intent and conversion likelihood. *** ## When to Use | Scenario | Action | | ---------------------------- | --------------------------------------------- | | Low products viewed | Improve product recommendations | | Comparing by traffic source | Identify channels driving product exploration | | Collection page optimization | Measure click-through to products | | Cross-sell effectiveness | Track exploration after purchase | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ------------------------------ | | [Avg. Pages per Session](/reference/metrics/funnel/sessions/avg-pages-per-session) | Total pages, not just products | | [Avg. Funnel Stage](/reference/metrics/funnel/sessions/avg-funnel-stage) | Funnel progress | | [Intent Score](/reference/metrics/funnel/sessions/intent-score) | Purchase likelihood | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Rapid Clicks: Frustration Indicator Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-rapid-clicks Average rapid successive clicks per session. Elevated counts may indicate frustration with unresponsive elements. Avg. Rapid Clicks measures quick successive clicks per session—a potential indicator of user frustration with unresponsive or confusing elements. ## Formula **Avg. Rapid Clicks** = **Total Rapid Click Events** ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | -------------------------------------------------------------- | | **Total Rapid Click Events** | Count of clicks occurring in rapid succession (\< 500ms apart) | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Sessions averaged **2.3 rapid clicks** per visit, with checkout showing elevated frustration. | Page Type | Sessions | Avg. Rapid Clicks | | ---------------- | -------- | ----------------- | | Checkout | 2,000 | 4.8 | | Product Pages | 5,000 | 2.1 | | Collection Pages | 3,000 | 1.5 | | Homepage | 2,000 | 1.2 | *** ## How It Works The Upstack Pixel detects when visitors click rapidly in the same area, typically indicating they expected a response but didn't get one. This often points to slow-loading elements, broken buttons, or confusing UI. *** ## When to Use | Scenario | Action | | ----------------------------- | --------------------------------------------- | | High rapid clicks on buttons | Check for JavaScript errors or slow responses | | Checkout frustration | Review form validation and button states | | Mobile vs. desktop comparison | Identify tap-ability issues | | Page performance issues | Correlate with load times | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ----------------------------- | | [Avg. Clicks](/reference/metrics/funnel/sessions/avg-clicks) | Normal click behavior | | [Avg. Interactions](/reference/metrics/funnel/sessions/avg-interactions) | Total interaction events | | [Bounce Rate](/reference/metrics/funnel/sessions/bounce-rate) | Frustration may cause bounces | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Scroll Ups: Backtracking Behavior Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-scroll-ups Average scroll-up actions per session. Can indicate re-reading content or navigation backtracking. Avg. Scroll Ups measures how often visitors scroll back up per session, which can indicate re-reading content or backtracking in navigation. ## Formula **Avg. Scroll Ups** = **Total Scroll-Up Events** ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | ---------------------------------------------- | | **Total Scroll-Up Events** | Count of upward scroll actions across sessions | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Sessions averaged **8 scroll-ups** per visit across product pages. | Page Type | Sessions | Avg. Scroll Ups | | ---------------- | -------- | --------------- | | Product Pages | 5,000 | 12 | | Blog Posts | 2,000 | 6 | | Collection Pages | 3,000 | 4 | *** ## How It Works The Upstack Pixel tracks scroll direction changes. Scrolling back up can indicate visitors are comparing information, re-reading details, or having difficulty finding what they need. Moderate scroll-ups are normal; excessive counts may suggest content organization issues. *** ## When to Use | Scenario | Action | | ------------------------------------- | -------------------------------------------------- | | Excessive scroll-ups on product pages | Reorganize product information | | Comparing page layouts | Test information hierarchy changes | | Content quality assessment | High scroll-ups may indicate confusing content | | Checkout flow analysis | Scroll-ups during checkout may indicate hesitation | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ------------------------ | | [Avg. Max Scroll Depth](/reference/metrics/funnel/sessions/avg-max-scroll-depth) | How far visitors scroll | | [Avg. Interactions](/reference/metrics/funnel/sessions/avg-interactions) | Total interaction events | | [Session Score](/reference/metrics/funnel/sessions/session-score) | Overall engagement | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Session Duration: Time Spent Per Visit Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-session-duration Track average time visitors spend on your site per session. Longer sessions indicate higher engagement and content relevance. Avg. Session Duration measures the average total time visitors spend per session on your site, indicating overall engagement depth. ## Formula **Avg. Session Duration** = **Total Session Time** ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | --------------------------------------- | | **Total Session Time** | Sum of all session durations in seconds | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Duration | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Your store's **8,500 sessions** averaged **3 minutes 42 seconds** (222 seconds) per visit. | Device | Sessions | Avg. Duration | | ------- | -------- | ------------- | | Desktop | 3,400 | 4:15 | | Mobile | 4,200 | 3:05 | | Tablet | 900 | 3:45 | *** ## How It Works Session duration is measured from the first page load to the last tracked event. Longer durations typically correlate with higher purchase intent and conversion rates. The metric includes both active engagement and idle time. *** ## When to Use | Scenario | Action | | --------------------------- | ---------------------------------------------- | | Declining session duration | Review page load speed and content quality | | Comparing traffic sources | Identify which channels bring engaged visitors | | Content optimization | Measure impact of content changes | | Mobile vs. desktop analysis | Identify device-specific UX issues | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ------------------------------------- | | [Avg. Active Time](/reference/metrics/funnel/sessions/avg-active-time) | Time actively engaged (excludes idle) | | [Avg. Idle Time](/reference/metrics/funnel/sessions/avg-idle-time) | Time spent inactive | | [Avg. Pages per Session](/reference/metrics/funnel/sessions/avg-pages-per-session) | Pages viewed per session | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Swipes: Mobile Gesture Count Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-swipes Average swipe gestures per session on mobile. Indicates navigation through carousels, galleries, or pages. Avg. Swipes measures swipe gestures per session on mobile devices, indicating navigation through carousels, galleries, or between pages. ## Formula **Avg. Swipes** = **Total Swipe Events** ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | ----------------------------------------- | | **Total Swipe Events** | Count of swipe gestures on mobile devices | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Mobile sessions averaged **6.2 swipes** per visit, with product pages showing high carousel engagement. | Page Type | Mobile Sessions | Avg. Swipes | | ---------------- | --------------- | ----------- | | Product Pages | 3,000 | 9.4 | | Collection Pages | 2,500 | 5.8 | | Homepage | 1,500 | 4.2 | *** ## How It Works The Upstack Pixel tracks swipe gestures on touch devices. Swipes typically occur on image carousels, product galleries, and horizontally-scrolling content. High swipe counts indicate engagement with visual content. *** ## When to Use | Scenario | Action | | ------------------------------- | --------------------------------------- | | Low swipes on product carousels | Add swipe affordance indicators | | Mobile UX optimization | Measure carousel engagement | | Image gallery performance | Compare swipe rates across products | | Mobile vs. desktop behavior | Understand mobile-specific interactions | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ------------------------ | | [Avg. Pinch Zooms](/reference/metrics/funnel/sessions/avg-pinch-zooms) | Another mobile gesture | | [Avg. Interactions](/reference/metrics/funnel/sessions/avg-interactions) | Total interaction events | | [Avg. Products Viewed](/reference/metrics/funnel/sessions/avg-products-viewed) | Product exploration | [See all Session metrics →](/reference/metrics/funnel/sessions) # Avg. Visit Count: Visitor Loyalty Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/avg-visit-count Average total lifetime visits per session visitor. Indicates returning visitor behavior and customer loyalty. Avg. Visit Count measures the average total number of site visits across a visitor's lifetime, indicating returning visitor behavior and loyalty. ## Formula **Avg. Visit Count** = **SUM** ( Visitor Lifetime Visits ) ÷ [**Session Count**](/reference/metrics/funnel/sessions/session-count) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | -------------------------------------------------- | | **Visitor Lifetime Visits** | Total visits for each visitor across their history | | [**Session Count**](/reference/metrics/funnel/sessions/session-count) | Total number of sessions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Sessions averaged **2.4 lifetime visits** per visitor, with email traffic showing highest loyalty. | Traffic Source | Sessions | Avg. Visit Count | | -------------- | -------- | ---------------- | | Email | 2,000 | 5.8 | | Direct | 3,000 | 4.2 | | Organic | 4,000 | 2.1 | | Paid Social | 1,000 | 1.3 | *** ## How It Works The Upstack Pixel tracks visitor identity across sessions. This metric shows the average number of total site visits for visitors in the selected period. Higher values indicate more returning visitors versus first-time visitors. *** ## When to Use | Scenario | Action | | -------------------------- | ------------------------------------------- | | Low visit count | Focus on retention and re-engagement | | Comparing channels | Identify which sources drive loyalty | | Email vs. paid comparison | Measure relationship-building effectiveness | | New vs. returning analysis | Understand visitor composition | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------- | ------------------- | | [Session Count](/reference/metrics/funnel/sessions/session-count) | Total sessions | | [Session Score](/reference/metrics/funnel/sessions/session-score) | Session quality | | [Intent Score](/reference/metrics/funnel/sessions/intent-score) | Purchase likelihood | [See all Session metrics →](/reference/metrics/funnel/sessions) # Session Bounce Rate: Single-Page Visit Percentage Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/bounce-rate Track the percentage of sessions that bounced. Identify landing page issues and optimize for deeper engagement. Bounce Rate measures the percentage of sessions where the visitor viewed only one page and left quickly, indicating poor landing page relevance. ## Formula **Bounce Rate** = ( **Bounced Sessions** ÷ **Total Sessions** ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------- | --------------------------------------------------- | | **Bounced Sessions** | Sessions with only one page view and short duration | | [**Total Sessions**](/reference/metrics/funnel/sessions/session-count) | Total number of visits to your website | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your landing page received **5,000 sessions** with **2,250 bounces**, resulting in a **45% bounce rate**. | Landing Page | Sessions | Bounces | Bounce Rate | | ------------------ | -------- | ------- | ----------- | | Homepage | 2,000 | 700 | 35% | | Product Collection | 1,500 | 600 | 40% | | Blog Post | 1,000 | 650 | 65% | | Sale Page | 500 | 300 | 60% | *** ## How It Works A bounce occurs when a visitor lands on a page and leaves without viewing any other pages or engaging meaningfully. High bounce rates often signal mismatched ad targeting, slow page loads, or poor content relevance. *** ## When to Use | Scenario | Action | | --------------------------- | --------------------------------------------- | | High bounce on paid traffic | Review ad copy vs. landing page alignment | | Product page bounces | Check page load speed and above-fold content | | Blog post performance | Evaluate content quality and internal linking | | A/B testing landing pages | Compare bounce rates between variants | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | ----------------------------------------- | | [Bounce Rate (No Interaction)](/reference/metrics/funnel/sessions/bounce-rate-no-interaction) | Stricter measure excluding any engagement | | [Session Count](/reference/metrics/funnel/sessions/session-count) | Total sessions for context | | [Avg. Session Duration](/reference/metrics/funnel/sessions/avg-session-duration) | Time on site indicates engagement depth | [See all Session metrics →](/reference/metrics/funnel/sessions) # Bounce Rate (No Interaction): Zero-Engagement Sessions Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/bounce-rate-no-interaction Track sessions with zero meaningful interactions. A stricter bounce measure that identifies completely disengaged visitors. Bounce Rate (No Interaction) measures sessions where visitors left without any clicks, scrolls, or engagement events—a stricter disengagement signal than standard bounce rate. ## Formula **Bounce Rate (No Interaction)** = ( **Zero-Interaction Sessions** ÷ **Total Sessions** ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------- | ------------------------------------------------------ | | **Zero-Interaction Sessions** | Sessions with no clicks, scrolls, or engagement events | | [**Total Sessions**](/reference/metrics/funnel/sessions/session-count) | Total number of visits to your website | | Metadata | | | --------------- | ----------------------- | | **Type** | Percentage | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Ratio | *** ## Example Your site had **10,000 sessions** with **1,500 zero-interaction bounces**, resulting in a **15% no-interaction bounce rate**. | Traffic Source | Sessions | No-Interact Bounces | Rate | | -------------- | -------- | ------------------- | ---- | | Organic Search | 4,000 | 400 | 10% | | Paid Social | 3,000 | 600 | 20% | | Direct | 2,000 | 300 | 15% | | Email | 1,000 | 200 | 20% | *** ## How It Works Unlike standard bounce rate, this metric only counts sessions where the visitor took absolutely no action—no scrolling, no mouse movement, no clicks. This indicates visitors who likely misclicked or found the page completely irrelevant. *** ## When to Use | Scenario | Action | | --------------------------- | -------------------------------------------------- | | High no-interaction bounces | Check for technical issues or mismatched targeting | | Bot traffic detection | Unusually high rates may indicate bot activity | | Ad fraud investigation | Compare across traffic sources | | Landing page optimization | Identify pages that fail to capture any attention | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | -------------------------------------- | | [Bounce Rate](/reference/metrics/funnel/sessions/bounce-rate) | Standard bounce rate (less strict) | | [Session Count](/reference/metrics/funnel/sessions/session-count) | Total sessions for context | | [Avg. Interactions](/reference/metrics/funnel/sessions/avg-interactions) | Interaction depth for engaged sessions | [See all Session metrics →](/reference/metrics/funnel/sessions) # Intent Score: Purchase Likelihood Score Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/intent-score Estimated purchase likelihood scored 0-100 based on behavioral signals like product views, cart actions, and checkout progress. Intent Score estimates the likelihood a visitor will purchase, scored 0-100 based on behavioral signals like product views, add-to-cart actions, and checkout progress. ## Formula **Intent Score** = **Weighted Model** ( Product Views + Cart Actions + Checkout Progress + Engagement Signals ) ### Formula Components | Metric | Definition | | ---------------------- | ------------------------------------------------- | | **Product Views** | Number and depth of product page visits | | **Cart Actions** | Add-to-cart, cart views, and cart modifications | | **Checkout Progress** | Steps completed in checkout flow | | **Engagement Signals** | Time on product pages, scroll depth, interactions | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Sessions averaged an **intent score of 34/100**, with high-intent sessions converting at **12%**. | Intent Score Range | Sessions | Conversion Rate | | --------------------- | -------- | --------------- | | 80-100 (High Intent) | 1,200 | 28% | | 50-79 (Medium Intent) | 3,500 | 8% | | 20-49 (Low Intent) | 4,000 | 2% | | 0-19 (Browsing) | 3,300 | 0.3% | *** ## How It Works The Intent Score model analyzes behavioral patterns correlated with purchase completion. Visitors who view multiple products, add items to cart, and progress through checkout receive higher scores. The score updates in real-time as visitors take actions. *** ## When to Use | Scenario | Action | | ------------------------- | ----------------------------------------- | | Retargeting segmentation | Target high-intent non-converters | | Real-time personalization | Show urgency to high-intent visitors | | Traffic source quality | Compare intent scores across channels | | Checkout optimization | Analyze why high-intent visitors drop off | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------- | ---------------------------- | | [Peak Intent Score](/reference/metrics/funnel/sessions/peak-intent-score) | Highest intent reached | | [Session Score](/reference/metrics/funnel/sessions/session-score) | Overall engagement composite | | [Avg. Funnel Stage](/reference/metrics/funnel/sessions/avg-funnel-stage) | Funnel progress | [See all Session metrics →](/reference/metrics/funnel/sessions) # Peak Intent Score: Maximum Purchase Intent Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/peak-intent-score The highest purchase intent score reached at any point in a session. Captures the moment of highest buying interest. Peak Intent Score captures the maximum purchase intent observed at any point in a session, revealing the moment of highest buying interest. ## Formula **Peak Intent Score** = **MAX** ( Intent Score ) **per Session** ### Formula Components | Metric | Definition | | ------------------------------------------------------------------- | ------------------------------------------- | | [**Intent Score**](/reference/metrics/funnel/sessions/intent-score) | Real-time purchase likelihood score (0-100) | | **MAX per Session** | Highest score reached during the session | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Sessions reached an average **peak intent of 52/100**, even though final intent averaged only 34. | Exit Point | Sessions | Avg. Peak Intent | Final Intent | | ------------ | -------- | ---------------- | ------------ | | Checkout | 2,000 | 85 | 78 | | Cart | 3,000 | 68 | 45 | | Product Page | 4,000 | 42 | 28 | | Collection | 3,000 | 25 | 18 | *** ## How It Works Peak Intent Score tracks the high-water mark of purchase intent during a session. Even if a visitor's intent drops (e.g., they remove items from cart), the peak captures how close they came to converting. This helps identify "almost buyers." *** ## When to Use | Scenario | Action | | --------------------------- | ------------------------------------- | | High peak, low final intent | Investigate cart abandonment causes | | Retargeting "almost buyers" | Target visitors with high peak scores | | Checkout friction analysis | Compare peak vs. final at each step | | Recovery campaign targeting | Focus on high-peak abandoners | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | -------------------------- | | [Intent Score](/reference/metrics/funnel/sessions/intent-score) | Current/final intent level | | [Session Score](/reference/metrics/funnel/sessions/session-score) | Overall engagement | | [Avg. Funnel Stage](/reference/metrics/funnel/sessions/avg-funnel-stage) | How far visitors progress | [See all Session metrics →](/reference/metrics/funnel/sessions) # Session Count: Total Website Visits Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/session-count Track total sessions on your website. Understand traffic volume and trends to measure marketing impact and site reach. Session Count measures the total number of visits to your website tracked by the Upstack Pixel in the selected period. ## Formula **Session Count** = **COUNT** ( Sessions ) ### Formula Components | Metric | Definition | | ------------ | ---------------------------------------------------------------------- | | **Sessions** | Individual visits to your website, defined by a unique browser session | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Count | *** ## Example Your e-commerce store received **12,450 sessions** in March. | Week | Sessions | Change | | ------ | -------- | ------ | | Week 1 | 2,890 | — | | Week 2 | 3,120 | +8% | | Week 3 | 3,340 | +7% | | Week 4 | 3,100 | -7% | *** ## How It Works A session starts when a visitor lands on your site and ends after 30 minutes of inactivity or at midnight. Each new session is counted once, regardless of how many pages the visitor views. *** ## When to Use | Scenario | Action | | ------------------------- | --------------------------------------------------- | | Traffic dropped suddenly | Investigate UTM sources and ad campaigns | | Evaluating campaign reach | Compare session volume before/after launch | | Capacity planning | Monitor traffic trends for infrastructure decisions | | Benchmarking growth | Track month-over-month session trends | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ----------------------------------------- | | [Bounce Rate](/reference/metrics/funnel/sessions/bounce-rate) | Percentage of sessions with no engagement | | [Avg. Session Duration](/reference/metrics/funnel/sessions/avg-session-duration) | How long visitors stay per session | | [Avg. Pages per Session](/reference/metrics/funnel/sessions/avg-pages-per-session) | Depth of engagement per visit | [See all Session metrics →](/reference/metrics/funnel/sessions) # Session Score: Composite Engagement Score Source: https://docs.upstackdata.com/reference/metrics/funnel/sessions/session-score A 0-100 composite score measuring visitor engagement based on time, interactions, scroll depth, and funnel progress. Session Score is a composite score (0-100) measuring how engaged a visitor was during a session, based on time, interactions, scroll depth, and funnel progress. ## Formula **Session Score** = **Weighted Composite** ( Time Score + Interaction Score + Scroll Score + Funnel Score ) ### Formula Components | Metric | Definition | | --------------------- | ----------------------------------------------------- | | **Time Score** | Engagement based on active session duration | | **Interaction Score** | Engagement based on clicks, scrolls, and other events | | **Scroll Score** | Engagement based on scroll depth | | **Funnel Score** | Progress through the purchase funnel | | Metadata | | | --------------- | ----------------------- | | **Type** | Number | | **Data Source** | [Upstack Pixel](/pixel) | | **Aggregation** | Average | *** ## Example Your sessions averaged a **score of 62/100**, indicating moderate engagement. | Traffic Source | Sessions | Avg. Session Score | | -------------- | -------- | ------------------ | | Email | 2,000 | 74 | | Organic Search | 4,000 | 65 | | Paid Search | 3,000 | 58 | | Social | 1,000 | 48 | *** ## How It Works The Session Score combines multiple engagement signals into a single metric. Sessions with longer active time, more interactions, deeper scroll depth, and further funnel progress receive higher scores. This provides a holistic view of session quality beyond any single metric. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------ | | Comparing traffic source quality | Identify channels driving engaged visitors | | Segmenting high-value visitors | Target re-marketing at high-score sessions | | Evaluating site changes | Measure overall engagement impact | | Identifying problem areas | Find pages with low average scores | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | -------------------------------- | | [Intent Score](/reference/metrics/funnel/sessions/intent-score) | Purchase likelihood specifically | | [Avg. Page Score](/reference/metrics/funnel/sessions/avg-page-score) | Per-page engagement | | [Avg. Funnel Stage](/reference/metrics/funnel/sessions/avg-funnel-stage) | Funnel progress component | [See all Session metrics →](/reference/metrics/funnel/sessions) # Orders Metrics: Track Revenue, Orders, and Profitability Source: https://docs.upstackdata.com/reference/metrics/orders Track orders and revenue metrics in Upstack. View 314 metrics including Revenue, AOV, COGS, Contribution Margin, and Customer Segmentation with formulas and examples. Orders metrics track your Shopify store's revenue, order volume, and profitability. These metrics help you understand sales performance, customer behavior, and margin analysis across new and returning customers. **Data Source:** [Shopify](/sources/catalog/shopify)\ **Metrics in Category:** 314 ## Subcategories | Subcategory | Metrics | Description | | -------------------------------------------------------------------- | ------- | ------------------------------------------------- | | [Order Counts](/reference/metrics/orders/counts) | 10 | Order volume, units sold, and subscription orders | | [Revenue](/reference/metrics/orders/revenue) | 13 | Total, gross, and net revenue by customer type | | [Average Order Value](/reference/metrics/orders/aov) | 10 | AOV calculations across revenue types | | [Customers](/reference/metrics/orders/customers) | 8 | Customer counts and new vs returning rates | | [Adjustments](/reference/metrics/orders/adjustments) | 58 | Refunds, discounts, shipping, and tax | | [Cost of Goods Sold](/reference/metrics/orders/cogs) | 26 | Product costs and variable costs | | [Fulfillment Costs](/reference/metrics/orders/fulfillment) | 17 | Handling, shipping, and fulfillment expenses | | [Transaction Costs](/reference/metrics/orders/transaction) | 13 | Payment gateway and transaction fees | | [Contribution Margin](/reference/metrics/orders/contribution-margin) | 63 | CM1-CM4 margin calculations per order | | [Product Margin](/reference/metrics/orders/product-margin) | 6 | Gross profit and product-level margins | | [Performance](/reference/metrics/orders/performance) | 58 | ROAS, MER, CPA, and RAAD metrics | | [Lifetime Value](/reference/metrics/orders/ltv) | 32 | LTV and cohort analysis metrics | ## When to Use * **Order Counts:** When measuring order volume, units sold, or subscription acquisition * **Revenue:** When analyzing top-line sales performance by customer segment * **Average Order Value:** When optimizing cart value or comparing customer segments * **Customers:** When tracking customer acquisition and retention rates * **Adjustments:** When analyzing refund rates, discount impact, or tax/shipping revenue * **Cost of Goods Sold:** When calculating product margins and cost structures * **Fulfillment Costs:** When analyzing fulfillment efficiency and shipping expenses * **Transaction Costs:** When evaluating payment processing costs * **Contribution Margin:** When measuring profit contribution at different levels (CM1-CM4) * **Product Margin:** When analyzing gross profit and product-level profitability * **Performance:** When evaluating marketing efficiency with ROAS, MER, or CPA * **Lifetime Value:** When analyzing customer value and retention over time ## All Orders Metrics ### Order Counts | Metric | Description | | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | [Orders](/reference/metrics/orders/counts/orders) | Total number of orders placed | | [Units Sold](/reference/metrics/orders/counts/units-sold) | Total product units sold | | [New Customer Units Sold](/reference/metrics/orders/counts/new-customer-units-sold) | Units sold to new customers | | [Returning Customer Units Sold](/reference/metrics/orders/counts/returning-customer-units-sold) | Units sold to returning customers | | [Units Per Order](/reference/metrics/orders/counts/units-per-order) | Average units per order | | [New Customer Units Per Order](/reference/metrics/orders/counts/new-customer-units-per-order) | Average units per new customer order | | [Returning Customer Units Per Order](/reference/metrics/orders/counts/returning-customer-units-per-order) | Average units per returning customer order | | [Subscription Initial Purchase Orders](/reference/metrics/orders/counts/subscription-initial-purchase-orders) | First-time subscription orders | | [Subscription Initial Purchase %](/reference/metrics/orders/counts/subscription-initial-purchase-percent) | Percentage of orders that are subscription initial purchases | ### Revenue | Metric | Description | | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | Sum of all order revenue | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Revenue before discounts and refunds | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds | | [New Customer Total Revenue](/reference/metrics/orders/revenue/new-customer-total-revenue) | Total revenue from new customers | | [New Customer Gross Revenue](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Gross revenue from new customers | | [New Customer Net Revenue](/reference/metrics/orders/revenue/new-customer-net-revenue) | Net revenue from new customers | | [Returning Customer Total Revenue](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Total revenue from returning customers | | [Returning Customer Gross Revenue](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Gross revenue from returning customers | | [Returning Customer Net Revenue](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Net revenue from returning customers | | [Subscription Initial Purchase Revenue](/reference/metrics/orders/revenue/subscription-initial-purchase-revenue) | Revenue from first-time subscription orders | ### Average Order Value | Metric | Description | | ------------------------------------------------------------------------------------------ | --------------------------------------- | | [Total AOV](/reference/metrics/orders/aov/total-aov) | Average order value using total revenue | | [Gross AOV](/reference/metrics/orders/aov/gross-aov) | Average order value using gross revenue | | [Net AOV](/reference/metrics/orders/aov/net-aov) | Average order value using net revenue | | [New Customer Total AOV](/reference/metrics/orders/aov/new-customer-total-aov) | Total AOV for new customers | | [New Customer Gross AOV](/reference/metrics/orders/aov/new-customer-gross-aov) | Gross AOV for new customers | | [New Customer Net AOV](/reference/metrics/orders/aov/new-customer-net-aov) | Net AOV for new customers | | [Returning Customer Total AOV](/reference/metrics/orders/aov/returning-customer-total-aov) | Total AOV for returning customers | | [Returning Customer Gross AOV](/reference/metrics/orders/aov/returning-customer-gross-aov) | Gross AOV for returning customers | | [Returning Customer Net AOV](/reference/metrics/orders/aov/returning-customer-net-aov) | Net AOV for returning customers | ### Customers | Metric | Description | | -------------------------------------------------------------------------------------------------- | --------------------------------------------- | | [Unique Customers](/reference/metrics/orders/customers/unique-customers) | Distinct customers who placed orders | | [New Customers](/reference/metrics/orders/customers/new-customers) | First-time customers | | [Returning Customers](/reference/metrics/orders/customers/returning-customers) | Customers with prior purchases | | [New Customer %](/reference/metrics/orders/customers/new-customer-percent) | Percentage of orders from new customers | | [Returning Customer %](/reference/metrics/orders/customers/returning-customer-percent) | Percentage of orders from returning customers | | [New Customer Gross Rate](/reference/metrics/orders/customers/new-customer-gross-rate) | New customer revenue as % of gross | | [Returning Customer Gross Rate](/reference/metrics/orders/customers/returning-customer-gross-rate) | Returning customer revenue as % of gross | | [Average Orders Per Customer](/reference/metrics/orders/customers/average-orders-per-customer) | Average number of orders per customer | ### Performance (ROAS, MER, CPA) | Metric | Description | | ---------------------------------------------------------------------------------- | -------------------------------------- | | [CPA](/reference/metrics/orders/performance/cac) | Cost per acquisition | | [New Customer CPA](/reference/metrics/orders/performance/cac) | Cost per new customer acquisition | | [Returning Customer CPA](/reference/metrics/orders/performance/cac) | Cost per returning customer order | | [Total ROAS](/reference/metrics/orders/performance/roas) | Return on ad spend using total revenue | | [Gross ROAS](/reference/metrics/orders/performance/roas) | Return on ad spend using gross revenue | | [Net ROAS](/reference/metrics/orders/performance/roas) | Return on ad spend using net revenue | | [New Customer Total ROAS](/reference/metrics/orders/performance/new-customer-roas) | New customer total ROAS | | [New Customer Gross ROAS](/reference/metrics/orders/performance/new-customer-roas) | New customer gross ROAS | | [New Customer Net ROAS](/reference/metrics/orders/performance/new-customer-roas) | New customer net ROAS | | [Total MER](/reference/metrics/orders/performance/total-mer) | Marketing efficiency ratio (total) | | [Gross MER](/reference/metrics/orders/performance/gross-mer) | Marketing efficiency ratio (gross) | | [Net MER](/reference/metrics/orders/performance/net-mer) | Marketing efficiency ratio (net) | # Adjustments: Track Refunds, Discounts, Shipping, and Tax Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments Track order adjustment metrics in Upstack. Includes Refunds, Discounts, Shipping, Tax, and Cancelled Orders with formulas and examples. Adjustment metrics track order modifications that impact revenue—refunds, discounts, shipping collected, and tax. Use these to understand the gap between gross and net revenue. **Data Source:** [Shopify](/sources/catalog/shopify)\ **Metrics:** 58 ## Metrics in This Group The tables below highlight the most commonly used metrics in this group — browse the full list in the sidebar. ### Refunds | Metric | Description | When to Use | | -------------------------------------------------------------------------- | ----------------------------- | ------------------------ | | [Refund Amount](/reference/metrics/orders/adjustments/refund-amount) | Total refund value | Track refund liability | | [Refund Count](/reference/metrics/orders/adjustments/refund-count) | Number of refunded orders | Count problematic orders | | [Refund %](/reference/metrics/orders/adjustments/refund-percent) | Percentage of orders refunded | Monitor return rate | | [Refund Per Order](/reference/metrics/orders/adjustments/refund-per-order) | Average refund per order | Benchmark refund impact | ### Discounts | Metric | Description | When to Use | | ------------------------------------------------------------------------------------------ | -------------------------------------------------- | --------------------------------- | | [Discount Amount](/reference/metrics/orders/adjustments/discount-amount) | Total discount value | Track promotional cost | | [Discount %](/reference/metrics/orders/adjustments/discount-percent) | Percentage of orders with discounts | Monitor discount usage | | [Discount Per Order](/reference/metrics/orders/adjustments/discount-per-order) | Average discount per order | Optimize promotion strategy | | [NC Discount %](/reference/metrics/orders/adjustments/new-customer-discount-percent) | New customer discounts as % of gross revenue | Track acquisition discount impact | | [RC Discount %](/reference/metrics/orders/adjustments/returning-customer-discount-percent) | Returning customer discounts as % of gross revenue | Track retention discount impact | ### Shipping & Tax | Metric | Description | When to Use | | ------------------------------------------------------------------------------------------ | ---------------------------------------- | ---------------------------- | | [Shipping Revenue](/reference/metrics/orders/adjustments/shipping-revenue) | Shipping collected from customers | Track shipping contribution | | [Shipping %](/reference/metrics/orders/adjustments/shipping-percent) | Shipping as % of order value | Monitor shipping strategy | | [Tax](/reference/metrics/orders/adjustments/tax) | Tax collected | Tax reporting | | [Tax %](/reference/metrics/orders/adjustments/tax-percent) | Tax as % of order value | Understand tax impact | | [Tax Per Order](/reference/metrics/orders/adjustments/tax-per-order) | Average tax per order | Benchmark tax impact | | [NC Tax Per Order](/reference/metrics/orders/adjustments/new-customer-tax-per-order) | Average tax per new customer order | Track acquisition tax burden | | [RC Tax Per Order](/reference/metrics/orders/adjustments/returning-customer-tax-per-order) | Average tax per returning customer order | Track retention tax burden | ### Cancelled Orders | Metric | Description | When to Use | | -------------------------------------------------------------------------- | -------------------------- | ------------------------- | | [Cancelled Orders](/reference/metrics/orders/adjustments/cancelled-orders) | Number of cancelled orders | Track cancellation volume | | [Cancelled Amount](/reference/metrics/orders/adjustments/cancelled-amount) | Value of cancelled orders | Measure lost revenue | ## How These Metrics Relate Adjustments bridge the gap between gross and net revenue: * **Net Revenue** = [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) - [**Discounts**](/reference/metrics/orders/adjustments/discount-amount) - [**Refunds**](/reference/metrics/orders/adjustments/refund-amount) * **Total Revenue** = [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) + Shipping + [**Tax**](/reference/metrics/orders/adjustments/tax) Each adjustment type is available segmented by New Customer and Returning Customer. ## Choosing the Right Metric * **Refund analysis**: Use Refund % to benchmark return rates by product or campaign * **Discount strategy**: Use Discount % to understand promotional reliance * **Shipping optimization**: Compare Shipping Revenue vs Shipping Cost to find margin * **Tax compliance**: Use Tax metrics for reporting and reconciliation # Cancelled Amount: Revenue Lost to Order Cancellations Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/cancelled-amount Track total dollar value of cancelled orders. Monitor lost revenue before fulfillment and identify checkout or inventory issues in Upstack. The total dollar value of orders cancelled before fulfillment. ## Formula **Cancelled Amount** = **SUM** ( Order Value ) **WHERE** status = cancelled ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------- | -------------------------------------------------------- | | **Order Value** | The total value of each order | | [**status = cancelled**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders marked as cancelled before fulfillment | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store had **\$12,750 in cancelled orders** during Q1: | Month | Cancelled Amount | Orders Cancelled | | -------- | ---------------- | ---------------- | | January | \$3,200 | 18 | | February | \$4,850 | 27 | | March | \$4,700 | 24 | *** ## How It Works Cancelled Amount sums the total value of all orders cancelled in Shopify before fulfillment. Unlike refunds, cancellations represent potential revenue that never converted. Spikes may indicate payment failures, inventory stockouts, or checkout friction. *** ## When to Use | Scenario | Action | | ------------------------ | ----------------------------------------------- | | Track lost revenue | Monitor potential sales that didn't complete | | Identify payment issues | Compare against declined transactions | | Spot inventory problems | Correlate with stockout events | | Segment by customer type | Compare new vs returning customer cancellations | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | -------------------------------------------- | | [Cancelled Orders](/reference/metrics/orders/adjustments/cancelled-orders) | Count of cancelled orders (not dollar value) | | [Refund Amount](/reference/metrics/orders/adjustments/refund-amount) | Value refunded after fulfillment | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue after all adjustments | | [Orders](/reference/metrics/orders/counts/orders) | All orders including cancelled | [See all Adjustment metrics →](/reference/metrics/orders/adjustments) # Cancelled Orders: Count of Orders Cancelled Before Fulfillment Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/cancelled-orders Track the number of cancelled orders in your Shopify store. Monitor checkout friction, payment failures, and inventory issues with order cancellation counts. The total number of orders cancelled before fulfillment in your Shopify store. ## Formula **Cancelled Orders** = **COUNT** ( [**Orders**](/reference/metrics/orders/counts/orders) ) **WHERE** status = cancelled ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------- | -------------------------------------------------------- | | [**Orders**](/reference/metrics/orders/counts/orders) | Total number of orders placed | | [**status = cancelled**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders marked as cancelled before fulfillment | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your store had **69 cancelled orders** during Q1 across 4,200 total orders: | Month | Cancelled | Cancellation Rate | | -------- | --------- | ------------------------------ | | January | 18 | 1.3% | | February | 27 | 1.9% (payment processor issue) | | March | 24 | 1.7% | *** ## How It Works Cancelled Orders counts all orders marked as cancelled in Shopify before fulfillment. Unlike refunds, cancellations represent orders that never shipped. Spikes often correlate with payment failures, inventory stockouts, or customer-initiated order changes. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------------- | | Monitor checkout health | Track cancellations as percentage of total orders | | Diagnose payment issues | Compare against payment failure rates | | Detect inventory problems | Correlate spikes with stockout events | | Segment by customer type | Compare new vs returning customer cancellations | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | -------------------------------------- | | [Cancelled Amount](/reference/metrics/orders/adjustments/cancelled-amount) | Dollar value of these cancelled orders | | [Refund Count](/reference/metrics/orders/adjustments/refund-count) | Orders refunded after fulfillment | | [Refund Amount](/reference/metrics/orders/adjustments/refund-amount) | Dollar value of refunds | | [Orders](/reference/metrics/orders/counts/orders) | All orders including cancelled | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue after all adjustments | [See all Adjustment metrics →](/reference/metrics/orders/adjustments) # Discount Amount: Total Discounts Applied to Orders Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/discount-amount Track total discount value applied across all orders from your Shopify store. Monitor promotional spend, measure discount impact on margins, and optimize strategy. The total dollar value of all discounts applied across orders in the selected period. ## Formula **Discount Amount** = **SUM** ( Discount Value ) ### Formula Components | Metric | Definition | | ------------------ | ---------------------------------------------------- | | **Discount Value** | The dollar amount of discounts applied to each order | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store applied **\$18,400 in discounts** during a spring promotion: | Week | Discount Amount | Discounted Orders | | ------ | --------------- | ----------------- | | Week 1 | \$3,200 | 412 | | Week 2 | \$5,800 | 687 | | Week 3 | \$6,100 | 723 | | Week 4 | \$3,300 | 398 | *** ## How It Works Discount Amount sums the dollar value of all discounts applied to orders—including percentage-off codes, fixed-amount coupons, and automatic discounts. High discount totals reduce gross margin and can signal over-reliance on promotions to drive sales. *** ## When to Use | Scenario | Action | | ---------------------- | ------------------------------------------------------------- | | Track promotional cost | Monitor total discount dollars during campaigns | | Protect gross margin | Set discount budgets to maintain profitability | | Compare campaigns | Measure which promotions drive the highest discount liability | | Calculate net revenue | Subtract from gross revenue alongside refunds | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ---------------------------------------- | | [Discount %](/reference/metrics/orders/adjustments/discount-percent) | Discounts as percentage of gross revenue | | [Discount Per Order](/reference/metrics/orders/adjustments/discount-per-order) | This metric ÷ Order Count | | [Refund Amount](/reference/metrics/orders/adjustments/refund-amount) | Another deduction from gross revenue | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Gross Revenue − Discounts − Refunds | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Revenue before discounts and refunds | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Discount Count: Orders with Discounts Applied Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/discount-count Track how many orders had discounts applied. Monitor promotion usage frequency and compare to total orders to gauge discount dependency. Discount Count measures the number of orders that had at least one discount code or promotion applied. ## Formula **Discount Count** = **COUNT** ( [**Orders**](/reference/metrics/orders/counts/orders) ) **WHERE** discount\_applied = true ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | | [**Orders**](/reference/metrics/orders/counts/orders) | Total number of orders placed | | [**discount\_applied = true**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders with at least one discount code or promotion applied | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your store processed **1,247 orders** in January. **843 orders** had discount codes applied. | Period | Total Orders | Discounted Orders | Discount Usage | | -------- | ------------ | ----------------- | -------------- | | January | 1,247 | 843 | 67.6% | | February | 1,089 | 412 | 37.8% | | March | 1,356 | 678 | 50.0% | *** ## How It Works Discount Count increments by one for each order where Shopify reports a discount was applied at checkout. An order with multiple discount codes still counts as one discounted order. *** ## When to Use | Scenario | Action | | ----------------------------------- | ---------------------------------------------------------- | | Evaluating promotion effectiveness | Compare discounted orders to total orders during campaigns | | Measuring discount dependency | Track if customers only buy when discounts are available | | Analyzing new vs returning behavior | See if one segment uses discounts more frequently | | Planning inventory for sales events | Estimate volume based on historical discount usage | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ---------------------------------------- | | [Discount Amount](/reference/metrics/orders/adjustments/discount-amount) | Total dollar value of discounts applied | | [Discount %](/reference/metrics/orders/adjustments/discount-percent) | Discounts as share of gross revenue | | [Discount Per Order](/reference/metrics/orders/adjustments/discount-per-order) | Average discount per order | | [Orders](/reference/metrics/orders/counts/orders) | All orders regardless of discount status | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Discount Gross Rate: Discounts as % of Gross Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/discount-gross-rate Measure total discount dollars as a percentage of gross revenue. Track promotional impact on margins across all orders with Shopify order data. Total discount amount as a percentage of gross revenue—measures how much of your potential revenue is offset by promotions. ## Formula **Discount Gross Rate** = ( [**Discount Amount**](/reference/metrics/orders/adjustments/discount-amount) ÷ [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | ------------------------------------------- | | [**Discount Amount**](/reference/metrics/orders/adjustments/discount-amount) | Total dollar value of all discounts applied | | [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Total revenue before discounts and refunds | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store generated **\$237,000** in gross revenue with **\$18,960** in total discounts during a promotional period: | Metric | Value | | ----------------------- | --------- | | Gross Revenue | \$237,000 | | Discount Amount | \$18,960 | | **Discount Gross Rate** | **8.0%** | *** ## How It Works This metric divides total discount dollars by gross revenue, then multiplies by 100. It shows what portion of your potential revenue is being given away through promotions. Higher rates indicate aggressive discounting that erodes gross margins. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------------------------------- | | Monitoring margin erosion | Track discount rate trends to prevent margin creep | | Evaluating promotions | Compare pre and post-campaign to measure discount escalation | | Benchmarking periods | Identify seasonal patterns in promotional intensity | | Customer segment analysis | Compare against NC and RC Discount Gross Rates for segment insights | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ------------------------------------ | | [Discount Amount](/reference/metrics/orders/adjustments/discount-amount) | Dollar value used in numerator | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Baseline revenue in denominator | | [NC Discount Gross Rate](/reference/metrics/orders/adjustments/new-customer-discount-gross-rate) | New customer segment breakdown | | [RC Discount Gross Rate](/reference/metrics/orders/adjustments/returning-customer-discount-gross-rate) | Returning customer segment breakdown | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Discount Per Order: Average Discount Amount Per Transaction Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/discount-per-order Track the average discount amount applied per order from your Shopify store. Measure promotional impact on margins and optimize discount strategy. The average discount dollar value applied per order. ## Formula **Discount Per Order** = [**Discount Amount**](/reference/metrics/orders/adjustments/discount-amount) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | ------------------------------------------- | | [**Discount Amount**](/reference/metrics/orders/adjustments/discount-amount) | Total dollar value of all discounts applied | | [**Orders**](/reference/metrics/orders/counts/orders) | Total number of completed orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store processed **3,200 orders** in March with **\$12,800** in total discounts: | Metric | Value | | ---------------------- | ---------- | | Discount Amount | \$12,800 | | Order Count | 3,200 | | **Discount Per Order** | **\$4.00** | *** ## How It Works Discount Per Order divides total discount dollars by all orders—not just discounted orders. This shows the average revenue given away per transaction, helping you understand the true cost of promotions across your entire customer base. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------------------------------------- | | Evaluating promotions | Compare pre and post-campaign to measure discount escalation | | Protecting margins | Set thresholds to prevent discount creep from eroding profitability | | Segmenting customers | Compare new vs returning customer discount per order | | Benchmarking channels | Identify traffic sources that over-rely on discounts | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ---------------------------------------------------------- | | [Discount Amount](/reference/metrics/orders/adjustments/discount-amount) | Numerator: total discount dollars | | [Orders](/reference/metrics/orders/counts/orders) | Denominator: transaction count | | [Discount %](/reference/metrics/orders/adjustments/discount-percent) | Discounts as percentage of gross revenue | | [Net AOV](/reference/metrics/orders/aov/net-aov) | Order value after discounts—compare to gauge margin impact | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Discount %: Discounts as Share of Gross Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/discount-percent Track total discounts as a percentage of gross revenue from your Shopify store. Monitor promotional intensity and protect gross margins. Discounts as a percentage of gross revenue—measures how much of your potential revenue is given away through promotions. ## Formula **Discount %** = ( [**Discount Amount**](/reference/metrics/orders/adjustments/discount-amount) ÷ [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | -------------------------------------------- | | [**Discount Amount**](/reference/metrics/orders/adjustments/discount-amount) | Total dollar value of all discounts applied | | [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Product revenue before discounts and refunds | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store earned **\$80,000** in gross revenue during a holiday promotion with **\$12,000** in total discounts: | Metric | Value | | --------------- | -------- | | Gross Revenue | \$80,000 | | Discount Amount | \$12,000 | | **Discount %** | **15%** | *** ## How It Works Discount % divides total discount dollars by gross revenue (before discounts and refunds). A high percentage indicates heavy promotional reliance, which erodes margins and can train customers to wait for sales. *** ## When to Use | Scenario | Action | | --------------------- | --------------------------------------------------------------- | | Evaluating promotions | Compare pre and post-campaign to measure discount escalation | | Protecting margins | Set thresholds to prevent discount creep (e.g., stay under 10%) | | Segmenting customers | Compare new vs returning customer discount % | | Benchmarking channels | Identify traffic sources over-reliant on discounts | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ------------------------------------- | | [Discount Amount](/reference/metrics/orders/adjustments/discount-amount) | Numerator: total discount dollars | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Denominator: baseline product revenue | | [Discount Per Order](/reference/metrics/orders/adjustments/discount-per-order) | Average discount per transaction | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Cancelled Amount: Lost First-Order Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-cancelled-amount Track the dollar value of cancelled first-time customer orders. Identify checkout friction and reduce lost revenue from new customer cancellations. The total dollar value of cancelled orders from first-time customers. ## Formula **New Customer Cancelled Amount** = **SUM** ( Cancelled Order Value ) **WHERE** customer\_type = new ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | **Cancelled Order Value** | The total value of each cancelled order | | [**customer\_type = new**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from first-time customers with no prior purchases | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store had **\$4,850** in cancelled new customer orders this month: | Week | Cancelled Amount | Orders | Avg Value | | ------ | ---------------- | ------ | --------- | | Week 1 | \$1,200 | 8 | \$150 | | Week 2 | \$890 | 6 | \$148 | | Week 3 | \$1,560 | 11 | \$142 | | Week 4 | \$1,200 | 9 | \$133 | *** ## How It Works This metric sums the order totals for all cancelled orders where the customer had no prior purchases. Cancellations are tracked when orders are voided before fulfillment. High values may signal checkout issues, payment failures, or inventory problems affecting first-time buyers. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------------------------ | | Checkout optimization | High cancellations suggest payment or UX friction | | Campaign quality audit | Compare against acquisition channels to find problem sources | | Inventory management | Spikes may indicate stockout-driven cancellations | | New vs returning analysis | Compare with returning customer cancellations for patterns | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------- | -------------------------------------- | | [Cancelled Amount](/reference/metrics/orders/adjustments/cancelled-amount) | Total cancelled amount (all customers) | | [Cancelled Orders](/reference/metrics/orders/adjustments/cancelled-orders) | Count of all cancellations | | [New Customer Cancelled Orders](/reference/metrics/orders/adjustments/new-customer-cancelled-orders) | Count of new customer cancellations | | [Returning Customer Cancelled Amount](/reference/metrics/orders/adjustments/returning-customer-cancelled-amount) | Cancelled amount from repeat buyers | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Cancelled Orders: Cancellations by First-Time Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-cancelled-orders Track cancelled orders from new customers. Monitor acquisition quality, identify checkout friction, and reduce lost revenue from first-time buyer cancellations. The number of orders from first-time customers that were cancelled before fulfillment. ## Formula **New Customer Cancelled Orders** = **COUNT** ( [**Cancelled Orders**](/reference/metrics/orders/adjustments/cancelled-orders) ) **WHERE** customer\_type = new ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | [**Cancelled Orders**](/reference/metrics/orders/adjustments/cancelled-orders) | Orders marked as cancelled before fulfillment | | [**customer\_type = new**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from first-time customers with no prior purchases | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your store had **47 New Customer Cancelled Orders** this month out of 1,850 new customer orders: | Source | NC Cancellations | NC Orders | Cancel % | | ---------- | ---------------- | --------- | -------- | | Meta Ads | 24 | 950 | 2.5% | | Google Ads | 14 | 580 | 2.4% | | Organic | 9 | 320 | 2.8% | | **Total** | **47** | **1,850** | **2.5%** | *** ## How It Works This metric counts orders placed by first-time customers that were cancelled before fulfillment in Shopify. A customer is classified as "new" based on having no prior orders. Cancellations typically occur due to payment failures, customer requests, or fraud holds. *** ## When to Use | Scenario | Action | | ------------------------------ | ---------------------------------------------------- | | Evaluating acquisition quality | Compare cancellation counts by traffic source | | Investigating checkout issues | Spikes may indicate payment or fraud filter problems | | Measuring lost opportunity | Pair with NC Cancelled Amount for dollar impact | | Comparing customer types | Benchmark against returning customer cancellations | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ------------------------------------------ | | [New Customer Cancelled Amount](/reference/metrics/orders/adjustments/new-customer-cancelled-amount) | Dollar value of these cancellations | | [Cancelled Orders](/reference/metrics/orders/adjustments/cancelled-orders) | Total cancellations (all customers) | | [RC Cancelled Orders](/reference/metrics/orders/adjustments/returning-customer-cancelled-orders) | Same metric for repeat buyers | | [New Customers](/reference/metrics/orders/customers/new-customers) | Total new customers (denominator for rate) | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Discount Gross Rate: Discounts as % of Gross Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-discount-gross-rate Measure new customer discount dollars as a percentage of gross revenue. Track acquisition discount impact on first-purchase margins with Shopify order data. New customer discount amount as a percentage of new customer gross revenue. ## Formula **NC Discount Gross Rate** = ( [**New Customer Discounts**](/reference/metrics/orders/adjustments/new-customer-discounts) ÷ [**New Customer Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | | [**New Customer Discounts**](/reference/metrics/orders/adjustments/new-customer-discounts) | Total dollar value of discounts applied to first-time buyer orders | | [**New Customer Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Total revenue from new customers before adjustments | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your new customers generated **\$92,000** in gross revenue with **\$8,280** in discounts: | Metric | Value | | -------------------------- | -------- | | New Customer Gross Revenue | \$92,000 | | New Customer Discounts | \$8,280 | | **NC Discount Gross Rate** | **9.0%** | *** ## How It Works This metric divides new customer discount dollars by new customer gross revenue, then multiplies by 100. It measures how much of first-time buyer revenue is offset by promotional discounts. Higher rates indicate aggressive acquisition discounting that may reduce margins on initial purchases. *** ## When to Use | Scenario | Action | | ---------------------------- | --------------------------------------------------------------------------- | | Evaluating acquisition costs | Combine with CAC to understand true cost of new customer orders | | Margin analysis | Monitor discount erosion on first-purchase profitability | | New vs. returning comparison | Benchmark against RC Discount Gross Rate for retention efficiency | | Promotion optimization | Identify if acquisition discounts can be reduced without hurting conversion | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------ | | [NC Discount %](/reference/metrics/orders/adjustments/new-customer-discount-percent) | Related percentage metric for new customers | | [NC Discount Per Order](/reference/metrics/orders/adjustments/new-customer-discount-per-order) | Average discount per new customer order | | [RC Discount Gross Rate](/reference/metrics/orders/adjustments/returning-customer-discount-gross-rate) | Compare acquisition vs. retention discount rates | | [Discount Amount](/reference/metrics/orders/adjustments/discount-amount) | Total discounts across all customers | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Discount Order Rate: Acquisition Discount Dependency Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-discount-order-rate Track what percentage of new customer orders use discount codes. Measure how dependent your customer acquisition is on promotions and optimize strategy. The share of new customer orders that used a discount code or promotion. ## Formula **NC Discount Order Rate** = ( **New Customer Discounted Orders** ÷ [**New Customers**](/reference/metrics/orders/customers/new-customers) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------- | ------------------------------------------------------------------- | | **New Customer Discounted Orders** | Count of first-time buyer orders with at least one discount applied | | [**New Customers**](/reference/metrics/orders/customers/new-customers) | Total number of first-time buyer orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store had **847 new customer orders** in January, with **678 using discount codes**: | Period | NC Discounted Orders | NC Orders | Rate | | -------- | -------------------- | --------- | ----- | | January | 678 | 847 | 80.0% | | February | 412 | 623 | 66.1% | *** ## How It Works Counts first-time customer orders with discounts and divides by total new customer orders. High values indicate acquisition is discount-dependent; declining rates show customers converting without incentives. *** ## When to Use | Scenario | Action | | -------------------------------- | ---------------------------------------------------------- | | Evaluating acquisition costs | High rates mean discounts drive most new customers | | Testing discount removal | Monitor if rate drops without hurting conversion | | Comparing to returning customers | Identify if new vs repeat buyers need different incentives | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | | [Returning Customer Discount Order Rate](/reference/metrics/orders/adjustments/returning-customer-discount-order-rate) | Same metric for repeat customers | | [Discount Count](/reference/metrics/orders/adjustments/discount-count) | Total orders with discounts (all customers) | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Discount Per Order: Average First-Purchase Discount Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-discount-per-order Track the average discount applied to new customer orders. Measure acquisition discount intensity and optimize first-purchase promotions. The average discount dollar value applied per new customer order. ## Formula **NC Discount Per Order** = [**New Customer Discounts**](/reference/metrics/orders/adjustments/new-customer-discounts) ÷ [**New Customers**](/reference/metrics/orders/customers/new-customers) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------ | -------------------------------------------------------------- | | [**New Customer Discounts**](/reference/metrics/orders/adjustments/new-customer-discounts) | Total dollar value of discounts applied to new customer orders | | [**New Customers**](/reference/metrics/orders/customers/new-customers) | Number of orders placed by first-time buyers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your store processed **842 new customer orders** in March with **\$12,630** in discounts: | Period | Discounts | NC Orders | Discount/Order | | -------- | --------- | --------- | -------------- | | March | \$12,630 | 842 | \$15.00 | | February | \$9,180 | 612 | \$15.00 | | January | \$7,840 | 560 | \$14.00 | *** ## How It Works This metric divides total discounts applied to new customer orders by the number of new customer orders. It reveals how much you're investing in discounts to acquire each new buyer—critical for understanding customer acquisition cost beyond ad spend. *** ## When to Use | Scenario | Action | | -------------------------------- | -------------------------------------------------------- | | Evaluating acquisition offers | Ensure welcome discounts drive profitable first orders | | Comparing to returning customers | Identify if new buyers require deeper discounts | | Optimizing promo strategy | Test whether smaller discounts maintain conversion rates | | CAC analysis | Add to ad spend for true acquisition cost | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [New Customer Discounts](/reference/metrics/orders/adjustments/new-customer-discounts) | Numerator (total discounts for NC orders) | | [NC Discount %](/reference/metrics/orders/adjustments/new-customer-discount-percent) | Discount as percentage of gross revenue | | [Returning Customer Discount Per Order](/reference/metrics/orders/adjustments/returning-customer-discount-per-order) | Compare acquisition vs retention discounting | | [Discount Per Order](/reference/metrics/orders/adjustments/discount-per-order) | Overall average across all customer types | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Discount %: Discount Share of Gross Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-discount-percent Measure new customer discounts as a percentage of gross revenue. Track acquisition discount impact on first-purchase margins with Shopify order data. New customer discounts as a percentage of new customer gross revenue. ## Formula **NC Discount %** = ( [**New Customer Discounts**](/reference/metrics/orders/adjustments/new-customer-discounts) ÷ [**New Customer Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | | [**New Customer Discounts**](/reference/metrics/orders/adjustments/new-customer-discounts) | Total dollar value of discounts applied to new customer orders | | [**New Customer Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Total revenue from new customers before adjustments | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your new customers generated **\$85,000** in gross revenue with **\$10,200** in discounts: | Metric | Value | | --------------------------- | --------- | | New Customer Gross Revenue | \$85,000 | | New Customer Discounts | \$10,200 | | **New Customer Discount %** | **12.0%** | *** ## How It Works This metric divides new customer discounts by new customer gross revenue, then multiplies by 100. Higher percentages indicate heavier discount reliance for acquisition, which may signal necessary promotional investment or aggressive discounting that erodes first-purchase margins. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------ | | Evaluating acquisition costs | Compare discount rates to CAC for true acquisition cost | | Promotion effectiveness | Monitor if first-purchase discounts drive sustainable growth | | New vs. returning comparison | Benchmark against returning customer discount rates | | Margin optimization | Identify opportunities to reduce acquisition discounts | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [New Customer Discounts](/reference/metrics/orders/adjustments/new-customer-discounts) | The numerator — total discount dollars | | [NC Discount Per Order](/reference/metrics/orders/adjustments/new-customer-discount-per-order) | Average discount per new customer order | | [RC Discount %](/reference/metrics/orders/adjustments/returning-customer-discount-percent) | Compare acquisition vs. retention discount rates | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Discounts: First-Order Discount Total Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-discounts Track total discount dollars applied to new customer orders. Measure acquisition discount strategy effectiveness and first-purchase incentive costs with Shopify data. The total dollar amount of discounts applied to new customer orders. ## Formula **New Customer Discounts** = **SUM** ( [**Discount Amount**](/reference/metrics/orders/adjustments/discount-amount) ) **WHERE** customer\_type = new ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | [**Discount Amount**](/reference/metrics/orders/adjustments/discount-amount) | The dollar value of discounts applied to orders | | [**customer\_type = new**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from first-time customers with no prior purchases | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store applied **\$8,240** in discounts to new customer orders in Q1: | Month | NC Discounts | NC Orders | Discount/Order | | -------- | ------------ | --------- | -------------- | | January | \$2,450 | 318 | \$7.70 | | February | \$2,780 | 356 | \$7.81 | | March | \$3,010 | 402 | \$7.49 | Stable discount per order while total discounts grow indicates scaling acquisition without eroding margins. *** ## How It Works This metric sums all discount amounts from orders placed by new customers. A customer is classified as "new" when they have no prior completed orders in Shopify. Discounts include coupon codes, automatic discounts, and manual adjustments applied at checkout. *** ## When to Use | Scenario | Action | | ------------------------------------ | ------------------------------------------------------------------ | | Measuring acquisition incentive cost | Track how much revenue is given away to convert first-time buyers | | Comparing segments | Benchmark against returning customer discounts to balance strategy | | CAC analysis | Include in customer acquisition cost alongside ad spend | | Margin optimization | Identify if acquisition discounts are too aggressive | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | --------------------------------------------------- | | [New Customer Discount %](/reference/metrics/orders/adjustments/new-customer-discount-percent) | Discounts as percentage of gross revenue | | [Returning Customer Discounts](/reference/metrics/orders/adjustments/returning-customer-discounts) | Compare retention vs. acquisition discount spending | | [Discount Amount](/reference/metrics/orders/adjustments/discount-amount) | Total discounts across all customer types | | [New Customer Refunds](/reference/metrics/orders/adjustments/new-customer-refunds) | Combined with discounts for total adjustments | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Refund Count: Orders Refunded by First-Time Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-refund-count Count orders from new customers that resulted in refunds. Track acquisition quality and identify product-market fit issues with first-time buyers. The number of orders from first-time customers that have been refunded. ## Formula **New Customer Refund Count** = **COUNT** ( [**Refunded Orders**](/reference/metrics/orders/adjustments/refund-count) ) **WHERE** customer\_type = new ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | **Refunded Orders** | Orders that have had a full or partial refund issued | | [**customer\_type = new**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from first-time customers with no prior purchases | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your store had **164 New Customer Refund Count** this quarter: | Channel | NC Refunds | NC Orders | Refund % | | ---------- | ---------- | --------- | -------- | | Meta Ads | 82 | 950 | 8.6% | | Google Ads | 54 | 680 | 7.9% | | Organic | 28 | 370 | 7.6% | | **Total** | **164** | **2,000** | **8.2%** | *** ## How It Works This metric counts orders placed by first-time customers that Shopify marks as refunded. A customer is classified as "new" based on having no prior orders in your Shopify store. The count includes full and partial refunds. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------ | | Evaluating acquisition channels | Compare refund counts by traffic source | | Monitoring product launches | Track if new products drive higher refund volume | | Calculating refund rate | Use as numerator in New Customer Refund % | | Identifying quality issues | Spikes indicate product or expectation problems | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | ---------------------------------------- | | [New Customer Refund %](/reference/metrics/orders/adjustments/new-customer-refund-percent) | This count divided by NC orders | | [New Customer Refunds](/reference/metrics/orders/adjustments/new-customer-refunds) | Dollar amount (this metric is the count) | | [Returning Customer Refund Count](/reference/metrics/orders/adjustments/returning-customer-refund-count) | Same metric for repeat buyers | | [Refund Count](/reference/metrics/orders/adjustments/refund-count) | Total refund count (all customers) | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Refund Per Order: Average First-Buyer Refund Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-refund-per-order Track average refund amount per new customer order. Measure first-buyer return costs and identify product-market fit or fulfillment issues. The average refund amount issued per new customer order. ## Formula **NC Refund Per Order** = [**New Customer Refunds**](/reference/metrics/orders/adjustments/new-customer-refunds) ÷ [**New Customers**](/reference/metrics/orders/customers/new-customers) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ------------------------------------------- | | [**New Customer Refunds**](/reference/metrics/orders/adjustments/new-customer-refunds) | Total refund dollars from first-time buyers | | [**New Customers**](/reference/metrics/orders/customers/new-customers) | Count of orders from first-time buyers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store processed **847 new customer orders** in February with **\$2,965** in refunds: | Metric | Value | | ----------------------- | ---------- | | New Customer Refunds | \$2,965 | | New Customer Orders | 847 | | **NC Refund Per Order** | **\$3.50** | Compare this to your Returning Customer Refund Per Order of \$2.18—new customers cost 60% more in refunds per order. *** ## How It Works This metric divides total new customer refunds by total new customer orders—not just refunded orders. This gives you the average refund liability per first-time buyer transaction, helping you understand acquisition quality and the true cost of acquiring new customers after accounting for returns. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------------- | | Evaluating acquisition channels | Identify campaigns driving higher new customer refund rates | | Comparing NC vs RC behavior | New customers typically have higher refund rates than repeat buyers | | Assessing product-market fit | High values may indicate targeting issues or unmet expectations | | Budgeting for returns | Factor into CAC and payback period calculations | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | [New Customer Refunds](/reference/metrics/orders/adjustments/new-customer-refunds) | Numerator: total NC refund dollars | | [New Customers](/reference/metrics/orders/customers/new-customers) | Denominator: NC transaction count | | [New Customer Refund %](/reference/metrics/orders/adjustments/new-customer-refund-percent) | Percentage of NC orders refunded | | [Returning Customer Refund Per Order](/reference/metrics/orders/adjustments/returning-customer-refund-per-order) | Compare new vs returning customer refund behavior | | [Refund Per Order](/reference/metrics/orders/adjustments/refund-per-order) | Overall refund per order across all customers | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Refund %: Track First-Time Buyer Returns Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-refund-percent Measure the percentage of new customer orders that result in refunds. Identify product-market fit issues with first-time buyers and optimize acquisition quality. The share of new customer orders that resulted in a refund. ## Formula **NC Refund %** = ( [**New Customer Refund Count**](/reference/metrics/orders/adjustments/new-customer-refund-count) ÷ [**New Customers**](/reference/metrics/orders/customers/new-customers) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------ | ------------------------------------------------- | | [**New Customer Refund Count**](/reference/metrics/orders/adjustments/new-customer-refund-count) | Number of new customer orders with refunds issued | | [**New Customers**](/reference/metrics/orders/customers/new-customers) | Total orders placed by first-time buyers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store had **8.2% New Customer Refund %** this quarter: | Metric | Value | Context | | --------------- | ----- | ------------------ | | NC Refund Count | 164 | Orders refunded | | NC Order Count | 2,000 | Total NC orders | | NC Refund % | 8.2% | Above 5% benchmark | *** ## How It Works This metric divides the number of new customer refunds by total new customer orders, expressed as a percentage. A rising refund rate among first-time buyers often signals product-expectation misalignment, misleading ads, or quality issues that disproportionately affect acquisition. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------- | | Launching new products | Monitor if first-time buyers return items more often | | Evaluating ad creative | High NC refund % may indicate misleading messaging | | Comparing customer segments | Benchmark against Returning Customer Refund % | | Optimizing acquisition channels | Identify which traffic sources drive low-quality buyers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | -------------------------------------------------- | | [New Customer Refunds](/reference/metrics/orders/adjustments/new-customer-refunds) | Dollar amount of refunds (this metric is the rate) | | [New Customer Refund Count](/reference/metrics/orders/adjustments/new-customer-refund-count) | Numerator in this formula | | [Returning Customer Refund %](/reference/metrics/orders/adjustments/returning-customer-refund-percent) | Same metric for repeat buyers | | [New Customer %](/reference/metrics/orders/customers/new-customer-percent) | Share of orders from first-time buyers | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Refund + Discount: Combined First-Purchase Adjustments Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-refund-plus-discount Track combined refunds and discounts from new customer orders. Understand total revenue given back on first-time buyer transactions. Combined refunds and discounts for new customer orders, reflecting total revenue given back from first-time buyer transactions. ## Formula **NC Refund + Discount** = [**New Customer Refunds**](/reference/metrics/orders/adjustments/new-customer-refunds) + [**New Customer Discounts**](/reference/metrics/orders/adjustments/new-customer-discounts) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------ | ---------------------------------------------------- | | [**New Customer Refunds**](/reference/metrics/orders/adjustments/new-customer-refunds) | Total dollar amount refunded to new customers | | [**New Customer Discounts**](/reference/metrics/orders/adjustments/new-customer-discounts) | Total discount amount applied to new customer orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store processed **\$4,250** in combined adjustments for new customers this month: | Component | Amount | Share | | ---------------------- | ------- | ----- | | New Customer Refunds | \$1,850 | 44% | | New Customer Discounts | \$2,400 | 56% | *** ## How It Works This metric sums refund amounts and discount amounts from orders placed by first-time customers. It represents the total revenue reduction specifically tied to new customer acquisition, helping you understand the true cost of converting first-time buyers. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------------- | | Evaluating acquisition costs | Factor in adjustments when calculating true CAC | | Comparing customer segments | Assess if new customers have higher adjustment rates than returning | | Promotion impact analysis | Measure discount burden from welcome offers | | Product-market fit signals | High refunds may indicate expectation mismatches for new buyers | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------------------- | ------------------------------------ | | [New Customer Refunds](/reference/metrics/orders/adjustments/new-customer-refunds) | Refund component of this total | | [New Customer Discounts](/reference/metrics/orders/adjustments/new-customer-discounts) | Discount component of this total | | [Returning Customer Refund + Discount](/reference/metrics/orders/adjustments/returning-customer-refund-plus-discount) | Same metric for repeat buyers | | [Refund Amount](/reference/metrics/orders/adjustments/refund-amount) | Total refunds across all customers | | [Discount Amount](/reference/metrics/orders/adjustments/discount-amount) | Total discounts across all customers | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Refunds: First-Time Buyer Refund Total Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-refunds Track total refund dollars for new customers. Identify product-market fit issues with first-time buyers and measure acquisition quality. The total dollar amount refunded to new customers (first-time buyers). ## Formula **New Customer Refunds** = **SUM** ( [**Refund Amount**](/reference/metrics/orders/adjustments/refund-amount) ) **WHERE** customer\_type = new ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | [**Refund Amount**](/reference/metrics/orders/adjustments/refund-amount) | The dollar value refunded to customers | | [**customer\_type = new**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from first-time customers with no prior purchases | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store refunded **\$2,847** to new customers in March across 43 refunds: | Week | New Customer Refunds | Refund Count | | ------ | -------------------- | ------------ | | Week 1 | \$542 | 8 | | Week 2 | \$1,203 | 18 | | Week 3 | \$687 | 11 | | Week 4 | \$415 | 6 | A spike in Week 2 might indicate a product issue or misleading ad creative that attracted the wrong customers. *** ## How It Works This metric sums all refund amounts from orders placed by first-time customers. A customer is classified as "new" based on their order history in Shopify—their first completed order marks them as a new customer. High values may indicate product quality issues, unmet expectations from marketing, or sizing/fit problems affecting first impressions. *** ## When to Use | Scenario | Action | | ------------------------------- | --------------------------------------------------------------------- | | Evaluating acquisition quality | High refunds from new customers suggest targeting or messaging issues | | Identifying product problems | Compare to returning customer refunds to isolate new buyer issues | | Analyzing marketing campaigns | Check if specific campaigns drive higher first-purchase refunds | | Measuring onboarding experience | Track alongside customer feedback to improve first-order satisfaction | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [New Customer Refund Count](/reference/metrics/orders/adjustments/new-customer-refund-count) | Number of refunds (this metric sums their values) | | [New Customer Refund %](/reference/metrics/orders/adjustments/new-customer-refund-percent) | Share of new customer orders refunded | | [NC Refund Per Order](/reference/metrics/orders/adjustments/new-customer-refund-per-order) | Average refund amount per new customer order | | [Returning Customer Refunds](/reference/metrics/orders/adjustments/returning-customer-refunds) | Compare new vs. returning customer refund behavior | | [Refund Amount](/reference/metrics/orders/adjustments/refund-amount) | Combined refunds across all customer types | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Shipping: Shipping Fees from First-Time Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-shipping Track shipping revenue collected from new customer orders. Understand acquisition shipping economics and free shipping promotion impact. New Customer Shipping measures the total shipping fees collected from orders placed by first-time buyers. ## Formula **New Customer Shipping** = **SUM** ( [**Shipping Revenue**](/reference/metrics/orders/adjustments/shipping-revenue) ) **WHERE** customer\_type = new ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | | **Shipping Revenue** | Total shipping fees collected from orders | | [**customer\_type = new**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from first-time customers with no prior purchases | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store launched a **free shipping over \$50** promotion for new customers in March. | Period | New Customer Orders | NC Shipping Revenue | NC Shipping/Order | | -------- | ------------------- | ------------------- | ----------------- | | January | 847 | \$6,352 | \$7.50 | | February | 912 | \$6,840 | \$7.50 | | March | 1,156 | \$4,045 | \$3.50 | *** ## How It Works New Customer Shipping sums all shipping fees from orders where the customer is making their first purchase. This metric helps you understand how acquisition-focused shipping promotions affect revenue and whether new customers pay differently for shipping than returning customers. *** ## When to Use | Scenario | Action | | ------------------------------------------ | --------------------------------------------------------------- | | Free shipping promotions for new customers | Measure revenue impact of acquisition shipping offers | | New vs. returning shipping comparison | Compare to Returning Customer Shipping to find patterns | | Acquisition economics | Factor shipping revenue into customer acquisition profitability | | Shipping threshold testing | Track how minimum order thresholds affect new buyer behavior | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | ---------------------------------------------- | | [Returning Customer Shipping](/reference/metrics/orders/adjustments/returning-customer-shipping) | Compare new vs. returning shipping patterns | | [NC Shipping %](/reference/metrics/orders/adjustments/new-customer-shipping-percent) | Shipping as percentage of new customer revenue | | [NC Shipping Per Order](/reference/metrics/orders/adjustments/new-customer-shipping-per-order) | Average shipping per new customer order | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Shipping Per Order: Average First-Buyer Shipping Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-shipping-per-order Track average shipping charged per new customer order. Measure first-buyer shipping economics and optimize acquisition shipping strategies. The average shipping amount charged per new customer order. ## Formula **New Customer Shipping Per Order** = [**New Customer Shipping**](/reference/metrics/orders/adjustments/new-customer-shipping) ÷ [**New Customer Orders**](/reference/metrics/orders/customers/new-customers) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [**New Customer Shipping**](/reference/metrics/orders/adjustments/new-customer-shipping) | Total shipping fees collected from first-time buyers | | [**New Customer Orders**](/reference/metrics/orders/customers/new-customers) | Count of orders from first-time buyers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store tested **free shipping for new customers over \$75** in March: | Period | NC Orders | NC Shipping | NC Shipping/Order | | ------------- | --------- | ----------- | ----------------- | | January | 847 | \$6,352 | \$7.50 | | February | 912 | \$6,840 | \$7.50 | | March (promo) | 1,156 | \$4,045 | \$3.50 | The threshold promotion cut shipping per order by 53%—useful for measuring how acquisition offers affect revenue mix. *** ## How It Works This metric divides total shipping revenue from new customers by total new customer orders. It shows the average shipping contribution per first-time buyer transaction, helping you understand how shipping policies affect acquisition economics differently than retention. *** ## When to Use | Scenario | Action | | ------------------------------------- | -------------------------------------------------------------------- | | Evaluating free shipping thresholds | Compare shipping per order before and after threshold changes | | New vs. returning customer comparison | Benchmark against RC Shipping Per Order to find behavior differences | | Acquisition profitability | Include shipping revenue in CAC payback calculations | | Shipping promotion testing | Measure revenue impact of new customer shipping offers | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------- | | [New Customer Shipping](/reference/metrics/orders/adjustments/new-customer-shipping) | Numerator: total NC shipping revenue | | [New Customers](/reference/metrics/orders/customers/new-customers) | Denominator: NC transaction count | | [NC Shipping %](/reference/metrics/orders/adjustments/new-customer-shipping-percent) | Shipping as percentage of new customer revenue | | [RC Shipping Per Order](/reference/metrics/orders/adjustments/returning-customer-shipping-per-order) | Compare new vs. returning shipping patterns | | [Shipping Revenue](/reference/metrics/orders/adjustments/shipping-revenue) | Total shipping from all customers | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Shipping %: Shipping Share of New Buyer Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-shipping-percent Track shipping revenue as a percentage of new customer total revenue. Monitor how acquisition-focused free shipping promotions affect first-time buyer margins. New Customer Shipping % measures shipping fees as a share of total revenue from first-time buyers. ## Formula **New Customer Shipping %** = ( [**New Customer Shipping**](/reference/metrics/orders/adjustments/new-customer-shipping) ÷ [**New Customer Total Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | | [**New Customer Shipping**](/reference/metrics/orders/adjustments/new-customer-shipping) | Total shipping fees collected from new customer orders | | [**New Customer Total Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) | Total revenue from new customers including shipping and taxes | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store launched a **free shipping over \$75** promotion targeting new customers in March. | Period | NC Shipping | NC Total Revenue | NC Shipping % | | -------- | ----------- | ---------------- | ------------- | | January | \$6,350 | \$84,670 | 7.5% | | February | \$5,890 | \$89,230 | 6.6% | | March | \$2,450 | \$98,000 | 2.5% | *** ## How It Works New Customer Shipping % divides shipping revenue from new customers by their total revenue and multiplies by 100. A declining percentage often signals successful free shipping promotions or higher average order values qualifying for free shipping thresholds among first-time buyers. *** ## When to Use | Scenario | Action | | ------------------------------- | ----------------------------------------------------------------------- | | Acquisition shipping promotions | Track how free shipping offers for new customers affect margins | | Comparing customer segments | Compare to Returning Customer Shipping % to find behavioral differences | | Threshold optimization | Evaluate if free shipping minimums drive higher order values | | Profitability analysis | Factor shipping economics into new customer acquisition costs | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ----------------------------------------------- | | [New Customer Shipping](/reference/metrics/orders/adjustments/new-customer-shipping) | Numerator — shipping revenue from new customers | | [New Customer Total Revenue](/reference/metrics/orders/revenue/new-customer-total-revenue) | Denominator — total revenue from new customers | | [Shipping %](/reference/metrics/orders/adjustments/shipping-percent) | Same calculation for all customers | | [RC Shipping %](/reference/metrics/orders/adjustments/returning-customer-shipping-percent) | Compare new vs. returning customer patterns | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Tax: Tax Collected from First-Time Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-tax Track total tax collected from new customer orders. Measure tax contribution from first-time buyers and segment revenue by customer type. Total tax collected from new customer (first-time buyer) orders. ## Formula **New Customer Tax** = **SUM** ( [**Tax**](/reference/metrics/orders/adjustments/tax) ) **WHERE** [customer\_type = new\_customer](/data-dictionary/measures-and-dimensions#visitor-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | [**Tax**](/reference/metrics/orders/adjustments/tax) | Tax amount charged on each order | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from first-time buyers with no prior completed orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store collected **\$8,420** in tax from new customers in Q1: | Month | New Customer Tax | NC Orders | Avg Tax Per Order | | -------- | ---------------- | --------- | ----------------- | | January | \$3,150 | 412 | \$7.65 | | February | \$2,840 | 378 | \$7.51 | | March | \$2,430 | 356 | \$6.83 | March's lower average tax aligns with a promotion that drove smaller first-time orders. *** ## How It Works This metric sums all tax collected on orders placed by first-time customers. A customer is classified as "new" when they have no prior completed orders in your Shopify store. Tax amounts are determined by Shopify's tax calculations based on shipping destination, product category, and applicable tax rules. *** ## When to Use | Scenario | Action | | -------------------- | --------------------------------------------------------------------- | | Revenue segmentation | Break down total tax by customer type for accurate reporting | | Geographic analysis | Higher NC tax may indicate expansion into states with sales tax | | Promotion impact | Track if promotions attracting new customers affect average order tax | | Financial reporting | Reconcile tax liability by customer segment | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ---------------------------------------------- | | [Returning Customer Tax](/reference/metrics/orders/adjustments/returning-customer-tax) | Compare tax from new vs repeat buyers | | [Tax](/reference/metrics/orders/adjustments/tax) | Total tax collected across all customer types | | [New Customer Total Revenue](/reference/metrics/orders/revenue/new-customer-total-revenue) | Includes tax in total revenue | | [New Customers](/reference/metrics/orders/customers/new-customers) | Order count to calculate average tax per order | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Tax Per Order: Average Tax on First-Time Orders Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-tax-per-order Track average tax collected per new customer order. Understand tax liability on first-time purchases and compare acquisition costs across regions. The average tax amount collected per new customer (first-time buyer) order. ## Formula **New Customer Tax Per Order** = [**New Customer Tax**](/reference/metrics/orders/adjustments/new-customer-tax) ÷ [**New Customers**](/reference/metrics/orders/customers/new-customers) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | ------------------------------------------------ | | [**New Customer Tax**](/reference/metrics/orders/adjustments/new-customer-tax) | Total tax collected from first-time buyer orders | | [**New Customers**](/reference/metrics/orders/customers/new-customers) | Number of orders from first-time buyers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store collected **\$1,890** in tax from **270 new customer orders** in April: | Metric | Value | | -------------------- | ---------- | | New Customer Tax | \$1,890 | | New Customer Orders | 270 | | **NC Tax Per Order** | **\$7.00** | *** ## How It Works This metric divides total tax collected from new customers by their order count. Higher values often correlate with larger first-time orders or sales in higher-tax jurisdictions. Use it alongside geographic segmentation to understand regional tax burdens affecting new customer acquisition economics. *** ## When to Use | Scenario | Action | | ----------------- | ----------------------------------------------------------------------- | | Regional analysis | Compare across states/countries to understand tax impact on acquisition | | New vs. returning | Benchmark against returning customer tax to spot purchasing differences | | Total order cost | Combine with AOV to show customers' complete cost burden | | Campaign planning | Factor regional tax into ROAS targets for new customer campaigns | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | --------------------------------------------------------- | | [Tax Per Order](/reference/metrics/orders/adjustments/tax-per-order) | Average tax across all customer types—baseline comparison | | [RC Tax Per Order](/reference/metrics/orders/adjustments/returning-customer-tax-per-order) | Compare new vs. returning customer tax behavior | | [New Customer Net AOV](/reference/metrics/orders/aov/new-customer-net-aov) | Order value before tax—understand price vs. tax split | | [New Customer Total AOV](/reference/metrics/orders/aov/new-customer-total-aov) | Full order value including tax | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # New Customer Tax %: Tax Share of First-Time Buyer Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/new-customer-tax-percent Measure tax as a percentage of new customer revenue. Track tax burden on first-time buyers and compare across customer segments and regions. Tax collected as a percentage of total revenue from first-time buyers. ## Formula **New Customer Tax %** = ( [**New Customer Tax**](/reference/metrics/orders/adjustments/new-customer-tax) ÷ [**New Customer Total Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | [**New Customer Tax**](/reference/metrics/orders/adjustments/new-customer-tax) | Total tax collected from first-time buyer orders | | [**New Customer Total Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) | Total revenue from first-time buyers including shipping and tax | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store had a **6.8% New Customer Tax %** this quarter: | Metric | Value | Context | | ---------------- | -------- | ---------------------- | | NC Tax Collected | \$4,760 | Tax from new customers | | NC Total Revenue | \$70,000 | Revenue including tax | | NC Tax % | 6.8% | Effective tax rate | *** ## How It Works This metric divides total tax collected from new customers by their total revenue (which includes tax), expressed as a percentage. It represents the effective tax burden on first-time buyer transactions and varies based on customer location and product taxability. *** ## When to Use | Scenario | Action | | ------------------------------ | ----------------------------------------------------- | | Comparing customer segments | Benchmark against Returning Customer Tax % | | Analyzing regional performance | Identify geographic tax rate differences | | Financial forecasting | Project tax obligations from new customer acquisition | | Pricing strategy | Understand tax impact on customer acquisition costs | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | -------------------------------------------- | | [New Customer Tax](/reference/metrics/orders/adjustments/new-customer-tax) | Numerator — tax collected from new customers | | [New Customer Total Revenue](/reference/metrics/orders/revenue/new-customer-total-revenue) | Denominator in this formula | | [Tax %](/reference/metrics/orders/adjustments/tax-percent) | Same calculation for all customers | | [RC Tax %](/reference/metrics/orders/adjustments/returning-customer-tax-percent) | Compare new vs. returning customer tax rates | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Refund Amount: Total Refunds Issued to Customers Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/refund-amount Track total refund value issued to customers. Monitor refund liability, identify return trends, and understand impact on net revenue in Upstack. The total dollar amount refunded to customers in the selected period. ## Formula **Refund Amount** = **SUM** ( Refund Value ) | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store issued **\$8,450 in refunds** during March: | Week | Refund Amount | Orders Affected | | ------ | ------------- | --------------- | | Week 1 | \$1,820 | 23 | | Week 2 | \$2,340 | 31 | | Week 3 | \$1,950 | 26 | | Week 4 | \$2,340 | 29 | *** ## How It Works Refund Amount sums the dollar value of all refunds processed in Shopify during the period. This includes partial and full refunds. High refund values reduce net revenue and may indicate product quality, sizing, or fulfillment issues. *** ## When to Use | Scenario | Action | | ------------------------- | ----------------------------------------------- | | Track refund liability | Monitor total refund dollars over time | | Identify problem products | Break down by product to find high-refund items | | Calculate net revenue | Subtract refunds from gross revenue | | Compare customer segments | Analyze new vs returning customer refunds | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | ----------------------------------------- | | [Refund Count](/reference/metrics/orders/adjustments/refund-count) | Number of orders with refunds | | [Refund %](/reference/metrics/orders/adjustments/refund-percent) | Refund rate as percentage of orders | | [Refund Per Order](/reference/metrics/orders/adjustments/refund-per-order) | Average refund per order | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Gross revenue minus refunds and discounts | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Refund Amount (by Order Date): Refunds Attributed to Orders Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/refund-amount-by-order-date Track refund amounts attributed to original order dates. Analyze cohort return rates, identify high-refund order batches, and improve forecasting. Refund amounts attributed to the original order date, enabling cohort analysis of which order batches experienced high returns. ## Formula **Refund Amount (by Order Date)** = **SUM** ( Refund Value ) **GROUPED BY** Original Order Date | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Orders placed in **January** generated **\$12,340 in refunds** over the following months: | Month Ordered | Orders | Refund Amount | Refund Rate | | ------------- | ------ | ------------- | ----------- | | January | 1,847 | \$12,340 | 8.2% | | February | 2,103 | \$9,450 | 5.5% | | March | 1,956 | \$6,120 | 3.8% | January's higher refund rate signals a potential product or fulfillment issue during that period. *** ## How It Works Unlike standard refund metrics that group by refund date, this metric attributes refunds back to when the original order was placed. A refund processed in April for a January order appears in January's totals. This reveals which order cohorts generated the most returns. *** ## When to Use | Scenario | Action | | --------------------------- | ------------------------------------------------------------------- | | Cohort return analysis | Compare refund rates across order date cohorts | | Campaign quality assessment | Identify if specific promotions drove low-quality orders | | Seasonal pattern detection | Spot high-refund periods like post-holiday returns | | LTV accuracy | Account for future refunds when calculating customer lifetime value | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------- | | [Refund Amount](/reference/metrics/orders/adjustments/refund-amount) | Standard refund total (grouped by refund date) | | [Refund Amount (by Refund Date)](/reference/metrics/orders/adjustments/refund-amount-by-refund-date) | Refunds grouped by when issued | | [Refund Count](/reference/metrics/orders/adjustments/refund-count) | Number of orders with refunds | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Gross revenue minus refunds and discounts | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Refund Amount (by Refund Date): Track When Refunds Are Issued Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/refund-amount-by-refund-date Track refund amounts by the date refunds were issued. Monitor cash flow impact, identify refund spikes, and understand when returns actually process. Refund amounts attributed to the date the refund was issued, showing when money actually left your account rather than when the original order was placed. ## Formula **Refund Amount (by Refund Date)** = **SUM** ( Refund Value ) **GROUPED BY** Refund Issue Date | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store processed **\$18,450 in refunds** during March, despite variable order volumes: | Date | Refunds Issued | Amount | Notes | | -------- | -------------- | ------- | -------------------------- | | March 5 | 23 | \$2,890 | Post-February sale returns | | March 15 | 47 | \$8,340 | Batch processing day | | March 28 | 31 | \$4,120 | End-of-month spike | The March 15 spike indicates a batch processing event rather than a sudden quality issue. *** ## How It Works This metric groups refunds by when they were processed, not when orders were placed. A January order refunded in March appears in March's totals. This shows the actual cash flow impact of refunds on any given day or period. *** ## When to Use | Scenario | Action | | ---------------------------- | --------------------------------------------------- | | Cash flow forecasting | Predict when refund outflows will hit your account | | Refund processing monitoring | Detect unusual spikes in daily refund activity | | Operations planning | Staff appropriately for high-refund processing days | | Reconciliation | Match refund totals with bank statement debits | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ----------------------------------------- | | [Refund Amount (by Order Date)](/reference/metrics/orders/adjustments/refund-amount-by-order-date) | Refunds attributed to original order date | | [Refund Amount](/reference/metrics/orders/adjustments/refund-amount) | Total refund amount | | [Refund Count](/reference/metrics/orders/adjustments/refund-count) | Number of orders with refunds | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Gross revenue minus refunds and discounts | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Refund Count: Number of Refunded Orders Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/refund-count Track the number of refunded orders in your Shopify store. Monitor return volume, identify problem products, and benchmark refund rates. The total number of orders that received a full or partial refund. ## Formula **Refund Count** = **COUNT** ( Orders ) **WHERE** refund\_amount > 0 | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your store processed **127 refunds** in March across 2,450 total orders: | Week | Refunds | Rate | | ------ | ------- | -------------------- | | Week 1 | 28 | 4.8% | | Week 2 | 31 | 5.2% | | Week 3 | 42 | 6.9% (new SKU issue) | | Week 4 | 26 | 4.3% | *** ## How It Works Refund Count tracks every order that had any refund processed in Shopify. Both full and partial refunds increment this count. Orders with multiple refunds count once. *** ## When to Use | Scenario | Action | | ---------------------- | ------------------------------------------------------ | | Return rate analysis | Compare refund count to total orders for return rate | | Product quality issues | Spike in refunds may indicate defective batch | | Customer satisfaction | High refund counts signal experience problems | | Seasonal patterns | Track if returns increase after holidays or promotions | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | --------------------------------------- | | [Refund Amount](/reference/metrics/orders/adjustments/refund-amount) | Dollar value of these refunds | | [Refund %](/reference/metrics/orders/adjustments/refund-percent) | Refund Count ÷ Orders | | [Refund Per Order](/reference/metrics/orders/adjustments/refund-per-order) | Average refund value per refunded order | | [Cancelled Orders](/reference/metrics/orders/adjustments/cancelled-orders) | Orders cancelled before fulfillment | | [Orders](/reference/metrics/orders/counts/orders) | Total orders (denominator for rate) | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Refund Gross Rate: Measure Return Impact on Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/refund-gross-rate Track total refunds as a percentage of gross revenue. Identify which order cohorts have high return rates and measure the impact on your top-line. Refund Gross Rate shows what portion of your gross revenue is being returned—a key indicator of product satisfaction and sizing accuracy. ## Formula **Refund Gross Rate** = ( [**Refund Amount**](/reference/metrics/orders/adjustments/refund-amount) ÷ [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------ | ------------------------------------------ | | [**Refund Amount**](/reference/metrics/orders/adjustments/refund-amount) | Total dollar value of all refunds issued | | [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Total revenue before discounts and refunds | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store generated **\$125,000 in gross revenue** in January with **\$8,750 in total refunds**. | Metric | Value | Calculation | | --------------------- | --------- | ------------------------- | | Gross Revenue | \$125,000 | — | | Refund Amount | \$8,750 | — | | **Refund Gross Rate** | **7.0%** | \$8,750 ÷ \$125,000 × 100 | *** ## How It Works This metric divides total refund dollars by gross revenue, giving you the percentage of sales value being returned. Unlike Refund %, which counts refunded orders, this rate measures the financial impact of returns on your top-line revenue. *** ## When to Use | Scenario | Action | | --------------------------- | ---------------------------------------------------- | | Benchmarking return rates | Compare against industry average (8-10% for apparel) | | Evaluating product quality | Investigate products with rates above 10% | | Assessing sizing/fit issues | High rates often signal sizing guide problems | | Measuring seasonal patterns | Track holiday vs. regular period refund rates | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ---------------------------------------- | | [Refund Amount](/reference/metrics/orders/adjustments/refund-amount) | Dollar value used in numerator | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Denominator — revenue before adjustments | | [Refund Net Rate](/reference/metrics/orders/adjustments/refund-net-rate) | Same calculation against net revenue | | [Discount %](/reference/metrics/orders/adjustments/discount-percent) | Another adjustment rate metric | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Refund Net Rate: Revenue Lost to Refunds Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/refund-net-rate Track the percentage of gross revenue returned as refunds. Monitor product quality, reduce revenue leakage, and benchmark refund performance. The percentage of gross revenue that was refunded to customers. ## Formula **Refund Net Rate** = ( [**Refund Amount**](/reference/metrics/orders/adjustments/refund-amount) ÷ [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------ | ---------------------------------------- | | [**Refund Amount**](/reference/metrics/orders/adjustments/refund-amount) | Total dollar value refunded to customers | | [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Revenue before discounts and refunds | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store generated **\$125,000** in gross revenue with **\$3,750** in refunds last month: | Month | Gross Revenue | Refunds | Refund Net Rate | | -------- | ------------- | ------- | --------------- | | January | \$125,000 | \$3,750 | 3.0% | | February | \$118,000 | \$4,720 | 4.0% | | March | \$132,000 | \$2,640 | 2.0% | *** ## How It Works Refund Net Rate measures revenue leakage from refunds as a percentage of gross revenue. Unlike Refund %, which counts the number of refunded orders, this metric shows the actual dollar impact. A 5% refund net rate means \$5 of every \$100 in gross revenue is returned. *** ## When to Use | Scenario | Action | | ----------------------- | ------------------------------------------------------ | | Monitor product quality | Spikes indicate sizing, quality, or expectation issues | | Benchmark fulfillment | Compare rates across product lines or suppliers | | Calculate true margins | Factor refund leakage into profitability models | | Evaluate promotions | High refunds after sales may signal buyer's remorse | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | ----------------------------------------------------- | | [Refund Amount](/reference/metrics/orders/adjustments/refund-amount) | Numerator—total dollars refunded | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Denominator—revenue before adjustments | | [Refund %](/reference/metrics/orders/adjustments/refund-percent) | Count-based rate (orders with refunds ÷ total orders) | | [Refund Per Order](/reference/metrics/orders/adjustments/refund-per-order) | Average refund amount per order | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Gross Revenue − Refunds − Discounts | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Refund Per Order: Average Refund Amount Per Order Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/refund-per-order Track the average refund amount per order from your Shopify store. Measure refund impact on profitability and identify product or fulfillment issues. The average refund amount issued per order. ## Formula **Refund Per Order** = [**Refund Amount**](/reference/metrics/orders/adjustments/refund-amount) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------ | ---------------------------------------- | | [**Refund Amount**](/reference/metrics/orders/adjustments/refund-amount) | Total dollar value of all refunds issued | | [**Orders**](/reference/metrics/orders/counts/orders) | Total number of completed orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store processed **2,450 orders** in February with **\$8,575** in total refunds: | Metric | Value | | -------------------- | ---------- | | Refund Amount | \$8,575 | | Order Count | 2,450 | | **Refund Per Order** | **\$3.50** | *** ## How It Works Refund Per Order divides total refund dollars by total orders—not just refunded orders. This gives you the average refund liability per transaction, helping you understand the true cost of returns across your entire order base. *** ## When to Use | Scenario | Action | | -------------------------- | -------------------------------------------------------------- | | Tracking return cost | Compare against Net AOV to understand refund impact on margins | | Evaluating product quality | Higher values may signal product issues or unmet expectations | | Assessing sizing guides | Apparel brands should track this alongside return reasons | | Comparing campaigns | Identify traffic sources with higher post-purchase refunds | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------- | -------------------------------------------------------- | | [Refund Amount](/reference/metrics/orders/adjustments/refund-amount) | Numerator: total refund dollars | | [Orders](/reference/metrics/orders/counts/orders) | Denominator: transaction count | | [Refund %](/reference/metrics/orders/adjustments/refund-percent) | Percentage of orders refunded | | [Net AOV](/reference/metrics/orders/aov/net-aov) | Order value after refunds—compare to gauge refund impact | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Refund %: Percentage of Orders Refunded Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/refund-percent Track the percentage of orders that resulted in refunds. Monitor return rates by product, campaign, or time period to identify quality issues and optimize operations. The percentage of orders that resulted in a refund. ## Formula **Refund %** = ( [**Refund Count**](/reference/metrics/orders/adjustments/refund-count) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------- | --------------------------------------- | | [**Refund Count**](/reference/metrics/orders/adjustments/refund-count) | Number of orders with refunds processed | | [**Orders**](/reference/metrics/orders/counts/orders) | Total number of orders placed | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store processed **1,847 orders** in March with **92 refunds**: | Period | Orders | Refunds | Refund % | | ------ | ------ | ------- | -------- | | Week 1 | 423 | 18 | 4.3% | | Week 2 | 489 | 21 | 4.3% | | Week 3 | 461 | 34 | 7.4% | | Week 4 | 474 | 19 | 4.0% | Week 3's spike to 7.4% warrants investigation—check product quality or fulfillment issues. *** ## How It Works Refund % calculates the ratio of refunded orders to total orders. The metric counts any order with a refund—partial or full—as one refund. This gives you a clear view of what percentage of customers received money back. *** ## When to Use | Scenario | Action | | --------------------- | ----------------------------------------------------- | | Quality monitoring | Track refund rates by product to identify defects | | Campaign analysis | Compare refund rates across acquisition channels | | Seasonal benchmarking | Monitor how return rates change during peak seasons | | Operations review | Investigate spikes in refund % for fulfillment issues | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | -------------------------------- | | [Refund Count](/reference/metrics/orders/adjustments/refund-count) | Numerator (raw count of refunds) | | [Orders](/reference/metrics/orders/counts/orders) | Denominator (total orders) | | [Refund Amount](/reference/metrics/orders/adjustments/refund-amount) | Dollar value of refunds issued | | [Refund Per Order](/reference/metrics/orders/adjustments/refund-per-order) | Average refund amount per order | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Refund + Discount: Combined Revenue Adjustments Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/refund-plus-discount Track total refunds and discounts combined in one metric. See how revenue adjustments impact net revenue, gross margins, and overall profitability. The sum of total refunds and total discounts—a single view of all revenue adjustments. ## Formula **Refund + Discount** = [**Refund Amount**](/reference/metrics/orders/adjustments/refund-amount) + [**Discount Amount**](/reference/metrics/orders/adjustments/discount-amount) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | ----------------------------------- | | [**Refund Amount**](/reference/metrics/orders/adjustments/refund-amount) | Dollar amount refunded to customers | | [**Discount Amount**](/reference/metrics/orders/adjustments/discount-amount) | Dollar value of discounts applied | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store had **\$12,450** in combined adjustments this month: | Component | Amount | Share | | --------- | ------- | ----- | | Refunds | \$4,200 | 34% | | Discounts | \$8,250 | 66% | With \$125,000 in gross revenue, adjustments represent 10% of your top line. *** ## How It Works Refund + Discount combines both types of revenue adjustments into a single metric. This provides visibility into total "leakage" from gross revenue without needing to track refunds and discounts separately. *** ## When to Use | Scenario | Action | | -------------------------------- | -------------------------------------------------------------------------------- | | Understanding net revenue impact | See how much revenue is adjusted away from gross | | Comparing adjustment trends | Track if total adjustments are increasing over time | | Profitability analysis | Factor combined adjustments into margin calculations | | Promotion vs. returns balance | Understand the mix of intentional (discounts) vs. reactive (refunds) adjustments | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ---------------------------------------- | | [Refund Amount](/reference/metrics/orders/adjustments/refund-amount) | Refund portion of this combined metric | | [Discount Amount](/reference/metrics/orders/adjustments/discount-amount) | Discount portion of this combined metric | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Revenue before these adjustments | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Gross Revenue minus adjustments | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Cancelled Amount: Lost Revenue from Repeat Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-cancelled-amount Track cancelled order value from returning customers. Monitor repeat buyer cancellations to identify fulfillment issues and protect customer lifetime value. The total dollar value of orders from returning customers that were cancelled before fulfillment. ## Formula **Returning Customer Cancelled Amount** = **SUM** ( Cancelled Order Value ) **WHERE** [customer\_type = returning\_customer](/data-dictionary/measures-and-dimensions#visitor-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | [**Cancelled Amount**](/reference/metrics/orders/adjustments/cancelled-amount) | Total dollar value of cancelled orders | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from customers who have purchased before | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store had **\$4,250 in returning customer cancellations** during March: | Week | RC Cancelled Amount | RC Cancelled Orders | Avg Order Value | | ------ | ------------------- | ------------------- | --------------- | | Week 1 | \$890 | 4 | \$222.50 | | Week 2 | \$1,340 | 6 | \$223.33 | | Week 3 | \$1,120 | 5 | \$224.00 | | Week 4 | \$900 | 4 | \$225.00 | *** ## How It Works This metric sums the total value of cancelled orders specifically from returning customers—buyers who have completed at least one previous purchase. When a returning customer's order is cancelled before fulfillment in Shopify, the order value is added to this total. *** ## When to Use | Scenario | Action | | ------------------------------------- | ------------------------------------------------------------------------- | | Rising cancellation value | Investigate inventory issues or shipping delays affecting loyal customers | | Compare to new customer cancellations | Determine if repeat buyers have different cancellation patterns | | High-value order cancellations | Prioritize outreach to retain valuable repeat customers | | Seasonal analysis | Identify if promotions drive cancellation spikes among returning buyers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | -------------------------------------------- | | [RC Cancelled Orders](/reference/metrics/orders/adjustments/returning-customer-cancelled-orders) | Count of cancelled returning customer orders | | [Cancelled Amount](/reference/metrics/orders/adjustments/cancelled-amount) | Total cancelled amount across all customers | | [NC Cancelled Amount](/reference/metrics/orders/adjustments/new-customer-cancelled-amount) | Cancelled amount from first-time buyers | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Cancelled Orders: Cancellations by Repeat Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-cancelled-orders Track cancelled orders from returning customers. Monitor repeat buyer cancellations to identify fulfillment issues and protect customer retention. The number of orders from returning customers that were cancelled before fulfillment. ## Formula **Returning Customer Cancelled Orders** = **COUNT** ( [**Cancelled Orders**](/reference/metrics/orders/adjustments/cancelled-orders) ) **WHERE** [customer\_type = returning\_customer](/data-dictionary/measures-and-dimensions#visitor-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | [**Cancelled Orders**](/reference/metrics/orders/adjustments/cancelled-orders) | Total count of cancelled orders | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from customers who have purchased before | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your store had **22 Returning Customer Cancelled Orders** this month out of 2,340 returning customer orders: | Week | RC Cancellations | RC Orders | Cancel % | | --------- | ---------------- | --------- | ---------------------- | | Week 1 | 4 | 580 | 0.7% | | Week 2 | 8 | 610 | 1.3% (inventory issue) | | Week 3 | 6 | 590 | 1.0% | | Week 4 | 4 | 560 | 0.7% | | **Total** | **22** | **2,340** | **0.9%** | *** ## How It Works This metric counts orders placed by returning customers that were cancelled before fulfillment in Shopify. A customer is classified as "returning" if they have completed at least one previous purchase. Cancellations typically occur due to inventory stockouts, payment issues, or customer requests. *** ## When to Use | Scenario | Action | | ------------------------------ | ----------------------------------------------------------- | | Protecting customer retention | Monitor cancellation trends among your most valuable buyers | | Investigating inventory issues | Spikes may indicate stockouts affecting repeat purchasers | | Measuring lost opportunity | Pair with RC Cancelled Amount for dollar impact | | Comparing customer types | Benchmark against new customer cancellation rates | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | ------------------------------------------------ | | [RC Cancelled Amount](/reference/metrics/orders/adjustments/returning-customer-cancelled-amount) | Dollar value of these cancellations | | [Cancelled Orders](/reference/metrics/orders/adjustments/cancelled-orders) | Total cancellations (all customers) | | [NC Cancelled Orders](/reference/metrics/orders/adjustments/new-customer-cancelled-orders) | Same metric for first-time buyers | | [Returning Customers](/reference/metrics/orders/customers/returning-customers) | Total returning customers (denominator for rate) | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Discount Gross Rate: Discounts as % of Gross Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-discount-gross-rate Measure returning customer discount dollars as a percentage of gross revenue. Track loyalty discount impact on repeat-purchase margins with Shopify order data. Returning customer discount amount as a percentage of returning customer gross revenue. ## Formula **Returning Customer Discount Gross Rate** = ( [**Returning Customer Discounts**](/reference/metrics/orders/adjustments/returning-customer-discounts) ÷ [**Returning Customer Gross Revenue**](/reference/metrics/orders/revenue/returning-customer-gross-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | | [**Returning Customer Discounts**](/reference/metrics/orders/adjustments/returning-customer-discounts) | Total dollar value of discounts applied to repeat buyer orders | | [**Returning Customer Gross Revenue**](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Total revenue from returning customers before adjustments | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your returning customers generated **\$145,000** in gross revenue with **\$11,600** in loyalty discounts: | Metric | Value | | -------------------------------- | --------- | | Returning Customer Gross Revenue | \$145,000 | | Returning Customer Discounts | \$11,600 | | **RC Discount Gross Rate** | **8.0%** | *** ## How It Works This metric divides returning customer discount dollars by returning customer gross revenue, then multiplies by 100. It measures how much repeat buyer revenue is offset by loyalty or promotional discounts. High rates may indicate over-reliance on discounts to drive repeat purchases, cutting into retention margins. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------------------------ | | Loyalty program evaluation | Assess whether loyalty discounts are eroding repeat-purchase profitability | | Margin analysis | Monitor discount impact on your most valuable customer segment | | New vs. returning comparison | Benchmark against NC Discount Gross Rate for acquisition vs. retention balance | | Retention strategy | Identify if repeat customers can be retained with smaller discounts | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | ------------------------------------------------- | | [RC Discount %](/reference/metrics/orders/adjustments/returning-customer-discount-percent) | Related percentage metric for returning customers | | [RC Discounts](/reference/metrics/orders/adjustments/returning-customer-discounts) | Total discount amount for returning customers | | [NC Discount Gross Rate](/reference/metrics/orders/adjustments/new-customer-discount-gross-rate) | Compare retention vs. acquisition discount rates | | [Discount Amount](/reference/metrics/orders/adjustments/discount-amount) | Total discounts across all customers | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Discount Order Rate: Retention Discount Dependency Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-discount-order-rate Track the percentage of returning customer orders using discounts. Measure retention discount dependency and optimize loyalty promotional strategy. The share of returning customer orders that used a discount code or promotion. ## Formula **Returning Customer Discount Order Rate** = ( [**Returning Customer Discounted Orders**](/reference/metrics/orders/adjustments/discount-count) ÷ [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | **Returning Customer Discounted Orders** | Count of returning customer orders with a discount applied | | [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) | Total number of returning customer orders | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from customers who have purchased before | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store had **1,156 returning customer orders** in January, with **462 using discount codes**: | Period | RC Discounted Orders | RC Orders | Rate | | -------- | -------------------- | --------- | ----- | | January | 462 | 1,156 | 40.0% | | February | 387 | 1,034 | 37.4% | *** ## How It Works Counts repeat buyer orders with discounts and divides by total returning customer orders. Elevated values may signal discount dependency in retention; declining rates show loyal customers converting without incentives. *** ## When to Use | Scenario | Action | | ------------------------------ | ---------------------------------------------------------- | | Evaluating loyalty program ROI | High rates mean discounts drive most repeat purchases | | Testing discount reduction | Monitor if rate drops without hurting retention | | Comparing to new customers | Identify if new vs repeat buyers need different incentives | | Optimizing retention margins | Lower rates improve profitability on repeat orders | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | ---------------------------------------------- | | [NC Discount Order Rate](/reference/metrics/orders/adjustments/new-customer-discount-order-rate) | Same metric for first-time customers | | [RC Discounts](/reference/metrics/orders/adjustments/returning-customer-discounts) | Total discount dollars for returning customers | | [Discount Count](/reference/metrics/orders/adjustments/discount-count) | Total orders with discounts (all customers) | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Discount Per Order: Average RC Discount Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-discount-per-order Track the average discount amount per returning customer order from Shopify. Measure repeat buyer promotional costs and optimize retention discount strategies. The average discount dollar value applied per returning customer order. ## Formula **Returning Customer Discount Per Order** = [**Returning Customer Discounts**](/reference/metrics/orders/adjustments/returning-customer-discounts) ÷ [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------- | | [**Returning Customer Discounts**](/reference/metrics/orders/adjustments/returning-customer-discounts) | Total discount dollars applied to returning customer orders | | [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) | Number of orders placed by returning customers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store processed **856 returning customer orders** in March with **\$6,848** in discounts: | Metric | Value | | ------------------------- | ---------- | | RC Discounts | \$6,848 | | RC Order Count | 856 | | **RC Discount Per Order** | **\$8.00** | Compare to New Customer Discount Per Order (\$12.50) to see if you're over-incentivizing acquisition versus retention. *** ## How It Works Returning Customer Discount Per Order divides total discounts on repeat buyer orders by the number of those orders. Unlike the total discount figure, this metric normalizes for volume—revealing whether discount intensity is rising or falling as you scale retention. *** ## When to Use | Scenario | Action | | ------------------------ | ----------------------------------------------------------------- | | Retention cost tracking | Monitor per-order discount cost for repeat buyers | | Segment comparison | Compare against new customer discount per order | | Loyalty program analysis | Evaluate if loyalty discounts are creeping higher over time | | Margin protection | Set thresholds to prevent discount escalation on repeat purchases | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | --------------------------------------------------------- | | [RC Discounts](/reference/metrics/orders/adjustments/returning-customer-discounts) | Numerator: total discount dollars for returning customers | | [Returning Customers](/reference/metrics/orders/customers/returning-customers) | Denominator: returning customer order count | | [RC Discount %](/reference/metrics/orders/adjustments/returning-customer-discount-percent) | Discounts as percentage of RC gross revenue | | [Discount Per Order](/reference/metrics/orders/adjustments/discount-per-order) | All-customer discount per order for comparison | | [NC Discount Per Order](/reference/metrics/orders/adjustments/new-customer-discount-per-order) | Acquisition discount per order for segmented analysis | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Discount %: Discount Share of Gross Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-discount-percent Measure returning customer discounts as a percentage of gross revenue. Track loyalty discount impact on repeat purchase margins with Shopify order data. Returning customer discounts as a percentage of returning customer gross revenue. ## Formula **Returning Customer Discount %** = ( [**Returning Customer Discounts**](/reference/metrics/orders/adjustments/returning-customer-discounts) ÷ [**Returning Customer Gross Revenue**](/reference/metrics/orders/revenue/returning-customer-gross-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | | [**Returning Customer Discounts**](/reference/metrics/orders/adjustments/returning-customer-discounts) | Total dollar value of discounts applied to returning customer orders | | [**Returning Customer Gross Revenue**](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Total revenue from returning customers before adjustments | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your returning customers generated **\$125,000** in gross revenue with **\$8,750** in discounts: | Metric | Value | | --------------------------------- | --------- | | Returning Customer Gross Revenue | \$125,000 | | Returning Customer Discounts | \$8,750 | | **Returning Customer Discount %** | **7.0%** | *** ## How It Works This metric divides returning customer discounts by returning customer gross revenue, then multiplies by 100. Higher percentages indicate heavier discount reliance for repeat purchases, which may signal loyalty program overuse or discount dependency in retention strategies. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------- | | Evaluating loyalty programs | Compare discount rates to ensure repeat margins stay healthy | | Retention cost analysis | Monitor if discount dependency is growing over time | | New vs. returning comparison | Benchmark against new customer discount rates | | Margin optimization | Identify opportunities to reduce unnecessary repeat discounts | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | -------------------------------------------------- | | [Returning Customer Discounts](/reference/metrics/orders/adjustments/returning-customer-discounts) | The numerator — total discount dollars | | [Returning Customer Gross Revenue](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | The denominator — gross revenue from repeat buyers | | [RC Discount Per Order](/reference/metrics/orders/adjustments/returning-customer-discount-per-order) | Average discount per returning customer order | | [NC Discount %](/reference/metrics/orders/adjustments/new-customer-discount-percent) | Compare acquisition vs. retention discount rates | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Discount Amount: Repeat Buyer Discount Total Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-discounts Track total discount dollars applied to returning customer orders. Measure loyalty program impact and repeat purchase discount strategies with Shopify data. Total dollar value of discounts applied to returning customer orders. ## Formula **Returning Customer Discount Amount** = **SUM** ( [**Discount Amount**](/reference/metrics/orders/adjustments/discount-amount) ) **WHERE** customer\_type = returning\_customer ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | [**Discount Amount**](/reference/metrics/orders/adjustments/discount-amount) | Total discounts applied to orders | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from customers who have purchased before | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store applied **\$12,450** in discounts to returning customer orders in Q1: | Month | RC Discounts | RC Orders | Discount/Order | | -------- | ------------ | --------- | -------------- | | January | \$3,820 | 412 | \$9.27 | | February | \$4,150 | 478 | \$8.68 | | March | \$4,480 | 523 | \$8.57 | Declining discount per order while total discounts grow indicates healthy repeat purchase volume with improving margins. *** ## How It Works This metric sums all discount amounts from orders placed by returning customers. A customer is classified as "returning" when they have at least one prior completed order in Shopify. Discounts include coupon codes, automatic discounts, and manual adjustments applied at checkout. *** ## When to Use | Scenario | Action | | ------------------------------ | -------------------------------------------------------------------- | | Measuring loyalty program cost | Track how much revenue is given away to repeat buyers | | Comparing segments | Benchmark against new customer discounts to ensure balanced strategy | | Retention budget analysis | Monitor discount spend as a component of retention cost | | Margin optimization | Identify opportunities to reduce excessive repeat-purchase discounts | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | | [Returning Customer Discount %](/reference/metrics/orders/adjustments/returning-customer-discount-percent) | Discounts as percentage of gross revenue | | [New Customer Discounts](/reference/metrics/orders/adjustments/new-customer-discounts) | Compare acquisition vs. retention discount spending | | [Discount Amount](/reference/metrics/orders/adjustments/discount-amount) | Total discounts across all customer types | | [Returning Customer Refunds](/reference/metrics/orders/adjustments/returning-customer-refunds) | Combined with discounts for total adjustments | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Refund Count: Orders Refunded by Repeat Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-refund-count Count orders from returning customers that resulted in refunds. Monitor loyalty program health and identify issues with repeat buyer satisfaction. The number of returning customer orders that had a refund issued. ## Formula **Returning Customer Refund Count** = **COUNT** ( [**Refunded Orders**](/reference/metrics/orders/adjustments/refund-count) ) **WHERE** customer\_type = returning\_customer ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ------------------------------ | | [**Refunded Orders**](/reference/metrics/orders/adjustments/refund-count) | Orders with refunds issued | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to returning customers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your store had **89 returning customer refunds** this quarter: | Channel | RC Refunds | RC Orders | Refund % | | --------- | ---------- | --------- | -------- | | Meta Ads | 38 | 720 | 5.3% | | Email | 32 | 850 | 3.8% | | Organic | 19 | 430 | 4.4% | | **Total** | **89** | **2,000** | **4.5%** | *** ## How It Works This metric counts orders placed by repeat customers that Shopify marks as refunded. A customer is classified as "returning" when they have at least one prior order in your Shopify store. The count includes full and partial refunds. *** ## When to Use | Scenario | Action | | --------------------------- | ----------------------------------------------- | | Monitoring loyalty health | Compare RC refund count to NC refund count | | Evaluating product changes | Track if updates increase refunds from regulars | | Calculating refund rate | Use as numerator in Returning Customer Refund % | | Identifying retention risks | Rising counts may signal declining satisfaction | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ---------------------------------------- | | [Returning Customer Refund %](/reference/metrics/orders/adjustments/returning-customer-refund-percent) | This count divided by RC orders | | [Returning Customer Refunds](/reference/metrics/orders/adjustments/returning-customer-refunds) | Dollar amount (this metric is the count) | | [New Customer Refund Count](/reference/metrics/orders/adjustments/new-customer-refund-count) | Same metric for first-time buyers | | [Refund Count](/reference/metrics/orders/adjustments/refund-count) | Total refund count (all customers) | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Refund per Order: Average Repeat-Buyer Refund Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-refund-per-order Track average refund amount per returning customer order. Measure repeat-buyer return costs and compare against new customer refund behavior. Average refund amount per returning customer order. ## Formula **Returning Customer Refund per Order** = [**Returning Customer Refunds**](/reference/metrics/orders/adjustments/returning-customer-refunds) ÷ [**Returning Customer Order Count**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ------------------------------------------- | | [**Returning Customer Refunds**](/reference/metrics/orders/adjustments/returning-customer-refunds) | Total refund amount for returning customers | | [**Returning Customer Order Count**](/reference/metrics/orders/counts/orders) | Total orders from returning customers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store processed **1,603 returning customer orders** in February with **\$3,494** in refunds: | Metric | Value | | -------------------------- | ---------- | | Returning Customer Refunds | \$3,494 | | Returning Customer Orders | 1,603 | | **RC Refund per Order** | **\$2.18** | Compare this to your New Customer Refund per Order of \$3.50—repeat buyers cost 38% less in refunds per order. *** ## How It Works This metric divides total returning customer refunds by total returning customer orders—not just refunded orders. This gives you the average refund liability per repeat buyer transaction, helping you understand customer retention quality and whether loyal buyers maintain lower return rates than first-time purchasers. *** ## When to Use | Scenario | Action | | ------------------------------------ | ------------------------------------------------------------------------- | | Comparing NC vs RC behavior | Returning customers typically have lower refund rates than new customers | | Evaluating product quality over time | Rising RC refunds may indicate quality degradation affecting loyal buyers | | Measuring loyalty program impact | Track whether loyalty members have better post-purchase satisfaction | | Forecasting retention costs | Factor into LTV calculations alongside repeat purchase rates | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------- | | [Returning Customer Refunds](/reference/metrics/orders/adjustments/returning-customer-refunds) | Numerator: total RC refund dollars | | [Returning Customer Refund %](/reference/metrics/orders/adjustments/returning-customer-refund-percent) | Percentage of RC orders refunded | | [New Customer Refund per Order](/reference/metrics/orders/adjustments/new-customer-refund-per-order) | Compare new vs returning customer refund behavior | | [Refund per Order](/reference/metrics/orders/adjustments/refund-per-order) | Overall refund per order across all customers | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Refund %: Track Repeat Buyer Returns Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-refund-percent Measure the percentage of returning customer orders that result in refunds. Compare to new customer refund rates and identify retention risks. The share of returning customer orders that resulted in a refund. ## Formula **Returning Customer Refund %** = [**Returning Customer Refund Count**](/reference/metrics/orders/adjustments/returning-customer-refund-count) ÷ [**Returning Customer Order Count**](/reference/metrics/orders/counts/orders) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------ | | [**Returning Customer Refund Count**](/reference/metrics/orders/adjustments/returning-customer-refund-count) | Number of returning customer orders with refunds | | [**Returning Customer Order Count**](/reference/metrics/orders/counts/orders) | Total returning customer orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store processed **1,850 returning customer orders** in Q1, with **148 resulting in refunds** (8.0%): | Month | RC Orders | RC Refunds | RC Refund % | | -------- | --------- | ---------- | ----------- | | January | 580 | 41 | 7.1% | | February | 620 | 50 | 8.1% | | March | 650 | 57 | 8.8% | *** ## How It Works Divides refunded returning customer orders by total returning customer orders. A returning customer is anyone who previously completed an order. Refunds are attributed to the original order date and include both full and partial refunds. *** ## When to Use | Scenario | Action | | ---------------------------------- | ------------------------------------------------------------------------- | | Comparing customer segments | Higher RC refund rate may signal product quality issues for repeat buyers | | Identifying retention risks | Rising refund rates among repeat buyers can predict churn | | Product category analysis | Segment by product to find categories with higher repeat-buyer returns | | Benchmarking against new customers | Compare to NC Refund % to understand segment behavior | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Refund %](/reference/metrics/orders/adjustments/refund-percent) | Overall refund rate across all customers | | [New Customer Refund %](/reference/metrics/orders/adjustments/new-customer-refund-percent) | Compare acquisition vs retention refund behavior | | [Returning Customer Refunds](/reference/metrics/orders/adjustments/returning-customer-refunds) | Dollar amount refunded to returning customers | | [Returning Customer Refund Count](/reference/metrics/orders/adjustments/returning-customer-refund-count) | Numerator in this formula | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Refund + Discount: Combined Adjustments Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-refund-plus-discount Track total refunds and discounts from returning customers. Combine both adjustment types to measure the full impact on returning customer revenue. The combined total of refunds and discounts applied to orders from returning customers. ## Formula **Returning Customer Refund + Discount** = [**Returning Customer Refunds**](/reference/metrics/orders/adjustments/returning-customer-refunds) + [**Returning Customer Discounts**](/reference/metrics/orders/adjustments/returning-customer-discounts) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------ | --------------------------------------------------- | | [**Returning Customer Refunds**](/reference/metrics/orders/adjustments/returning-customer-refunds) | Total refund amount for returning customer orders | | [**Returning Customer Discounts**](/reference/metrics/orders/adjustments/returning-customer-discounts) | Total discount amount for returning customer orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store processed **\$8,420** in returning customer adjustments this month: | Adjustment Type | Amount | Share | | --------------- | ----------- | ----- | | Refunds | \$5,180 | 62% | | Discounts | \$3,240 | 38% | | **Total** | **\$8,420** | 100% | *** ## How It Works This metric sums all refunds and discounts applied to orders placed by returning customers. Returning customers are identified as shoppers who have made at least one previous purchase. The combined value represents the total revenue adjustment for this customer segment. *** ## When to Use | Scenario | Action | | ---------------------------- | ---------------------------------------------------------------------- | | Analyzing repeat buyer costs | Compare total adjustments against returning customer gross revenue | | Loyalty program impact | Track if returning customers receive more discounts than new customers | | Retention cost analysis | Factor combined adjustments into customer lifetime value calculations | | Segment comparison | Compare against new customer adjustments to identify trends | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ----------------------------------- | | [Returning Customer Refunds](/reference/metrics/orders/adjustments/returning-customer-refunds) | Refund component of this metric | | [Returning Customer Discounts](/reference/metrics/orders/adjustments/returning-customer-discounts) | Discount component of this metric | | [NC Refund + Discount](/reference/metrics/orders/adjustments/new-customer-refund-plus-discount) | Same metric for new customers | | [Refund + Discount](/reference/metrics/orders/adjustments/refund-plus-discount) | Combined total across all customers | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Refunds: Repeat Buyer Refund Total Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-refunds Track total refund dollars for returning customers. Monitor repeat buyer satisfaction and identify product or service issues affecting loyal customers. The total dollar amount refunded to returning customers (repeat buyers). ## Formula **Returning Customer Refunds** = **SUM** ( [**Refund Amount**](/reference/metrics/orders/adjustments/refund-amount) ) **WHERE** customer\_type = returning\_customer ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ------------------------------- | | [**Refund Amount**](/reference/metrics/orders/adjustments/refund-amount) | Total refunds applied to orders | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to returning customers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store refunded **\$8,720** to returning customers in March across 89 refunds: | Week | Returning Customer Refunds | Refund Count | | ------ | -------------------------- | ------------ | | Week 1 | \$1,892 | 19 | | Week 2 | \$2,456 | 28 | | Week 3 | \$2,502 | 25 | | Week 4 | \$1,870 | 17 | A spike in Week 2 may indicate a quality issue with a recent product batch or fulfillment delays affecting repeat buyers. *** ## How It Works This metric sums all refund amounts from orders placed by returning customers. A customer is classified as "returning" when they have at least one prior completed order in Shopify. High values may indicate product quality degradation, unmet expectations from loyal customers, or fulfillment issues. *** ## When to Use | Scenario | Action | | ------------------------------- | -------------------------------------------------------------- | | Monitoring customer retention | High refunds from repeat buyers signal satisfaction issues | | Identifying quality problems | Compare to new customer refunds to isolate repeat buyer issues | | Evaluating product changes | Track refunds after product updates to measure impact | | Measuring loyalty program value | Correlate with loyalty tier to assess member satisfaction | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [New Customer Refunds](/reference/metrics/orders/adjustments/new-customer-refunds) | Compare new vs. returning customer refund behavior | | [Refund Amount](/reference/metrics/orders/adjustments/refund-amount) | Total refunds across all customer types | | [Returning Customer Refund %](/reference/metrics/orders/adjustments/returning-customer-refund-percent) | Share of returning customer orders refunded | | [Returning Customer Refund per Order](/reference/metrics/orders/adjustments/returning-customer-refund-per-order) | Average refund amount per returning customer order | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Shipping Revenue: Shipping Fees from Repeat Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-shipping Track total shipping fees collected from returning customer orders. Measure repeat buyer shipping contribution to revenue with Shopify order data. Returning Customer Shipping Revenue measures the total shipping fees collected from orders placed by customers who have purchased before. ## Formula **Returning Customer Shipping Revenue** = **SUM** ( Shipping Amount ) **WHERE** customer\_type = returning\_customer ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | [**Shipping Revenue**](/reference/metrics/orders/adjustments/shipping-revenue) | Total shipping fees collected from all orders | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from customers who have purchased before | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store collected **\$4,850** in shipping fees from returning customers in March: | Metric | Value | | --------------------------------- | ---------- | | Returning Customer Orders | 970 | | RC Shipping Revenue | \$4,850 | | **Average Shipping Per RC Order** | **\$5.00** | *** ## How It Works Returning Customer Shipping Revenue sums all shipping fees charged on orders placed by returning customers. A returning customer is any buyer who has at least one prior completed order in your Shopify store before the current order date. *** ## When to Use | Scenario | Action | | ------------------------------- | ---------------------------------------------------------------- | | Shipping strategy analysis | Compare RC vs NC shipping to identify loyalty opportunities | | Free shipping threshold testing | Measure impact of shipping offers on repeat purchases | | Revenue composition breakdown | Understand shipping's contribution to returning customer revenue | | Retention program evaluation | Track if loyalty perks like free shipping affect repeat volume | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [Shipping Revenue](/reference/metrics/orders/adjustments/shipping-revenue) | Total shipping from all customers | | [New Customer Shipping](/reference/metrics/orders/adjustments/new-customer-shipping) | Compare acquisition vs retention shipping | | [RC Shipping %](/reference/metrics/orders/adjustments/returning-customer-shipping-percent) | Shipping as percentage of returning customer revenue | | [RC Shipping Per Order](/reference/metrics/orders/adjustments/returning-customer-shipping-per-order) | Average shipping per returning customer order | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Shipping Per Order: Average Shipping Fee Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-shipping-per-order Track average shipping fees collected per returning customer order. Measure repeat buyer shipping efficiency and compare against new customers. The average shipping fee collected per returning customer order. ## Formula **Returning Customer Shipping Per Order** = [**Returning Customer Shipping Revenue**](/reference/metrics/orders/adjustments/returning-customer-shipping) ÷ [**Returning Customer Order Count**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------ | | [**Returning Customer Shipping Revenue**](/reference/metrics/orders/adjustments/returning-customer-shipping) | Total shipping fees collected from returning customers | | [**Returning Customer Order Count**](/reference/metrics/orders/counts/orders) | Number of orders from customers with prior purchases | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store collected **\$5,640** in shipping from **1,128 returning customer orders** in April: | Metric | Value | | --------------------------- | ---------- | | Returning Customer Shipping | \$5,640 | | Returning Customer Orders | 1,128 | | **RC Shipping Per Order** | **\$5.00** | *** ## How It Works This metric divides total shipping fees collected from returning customers by the number of returning customer orders. It reveals the average shipping contribution from repeat buyers—useful for comparing shipping behavior between new and returning customer segments. *** ## When to Use | Scenario | Action | | ------------------------- | --------------------------------------------------------------- | | Loyalty shipping analysis | Compare against NC Shipping Per Order to gauge loyalty benefits | | Free shipping threshold | Test if free shipping offers drive more repeat purchases | | Pricing strategy | Balance shipping fees with customer retention goals | | Segment profitability | Factor shipping revenue into returning customer LTV | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [Returning Customer Shipping Revenue](/reference/metrics/orders/adjustments/returning-customer-shipping) | Numerator: total RC shipping revenue | | [New Customer Shipping Per Order](/reference/metrics/orders/adjustments/new-customer-shipping-per-order) | Compare acquisition vs retention shipping efficiency | | [Returning Customer Shipping %](/reference/metrics/orders/adjustments/returning-customer-shipping-percent) | Shipping as percentage of RC total revenue | | [Shipping Per Order](/reference/metrics/orders/adjustments/shipping-per-order) | Overall average shipping per order | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Shipping %: Revenue Composition Analysis Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-shipping-percent Track returning customer shipping as a percentage of total returning customer revenue. Analyze shipping cost composition for repeat buyers. Returning Customer Shipping % measures shipping revenue as a proportion of total revenue from returning customers. ## Formula **Returning Customer Shipping %** = [**Returning Customer Shipping Revenue**](/reference/metrics/orders/adjustments/returning-customer-shipping) ÷ [**Returning Customer Total Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------ | | [**Returning Customer Shipping Revenue**](/reference/metrics/orders/adjustments/returning-customer-shipping) | Shipping fees collected from returning customer orders | | [**Returning Customer Total Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Total revenue from returning customer orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store's returning customers generated **\$85,000** in total revenue with **\$4,250** in shipping fees. | Metric | Value | | ------------------- | -------- | | RC Shipping Revenue | \$4,250 | | RC Total Revenue | \$85,000 | | **RC Shipping %** | **5.0%** | *** ## How It Works This metric calculates the percentage of returning customer revenue attributable to shipping fees. It divides shipping revenue from returning customers by their total revenue, then multiplies by 100 to express as a percentage. *** ## When to Use | Scenario | Action | | --------------------------------------- | ------------------------------------------------------------------ | | Comparing RC vs NC shipping composition | Determine if returning customers pay different shipping rates | | Evaluating loyalty shipping perks | Measure impact of free/discounted shipping for repeat buyers | | Revenue mix analysis | Understand how shipping contributes to returning customer revenue | | Shipping policy optimization | Identify opportunities to adjust shipping thresholds for retention | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | ----------------------------------- | | [Returning Customer Shipping Revenue](/reference/metrics/orders/adjustments/returning-customer-shipping) | Numerator of this percentage | | [Returning Customer Total Revenue](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Denominator of this percentage | | [New Customer Shipping %](/reference/metrics/orders/adjustments/new-customer-shipping-percent) | Comparable metric for new customers | | [Total Shipping Revenue](/reference/metrics/orders/adjustments/shipping-revenue) | Overall shipping revenue | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Tax: Repeat Buyer Tax Collected Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-tax Track total sales tax collected from returning customer orders. Monitor repeat buyer tax liability and understand tax impact across customer segments. The total sales tax collected from returning customer orders. ## Formula **Returning Customer Tax Collected** = **SUM** ( Tax Amount ) **WHERE** customer\_type = returning\_customer ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ------------------------------- | | [**Tax Collected**](/reference/metrics/orders/adjustments/tax) | Total tax collected from orders | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to returning customers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store collected **\$6,240 in taxes** from returning customer orders in Q1: | Month | RC Tax | RC Orders | Tax/Order | | -------- | ------- | --------- | --------- | | January | \$1,890 | 328 | \$5.76 | | February | \$2,120 | 364 | \$5.82 | | March | \$2,230 | 412 | \$5.41 | Consistent tax per order suggests stable order values from your repeat buyer segment. *** ## How It Works This metric sums all tax collected from orders placed by returning customers. A customer is classified as "returning" when they have at least one prior completed order in Shopify. Tax amounts reflect rates applied at checkout based on customer shipping address and product taxability. *** ## When to Use | Scenario | Action | | ------------------------- | ---------------------------------------------------------- | | Segment tax liability | Track tax owed from repeat buyer transactions | | Compare customer segments | Benchmark against new customer tax to understand mix | | Regional analysis | Break down by state to see where repeat buyers concentrate | | Retention program impact | Monitor how loyalty efforts affect taxable order volume | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | ----------------------------------------------- | | [Tax Collected](/reference/metrics/orders/adjustments/tax) | Total tax across all customer types | | [Returning Customer Tax %](/reference/metrics/orders/adjustments/returning-customer-tax-percent) | Tax as percentage of returning customer revenue | | [New Customer Tax](/reference/metrics/orders/adjustments/new-customer-tax) | Compare acquisition vs retention tax collected | | [Tax Per Order](/reference/metrics/orders/adjustments/tax-per-order) | Average tax per transaction | [See all Adjustment metrics →](/reference/metrics/orders/adjustments) # Returning Customer Tax Per Order: Average Tax on Repeat Purchases Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-tax-per-order Track average tax collected per returning customer order. Analyze tax liability on repeat purchases and compare retention economics across regions. Average tax amount collected per returning customer order. ## Formula **Returning Customer Tax Per Order** = [**Returning Customer Tax Collected**](/reference/metrics/orders/adjustments/returning-customer-tax) ÷ [**Returning Customer Order Count**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [**Returning Customer Tax Collected**](/reference/metrics/orders/adjustments/returning-customer-tax) | Total tax collected from returning customer orders | | [**Returning Customer Order Count**](/reference/metrics/orders/counts/orders) | Total orders placed by returning customers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store collected **\$4,320** in tax from **540 returning customer orders** in May: | Metric | Value | | ------------------------- | ---------- | | Returning Customer Tax | \$4,320 | | Returning Customer Orders | 540 | | **RC Tax Per Order** | **\$8.00** | *** ## How It Works This metric divides total tax collected from returning customers by their order count. Returning customers often purchase higher-value items, leading to higher per-order tax amounts. Compare against new customer tax to understand how buying patterns evolve after the first purchase. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------------------------------------------ | | Retention economics | Factor tax into true cost of repeat orders for LTV calculations | | Regional segmentation | Identify which markets have higher tax burdens on loyal customers | | New vs. returning | Compare against new customer tax to spot purchasing evolution | | Pricing strategy | Understand how tax affects total order cost for price-sensitive segments | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | --------------------------------------------------------- | | [Tax Per Order](/reference/metrics/orders/adjustments/tax-per-order) | Average tax across all customer types—baseline comparison | | [New Customer Tax Per Order](/reference/metrics/orders/adjustments/new-customer-tax-per-order) | Compare new vs. returning customer tax behavior | | [Returning Customer Tax %](/reference/metrics/orders/adjustments/returning-customer-tax-percent) | Tax as a percentage of returning customer revenue | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Returning Customer Tax %: Tax Share of Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/returning-customer-tax-percent Track tax as a percentage of returning customer total revenue. Analyze tax burden distribution and monitor effective tax rates on repeat orders. The tax collected from returning customers expressed as a percentage of their total revenue. ## Formula **Returning Customer Tax %** = [**Returning Customer Tax Collected**](/reference/metrics/orders/adjustments/returning-customer-tax) ÷ [**Returning Customer Total Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [**Returning Customer Tax Collected**](/reference/metrics/orders/adjustments/returning-customer-tax) | Total tax collected from returning customer orders | | [**Returning Customer Total Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Total revenue generated by returning customer orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store collected **\$2,450** in tax from returning customers who generated **\$35,000** in total revenue: | Month | RC Tax | RC Revenue | RC Tax % | | -------- | ------- | ---------- | -------- | | January | \$2,450 | \$35,000 | 7.00% | | February | \$2,680 | \$38,200 | 7.02% | | March | \$2,310 | \$33,750 | 6.84% | *** ## How It Works This metric divides the tax collected from returning customers by their total revenue, then multiplies by 100. It reflects the effective tax rate applied to repeat customer orders. Geographic and product mix differences can cause this rate to vary over time. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------------------------- | | Analyzing tax burden | Compare tax rates between new and returning customers | | Geographic pricing review | Identify if repeat buyers skew toward high or low tax regions | | Tax compliance monitoring | Track effective tax rate trends over time | | Margin analysis | Factor tax percentage into profitability calculations | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------- | --------------------------------- | | [Returning Customer Tax Collected](/reference/metrics/orders/adjustments/returning-customer-tax) | Numerator in this calculation | | [Returning Customer Tax Per Order](/reference/metrics/orders/adjustments/returning-customer-tax-per-order) | Tax divided by order count | | [New Customer Tax %](/reference/metrics/orders/adjustments/new-customer-tax-percent) | Same metric for first-time buyers | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Shipping Per Order: Average Shipping Fee Per Order Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/shipping-per-order Track average shipping fees collected per order. Calculate shipping revenue efficiency and optimize fulfillment pricing strategy. Shipping Per Order measures the average shipping fee collected per order, helping you understand shipping revenue efficiency. ## Formula **Shipping Per Order** = [**Shipping Revenue**](/reference/metrics/orders/adjustments/shipping-revenue) ÷ [**Total Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | -------------------------------------------------------------- | | [**Shipping Revenue**](/reference/metrics/orders/adjustments/shipping-revenue) | Total shipping fees collected from customers across all orders | | [**Total Orders**](/reference/metrics/orders/counts/orders) | Total number of orders placed in the selected period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your store collected **\$8,160** in shipping fees across **1,500 orders** in March. | Metric | Value | Calculation | | ---------------------- | ---------- | ------------------------- | | Shipping Revenue | \$8,160 | Sum of all shipping fees | | Total Orders | 1,500 | Count of completed orders | | **Shipping Per Order** | **\$5.44** | \$8,160 ÷ 1,500 | *** ## How It Works Shipping Per Order divides total shipping fees collected by the number of orders. This average helps you understand how much shipping revenue you generate per transaction and whether your shipping pricing strategy aligns with fulfillment costs. *** ## When to Use | Scenario | Action | | --------------------------------- | ----------------------------------------------------- | | Evaluating shipping profitability | Compare against actual fulfillment costs per order | | Testing free shipping thresholds | Monitor impact when adjusting minimum order values | | Analyzing regional shipping costs | Segment by customer location to identify pricing gaps | | Benchmarking carrier performance | Compare shipping revenue vs carrier costs over time | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | --------------------------------------------------------------- | | [Shipping Revenue](/reference/metrics/orders/adjustments/shipping-revenue) | Numerator — total shipping fees collected | | [Total Orders](/reference/metrics/orders/counts/orders) | Denominator — order count for averaging | | [Average Order Value](/reference/metrics/orders/aov/total-aov) | Compare shipping per order to AOV for shipping-to-revenue ratio | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Shipping %: Share of Revenue from Shipping Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/shipping-percent Track shipping revenue as a percentage of total revenue. Monitor how free shipping promotions and thresholds affect your store's margins over time. Shipping % measures shipping revenue as a share of total revenue, helping you understand how free shipping promotions affect your margins. ## Formula **Shipping %** = [**Shipping Revenue**](/reference/metrics/orders/adjustments/shipping-revenue) ÷ [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | ---------------------------------------------------------- | | [**Shipping Revenue**](/reference/metrics/orders/adjustments/shipping-revenue) | Total shipping fees collected from customers | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Total revenue from all orders including shipping and taxes | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store generated **\$125,000** in total revenue last month, with **\$8,750** coming from shipping fees. | Period | Shipping Revenue | Total Revenue | Shipping % | | -------- | ---------------- | ------------- | ---------- | | January | \$8,750 | \$125,000 | 7.0% | | February | \$6,200 | \$130,000 | 4.8% | | March | \$4,500 | \$140,000 | 3.2% | *** ## How It Works Shipping % divides your shipping revenue by total revenue and multiplies by 100. A declining shipping percentage often indicates increased use of free shipping promotions or higher average order values that qualify for free shipping thresholds. *** ## When to Use | Scenario | Action | | ---------------------------------- | --------------------------------------------------------------------- | | Launching free shipping promotions | Track how promotions reduce shipping % and impact margins | | Analyzing margin trends | Compare shipping % across periods to understand profitability shifts | | Setting shipping thresholds | Evaluate if free shipping thresholds affect customer behavior | | Comparing customer segments | Check if new vs. returning customers have different shipping patterns | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ----------------------------------------- | | [Shipping Revenue](/reference/metrics/orders/adjustments/shipping-revenue) | Numerator — total shipping fees collected | | [Shipping Per Order](/reference/metrics/orders/adjustments/shipping-per-order) | Average shipping per transaction | | [Discount %](/reference/metrics/orders/adjustments/discount-percent) | Similar percentage metric for discounts | | [Tax %](/reference/metrics/orders/adjustments/tax-percent) | Similar percentage metric for taxes | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Shipping Revenue: Total Shipping Fees Collected Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/shipping-revenue Track total shipping fees collected from customers. Monitor shipping revenue trends, offset fulfillment costs, and analyze free shipping promotion impact. Total shipping fees collected from customers across all orders in the selected period. ## Formula **Shipping Revenue** = **SUM** ( Shipping Fees ) ### Formula Components | Metric | Definition | | ----------------- | ------------------------------------------------------ | | **Shipping Fees** | Shipping charges collected at checkout from each order | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store collected **\$12,450 in shipping fees** during Q1: | Month | Shipping Revenue | Orders | Avg per Order | | -------- | ---------------- | ------ | ------------- | | January | \$4,850 | 892 | \$5.44 | | February | \$4,120 | 756 | \$5.45 | | March | \$3,480 | 945 | \$3.68 | March's decline reflects a free shipping promotion that increased order volume but reduced per-order shipping revenue. *** ## How It Works Shipping Revenue sums all shipping fees charged to customers at checkout across orders in the period. This includes flat-rate, weight-based, and calculated shipping. Free shipping orders contribute \$0 to this total. Use this metric to understand how much revenue you collect to offset fulfillment costs. *** ## When to Use | Scenario | Action | | ------------------------ | ---------------------------------------------------------- | | Calculate total revenue | Include shipping when computing total revenue collected | | Measure promotion impact | Track how free shipping thresholds affect shipping revenue | | Offset fulfillment costs | Compare shipping revenue to actual shipping costs | | Segment analysis | Compare shipping revenue from new vs returning customers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ------------------------------------------- | | [Shipping %](/reference/metrics/orders/adjustments/shipping-percent) | Shipping revenue as share of total revenue | | [Shipping Per Order](/reference/metrics/orders/adjustments/shipping-per-order) | Average shipping fee per order | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | Includes shipping, taxes, and product sales | | [Discount Amount](/reference/metrics/orders/adjustments/discount-amount) | Another order adjustment metric | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Tax Collected: Total Sales Tax Collected from Orders Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/tax Track total sales tax collected from customers. Monitor tax liability, understand regional tax impact, and reconcile tax remittance with Upstack. The total sales tax collected from customers across all orders. ## Formula **Tax Collected** = **SUM** ( Tax Amount ) ### Formula Components | Metric | Definition | | -------------- | ----------------------------------------------- | | **Tax Amount** | Sales tax collected at checkout from each order | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store collected **\$12,840 in sales tax** during Q1: | Month | Tax Collected | Orders | | -------- | ------------- | ------ | | January | \$3,920 | 784 | | February | \$4,160 | 832 | | March | \$4,760 | 952 | *** ## How It Works Tax Collected sums the sales tax collected from customers on all orders in the period. Tax is typically passed through to tax authorities and not retained as revenue. Rates vary by jurisdiction and product category, with some states collecting no sales tax. *** ## When to Use | Scenario | Action | | ---------------------------- | ---------------------------------------- | | Monitor tax liability | Track total tax owed to authorities | | Reconcile tax remittance | Verify collected tax matches filings | | Understand regional impact | Break down by state or country | | Calculate effective tax rate | Divide by Total Revenue for average rate | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | ---------------------------------- | | [Tax %](/reference/metrics/orders/adjustments/tax-percent) | Tax as percentage of total revenue | | [Tax Per Order](/reference/metrics/orders/adjustments/tax-per-order) | Average tax collected per order | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | Revenue before adjustments | | [Shipping Revenue](/reference/metrics/orders/adjustments/shipping-revenue) | Another pass-through component | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Tax Per Order: Average Tax Amount Per Transaction Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/tax-per-order Track the average tax amount collected per order from your Shopify store. Monitor tax burden by segment and reconcile collected taxes with reporting obligations. The average tax dollar amount collected per order. ## Formula **Tax Per Order** = [**Tax Collected**](/reference/metrics/orders/adjustments/tax) ÷ [**Total Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | -------------------------------------------------------------- | ---------------------------------------------------------- | | [**Tax Collected**](/reference/metrics/orders/adjustments/tax) | Total sales tax collected from customers across all orders | | [**Total Orders**](/reference/metrics/orders/counts/orders) | Total number of completed orders in the period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store processed **2,450 orders** in April and collected **\$18,375 in taxes**: | Metric | Value | | ----------------- | ---------- | | Tax Collected | \$18,375 | | Order Count | 2,450 | | **Tax Per Order** | **\$7.50** | *** ## How It Works Tax Per Order divides total tax collected by all orders in the period. This average reflects the typical tax burden on each transaction, influenced by customer locations, product taxability, and order values. Use it to understand regional tax exposure and verify consistency with expected rates. *** ## When to Use | Scenario | Action | | -------------------- | -------------------------------------------------------------- | | Tax reconciliation | Compare to expected rates by region to catch collection errors | | Segment analysis | Identify customer segments with higher tax burdens | | Pricing strategy | Factor average tax into displayed pricing decisions | | Geographic expansion | Estimate tax impact when entering new jurisdictions | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | ----------------------------------------- | | [Tax Collected](/reference/metrics/orders/adjustments/tax) | Numerator: total tax collected | | [Total Orders](/reference/metrics/orders/counts/orders) | Denominator: transaction count | | [Tax %](/reference/metrics/orders/adjustments/tax-percent) | Tax as percentage of order value | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | Includes tax, shipping, and product sales | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Tax %: Sales Tax as Share of Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/adjustments/tax-percent Track sales tax collected as a percentage of total revenue. Estimate effective tax burden across markets and monitor tax compliance for your Shopify store. The percentage of total revenue that comes from sales tax collected. ## Formula **Tax %** = [**Tax Collected**](/reference/metrics/orders/adjustments/tax) ÷ [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | ---------------------------------------------------------------------- | | [**Tax Collected**](/reference/metrics/orders/adjustments/tax) | Total sales tax collected from customers across all orders | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Total dollar amount collected from orders including shipping and taxes | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store collected **\$8,450** in sales tax from **\$105,625** in total revenue this month: | Region | Tax Collected | Total Revenue | Tax % | | ---------- | ------------- | ------------- | -------- | | California | \$5,200 | \$65,000 | 8.0% | | Texas | \$2,100 | \$26,250 | 8.0% | | Oregon | \$0 | \$14,375 | 0.0% | | **Total** | **\$8,450** | **\$105,625** | **8.0%** | *** ## How It Works Tax % divides total tax collected by total revenue and multiplies by 100. This shows what share of customer payments goes toward sales tax. It reflects weighted average tax rates across all orders and jurisdictions. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------- | | Comparing regional tax burden | Identify markets with higher effective tax rates | | Estimating tax liability | Forecast sales tax obligations for planning | | Pricing strategy | Understand how tax affects customer-facing prices | | Compliance monitoring | Track tax collection trends over time | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------- | --------------------------------------- | | [Tax Collected](/reference/metrics/orders/adjustments/tax) | The numerator in this calculation | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | The denominator in this calculation | | [Tax Per Order](/reference/metrics/orders/adjustments/tax-per-order) | Average tax amount per individual order | [See all Adjustments metrics →](/reference/metrics/orders/adjustments) # Average Order Value: Track AOV by Revenue Type Source: https://docs.upstackdata.com/reference/metrics/orders/aov Track AOV metrics in Upstack. Includes Total AOV, Gross AOV, Net AOV by customer type with formulas and optimization tips. Average Order Value (AOV) metrics measure the average revenue per order at different calculation levels. Use these to optimize cart value and compare customer segments. **Data Source:** [Shopify](/sources/catalog/shopify)\ **Metrics:** 10 ## Metrics in This Group The tables below highlight the most commonly used metrics in this group — browse the full list in the sidebar. | Metric | Description | When to Use | | ------------------------------------------------------------------------------------------ | --------------------------------------- | ------------------------------ | | [Total AOV](/reference/metrics/orders/aov/total-aov) | Average order value using total revenue | Headline AOV reporting | | [Gross AOV](/reference/metrics/orders/aov/gross-aov) | Average order value using gross revenue | Full-price basket analysis | | [Net AOV](/reference/metrics/orders/aov/net-aov) | Average order value using net revenue | Actual collection per order | | [New Customer Total AOV](/reference/metrics/orders/aov/new-customer-total-aov) | Total AOV for new customers | Benchmark new customer baskets | | [New Customer Gross AOV](/reference/metrics/orders/aov/new-customer-gross-aov) | Gross AOV for new customers | New customer full-price demand | | [New Customer Net AOV](/reference/metrics/orders/aov/new-customer-net-aov) | Net AOV for new customers | Actual new customer value | | [Returning Customer Total AOV](/reference/metrics/orders/aov/returning-customer-total-aov) | Total AOV for returning customers | Track loyalty basket growth | | [Returning Customer Gross AOV](/reference/metrics/orders/aov/returning-customer-gross-aov) | Gross AOV for returning customers | Returning customer demand | | [Returning Customer Net AOV](/reference/metrics/orders/aov/returning-customer-net-aov) | Net AOV for returning customers | Returning customer collections | ## How These Metrics Relate AOV metrics are calculated as Revenue ÷ Orders: * **Total AOV** = [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) ÷ [**Orders**](/reference/metrics/orders/counts/orders) * **Gross AOV** = [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) ÷ [**Orders**](/reference/metrics/orders/counts/orders) * **Net AOV** = [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) ÷ [**Orders**](/reference/metrics/orders/counts/orders) Each variant is segmented by New Customer and Returning Customer for comparison. ## Choosing the Right Metric * **Headline reporting**: Use Total AOV for general reporting * **Discount impact**: Compare Gross AOV vs Net AOV to see discount effect * **Customer comparison**: Compare New Customer AOV vs Returning Customer AOV * **Upsell optimization**: Track Net AOV to measure actual value optimization # Gross AOV: Average Order Value Before Discounts Source: https://docs.upstackdata.com/reference/metrics/orders/aov/gross-aov Track Gross AOV to measure your average order value before discounts and refunds — the baseline cart value customers intend to spend. Gross AOV measures your average gross product revenue per order before discounts and refunds are applied. ## Formula **Gross AOV** = [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | ------------------------------------------------------------------ | | [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Revenue from product sales before subtracting discounts or refunds | | [**Orders**](/reference/metrics/orders/counts/orders) | Total number of completed orders placed | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store processed **1,247 orders** in January with **\$143,410** in gross revenue: | Metric | Value | | ------------- | ------------ | | Gross Revenue | \$143,410 | | Orders | 1,247 | | **Gross AOV** | **\$115.00** | *** ## How It Works Gross AOV divides your total gross product revenue by order count. Unlike [Net AOV](/reference/metrics/orders/aov/net-aov), it shows what customers add to cart before any discounts or refunds are applied — giving you the baseline cart value customers intend to spend. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------------------------------------------------------------ | | Measuring baseline cart value | Compare to [Net AOV](/reference/metrics/orders/aov/net-aov) to see discount impact on transaction size | | Evaluating product pricing | Track Gross AOV to understand cart composition before promotions | | Analyzing bundle effectiveness | Higher Gross AOV indicates successful cross-sell and upsell | | Setting discount thresholds | Use Gross AOV to determine minimum order amounts for promotions | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ---------------------------------------------- | | [Net AOV](/reference/metrics/orders/aov/net-aov) | AOV after discounts and refunds | | [Total AOV](/reference/metrics/orders/aov/total-aov) | AOV including shipping and taxes | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Numerator — product revenue before adjustments | | [New Customer Gross AOV](/reference/metrics/orders/aov/new-customer-gross-aov) | Gross AOV for first-time buyers | [See all AOV metrics →](/reference/metrics/orders/aov) # Net AOV: Average Order Value After Discounts Source: https://docs.upstackdata.com/reference/metrics/orders/aov/net-aov Track Net AOV to measure your average order value after discounts and refunds — the most reliable AOV for profitability and ROAS calculations. Net AOV measures your average net revenue per order after discounts and refunds have been applied. ## Formula **Net AOV** = [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------- | ------------------------------------------------------------------ | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Revenue after subtracting discounts and refunds from gross revenue | | [**Orders**](/reference/metrics/orders/counts/orders) | Total number of completed orders placed | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store processed **1,247 orders** in January with **\$124,700** in net revenue: | Metric | Value | | ----------- | ------------ | | Net Revenue | \$124,700 | | Orders | 1,247 | | **Net AOV** | **\$100.00** | *** ## How It Works Net AOV divides net revenue by order count. Unlike [Gross AOV](/reference/metrics/orders/aov/gross-aov), it reflects actual retained revenue after discounts and refunds — the most accurate AOV for profitability and ROAS calculations. *** ## When to Use | Scenario | Action | | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Profitability analysis | Use Net AOV for accurate margin and contribution calculations | | ROAS calculations | Pair with ad spend for true return on investment | | Evaluating promotions | Compare Net vs [Gross AOV](/reference/metrics/orders/aov/gross-aov) to see discount impact | | Customer segmentation | Compare [New Customer Net AOV](/reference/metrics/orders/aov/new-customer-net-aov) vs [Returning Customer Net AOV](/reference/metrics/orders/aov/returning-customer-net-aov) | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | ------------------------------------- | | [Gross AOV](/reference/metrics/orders/aov/gross-aov) | AOV before discounts and refunds | | [Total AOV](/reference/metrics/orders/aov/total-aov) | AOV including shipping and taxes | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Numerator — revenue after adjustments | | [New Customer Net AOV](/reference/metrics/orders/aov/new-customer-net-aov) | Net AOV for first-time buyers | [See all AOV metrics →](/reference/metrics/orders/aov) # New Customer Gross AOV: First-Time Buyer Baseline Cart Value Source: https://docs.upstackdata.com/reference/metrics/orders/aov/new-customer-gross-aov Track average gross revenue per order for new customers before discounts and refunds. Understand your first-time buyer baseline cart value. Average gross revenue per order for new customers before discounts and refunds. ## Formula **New Customer Gross AOV** = [**New Customer Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) ÷ [**New Customers**](/reference/metrics/orders/customers/new-customers) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | [**New Customer Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Revenue from first-time buyers before discounts or refunds | | [**New Customers**](/reference/metrics/orders/customers/new-customers) | Count of distinct first-time buyers in the period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your store acquired **125 new customers** this month with **\$18,750** in gross revenue: | Metric | Value | | ---------------- | ------------ | | NC Gross Revenue | \$18,750 | | New Customers | 125 | | **NC Gross AOV** | **\$150.00** | *** ## How It Works New Customer Gross AOV divides total gross revenue from first-time buyers by the number of [new customers](/reference/metrics/orders/customers/new-customers). Gross revenue includes the full order amount before discounts, returns, or refunds are applied — giving you the "list price" view of new customer order value. *** ## When to Use | Scenario | Action | | -------------------------------- | -------------------------------------------------------------------------------------------------------- | | Evaluating acquisition campaigns | Measure if new customers are purchasing at target values | | Setting discount limits | Ensure acquisition discounts don't erode profitability | | Comparing customer segments | Contrast with [Returning Customer Gross AOV](/reference/metrics/orders/aov/returning-customer-gross-aov) | | Planning CAC targets | Use AOV to set acceptable customer acquisition costs | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ----------------------------------------- | | [New Customer Net AOV](/reference/metrics/orders/aov/new-customer-net-aov) | After discounts/refunds (actual received) | | [Returning Customer Gross AOV](/reference/metrics/orders/aov/returning-customer-gross-aov) | Same metric for repeat buyers | | [Gross AOV](/reference/metrics/orders/aov/gross-aov) | All customers combined (gross) | | [New Customer Gross Revenue](/reference/metrics/orders/revenue/new-customer-gross-revenue) | The numerator in this formula | [See all AOV metrics →](/reference/metrics/orders/aov) # New Customer Net AOV: First-Time Buyer Actual Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/aov/new-customer-net-aov Track average order value for first-time buyers after discounts and refunds. Key input for payback calculations and acquisition efficiency analysis. Average net revenue per order for first-time buyers after discounts and refunds. ## Formula **New Customer Net AOV** = [**New Customer Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) ÷ [**New Customers**](/reference/metrics/orders/customers/new-customers) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------ | ---------------------------------------------------------- | | [**New Customer Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) | Revenue from first-time buyers after discounts and refunds | | [**New Customers**](/reference/metrics/orders/customers/new-customers) | Count of distinct first-time buyers in the period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your store acquired **385 new customers** in March with **\$32,340** in net revenue: | Metric | Value | | -------------- | ----------- | | NC Net Revenue | \$32,340 | | New Customers | 385 | | **NC Net AOV** | **\$84.00** | Compared to a [Gross AOV](/reference/metrics/orders/aov/new-customer-gross-aov) of \$98.50, discounts reduced the average order by 15%. *** ## How It Works Divides first-time buyer net revenue (after discounts and refunds) by [new customer](/reference/metrics/orders/customers/new-customers) count. This gives the clearest measure of actual revenue collected per first order. *** ## When to Use | Scenario | Action | | ------------------------ | ------------------------------------------------------------------------------------ | | Calculate payback period | Divide CAC by NC Net AOV | | Measure promotion impact | Compare against [NC Gross AOV](/reference/metrics/orders/aov/new-customer-gross-aov) | | Set CM1 targets | Use as revenue base for margin calculations | | Benchmark acquisition | Compare NC vs [RC Net AOV](/reference/metrics/orders/aov/returning-customer-net-aov) | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ------------------------------------- | | [New Customer Net Revenue](/reference/metrics/orders/revenue/new-customer-net-revenue) | Numerator of this metric | | [New Customer Total AOV](/reference/metrics/orders/aov/new-customer-total-aov) | Same segment, includes shipping/taxes | | [Returning Customer Net AOV](/reference/metrics/orders/aov/returning-customer-net-aov) | Retention counterpart | | [New Customer Gross AOV](/reference/metrics/orders/aov/new-customer-gross-aov) | Before discounts and refunds | [See all AOV metrics →](/reference/metrics/orders/aov) # New Customer Total AOV: First-Time Buyer Average Order Value Source: https://docs.upstackdata.com/reference/metrics/orders/aov/new-customer-total-aov Track average order value for first-time buyers including shipping and taxes. Compare against returning customers to benchmark acquisition basket size. The average total transaction value for first-time buyers, including shipping and taxes. ## Formula **New Customer Total AOV** = [**New Customer Total Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) ÷ [**New Customers**](/reference/metrics/orders/customers/new-customers) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | | [**New Customer Total Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) | Sum of all revenue from first-time buyers including shipping and taxes | | [**New Customers**](/reference/metrics/orders/customers/new-customers) | Count of distinct first-time buyers in the period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your store acquired **412 new customers** in February with **\$48,620** in total revenue: | Metric | Value | | ---------------- | ------------ | | NC Total Revenue | \$48,620 | | New Customers | 412 | | **NC Total AOV** | **\$118.01** | *** ## How It Works New Customer Total AOV divides your first-time buyer revenue (including shipping and taxes) by the number of [new customers](/reference/metrics/orders/customers/new-customers). Shopify determines new vs returning status based on email address match against prior orders. *** ## When to Use | Scenario | Action | | ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | | Benchmark acquisition baskets | Compare NC Total AOV against [RC Total AOV](/reference/metrics/orders/aov/returning-customer-total-aov) to see if new customers spend more or less | | Evaluate first-order promotions | Track whether welcome offers attract larger or smaller baskets | | Calculate acquisition ROAS | Combine with ad spend to measure first-order efficiency | | Set free shipping thresholds | Position threshold above NC AOV to encourage larger carts | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | -------------------------------------------- | | [Total AOV](/reference/metrics/orders/aov/total-aov) | All customers combined (NC + RC) | | [Returning Customer Total AOV](/reference/metrics/orders/aov/returning-customer-total-aov) | The retention counterpart to compare against | | [New Customer Total Revenue](/reference/metrics/orders/revenue/new-customer-total-revenue) | The numerator of this metric | | [New Customer Net AOV](/reference/metrics/orders/aov/new-customer-net-aov) | Same segment, after discounts and refunds | [See all AOV metrics →](/reference/metrics/orders/aov) # Returning Customer Gross AOV: Repeat Buyer Baseline Cart Value Source: https://docs.upstackdata.com/reference/metrics/orders/aov/returning-customer-gross-aov Track average gross revenue per order for returning customers before discounts and refunds. Measure repeat buyer basket value to optimize retention. Average gross revenue per order for returning customers before discounts and refunds. ## Formula **Returning Customer Gross AOV** = [**Returning Customer Gross Revenue**](/reference/metrics/orders/revenue/returning-customer-gross-revenue) ÷ [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | [**Returning Customer Gross Revenue**](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Revenue from repeat buyers before discounts or refunds | | [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) | Count of distinct customers with at least one prior purchase | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your store processed **847 returning customer orders** this month with **\$101,640** in gross revenue: | Metric | Value | | ------------------- | ------------ | | RC Gross Revenue | \$101,640 | | Returning Customers | 847 | | **RC Gross AOV** | **\$120.00** | *** ## How It Works Returning Customer Gross AOV divides total gross revenue from repeat buyers by the number of [returning customers](/reference/metrics/orders/customers/returning-customers). Gross revenue includes the full order amount before discounts, returns, or refunds are applied. This metric typically exceeds [new customer AOV](/reference/metrics/orders/aov/new-customer-gross-aov) as loyal customers tend to purchase more per order. *** ## When to Use | Scenario | Action | | --------------------------- | -------------------------------------------------------------------------------------------- | | Measuring loyalty impact | Track whether repeat buyers increase basket size over time | | Optimizing retention offers | Ensure loyalty discounts don't erode order value | | Comparing customer segments | Contrast with [New Customer Gross AOV](/reference/metrics/orders/aov/new-customer-gross-aov) | | Planning LTV projections | Use RC AOV to forecast customer lifetime value | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ----------------------------------------- | | [Returning Customer Net AOV](/reference/metrics/orders/aov/returning-customer-net-aov) | After discounts/refunds (actual received) | | [New Customer Gross AOV](/reference/metrics/orders/aov/new-customer-gross-aov) | Same metric for first-time buyers | | [Gross AOV](/reference/metrics/orders/aov/gross-aov) | All customers combined (gross) | | [Returning Customer Gross Revenue](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | The numerator in this formula | [See all AOV metrics →](/reference/metrics/orders/aov) # Returning Customer Net AOV: Repeat Buyer Actual Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/aov/returning-customer-net-aov Track average net revenue per order from returning customers after discounts and refunds. Essential for retention strategy and LTV calculations. Average net revenue per order from returning customers, after discounts and refunds. ## Formula **Returning Customer Net AOV** = [**Returning Customer Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) ÷ [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------ | | [**Returning Customer Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Revenue from repeat buyers after discounts and refunds | | [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) | Count of distinct customers with at least one prior purchase | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your store's returning customers placed **1,200 orders** in March with **\$111,000** in net revenue: | Customer Segment | Net AOV | Orders | Net Revenue | | ------------------- | ------- | ------ | ----------- | | Returning Customers | \$92.50 | 1,200 | \$111,000 | | New Customers | \$78.25 | 800 | \$62,600 | Returning customers spend **18% more** per order than [new customers](/reference/metrics/orders/aov/new-customer-net-aov). *** ## How It Works Net AOV divides total net revenue by [returning customer](/reference/metrics/orders/customers/returning-customers) count. Net revenue excludes discounts and refunds, giving you the actual realized value per repeat purchase. This metric isolates the spending behavior of your existing customer base. *** ## When to Use | Scenario | Action | | ------------------------- | ----------------------------------------------------------------------------------------------------------------- | | Measuring retention value | Compare RC Net AOV to [NC Net AOV](/reference/metrics/orders/aov/new-customer-net-aov) to quantify loyalty impact | | LTV projections | Use as baseline for expected repeat purchase value | | Promotion effectiveness | Check if loyalty discounts compress net AOV too much | | Segment profitability | Pair with RC order count to calculate repeat revenue contribution | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | -------------------------------------- | | [Net AOV](/reference/metrics/orders/aov/net-aov) | All-customer average (blended NC + RC) | | [New Customer Net AOV](/reference/metrics/orders/aov/new-customer-net-aov) | First-purchase comparison | | [Returning Customer Gross AOV](/reference/metrics/orders/aov/returning-customer-gross-aov) | Before discounts and refunds | | [Returning Customer Net Revenue](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Numerator for this calculation | [See all AOV metrics →](/reference/metrics/orders/aov) # Returning Customer Total AOV: Repeat Buyer Average Order Value Source: https://docs.upstackdata.com/reference/metrics/orders/aov/returning-customer-total-aov Track average order value for returning customers including shipping and taxes. Compare against new customers to measure loyalty-driven basket growth. The average total transaction value for returning buyers, including shipping and taxes. ## Formula **Returning Customer Total AOV** = [**Returning Customer Total Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) ÷ [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | | [**Returning Customer Total Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Sum of all revenue from repeat buyers including shipping and taxes | | [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) | Count of distinct customers with at least one prior purchase | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your store had **837 returning customers** in March with **\$112,450** in total revenue: | Metric | Value | | ------------------- | ------------ | | RC Total Revenue | \$112,450 | | Returning Customers | 837 | | **RC Total AOV** | **\$134.35** | *** ## How It Works Returning Customer Total AOV divides your repeat buyer revenue (including shipping and taxes) by the number of [returning customers](/reference/metrics/orders/customers/returning-customers). Shopify determines returning status when a customer's email matches a previous order. *** ## When to Use | Scenario | Action | | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | Measure loyalty impact | Compare RC Total AOV against [NC Total AOV](/reference/metrics/orders/aov/new-customer-total-aov) — returning customers typically spend 15-25% more | | Evaluate retention programs | Track whether loyalty rewards or subscriptions increase basket size | | Calculate retention value | Combine with purchase frequency to estimate repeat buyer contribution | | Optimize upsell strategies | Target returning customers with higher-value product recommendations | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ---------------------------------------------- | | [Total AOV](/reference/metrics/orders/aov/total-aov) | All customers combined (NC + RC) | | [New Customer Total AOV](/reference/metrics/orders/aov/new-customer-total-aov) | The acquisition counterpart to compare against | | [Returning Customer Total Revenue](/reference/metrics/orders/revenue/returning-customer-total-revenue) | The numerator of this metric | | [Returning Customer Net AOV](/reference/metrics/orders/aov/returning-customer-net-aov) | Same segment, after discounts and refunds | [See all AOV metrics →](/reference/metrics/orders/aov) # Subscription AOV: Average Subscription Order Value Source: https://docs.upstackdata.com/reference/metrics/orders/aov/subscription-aov Track subscription AOV for your Shopify store. Measure the average value of subscription orders. Subscription AOV measures the average order value for subscription orders—helping compare recurring vs one-time purchase economics. ## Formula **Subscription AOV** = [**Subscription Revenue**](/reference/metrics/orders/revenue/subscription-revenue) ÷ [**Subscription Orders**](/reference/metrics/orders/counts/subscription-orders) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------- | -------------------------------- | | [**Subscription Revenue**](/reference/metrics/orders/revenue/subscription-revenue) | Revenue from subscription orders | | [**Subscription Orders**](/reference/metrics/orders/counts/subscription-orders) | Count of subscription orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your Shopify store has **\$18,000** subscription revenue from **150** subscription orders. | Component | Value | Calculation | | -------------------- | --------- | ------------------------ | | Subscription Revenue | \$18,000 | Recurring order revenue | | Subscription Orders | 150 | Subscription order count | | **Subscription AOV** | **\$120** | \$18,000 ÷ 150 | *** ## How It Works Subscription AOV shows the average value per subscription order. Compare this to overall AOV to understand if subscribers order more or less per transaction. *** ## When to Use | Scenario | Action | | -------------------- | --------------------------------------- | | Subscription pricing | Optimize subscription tier pricing | | Discount analysis | Understand subscription discount impact | | Product bundling | Improve subscription box value | | Comparison | Compare subscription vs one-time AOV | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | --------------------------- | | [AOV](/reference/metrics/orders/aov/total-aov) | Overall average order value | | [Subscription Revenue](/reference/metrics/orders/revenue/subscription-revenue) | Numerator | | [Subscription Orders](/reference/metrics/orders/counts/subscription-orders) | Denominator | | [Returning Customer AOV](/reference/metrics/orders/aov/returning-customer-total-aov) | Repeat order value | [See all AOV metrics →](/reference/metrics/orders/aov) # Total AOV: Average Order Value Including Shipping & Taxes Source: https://docs.upstackdata.com/reference/metrics/orders/aov/total-aov Track average order value including shipping and taxes from your Shopify orders. Learn the formula, see examples, and optimize transaction size. The average total revenue collected per order, including shipping and taxes. ## Formula **Total AOV** = [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | ----------------------------------------------------------- | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Sum of all revenue from orders including shipping and taxes | | [**Orders**](/reference/metrics/orders/counts/orders) | Total number of completed orders placed | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your store processed **1,247 orders** in January with **\$156,820** in total revenue: | Metric | Value | | ------------- | ------------ | | Total Revenue | \$156,820 | | Orders | 1,247 | | **Total AOV** | **\$125.76** | *** ## How It Works Total AOV divides your total revenue (including shipping charges and taxes) by the number of orders. This gives you the complete average transaction size, reflecting what customers actually pay at checkout rather than just product value. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Measuring checkout value | Compare against [Gross AOV](/reference/metrics/orders/aov/gross-aov) or [Net AOV](/reference/metrics/orders/aov/net-aov) to see shipping/tax impact | | Setting free shipping thresholds | Set threshold above Total AOV to encourage larger carts | | Evaluating upsell strategies | Track Total AOV lift from bundles or recommended products | | Comparing customer segments | Compare [New Customer Total AOV](/reference/metrics/orders/aov/new-customer-total-aov) vs [Returning Customer Total AOV](/reference/metrics/orders/aov/returning-customer-total-aov) | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ---------------------------------------------- | | [Gross AOV](/reference/metrics/orders/aov/gross-aov) | Product revenue only (excludes shipping/taxes) | | [Net AOV](/reference/metrics/orders/aov/net-aov) | After discounts and refunds | | [New Customer Total AOV](/reference/metrics/orders/aov/new-customer-total-aov) | Total AOV for first-time buyers | | [Returning Customer Total AOV](/reference/metrics/orders/aov/returning-customer-total-aov) | Total AOV for repeat customers | [See all AOV metrics →](/reference/metrics/orders/aov) # Cost of Goods Sold: Track Product and Variable Costs Source: https://docs.upstackdata.com/reference/metrics/orders/cogs Track COGS metrics in Upstack. Includes COGS, Variable Costs, Other Costs by customer type with formulas and margin analysis. Cost of Goods Sold (COGS) metrics track the direct costs of products sold. Use these to calculate gross profit margins and understand cost structures. **Data Source:** [Shopify](/sources/catalog/shopify)\ **Metrics:** 26 ## Metrics in This Group The tables below highlight the most commonly used metrics in this group — browse the full list in the sidebar. | Metric | Description | When to Use | | ----------------------------------------------------------------------------------------------------- | ---------------------------------- | ---------------------------- | | [COGS](/reference/metrics/orders/cogs/cogs) | Cost of goods sold | Calculate gross profit | | [New Customer COGS](/reference/metrics/orders/cogs/new-customer-cogs) | COGS for new customer orders | Segment cost analysis | | [Returning Customer COGS](/reference/metrics/orders/cogs/returning-customer-cogs) | COGS for returning customer orders | Compare customer segments | | [COGS Per Order](/reference/metrics/orders/cogs/cogs-per-order) | Average COGS per order | Benchmark order costs | | [New Customer COGS Per Order](/reference/metrics/orders/cogs/new-customer-cogs-per-order) | COGS per new customer order | New customer profitability | | [New Customer COGS Gross Rate](/reference/metrics/orders/cogs/new-customer-cogs-gross-rate) | COGS as % of NC gross revenue | New customer margin analysis | | [Returning Customer COGS Per Order](/reference/metrics/orders/cogs/returning-customer-cogs-per-order) | COGS per returning customer order | Returning customer margins | | [Other Cost](/reference/metrics/orders/cogs/other-cost) | Additional product costs | Track miscellaneous costs | | [Other Cost Per Order](/reference/metrics/orders/cogs/other-cost-per-order) | Average other cost per order | Per-order analysis | | [Other Cost %](/reference/metrics/orders/cogs/other-cost-percent) | Other cost as % of revenue | Cost proportion | | [Variable Costs](/reference/metrics/orders/cogs/variable-costs) | Total variable costs | Unit economics | | [Variable Costs Per Order](/reference/metrics/orders/cogs/variable-costs-per-order) | Variable cost per order | Per-order economics | | [Variable Costs %](/reference/metrics/orders/cogs/variable-costs-percent) | Variable costs as % of revenue | Cost structure | | [COGS Gross Rate](/reference/metrics/orders/cogs/cogs-gross-rate) | COGS as % of gross revenue | Gross margin inverse | | [COGS Net Rate](/reference/metrics/orders/cogs/cogs-net-rate) | COGS as % of net revenue | Net margin analysis | ## How These Metrics Relate COGS metrics build the foundation for margin analysis: * **Gross Profit** = [**Revenue**](/reference/metrics/orders/revenue) - [**COGS**](/reference/metrics/orders/cogs/cogs) * **COGS Rate** = [**COGS**](/reference/metrics/orders/cogs/cogs) ÷ [**Revenue**](/reference/metrics/orders/revenue) (inverse of gross margin) * **Variable Costs** include COGS + fulfillment + transaction costs * **CM1** = [**Revenue**](/reference/metrics/orders/revenue) - [**COGS**](/reference/metrics/orders/cogs/cogs) (first contribution margin level) ## Choosing the Right Metric * **Margin analysis**: Use COGS and COGS Rate to calculate gross margins * **Per-order economics**: Use COGS Per Order for unit economics * **Customer profitability**: Compare New vs Returning COGS to find profitable segments * **Cost structure**: Use Variable Costs % to understand total variable burden # Agency Fees: Marketing Agency Costs Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/agency-fees Track agency fees for your Shopify store. Measure costs paid to marketing agencies for services. Agency Fees measures the total costs paid to marketing agencies—management fees, creative services, and other agency-related expenses. ## Formula **Agency Fees** = **SUM** ( User-defined agency fee entries ) ### Formula Components | Metric | Definition | | ---------------------- | --------------------------------------------- | | **Agency Fee Entries** | User-configured agency costs in Cost Settings | | Metadata | | | --------------- | ----------------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store pays **\$5,000** monthly to your marketing agency. | Component | Amount | Notes | | --------------------- | ----------- | ------------------- | | Agency Management Fee | \$3,000 | Percentage of spend | | Creative Services | \$1,500 | Monthly retainer | | Strategy Consulting | \$500 | Advisory hours | | **Total Agency Fees** | **\$5,000** | Monthly total | *** ## How It Works Agency Fees are configured in Cost Settings under "Costs Management." You can set fixed monthly amounts or percentage-based fees tied to ad spend. These costs are deducted at the CM4 level to calculate true operating profit. *** ## When to Use | Scenario | Action | | --------------------- | ---------------------------------------- | | Tracking agency costs | Monitor total agency spend | | CM4 calculation | Agency fees reduce CM3 to CM4 | | ROI analysis | Evaluate if agency fees are justified | | Budget planning | Include agency costs in marketing budget | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ---------------------------------- | | [CM4](/reference/metrics/orders/contribution-margin/cm4) | Operating profit after agency fees | | [Marketing Cost](/reference/metrics/orders/contribution-margin/marketing-cost) | Other marketing costs | | [OPEX](/reference/metrics/orders/cogs/opex) | Operating expenses | [See all COGS metrics →](/reference/metrics/orders/cogs) # COGS Gross Rate: Cost of Goods as % of Gross Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/cogs-gross-rate Track COGS as a percentage of gross revenue. The inverse of gross margin—COGS Gross Rate + Gross Margin = 100%. Analyze product cost structure. Cost of goods sold as a percentage of gross revenue—the complement of gross margin rate. ## Formula **COGS Gross Rate** = ( [**COGS**](/reference/metrics/orders/cogs/cogs) ÷ [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | --------------------------------------------- | | [**COGS**](/reference/metrics/orders/cogs/cogs) | Total cost of products sold across all orders | | [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Total revenue before discounts and refunds | | Metadata | | | --------------- | -------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), Upstack Costs | | **Aggregation** | Ratio | *** ## Example Your store generated **\$185,000** in gross revenue with **\$68,450** in product costs this quarter: | Metric | Value | | ------------------- | --------- | | Gross Revenue | \$185,000 | | COGS | \$68,450 | | **COGS Gross Rate** | **37.0%** | This means 37% of your top-line revenue goes toward product costs, leaving 63% gross margin. *** ## How It Works This metric divides total COGS by gross revenue, then multiplies by 100. COGS Gross Rate + Gross Margin Rate always equals 100%. A lower rate indicates higher product margins, while increases suggest rising supply costs or a shift toward lower-margin products. *** ## When to Use | Scenario | Action | | --------------------- | --------------------------------------------- | | Quick margin check | Subtract from 100% to find gross margin | | Supplier negotiations | Monitor impact of cost changes on margin | | Product mix analysis | Track if sales shift toward higher-cost items | | Period comparison | Compare cost structure across months/quarters | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------- | ------------------------------- | | [COGS](/reference/metrics/orders/cogs/cogs) | Dollar value used in numerator | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Revenue baseline in denominator | | [New Customer COGS Gross Rate](/reference/metrics/orders/cogs/new-customer-cogs-gross-rate) | First-time buyer cost structure | | [Returning Customer COGS Gross Rate](/reference/metrics/orders/cogs/returning-customer-cogs-gross-rate) | Repeat buyer cost structure | | [Gross Profit](/reference/metrics/orders/contribution-margin/gross-profit) | Revenue minus COGS | [See all COGS metrics →](/reference/metrics/orders/cogs) # COGS Net Rate: Product Cost as % of Net Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/cogs-net-rate Measure what percentage of net revenue goes to product costs. Track cost efficiency after discounts and refunds with formula and examples. COGS as a percentage of net revenue—higher than gross rate because discounts and refunds reduce the denominator. ## Formula **COGS Net Rate** = ( [**COGS**](/reference/metrics/orders/cogs/cogs) ÷ [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------- | ----------------------------------- | | [**COGS**](/reference/metrics/orders/cogs/cogs) | Total cost of products sold | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds | | Metadata | | | --------------- | -------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), Upstack Costs | | **Aggregation** | Ratio | *** ## Example Your store generated **\$125,000** in net revenue with **\$47,500** in product costs this month: | Metric | Value | | ----------------- | --------- | | Net Revenue | \$125,000 | | COGS | \$47,500 | | **COGS Net Rate** | **38.0%** | This means 38% of your retained revenue goes toward product costs, leaving 62% gross margin on net revenue. *** ## How It Works Divides total COGS by net revenue (after discounts and refunds), then multiplies by 100. This rate is higher than the gross rate because discounts and refunds reduce the denominator. A lower percentage indicates better margin retention after adjustments. *** ## When to Use | Scenario | Action | | ------------------- | ------------------------------------------------------------- | | True profitability | Use after-adjustment baseline for margin analysis | | Discount impact | Compare to gross rate to see how discounts affect cost ratios | | Margin benchmarking | Track trends to ensure costs don't outpace net revenue | | Segment comparison | Compare against NC and RC rates for customer-type insights | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------- | ------------------------------- | | [COGS](/reference/metrics/orders/cogs/cogs) | Dollar value used in numerator | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue baseline in denominator | | [New Customer COGS Net Rate](/reference/metrics/orders/cogs/new-customer-cogs-net-rate) | First-time buyer segment | | [Returning Customer COGS Net Rate](/reference/metrics/orders/cogs/returning-customer-cogs-net-rate) | Repeat buyer segment | [See all COGS metrics →](/reference/metrics/orders/cogs) # COGS Per Order: Average Product Cost Per Order Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/cogs-per-order Track average cost of goods sold per order. Understand your per-order cost structure for pricing and profitability analysis. Average product cost per order—useful for understanding the cost structure of a typical transaction. ## Formula **COGS Per Order** = [**COGS**](/reference/metrics/orders/cogs/cogs) ÷ [**Total Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ----------------------------------------------------------- | --------------------------- | | [**COGS**](/reference/metrics/orders/cogs/cogs) | Total cost of products sold | | [**Total Orders**](/reference/metrics/orders/counts/orders) | Number of orders placed | | Metadata | | | --------------- | -------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), Upstack Costs | | **Aggregation** | Ratio | *** ## Example Your store had **\$47,500** in COGS across **1,250** orders this month: | Metric | Value | | ------------------ | ----------- | | COGS | \$47,500 | | Total Orders | 1,250 | | **COGS Per Order** | **\$38.00** | *** ## How It Works Divides total COGS by the number of orders to calculate the average product cost per transaction. This metric helps you understand how much of each order's value goes to product costs, enabling better pricing and margin decisions. *** ## When to Use | Scenario | Action | | ----------------- | --------------------------------------------------- | | Pricing decisions | Ensure AOV covers COGS per order plus target margin | | Unit economics | Calculate per-order profit contribution | | Segment analysis | Compare to NC and RC COGS per order | | Cost monitoring | Track if product costs per transaction are rising | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------- | ------------------------------------ | | [COGS](/reference/metrics/orders/cogs/cogs) | Total product costs (numerator) | | [Total Orders](/reference/metrics/orders/counts/orders) | Order count (denominator) | | [New Customer COGS Per Order](/reference/metrics/orders/cogs/new-customer-cogs-per-order) | First-time buyer average | | [Returning Customer COGS Per Order](/reference/metrics/orders/cogs/returning-customer-cogs-per-order) | Repeat buyer average | | [Net AOV](/reference/metrics/orders/aov/net-aov) | Revenue per order to compare against | [See all COGS metrics →](/reference/metrics/orders/cogs) # New Customer COGS: Cost of Goods for First-Time Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/new-customer-cogs Track cost of goods sold for new customer orders. Calculate first-order gross margin and analyze acquisition cost structure by customer type. Cost of goods sold for orders placed by new customers—used to calculate new customer gross margin. ## Formula **New Customer COGS** = **SUM** ( Product Cost ) **WHERE** [customer\_type = new\_customer](/data-dictionary/measures-and-dimensions#customer-type) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | **Product Cost** | Cost of products in the order from Shopify inventory | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to orders from first-time buyers | | Metadata | | | --------------- | -------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), Upstack Costs | | **Aggregation** | Sum | *** ## Example Your store generated **\$18,340** in new customer COGS this month from 412 first-time orders: | Segment | COGS | Revenue | Gross Margin | | ------------------- | ------------ | ------------- | ------------ | | New Customers | \$18,340 | \$47,200 | 61.1% | | Returning Customers | \$24,680 | \$68,400 | 63.9% | | **All Orders** | **\$43,020** | **\$115,600** | **62.8%** | New customers have slightly lower margins due to higher average discount rates on acquisition offers. *** ## How It Works New Customer COGS sums the product costs for all orders placed by first-time buyers during the selected period. Product costs come from Shopify variant cost data. This metric is essential for calculating whether your customer acquisition costs can be recovered from first-order profit. *** ## When to Use | Scenario | Action | | ------------------------- | --------------------------------------------------------- | | Acquisition profitability | Subtract from NC Revenue to find first-order gross profit | | CAC payback analysis | Compare NC COGS + ad spend to NC Revenue | | Segment cost structure | Identify if new customers buy higher-cost products | | Margin by cohort | Track if acquisition channel affects product mix | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ------------------------------------- | | [COGS](/reference/metrics/orders/cogs/cogs) | All customers combined | | [Returning Customer COGS](/reference/metrics/orders/cogs/returning-customer-cogs) | Repeat buyer comparison | | [New Customer COGS Per Order](/reference/metrics/orders/cogs/new-customer-cogs-per-order) | Average cost per first-time order | | [New Customer Gross Revenue](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Used with NC COGS to calculate margin | [See all COGS metrics →](/reference/metrics/orders/cogs) # New Customer COGS Gross Rate: First-Time Buyer Cost Ratio Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/new-customer-cogs-gross-rate Measure new customer COGS as a percentage of their gross revenue. Track first-time buyer cost efficiency and compare margin ratios across segments. New customer COGS as a share of their gross revenue—shows what percentage of first-time buyer revenue goes to product costs. ## Formula **New Customer COGS Gross Rate** = ( [**New Customer COGS**](/reference/metrics/orders/cogs/new-customer-cogs) ÷ [**New Customer Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------- | | [**New Customer COGS**](/reference/metrics/orders/cogs/new-customer-cogs) | Cost of goods sold for first-time buyer orders | | [**New Customer Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Gross revenue from new customers before discounts | | Metadata | | | --------------- | -------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), Upstack Costs | | **Aggregation** | Ratio | *** ## Example Your new customers generated **\$47,200** in gross revenue with **\$18,340** in product costs: | Segment | COGS | Gross Revenue | COGS/Gross Rate | | ------------------- | -------- | ------------- | --------------- | | New Customers | \$18,340 | \$47,200 | 38.9% | | Returning Customers | \$24,680 | \$68,400 | 36.1% | New customers have a higher COGS rate—they often purchase starter bundles or lower-margin acquisition products. *** ## How It Works This metric divides New Customer COGS by New Customer Gross Revenue. Higher percentages indicate new customers are buying higher-cost products relative to revenue. Compare to returning customer rate to understand how cost efficiency differs by segment. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------------------------------------ | | Segment cost analysis | Compare to returning customer COGS rate for efficiency differences | | Acquisition strategy | Evaluate if starter products are eating into margins | | Product mix review | Identify if new customers gravitate toward high-cost items | | Pricing validation | Ensure acquisition pricing maintains healthy cost ratios | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------- | --------------------------------------------- | | [New Customer COGS](/reference/metrics/orders/cogs/new-customer-cogs) | Numerator—product costs for first-time orders | | [New Customer Gross Revenue](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Denominator—pre-discount revenue | | [COGS Gross Rate](/reference/metrics/orders/cogs/cogs-gross-rate) | All-customer comparison | | [Returning Customer COGS Gross Rate](/reference/metrics/orders/cogs/returning-customer-cogs-gross-rate) | Repeat buyer comparison | [See all COGS metrics →](/reference/metrics/orders/cogs) # New Customer COGS Net Rate: First-Time Buyer Cost vs Net Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/new-customer-cogs-net-rate Measure new customer COGS as a percentage of net revenue. Track true cost efficiency for first-time buyers after discounts and refunds. New customer COGS as a share of their net revenue—shows the true cost ratio after discounts and refunds. ## Formula **New Customer COGS Net Rate** = ( [**New Customer COGS**](/reference/metrics/orders/cogs/new-customer-cogs) ÷ [**New Customer Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------ | ---------------------------------------------------------- | | [**New Customer COGS**](/reference/metrics/orders/cogs/new-customer-cogs) | Cost of goods sold for first-time buyer orders | | [**New Customer Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) | Net revenue from new customers after discounts and refunds | | Metadata | | | --------------- | -------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), Upstack Costs | | **Aggregation** | Ratio | *** ## Example Your new customers generated **\$42,400** in net revenue with **\$18,340** in product costs: | Segment | COGS | Net Revenue | COGS/Net Rate | | ------------------- | -------- | ----------- | ------------- | | New Customers | \$18,340 | \$42,400 | 43.3% | | Returning Customers | \$24,680 | \$65,100 | 37.9% | New customers have higher COGS net rate due to acquisition discounts reducing net revenue. *** ## How It Works This metric divides New Customer COGS by New Customer Net Revenue. It's typically higher than the gross rate because discounts and refunds reduce the denominator. Use this for true profitability analysis after accounting for all adjustments. *** ## When to Use | Scenario | Action | | --------------------- | -------------------------------------------- | | True acquisition cost | See COGS burden after discounts are applied | | Margin reality check | Understand actual first-order profitability | | Discount impact | Compare to gross rate to see discount effect | | CAC payback | Use with NC revenue for payback analysis | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------- | ------------------------------------ | | [New Customer COGS](/reference/metrics/orders/cogs/new-customer-cogs) | Numerator—product costs | | [New Customer Net Revenue](/reference/metrics/orders/revenue/new-customer-net-revenue) | Denominator—after-adjustment revenue | | [COGS Net Rate](/reference/metrics/orders/cogs/cogs-net-rate) | All-customer comparison | | [Returning Customer COGS Net Rate](/reference/metrics/orders/cogs/returning-customer-cogs-net-rate) | Repeat buyer comparison | [See all COGS metrics →](/reference/metrics/orders/cogs) # New Customer COGS Per Order: Average Cost for First-Time Orders Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/new-customer-cogs-per-order Track average cost of goods sold per new customer order. Understand first-time buyer cost structure for CAC payback and margin analysis. Average product cost per new customer order—compare to returning customers to assess cost mix differences. ## Formula **New Customer COGS Per Order** = [**New Customer COGS**](/reference/metrics/orders/cogs/new-customer-cogs) ÷ [**New Customer Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ----------------------------------------------- | | [**New Customer COGS**](/reference/metrics/orders/cogs/new-customer-cogs) | Total product costs for first-time buyer orders | | [**New Customer Orders**](/reference/metrics/orders/counts/orders) | Number of orders from first-time buyers | | Metadata | | | --------------- | -------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), Upstack Costs | | **Aggregation** | Ratio | *** ## Example Your store had **\$18,340** in new customer COGS across **412** first-time orders: | Segment | COGS | Orders | COGS/Order | | ------------------- | -------- | ------ | ---------- | | New Customers | \$18,340 | 412 | \$44.51 | | Returning Customers | \$24,680 | 589 | \$41.90 | New customers have higher COGS per order—they tend to buy starter bundles with higher product costs. *** ## How It Works Divides New Customer COGS by the count of new customer orders. This metric reveals the average product cost burden for first-time transactions, helping you understand whether new customers are buying higher or lower-cost products compared to returning customers. *** ## When to Use | Scenario | Action | | -------------------- | ------------------------------------------- | | CAC payback modeling | Factor into first-order profit calculation | | Product mix analysis | See if new customers buy different products | | Pricing strategy | Ensure first-order pricing covers costs | | Segment comparison | Compare to RC COGS/Order for insights | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------- | ------------------------- | | [New Customer COGS](/reference/metrics/orders/cogs/new-customer-cogs) | Total costs (numerator) | | [New Customer Orders](/reference/metrics/orders/counts/orders) | Order count (denominator) | | [COGS Per Order](/reference/metrics/orders/cogs/cogs-per-order) | All-customer average | | [Returning Customer COGS Per Order](/reference/metrics/orders/cogs/returning-customer-cogs-per-order) | Repeat buyer average | [See all COGS metrics →](/reference/metrics/orders/cogs) # New Customer Other COGS: User-Defined COGS for First-Time Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/new-customer-other-cogs Track user-defined cost of goods sold for new customer orders. Capture packaging, duties, and other COGS not in Shopify product variants. User-defined COGS from cost entries for new customer orders—captures costs beyond Shopify product variants. ## Formula **New Customer Other COGS** = **SUM** ( Order Cost Entries ) **WHERE** category = COGS **AND** [customer\_type = new\_customer](/data-dictionary/measures-and-dimensions#customer-type) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | -------------------------------------------- | | **Order Cost Entries** | User-defined cost entries with COGS category | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to orders from first-time buyers | | Metadata | | | --------------- | ------------- | | **Type** | Currency | | **Data Source** | Upstack Costs | | **Aggregation** | Sum | *** ## Example Your new customer orders incurred **\$1,850** in other COGS this month: | Cost Entry | NC Total | | ------------------- | ----------- | | Packaging materials | \$920 | | Import duties | \$640 | | Quality inspection | \$290 | | **NC Other COGS** | **\$1,850** | *** ## How It Works New Customer Other COGS sums all cost entries categorized as COGS for first-time buyer orders. These are costs you've configured in Upstack—like packaging, duties, or inspection fees—that aren't stored on Shopify product variants. Combined with NC COGS, this gives you complete product cost visibility for acquisition analysis. *** ## When to Use | Scenario | Action | | ------------------------ | ------------------------------------------------- | | Complete NC cost picture | Add to NC COGS for total product costs | | Cost entry validation | Verify user-defined COGS are allocating correctly | | Segment comparison | Compare to RC Other COGS for differences | | Margin accuracy | Include in NC margin calculations | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | -------------------------------- | | [Other COGS](/reference/metrics/orders/cogs/other-cogs) | All customers combined | | [Returning Customer Other COGS](/reference/metrics/orders/cogs/returning-customer-other-cogs) | Repeat buyer comparison | | [New Customer COGS](/reference/metrics/orders/cogs/new-customer-cogs) | Product-level costs from Shopify | | [Total COGS](/reference/metrics/orders/cogs/total-cogs) | COGS + Other COGS combined | [See all COGS metrics →](/reference/metrics/orders/cogs) # New Customer Total COGS: First-Time Buyer Cost of Goods Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/new-customer-total-cogs Track total cost of goods sold for new customer orders. Combines product COGS and user-defined COGS for first-time buyers in Shopify. New Customer Total COGS measures the combined product costs and user-defined COGS for first-time buyer orders. ## Formula **NC Total COGS** = [**NC COGS**](/reference/metrics/orders/cogs/new-customer-cogs) + [**NC Other COGS**](/reference/metrics/orders/cogs/new-customer-other-cogs) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [**NC COGS**](/reference/metrics/orders/cogs/new-customer-cogs) | Product cost of goods sold for first-time buyers | | [**NC Other COGS**](/reference/metrics/orders/cogs/new-customer-other-cogs) | User-defined COGS for first-time buyers | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to first-time buyer orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store incurred \$18,600 in total COGS for 600 new customer orders. | Cost Category | Value | | ----------------- | ------------ | | NC Product COGS | \$18,000 | | NC Other COGS | \$600 | | **NC Total COGS** | **\$18,600** | *** ## How It Works New Customer Total COGS combines the product-level cost of goods (pulled from Shopify variant costs) with any user-defined COGS entries configured in cost settings. This total is deducted from new customer net revenue to calculate NC CM1 (gross margin). *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------ | | Calculating NC gross margin | NC Net Revenue − NC Total COGS = NC CM1 | | Comparing NC vs RC product costs | Track if first-time buyers purchase different products | | Analyzing acquisition product mix | NC Total COGS/order reveals starter product costs | | Setting margin targets | Ensure NC Total COGS allows for acceptable CM1 | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | ---------------------------- | | [New Customer COGS](/reference/metrics/orders/cogs/new-customer-cogs) | Product-level COGS component | | [New Customer Other COGS](/reference/metrics/orders/cogs/new-customer-other-cogs) | User-defined COGS component | | [Returning Customer Total COGS](/reference/metrics/orders/cogs/returning-customer-total-cogs) | Total COGS for repeat buyers | [See all COGS metrics →](/reference/metrics/orders/cogs) # OPEX: Operating Expenses Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/opex Track operating expenses for your Shopify store. Measure fixed costs like salaries, rent, and software. OPEX (Operating Expenses) measures your fixed operating costs—salaries, rent, software, insurance, and other overhead expenses. ## Formula **OPEX** = **SUM** ( User-defined operating expense entries ) ### Formula Components | Metric | Definition | | ---------------- | ------------------------------------------------ | | **OPEX Entries** | User-configured operating costs in Cost Settings | | Metadata | | | --------------- | ----------------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store has **\$25,000** in monthly operating expenses. | Component | Amount | Notes | | -------------- | ------------ | ----------------- | | Salaries | \$15,000 | Team payroll | | Office/Rent | \$3,000 | Workspace costs | | Software | \$2,000 | Tools and SaaS | | Insurance | \$1,000 | Business coverage | | Other | \$4,000 | Miscellaneous | | **Total OPEX** | **\$25,000** | Monthly total | *** ## How It Works OPEX is configured in Cost Settings under "Fixed Costs." These are your operating overhead costs that don't scale directly with orders. OPEX is deducted at the CM4 level to calculate true operating profit. *** ## When to Use | Scenario | Action | | ---------------------- | ---------------------------------------- | | Tracking overhead | Monitor fixed cost structure | | CM4 calculation | OPEX reduces CM3 to CM4 | | Break-even analysis | Know OPEX to calculate break-even orders | | Profitability planning | Manage OPEX to improve margins | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ------------------------------- | | [CM4](/reference/metrics/orders/contribution-margin/cm4) | Operating profit after OPEX | | [Agency Fees](/reference/metrics/orders/cogs/agency-fees) | Agency costs also at CM4 level | | [CM3](/reference/metrics/orders/contribution-margin/contribution-margin) | Contribution margin before OPEX | [See all COGS metrics →](/reference/metrics/orders/cogs) # Other COGS: User-Defined Cost of Goods Sold Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/other-cogs Track user-defined cost of goods sold from order cost entries. Combine with product COGS to calculate Total COGS for accurate margin analysis. User-defined cost of goods sold from order cost entries with category COGS. Combined with product COGS to calculate Total COGS. ## Formula **Other COGS** = **SUM** ( Order Cost Entries ) **WHERE** category = COGS ### Formula Components | Metric | Definition | | ---------------------- | ----------------------------------------------- | | **Order Cost Entries** | Cost entries you've configured in Upstack Costs | | **category = COGS** | Filters to entries categorized as cost of goods | | Metadata | | | --------------- | ------------- | | **Type** | Currency | | **Data Source** | Upstack Costs | | **Aggregation** | Sum | *** ## Example Your store has **\$12,400** in product-level COGS from Shopify variants, plus additional costs you've configured: | Cost Entry | Monthly Total | | ------------------- | ------------- | | Packaging materials | \$2,150 | | Quality inspection | \$890 | | Import duties | \$1,460 | | **Other COGS** | **\$4,500** | | Product COGS | \$12,400 | | **Total COGS** | **\$16,900** | *** ## How It Works Other COGS captures cost of goods that aren't stored on Shopify product variants. Configure these as order cost entries with the COGS category. They're summed across all orders and combined with product-level COGS to calculate Total COGS—giving you a complete picture of goods costs for margin analysis. *** ## When to Use | Scenario | Action | | ------------------------ | ------------------------------------- | | Tracking packaging costs | Add as COGS cost entry | | Including import duties | Capture costs not in product variants | | Calculating true margins | Combine with COGS for Total COGS | | Analyzing cost structure | Break down COGS components | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | ---------------------------------------- | | [COGS](/reference/metrics/orders/cogs/cogs) | Product-level cost from Shopify variants | | [Total COGS](/reference/metrics/orders/cogs/total-cogs) | COGS + Other COGS combined | | [New Customer Other COGS](/reference/metrics/orders/cogs/new-customer-other-cogs) | Other COGS for first-time buyers | | [Returning Customer Other COGS](/reference/metrics/orders/cogs/returning-customer-other-cogs) | Other COGS for repeat buyers | | [CM1](/reference/metrics/orders/contribution-margin/cm1) | Uses Total COGS in calculation | [See all COGS metrics →](/reference/metrics/orders/cogs) # Other Cost: Additional Variable Order Costs Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/other-cost Track additional variable order costs including per-order fees, per-item fees, and percentage-based costs. Part of Variable Costs calculation. Additional variable order costs beyond handling, gateway, and shipping—includes per-order fees, per-item fees, and percentage-based costs. ## Formula **Other Cost** = **SUM** ( Per-Order Fees + Per-Item Fees + Percentage Fees ) ### Formula Components | Metric | Definition | | ------------------- | --------------------------------------------------------- | | **Per-Order Fees** | Fixed fees charged per order (e.g., insurance, packaging) | | **Per-Item Fees** | Fees charged per line item or unit | | **Percentage Fees** | Costs calculated as % of order value | | Metadata | | | --------------- | ------------- | | **Type** | Currency | | **Data Source** | Upstack Costs | | **Aggregation** | Sum | *** ## Example Your store incurred **\$3,420** in other costs this month across 1,140 orders: | Cost Type | Total | | -------------------- | ----------- | | Insurance per order | \$1,140 | | Pick & pack per item | \$1,680 | | Platform fees (1.5%) | \$600 | | **Other Cost** | **\$3,420** | *** ## How It Works Other Cost aggregates variable order costs that aren't captured by handling, gateway, or shipping. Configure these in Upstack Cost Settings as per-order fees, per-item fees, or percentage-based costs. These costs are included in Variable Costs and affect CM2 calculations. *** ## When to Use | Scenario | Action | | -------------------- | --------------------------------------------- | | Full cost accounting | Include insurance, pick & pack, platform fees | | CM2 accuracy | Ensure all variable costs are captured | | Cost optimization | Identify and reduce miscellaneous fees | | Vendor comparison | Track fees across different service providers | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------- | -------------------------------- | | [Variable Costs](/reference/metrics/orders/cogs/variable-costs) | Includes Other Cost as component | | [Other Cost Per Order](/reference/metrics/orders/cogs/other-cost-per-order) | Average per transaction | | [Other Cost %](/reference/metrics/orders/cogs/other-cost-percent) | As percentage of net revenue | | [CM2](/reference/metrics/orders/contribution-margin/cm2) | Deducts Variable Costs from CM1 | [See all COGS metrics →](/reference/metrics/orders/cogs) # Other Cost Per Order: Average Additional Cost Per Transaction Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/other-cost-per-order Track average other variable costs per order. Monitor per-transaction fees for insurance, pick & pack, and platform costs. Average other variable cost per order—shows the per-transaction burden of miscellaneous fees. ## Formula **Other Cost Per Order** = [**Other Cost**](/reference/metrics/orders/cogs/other-cost) ÷ [**Total Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ----------------------------------------------------------- | ---------------------------------------------- | | [**Other Cost**](/reference/metrics/orders/cogs/other-cost) | Per-order, per-item, and percentage-based fees | | [**Total Orders**](/reference/metrics/orders/counts/orders) | Number of orders placed | | Metadata | | | --------------- | ------------- | | **Type** | Currency | | **Data Source** | Upstack Costs | | **Aggregation** | Ratio | *** ## Example Your store had **\$3,420** in other costs across **1,140** orders: | Metric | Value | | ------------------------ | ---------- | | Other Cost | \$3,420 | | Total Orders | 1,140 | | **Other Cost Per Order** | **\$3.00** | Each order incurs \$3.00 in miscellaneous variable fees on average. *** ## How It Works Divides total Other Cost by order count. This metric helps you understand the fixed-cost-like burden of per-order fees. Use it alongside AOV to ensure pricing covers all variable costs including these miscellaneous fees. *** ## When to Use | Scenario | Action | | ----------------- | ---------------------------------------- | | Unit economics | Factor into per-order profit calculation | | Pricing floors | Ensure pricing covers this cost layer | | Cost optimization | Identify expensive per-order fees | | Vendor comparison | Compare service provider costs | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------- | ---------------------------- | | [Other Cost](/reference/metrics/orders/cogs/other-cost) | Total costs (numerator) | | [Total Orders](/reference/metrics/orders/counts/orders) | Order count (denominator) | | [Other Cost %](/reference/metrics/orders/cogs/other-cost-percent) | As percentage of revenue | | [Variable Costs Per Order](/reference/metrics/orders/cogs/variable-costs-per-order) | All variable costs per order | [See all COGS metrics →](/reference/metrics/orders/cogs) # Other Cost %: Additional Costs as % of Net Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/other-cost-percent Track other variable costs as a percentage of net revenue. Monitor the impact of per-order, per-item, and percentage fees on margins. Other variable costs as a percentage of net revenue—shows the margin impact of miscellaneous per-order fees. ## Formula **Other Cost %** = ( [**Other Cost**](/reference/metrics/orders/cogs/other-cost) ÷ [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------- | ---------------------------------------------- | | [**Other Cost**](/reference/metrics/orders/cogs/other-cost) | Per-order, per-item, and percentage-based fees | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds | | Metadata | | | --------------- | ------------- | | **Type** | Percentage | | **Data Source** | Upstack Costs | | **Aggregation** | Ratio | *** ## Example Your store had **\$3,420** in other costs against **\$125,000** net revenue: | Metric | Value | | ---------------- | --------- | | Other Cost | \$3,420 | | Net Revenue | \$125,000 | | **Other Cost %** | **2.7%** | This means 2.7% of net revenue goes to miscellaneous variable fees. *** ## How It Works Divides Other Cost by Net Revenue and multiplies by 100. This percentage helps you understand how much of your margin is consumed by fees beyond the core costs (handling, gateway, shipping). Monitor this to ensure miscellaneous costs don't creep up over time. *** ## When to Use | Scenario | Action | | ------------------- | ---------------------------------- | | Margin leakage | Identify if other fees are growing | | Cost benchmarking | Compare across periods or segments | | Fee negotiation | Quantify impact of vendor fees | | Break-even analysis | Factor into pricing models | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------- | ------------------------------ | | [Other Cost](/reference/metrics/orders/cogs/other-cost) | Dollar value (numerator) | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue baseline (denominator) | | [Other Cost Per Order](/reference/metrics/orders/cogs/other-cost-per-order) | Per-transaction average | | [Variable Costs %](/reference/metrics/orders/cogs/variable-costs-percent) | All variable costs as % | [See all COGS metrics →](/reference/metrics/orders/cogs) # Returning Customer COGS: Cost of Goods for Repeat Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/returning-customer-cogs Track cost of goods sold for returning customer orders. Calculate repeat-buyer gross margin and compare cost structure across segments. Cost of goods sold for orders placed by returning customers—used to calculate repeat buyer gross margin. ## Formula **Returning Customer COGS** = **SUM** ( Product Cost ) **WHERE** [customer\_type = returning\_customer](/data-dictionary/measures-and-dimensions#customer-type) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | **Product Cost** | Cost of products in the order from Shopify inventory | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to orders from customers who have purchased before | | Metadata | | | --------------- | -------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), Upstack Costs | | **Aggregation** | Sum | *** ## Example Your returning customers generated **\$24,680** in COGS this month from 589 repeat orders: | Segment | COGS | Revenue | Gross Margin | | ------------------- | ------------ | ------------- | ------------ | | Returning Customers | \$24,680 | \$68,400 | 63.9% | | New Customers | \$18,340 | \$47,200 | 61.1% | | **All Orders** | **\$43,020** | **\$115,600** | **62.8%** | Returning customers have better margins—they buy fewer discounted starter products. *** ## How It Works Returning Customer COGS sums the product costs for all orders placed by repeat buyers during the selected period. Product costs come from Shopify variant cost data. Compare to new customer COGS to understand how product mix differs by customer segment. *** ## When to Use | Scenario | Action | | ----------------------- | -------------------------------------------- | | Retention profitability | Calculate repeat-order gross profit | | LTV modeling | Use RC COGS in lifetime value calculations | | Segment cost structure | Compare to NC COGS for product mix insights | | Margin by cohort | Track if retention campaigns affect cost mix | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ------------------------------------- | | [COGS](/reference/metrics/orders/cogs/cogs) | All customers combined | | [New Customer COGS](/reference/metrics/orders/cogs/new-customer-cogs) | First-time buyer comparison | | [Returning Customer COGS Per Order](/reference/metrics/orders/cogs/returning-customer-cogs-per-order) | Average cost per repeat order | | [Returning Customer Gross Revenue](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Used with RC COGS to calculate margin | [See all COGS metrics →](/reference/metrics/orders/cogs) # Returning Customer COGS Gross Rate: Repeat-Buyer Cost Ratio Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/returning-customer-cogs-gross-rate Measure returning customer COGS as a percentage of their gross revenue. Track repeat-buyer cost efficiency and compare margin ratios across segments. Returning customer COGS as a share of their gross revenue—shows what percentage of repeat-buyer revenue goes to product costs. ## Formula **Returning Customer COGS Gross Rate** = ( [**Returning Customer COGS**](/reference/metrics/orders/cogs/returning-customer-cogs) ÷ [**Returning Customer Gross Revenue**](/reference/metrics/orders/revenue/returning-customer-gross-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [**Returning Customer COGS**](/reference/metrics/orders/cogs/returning-customer-cogs) | Cost of goods sold for repeat buyer orders | | [**Returning Customer Gross Revenue**](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Gross revenue from returning customers before discounts | | Metadata | | | --------------- | -------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), Upstack Costs | | **Aggregation** | Ratio | *** ## Example Your returning customers generated **\$68,400** in gross revenue with **\$24,680** in product costs: | Segment | COGS | Gross Revenue | COGS/Gross Rate | | ------------------- | -------- | ------------- | --------------- | | Returning Customers | \$24,680 | \$68,400 | 36.1% | | New Customers | \$18,340 | \$47,200 | 38.9% | Returning customers have a lower COGS rate—they purchase higher-margin products without introductory bundles. *** ## How It Works This metric divides Returning Customer COGS by Returning Customer Gross Revenue. Lower percentages indicate better cost efficiency. Unlike margins which show what you keep, this rate shows what percentage goes directly to product costs. *** ## When to Use | Scenario | Action | | --------------------- | ---------------------------------------------------------------- | | Segment cost analysis | Compare to new customer COGS rate for efficiency differences | | Margin benchmarking | Track whether repeat buyers maintain cost efficiency over time | | Product mix review | Identify if returning customers shift toward lower-cost products | | Pricing validation | Confirm retention pricing preserves healthy cost ratios | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ----------------------------------------- | | [Returning Customer COGS](/reference/metrics/orders/cogs/returning-customer-cogs) | Numerator—product costs for repeat orders | | [Returning Customer Gross Revenue](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Denominator—pre-discount revenue | | [COGS Gross Rate](/reference/metrics/orders/cogs/cogs-gross-rate) | All-customer comparison | | [New Customer COGS Gross Rate](/reference/metrics/orders/cogs/new-customer-cogs-gross-rate) | First-time buyer comparison | [See all COGS metrics →](/reference/metrics/orders/cogs) # Returning Customer COGS Net Rate: Repeat-Buyer Cost vs Net Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/returning-customer-cogs-net-rate Measure returning customer COGS as a percentage of net revenue. Track true cost efficiency for repeat buyers after discounts and refunds. Returning customer COGS as a share of their net revenue—shows the true cost ratio after discounts and refunds. ## Formula **Returning Customer COGS Net Rate** = ( [**Returning Customer COGS**](/reference/metrics/orders/cogs/returning-customer-cogs) ÷ [**Returning Customer Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- | | [**Returning Customer COGS**](/reference/metrics/orders/cogs/returning-customer-cogs) | Cost of goods sold for repeat buyer orders | | [**Returning Customer Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Net revenue from returning customers after discounts and refunds | | Metadata | | | --------------- | -------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), Upstack Costs | | **Aggregation** | Ratio | *** ## Example Your returning customers generated **\$65,100** in net revenue with **\$24,680** in product costs: | Segment | COGS | Net Revenue | COGS/Net Rate | | ------------------- | -------- | ----------- | ------------- | | Returning Customers | \$24,680 | \$65,100 | 37.9% | | New Customers | \$18,340 | \$42,400 | 43.3% | Returning customers have lower COGS net rate—better margins even after adjustments. *** ## How It Works This metric divides Returning Customer COGS by Returning Customer Net Revenue. It's typically higher than the gross rate because discounts and refunds reduce the denominator. Use this for true profitability analysis of your repeat buyer segment. *** ## When to Use | Scenario | Action | | ---------------------------- | -------------------------------------- | | True retention profitability | See COGS burden after adjustments | | LTV accuracy | Use net-based rates for lifetime value | | Loyalty program impact | Compare before/after loyalty discounts | | Segment benchmarking | Compare to NC rate for insights | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ------------------------------------ | | [Returning Customer COGS](/reference/metrics/orders/cogs/returning-customer-cogs) | Numerator—product costs | | [Returning Customer Net Revenue](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Denominator—after-adjustment revenue | | [COGS Net Rate](/reference/metrics/orders/cogs/cogs-net-rate) | All-customer comparison | | [New Customer COGS Net Rate](/reference/metrics/orders/cogs/new-customer-cogs-net-rate) | First-time buyer comparison | [See all COGS metrics →](/reference/metrics/orders/cogs) # Returning Customer COGS Per Order: Average Cost for Repeat Orders Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/returning-customer-cogs-per-order Track average cost of goods sold per returning customer order. Understand repeat buyer cost structure for LTV and margin analysis. Average product cost per returning customer order—compare to new customers to assess cost mix differences. ## Formula **Returning Customer COGS Per Order** = [**Returning Customer COGS**](/reference/metrics/orders/cogs/returning-customer-cogs) ÷ [**Returning Customer Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------- | ------------------------------------------- | | [**Returning Customer COGS**](/reference/metrics/orders/cogs/returning-customer-cogs) | Total product costs for repeat buyer orders | | [**Returning Customer Orders**](/reference/metrics/orders/counts/orders) | Number of orders from repeat buyers | | Metadata | | | --------------- | -------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), Upstack Costs | | **Aggregation** | Ratio | *** ## Example Your store had **\$24,680** in returning customer COGS across **589** repeat orders: | Segment | COGS | Orders | COGS/Order | | ------------------- | -------- | ------ | ---------- | | Returning Customers | \$24,680 | 589 | \$41.90 | | New Customers | \$18,340 | 412 | \$44.51 | Returning customers have lower COGS per order—they buy fewer starter bundles and more replenishment items. *** ## How It Works Divides Returning Customer COGS by the count of returning customer orders. This metric reveals the average product cost burden for repeat transactions, helping you understand whether returning customers are buying higher or lower-cost products compared to new customers. *** ## When to Use | Scenario | Action | | -------------------- | ------------------------------------------------ | | LTV modeling | Factor into repeat-order profit calculation | | Product mix analysis | See if repeat buyers shift to different products | | Retention strategy | Understand cost impact of loyalty programs | | Segment comparison | Compare to NC COGS/Order for insights | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------- | ------------------------- | | [Returning Customer COGS](/reference/metrics/orders/cogs/returning-customer-cogs) | Total costs (numerator) | | [Returning Customer Orders](/reference/metrics/orders/counts/orders) | Order count (denominator) | | [COGS Per Order](/reference/metrics/orders/cogs/cogs-per-order) | All-customer average | | [New Customer COGS Per Order](/reference/metrics/orders/cogs/new-customer-cogs-per-order) | First-time buyer average | [See all COGS metrics →](/reference/metrics/orders/cogs) # Returning Customer Other COGS: User-Defined COGS for Repeat Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/returning-customer-other-cogs Track user-defined cost of goods sold for returning customer orders. Capture packaging, duties, and other COGS not in Shopify product variants. User-defined COGS from cost entries for returning customer orders—captures costs beyond Shopify product variants. ## Formula **Returning Customer Other COGS** = **SUM** ( Order Cost Entries ) **WHERE** category = COGS **AND** [customer\_type = returning\_customer](/data-dictionary/measures-and-dimensions#customer-type) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | **Order Cost Entries** | User-defined cost entries with COGS category | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to orders from customers who have purchased before | | Metadata | | | --------------- | ------------- | | **Type** | Currency | | **Data Source** | Upstack Costs | | **Aggregation** | Sum | *** ## Example Your returning customer orders incurred **\$2,650** in other COGS this month: | Cost Entry | RC Total | | ------------------- | ----------- | | Packaging materials | \$1,230 | | Import duties | \$820 | | Quality inspection | \$600 | | **RC Other COGS** | **\$2,650** | *** ## How It Works Returning Customer Other COGS sums all cost entries categorized as COGS for repeat buyer orders. These are costs you've configured in Upstack—like packaging, duties, or inspection fees—that aren't stored on Shopify product variants. Combined with RC COGS, this gives you complete product cost visibility for retention analysis. *** ## When to Use | Scenario | Action | | ------------------------ | ------------------------------------------------- | | Complete RC cost picture | Add to RC COGS for total product costs | | Cost entry validation | Verify user-defined COGS are allocating correctly | | Segment comparison | Compare to NC Other COGS for differences | | LTV accuracy | Include in repeat-order margin calculations | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------- | -------------------------------- | | [Other COGS](/reference/metrics/orders/cogs/other-cogs) | All customers combined | | [New Customer Other COGS](/reference/metrics/orders/cogs/new-customer-other-cogs) | First-time buyer comparison | | [Returning Customer COGS](/reference/metrics/orders/cogs/returning-customer-cogs) | Product-level costs from Shopify | | [Total COGS](/reference/metrics/orders/cogs/total-cogs) | COGS + Other COGS combined | [See all COGS metrics →](/reference/metrics/orders/cogs) # Returning Customer Total COGS: Repeat Buyer Cost of Goods Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/returning-customer-total-cogs Track total cost of goods sold for returning customer orders. Combines product COGS and user-defined COGS for repeat buyers in Shopify. Returning Customer Total COGS measures the combined product costs and user-defined COGS for repeat buyer orders. ## Formula **RC Total COGS** = [**RC COGS**](/reference/metrics/orders/cogs/returning-customer-cogs) + [**RC Other COGS**](/reference/metrics/orders/cogs/returning-customer-other-cogs) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [**RC COGS**](/reference/metrics/orders/cogs/returning-customer-cogs) | Product cost of goods sold for repeat buyers | | [**RC Other COGS**](/reference/metrics/orders/cogs/returning-customer-other-cogs) | User-defined COGS for repeat buyers | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to repeat buyer orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store incurred \$29,400 in total COGS for 900 returning customer orders. | Cost Category | Value | | ----------------- | ------------ | | RC Product COGS | \$28,500 | | RC Other COGS | \$900 | | **RC Total COGS** | **\$29,400** | *** ## How It Works Returning Customer Total COGS combines the product-level cost of goods (pulled from Shopify variant costs) with any user-defined COGS entries configured in cost settings. This total is deducted from returning customer net revenue to calculate RC CM1 (gross margin). *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------- | | Calculating RC gross margin | RC Net Revenue − RC Total COGS = RC CM1 | | Comparing NC vs RC product costs | Track if repeat buyers have different product mix | | Analyzing product cost trends | RC Total COGS/order shows repeat purchase cost patterns | | Validating CM1 margins | Ensure RC Total COGS allows for healthy gross margin | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------- | -------------------------------- | | [Returning Customer COGS](/reference/metrics/orders/cogs/returning-customer-cogs) | Product-level COGS component | | [Returning Customer Other COGS](/reference/metrics/orders/cogs/returning-customer-other-cogs) | User-defined COGS component | | [New Customer Total COGS](/reference/metrics/orders/cogs/new-customer-total-cogs) | Total COGS for first-time buyers | [See all COGS metrics →](/reference/metrics/orders/cogs) # Total COGS: Complete Cost of Goods Sold Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/total-cogs Track your complete cost of goods sold combining product costs and user-defined COGS entries. Essential for accurate CM1 and margin analysis. The total cost of goods sold, combining product variant costs from Shopify and user-defined COGS entries. ## Formula **Total COGS** = [**COGS**](/reference/metrics/orders/cogs/cogs) + [**Other COGS**](/reference/metrics/orders/cogs/other-cogs) ### Formula Components | Metric | Definition | | ----------------------------------------------------------- | ------------------------------------------------- | | [**COGS**](/reference/metrics/orders/cogs/cogs) | Product-level cost of goods from Shopify variants | | [**Other COGS**](/reference/metrics/orders/cogs/other-cogs) | User-defined cost entries with category COGS | | Metadata | | | --------------- | -------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), Upstack Costs | | **Aggregation** | Sum | *** ## Example Your store had **\$16,900** in Total COGS for January: | Component | Value | Source | | ------------------- | ------------ | ---------------- | | Product COGS | \$12,400 | Shopify variants | | Packaging materials | \$2,150 | Cost entry | | Import duties | \$1,460 | Cost entry | | Quality inspection | \$890 | Cost entry | | **Total COGS** | **\$16,900** | Combined | *** ## How It Works Total COGS combines two sources: product variant costs from Shopify (COGS) and any additional cost-of-goods entries you've configured (Other COGS). This complete picture of goods costs is deducted from Net Revenue to calculate CM1—your first contribution margin. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------------ | | Calculating CM1 | Subtract Total COGS from Net Revenue | | Margin analysis | Use for accurate gross profit calculations | | Cost tracking | Monitor all goods costs in one metric | | Product profitability | Compare Total COGS against revenue | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | -------------------------------------------- | | [COGS](/reference/metrics/orders/cogs/cogs) | Product costs only (this metric includes it) | | [Other COGS](/reference/metrics/orders/cogs/other-cogs) | User-defined costs (this metric includes it) | | [CM1](/reference/metrics/orders/contribution-margin/cm1) | Net Revenue − Total COGS | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue used in CM1 calculation | | [Gross Profit](/reference/metrics/orders/contribution-margin/gross-profit) | Related margin metric | [See all COGS metrics →](/reference/metrics/orders/cogs) # Variable Costs: Total Variable Order Costs Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/variable-costs Track total variable order costs including handling, gateway fees, shipping, and other costs. Use for unit economics and contribution margin analysis. Variable Costs measures the total variable order costs—including handling, gateway fees, shipping, and other costs—that change with each order. ## Formula **Variable Costs** = **Handling Cost** + **Gateway Cost** + **Shipping Cost** + [**Other Cost**](/reference/metrics/orders/cogs/other-cost) ### Formula Components | Metric | Definition | | ----------------------------------------------------------- | -------------------------------------------------- | | **Handling Cost** | Per-order fulfillment and handling fees | | **Gateway Cost** | Payment processor and transaction fees | | **Shipping Cost** | Carrier shipping charges | | [**Other Cost**](/reference/metrics/orders/cogs/other-cost) | Additional per-order, per-item, or percentage fees | | Metadata | | | --------------- | -------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), Upstack Costs | | **Aggregation** | Sum | *** ## Example Your store processed **1,842 orders** in March with the following variable costs: | Cost Type | Total | | ------------------ | ------------ | | Handling fees | \$3,684 | | Gateway fees | \$4,238 | | Shipping costs | \$9,210 | | Other costs | \$1,289 | | **Variable Costs** | **\$18,421** | *** ## How It Works Variable Costs aggregates all per-order costs that scale with order volume. These costs are deducted from CM1 (Gross Profit) to calculate CM2 (Contribution Margin after variable costs). Tracking variable costs separately helps isolate product margin from operational costs. *** ## When to Use | Scenario | Action | | ------------------------------- | ----------------------------------------- | | Calculating CM2 | Subtract Variable Costs from Gross Profit | | Analyzing unit economics | Track per-order variable burden | | Setting pricing floors | Ensure prices cover COGS + Variable Costs | | Evaluating fulfillment partners | Compare handling and shipping costs | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------- | -------------------------------------------- | | [COGS](/reference/metrics/orders/cogs/cogs) | Product costs (separate from variable costs) | | [Other Cost](/reference/metrics/orders/cogs/other-cost) | Component of Variable Costs | | [Variable Costs Per Order](/reference/metrics/orders/cogs/variable-costs-per-order) | Average variable cost per order | | [Variable Costs %](/reference/metrics/orders/cogs/variable-costs-percent) | Variable costs as % of net revenue | [See all COGS metrics →](/reference/metrics/orders/cogs) # Variable Costs Per Order: Average Variable Cost Per Transaction Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/variable-costs-per-order Track average variable costs per order including handling, gateway, shipping, and other fees. Essential for unit economics and pricing analysis. Average variable cost per order—shows the per-transaction burden of handling, gateway, shipping, and other operational fees. ## Formula **Variable Costs Per Order** = [**Variable Costs**](/reference/metrics/orders/cogs/variable-costs) ÷ [**Total Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------- | ------------------------------------------- | | [**Variable Costs**](/reference/metrics/orders/cogs/variable-costs) | Handling + Gateway + Shipping + Other costs | | [**Total Orders**](/reference/metrics/orders/counts/orders) | Number of orders placed | | Metadata | | | --------------- | -------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), Upstack Costs | | **Aggregation** | Ratio | *** ## Example Your store had **\$18,421** in variable costs across **1,842** orders: | Metric | Value | | ---------------------------- | ----------- | | Variable Costs | \$18,421 | | Total Orders | 1,842 | | **Variable Costs Per Order** | **\$10.00** | Each order incurs \$10.00 in variable operational costs on average. *** ## How It Works Divides total Variable Costs by order count. This metric helps you understand the fixed-cost-like burden of per-order operational fees. Add this to COGS Per Order to see the total cost per transaction before margin. *** ## When to Use | Scenario | Action | | ------------------- | ------------------------------------------------- | | Unit economics | Calculate per-order profit after all costs | | Pricing floors | Ensure AOV covers COGS + Variable Costs per order | | Cost optimization | Identify which variable costs are highest | | Break-even analysis | Factor into minimum order value | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------- | -------------------------------------- | | [Variable Costs](/reference/metrics/orders/cogs/variable-costs) | Total costs (numerator) | | [Total Orders](/reference/metrics/orders/counts/orders) | Order count (denominator) | | [Variable Costs %](/reference/metrics/orders/cogs/variable-costs-percent) | As percentage of revenue | | [COGS Per Order](/reference/metrics/orders/cogs/cogs-per-order) | Product cost per order (add for total) | [See all COGS metrics →](/reference/metrics/orders/cogs) # Variable Costs %: Variable Costs as Percentage of Net Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/cogs/variable-costs-percent Track total variable costs as a percentage of net revenue. Monitor the margin impact of handling, gateway, shipping, and other variable fees. Variable costs as a percentage of net revenue—shows how much of your margin is consumed by operational costs. ## Formula **Variable Costs %** = ( [**Variable Costs**](/reference/metrics/orders/cogs/variable-costs) ÷ [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------- | ------------------------------------------- | | [**Variable Costs**](/reference/metrics/orders/cogs/variable-costs) | Handling + Gateway + Shipping + Other costs | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds | | Metadata | | | --------------- | -------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), Upstack Costs | | **Aggregation** | Ratio | *** ## Example Your store had **\$18,421** in variable costs against **\$125,000** net revenue: | Metric | Value | | -------------------- | --------- | | Variable Costs | \$18,421 | | Net Revenue | \$125,000 | | **Variable Costs %** | **14.7%** | This means 14.7% of net revenue goes to variable operational costs beyond product costs. *** ## How It Works Divides Variable Costs by Net Revenue and multiplies by 100. This percentage helps you understand the operational cost burden on each dollar of revenue. Combined with COGS rates, it gives you a complete picture of where your margin goes. *** ## When to Use | Scenario | Action | | ---------------------- | ---------------------------------------- | | Margin analysis | See operational cost impact on CM2 | | Cost benchmarking | Compare across periods or segments | | Pricing strategy | Factor into minimum pricing requirements | | Operational efficiency | Track if variable costs are creeping up | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------- | ------------------------------ | | [Variable Costs](/reference/metrics/orders/cogs/variable-costs) | Dollar value (numerator) | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue baseline (denominator) | | [Variable Costs Per Order](/reference/metrics/orders/cogs/variable-costs-per-order) | Per-transaction average | | [CM2](/reference/metrics/orders/contribution-margin/cm2) | Margin after variable costs | [See all COGS metrics →](/reference/metrics/orders/cogs) # Contribution Margin: Track CM1-CM4 Per Order Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin Track contribution margin metrics in Upstack. Includes CM1, CM2, CM3, CM4 per order with cost components and margin analysis. Contribution margin metrics track profitability at multiple levels—from gross margin (CM1) through operating profit (CM4). These build progressively as costs are deducted. **Data Source:** [Shopify](/sources/catalog/shopify)\ **Metrics:** 63 ## Contribution Margin Levels | Level | Name | Formula | | ----- | ------------------- | ------------------------------------------- | | CM1 | Gross Margin | Revenue - COGS | | CM2 | After Fulfillment | CM1 - Fulfillment Costs - Transaction Costs | | CM3 | Contribution Margin | CM2 - Marketing Cost - Agency Fees | | CM4 | Operating Profit | CM3 - Opex | ## Metrics in This Group The tables below highlight the most commonly used metrics in this group — browse the full list in the sidebar. ### CM Per Order | Metric | Description | When to Use | | ---------------------------------------------------------------------------- | --------------------------------- | ------------------------------- | | [CM1 Per Order](/reference/metrics/orders/contribution-margin/cm1-per-order) | Gross margin per order | Benchmark product profitability | | [CM2 Per Order](/reference/metrics/orders/contribution-margin/cm2-per-order) | Post-fulfillment margin per order | Include variable costs | | [CM3 Per Order](/reference/metrics/orders/contribution-margin/cm3-per-order) | Contribution margin per order | Include marketing costs | | [CM4 Per Order](/reference/metrics/orders/contribution-margin/cm4-per-order) | Operating profit per order | Full cost allocation | ### New Customer CM Per Order | Metric | Description | When to Use | | ------------------------------------------------------------------------------------------------------ | -------------------------- | ----------------------------------- | | [New Customer CM1 Per Order](/reference/metrics/orders/contribution-margin/new-customer-cm1-per-order) | NC gross margin per order | New customer profitability | | [New Customer CM2 Per Order](/reference/metrics/orders/contribution-margin/new-customer-cm2-per-order) | NC post-fulfillment margin | Include new customer variable costs | | [New Customer CM3 Per Order](/reference/metrics/orders/contribution-margin/new-customer-cm3-per-order) | NC contribution margin | Acquisition profitability | | [New Customer CM4 Per Order](/reference/metrics/orders/contribution-margin/new-customer-cm4-per-order) | NC operating profit | Full new customer economics | ### Cost Components | Metric | Description | When to Use | | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- | -------------------------------------- | | [Total Cost](/reference/metrics/orders/contribution-margin/total-cost) | All costs combined (COGS + fulfillment + transaction + marketing + fees + opex) | Measure complete cost structure | | [New Customer Total Cost](/reference/metrics/orders/contribution-margin/new-customer-total-cost) | All costs for first-time buyer orders | Measure acquisition cost structure | | [Marketing Cost](/reference/metrics/orders/contribution-margin/marketing-cost) | User-defined marketing costs | Track marketing spend allocation | | [Marketing Cost Per Order](/reference/metrics/orders/contribution-margin/marketing-cost-per-order) | Average marketing cost per order | Measure per-order marketing efficiency | | [Agency Fees](/reference/metrics/orders/contribution-margin/agency-fees) | User-defined agency fees | Track agency spend allocation | | [Opex](/reference/metrics/orders/contribution-margin/opex) | Operating expenses | Track overhead allocation | ## How These Metrics Relate Contribution margins build progressively: 1. **CM1** (Gross Margin) = Revenue - COGS 2. **CM2** (After Fulfillment) = CM1 - Fulfillment - Transaction Costs 3. **CM3** (Contribution Margin) = CM2 - Marketing - Agency Fees 4. **CM4** (Operating Profit) = CM3 - Opex Each level shows profitability after deducting the next set of costs. ## Choosing the Right Metric * **Product profitability**: Use CM1 to evaluate products before variable costs * **Order economics**: Use CM2 to see profit after all variable costs * **Marketing efficiency**: Use CM3 to measure contribution after marketing * **Business profitability**: Use CM4 for bottom-line order profitability * **Customer acquisition**: Compare New Customer CM metrics to justify CAC # Agency Fees: Marketing Agency Costs Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/agency-fees Track agency fees for your Shopify store. Understand total marketing agency costs deducted from contribution margin. Agency Fees tracks user-defined agency costs from order cost entries. These fees are deducted from CM3 to calculate CM4. ## Formula **Agency Fees** = **SUM** ( Order Cost Entries ) **WHERE** category = Agency Fees ### Formula Components | Metric | Definition | | -------------------------- | ------------------------------------------------------ | | **Order Cost Entries** | User-defined costs configured in Upstack Cost Settings | | **category = Agency Fees** | Filters to costs categorized as agency fees | | Metadata | | | --------------- | ----------------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store has **\$15,000** in agency fees configured across **500 orders**. | Metric | Value | Calculation | | --------------------- | -------- | -------------------------- | | Total Orders | 500 | All orders in period | | Agency Fees | \$15,000 | Sum of agency cost entries | | Agency Fees Per Order | \$30.00 | \$15,000 ÷ 500 | Agency fees represent the costs of external marketing agencies and consultants that manage your advertising. *** ## How It Works Agency Fees are pulled from cost entries you configure in Upstack Cost Settings. They can be set as flat fees per order, percentage of revenue, or fixed monthly amounts allocated across orders. These costs are deducted after CM3 to calculate CM4. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------- | | Full profitability analysis | Include agency fees in contribution margin | | Agency ROI evaluation | Compare agency costs to incremental revenue | | Cost structure planning | Understand agency impact on margins | | In-house vs agency comparison | Model cost differences | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ----------------------------------------- | | [NC Agency Fees](/reference/metrics/orders/contribution-margin/new-customer-agency-fees) | Agency fees for new customer orders | | [RC Agency Fees](/reference/metrics/orders/contribution-margin/returning-customer-agency-fees) | Agency fees for returning customer orders | | [Opex](/reference/metrics/orders/contribution-margin/opex) | Operating expenses, also deducted for CM4 | | [Marketing Cost](/reference/metrics/orders/contribution-margin/marketing-cost) | Other marketing costs | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # CM1 (Gross Margin): Profit After Product Costs Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/cm1 Track CM1 Gross Margin for your Shopify store. Calculate profit after COGS to understand true product profitability. CM1 (Gross Margin) measures your profit after deducting all product costs (COGS) from net revenue—the foundation for understanding true product profitability. ## Formula **CM1 (Gross Margin)** = [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) − [**COGS**](/reference/metrics/orders/cogs/cogs) − [**Other COGS**](/reference/metrics/orders/cogs/other-cogs) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------- | -------------------------------------------- | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Gross revenue minus discounts and refunds | | [**COGS**](/reference/metrics/orders/cogs/cogs) | Cost of goods sold from Shopify product data | | [**Other COGS**](/reference/metrics/orders/cogs/other-cogs) | Additional user-defined COGS entries | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store generated **\$125,000** in net revenue last month with **\$45,000** in COGS and **\$5,000** in other COGS entries. | Component | Amount | Calculation | | ----------- | ------------ | ------------------------------ | | Net Revenue | \$125,000 | Starting point | | COGS | \$45,000 | Product costs from Shopify | | Other COGS | \$5,000 | User-defined costs | | **CM1** | **\$75,000** | \$125,000 − \$45,000 − \$5,000 | *** ## How It Works CM1 represents your gross margin—what remains after paying for the products themselves. It's calculated using COGS pulled automatically from your Shopify product data, plus any additional COGS you've configured in Cost Settings. This is the first level of profitability and the foundation for calculating higher contribution margin levels. *** ## When to Use | Scenario | Action | | -------------------------------- | ----------------------------------------------------------------------- | | Evaluating product profitability | Compare CM1 across product lines to identify your most profitable items | | Setting pricing strategy | Ensure CM1 covers variable costs before expanding | | Comparing suppliers | Measure impact of different COGS on margin | | Benchmarking gross margin | Track CM1% to monitor product cost efficiency over time | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ------------------------------------------- | | [CM1 %](/reference/metrics/orders/contribution-margin/cm1-percent) | CM1 as a percentage of net revenue | | [CM2 (After Fulfillment)](/reference/metrics/orders/contribution-margin/cm2) | CM1 minus fulfillment and transaction costs | | [COGS](/reference/metrics/orders/cogs/cogs) | Product costs that reduce CM1 | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue base for CM1 calculation | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # CM1 per Order: Gross Margin per Order Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/cm1-per-order Track CM1 per order for your Shopify store. Measure the average gross margin per order before fulfillment costs. CM1 per Order measures the average gross margin (revenue minus COGS) per order—the product-level profitability before fulfillment and marketing. ## Formula **CM1 per Order** = [**CM1**](/reference/metrics/orders/contribution-margin/cm1) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ------------------------------------------------------------ | ------------------ | | [**CM1**](/reference/metrics/orders/contribution-margin/cm1) | Total gross margin | | [**Orders**](/reference/metrics/orders/counts/orders) | Count of orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Your Shopify store has **\$90,000** CM1 from **1,000** orders. | Component | Value | Calculation | | ----------------- | -------- | ---------------- | | CM1 | \$90,000 | Gross margin | | Orders | 1,000 | Order count | | **CM1 per Order** | **\$90** | \$90,000 ÷ 1,000 | *** ## How It Works CM1 per Order shows gross margin contribution per transaction. This is AOV adjusted for product costs—more actionable than revenue-based AOV for profitability analysis. *** ## When to Use | Scenario | Action | | ----------------------- | ---------------------------------------- | | Product mix | Promote higher-margin products | | Bundle strategy | Build bundles that improve CM1 per order | | Discount analysis | Track margin impact of promotions | | Cross-sell optimization | Add-ons should increase CM1 per order | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ------------------ | | [CM1](/reference/metrics/orders/contribution-margin/cm1) | Total gross margin | | [CM2 per Order](/reference/metrics/orders/contribution-margin/cm2-per-order) | After fulfillment | | [AOV](/reference/metrics/orders/aov/total-aov) | Revenue per order | | [CM1 %](/reference/metrics/orders/contribution-margin/cm1-percent) | Margin rate | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # CM1 %: Gross Margin Percentage Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/cm1-percent Track CM1 percentage for your Shopify store. Measure what percentage of net revenue remains after product costs. CM1 % measures the percentage of net revenue that remains after deducting all product costs—your gross margin rate. ## Formula **CM1 %** = ( [**CM1**](/reference/metrics/orders/contribution-margin/cm1) ÷ [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) ) × 100 ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------- | ----------------------------------------- | | [**CM1 (Gross Margin)**](/reference/metrics/orders/contribution-margin/cm1) | Profit after COGS and other COGS | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Gross revenue minus discounts and refunds | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$75,000** in CM1 from **\$125,000** net revenue. | Component | Value | Calculation | | ----------- | --------- | -------------------------- | | CM1 | \$75,000 | Gross margin dollars | | Net Revenue | \$125,000 | Revenue base | | **CM1 %** | **60%** | \$75,000 ÷ \$125,000 × 100 | *** ## How It Works CM1 % normalizes your gross margin as a percentage, making it easy to compare profitability across time periods, product lines, or channels regardless of revenue volume. A 60% CM1 means you keep 60 cents of every revenue dollar after paying for products. *** ## When to Use | Scenario | Action | | --------------------------- | ------------------------------------------------------- | | Benchmarking product margin | Compare CM1 % across categories to find efficiency gaps | | Tracking margin trends | Monitor CM1 % over time to catch cost increases early | | Evaluating pricing changes | Measure how price adjustments impact gross margin rate | | Comparing channels | Identify which sales channels deliver higher margins | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------- | --------------------------------------- | | [CM1 (Gross Margin)](/reference/metrics/orders/contribution-margin/cm1) | Dollar amount that CM1 % is based on | | [CM2 %](/reference/metrics/orders/contribution-margin/cm2-percent) | Margin after fulfillment costs | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue base for percentage calculation | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # CM2 (After Fulfillment): Profit After Variable Costs Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/cm2 Track CM2 for your Shopify store. Calculate profit after COGS, fulfillment, and transaction costs. CM2 (After Fulfillment) measures your profit after deducting all variable costs—COGS, fulfillment, and transaction costs—from net revenue. ## Formula **CM2** = [**CM1**](/reference/metrics/orders/contribution-margin/cm1) − [**Shipping Cost**](/reference/metrics/orders/fulfillment/shipping-cost) − [**Handling Cost**](/reference/metrics/orders/fulfillment/handling-cost) − **Other** [**Fulfillment**](/reference/metrics/orders/fulfillment/total-fulfillment-cost) − [**Gateway Cost**](/reference/metrics/orders/transaction/gateway-cost) − **Other Transaction** ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------ | -------------------------------------- | | [**CM1 (Gross Margin)**](/reference/metrics/orders/contribution-margin/cm1) | Net revenue minus COGS | | [**Shipping Cost**](/reference/metrics/orders/fulfillment/shipping-cost) | Cost to ship orders to customers | | [**Handling Cost**](/reference/metrics/orders/fulfillment/handling-cost) | Per-order handling and packaging costs | | [**Other Fulfillment Cost**](/reference/metrics/orders/fulfillment/other-fulfillment-cost) | Additional fulfillment expenses | | [**Gateway Cost**](/reference/metrics/orders/transaction/gateway-cost) | Payment processing fees | | **Other Transaction Cost** | Additional transaction-related costs | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store has **\$75,000** CM1, with **\$8,000** in fulfillment costs and **\$4,500** in transaction costs. | Component | Amount | Calculation | | ----------------- | ------------ | ------------------- | | CM1 | \$75,000 | Starting margin | | Shipping Cost | \$5,000 | Delivery costs | | Handling Cost | \$2,000 | Packaging labor | | Other Fulfillment | \$1,000 | Warehouse fees | | Gateway Cost | \$3,750 | 3% processing | | Other Transaction | \$750 | Currency conversion | | **CM2** | **\$62,500** | \$75,000 − \$12,500 | *** ## How It Works CM2 builds on CM1 by deducting all fulfillment costs (shipping, handling, other fulfillment) and transaction costs (payment gateway fees, other transaction costs). This gives you a clearer picture of profit after all variable per-order costs—before marketing spend. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------------------ | | Optimizing fulfillment costs | Compare CM2 across shipping methods to reduce variable costs | | Evaluating payment processors | Measure gateway cost impact on CM2 | | Setting break-even targets | Know your CM2 before planning marketing spend | | Analyzing order profitability | Understand true margin per order before acquisition costs | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------------------ | | [CM1 (Gross Margin)](/reference/metrics/orders/contribution-margin/cm1) | Input margin before fulfillment deductions | | [CM2 %](/reference/metrics/orders/contribution-margin/cm2-percent) | CM2 as a percentage of net revenue | | [CM3 (Contribution Margin)](/reference/metrics/orders/contribution-margin/contribution-margin) | CM2 minus marketing costs | | [Total Fulfillment Cost](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | Combined fulfillment costs | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # CM2 per Order: Variable Margin per Order Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/cm2-per-order Track CM2 per order for your Shopify store. Measure average variable margin contribution per order. CM2 per Order measures the average variable margin contribution per order—how much each order contributes after COGS, fulfillment, and transaction costs. ## Formula **CM2 per Order** = [**CM2**](/reference/metrics/orders/contribution-margin/cm2) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | --------------------- | | [**CM2 (After Fulfillment)**](/reference/metrics/orders/contribution-margin/cm2) | Total variable margin | | [**Orders**](/reference/metrics/orders/counts/orders) | Total order count | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Your Shopify store has **\$62,500** CM2 from **1,250** orders. | Component | Value | Calculation | | ----------------- | -------- | --------------------- | | CM2 | \$62,500 | Total variable margin | | Orders | 1,250 | Order count | | **CM2 per Order** | **\$50** | \$62,500 ÷ 1,250 | *** ## How It Works CM2 per Order shows the average contribution each order makes after variable costs. This is the margin available per order to cover marketing and fixed costs. Use it to set CPA targets—if CM2 per Order is \$50, your CPA should be below \$50 for profitability. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------------- | | Setting CPA targets | CM2 per Order is your maximum CPA for breakeven | | Comparing order economics | Track CM2 per Order across product categories | | Optimizing order value | Find ways to increase margin per transaction | | Channel evaluation | Compare CM2 per Order across acquisition channels | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | --------------------------------------- | | [CM2](/reference/metrics/orders/contribution-margin/cm2) | Total variable margin | | [CM1 per Order](/reference/metrics/orders/contribution-margin/cm1-per-order) | Gross margin per order | | [CPA](/reference/metrics/orders/performance/cac) | Cost per acquisition to compare against | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # CM2 %: Variable Margin Percentage Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/cm2-percent Track CM2 percentage for your Shopify store. Measure margin after COGS, fulfillment, and transaction costs. CM2 % measures the percentage of net revenue remaining after all variable costs—COGS, fulfillment, and transaction fees. ## Formula **CM2 %** = ( [**CM2**](/reference/metrics/orders/contribution-margin/cm2) ÷ [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ----------------------------------------------------- | | [**CM2 (After Fulfillment)**](/reference/metrics/orders/contribution-margin/cm2) | Profit after COGS, fulfillment, and transaction costs | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Gross revenue minus discounts and refunds | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$62,500** in CM2 from **\$125,000** net revenue. | Component | Value | Calculation | | ----------- | --------- | -------------------------- | | CM2 | \$62,500 | After variable costs | | Net Revenue | \$125,000 | Revenue base | | **CM2 %** | **50%** | \$62,500 ÷ \$125,000 × 100 | *** ## How It Works CM2 % shows what percentage of revenue remains after all variable per-order costs. This is your "contribution margin rate" before marketing—the profit available to cover customer acquisition costs and fixed expenses. *** ## When to Use | Scenario | Action | | --------------------------------- | -------------------------------------------------------------- | | Setting CAC targets | Use CM2 % to determine maximum allowable acquisition cost | | Comparing fulfillment options | Measure impact of different shipping carriers on margin | | Tracking variable cost efficiency | Monitor CM2 % trends to catch cost creep | | Evaluating pricing power | See how much margin remains for marketing after variable costs | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ------------------------------------ | | [CM2 (After Fulfillment)](/reference/metrics/orders/contribution-margin/cm2) | Dollar amount that CM2 % is based on | | [CM1 %](/reference/metrics/orders/contribution-margin/cm1-percent) | Margin before fulfillment costs | | [CM3 %](/reference/metrics/orders/contribution-margin/contribution-margin-percent) | Margin after marketing costs | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # CM3 per Order: Contribution Margin per Order Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/cm3-per-order Track CM3 per order for your Shopify store. Measure average contribution margin per order after marketing. CM3 per Order measures the average contribution margin per order—how much each order contributes to profit after all variable costs and marketing. ## Formula **CM3 per Order** = [**CM3**](/reference/metrics/orders/contribution-margin/contribution-margin) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ------------------------- | | [**CM3 (Contribution Margin)**](/reference/metrics/orders/contribution-margin/contribution-margin) | Total contribution margin | | [**Orders**](/reference/metrics/orders/counts/orders) | Total order count | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Your Shopify store has **\$42,500** CM3 from **1,250** orders. | Component | Value | Calculation | | ----------------- | -------- | ------------------------- | | CM3 | \$42,500 | Total contribution margin | | Orders | 1,250 | Order count | | **CM3 per Order** | **\$34** | \$42,500 ÷ 1,250 | *** ## How It Works CM3 per Order shows the profit contribution each order makes after marketing costs. This is what remains per order to cover agency fees, OPEX, and other fixed costs. A positive CM3 per Order means orders are contributing to profit. *** ## When to Use | Scenario | Action | | ----------------------------- | ----------------------------------------------------- | | Measuring order profitability | Ensure CM3 per Order is positive | | Comparing channels | Identify which channels deliver highest CM3 per Order | | Optimizing marketing spend | Track how spend changes affect CM3 per Order | | Break-even analysis | Know your minimum orders to cover fixed costs | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | -------------------------- | | [CM3](/reference/metrics/orders/contribution-margin/contribution-margin) | Total contribution margin | | [CM2 per Order](/reference/metrics/orders/contribution-margin/cm2-per-order) | Variable margin per order | | [CM4 per Order](/reference/metrics/orders/contribution-margin/cm4-per-order) | Operating profit per order | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # CM4 (Operating Profit): Profit After All Costs Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/cm4 Track CM4 Operating Profit for your Shopify store. Calculate true operating profit after all costs including OPEX. CM4 (Operating Profit) measures your true operating profit after deducting all costs—COGS, fulfillment, marketing, agency fees, and operating expenses. ## Formula **CM4** = [**CM3**](/reference/metrics/orders/contribution-margin/contribution-margin) − [**Agency Fees**](/reference/metrics/orders/contribution-margin/agency-fees) − [**OPEX**](/reference/metrics/orders/contribution-margin/opex) − **Other Costs** ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | --------------------------------------------- | | [**CM3 (Contribution Margin)**](/reference/metrics/orders/contribution-margin/contribution-margin) | Profit after marketing and ad spend | | **Agency Fees** | Fees paid to marketing agencies | | **OPEX** | Operating expenses (salaries, rent, software) | | **Other Costs** | Additional fixed or semi-fixed costs | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store has **\$42,500** CM3, with **\$5,000** in agency fees, **\$15,000** OPEX, and **\$2,500** other costs. | Component | Amount | Calculation | | ----------- | ------------ | ------------------- | | CM3 | \$42,500 | After marketing | | Agency Fees | \$5,000 | Marketing agency | | OPEX | \$15,000 | Operating expenses | | Other Costs | \$2,500 | Miscellaneous | | **CM4** | **\$20,000** | \$42,500 − \$22,500 | *** ## How It Works CM4 is your final contribution margin level—what remains after all variable and fixed costs. It represents true operating profit that can be reinvested in growth or distributed. Configure agency fees, OPEX, and other costs in Cost Settings. *** ## When to Use | Scenario | Action | | ---------------------------- | ---------------------------------------------------- | | Measuring true profitability | Use CM4 to see actual operating profit | | Planning reinvestment | Know available profit for growth initiatives | | Evaluating business health | Track CM4 trends to ensure sustainable profitability | | Setting profit targets | Use CM4 as the ultimate profitability goal | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ---------------------------------- | | [CM3 (Contribution Margin)](/reference/metrics/orders/contribution-margin/contribution-margin) | Input margin before agency/OPEX | | [CM4 %](/reference/metrics/orders/contribution-margin/cm4-percent) | CM4 as a percentage of net revenue | | [CM4 ROAS](/reference/metrics/orders/performance/cm4-roas) | Operating profit per ad dollar | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # CM4 per Order: Operating Profit per Order Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/cm4-per-order Track CM4 per order for your Shopify store. Measure average operating profit per order. CM4 per Order measures the average operating profit per order—your true profit contribution from each transaction after all costs. ## Formula **CM4 per Order** = [**CM4**](/reference/metrics/orders/contribution-margin/cm4) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------- | ---------------------- | | [**CM4 (Operating Profit)**](/reference/metrics/orders/contribution-margin/cm4) | Total operating profit | | [**Orders**](/reference/metrics/orders/counts/orders) | Total order count | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Your Shopify store has **\$20,000** CM4 from **1,250** orders. | Component | Value | Calculation | | ----------------- | -------- | ---------------------- | | CM4 | \$20,000 | Total operating profit | | Orders | 1,250 | Order count | | **CM4 per Order** | **\$16** | \$20,000 ÷ 1,250 | *** ## How It Works CM4 per Order shows your true profit per transaction after all costs—COGS, fulfillment, marketing, agency fees, and OPEX. This is the ultimate unit economics metric. A \$16 CM4 per Order means each order generates \$16 in operating profit. *** ## When to Use | Scenario | Action | | ------------------------ | ----------------------------------------------- | | Measuring unit economics | Know your true profit per order | | Growth planning | Multiply CM4 per Order by projected orders | | Comparing periods | Track how efficiency changes over time | | Investment decisions | Use CM4 per Order to evaluate scaling viability | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ----------------------------- | | [CM4](/reference/metrics/orders/contribution-margin/cm4) | Total operating profit | | [CM3 per Order](/reference/metrics/orders/contribution-margin/cm3-per-order) | Contribution margin per order | | [Orders](/reference/metrics/orders/counts/orders) | Order count | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # CM4 %: Operating Profit Margin Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/cm4-percent Track CM4 percentage for your Shopify store. Measure operating profit as a percentage of net revenue. CM4 % measures the percentage of net revenue that remains as operating profit after all costs—your true profit margin. ## Formula **CM4 %** = ( [**CM4**](/reference/metrics/orders/contribution-margin/cm4) ÷ [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------- | ----------------------------------------- | | [**CM4 (Operating Profit)**](/reference/metrics/orders/contribution-margin/cm4) | Profit after all costs including OPEX | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Gross revenue minus discounts and refunds | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$20,000** in CM4 from **\$125,000** net revenue. | Component | Value | Calculation | | ----------- | --------- | -------------------------- | | CM4 | \$20,000 | Operating profit | | Net Revenue | \$125,000 | Revenue base | | **CM4 %** | **16%** | \$20,000 ÷ \$125,000 × 100 | *** ## How It Works CM4 % is your operating profit margin—the percentage of every revenue dollar that becomes actual profit. A 16% CM4 means 16 cents of profit from every dollar of net revenue after paying for products, fulfillment, marketing, agency fees, and operating expenses. *** ## When to Use | Scenario | Action | | -------------------------- | ---------------------------------------------------- | | Benchmarking profitability | Compare CM4 % against industry standards | | Tracking efficiency | Monitor how operational changes impact profit margin | | Setting profit goals | Define target CM4 % for business planning | | Investor reporting | Use CM4 % to demonstrate operating efficiency | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ------------------------------------ | | [CM4 (Operating Profit)](/reference/metrics/orders/contribution-margin/cm4) | Dollar amount that CM4 % is based on | | [CM3 %](/reference/metrics/orders/contribution-margin/contribution-margin-percent) | Margin before agency/OPEX | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue base for percentage | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Contribution Margin %: Percent of Revenue as Profit Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/contribution-margin-percent Track what percentage of net revenue remains as contribution margin (CM3) after all variable costs. Calculate true marketing profitability. Percentage of net revenue remaining as contribution margin (CM3) after all variable costs. ## Formula **Contribution Margin %** = ( [**Contribution Margin**](/reference/metrics/orders/contribution-margin/contribution-margin) ÷ [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | | [**Contribution Margin**](/reference/metrics/orders/contribution-margin/contribution-margin) | Profit after COGS, fulfillment, transaction, marketing, and ad spend | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Your store generated **\$125,000 in net revenue** with a **22.4% contribution margin** in March: | Month | Net Revenue | Contribution Margin | CM % | | -------- | ----------- | ------------------- | ----- | | January | \$98,500 | \$19,700 | 20.0% | | February | \$112,300 | \$24,706 | 22.0% | | March | \$125,000 | \$28,000 | 22.4% | *** ## How It Works Contribution Margin % expresses Contribution Margin as a percentage of net revenue. It shows how much of each revenue dollar becomes profit after all variable costs—COGS, fulfillment, transaction fees, marketing costs, and ad spend. This percentage is your true marketing profitability rate. *** ## When to Use | Scenario | Action | | ----------------------------- | -------------------------------------------------- | | Benchmark profitability | Compare CM % across periods to track margin trends | | Evaluate marketing efficiency | Higher CM % means more profit per marketing dollar | | Set pricing strategy | Ensure prices support target contribution margins | | Compare channels | Identify which channels deliver the best margin | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ------------------------------------------- | | [Contribution Margin](/reference/metrics/orders/contribution-margin/contribution-margin) | The dollar amount (this metric's numerator) | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | The denominator for this calculation | | [Total Cost %](/reference/metrics/orders/contribution-margin/total-cost-percent) | Inverse view—what percentage goes to costs | | [Marketing Cost %](/reference/metrics/orders/contribution-margin/marketing-cost-percent) | Marketing spend as percentage of revenue | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Gross Profit: Revenue Minus COGS Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/gross-profit Track gross profit for your Shopify store. Understand revenue minus cost of goods sold for product-level profitability. Gross Profit measures revenue minus cost of goods sold. It shows product-level profitability before operating expenses. ## Formula **Gross Profit** = [**Revenue**](/reference/metrics/orders/revenue) − [**COGS**](/reference/metrics/orders/cogs/cogs) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------- | ----------------------------------- | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds | | [**COGS**](/reference/metrics/orders/cogs/cogs) | Cost of goods sold for products | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store generated **\$100,000** in net revenue with **\$40,000** in COGS. | Metric | Value | Calculation | | ------------ | --------- | ----------------------- | | Net Revenue | \$100,000 | After discounts/refunds | | COGS | \$40,000 | Product costs | | Gross Profit | \$60,000 | \$100,000 − \$40,000 | A gross profit of \$60,000 means you have \$60K remaining to cover fulfillment, marketing, and operating expenses. *** ## How It Works Gross Profit is the first step in calculating contribution margin. It subtracts only the direct cost of products from net revenue. This metric is useful for understanding product-level profitability before any operating costs are applied. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------ | | Product profitability analysis | Compare gross profit across product lines | | Pricing decisions | Ensure gross profit covers operating costs | | Supplier negotiations | Understand COGS impact on profitability | | Margin trend monitoring | Track gross profit over time | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------------- | ------------------------------------------- | | [NC Gross Profit](/reference/metrics/orders/contribution-margin/new-customer-gross-profit) | Gross profit from new customers | | [RC Gross Profit](/reference/metrics/orders/contribution-margin/returning-customer-gross-profit) | Gross profit from returning customers | | [Gross Profit % (of Gross)](/reference/metrics/orders/contribution-margin/gross-profit-gross-percent) | Gross profit as percentage of gross revenue | | [Contribution Margin](/reference/metrics/orders/contribution-margin/contribution-margin) | Gross profit minus variable costs | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Gross Profit % (of Gross): Gross Margin Rate Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/gross-profit-gross-percent Track gross profit as a percentage of gross revenue. Understand your gross margin rate before discounts and refunds. Gross Profit % (of Gross) measures gross profit as a percentage of gross revenue. It shows your gross margin rate before discounts and refunds. ## Formula **Gross Profit % (Gross)** = [**Gross Profit**](/reference/metrics/orders/contribution-margin/gross-profit) ÷ [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | ------------------------------------------ | | [**Gross Profit**](/reference/metrics/orders/contribution-margin/gross-profit) | Revenue minus cost of goods sold | | [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Total revenue before discounts and refunds | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$60,000** in gross profit from **\$100,000** in gross revenue. | Metric | Value | Calculation | | ------------- | --------- | ---------------------------- | | Gross Profit | \$60,000 | Revenue − COGS | | Gross Revenue | \$100,000 | Before discounts/refunds | | GP % (Gross) | 60% | (\$60,000 ÷ \$100,000) × 100 | A GP % of 60% means you keep 60 cents of every dollar of gross sales after product costs. *** ## How It Works This metric calculates gross margin using gross revenue as the denominator. It shows your product margin before any promotional discounts or refunds are applied, giving you insight into your baseline product profitability. *** ## When to Use | Scenario | Action | | ----------------------- | ---------------------------------------------- | | Product margin analysis | Understand base product profitability | | Pricing strategy | Ensure adequate gross margin before promotions | | Supplier negotiations | Track COGS impact on margins | | Trend monitoring | Compare margins across periods | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ----------------------------------- | | [Gross Profit](/reference/metrics/orders/contribution-margin/gross-profit) | The numerator in this calculation | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | The denominator in this calculation | | [Contribution Margin %](/reference/metrics/orders/contribution-margin/contribution-margin-percent) | Margin after all variable costs | | [COGS Gross Rate](/reference/metrics/orders/cogs/cogs-gross-rate) | COGS as percentage of gross revenue | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Marketing Cost: User-Defined Marketing Spend Allocated to Orders Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/marketing-cost Track user-defined marketing costs allocated to orders in Upstack. Separate from platform ad spend—includes influencer fees, sponsorships, and affiliate commissions. User-defined marketing costs allocated to orders, separate from platform ad spend. Configured in Cost Settings. ## Formula **Marketing Cost** = **SUM** ( Order Cost Entries ) **WHERE** category = marketing ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | ----------------------------------------------------- | | **Order Cost Entries** | User-defined cost entries configured in Cost Settings | | [**category = marketing**](/data-dictionary/measures-and-dimensions) | Filters to marketing cost entries | | Metadata | | | --------------- | ----------------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store allocated **\$12,500 in marketing costs** across orders in Q1: | Month | Marketing Cost | Orders | Cost Per Order | | -------- | -------------- | ------ | -------------- | | January | \$3,800 | 1,247 | \$3.05 | | February | \$4,200 | 1,389 | \$3.02 | | March | \$4,500 | 1,512 | \$2.98 | *** ## How It Works Marketing Cost aggregates user-defined cost entries tagged with the "Marketing" category. These are costs you configure in Cost Settings—influencer fees, affiliate commissions, sponsorships, or other marketing spend not captured by ad platform integrations. Marketing Cost is deducted from CM2 (alongside Agency Fees) to calculate CM3 Contribution Margin. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------ | | Track non-ad marketing spend | Capture influencer fees, affiliate commissions, sponsorships | | Calculate true CM3 | Include all marketing costs for accurate contribution margin | | Allocate overhead | Distribute fixed marketing costs across orders | | Compare cost sources | Separate user-defined costs from platform ad spend | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Marketing Cost Per Order](/reference/metrics/orders/contribution-margin/marketing-cost-per-order) | This metric ÷ Total Orders | | [CM2 Per Order](/reference/metrics/orders/contribution-margin/cm2-per-order) | Margin before marketing costs are deducted | | [CM3 Per Order](/reference/metrics/orders/contribution-margin/cm3-per-order) | Result after deducting marketing and agency fees | | [Agency Fees](/reference/metrics/orders/contribution-margin/agency-fees) | Another cost component deducted from CM2 | | [Total Cost](/reference/metrics/orders/contribution-margin/total-cost) | All costs combined including marketing | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Marketing Cost Per Order: Ad Spend Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/marketing-cost-per-order Measure marketing spend per order in your Shopify store. Track how much ad spend is allocated to each attributed conversion. Marketing Cost Per Order measures the average marketing spend allocated to each attributed order. ## Formula **Marketing Cost Per Order** = [**Total Marketing Cost**](/reference/metrics/orders/contribution-margin/marketing-cost) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------- | --------------------------------------- | | [**Total Marketing Cost**](/reference/metrics/orders/contribution-margin/marketing-cost) | Sum of all ad spend allocated to orders | | [**Orders**](/reference/metrics/orders/counts/orders) | Total number of attributed orders | | Metadata | | | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your Shopify store spent \$30,000 on marketing and generated 1,500 attributed orders. | Component | Value | | ---------------------------- | ----------- | | Total Marketing Cost | \$30,000 | | Orders | 1,500 | | **Marketing Cost Per Order** | **\$20.00** | *** ## How It Works Marketing Cost Per Order divides total marketing spend by attributed orders. This metric helps you understand how much ad spend is required to generate a single conversion. It factors into CM3 calculations and is essential for evaluating marketing efficiency. Marketing cost includes spend from all connected ad platforms (Meta, Google, TikTok, etc.) allocated via your attribution model. *** ## When to Use | Scenario | Action | | ------------------------------- | -------------------------------------------------------- | | Evaluating marketing efficiency | Lower Marketing Cost Per Order = more efficient | | Setting CPA targets | Use as baseline for cost-per-acquisition goals | | Comparing channels | Identify which channels deliver lower cost per order | | Protecting CM3 margins | Ensure Marketing Cost Per Order leaves acceptable margin | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------ | | [New Customer Marketing Cost Per Order](/reference/metrics/orders/contribution-margin/new-customer-marketing-cost) | Marketing cost for first-time buyers | | [Returning Customer Marketing Cost Per Order](/reference/metrics/orders/contribution-margin/returning-customer-marketing-cost) | Marketing cost for repeat buyers | | [Marketing Cost %](/reference/metrics/orders/contribution-margin/marketing-cost-percent) | Marketing as percentage of revenue | | [CM3 Per Order](/reference/metrics/orders/contribution-margin/cm3-per-order) | Margin after marketing | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Marketing Cost %: Marketing Spend as Share of Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/marketing-cost-percent Track marketing costs as a percentage of net revenue. Measure how much revenue goes to user-defined marketing spend for contribution margin analysis. Marketing cost as a percentage of net revenue, showing what portion of revenue is spent on marketing. ## Formula **Marketing Cost %** = ( [**Marketing Cost**](/reference/metrics/orders/contribution-margin/marketing-cost) ÷ [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------- | ---------------------------------------------------- | | [**Marketing Cost**](/reference/metrics/orders/contribution-margin/marketing-cost) | User-defined marketing costs from order cost entries | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Your store earned **\$250,000** in net revenue with **\$12,500** allocated to marketing costs: | Month | Net Revenue | Marketing Cost | Marketing Cost % | | -------- | ----------- | -------------- | ---------------- | | January | \$78,000 | \$3,800 | 4.9% | | February | \$82,000 | \$4,200 | 5.1% | | March | \$90,000 | \$4,500 | 5.0% | *** ## How It Works Marketing Cost % divides user-defined marketing costs by net revenue, showing what percentage of revenue goes to marketing expenses not captured by ad platform integrations. This includes influencer fees, affiliate commissions, sponsorships, and other marketing spend entered as order cost entries. *** ## When to Use | Scenario | Action | | ----------------- | -------------------------------------------------------- | | Budget planning | Set target marketing cost % thresholds for profitability | | Margin analysis | Monitor marketing's impact on contribution margin | | Cost benchmarking | Compare marketing spend across periods or segments | | CM3 optimization | Reduce marketing cost % to improve contribution margin | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ------------------------------------------------ | | [Marketing Cost](/reference/metrics/orders/contribution-margin/marketing-cost) | Numerator—total marketing spend | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Denominator—revenue after adjustments | | [CM2 Per Order](/reference/metrics/orders/contribution-margin/cm2-per-order) | Margin before marketing costs are deducted | | [CM3 Per Order](/reference/metrics/orders/contribution-margin/cm3-per-order) | Result after deducting marketing and agency fees | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer Agency Fees: Acquisition Agency Costs Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-agency-fees Track agency fees for new customer orders. Understand marketing agency costs for customer acquisition. New Customer Agency Fees tracks user-defined agency costs allocated to first-time buyer orders. ## Formula **NC Agency Fees** = **SUM** ( Order Cost Entries ) **WHERE** category = Agency Fees **AND** customer\_type = new\_customer ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | **Order Cost Entries** | User-defined costs configured in Upstack Cost Settings | | **category = Agency Fees** | Filters to costs categorized as agency fees | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to first-time buyer orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store has **\$10,000** in agency fees for **200 new customer orders**. | Metric | Value | Calculation | | ------------------------ | -------- | -------------------------- | | New Customer Orders | 200 | First-time buyers | | NC Agency Fees | \$10,000 | Sum of agency cost entries | | NC Agency Fees Per Order | \$50.00 | \$10,000 ÷ 200 | This represents the portion of agency costs attributable to customer acquisition. *** ## How It Works Agency fees are allocated to new customer orders based on your cost configuration. This helps you understand the true cost of acquisition including external agency management fees for prospecting campaigns. *** ## When to Use | Scenario | Action | | ----------------------------- | ---------------------------------------------- | | True CAC calculation | Include agency fees in acquisition cost | | Agency performance evaluation | Compare NC agency costs to acquisition results | | In-house vs agency comparison | Model acquisition cost differences | | Budget planning | Understand agency impact on NC margins | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ----------------------------------------- | | [Agency Fees](/reference/metrics/orders/contribution-margin/agency-fees) | Total agency fees for all orders | | [RC Agency Fees](/reference/metrics/orders/contribution-margin/returning-customer-agency-fees) | Agency fees for returning customer orders | | [NC Marketing Cost](/reference/metrics/orders/contribution-margin/new-customer-marketing-cost) | Other marketing costs for new customers | | [CAC](/reference/metrics/orders/performance/cac) | Customer acquisition cost | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer CM1: First-Order Gross Margin Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-cm1 Track New Customer CM1 for your Shopify store. Measure gross margin from first-time buyers. New Customer CM1 measures the gross margin from first-time buyers—net revenue minus COGS for new customer orders only. ## Formula **NC CM1** = [**NC Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) − **NC** [**Total COGS**](/reference/metrics/orders/cogs/total-cogs) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | ------------------------------------------ | | [**NC Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) | Net revenue from new customer orders | | **NC Total COGS** | Cost of goods sold for new customer orders | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to first-time buyers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store acquired new customers with **\$50,000** net revenue and **\$18,000** in COGS. | Component | Amount | Calculation | | -------------- | ------------ | ------------------------ | | NC Net Revenue | \$50,000 | First-time buyer revenue | | NC COGS | \$18,000 | Product costs | | **NC CM1** | **\$32,000** | \$50,000 − \$18,000 | *** ## How It Works NC CM1 isolates the gross margin generated specifically from new customer orders. This helps evaluate whether your customer acquisition is profitable at the product level—before considering fulfillment and marketing costs. *** ## When to Use | Scenario | Action | | ------------------------------------ | ---------------------------------------------- | | Evaluating acquisition profitability | Ensure NC CM1 covers acquisition costs | | Comparing customer segments | Measure NC vs RC gross margin | | Setting CAC targets | Use NC CM1 as the ceiling for acquisition cost | | Product mix analysis | See which products new customers buy | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ---------------------------------------- | | [NC CM1 %](/reference/metrics/orders/contribution-margin/new-customer-cm1-percent) | NC CM1 as a percentage of NC net revenue | | [RC CM1](/reference/metrics/orders/contribution-margin/returning-customer-cm1) | Gross margin from returning customers | | [CAC](/reference/metrics/orders/performance/cac) | Cost to acquire new customers | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer CM1 per Order: First-Order Gross Margin Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-cm1-per-order Track new customer CM1 per order for your Shopify store. Measure the average gross margin per first-time customer order. New Customer CM1 per Order measures the average gross margin from first-time customer orders—the product-level profitability of acquisition. ## Formula **New Customer CM1 per Order** = [**New Customer CM1**](/reference/metrics/orders/contribution-margin/new-customer-cm1) ÷ [**New Customer Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ------------------------------ | | [**New Customer CM1**](/reference/metrics/orders/contribution-margin/new-customer-cm1) | Gross margin from first orders | | [**New Customer Orders**](/reference/metrics/orders/counts/orders) | Count of first-time orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Your Shopify store has **\$30,000** New Customer CM1 from **500** first orders. | Component | Value | Calculation | | ------------------------------ | -------- | ------------------------ | | New Customer CM1 | \$30,000 | First-order gross margin | | New Customer Orders | 500 | First-time orders | | **New Customer CM1 per Order** | **\$60** | \$30,000 ÷ 500 | *** ## How It Works New Customer CM1 per Order shows the gross margin from each acquired customer's first order. Compare to CPA to understand first-order profitability at the gross margin level. *** ## When to Use | Scenario | Action | | -------------------- | ---------------------------------------------- | | CPA targeting | New Customer CM1 per Order sets margin ceiling | | Product strategy | Promote high-margin products to new customers | | Channel comparison | Compare first-order margins by source | | Acquisition analysis | Understand first-order economics | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ------------------------------ | | [New Customer CM1](/reference/metrics/orders/contribution-margin/new-customer-cm1) | Total first-order gross margin | | [CM1 per Order](/reference/metrics/orders/contribution-margin/cm1-per-order) | Overall gross margin per order | | [New Customer CM2 per Order](/reference/metrics/orders/contribution-margin/new-customer-cm2-per-order) | After fulfillment | | [New Customer CPA](/reference/metrics/orders/performance/cac) | Acquisition cost | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer CM1 %: First-Order Gross Margin Rate Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-cm1-percent Track New Customer CM1 percentage for your Shopify store. Measure gross margin rate from first-time buyers. NC CM1 % measures the gross margin percentage from new customer orders—the percentage of first-order revenue remaining after COGS. ## Formula **NC CM1 %** = ( [**NC CM1**](/reference/metrics/orders/contribution-margin/new-customer-cm1) ÷ [**NC Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ------------------------------------- | | [**NC CM1**](/reference/metrics/orders/contribution-margin/new-customer-cm1) | Gross margin from new customer orders | | [**NC Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) | Net revenue from new customers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example New customers generated **\$32,000** CM1 from **\$50,000** net revenue. | Component | Value | Calculation | | -------------- | -------- | ------------------------- | | NC CM1 | \$32,000 | Gross margin | | NC Net Revenue | \$50,000 | Revenue base | | **NC CM1 %** | **64%** | \$32,000 ÷ \$50,000 × 100 | *** ## How It Works NC CM1 % normalizes new customer gross margin as a percentage, making it easy to compare profitability rates across customer segments regardless of volume. Compare against RC CM1 % to see if new or returning customers generate higher margins. *** ## When to Use | Scenario | Action | | ------------------------------- | --------------------------------------------- | | Comparing customer segments | Check if NC CM1 % differs from RC CM1 % | | Tracking acquisition efficiency | Monitor margin rate trends for new customers | | Evaluating promotions | See how discounts impact new customer margins | | Setting pricing strategy | Ensure NC margins support acquisition costs | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ----------------------------------------- | | [NC CM1](/reference/metrics/orders/contribution-margin/new-customer-cm1) | Dollar amount that NC CM1 % is based on | | [RC CM1 %](/reference/metrics/orders/contribution-margin/returning-customer-cm1-percent) | Gross margin rate for returning customers | | [CM1 %](/reference/metrics/orders/contribution-margin/cm1-percent) | Overall gross margin rate | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer CM2: First-Order Variable Margin Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-cm2 Track New Customer CM2 for your Shopify store. Measure margin after fulfillment costs for first-time buyers. New Customer CM2 measures the variable margin from first-time buyers—CM1 minus fulfillment and transaction costs for new customer orders. ## Formula **NC CM2** = [**NC CM1**](/reference/metrics/orders/contribution-margin/new-customer-cm1) − **NC** [**Fulfillment Costs**](/reference/metrics/orders/fulfillment) − **NC** [**Transaction Costs**](/reference/metrics/orders/transaction) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | ----------------------------------------- | | [**NC CM1**](/reference/metrics/orders/contribution-margin/new-customer-cm1) | New customer gross margin | | [**NC Shipping Cost**](/reference/metrics/orders/fulfillment/new-customer-shipping-cost) | Shipping costs for new customer orders | | [**NC Handling Cost**](/reference/metrics/orders/fulfillment/new-customer-handling-cost) | Handling costs for new customer orders | | [**NC Gateway Cost**](/reference/metrics/orders/transaction/new-customer-gateway-cost) | Payment processing fees for new customers | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to first-time buyers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example New customers generated **\$32,000** CM1 with **\$4,000** fulfillment and **\$2,000** transaction costs. | Component | Amount | Calculation | | -------------- | ------------ | ------------------- | | NC CM1 | \$32,000 | After COGS | | NC Fulfillment | \$4,000 | Shipping + handling | | NC Transaction | \$2,000 | Gateway fees | | **NC CM2** | **\$26,000** | \$32,000 − \$6,000 | *** ## How It Works NC CM2 shows the contribution margin from new customers after all variable per-order costs. This is the margin available to cover acquisition costs and contribute to profit. If NC CM2 is lower than CAC, you're losing money on customer acquisition. *** ## When to Use | Scenario | Action | | ------------------------------ | --------------------------------------------------------- | | Setting CAC limits | NC CM2 should exceed CAC for profitable acquisition | | Comparing customer economics | Benchmark NC CM2 vs RC CM2 | | Evaluating fulfillment options | See how shipping choices impact new customer margin | | First-order profitability | Determine if first orders are profitable before marketing | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ---------------------------------------- | | [NC CM2 %](/reference/metrics/orders/contribution-margin/new-customer-cm2-percent) | NC CM2 as a percentage of NC net revenue | | [RC CM2](/reference/metrics/orders/contribution-margin/returning-customer-cm2) | Variable margin from returning customers | | [CAC](/reference/metrics/orders/performance/cac) | Cost to acquire new customers | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer CM2 per Order: First-Order Variable Margin Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-cm2-per-order Track New Customer CM2 per order for your Shopify store. Measure variable margin per first-time buyer order. NC CM2 per Order measures the average variable margin per new customer order—what each first-time buyer order contributes after variable costs. ## Formula **NC CM2 per Order** = [**NC CM2**](/reference/metrics/orders/contribution-margin/new-customer-cm2) ÷ [**New Customer Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | ---------------------------- | | [**NC CM2**](/reference/metrics/orders/contribution-margin/new-customer-cm2) | New customer variable margin | | [**New Customers**](/reference/metrics/orders/customers/new-customers) | Count of new customer orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example New customers generated **\$26,000** CM2 from **500** orders. | Component | Value | Calculation | | -------------------- | -------- | ----------------- | | NC CM2 | \$26,000 | Variable margin | | NC Orders | 500 | First-time orders | | **NC CM2 per Order** | **\$52** | \$26,000 ÷ 500 | *** ## How It Works NC CM2 per Order shows the variable margin contribution from each new customer order. This is your maximum CAC for breaking even on first orders. If NC CM2 per Order is \$52, your CAC must be below \$52 for first-order profitability. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------ | | Setting CAC targets | NC CM2 per Order is your max breakeven CAC | | Comparing segments | Benchmark against RC CM2 per Order | | Channel evaluation | Compare NC CM2 per Order across channels | | First-order profitability | Ensure CAC \< NC CM2 per Order | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ---------------------------------- | | [NC CM2](/reference/metrics/orders/contribution-margin/new-customer-cm2) | Total new customer variable margin | | [RC CM2 per Order](/reference/metrics/orders/contribution-margin/returning-customer-cm2-per-order) | Variable margin per repeat order | | [CAC](/reference/metrics/orders/performance/cac) | Cost to acquire new customers | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer CM2 %: First-Order Variable Margin Rate Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-cm2-percent Track New Customer CM2 percentage for your Shopify store. Measure variable margin rate from first-time buyers. NC CM2 % measures the percentage of new customer net revenue remaining after all variable costs—COGS, fulfillment, and transaction fees. ## Formula **NC CM2 %** = ( [**NC CM2**](/reference/metrics/orders/contribution-margin/new-customer-cm2) ÷ [**NC Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ------------------------------ | | [**NC CM2**](/reference/metrics/orders/contribution-margin/new-customer-cm2) | New customer variable margin | | [**NC Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) | Net revenue from new customers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example New customers generated **\$26,000** CM2 from **\$50,000** net revenue. | Component | Value | Calculation | | -------------- | -------- | ------------------------- | | NC CM2 | \$26,000 | After variable costs | | NC Net Revenue | \$50,000 | Revenue base | | **NC CM2 %** | **52%** | \$26,000 ÷ \$50,000 × 100 | *** ## How It Works NC CM2 % shows what percentage of new customer revenue remains after variable costs. This rate determines your maximum allowable CAC as a percentage of AOV. A 52% NC CM2 % means you can spend up to 52% of new customer AOV on acquisition while staying profitable. *** ## When to Use | Scenario | Action | | ------------------- | ----------------------------------------------------- | | Calculating max CAC | NC CM2 % × NC AOV = max profitable CAC | | Comparing segments | Benchmark NC CM2 % vs RC CM2 % | | Tracking efficiency | Monitor if new customer variable costs are increasing | | Channel evaluation | Compare NC CM2 % across acquisition channels | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | -------------------------------------------- | | [NC CM2](/reference/metrics/orders/contribution-margin/new-customer-cm2) | Dollar amount that NC CM2 % is based on | | [RC CM2 %](/reference/metrics/orders/contribution-margin/returning-customer-cm2-percent) | Variable margin rate for returning customers | | [CAC](/reference/metrics/orders/performance/cac) | Cost to acquire new customers | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer CM3 per Order: First-Order Contribution Margin Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-cm3-per-order Track New Customer CM3 per order for your Shopify store. Measure contribution margin per first-time buyer order. NC CM3 per Order measures the average contribution margin per new customer order—what each first-time buyer order contributes after marketing costs. ## Formula **NC CM3 per Order** = [**NC CM3**](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) ÷ [**New Customer Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | -------------------------------- | | [**NC CM3**](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) | New customer contribution margin | | [**New Customers**](/reference/metrics/orders/customers/new-customers) | Count of new customer orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example New customers generated **\$15,000** CM3 from **500** orders. | Component | Value | Calculation | | -------------------- | -------- | ------------------- | | NC CM3 | \$15,000 | Contribution margin | | NC Orders | 500 | First-time orders | | **NC CM3 per Order** | **\$30** | \$15,000 ÷ 500 | *** ## How It Works NC CM3 per Order shows the contribution margin from each new customer order after marketing costs. A positive NC CM3 per Order means new customer acquisition is profitable at the contribution margin level. *** ## When to Use | Scenario | Action | | ----------------------------------- | -------------------------------------------- | | Measuring acquisition profitability | Ensure NC CM3 per Order is positive | | Comparing segments | Benchmark against RC CM3 per Order | | Marketing efficiency | Track how campaigns affect NC CM3 per Order | | Growth planning | Use NC CM3 per Order for scaling projections | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | --------------------------------------- | | [NC CM3](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) | Total new customer contribution margin | | [RC CM3 per Order](/reference/metrics/orders/contribution-margin/returning-customer-cm3-per-order) | Contribution margin per repeat order | | [NC CM4 per Order](/reference/metrics/orders/contribution-margin/new-customer-cm4-per-order) | Operating profit per new customer order | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer CM4: First-Order Operating Profit Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-cm4 Track New Customer CM4 for your Shopify store. Measure operating profit from first-time buyers. New Customer CM4 measures the operating profit from first-time buyers—CM3 minus agency fees, OPEX, and other costs for new customer orders. ## Formula **NC CM4** = [**NC CM3**](/reference/metrics/orders/contribution-margin/new-customer-cm3-per-order) − [**NC Agency Fees**](/reference/metrics/orders/contribution-margin/new-customer-agency-fees) − [**NC OPEX**](/reference/metrics/orders/contribution-margin/new-customer-opex) − **NC Other Costs** ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | --------------------------------------------------- | | [**NC CM3**](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) | New customer contribution margin after marketing | | **NC Agency Fees** | Agency fees allocated to new customer orders | | **NC OPEX** | Operating expenses allocated to new customer orders | | **NC Other Costs** | Other costs allocated to new customer orders | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to first-time buyers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example New customers generated **\$15,000** CM3 with **\$2,000** agency fees, **\$5,000** OPEX, and **\$1,000** other costs. | Component | Amount | Calculation | | -------------- | ----------- | ------------------ | | NC CM3 | \$15,000 | After marketing | | NC Agency Fees | \$2,000 | Agency allocation | | NC OPEX | \$5,000 | Operating expenses | | NC Other Costs | \$1,000 | Miscellaneous | | **NC CM4** | **\$7,000** | \$15,000 − \$8,000 | *** ## How It Works NC CM4 shows the true operating profit from new customer acquisition after all costs. This is what remains from new customer orders after paying for products, fulfillment, marketing, agency fees, and operating expenses. *** ## When to Use | Scenario | Action | | ----------------------------------- | ------------------------------------------------ | | Measuring acquisition profitability | Ensure NC CM4 is positive for sustainable growth | | Comparing customer economics | Benchmark NC CM4 vs RC CM4 | | Budget planning | Use NC CM4 to validate acquisition investment | | Unit economics | Calculate true profit per new customer | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ----------------------------------------- | | [NC CM4 %](/reference/metrics/orders/contribution-margin/new-customer-cm4-percent) | NC CM4 as a percentage of NC net revenue | | [RC CM4](/reference/metrics/orders/contribution-margin/returning-customer-cm4) | Operating profit from returning customers | | [CM4](/reference/metrics/orders/contribution-margin/cm4) | Overall operating profit | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer CM4 per Order: First-Order Operating Profit Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-cm4-per-order Track New Customer CM4 per order for your Shopify store. Measure operating profit per first-time buyer order. NC CM4 per Order measures the average operating profit per new customer order—your true profit from each first-time buyer transaction. ## Formula **NC CM4 per Order** = [**NC CM4**](/reference/metrics/orders/contribution-margin/new-customer-cm4) ÷ [**New Customer Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | ----------------------------- | | [**NC CM4**](/reference/metrics/orders/contribution-margin/new-customer-cm4) | New customer operating profit | | [**New Customers**](/reference/metrics/orders/customers/new-customers) | Count of new customer orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example New customers generated **\$7,000** CM4 from **500** orders. | Component | Value | Calculation | | -------------------- | -------- | ----------------- | | NC CM4 | \$7,000 | Operating profit | | NC Orders | 500 | First-time orders | | **NC CM4 per Order** | **\$14** | \$7,000 ÷ 500 | *** ## How It Works NC CM4 per Order shows your true operating profit per new customer order after all costs. A \$14 NC CM4 per Order means each new customer acquisition generates \$14 in operating profit on their first order alone. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------------- | | Validating unit economics | Ensure NC CM4 per Order is positive | | Comparing segments | Benchmark against RC CM4 per Order | | Investment decisions | Use NC CM4 per Order to model acquisition ROI | | Growth planning | Project profit from customer acquisition at scale | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [NC CM4](/reference/metrics/orders/contribution-margin/new-customer-cm4) | Total new customer operating profit | | [RC CM4 per Order](/reference/metrics/orders/contribution-margin/returning-customer-cm4-per-order) | Operating profit per repeat order | | [LTV](/reference/metrics/orders/ltv/ltv) | Total lifetime value including repeat orders | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer CM4 %: First-Order Operating Margin Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-cm4-percent Track New Customer CM4 percentage for your Shopify store. Measure operating profit margin from first-time buyers. NC CM4 % measures the percentage of new customer net revenue that becomes operating profit after all costs. ## Formula **NC CM4 %** = ( [**NC CM4**](/reference/metrics/orders/contribution-margin/new-customer-cm4) ÷ [**NC Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ------------------------------ | | [**NC CM4**](/reference/metrics/orders/contribution-margin/new-customer-cm4) | New customer operating profit | | [**NC Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) | Net revenue from new customers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example New customers generated **\$7,000** CM4 from **\$50,000** net revenue. | Component | Value | Calculation | | -------------- | -------- | ------------------------ | | NC CM4 | \$7,000 | Operating profit | | NC Net Revenue | \$50,000 | Revenue base | | **NC CM4 %** | **14%** | \$7,000 ÷ \$50,000 × 100 | *** ## How It Works NC CM4 % shows the operating profit margin from new customer acquisition. A positive NC CM4 % means you're profitable on first orders. Compare against RC CM4 % to understand how profitability changes as customers become repeat buyers. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------- | | Validating acquisition model | Ensure NC CM4 % is positive | | Comparing segments | Benchmark NC CM4 % vs RC CM4 % | | Growth planning | Use NC CM4 % to model acquisition scaling | | Efficiency tracking | Monitor operating margin trends for new customers | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ---------------------------------------- | | [NC CM4](/reference/metrics/orders/contribution-margin/new-customer-cm4) | Dollar amount that NC CM4 % is based on | | [RC CM4 %](/reference/metrics/orders/contribution-margin/returning-customer-cm4-percent) | Operating margin for returning customers | | [CM4 %](/reference/metrics/orders/contribution-margin/cm4-percent) | Overall operating margin | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer Contribution Margin: First-Order Profitability Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-contribution-margin Track contribution margin from new customer orders in Upstack. Measures first-time buyer profitability after deducting all variable costs from net revenue. Total contribution margin from new customer orders only—net revenue minus all variable costs for first-time buyers. ## Formula **New Customer Contribution Margin** = [**New Customer Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) − [**New Customer Total Cost**](/reference/metrics/orders/contribution-margin/new-customer-total-cost) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | | [**New Customer Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) | Net revenue from first-time buyers after discounts and refunds | | [**New Customer Total Cost**](/reference/metrics/orders/contribution-margin/new-customer-total-cost) | Sum of all variable costs for new customer orders (COGS, fulfillment, transaction, marketing) | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from customers making their first purchase | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store generated **\$45,200 in new customer contribution margin** in Q1: | Month | NC Net Revenue | NC Total Cost | NC Contribution Margin | | -------- | -------------- | ------------- | ---------------------- | | January | \$52,400 | \$40,860 | \$11,540 | | February | \$61,200 | \$46,980 | \$14,220 | | March | \$68,500 | \$49,060 | \$19,440 | *** ## How It Works New Customer Contribution Margin isolates profitability from first-time buyer orders. It takes net revenue from new customers (after discounts and refunds) and subtracts all variable costs—COGS, fulfillment, transaction fees, and marketing. The result shows true profit generated from customer acquisition before fixed costs. *** ## When to Use | Scenario | Action | | ---------------------------------- | ------------------------------------------------------------------- | | Evaluate acquisition profitability | Compare NC contribution margin to ad spend for true acquisition ROI | | Set marketing budgets | Use NC contribution margin trends to determine sustainable spend | | Compare customer segments | Benchmark new vs. returning customer profitability | | Forecast unit economics | Project profitability based on expected new customer volume | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------- | | [New Customer Net Revenue](/reference/metrics/orders/revenue/new-customer-net-revenue) | Revenue component before cost deductions | | [New Customer Total Cost](/reference/metrics/orders/contribution-margin/new-customer-total-cost) | Cost component subtracted from revenue | | [Contribution Margin](/reference/metrics/orders/contribution-margin/contribution-margin) | All customers combined | | [Returning Customer Contribution Margin](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) | Repeat buyer comparison | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer Contribution Margin %: Acquisition Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-contribution-margin-percent Track what percentage of new customer revenue remains as contribution margin. Measure acquisition profitability and optimize customer acquisition costs. Percentage of new customer net revenue remaining as contribution margin, filtered by customer\_type = new\_customer. ## Formula **New Customer Contribution Margin %** = ( [**New Customer Contribution Margin**](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) ÷ [**New Customer Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | | [**New Customer Contribution Margin**](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) | Total profit from new customers after COGS, fulfillment, transaction, and marketing costs | | [**New Customer Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) | Net revenue from new customers after discounts and refunds | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from first-time buyers only | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Your store generated **\$45,200** in new customer contribution margin from **\$125,000** in net revenue, yielding a **36.2%** margin rate: | Customer Type | Net Revenue | Contribution Margin | Margin % | | ------------------- | ----------- | ------------------- | -------- | | New Customers | \$125,000 | \$45,200 | 36.2% | | Returning Customers | \$200,000 | \$142,000 | 71.0% | | All Customers | \$325,000 | \$187,200 | 57.6% | *** ## How It Works This metric divides new customer contribution margin by new customer net revenue to show what portion of acquisition revenue converts to profit. Lower percentages indicate higher relative costs (COGS, fulfillment, marketing) against first-order revenue—common for brands investing heavily in customer acquisition. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------------------ | | Evaluating acquisition efficiency | Compare margin % between new and returning customers | | Setting CAC targets | Ensure acquisition costs don't exceed acceptable margin thresholds | | Channel optimization | Identify which channels acquire customers with better margins | | Pricing analysis | Determine if new customer promotions erode profitability | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | [New Customer Contribution Margin](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) | The numerator (dollar amount before percentage) | | [New Customer Net Revenue](/reference/metrics/orders/revenue/new-customer-net-revenue) | The denominator (revenue base for the percentage) | | [Returning Customer Contribution Margin %](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin-percent) | Same calculation for repeat buyers | | [Contribution Margin %](/reference/metrics/orders/contribution-margin/contribution-margin-percent) | Blended margin across all customer types | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer Gross Profit: Acquisition Product Profitability Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-gross-profit Track gross profit from new customers. Understand revenue minus COGS for first-time buyer orders. New Customer Gross Profit measures revenue minus COGS from first-time buyer orders. It shows product-level profitability for acquisition. ## Formula **NC Gross Profit** = [**NC Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) − [**NC COGS**](/reference/metrics/orders/cogs/new-customer-cogs) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ------------------------------------------ | | [**NC Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) | Net revenue from new customer orders | | [**NC COGS**](/reference/metrics/orders/cogs/new-customer-cogs) | Cost of goods sold for new customer orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store generated **\$40,000** in new customer net revenue with **\$18,000** in COGS. | Metric | Value | Calculation | | --------------- | -------- | ----------------------- | | NC Net Revenue | \$40,000 | After discounts/refunds | | NC COGS | \$18,000 | Product costs | | NC Gross Profit | \$22,000 | \$40,000 − \$18,000 | A new customer gross profit of \$22,000 represents the product-level profit from acquisition before operating costs. *** ## How It Works NC Gross Profit isolates the gross margin contribution from new customer orders. This helps you understand if acquired customers are buying profitable products, which is essential for LTV:CAC calculations. *** ## When to Use | Scenario | Action | | ------------------------- | ---------------------------------------------- | | Acquisition profitability | Understand first-order gross margin | | Product mix analysis | See if new customers buy high-margin products | | CAC payback planning | Compare NC gross profit to CAC | | NC vs RC comparison | Compare acquisition vs retention gross margins | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | ------------------------------------- | | [Gross Profit](/reference/metrics/orders/contribution-margin/gross-profit) | Total gross profit for all orders | | [RC Gross Profit](/reference/metrics/orders/contribution-margin/returning-customer-gross-profit) | Gross profit from returning customers | | [NC Contribution Margin](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) | NC gross profit minus variable costs | | [NC COGS](/reference/metrics/orders/cogs/new-customer-cogs) | The cost component subtracted | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer Marketing Cost: Acquisition Marketing Spend Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-marketing-cost Track user-defined marketing costs for new customer orders in Upstack. Includes influencer fees, affiliate commissions, and non-ad marketing spend for first-time buyers. Marketing costs allocated to new customer orders only, filtered by customer\_type = new\_customer. ## Formula **New Customer Marketing Cost** = [**Marketing Cost**](/reference/metrics/orders/contribution-margin/marketing-cost) **WHERE** customer\_type = new\_customer ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [**Marketing Cost**](/reference/metrics/orders/contribution-margin/marketing-cost) | User-defined marketing costs from order cost entries | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from first-time buyers | | Metadata | | | --------------- | ----------------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store allocated **\$8,500 in marketing costs** to new customer orders in Q1: | Month | NC Marketing Cost | NC Orders | Cost Per NC Order | | -------- | ----------------- | --------- | ----------------- | | January | \$2,600 | 412 | \$6.31 | | February | \$2,800 | 458 | \$6.11 | | March | \$3,100 | 521 | \$5.95 | *** ## How It Works New Customer Marketing Cost filters [Marketing Cost](/reference/metrics/orders/contribution-margin/marketing-cost) to orders placed by first-time buyers only. This isolates acquisition-related marketing spend from retention spend, enabling accurate calculation of new customer contribution margin (NC CM3). Configure marketing cost entries in your Upstack cost settings to capture spend not tracked by ad platform integrations. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------------------ | | Calculate NC acquisition costs | Combine with NC Ad Spend for total customer acquisition cost | | Analyze NC contribution margin | Include in NC CM3 to see true first-order profitability | | Compare NC vs RC marketing | Benchmark acquisition vs retention marketing efficiency | | Budget acquisition spend | Track and optimize non-ad marketing for new customers | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | | [Marketing Cost](/reference/metrics/orders/contribution-margin/marketing-cost) | All-customer version (NC + RC combined) | | [Returning Customer Marketing Cost](/reference/metrics/orders/contribution-margin/returning-customer-marketing-cost) | Retention counterpart to this metric | | [New Customer Contribution Margin](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) | Deducts this cost to calculate NC CM3 | | [New Customer Total Cost](/reference/metrics/orders/contribution-margin/new-customer-total-cost) | Sum of all NC cost components | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer Opex: Acquisition Operating Expenses Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-opex Track operating expenses for new customer orders. Understand opex costs allocated to customer acquisition. New Customer Opex tracks user-defined operating expenses allocated to first-time buyer orders. ## Formula **NC Opex** = **SUM** ( Order Cost Entries ) **WHERE** category = Operating Expenses **AND** customer\_type = new\_customer ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | **Order Cost Entries** | User-defined costs configured in Upstack Cost Settings | | **category = Operating Expenses** | Filters to costs categorized as opex | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to first-time buyer orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store has **\$15,000** in operating expenses for **200 new customer orders**. | Metric | Value | Calculation | | ------------------- | -------- | ------------------------ | | New Customer Orders | 200 | First-time buyers | | NC Opex | \$15,000 | Sum of opex cost entries | | NC Opex Per Order | \$75.00 | \$15,000 ÷ 200 | This represents the portion of operating expenses attributable to acquired customers. *** ## How It Works Operating expenses are allocated to new customer orders based on your cost configuration. This helps you understand the true overhead burden of customer acquisition including rent, salaries, and other fixed costs. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------------- | | Complete acquisition cost | Include opex in new customer profitability | | Break-even analysis | Understand overhead per new customer | | Scaling decisions | Model how NC opex changes with acquisition volume | | NC vs RC opex comparison | Compare overhead allocation | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | --------------------------------------- | | [Opex](/reference/metrics/orders/contribution-margin/opex) | Total operating expenses for all orders | | [RC Opex](/reference/metrics/orders/contribution-margin/returning-customer-opex) | Opex for returning customer orders | | [NC Agency Fees](/reference/metrics/orders/contribution-margin/new-customer-agency-fees) | Agency costs for new customers | | [NC Total Cost](/reference/metrics/orders/contribution-margin/new-customer-total-cost) | All costs for new customer orders | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer Total Cost: Acquisition Cost Stack Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-total-cost Track total cost for new customer orders. Understand your complete acquisition cost structure including COGS and marketing. New Customer Total Cost measures the complete cost stack for first-time buyer orders, including all attributed costs for acquisition. ## Formula **NC Total Cost** = [**NC COGS**](/reference/metrics/orders/cogs/new-customer-cogs) + [**NC Fulfillment**](/reference/metrics/orders/fulfillment/new-customer-fulfillment-cost) + **NC** [**Marketing**](/reference/metrics/advertising/blended/blended-spend) + [**NC Agency Fees**](/reference/metrics/orders/contribution-margin/new-customer-agency-fees) + [**NC Opex**](/reference/metrics/orders/contribution-margin/new-customer-opex) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | ------------------------------------------- | | [**NC COGS**](/reference/metrics/orders/cogs/new-customer-cogs) | COGS for new customer orders | | [**NC Fulfillment**](/reference/metrics/orders/fulfillment/new-customer-fulfillment-cost) | Fulfillment costs for new customer orders | | **NC Marketing** | Marketing spend attributed to new customers | | [**NC Agency Fees**](/reference/metrics/orders/contribution-margin/new-customer-agency-fees) | Agency fees attributed to new customers | | [**NC Opex**](/reference/metrics/orders/contribution-margin/new-customer-opex) | Opex attributed to new customers | | Metadata | | | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store's new customer orders incurred: | Cost Component | Value | | ----------------- | ------------ | | NC COGS | \$18,000 | | NC Fulfillment | \$4,000 | | NC Marketing | \$20,000 | | NC Agency Fees | \$4,000 | | NC Opex | \$6,000 | | **NC Total Cost** | **\$52,000** | An NC total cost of \$52,000 represents your complete investment in acquiring new customers. *** ## How It Works NC Total Cost aggregates all costs attributed to new customer acquisition. This includes the costs of products they buy, shipping their orders, and the marketing investment needed to acquire them. *** ## When to Use | Scenario | Action | | ------------------------- | -------------------------------------- | | Acquisition profitability | Compare NC total cost to NC revenue | | CAC calculation | Understand true cost to acquire | | Budget planning | Allocate resources to acquisition | | NC vs RC comparison | Compare acquisition vs retention costs | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | ---------------------------------------- | | [Total Cost](/reference/metrics/orders/contribution-margin/total-cost) | Total cost for all orders | | [RC Total Cost](/reference/metrics/orders/contribution-margin/returning-customer-total-cost) | Total cost for returning customer orders | | [NC Revenue](/reference/metrics/orders/revenue/new-customer-net-revenue) | Revenue generated by new customers | | [NC CM3](/reference/metrics/orders/contribution-margin/new-customer-cm3-per-order) | NC profit after all variable costs | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer Total Cost %: Cost Structure Analysis Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-total-cost-percent Measure total costs for new customers as a percentage of net revenue. Understand acquisition cost structure and profitability before margin analysis. Total cost as a percentage of new customer net revenue, filtered to first-time buyers only. ## Formula **New Customer Total Cost %** = ( [**New Customer Total Cost**](/reference/metrics/orders/contribution-margin/new-customer-total-cost) ÷ [**New Customer Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | | [**New Customer Total Cost**](/reference/metrics/orders/contribution-margin/new-customer-total-cost) | Sum of all costs allocated to new customer orders (COGS, fulfillment, marketing, overhead) | | [**New Customer Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) | Revenue from new customers after discounts and refunds | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from customers making their first purchase | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Your store spent **62%** of new customer net revenue on total costs in Q1: | Cost Category | Amount | % of NC Revenue | | -------------- | ------------ | --------------- | | COGS | \$18,500 | 37% | | Variable Costs | \$6,250 | 12.5% | | Marketing | \$5,000 | 10% | | Other | \$1,250 | 2.5% | | **Total Cost** | **\$31,000** | **62%** | With \$50,000 in new customer net revenue, **38%** remains as contribution margin. *** ## How It Works New Customer Total Cost % sums all costs attributed to first-time buyer orders—including product costs (COGS), variable fulfillment costs, marketing spend, and overhead—then divides by net revenue. This shows how much of each new customer dollar is consumed by costs before profit. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------------------ | | Acquisition cost analysis | Identify cost drivers eating into new customer margins | | Budget planning | Determine sustainable CAC based on total cost burden | | Efficiency benchmarking | Compare total cost % against returning customers | | Profitability alerts | Flag when costs exceed acceptable thresholds | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | | [New Customer Contribution Margin %](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin-percent) | The inverse—profit remaining after costs (100% minus cost %) | | [New Customer Net Revenue](/reference/metrics/orders/revenue/new-customer-net-revenue) | The denominator for this calculation | | [Returning Customer Total Cost %](/reference/metrics/orders/contribution-margin/returning-customer-total-cost-percent) | Same metric for repeat buyers—compare to evaluate customer economics | | [Total Cost %](/reference/metrics/orders/contribution-margin/total-cost-percent) | All customers combined (this metric filters to new only) | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # New Customer Total Other Cost: First-Time Buyer Fixed Costs Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/new-customer-total-other-cost Track total fixed costs allocated to new customer orders. Sum of agency fees and operating expenses for first-time buyers in Shopify. New Customer Total Other Cost measures the combined agency fees and operating expenses allocated to first-time buyer orders. ## Formula **NC Total Other Cost** = [**NC Agency Fees**](/reference/metrics/orders/contribution-margin/new-customer-agency-fees) + [**NC Opex**](/reference/metrics/orders/contribution-margin/new-customer-opex) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------- | ---------------------------------------------- | | [**NC Agency Fees**](/reference/metrics/orders/contribution-margin/new-customer-agency-fees) | Agency costs for first-time buyer orders | | [**NC Opex**](/reference/metrics/orders/contribution-margin/new-customer-opex) | Operating expenses for first-time buyer orders | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to first-time buyer orders | | Metadata | | | --------------- | ----------------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store allocated \$11,000 in total other costs to 600 new customer orders. | Metric | Value | | ----------------------- | ------------ | | NC Agency Fees | \$5,000 | | NC Opex | \$6,000 | | **NC Total Other Cost** | **\$11,000** | *** ## How It Works New Customer Total Other Cost combines all fixed costs allocated to first-time buyer orders. This includes agency fees and operating expenses — the costs deducted from CM3 to calculate CM4. This metric shows the total overhead burden on acquisition orders. *** ## When to Use | Scenario | Action | | --------------------------------------- | -------------------------------------------- | | Understanding full acquisition overhead | NC Total Other Cost shows all fixed costs | | Calculating NC CM4 | Subtract from NC CM3 to get operating profit | | Comparing customer type overhead | NC vs RC total other cost allocation | | Optimizing fixed cost structure | Identify opportunities to reduce overhead | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------ | | [New Customer Agency Fees](/reference/metrics/orders/contribution-margin/new-customer-agency-fees) | Agency component of total other cost | | [New Customer Opex](/reference/metrics/orders/contribution-margin/new-customer-opex) | Opex component of total other cost | | [Returning Customer Total Other Cost](/reference/metrics/orders/contribution-margin/returning-customer-total-other-cost) | Fixed costs for repeat buyers | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Opex: Operating Expenses Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/opex Track operating expenses for your Shopify store. Understand total opex costs deducted from contribution margin. Opex tracks user-defined operating expenses from order cost entries. These costs are deducted from CM3 to calculate CM4. ## Formula **Opex** = **SUM** ( Order Cost Entries ) **WHERE** category = Operating Expenses ### Formula Components | Metric | Definition | | --------------------------------- | ------------------------------------------------------ | | **Order Cost Entries** | User-defined costs configured in Upstack Cost Settings | | **category = Operating Expenses** | Filters to costs categorized as opex | | Metadata | | | --------------- | ----------------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store has **\$25,000** in operating expenses allocated across **500 orders**. | Metric | Value | Calculation | | -------------- | -------- | ------------------------ | | Total Orders | 500 | All orders in period | | Opex | \$25,000 | Sum of opex cost entries | | Opex Per Order | \$50.00 | \$25,000 ÷ 500 | Operating expenses include overhead costs like rent, salaries, software subscriptions, and other fixed business costs. *** ## How It Works Opex is pulled from cost entries you configure in Upstack Cost Settings. Fixed monthly costs are allocated across orders in the period. These costs are deducted after CM3 to calculate CM4, giving you a complete view of business profitability. *** ## When to Use | Scenario | Action | | ------------------------------- | ----------------------------------------------- | | Complete profitability analysis | Include opex in contribution margin | | Break-even analysis | Understand minimum revenue needed to cover opex | | Scaling decisions | Model how opex changes with volume | | Cost allocation | Track opex impact per order | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ------------------------------------------------ | | [NC Opex](/reference/metrics/orders/contribution-margin/new-customer-opex) | Operating expenses for new customer orders | | [RC Opex](/reference/metrics/orders/contribution-margin/returning-customer-opex) | Operating expenses for returning customer orders | | [Agency Fees](/reference/metrics/orders/contribution-margin/agency-fees) | Agency costs, also deducted for CM4 | | [Total Cost](/reference/metrics/orders/contribution-margin/total-cost) | All costs combined | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer Agency Fees: Retention Agency Costs Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-agency-fees Track agency fees for returning customer orders. Understand marketing agency costs for customer retention. Returning Customer Agency Fees tracks user-defined agency costs allocated to repeat buyer orders. ## Formula **RC Agency Fees** = **SUM** ( Order Cost Entries ) **WHERE** category = Agency Fees **AND** customer\_type = returning\_customer ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | **Order Cost Entries** | User-defined costs configured in Upstack Cost Settings | | **category = Agency Fees** | Filters to costs categorized as agency fees | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to repeat buyer orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store has **\$5,000** in agency fees for **300 returning customer orders**. | Metric | Value | Calculation | | ------------------------- | ------- | -------------------------- | | Returning Customer Orders | 300 | Repeat buyers | | RC Agency Fees | \$5,000 | Sum of agency cost entries | | RC Agency Fees Per Order | \$16.67 | \$5,000 ÷ 300 | This represents the portion of agency costs attributable to customer retention efforts. *** ## How It Works Agency fees are allocated to returning customer orders based on your cost configuration. This helps you understand the cost of retention marketing managed by external agencies. *** ## When to Use | Scenario | Action | | ----------------------------- | -------------------------------------------------- | | Retention cost analysis | Include agency fees in retention costs | | Agency performance evaluation | Compare RC agency costs to retention results | | Budget allocation | Understand agency impact on RC margins | | NC vs RC agency comparison | Compare acquisition vs retention agency efficiency | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------- | --------------------------------------------- | | [Agency Fees](/reference/metrics/orders/contribution-margin/agency-fees) | Total agency fees for all orders | | [NC Agency Fees](/reference/metrics/orders/contribution-margin/new-customer-agency-fees) | Agency fees for new customer orders | | [RC Marketing Cost](/reference/metrics/orders/contribution-margin/returning-customer-marketing-cost) | Other marketing costs for returning customers | | [RC MER](/reference/metrics/orders/performance/returning-customer-total-mer) | Retention marketing efficiency | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer CM1: Repeat Order Gross Margin Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-cm1 Track Returning Customer CM1 for your Shopify store. Measure gross margin from repeat buyers. Returning Customer CM1 measures the gross margin from repeat buyers—net revenue minus COGS for returning customer orders only. ## Formula **RC CM1** = [**RC Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) − **RC** [**Total COGS**](/reference/metrics/orders/cogs/total-cogs) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [**RC Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Net revenue from returning customer orders | | **RC Total COGS** | Cost of goods sold for returning customer orders | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to repeat buyers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Returning customers generated **\$75,000** net revenue with **\$27,000** in COGS. | Component | Amount | Calculation | | -------------- | ------------ | -------------------- | | RC Net Revenue | \$75,000 | Repeat buyer revenue | | RC COGS | \$27,000 | Product costs | | **RC CM1** | **\$48,000** | \$75,000 − \$27,000 | *** ## How It Works RC CM1 isolates the gross margin from returning customers—orders placed by customers who have purchased before. This margin comes without additional acquisition cost, making it a key indicator of retention profitability. *** ## When to Use | Scenario | Action | | --------------------------- | ---------------------------------------------- | | Measuring retention value | Track RC CM1 as zero-acquisition profit | | Comparing customer segments | Benchmark RC CM1 against NC CM1 | | Evaluating loyalty programs | Measure margin impact of retention initiatives | | LTV planning | Use RC CM1 to project lifetime value | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ---------------------------------------- | | [RC CM1 %](/reference/metrics/orders/contribution-margin/returning-customer-cm1-percent) | RC CM1 as a percentage of RC net revenue | | [NC CM1](/reference/metrics/orders/contribution-margin/new-customer-cm1) | Gross margin from new customers | | [Returning Customers](/reference/metrics/orders/customers/returning-customers) | Count of repeat buyers | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer CM1 per Order: Repeat Order Gross Margin Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-cm1-per-order Track returning customer CM1 per order for your Shopify store. Measure the average gross margin per repeat customer order. Returning Customer CM1 per Order measures the average gross margin from repeat customer orders—the product-level profitability of retention. ## Formula **Returning Customer CM1 per Order** = [**Returning Customer CM1**](/reference/metrics/orders/contribution-margin/returning-customer-cm1) ÷ [**Returning Customer Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ------------------------------- | | [**Returning Customer CM1**](/reference/metrics/orders/contribution-margin/returning-customer-cm1) | Gross margin from repeat orders | | [**Returning Customer Orders**](/reference/metrics/orders/counts/orders) | Count of repeat orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Your Shopify store has **\$60,000** Returning Customer CM1 from **500** repeat orders. | Component | Value | Calculation | | ------------------------------------ | --------- | ------------------------- | | Returning Customer CM1 | \$60,000 | Repeat order gross margin | | Returning Customer Orders | 500 | Repeat orders | | **Returning Customer CM1 per Order** | **\$120** | \$60,000 ÷ 500 | *** ## How It Works Returning Customer CM1 per Order shows the gross margin from each repeat purchase. Since these customers are already acquired, this margin largely drops to profit (minus fulfillment and overhead). *** ## When to Use | Scenario | Action | | ---------------- | ------------------------------------- | | Retention value | Measure margin from repeat purchases | | Comparison | Compare to new customer CM1 per order | | Loyalty programs | Justify retention investment | | Product strategy | Optimize repeat purchase mix | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------ | ------------------------------ | | [Returning Customer CM1](/reference/metrics/orders/contribution-margin/returning-customer-cm1) | Total repeat gross margin | | [CM1 per Order](/reference/metrics/orders/contribution-margin/cm1-per-order) | Overall gross margin per order | | [Returning Customer CM2 per Order](/reference/metrics/orders/contribution-margin/returning-customer-cm2-per-order) | After fulfillment | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer CM1 %: Repeat Order Gross Margin Rate Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-cm1-percent Track Returning Customer CM1 percentage for your Shopify store. Measure gross margin rate from repeat buyers. RC CM1 % measures the gross margin percentage from returning customer orders—what percentage of repeat-order revenue remains after COGS. ## Formula **RC CM1 %** = ( [**RC CM1**](/reference/metrics/orders/contribution-margin/returning-customer-cm1) ÷ [**RC Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ------------------------------------------- | | [**RC CM1**](/reference/metrics/orders/contribution-margin/returning-customer-cm1) | Gross margin from returning customer orders | | [**RC Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Net revenue from returning customers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Returning customers generated **\$48,000** CM1 from **\$75,000** net revenue. | Component | Value | Calculation | | -------------- | -------- | ------------------------- | | RC CM1 | \$48,000 | Gross margin | | RC Net Revenue | \$75,000 | Revenue base | | **RC CM1 %** | **64%** | \$48,000 ÷ \$75,000 × 100 | *** ## How It Works RC CM1 % normalizes returning customer gross margin as a percentage. Compare against NC CM1 % to understand if returning customers buy higher-margin products or receive fewer discounts than new customers. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------- | | Analyzing customer behavior | See if repeat buyers purchase higher-margin items | | Evaluating loyalty discounts | Measure if RC discounts hurt margin rates | | Comparing segments | Benchmark RC CM1 % vs NC CM1 % | | Tracking retention quality | Monitor RC margin trends over time | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | --------------------------------------- | | [RC CM1](/reference/metrics/orders/contribution-margin/returning-customer-cm1) | Dollar amount that RC CM1 % is based on | | [NC CM1 %](/reference/metrics/orders/contribution-margin/new-customer-cm1-percent) | Gross margin rate for new customers | | [CM1 %](/reference/metrics/orders/contribution-margin/cm1-percent) | Overall gross margin rate | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer CM2: Repeat Order Variable Margin Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-cm2 Track Returning Customer CM2 for your Shopify store. Measure margin after fulfillment costs for repeat buyers. Returning Customer CM2 measures the variable margin from repeat buyers—CM1 minus fulfillment and transaction costs for returning customer orders. ## Formula **RC CM2** = [**RC CM1**](/reference/metrics/orders/contribution-margin/returning-customer-cm1) − **RC** [**Fulfillment Costs**](/reference/metrics/orders/fulfillment) − **RC** [**Transaction Costs**](/reference/metrics/orders/transaction) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [**RC CM1**](/reference/metrics/orders/contribution-margin/returning-customer-cm1) | Returning customer gross margin | | [**RC Shipping Cost**](/reference/metrics/orders/fulfillment/returning-customer-shipping-cost) | Shipping costs for returning customer orders | | [**RC Handling Cost**](/reference/metrics/orders/fulfillment/returning-customer-handling-cost) | Handling costs for returning customer orders | | [**RC Gateway Cost**](/reference/metrics/orders/transaction/returning-customer-gateway-cost) | Payment processing fees for returning customers | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to repeat buyers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Returning customers generated **\$48,000** CM1 with **\$6,000** fulfillment and **\$3,000** transaction costs. | Component | Amount | Calculation | | -------------- | ------------ | ------------------- | | RC CM1 | \$48,000 | After COGS | | RC Fulfillment | \$6,000 | Shipping + handling | | RC Transaction | \$3,000 | Gateway fees | | **RC CM2** | **\$39,000** | \$48,000 − \$9,000 | *** ## How It Works RC CM2 shows the contribution margin from returning customers after all variable per-order costs. Since these orders come without additional acquisition cost, RC CM2 flows directly to profit (minus any retention marketing and fixed costs). *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------ | | Measuring retention value | RC CM2 represents pure contribution from repeat orders | | Comparing customer economics | Benchmark RC CM2 vs NC CM2 | | LTV calculations | Use RC CM2 for lifetime value projections | | Retention investment | Determine budget for loyalty programs | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ---------------------------------------- | | [RC CM2 %](/reference/metrics/orders/contribution-margin/returning-customer-cm2-percent) | RC CM2 as a percentage of RC net revenue | | [NC CM2](/reference/metrics/orders/contribution-margin/new-customer-cm2) | Variable margin from new customers | | [LTV](/reference/metrics/orders/ltv/ltv) | Customer lifetime value | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer CM2 per Order: Repeat Order Variable Margin Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-cm2-per-order Track Returning Customer CM2 per order for your Shopify store. Measure variable margin per repeat buyer order. RC CM2 per Order measures the average variable margin per returning customer order—what each repeat buyer order contributes after variable costs. ## Formula **RC CM2 per Order** = [**RC CM2**](/reference/metrics/orders/contribution-margin/returning-customer-cm2) ÷ [**Returning Customer Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------- | ---------------------------------- | | [**RC CM2**](/reference/metrics/orders/contribution-margin/returning-customer-cm2) | Returning customer variable margin | | [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) | Count of returning customer orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Returning customers generated **\$39,000** CM2 from **750** orders. | Component | Value | Calculation | | -------------------- | -------- | --------------- | | RC CM2 | \$39,000 | Variable margin | | RC Orders | 750 | Repeat orders | | **RC CM2 per Order** | **\$52** | \$39,000 ÷ 750 | *** ## How It Works RC CM2 per Order shows the variable margin from each returning customer order. Since these orders don't carry acquisition cost, RC CM2 per Order flows directly toward profit. This is often higher than NC CM2 per Order due to lower discount usage. *** ## When to Use | Scenario | Action | | -------------------------- | --------------------------------------------------- | | Comparing segments | Benchmark against NC CM2 per Order | | LTV modeling | Use RC CM2 per Order for lifetime value projections | | Retention investment | Determine budget for loyalty programs | | Tracking retention quality | Monitor RC CM2 per Order trends | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | ---------------------------------------- | | [RC CM2](/reference/metrics/orders/contribution-margin/returning-customer-cm2) | Total returning customer variable margin | | [NC CM2 per Order](/reference/metrics/orders/contribution-margin/new-customer-cm2-per-order) | Variable margin per new customer order | | [LTV](/reference/metrics/orders/ltv/ltv) | Customer lifetime value | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer CM2 %: Repeat Order Variable Margin Rate Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-cm2-percent Track Returning Customer CM2 percentage for your Shopify store. Measure variable margin rate from repeat buyers. RC CM2 % measures the percentage of returning customer net revenue remaining after all variable costs—COGS, fulfillment, and transaction fees. ## Formula **RC CM2 %** = ( [**RC CM2**](/reference/metrics/orders/contribution-margin/returning-customer-cm2) ÷ [**RC Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ------------------------------------ | | [**RC CM2**](/reference/metrics/orders/contribution-margin/returning-customer-cm2) | Returning customer variable margin | | [**RC Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Net revenue from returning customers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Returning customers generated **\$39,000** CM2 from **\$75,000** net revenue. | Component | Value | Calculation | | -------------- | -------- | ------------------------- | | RC CM2 | \$39,000 | After variable costs | | RC Net Revenue | \$75,000 | Revenue base | | **RC CM2 %** | **52%** | \$39,000 ÷ \$75,000 × 100 | *** ## How It Works RC CM2 % shows what percentage of returning customer revenue remains after variable costs. This is pure contribution margin rate—no acquisition cost dilutes it. Compare against NC CM2 % to understand segment profitability differences. *** ## When to Use | Scenario | Action | | ----------------------------- | ---------------------------------------------- | | Comparing customer economics | Benchmark RC CM2 % vs NC CM2 % | | Retention investment planning | Use RC CM2 % to justify loyalty spend | | LTV modeling | Apply RC CM2 % to projected repeat purchases | | Efficiency tracking | Monitor variable cost trends for repeat buyers | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | --------------------------------------- | | [RC CM2](/reference/metrics/orders/contribution-margin/returning-customer-cm2) | Dollar amount that RC CM2 % is based on | | [NC CM2 %](/reference/metrics/orders/contribution-margin/new-customer-cm2-percent) | Variable margin rate for new customers | | [CM2 %](/reference/metrics/orders/contribution-margin/cm2-percent) | Overall variable margin rate | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer CM3 per Order: Repeat Order Contribution Margin Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-cm3-per-order Track Returning Customer CM3 per order for your Shopify store. Measure contribution margin per repeat buyer order. RC CM3 per Order measures the average contribution margin per returning customer order—what each repeat buyer order contributes after marketing costs. ## Formula **RC CM3 per Order** = [**RC CM3**](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) ÷ [**Returning Customer Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | -------------------------------------- | | [**RC CM3**](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) | Returning customer contribution margin | | [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) | Count of returning customer orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Returning customers generated **\$27,500** CM3 from **750** orders. | Component | Value | Calculation | | -------------------- | ----------- | ------------------- | | RC CM3 | \$27,500 | Contribution margin | | RC Orders | 750 | Repeat orders | | **RC CM3 per Order** | **\$36.67** | \$27,500 ÷ 750 | *** ## How It Works RC CM3 per Order shows the contribution margin from each returning customer order after marketing costs. This represents pure profit contribution per repeat order, making it a key metric for understanding retention economics. *** ## When to Use | Scenario | Action | | ---------------------- | -------------------------------------------------- | | Comparing segments | Benchmark against NC CM3 per Order | | LTV modeling | Project lifetime contribution margin | | Retention ROI | Measure loyalty program impact on RC CM3 per Order | | Profitability tracking | Monitor repeat order profitability over time | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [RC CM3](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) | Total returning customer contribution margin | | [NC CM3 per Order](/reference/metrics/orders/contribution-margin/new-customer-cm3-per-order) | Contribution margin per new customer order | | [RC CM4 per Order](/reference/metrics/orders/contribution-margin/returning-customer-cm4-per-order) | Operating profit per repeat order | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer CM4: Repeat Order Operating Profit Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-cm4 Track Returning Customer CM4 for your Shopify store. Measure operating profit from repeat buyers. Returning Customer CM4 measures the operating profit from repeat buyers—CM3 minus agency fees, OPEX, and other costs for returning customer orders. ## Formula **RC CM4** = [**RC CM3**](/reference/metrics/orders/contribution-margin/returning-customer-cm3-per-order) − [**RC Agency Fees**](/reference/metrics/orders/contribution-margin/returning-customer-agency-fees) − [**RC OPEX**](/reference/metrics/orders/contribution-margin/returning-customer-opex) − **RC Other Costs** ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | | [**RC CM3**](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) | Returning customer contribution margin after marketing | | **RC Agency Fees** | Agency fees allocated to returning customer orders | | **RC OPEX** | Operating expenses allocated to returning customer orders | | **RC Other Costs** | Other costs allocated to returning customer orders | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to repeat buyers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Returning customers generated **\$27,500** CM3 with **\$3,000** agency fees, **\$10,000** OPEX, and **\$1,500** other costs. | Component | Amount | Calculation | | -------------- | ------------ | ------------------- | | RC CM3 | \$27,500 | After marketing | | RC Agency Fees | \$3,000 | Agency allocation | | RC OPEX | \$10,000 | Operating expenses | | RC Other Costs | \$1,500 | Miscellaneous | | **RC CM4** | **\$13,000** | \$27,500 − \$14,500 | *** ## How It Works RC CM4 shows the true operating profit from returning customers after all costs. Since repeat orders don't require acquisition cost, RC CM4 typically represents the most profitable segment of your business. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------- | | Measuring retention profitability | Track RC CM4 as the core profit engine | | Comparing segments | Benchmark RC CM4 vs NC CM4 | | LTV modeling | Use RC CM4 for lifetime value projections | | Retention investment | Validate loyalty program ROI against RC CM4 | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ---------------------------------------- | | [RC CM4 %](/reference/metrics/orders/contribution-margin/returning-customer-cm4-percent) | RC CM4 as a percentage of RC net revenue | | [NC CM4](/reference/metrics/orders/contribution-margin/new-customer-cm4) | Operating profit from new customers | | [LTV](/reference/metrics/orders/ltv/ltv) | Customer lifetime value | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer CM4 per Order: Repeat Order Operating Profit Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-cm4-per-order Track Returning Customer CM4 per order for your Shopify store. Measure operating profit per repeat buyer order. RC CM4 per Order measures the average operating profit per returning customer order—your true profit from each repeat buyer transaction. ## Formula **RC CM4 per Order** = [**RC CM4**](/reference/metrics/orders/contribution-margin/returning-customer-cm4) ÷ [**Returning Customer Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------- | ----------------------------------- | | [**RC CM4**](/reference/metrics/orders/contribution-margin/returning-customer-cm4) | Returning customer operating profit | | [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) | Count of returning customer orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Returning customers generated **\$13,000** CM4 from **750** orders. | Component | Value | Calculation | | -------------------- | ----------- | ---------------- | | RC CM4 | \$13,000 | Operating profit | | RC Orders | 750 | Repeat orders | | **RC CM4 per Order** | **\$17.33** | \$13,000 ÷ 750 | *** ## How It Works RC CM4 per Order shows your true operating profit per returning customer order after all costs. This is typically higher than NC CM4 per Order since repeat orders don't carry acquisition cost. Multiply by expected repeat orders to project lifetime value. *** ## When to Use | Scenario | Action | | ---------------------- | ----------------------------------------------------- | | LTV calculations | RC CM4 per Order × expected orders = LTV contribution | | Comparing segments | Benchmark against NC CM4 per Order | | Retention investment | Set loyalty program budget against RC CM4 per Order | | Profitability analysis | Track true profit per repeat transaction | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | ----------------------------------------- | | [RC CM4](/reference/metrics/orders/contribution-margin/returning-customer-cm4) | Total returning customer operating profit | | [NC CM4 per Order](/reference/metrics/orders/contribution-margin/new-customer-cm4-per-order) | Operating profit per new customer order | | [LTV](/reference/metrics/orders/ltv/ltv) | Total customer lifetime value | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer CM4 %: Repeat Order Operating Margin Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-cm4-percent Track Returning Customer CM4 percentage for your Shopify store. Measure operating profit margin from repeat buyers. RC CM4 % measures the percentage of returning customer net revenue that becomes operating profit after all costs. ## Formula **RC CM4 %** = ( [**RC CM4**](/reference/metrics/orders/contribution-margin/returning-customer-cm4) ÷ [**RC Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ------------------------------------ | | [**RC CM4**](/reference/metrics/orders/contribution-margin/returning-customer-cm4) | Returning customer operating profit | | [**RC Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Net revenue from returning customers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Returning customers generated **\$13,000** CM4 from **\$75,000** net revenue. | Component | Value | Calculation | | -------------- | --------- | ------------------------- | | RC CM4 | \$13,000 | Operating profit | | RC Net Revenue | \$75,000 | Revenue base | | **RC CM4 %** | **17.3%** | \$13,000 ÷ \$75,000 × 100 | *** ## How It Works RC CM4 % shows the operating profit margin from returning customers. This is typically higher than NC CM4 % since repeat orders don't carry acquisition costs. The difference between RC CM4 % and NC CM4 % reveals how much retention improves profitability. *** ## When to Use | Scenario | Action | | ----------------------------- | -------------------------------------------- | | Benchmarking retention value | Compare RC CM4 % to NC CM4 % | | Tracking retention efficiency | Monitor RC CM4 % trends over time | | Validating retention spend | Ensure loyalty programs don't erode RC CM4 % | | Profitability modeling | Use RC CM4 % for LTV calculations | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | --------------------------------------- | | [RC CM4](/reference/metrics/orders/contribution-margin/returning-customer-cm4) | Dollar amount that RC CM4 % is based on | | [NC CM4 %](/reference/metrics/orders/contribution-margin/new-customer-cm4-percent) | Operating margin for new customers | | [CM4 %](/reference/metrics/orders/contribution-margin/cm4-percent) | Overall operating margin | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer Contribution Margin: Repeat Buyer Profitability Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin Track contribution margin from returning customer orders in Upstack. Measures repeat buyer profitability after deducting all variable costs from net revenue. Total contribution margin from returning customer orders only—net revenue minus all variable costs for repeat buyers. ## Formula **Returning Customer Contribution Margin** = [**Returning Customer Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) − **Returning Customer Total Cost** ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | | [**Returning Customer Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Net revenue from repeat buyers after discounts and refunds | | **Returning Customer Total Cost** | Sum of all variable costs for returning customer orders (COGS, fulfillment, transaction, marketing) | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from customers who have purchased before | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store generated **\$62,800 in returning customer contribution margin** in Q1: | Month | RC Net Revenue | RC Total Cost | RC Contribution Margin | | -------- | -------------- | ------------- | ---------------------- | | January | \$78,200 | \$52,340 | \$25,860 | | February | \$84,500 | \$57,260 | \$27,240 | | March | \$91,300 | \$81,600 | \$9,700 | *** ## How It Works Returning Customer Contribution Margin isolates profitability from repeat buyer orders. It takes net revenue from returning customers (after discounts and refunds) and subtracts all variable costs—COGS, fulfillment, transaction fees, and marketing. The result shows true profit generated by repeat customers before fixed costs. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------------------ | | Evaluate retention profitability | Compare RC contribution margin to retention spend for true retention ROI | | Set retention budgets | Use RC contribution margin trends to determine sustainable loyalty spend | | Compare customer segments | Benchmark returning vs. new customer profitability | | Forecast unit economics | Project profitability based on expected returning customer volume | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | | [Returning Customer Net Revenue](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Revenue component before cost deductions | | [Contribution Margin](/reference/metrics/orders/contribution-margin/contribution-margin) | All customers combined | | [New Customer Contribution Margin](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) | First-time buyer comparison | | [Returning Customer Contribution Margin %](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin-percent) | Same metric as a percentage of RC Net Revenue | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer Contribution Margin %: Repeat Buyer Profitability Rate Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin-percent Track the percentage of returning customer net revenue remaining as contribution margin. Measure repeat buyer profitability rate. Percentage of returning customer net revenue remaining as contribution margin. ## Formula **Returning Customer Contribution Margin %** = ( [**Returning Customer Contribution Margin**](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) ÷ [**Returning Customer Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | | [**Returning Customer Contribution Margin**](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) | Profit from returning customers after COGS, fulfillment, transaction, and marketing costs | | [**Returning Customer Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Revenue from returning customers after discounts and refunds | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from customers who have purchased before | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Your returning customers generated **\$89,640** in net revenue with **\$31,374** in contribution margin, yielding a **35%** margin rate: | Metric | Value | | ---------------------------- | -------- | | RC Net Revenue | \$89,640 | | RC Contribution Margin | \$31,374 | | **RC Contribution Margin %** | **35%** | *** ## How It Works Returning Customer Contribution Margin % measures what share of repeat buyer revenue becomes profit after all variable costs. A higher percentage indicates returning customers are more profitable per dollar of revenue, helping you evaluate retention economics. *** ## When to Use | Scenario | Action | | --------------------------- | -------------------------------------------------------------------- | | Compare customer segments | Benchmark RC margin % vs NC margin % to see retention profitability | | Evaluate retention programs | Track if loyalty discounts erode repeat buyer margins | | Assess marketing efficiency | Higher margin % means more profit per marketing dollar on retention | | Set pricing strategy | Low margins may indicate need for price adjustments on repeat orders | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------- | | [Returning Customer Contribution Margin](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) | The dollar amount numerator of this percentage | | [Returning Customer Net Revenue](/reference/metrics/orders/revenue/returning-customer-net-revenue) | The denominator; total RC revenue after adjustments | | [New Customer Contribution Margin %](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin-percent) | Compare acquisition vs retention profitability | | [Contribution Margin %](/reference/metrics/orders/contribution-margin/contribution-margin-percent) | Blended margin across all customers | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer Gross Profit: Retention Product Profitability Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-gross-profit Track gross profit from returning customers. Understand revenue minus COGS for repeat buyer orders. Returning Customer Gross Profit measures revenue minus COGS from repeat buyer orders. It shows product-level profitability for retention. ## Formula **RC Gross Profit** = [**RC Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) − [**RC COGS**](/reference/metrics/orders/cogs/returning-customer-cogs) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ------------------------------------------------ | | [**RC Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Net revenue from returning customer orders | | [**RC COGS**](/reference/metrics/orders/cogs/returning-customer-cogs) | Cost of goods sold for returning customer orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store generated **\$60,000** in returning customer net revenue with **\$22,000** in COGS. | Metric | Value | Calculation | | --------------- | -------- | ----------------------- | | RC Net Revenue | \$60,000 | After discounts/refunds | | RC COGS | \$22,000 | Product costs | | RC Gross Profit | \$38,000 | \$60,000 − \$22,000 | A returning customer gross profit of \$38,000 represents the product-level profit from retention before operating costs. *** ## How It Works RC Gross Profit isolates the gross margin contribution from repeat customer orders. Returning customers often buy different product mixes than new customers, so tracking separately reveals valuable insights. *** ## When to Use | Scenario | Action | | ----------------------- | ----------------------------------------------------- | | Retention profitability | Understand repeat order gross margin | | Product mix analysis | See if returning customers buy high-margin products | | LTV contribution | Track gross profit contribution from repeat purchases | | NC vs RC comparison | Compare acquisition vs retention gross margins | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | ------------------------------------ | | [Gross Profit](/reference/metrics/orders/contribution-margin/gross-profit) | Total gross profit for all orders | | [NC Gross Profit](/reference/metrics/orders/contribution-margin/new-customer-gross-profit) | Gross profit from new customers | | [RC Contribution Margin](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) | RC gross profit minus variable costs | | [RC COGS](/reference/metrics/orders/cogs/returning-customer-cogs) | The cost component subtracted | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer Marketing Cost: Retention Marketing Spend Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-marketing-cost Track marketing costs allocated to returning customer orders in Upstack. Filtered by customer_type to isolate retention marketing spend for contribution margin analysis. Marketing costs allocated to returning customer orders, filtered by customer\_type = returning\_customer. ## Formula **Returning Customer Marketing Cost** = [**Marketing Cost**](/reference/metrics/orders/contribution-margin/marketing-cost) **WHERE** [customer\_type = returning\_customer](/data-dictionary/measures-and-dimensions#visitor-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | [**Marketing Cost**](/reference/metrics/orders/contribution-margin/marketing-cost) | User-defined marketing costs from order cost entries | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from customers who have purchased before | | Metadata | | | --------------- | ----------------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store allocated **\$7,800 in marketing costs to returning customers** in Q1: | Month | RC Marketing Cost | RC Orders | Cost Per Order | | -------- | ----------------- | --------- | -------------- | | January | \$2,400 | 892 | \$2.69 | | February | \$2,600 | 978 | \$2.66 | | March | \$2,800 | 1,064 | \$2.63 | *** ## How It Works Returning Customer Marketing Cost filters [Marketing Cost](/reference/metrics/orders/contribution-margin/marketing-cost) to include only orders where [customer\_type = returning\_customer](/data-dictionary/measures-and-dimensions#visitor-dimensions). This isolates retention marketing spend from acquisition spend, enabling accurate calculation of returning customer contribution margin. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------------------- | | Track retention marketing spend | Capture loyalty program costs, email marketing, or referral rewards | | Calculate RC contribution margin | Include all returning customer marketing costs for accurate profitability | | Compare NC vs RC marketing | Separate acquisition vs retention marketing investment | | Budget retention spend | Track and optimize marketing costs for repeat customers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------- | | [Marketing Cost](/reference/metrics/orders/contribution-margin/marketing-cost) | Unfiltered version across all customers | | [New Customer Marketing Cost](/reference/metrics/orders/contribution-margin/new-customer-marketing-cost) | Acquisition counterpart filtered by new customers | | [Returning Customer Contribution Margin](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) | Deducts this cost to calculate RC CM3 | | [Total Cost](/reference/metrics/orders/contribution-margin/total-cost) | All costs combined | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer Opex: Retention Operating Expenses Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-opex Track operating expenses for returning customer orders. Understand opex costs allocated to customer retention. Returning Customer Opex tracks user-defined operating expenses allocated to repeat buyer orders. ## Formula **RC Opex** = **SUM** ( Order Cost Entries ) **WHERE** category = Operating Expenses **AND** customer\_type = returning\_customer ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | **Order Cost Entries** | User-defined costs configured in Upstack Cost Settings | | **category = Operating Expenses** | Filters to costs categorized as opex | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to repeat buyer orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store has **\$10,000** in operating expenses for **300 returning customer orders**. | Metric | Value | Calculation | | ------------------------- | -------- | ------------------------ | | Returning Customer Orders | 300 | Repeat buyers | | RC Opex | \$10,000 | Sum of opex cost entries | | RC Opex Per Order | \$33.33 | \$10,000 ÷ 300 | This represents the portion of operating expenses attributable to repeat customers. *** ## How It Works Operating expenses are allocated to returning customer orders based on your cost configuration. This helps you understand the true overhead burden of customer retention including fixed business costs. *** ## When to Use | Scenario | Action | | -------------------------------- | ----------------------------------------------- | | Complete retention profitability | Include opex in RC profitability | | Break-even analysis | Understand overhead per returning customer | | Scaling decisions | Model how RC opex changes with retention volume | | NC vs RC opex comparison | Compare overhead allocation patterns | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | | [Opex](/reference/metrics/orders/contribution-margin/opex) | Total operating expenses for all orders | | [NC Opex](/reference/metrics/orders/contribution-margin/new-customer-opex) | Opex for new customer orders | | [RC Agency Fees](/reference/metrics/orders/contribution-margin/returning-customer-agency-fees) | Agency costs for returning customers | | [Returning Customer Total Cost %](/reference/metrics/orders/contribution-margin/returning-customer-total-cost-percent) | All costs as percentage for RC orders | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer Total Cost: Retention Cost Stack Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-total-cost Track total cost for returning customer orders. Understand your complete retention cost structure. Returning Customer Total Cost measures the complete cost stack for repeat buyer orders, including all attributed costs for retention. ## Formula **RC Total Cost** = [**RC COGS**](/reference/metrics/orders/cogs/returning-customer-cogs) + [**RC Fulfillment**](/reference/metrics/orders/fulfillment/returning-customer-fulfillment-cost) + **RC** [**Marketing**](/reference/metrics/advertising/blended/blended-spend) + [**RC Agency Fees**](/reference/metrics/orders/contribution-margin/returning-customer-agency-fees) + [**RC Opex**](/reference/metrics/orders/contribution-margin/returning-customer-opex) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | [**RC COGS**](/reference/metrics/orders/cogs/returning-customer-cogs) | COGS for returning customer orders | | [**RC Fulfillment**](/reference/metrics/orders/fulfillment/returning-customer-fulfillment-cost) | Fulfillment costs for returning customer orders | | **RC Marketing** | Marketing spend attributed to returning customers | | [**RC Agency Fees**](/reference/metrics/orders/contribution-margin/returning-customer-agency-fees) | Agency fees attributed to returning customers | | [**RC Opex**](/reference/metrics/orders/contribution-margin/returning-customer-opex) | Opex attributed to returning customers | | Metadata | | | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store's returning customer orders incurred: | Cost Component | Value | | ----------------- | ------------ | | RC COGS | \$22,000 | | RC Fulfillment | \$4,000 | | RC Marketing | \$5,000 | | RC Agency Fees | \$1,000 | | RC Opex | \$6,000 | | **RC Total Cost** | **\$38,000** | An RC total cost of \$38,000 represents your complete investment in serving returning customers. *** ## How It Works RC Total Cost aggregates all costs attributed to returning customer orders. Typically, returning customers have lower marketing costs since they don't require acquisition spend, making their orders more profitable. *** ## When to Use | Scenario | Action | | ----------------------- | ------------------------------------------- | | Retention profitability | Compare RC total cost to RC revenue | | LTV contribution | Understand cost efficiency of repeat orders | | Budget planning | Allocate resources to retention | | NC vs RC comparison | Compare acquisition vs retention costs | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ---------------------------------------- | | [Total Cost](/reference/metrics/orders/contribution-margin/total-cost) | Total cost for all orders | | [NC Total Cost](/reference/metrics/orders/contribution-margin/new-customer-total-cost) | Total cost for new customer orders | | [RC Revenue](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Revenue generated by returning customers | | [RC CM3](/reference/metrics/orders/contribution-margin/returning-customer-cm3-per-order) | RC profit after all variable costs | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer Total Cost %: Cost Structure Analysis Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-total-cost-percent Measure total costs for returning customers as a percentage of net revenue. Understand repeat buyer cost structure and compare against new customer economics. The total costs for returning customer orders expressed as a percentage of their net revenue. ## Formula **Returning Customer Total Cost %** = ( **Returning Customer** [**Total Cost**](/reference/metrics/orders/contribution-margin/total-cost) ÷ [**Returning Customer Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | | **Returning Customer Total Cost** | Sum of all costs allocated to returning customer orders (COGS, fulfillment, transaction, marketing) | | [**Returning Customer Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Revenue from returning customers after discounts and refunds | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from customers who have purchased before | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Your store spent **48%** of returning customer net revenue on total costs in Q1: | Cost Category | Amount | % of RC Revenue | | -------------- | ------------ | --------------- | | COGS | \$37,500 | 30% | | Variable Costs | \$11,250 | 9% | | Marketing | \$7,500 | 6% | | Other | \$3,750 | 3% | | **Total Cost** | **\$60,000** | **48%** | With \$125,000 in returning customer net revenue, **52%** remains as operating profit margin. *** ## How It Works Returning Customer Total Cost % sums all costs attributed to repeat buyer orders—including product costs (COGS), variable fulfillment costs, marketing spend, and transaction fees—then divides by net revenue. This shows how much of each returning customer dollar is consumed by costs before profit. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------------------------ | | Retention profitability analysis | Verify repeat buyers have lower cost % than new customers | | Loyalty program ROI | Check if retention discounts inflate total cost % | | Efficiency benchmarking | Compare RC cost % against NC cost % to validate retention strategy | | Margin optimization | Identify cost drivers specific to repeat orders | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------ | | [Returning Customer Contribution Margin](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) | Operating profit margin (100% minus cost %) | | [Returning Customer Net Revenue](/reference/metrics/orders/revenue/returning-customer-net-revenue) | The denominator for this calculation | | [New Customer Total Cost %](/reference/metrics/orders/contribution-margin/new-customer-total-cost-percent) | Same metric for first-time buyers—compare to evaluate customer economics | | [Total Cost %](/reference/metrics/orders/contribution-margin/total-cost-percent) | Blended cost % across all customers | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Returning Customer Total Other Cost: Repeat Buyer Fixed Costs Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/returning-customer-total-other-cost Track total fixed costs allocated to returning customer orders. Sum of agency fees and operating expenses for repeat buyers in Shopify. Returning Customer Total Other Cost measures the combined agency fees and operating expenses allocated to repeat buyer orders. ## Formula **RC Total Other Cost** = [**RC Agency Fees**](/reference/metrics/orders/contribution-margin/returning-customer-agency-fees) + [**RC Opex**](/reference/metrics/orders/contribution-margin/returning-customer-opex) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | ------------------------------------------ | | [**RC Agency Fees**](/reference/metrics/orders/contribution-margin/returning-customer-agency-fees) | Agency costs for repeat buyer orders | | [**RC Opex**](/reference/metrics/orders/contribution-margin/returning-customer-opex) | Operating expenses for repeat buyer orders | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to repeat buyer orders | | Metadata | | | --------------- | ----------------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store allocated \$12,000 in total other costs to 900 returning customer orders. | Metric | Value | | ----------------------- | ------------ | | RC Agency Fees | \$3,000 | | RC Opex | \$9,000 | | **RC Total Other Cost** | **\$12,000** | *** ## How It Works Returning Customer Total Other Cost combines all fixed costs allocated to repeat buyer orders. This includes agency fees and operating expenses — the costs deducted from CM3 to calculate CM4. Typically, RC Total Other Cost per order is lower than NC because retention requires less agency involvement. *** ## When to Use | Scenario | Action | | -------------------------------- | ------------------------------------------------ | | Understanding retention overhead | RC Total Other Cost shows all fixed costs | | Calculating RC CM4 | Subtract from RC CM3 to get operating profit | | Comparing customer type overhead | NC vs RC total other cost allocation | | Validating retention efficiency | Lower RC overhead per order indicates efficiency | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | ------------------------------------ | | [Returning Customer Agency Fees](/reference/metrics/orders/contribution-margin/returning-customer-agency-fees) | Agency component of total other cost | | [Returning Customer Opex](/reference/metrics/orders/contribution-margin/returning-customer-opex) | Opex component of total other cost | | [New Customer Total Other Cost](/reference/metrics/orders/contribution-margin/new-customer-total-other-cost) | Fixed costs for first-time buyers | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Subscription CM1: Subscription Gross Margin Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/subscription-cm1 Track subscription CM1 for your Shopify store. Measure gross margin from subscription orders. Subscription CM1 measures the gross margin (revenue minus COGS) from subscription orders—the product-level profitability of recurring revenue. ## Formula **Subscription CM1** = [**Subscription Revenue**](/reference/metrics/orders/revenue/subscription-revenue) − **Subscription** [**COGS**](/reference/metrics/orders/cogs/cogs) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------- | ------------------------------------- | | [**Subscription Revenue**](/reference/metrics/orders/revenue/subscription-revenue) | Revenue from subscription orders | | **Subscription COGS** | Product costs for subscription orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store has **\$18,000** subscription revenue with **\$7,200** COGS. | Component | Value | Calculation | | -------------------- | ------------ | ----------------------- | | Subscription Revenue | \$18,000 | Recurring order revenue | | Subscription COGS | \$7,200 | Product costs | | **Subscription CM1** | **\$10,800** | \$18,000 − \$7,200 | *** ## How It Works Subscription CM1 shows the gross margin from subscription orders before fulfillment and marketing costs. Subscriptions often have predictable COGS, making margin analysis straightforward. *** ## When to Use | Scenario | Action | | -------------------------- | ---------------------------------------------- | | Subscription profitability | Measure product-level margin | | Pricing decisions | Ensure subscription pricing covers COGS | | Product mix | Optimize subscription product selection | | Discount impact | Track how subscription discounts affect margin | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | -------------------- | | [CM1](/reference/metrics/orders/contribution-margin/cm1) | Overall gross margin | | [Subscription CM2](/reference/metrics/orders/contribution-margin/subscription-cm2) | After fulfillment | | [Subscription Revenue](/reference/metrics/orders/revenue/subscription-revenue) | Numerator component | | [Subscription CM1 %](/reference/metrics/orders/contribution-margin/subscription-cm1-percent) | Margin rate | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Subscription CM1 %: Subscription Gross Margin Rate Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/subscription-cm1-percent Track subscription CM1 percentage for your Shopify store. Measure gross margin rate on subscription orders. Subscription CM1 % measures the gross margin rate on subscription orders—what percentage of subscription revenue remains after product costs. ## Formula **Subscription CM1 %** = [**Subscription CM1**](/reference/metrics/orders/contribution-margin/subscription-cm1) ÷ [**Subscription Revenue**](/reference/metrics/orders/revenue/subscription-revenue) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ------------------------------------- | | [**Subscription CM1**](/reference/metrics/orders/contribution-margin/subscription-cm1) | Gross margin from subscription orders | | [**Subscription Revenue**](/reference/metrics/orders/revenue/subscription-revenue) | Revenue from subscription orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$10,800** subscription CM1 on **\$18,000** subscription revenue. | Component | Value | Calculation | | ---------------------- | -------- | ------------------- | | Subscription CM1 | \$10,800 | Gross margin | | Subscription Revenue | \$18,000 | Revenue | | **Subscription CM1 %** | **60%** | \$10,800 ÷ \$18,000 | *** ## How It Works Subscription CM1 % shows product-level margin efficiency for subscriptions. Compare to overall CM1 % to understand if subscription orders are more or less profitable at the gross margin level. *** ## When to Use | Scenario | Action | | ---------------------- | ------------------------------------------ | | Margin comparison | Compare subscription vs one-time margins | | Pricing analysis | Evaluate subscription discount impact | | Product selection | Optimize products offered in subscriptions | | Profitability tracking | Monitor subscription program health | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | ------------------------- | | [CM1 %](/reference/metrics/orders/contribution-margin/cm1-percent) | Overall gross margin rate | | [Subscription CM1](/reference/metrics/orders/contribution-margin/subscription-cm1) | Absolute margin | | [Subscription CM2 %](/reference/metrics/orders/contribution-margin/subscription-cm2-percent) | After fulfillment | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Subscription CM2: Subscription Variable Margin Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/subscription-cm2 Track subscription CM2 for your Shopify store. Measure variable margin from subscription orders after fulfillment costs. Subscription CM2 measures the variable margin from subscription orders after COGS and fulfillment—what's available to cover marketing and overhead. ## Formula **Subscription CM2** = [**Subscription CM1**](/reference/metrics/orders/contribution-margin/subscription-cm1) − **Subscription** [**Fulfillment Costs**](/reference/metrics/orders/fulfillment) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | --------------------------------------- | | [**Subscription CM1**](/reference/metrics/orders/contribution-margin/subscription-cm1) | Gross margin from subscription orders | | **Subscription Fulfillment Costs** | Shipping and handling for subscriptions | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store has **\$10,800** subscription CM1 with **\$2,700** fulfillment costs. | Component | Value | Calculation | | -------------------- | ----------- | --------------------- | | Subscription CM1 | \$10,800 | Gross margin | | Fulfillment Costs | \$2,700 | Shipping and handling | | **Subscription CM2** | **\$8,100** | \$10,800 − \$2,700 | *** ## How It Works Subscription CM2 accounts for fulfillment costs on subscription orders. Subscriptions often have predictable shipping (same products, regular intervals), making CM2 more stable than one-time orders. *** ## When to Use | Scenario | Action | | ------------------------ | ------------------------------------------- | | Subscription economics | Measure true variable margin | | Fulfillment optimization | Track shipping efficiency for subscriptions | | Marketing budget | CM2 is available for marketing spend | | Profitability analysis | Compare to one-time order CM2 | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | ----------------------- | | [CM2](/reference/metrics/orders/contribution-margin/cm2) | Overall variable margin | | [Subscription CM1](/reference/metrics/orders/contribution-margin/subscription-cm1) | Before fulfillment | | [Subscription CM2 %](/reference/metrics/orders/contribution-margin/subscription-cm2-percent) | Margin rate | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Subscription CM2 %: Subscription Variable Margin Rate Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/subscription-cm2-percent Track subscription CM2 percentage for your Shopify store. Measure variable margin rate on subscription orders. Subscription CM2 % measures the variable margin rate on subscription orders—what percentage of subscription revenue remains after COGS and fulfillment. ## Formula **Subscription CM2 %** = [**Subscription CM2**](/reference/metrics/orders/contribution-margin/subscription-cm2) ÷ [**Subscription Revenue**](/reference/metrics/orders/revenue/subscription-revenue) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ---------------------------------------- | | [**Subscription CM2**](/reference/metrics/orders/contribution-margin/subscription-cm2) | Variable margin from subscription orders | | [**Subscription Revenue**](/reference/metrics/orders/revenue/subscription-revenue) | Revenue from subscription orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$8,100** subscription CM2 on **\$18,000** subscription revenue. | Component | Value | Calculation | | ---------------------- | -------- | ------------------ | | Subscription CM2 | \$8,100 | Variable margin | | Subscription Revenue | \$18,000 | Revenue | | **Subscription CM2 %** | **45%** | \$8,100 ÷ \$18,000 | *** ## How It Works Subscription CM2 % shows the variable margin rate after product and fulfillment costs. This is the most practical margin rate for subscription program analysis. *** ## When to Use | Scenario | Action | | ------------------------ | -------------------------------------------- | | Margin comparison | Compare subscription vs one-time CM2 % | | Pricing decisions | Ensure subscription pricing sustains margins | | Fulfillment optimization | Track impact of shipping changes | | Marketing allocation | CM2 % indicates marketing headroom | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | ---------------------------- | | [CM2 %](/reference/metrics/orders/contribution-margin/cm2-percent) | Overall variable margin rate | | [Subscription CM2](/reference/metrics/orders/contribution-margin/subscription-cm2) | Absolute margin | | [Subscription CM1 %](/reference/metrics/orders/contribution-margin/subscription-cm1-percent) | Before fulfillment | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Total Cost: Complete Order Cost Stack Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/total-cost Track total cost per order including COGS, fulfillment, marketing, and overhead. Understand your complete cost structure. Total Cost measures the complete cost stack for your orders, including COGS, fulfillment, marketing costs, agency fees, and operating expenses. ## Formula **Total Cost** = [**COGS**](/reference/metrics/orders/cogs/cogs) + [**Fulfillment**](/reference/metrics/orders/fulfillment/total-fulfillment-cost) + [**Marketing**](/reference/metrics/advertising/blended/blended-spend) + [**Agency Fees**](/reference/metrics/orders/contribution-margin/agency-fees) + [**Opex**](/reference/metrics/orders/contribution-margin/opex) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------- | ------------------------------- | | [**COGS**](/reference/metrics/orders/cogs/cogs) | Cost of goods sold for products | | [**Fulfillment**](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | Shipping and handling costs | | [**Marketing**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | [**Agency Fees**](/reference/metrics/orders/contribution-margin/agency-fees) | Marketing agency costs | | [**Opex**](/reference/metrics/orders/contribution-margin/opex) | Operating expenses | | Metadata | | | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store incurred the following costs: | Cost Component | Value | | -------------- | ------------ | | COGS | \$40,000 | | Fulfillment | \$8,000 | | Marketing | \$25,000 | | Agency Fees | \$5,000 | | Opex | \$12,000 | | **Total Cost** | **\$90,000** | A total cost of \$90,000 means you need at least \$90K in revenue to break even. *** ## How It Works Total Cost aggregates all cost categories attributed to your orders. This includes direct product costs (COGS), logistics (fulfillment), customer acquisition (marketing), and operating overhead. It's the complete picture of what it costs to generate your revenue. *** ## When to Use | Scenario | Action | | ---------------------- | --------------------------------- | | Profitability analysis | Compare total cost to revenue | | Break-even planning | Understand minimum revenue needed | | Cost optimization | Identify largest cost drivers | | Budget allocation | See where money is being spent | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------- | ---------------------------------------- | | [NC Total Cost](/reference/metrics/orders/contribution-margin/new-customer-total-cost) | Total cost for new customer orders | | [RC Total Cost](/reference/metrics/orders/contribution-margin/returning-customer-total-cost) | Total cost for returning customer orders | | [Net Profit](/reference/metrics/funnel/conversions/profit) | Revenue minus total cost | | [CM3](/reference/metrics/orders/contribution-margin/cm3-per-order) | Profit after all variable costs | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Total Cost %: All Costs as Share of Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/contribution-margin/total-cost-percent Track total costs as a percentage of net revenue. Understand what portion of revenue is consumed by all variable costs. Total cost as a percentage of net revenue, showing what portion of revenue is consumed by all variable costs. ## Formula **Total Cost %** = ( [**Total Cost**](/reference/metrics/orders/contribution-margin/total-cost) ÷ [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | [**Total Cost**](/reference/metrics/orders/contribution-margin/total-cost) | Sum of all variable costs: COGS + fulfillment + transaction + marketing costs | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Gross revenue minus refunds and discounts | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Your store generated **\$125,000** in net revenue with **\$87,500** in total costs, resulting in a **70%** Total Cost %. | Cost Category | Amount | % of Revenue | | ------------------ | ------------ | ------------ | | COGS | \$43,750 | 35% | | Fulfillment | \$12,500 | 10% | | Transaction | \$3,750 | 3% | | Marketing | \$21,250 | 17% | | Agency Fees + Opex | \$6,250 | 5% | | **Total Cost** | **\$87,500** | **70%** | *** ## How It Works Total Cost % aggregates all cost categories—COGS, fulfillment, transaction fees, and marketing expenses—and expresses them as a percentage of net revenue. A lower percentage indicates better overall margin efficiency. This metric is the inverse of your [Contribution Margin %](/reference/metrics/orders/contribution-margin/contribution-margin-percent). *** ## When to Use | Scenario | Action | | ------------------- | ------------------------------------------------------------ | | Margin health check | Monitor overall cost structure relative to revenue | | Cost optimization | Identify which cost categories consume the most margin | | Pricing decisions | Understand if prices support your cost structure | | Benchmarking | Compare cost efficiency across time periods or product lines | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | -------------------------------------- | | [Total Cost](/reference/metrics/orders/contribution-margin/total-cost) | The numerator in this calculation | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | The denominator in this calculation | | [Contribution Margin %](/reference/metrics/orders/contribution-margin/contribution-margin-percent) | The inverse: 100% minus Total Cost % | | [COGS](/reference/metrics/orders/cogs/cogs) | Largest cost component for most stores | [See all Contribution Margin metrics →](/reference/metrics/orders/contribution-margin) # Order Counts: Track Order Volume and Units Sold Source: https://docs.upstackdata.com/reference/metrics/orders/counts Track order volume metrics in Upstack. Includes Orders, Units Sold, Units Per Order, and Subscription metrics with formulas and examples. Order count metrics track the volume of orders and products sold. Use these to measure sales velocity, basket size, and subscription acquisition. **Data Source:** [Shopify](/sources/catalog/shopify)\ **Metrics:** 10 ## Metrics in This Group The tables below highlight the most commonly used metrics in this group — browse the full list in the sidebar. | Metric | Description | When to Use | | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | --------------------------------- | | [Orders](/reference/metrics/orders/counts/orders) | Total number of orders placed | Measure overall sales volume | | [Units Sold](/reference/metrics/orders/counts/units-sold) | Total product units sold | Track inventory movement | | [New Customer Units Sold](/reference/metrics/orders/counts/new-customer-units-sold) | Units sold to new customers | Analyze new customer basket size | | [Returning Customer Units Sold](/reference/metrics/orders/counts/returning-customer-units-sold) | Units sold to returning customers | Compare returning vs new behavior | | [Units Per Order](/reference/metrics/orders/counts/units-per-order) | Average units per order | Optimize bundle offers | | [New Customer Units Per Order](/reference/metrics/orders/counts/new-customer-units-per-order) | Average units per new customer order | Benchmark new customer baskets | | [Returning Customer Units Per Order](/reference/metrics/orders/counts/returning-customer-units-per-order) | Average units per returning customer order | Track loyalty basket growth | | [Subscription Initial Purchase Orders](/reference/metrics/orders/counts/subscription-initial-purchase-orders) | First-time subscription orders | Measure subscription acquisition | | [Subscription Initial Purchase %](/reference/metrics/orders/counts/subscription-initial-purchase-percent) | Percentage of orders that are subscription initial purchases | Track subscription mix | ## How These Metrics Relate * **Orders** is the foundational count of all completed transactions * **Units Sold** measures total product quantity across all orders * **Units Per Order** = [**Units Sold**](/reference/metrics/orders/counts/units-sold) ÷ [**Orders**](/reference/metrics/orders/counts/orders) (basket size indicator) * **Subscription metrics** track the subset of orders that start new subscriptions ## Choosing the Right Metric * **Volume tracking**: Use Orders for transaction counts, Units Sold for inventory * **Basket optimization**: Use Units Per Order to identify upsell opportunities * **Customer segmentation**: Compare New vs Returning customer metrics to identify behavior differences * **Subscription health**: Use Subscription Initial Purchase % to track subscription mix trends # New Customer Units Per Order: First-Purchase Basket Size Source: https://docs.upstackdata.com/reference/metrics/orders/counts/new-customer-units-per-order Track average units per order for new customers to understand first-purchase basket behavior. Compare against returning customers to optimize acquisition. The average number of product units included in each new customer's order. ## Formula **New Customer Units Per Order** = [**New Customer Units Sold**](/reference/metrics/orders/counts/new-customer-units-sold) ÷ **New Customer Orders** ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [**New Customer Units Sold**](/reference/metrics/orders/counts/new-customer-units-sold) | Total product units purchased by first-time buyers | | **New Customer Orders** | Count of orders placed by first-time customers | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filter applied to both numerator and denominator | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store's new customers averaged **2.4 units per order** in January: | Segment | Units/Order | Orders | Total Units | | ------------------- | ----------- | ------ | ----------- | | New Customers | 2.4 | 1,850 | 4,440 | | Returning Customers | 3.1 | 2,200 | 6,820 | | All Customers | 2.8 | 4,050 | 11,260 | *** ## How It Works This metric divides total units purchased by new customers by the number of first-time orders. It measures initial basket size behavior, helping you understand whether new customers buy single items or multiple products on their first visit. *** ## When to Use | Scenario | Action | | ------------------------------ | ----------------------------------------------------- | | Analyzing acquisition quality | Compare new vs. returning to spot basket size gaps | | Optimizing product bundles | Track if bundle promotions increase first-order units | | Evaluating channel performance | Identify which channels bring customers who buy more | | Forecasting inventory | Project unit demand from new customer acquisition | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------- | ----------------------------------------- | | [New Customer Units Sold](/reference/metrics/orders/counts/new-customer-units-sold) | Numerator: total units from new customers | | [Units Per Order](/reference/metrics/orders/counts/units-per-order) | Overall average across all customer types | | [Returning Customer Units Per Order](/reference/metrics/orders/counts/returning-customer-units-per-order) | Comparison metric for repeat buyers | | [New Customers](/reference/metrics/orders/customers/new-customers) | Count of first-time buyers | [See all Order Counts metrics →](/reference/metrics/orders/counts) # New Customer Units Sold: First-Time Buyer Quantity Source: https://docs.upstackdata.com/reference/metrics/orders/counts/new-customer-units-sold Track product units purchased by first-time customers. Measure acquisition basket size and compare to returning customers for retention insights. Total product units purchased by new customers in first-time orders. ## Formula **New Customer Units Sold** = **SUM** ( Units ) **WHERE** [customer\_type = new\_customer](/data-dictionary/measures-and-dimensions#visitor-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------- | ---------------------------------------- | | **Units** | Product quantity from order line items | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from first-time buyers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store sold **2,847 units** to new customers this month: | Week | NC Units | NC Orders | Units/Order | | ------ | -------- | --------- | ----------- | | Week 1 | 712 | 285 | 2.5 | | Week 2 | 698 | 310 | 2.3 | | Week 3 | 745 | 298 | 2.5 | | Week 4 | 692 | 277 | 2.5 | *** ## How It Works New Customer Units Sold sums the quantity of all line items from orders placed by first-time customers. A customer is classified as "new" if the order is their first recorded purchase in Shopify. This metric helps you understand how many products new customers buy in their initial transaction. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------------------ | | Measuring acquisition basket size | Compare units per order for new vs returning customers | | Evaluating bundle promotions | Track if first-time buyers purchase more units after bundle launch | | Inventory planning | Forecast demand from new customer acquisition campaigns | | Retention analysis | Benchmark against returning customer units to measure loyalty | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------- | ------------------------------------------------- | | [Units Sold](/reference/metrics/orders/counts/units-sold) | Total units across all customers | | [Returning Customer Units Sold](/reference/metrics/orders/counts/returning-customer-units-sold) | Units from repeat buyers (compare to this metric) | | [New Customer Units Per Order](/reference/metrics/orders/counts/new-customer-units-per-order) | This metric ÷ New Customer Orders | | [New Customers](/reference/metrics/orders/customers/new-customers) | Count of first-time buyers | [See all Order Counts metrics →](/reference/metrics/orders/counts) # Orders: Total Order Count Source: https://docs.upstackdata.com/reference/metrics/orders/counts/orders Track total orders placed in your Shopify store. Learn how order count drives revenue analysis, customer segmentation, and fulfillment planning. The total number of orders placed in the selected period. ## Formula **Total Orders** = **COUNT** ( Orders ) **WHERE** [status = completed](/data-dictionary/measures-and-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------ | ---------------------------------------------- | | **Orders** | Each completed checkout transaction in Shopify | | [**status = completed**](/data-dictionary/measures-and-dimensions) | Excludes cancelled and fully refunded orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your store received **1,247 orders** in January: | Week | Orders | Trend | | ------ | ------ | -------------- | | Week 1 | 287 | Baseline | | Week 2 | 312 | +8.7% | | Week 3 | 298 | −4.5% | | Week 4 | 350 | +17.4% (promo) | *** ## How It Works Orders counts every completed checkout in Shopify. Each transaction counts as one order regardless of quantity purchased. Cancelled and fully refunded orders are excluded. *** ## When to Use | Scenario | Action | | --------------------- | ---------------------------------------------------- | | Volume trending | Monitor order count over time to spot demand changes | | Conversion analysis | Combine with sessions to calculate conversion rate | | Fulfillment planning | Forecast staffing and inventory needs | | Customer segmentation | Break down by new vs returning customers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ------------------------------------- | | [Units Sold](/reference/metrics/orders/counts/units-sold) | Total product units across all orders | | [Units Per Order](/reference/metrics/orders/counts/units-per-order) | Average basket size in units | | [Unique Customers](/reference/metrics/orders/customers/unique-customers) | Distinct buyers who placed orders | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | Monetary value of all orders | | [Total AOV](/reference/metrics/orders/aov/total-aov) | Revenue ÷ Orders | [See all Order Counts metrics →](/reference/metrics/orders/counts) # Returning Customer Units Per Order: Repeat Buyer Basket Size Source: https://docs.upstackdata.com/reference/metrics/orders/counts/returning-customer-units-per-order Track average units per order for returning customers to measure repeat buyer basket size. Compare against new customers to identify loyalty-driven purchasing patterns. The average number of product units included in each returning customer's order. ## Formula **Returning Customer Units Per Order** = [**Returning Customer Units Sold**](/reference/metrics/orders/counts/returning-customer-units-sold) ÷ **Returning Customer Orders** ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [**Returning Customer Units Sold**](/reference/metrics/orders/counts/returning-customer-units-sold) | Total product units purchased by repeat buyers | | **Returning Customer Orders** | Count of orders placed by returning customers | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filter applied to both numerator and denominator | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store's returning customers averaged **3.1 units per order** in January: | Segment | Units/Order | Orders | Total Units | | ------------------- | ----------- | ------ | ----------- | | Returning Customers | 3.1 | 2,200 | 6,820 | | New Customers | 2.4 | 1,850 | 4,440 | | All Customers | 2.8 | 4,050 | 11,260 | *** ## How It Works This metric divides total units purchased by returning customers by the number of repeat orders. Higher values than new customers suggest that loyal buyers are more comfortable adding multiple items to their cart, indicating trust and familiarity with your product catalog. *** ## When to Use | Scenario | Action | | -------------------------------- | ----------------------------------------------------------------- | | Measuring loyalty impact | Compare against new customers to quantify repeat buyer engagement | | Evaluating retention programs | Track if loyalty perks increase basket size over time | | Optimizing cross-sell strategies | Identify if returning customers respond to bundle offers | | Forecasting inventory | Project unit demand from your retained customer base | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [Returning Customer Units Sold](/reference/metrics/orders/counts/returning-customer-units-sold) | Numerator: total units from returning customers | | [Units Per Order](/reference/metrics/orders/counts/units-per-order) | Overall average across all customer types | | [New Customer Units Per Order](/reference/metrics/orders/counts/new-customer-units-per-order) | Comparison metric for first-time buyers | | [Returning Customers](/reference/metrics/orders/customers/returning-customers) | Count of repeat buyers | [See all Order Counts metrics →](/reference/metrics/orders/counts) # Returning Customer Units Sold: Repeat Buyer Quantity Source: https://docs.upstackdata.com/reference/metrics/orders/counts/returning-customer-units-sold Track total product units purchased by returning customers. Analyze repeat buyer basket size and loyalty trends compared to first-time buyers. Total product units purchased by returning customers who have previously placed an order. ## Formula **Returning Customer Units Sold** = **SUM** ( Units ) **WHERE** [customer\_type = returning\_customer](/data-dictionary/measures-and-dimensions#visitor-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | **Units** | Product quantity from order line items | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to orders from customers who have purchased before | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store sold **5,895 units** to returning customers this month: | Week | RC Units | RC Orders | Units/Order | | ------ | -------- | --------- | ----------- | | Week 1 | 1,412 | 398 | 3.5 | | Week 2 | 1,523 | 435 | 3.5 | | Week 3 | 1,489 | 426 | 3.5 | | Week 4 | 1,471 | 420 | 3.5 | *** ## How It Works Returning Customer Units Sold sums the quantity of all line items from orders placed by customers who have previously purchased. A customer is classified as "returning" if they have at least one prior order in Shopify. This metric helps you understand the purchasing volume of your loyal customer base. *** ## When to Use | Scenario | Action | | ----------------------------- | --------------------------------------------------------------- | | Measuring loyalty basket size | Compare units per order for returning vs new customers | | Evaluating retention programs | Track if repeat buyers purchase more units after loyalty launch | | Inventory planning | Forecast demand from returning customer segments | | Lifetime value analysis | Monitor unit volume growth from your retained base | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | | [Units Sold](/reference/metrics/orders/counts/units-sold) | Total units across all customers | | [New Customer Units Sold](/reference/metrics/orders/counts/new-customer-units-sold) | Units from first-time buyers (compare to this metric) | | [Returning Customer Units Per Order](/reference/metrics/orders/counts/returning-customer-units-per-order) | This metric ÷ Returning Customer Orders | | [Returning Customers](/reference/metrics/orders/customers/returning-customers) | Count of repeat buyers | [See all Order Counts metrics →](/reference/metrics/orders/counts) # Subscription Initial Purchase Orders: First-Time Subscription Count Source: https://docs.upstackdata.com/reference/metrics/orders/counts/subscription-initial-purchase-orders Track first-time subscription orders in Shopify. Measure subscription acquisition, analyze program growth, and optimize your recurring revenue strategy. The count of orders where a customer starts a new subscription for the first time. ## Formula **Subscription Initial Purchase Orders** = **COUNT** ( [**Orders**](/reference/metrics/orders/counts/orders) ) **WHERE** [order\_type = subscription\_initial\_purchase](/data-dictionary/measures-and-dimensions) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | | **Orders** | Each completed checkout transaction | | [**order\_type = subscription\_initial\_purchase**](/data-dictionary/measures-and-dimensions) | Filters to orders where a customer starts their first subscription | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your store acquired **324 new subscribers** in Q1: | Month | New Subscriptions | Growth | | -------- | ----------------- | -------- | | January | 98 | Baseline | | February | 107 | +9.2% | | March | 119 | +11.2% | *** ## How It Works This metric counts orders where a customer subscribes for the first time. It excludes recurring subscription renewals and one-time purchases. Use it to measure subscription program acquisition separate from retention. *** ## When to Use | Scenario | Action | | ------------------------- | ------------------------------------------------------ | | Program growth tracking | Monitor new subscriber acquisition over time | | Campaign attribution | Identify which campaigns drive subscription signups | | Subscription mix analysis | Compare initial subscriptions to total orders | | LTV forecasting | Estimate future recurring revenue from new subscribers | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | | [Orders](/reference/metrics/orders/counts/orders) | Total orders (includes all order types) | | [Subscription Initial Purchase %](/reference/metrics/orders/counts/subscription-initial-purchase-percent) | Initial subscriptions as percentage of total orders | | [New Customers](/reference/metrics/orders/customers/new-customers) | First-time buyers (different from first-time subscribers) | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | Revenue from all orders including subscriptions | [See all Order Counts metrics →](/reference/metrics/orders/counts) # Subscription Initial Purchase %: Percentage of Subscription Orders Source: https://docs.upstackdata.com/reference/metrics/orders/counts/subscription-initial-purchase-percent Measure what percentage of your orders are subscription initial purchases. Track subscription acquisition trends and forecast recurring revenue. The percentage of total orders that are subscription initial purchases. ## Formula **Subscription Initial Purchase %** = ( [**Subscription Initial Purchase Orders**](/reference/metrics/orders/counts/subscription-initial-purchase-orders) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ) × 100 ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | [**Subscription Initial Purchase Orders**](/reference/metrics/orders/counts/subscription-initial-purchase-orders) | Orders where a customer starts a new subscription | | [**Orders**](/reference/metrics/orders/counts/orders) | Total orders in the selected period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store received **2,450 orders** in March, with **367 subscription initial purchases** — a rate of **14.98%**: | Period | Orders | Initial Subs | Rate | | -------- | ------ | ------------ | ------ | | Week 1–2 | 1,180 | 165 | 13.98% | | Week 3–4 | 1,270 | 202 | 15.91% | *** ## How It Works Subscription initial purchases are identified by matching a `subscription_initial_purchase` event with the same order ID. This excludes recurring renewals and one-time purchases. *** ## When to Use | Scenario | Action | | ---------------------------- | -------------------------------------------------- | | Tracking subscription growth | Monitor rate changes week-over-week | | Evaluating campaigns | Compare rates across subscriber-targeted campaigns | | Forecasting LTV | Higher rates indicate more recurring revenue | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | | [Subscription Initial Purchase Orders](/reference/metrics/orders/counts/subscription-initial-purchase-orders) | Numerator: count of initial subscriptions | | [Orders](/reference/metrics/orders/counts/orders) | Denominator: total order count | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | Revenue context for subscription mix | [See all Order Counts metrics →](/reference/metrics/orders/counts) # Subscription Orders: Recurring Order Count Source: https://docs.upstackdata.com/reference/metrics/orders/counts/subscription-orders Track subscription orders for your Shopify store. Measure the count of recurring subscription orders. Subscription Orders measures the count of orders from subscription plans—recurring purchases that renew automatically. ## Formula **Subscription Orders** = **COUNT** ( Orders flagged as subscription ) ### Formula Components | Metric | Definition | | --------------------- | --------------------------------------------------------------- | | **Subscription Flag** | Orders identified as recurring via Shopify or subscription apps | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Count | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your Shopify store processes **1,000** total orders, including **150** subscriptions. | Order Type | Count | Percentage | | ----------------------- | ------- | ---------- | | One-time purchases | 850 | 85% | | **Subscription orders** | **150** | **15%** | | Total | 1,000 | 100% | *** ## How It Works Subscription Orders are identified through Shopify order metadata or integration with subscription platforms (Recharge, Bold Subscriptions, Skio, etc.). The count helps track subscription program growth. *** ## When to Use | Scenario | Action | | ----------------------- | ----------------------------------------- | | Program growth | Track subscription adoption | | Retention health | Growing subscriptions = healthy retention | | Operations planning | Forecast recurring fulfillment volume | | Conversion optimization | Measure subscription signup success | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | -------------------------- | | [Orders](/reference/metrics/orders/counts/orders) | Total order count | | [Subscription Revenue](/reference/metrics/orders/revenue/subscription-revenue) | Revenue from subscriptions | | [Subscription AOV](/reference/metrics/orders/aov/subscription-aov) | Per-subscription value | | [Returning Customer Orders](/reference/metrics/orders/counts/orders) | Repeat orders | [See all Count metrics →](/reference/metrics/orders/counts) # Units Per Order: Average Basket Quantity Source: https://docs.upstackdata.com/reference/metrics/orders/counts/units-per-order Track the average number of product units per order to measure basket size. Optimize bundling, cross-sells, and product mix to increase order volume. The average number of product units included in each order. ## Formula **Units Per Order** = [**Units Sold**](/reference/metrics/orders/counts/units-sold) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ------------------------------------------------------------- | --------------------------------------------- | | [**Units Sold**](/reference/metrics/orders/counts/units-sold) | Total product quantity sold across all orders | | [**Orders**](/reference/metrics/orders/counts/orders) | Total number of completed orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store averaged **3.0 units per order** in March with 2,914 orders: | Week | Orders | Units Sold | Units/Order | | ------ | ------ | ---------- | ----------- | | Week 1 | 687 | 1,923 | 2.8 | | Week 2 | 712 | 2,279 | 3.2 | | Week 3 | 745 | 2,384 | 3.2 | | Week 4 | 770 | 2,156 | 2.8 | *** ## How It Works Units Per Order divides total units sold by total orders. Higher values indicate customers are adding more items per transaction—either through bundles, cross-sells, or natural multi-item purchases. *** ## When to Use | Scenario | Action | | --------------------- | -------------------------------------------------------------------- | | Low units per order | Test product bundles or "frequently bought together" recommendations | | Declining trend | Review cross-sell placements, shipping thresholds, or product mix | | Comparing segments | Analyze new vs. returning customer basket sizes | | Evaluating promotions | Measure impact of volume discounts or bundle offers | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------- | ---------------------------------------- | | [Units Sold](/reference/metrics/orders/counts/units-sold) | Numerator: total product quantity | | [Orders](/reference/metrics/orders/counts/orders) | Denominator: transaction count | | [NC Units Per Order](/reference/metrics/orders/counts/new-customer-units-per-order) | Same formula for new customers only | | [Total AOV](/reference/metrics/orders/aov/total-aov) | Revenue version—measures value per order | [See all Order Counts metrics →](/reference/metrics/orders/counts) # Units Sold: Total Product Quantity Sold Source: https://docs.upstackdata.com/reference/metrics/orders/counts/units-sold Track total product units sold across all orders. Monitor inventory movement, basket sizes, and product demand with this e-commerce metric. The total quantity of individual product units sold across all orders in the selected period. ## Formula **Units Sold** = **SUM** ( Quantity ) **FOR EACH** Line Item ### Formula Components | Metric | Definition | | ------------- | ---------------------------------------------- | | **Quantity** | Number of units for each line item in an order | | **Line Item** | Individual product entry within an order | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store sold **8,742 units** across 2,914 orders in March: | Product Category | Units | % of Total | | ---------------- | ----- | ---------- | | Apparel | 4,120 | 47% | | Accessories | 2,621 | 30% | | Footwear | 2,001 | 23% | *** ## How It Works Units Sold sums the quantity field from every line item across all completed orders. If a customer orders 3 t-shirts and 2 hats in one transaction, that order contributes 5 units to this metric. *** ## When to Use | Scenario | Action | | --------------------- | ---------------------------------------------------- | | Inventory planning | Forecast stock needs based on unit velocity | | Basket size analysis | Combine with Orders to calculate units per order | | Product demand trends | Compare unit sales across categories or time periods | | Promotion impact | Measure volume lift from sales or bundles | *** ## Related Metrics | Metric | Relationship | | ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------- | | [Orders](/reference/metrics/orders/counts/orders) | Number of transactions (this metric sums their line quantities) | | [Units Per Order](/reference/metrics/orders/counts/units-per-order) | Units Sold ÷ Orders | | [New Customer Units Sold](/reference/metrics/orders/counts/new-customer-units-sold) | Units from first-time buyers only | | [Returning Customer Units Sold](/reference/metrics/orders/counts/returning-customer-units-sold) | Units from repeat customers only | [See all Order Counts metrics →](/reference/metrics/orders/counts) # Customer Metrics: Track New vs Returning Customers Source: https://docs.upstackdata.com/reference/metrics/orders/customers Track customer metrics in Upstack. Includes Unique Customers, New Customers, Returning Customers, and customer rates with formulas and examples. Customer metrics track acquisition and retention by segmenting orders into new and returning customers. Use these to understand your customer mix and loyalty trends. **Data Source:** [Shopify](/sources/catalog/shopify)\ **Metrics:** 8 ## Metrics in This Group | Metric | Description | When to Use | | -------------------------------------------------------------------------------------------------- | --------------------------------------------- | ------------------------------------ | | [Unique Customers](/reference/metrics/orders/customers/unique-customers) | Distinct customers who placed orders | Count total customer base | | [New Customers](/reference/metrics/orders/customers/new-customers) | First-time customers | Track customer acquisition | | [Returning Customers](/reference/metrics/orders/customers/returning-customers) | Customers with prior purchases | Track customer retention | | [New Customer %](/reference/metrics/orders/customers/new-customer-percent) | Percentage of orders from new customers | Monitor acquisition vs retention mix | | [Returning Customer %](/reference/metrics/orders/customers/returning-customer-percent) | Percentage of orders from returning customers | Track repeat purchase rate | | [New Customer Gross Rate](/reference/metrics/orders/customers/new-customer-gross-rate) | New customer revenue as % of gross | Revenue contribution by segment | | [Returning Customer Gross Rate](/reference/metrics/orders/customers/returning-customer-gross-rate) | Returning customer revenue as % of gross | Retention revenue share | | [Average Orders Per Customer](/reference/metrics/orders/customers/average-orders-per-customer) | Average number of orders per customer | Measure purchase frequency | ## How These Metrics Relate * **Unique Customers** = [**New Customers**](/reference/metrics/orders/customers/new-customers) + [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) (by customer count) * **New Customer %** + **Returning Customer %** = 100% (by order count) * **New Customer Gross Rate** + **Returning Customer Gross Rate** = 100% (by revenue) * **Average Orders Per Customer** = [**Orders**](/reference/metrics/orders/counts/orders) ÷ [**Unique Customers**](/reference/metrics/orders/customers/unique-customers) ## Choosing the Right Metric * **Acquisition tracking**: Use New Customers and New Customer % for acquisition reporting * **Retention analysis**: Use Returning Customers and Returning Customer % for loyalty * **Revenue mix**: Use Gross Rate metrics to see revenue contribution by segment * **Purchase frequency**: Use Average Orders Per Customer to measure engagement # Average Orders Per Customer: Purchase Frequency Source: https://docs.upstackdata.com/reference/metrics/orders/customers/average-orders-per-customer Track average orders per customer to measure repeat purchase behavior. Higher values indicate stronger customer loyalty and engagement. The average number of orders placed per unique customer in the selected period. ## Formula **Avg Orders Per Customer** = [**Orders**](/reference/metrics/orders/counts/orders) ÷ [**Unique Customers**](/reference/metrics/orders/customers/unique-customers) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | ------------------------------------------------ | | [**Orders**](/reference/metrics/orders/counts/orders) | Total number of orders placed in the period | | [**Unique Customers**](/reference/metrics/orders/customers/unique-customers) | Distinct customers who placed at least one order | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store had **1.42 average orders per customer** in Q1: | Month | Orders | Unique Customers | Avg Orders/Customer | | -------- | ------ | ---------------- | ------------------- | | January | 1,247 | 892 | 1.40 | | February | 1,156 | 798 | 1.45 | | March | 1,324 | 934 | 1.42 | *** ## How It Works This metric divides total orders by unique customers to reveal purchase frequency. A value of 1.0 means every customer ordered exactly once. Values above 1.0 indicate repeat purchases—the higher the number, the more frequently customers return to buy. *** ## When to Use | Scenario | Action | | ----------------------------- | ----------------------------------------------------- | | Measuring loyalty | Track purchase frequency trends over time | | Evaluating retention programs | Compare before/after launching loyalty initiatives | | Benchmarking cohorts | See which acquisition channels drive repeat buyers | | Identifying seasonality | Monitor if holidays or promotions boost repeat orders | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ----------------------------------- | | [Unique Customers](/reference/metrics/orders/customers/unique-customers) | Denominator—total distinct buyers | | [Orders](/reference/metrics/orders/counts/orders) | Numerator—total order count | | [New Customer %](/reference/metrics/orders/customers/new-customer-percent) | Shows mix of first-time vs repeat | | [Returning Customer %](/reference/metrics/orders/customers/returning-customer-percent) | Direct indicator of repeat behavior | [See all Customers metrics →](/reference/metrics/orders/customers) # New Customer Gross Rate: Acquisition Revenue Share Source: https://docs.upstackdata.com/reference/metrics/orders/customers/new-customer-gross-rate Measure the percentage of gross revenue from new customers. Track acquisition efficiency and balance new vs returning customer mix for growth. The percentage of gross revenue generated by first-time customers. ## Formula **New Customer Gross Rate** = ( [**NC Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) ÷ [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------ | --------------------------------------------------- | | [**NC Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Gross revenue from first-time buyers | | [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Total revenue from product sales before adjustments | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions) | Filter applied to identify first-time buyers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store generated **\$185,000** in gross revenue in Q1, with **\$74,000** from new customers: | Segment | Gross Revenue | Rate | | ------------------- | ------------- | ------- | | New Customers | \$74,000 | **40%** | | Returning Customers | \$111,000 | 60% | A 40% new customer gross rate shows meaningful acquisition-driven revenue. *** ## How It Works This metric divides new customer gross revenue by total gross revenue, then multiplies by 100 to express as a percentage. It measures how much of your top-line product sales comes from first-time buyers versus repeat purchasers. *** ## When to Use | Scenario | Action | | --------------------------------- | ----------------------------------------------------- | | Evaluating acquisition investment | Higher rate may justify continued acquisition spend | | Diagnosing revenue concentration | Track dependency on new vs repeat buyers | | Comparing acquisition costs | Balance CAC against new customer revenue contribution | | Seasonal trend analysis | Monitor how customer mix shifts over time | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [Returning Customer Gross Rate](/reference/metrics/orders/customers/returning-customer-gross-rate) | Inverse metric (NC Rate + RC Rate = 100%) | | [New Customers](/reference/metrics/orders/customers/new-customers) | Count of first-time buyers generating this revenue | | [New Customer %](/reference/metrics/orders/customers/new-customer-percent) | Order count share (this metric measures revenue share) | | [New Customer Gross Revenue](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Numerator in this calculation | [See all Customers metrics →](/reference/metrics/orders/customers) # New Customer %: First-Time Buyer Order Share Source: https://docs.upstackdata.com/reference/metrics/orders/customers/new-customer-percent Track the percentage of orders from first-time buyers. Learn the formula, see examples, and optimize your acquisition vs retention balance. The percentage of total orders placed by first-time customers. ## Formula **New Customer %** = ( **NC Orders** ÷ [**Total Orders**](/reference/metrics/orders/counts/orders) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | -------------------------------------------- | | **NC Orders** | Orders placed by first-time buyers | | [**Total Orders**](/reference/metrics/orders/counts/orders) | Complete count of all orders in the period | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions) | Filter applied to identify first-time buyers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store processed **2,450 orders** in March with **980 from first-time buyers**: | Customer Type | Orders | Share | | ------------------- | ------ | ------- | | New Customers | 980 | **40%** | | Returning Customers | 1,470 | 60% | *** ## How It Works Shopify tracks whether each customer has previous orders. New Customer % divides orders from customers with no prior purchase history by total orders. This ratio reveals your acquisition vs retention balance. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------------- | | Evaluating acquisition efforts | Higher % indicates successful new customer acquisition | | Assessing retention health | Lower % suggests strong repeat purchase behavior | | Seasonal trend analysis | Compare % across periods to spot shifting customer mix | | Marketing strategy alignment | Balance acquisition spend against retention initiatives | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ----------------------------------- | | [Returning Customer %](/reference/metrics/orders/customers/returning-customer-percent) | The inverse (100% − New Customer %) | | [Orders](/reference/metrics/orders/counts/orders) | Total orders (the denominator) | | [New Customers](/reference/metrics/orders/customers/new-customers) | Distinct first-time buyers | | [New Customer Gross Revenue](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Revenue from first-time buyers | [See all Customers metrics →](/reference/metrics/orders/customers) # New Customers: First-Time Buyers in Period Source: https://docs.upstackdata.com/reference/metrics/orders/customers/new-customers Track the number of first-time customers who made their first purchase. Measure customer acquisition independently of order volume. The count of distinct customers making their first-ever purchase in the period. ## Formula **New Customers** = **COUNT DISTINCT** ( Customer ID ) **WHERE** [customer\_type = new\_customer](/data-dictionary/measures-and-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | --------------------------------------------------- | | **Customer ID** | Unique identifier for each customer from Shopify | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions) | Filters to customers with no prior purchase history | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your store acquired **1,247 new customers** in March: | Week | New Customers | NC Orders | NC Revenue | | ------ | ------------- | --------- | ---------- | | Week 1 | 312 | 318 | \$24,560 | | Week 2 | 287 | 295 | \$22,140 | | Week 3 | 341 | 352 | \$27,830 | | Week 4 | 307 | 319 | \$25,470 | Each customer appears only once—in the week of their first-ever purchase. The NC Orders count is slightly higher because some new customers placed multiple orders in the same week. *** ## How It Works A customer is classified as "new" based on their entire purchase history with your store, not just the selected period. If someone has never ordered before and places their first order during the reporting period, they count as a new customer. This classification uses Shopify's customer records to verify first-purchase status. *** ## When to Use | Scenario | Action | | ----------------------- | ------------------------------------------------------------ | | Measuring acquisition | Track how many first-time buyers you're acquiring | | Ad performance analysis | Evaluate campaigns by new customer generation | | Growth forecasting | Use new customer trends to project future revenue | | CAC calculations | Combine with ad spend to calculate customer acquisition cost | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ------------------------------------------ | | [Unique Customers](/reference/metrics/orders/customers/unique-customers) | Total distinct customers (New + Returning) | | [Returning Customers](/reference/metrics/orders/customers/returning-customers) | Complement to new customers | | [New Customer %](/reference/metrics/orders/customers/new-customer-percent) | New Customers as percentage of orders | | [New Customer Gross Revenue](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Revenue from new customers | [See all Customers metrics →](/reference/metrics/orders/customers) # Returning Customer Gross Rate: Retention Revenue Share Source: https://docs.upstackdata.com/reference/metrics/orders/customers/returning-customer-gross-rate Track what percentage of gross revenue comes from returning customers. Measure retention revenue contribution and balance acquisition vs loyalty. The percentage of gross revenue generated by returning customers. ## Formula **Returning Customer Gross Rate** = ( [**RC Gross Revenue**](/reference/metrics/orders/revenue/returning-customer-gross-revenue) ÷ [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------ | --------------------------------------------------- | | [**RC Gross Revenue**](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Gross revenue from customers with prior purchases | | [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Total revenue from product sales before adjustments | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions) | Filter applied to identify repeat buyers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store generated **\$185,000** in gross revenue in Q1, with **\$111,000** from returning customers: | Segment | Gross Revenue | Rate | | ------------------- | ------------- | ------- | | Returning Customers | \$111,000 | **60%** | | New Customers | \$74,000 | 40% | A 60% returning customer gross rate indicates strong retention revenue contribution. *** ## How It Works This metric divides returning customer gross revenue by total gross revenue, then multiplies by 100 to express as a percentage. It measures how much of your product revenue comes from repeat buyers versus first-time purchasers. *** ## When to Use | Scenario | Action | | -------------------------------- | -------------------------------------------------- | | Evaluating retention investment | High rate justifies loyalty program spend | | Diagnosing revenue concentration | Track dependency on repeat buyers vs acquisition | | Comparing acquisition costs | Balance CAC against retention revenue contribution | | Seasonal trend analysis | Monitor how customer mix shifts over time | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------ | | [New Customer Gross Rate](/reference/metrics/orders/customers/new-customer-gross-rate) | Inverse metric (NC Rate + RC Rate = 100%) | | [Returning Customers](/reference/metrics/orders/customers/returning-customers) | Count of repeat buyers generating this revenue | | [Returning Customer %](/reference/metrics/orders/customers/returning-customer-percent) | Order count share (this metric measures revenue share) | | [Returning Customer Gross Revenue](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Numerator in this calculation | [See all Customers metrics →](/reference/metrics/orders/customers) # Returning Customer %: Repeat Buyer Order Share Source: https://docs.upstackdata.com/reference/metrics/orders/customers/returning-customer-percent Track the percentage of orders from repeat buyers. Learn the formula, see examples, and measure customer loyalty and retention strength. The percentage of total orders placed by customers who have purchased before. ## Formula **Returning Customer %** = ( **RC Orders** ÷ [**Total Orders**](/reference/metrics/orders/counts/orders) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------ | ----------------------------------------------------------- | | **RC Orders** | Orders placed by customers with at least one prior purchase | | [**Total Orders**](/reference/metrics/orders/counts/orders) | Complete count of all orders in the period | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions) | Filter applied to identify repeat buyers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store processed **2,450 orders** in March with **1,470 from returning customers**: | Customer Type | Orders | Share | | ------------------- | ------ | ------- | | Returning Customers | 1,470 | **60%** | | New Customers | 980 | 40% | *** ## How It Works Shopify tracks whether each customer has previous orders. Returning Customer % divides orders from customers with at least one prior purchase by total orders. A high rate signals strong customer loyalty and retention. *** ## When to Use | Scenario | Action | | ---------------------------------- | ----------------------------------------------------------- | | Measuring retention success | Higher % indicates loyal customers placing repeat orders | | Evaluating LTV potential | Strong repeat rates suggest healthy customer lifetime value | | Seasonal trend analysis | Compare % across periods to spot retention changes | | Balancing acquisition vs retention | Use alongside New Customer % for complete picture | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ----------------------------------------- | | [New Customer %](/reference/metrics/orders/customers/new-customer-percent) | The inverse (100% − Returning Customer %) | | [Orders](/reference/metrics/orders/counts/orders) | Total orders (the denominator) | | [Returning Customers](/reference/metrics/orders/customers/returning-customers) | Distinct repeat buyers | | [Returning Customer Gross Revenue](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Revenue from repeat buyers | [See all Customers metrics →](/reference/metrics/orders/customers) # Returning Customers: Repeat Buyers in Period Source: https://docs.upstackdata.com/reference/metrics/orders/customers/returning-customers Track the count of repeat buyers who placed orders in your selected period. Measure customer retention and loyalty with actual repeat customer numbers. The count of customers who placed orders and have at least one prior purchase on record. ## Formula **Returning Customers** = **COUNT DISTINCT** ( Customer ID ) **WHERE** [customer\_type = returning\_customer](/data-dictionary/measures-and-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------ | ----------------------------------------------------- | | **Customer ID** | Unique identifier for each customer from Shopify | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions) | Filters to customers with at least one prior purchase | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Your store served **1,847 returning customers** in February: | Week | Returning Customers | New Customers | Total Unique | | ------ | ------------------- | ------------- | ------------ | | Week 1 | 428 | 284 | 712 | | Week 2 | 412 | 272 | 684 | | Week 3 | 467 | 289 | 756 | | Week 4 | 540 | 155 | 695 | Your returning customer base grew throughout the month as early February buyers placed repeat orders. *** ## How It Works Shopify tracks each customer's purchase history. A returning customer is anyone who has completed at least one order before the current one. This metric counts distinct returning customers—each repeat buyer counts once regardless of how many orders they placed in the period. *** ## When to Use | Scenario | Action | | ----------------------------- | -------------------------------------------------------------- | | Tracking retention success | Monitor growth in repeat buyers month over month | | Evaluating loyalty programs | Compare returning customer counts before and after initiatives | | Sizing your repeat buyer base | Understand how many loyal customers are actively purchasing | | Cohort retention analysis | Track which acquisition cohorts produce the most repeat buyers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ------------------------------------------ | | [New Customers](/reference/metrics/orders/customers/new-customers) | First-time buyers (the complement) | | [Unique Customers](/reference/metrics/orders/customers/unique-customers) | Total distinct customers (New + Returning) | | [Returning Customer %](/reference/metrics/orders/customers/returning-customer-percent) | Returning orders as percentage of total | | [Returning Customer Gross Revenue](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Revenue from repeat buyers | [See all Customers metrics →](/reference/metrics/orders/customers) # Unique Customers: Distinct Buyers in Period Source: https://docs.upstackdata.com/reference/metrics/orders/customers/unique-customers Track the number of distinct customers who placed orders in your selected period. Understand buyer count independently of order volume. The count of distinct customers who placed at least one order in the period. ## Formula **Unique Customers** = **COUNT DISTINCT** ( Customer ID ) **WHERE** order placed in period ### Formula Components | Metric | Definition | | --------------- | ------------------------------------------------ | | **Customer ID** | Unique identifier for each customer from Shopify | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count Distinct | *** ## Example Your store served **2,847 unique customers** in February: | Week | Unique Customers | Orders | Avg Orders/Customer | | ------ | ---------------- | ------ | ------------------- | | Week 1 | 712 | 892 | 1.25 | | Week 2 | 684 | 821 | 1.20 | | Week 3 | 756 | 934 | 1.24 | | Week 4 | 695 | 847 | 1.22 | The monthly unique customers (2,847) is less than the sum of weekly counts because some customers purchased in multiple weeks. *** ## How It Works Each customer is counted once regardless of how many orders they placed. A customer who placed 5 orders counts the same as one who placed 1 order. This metric uses Shopify customer identifiers to deduplicate across the selected time period. *** ## When to Use | Scenario | Action | | --------------------------- | ---------------------------------------------- | | Measuring acquisition reach | Track unique buyers separate from order volume | | Calculating repeat rate | Compare unique customers to total orders | | Sizing customer base | Understand how many people you served | | Cohort analysis | Track unique customers by acquisition period | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ----------------------------------------------- | | [New Customers](/reference/metrics/orders/customers/new-customers) | First-time buyers subset | | [Returning Customers](/reference/metrics/orders/customers/returning-customers) | Repeat buyers subset | | [Orders](/reference/metrics/orders/counts/orders) | Total order count (may exceed unique customers) | | [Avg Orders Per Customer](/reference/metrics/orders/customers/average-orders-per-customer) | Orders ÷ Unique Customers | [See all Customers metrics →](/reference/metrics/orders/customers) # Fulfillment Costs: Track Shipping and Handling Expenses Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment Track fulfillment cost metrics in Upstack. Includes Handling Cost, Shipping Cost, and fulfillment expenses by customer type. Fulfillment cost metrics track the expenses of getting orders to customers—handling, shipping, and other fulfillment operations. **Data Source:** [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs)\ **Metrics:** 17 ## Metrics in This Group The tables below highlight the most commonly used metrics in this group — browse the full list in the sidebar. | Metric | Description | When to Use | | ---------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ------------------------ | | [Handling Cost](/reference/metrics/orders/fulfillment/handling-cost) | Order handling expenses | Track warehouse costs | | [Handling Cost Per Order](/reference/metrics/orders/fulfillment/handling-cost-per-order) | Handling cost per order | Per-order analysis | | [Handling Cost %](/reference/metrics/orders/fulfillment/handling-cost-percent) | Handling as % of revenue | Cost proportion | | [Shipping Cost](/reference/metrics/orders/fulfillment/shipping-cost) | Shipping expenses | Track carrier costs | | [Shipping Cost Per Order](/reference/metrics/orders/fulfillment/shipping-cost-per-order) | Shipping cost per order | Per-order shipping | | [Shipping Cost %](/reference/metrics/orders/fulfillment/shipping-cost-percent) | Shipping as % of revenue | Shipping burden | | [Other Fulfillment Cost](/reference/metrics/orders/fulfillment/other-fulfillment-cost) | Additional fulfillment expenses | Track misc expenses | | [Total Fulfillment Cost](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | All fulfillment costs combined | Total fulfillment burden | | [New Customer Shipping Cost](/reference/metrics/orders/fulfillment/new-customer-shipping-cost) | Shipping for new customers | Segment analysis | | [Returning Customer Shipping Cost](/reference/metrics/orders/fulfillment/returning-customer-shipping-cost) | Shipping for returning customers | Compare segments | | [New Customer Handling Cost](/reference/metrics/orders/fulfillment/new-customer-handling-cost) | Handling for new customers | New customer costs | | [Returning Customer Handling Cost](/reference/metrics/orders/fulfillment/returning-customer-handling-cost) | Handling for returning customers | Returning costs | | [New Customer Other Fulfillment Cost](/reference/metrics/orders/fulfillment/new-customer-other-fulfillment-cost) | Custom fulfillment for new customers | Track custom fees | | [Returning Customer Other Fulfillment Cost](/reference/metrics/orders/fulfillment/returning-customer-other-fulfillment-cost) | Custom fulfillment for returning | Compare segments | | [New Customer Fulfillment Cost](/reference/metrics/orders/fulfillment/new-customer-fulfillment-cost) | All fulfillment costs for new customers | NC profitability | ## How These Metrics Relate Fulfillment costs impact contribution margin at the CM2 level: * **Total Fulfillment Cost** = [**Handling Cost**](/reference/metrics/orders/fulfillment/handling-cost) + [**Shipping Cost**](/reference/metrics/orders/fulfillment/shipping-cost) + [**Other Fulfillment Cost**](/reference/metrics/orders/fulfillment/other-fulfillment-cost) * **CM2** = [**CM1**](/reference/metrics/orders/contribution-margin/cm1) − [**Fulfillment Costs**](/reference/metrics/orders/fulfillment) (contribution margin after fulfillment) * Compare **Shipping Revenue** vs **Shipping Cost** to find shipping margin ## Choosing the Right Metric * **Fulfillment optimization**: Use Total Fulfillment Cost to track total burden * **Shipping margin**: Compare Shipping Cost vs Shipping Revenue collected * **Per-order economics**: Use Per Order metrics for unit economics * **Customer profitability**: Compare New vs Returning fulfillment costs # Fulfillment Cost per Order: Total Fulfillment Expense Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/fulfillment-cost-per-order Track fulfillment cost per order for your Shopify store. Measure total fulfillment cost including shipping and handling. Fulfillment Cost per Order measures the total cost to fulfill each order—shipping, handling, packaging, and any other fulfillment expenses. ## Formula **Fulfillment Cost per Order** = [**Total Fulfillment Cost**](/reference/metrics/orders/fulfillment/total-fulfillment-cost) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------ | ------------------------ | | [**Total Fulfillment Cost**](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | All fulfillment expenses | | [**Orders**](/reference/metrics/orders/counts/orders) | Count of orders | | Metadata | | | --------------- | ----------------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Your Shopify store has **\$27,000** fulfillment costs across **1,000** orders. | Component | Amount | Per Order | | --------------------- | ------------ | ----------- | | Shipping | \$15,000 | \$15.00 | | Handling | \$12,000 | \$12.00 | | **Total Fulfillment** | **\$27,000** | **\$27.00** | *** ## How It Works Fulfillment Cost per Order combines all costs to get an order from your warehouse to the customer. This is the key input for CM2 calculation. *** ## When to Use | Scenario | Action | | ---------------------- | ---------------------------------------- | | CM2 calculation | Fulfillment reduces CM1 to CM2 | | Minimum order value | Set thresholds based on fulfillment cost | | 3PL evaluation | Compare fulfillment providers | | Profitability analysis | Key component of unit economics | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ------------------------ | | [Fulfillment Cost](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | Total fulfillment costs | | [Shipping Cost per Order](/reference/metrics/orders/fulfillment/shipping-cost-per-order) | Carrier portion | | [Handling Cost per Order](/reference/metrics/orders/fulfillment/handling-cost-per-order) | Labor portion | | [CM2 per Order](/reference/metrics/orders/contribution-margin/cm2-per-order) | Margin after fulfillment | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # Handling Cost: Total Order Fulfillment Handling Expense Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/handling-cost Track Handling Cost to measure total warehouse and packaging expenses — essential for contribution margin and unit economics analysis. Handling Cost measures total warehouse and packaging expenses incurred to prepare orders for shipment. ## Formula **Handling Cost** = **SUM** ( [Handling Cost per Order](/reference/metrics/orders/fulfillment/handling-cost-per-order) ) ### Formula Components | Metric | Definition | | --------------------------- | ----------------------------------------------------------------------------------- | | **Handling Cost per Order** | Handling fees for one order, charged per unit sold and summed across its line items | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store fulfilled **3,240 orders** in March with total handling expenses of **\$9,720**, averaging **\$3.00** per order. | Month | Orders | Handling Cost | Per Order | | ----- | ------ | ------------- | --------- | | March | 3,240 | \$9,720 | \$3.00 | | April | 2,980 | \$9,536 | \$3.20 | *** ## How It Works Handling Cost aggregates warehouse expenses from your cost configuration — the global handling fee charged per unit sold plus per-product handling charges. These costs cover picking, packing, and materials. The metric is deducted from CM1 when calculating contribution margin at the CM2 level. *** ## When to Use | Scenario | Action | | ---------------------------- | --------------------------------------------------- | | Contribution margin analysis | Deduct from CM1 to calculate CM2 | | 3PL evaluation | Compare handling costs across fulfillment providers | | Packaging optimization | Track cost impact of material changes | | Volume efficiency | Monitor if scale reduces per-order handling | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | -------------------------------------------- | | [Handling Cost Per Order](/reference/metrics/orders/fulfillment/handling-cost-per-order) | Average handling expense per order | | [Handling Cost %](/reference/metrics/orders/fulfillment/handling-cost-percent) | Handling as percentage of net revenue | | [Shipping Cost](/reference/metrics/orders/fulfillment/shipping-cost) | Partner fulfillment cost component | | [Total Fulfillment Cost](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | Combined shipping, handling, and fulfillment | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # Handling Cost per Order: Average Handling Expense Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/handling-cost-per-order Track handling cost per order for your Shopify store. Measure the average handling and labor cost per order fulfilled. Handling Cost per Order measures the average labor and handling expense per order—picking, packing, and processing costs. ## Formula **Handling Cost per Order** = [**Total Handling Cost**](/reference/metrics/orders/fulfillment/handling-cost) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | ----------------------- | | [**Total Handling Cost**](/reference/metrics/orders/fulfillment/handling-cost) | Total handling expenses | | [**Orders**](/reference/metrics/orders/counts/orders) | Count of orders | | Metadata | | | --------------- | ----------------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Your Shopify store has **\$12,000** handling costs across **1,000** orders. | Component | Value | Calculation | | --------------------------- | -------- | ------------------- | | Total Handling Cost | \$12,000 | Picking and packing | | Orders | 1,000 | Order count | | **Handling Cost per Order** | **\$12** | \$12,000 ÷ 1,000 | *** ## How It Works Handling Cost per Order is configured in Cost Settings. You can set a fixed cost per order or a variable cost based on order complexity (units, weight, etc.). *** ## When to Use | Scenario | Action | | ---------------------- | --------------------------------------- | | CM2 calculation | Handling reduces CM1 to CM2 | | Fulfillment efficiency | Track cost per order over time | | 3PL comparison | Compare handling costs across providers | | Pricing decisions | Include handling in unit economics | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | --------------------------- | | [Handling Cost](/reference/metrics/orders/fulfillment/handling-cost) | Total handling costs | | [Shipping Cost per Order](/reference/metrics/orders/fulfillment/shipping-cost-per-order) | Carrier costs per order | | [Fulfillment Cost per Order](/reference/metrics/orders/fulfillment/fulfillment-cost-per-order) | Total fulfillment per order | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # Handling Cost %: Handling Expense as Share of Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/handling-cost-percent Track Handling Cost % to measure handling expenses as a percentage of net revenue — essential for monitoring fulfillment cost efficiency and margin impact. Handling Cost % measures what percentage of your net revenue is consumed by order handling expenses. ## Formula **Handling Cost %** = ( [**Handling Cost**](/reference/metrics/orders/fulfillment/handling-cost) ÷ [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------ | --------------------------------------------- | | [**Handling Cost**](/reference/metrics/orders/fulfillment/handling-cost) | Total warehouse and order processing expenses | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Revenue after refunds and discounts | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Your store generated **\$185,000** in net revenue in March with **\$9,250** in handling costs, resulting in a **5.0%** handling cost percentage. | Month | Net Revenue | Handling Cost | Handling Cost % | | ----- | ----------- | ------------- | --------------- | | March | \$185,000 | \$9,250 | 5.0% | | April | \$192,000 | \$8,640 | 4.5% | *** ## How It Works Handling Cost % divides your total handling expenses by net revenue. This gives you a normalized view of handling burden that can be tracked month-over-month regardless of revenue fluctuations. Lower percentages indicate more efficient fulfillment operations. *** ## When to Use | Scenario | Action | | ----------------------- | --------------------------------------------------- | | Margin analysis | Monitor handling burden on contribution margin | | Efficiency benchmarking | Compare against industry standards (typically 3-8%) | | Seasonal planning | Track how fulfillment scales during peak periods | | 3PL evaluation | Compare handling costs across fulfillment providers | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ------------------------------------- | | [Handling Cost](/reference/metrics/orders/fulfillment/handling-cost) | Absolute handling expense (numerator) | | [Handling Cost Per Order](/reference/metrics/orders/fulfillment/handling-cost-per-order) | Per-order handling expense | | [Shipping Cost %](/reference/metrics/orders/fulfillment/shipping-cost-percent) | Shipping as percentage of revenue | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # New Customer Fulfillment Cost: First-Time Buyer Fulfillment Expenses Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/new-customer-fulfillment-cost Track total fulfillment costs for new customer orders including shipping, handling, and other expenses. Analyze first-time buyer profitability. Total fulfillment costs—shipping, handling, and other expenses—for orders placed by new (first-time) customers. ## Formula **New Customer Fulfillment Cost** = [**NC Shipping Cost**](/reference/metrics/orders/fulfillment/new-customer-shipping-cost) + [**NC Handling Cost**](/reference/metrics/orders/fulfillment/new-customer-handling-cost) + [**NC Other Fulfillment Cost**](/reference/metrics/orders/fulfillment/new-customer-other-fulfillment-cost) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------- | | [**NC Shipping Cost**](/reference/metrics/orders/fulfillment/new-customer-shipping-cost) | Shipping expenses for new customer orders | | [**NC Handling Cost**](/reference/metrics/orders/fulfillment/new-customer-handling-cost) | Handling expenses for new customer orders | | [**NC Other Fulfillment Cost**](/reference/metrics/orders/fulfillment/new-customer-other-fulfillment-cost) | Additional fulfillment expenses for new customers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store spent **\$4,680** on fulfilling new customer orders last month: | Component | New Customers | Returning Customers | Total | | --------------------- | ------------- | ------------------- | ----------- | | Shipping Cost | \$3,120 | \$2,480 | \$5,600 | | Handling Cost | \$1,248 | \$1,860 | \$3,108 | | Other Fulfillment | \$312 | \$248 | \$560 | | **Total Fulfillment** | **\$4,680** | **\$4,588** | **\$9,268** | *** ## How It Works New Customer Fulfillment Cost aggregates all fulfillment-related expenses from orders where the customer is making their first purchase. This includes shipping, handling, and any additional user-defined fulfillment costs. Customer type is determined by whether they have prior orders in your Shopify history. *** ## When to Use | Scenario | Action | | -------------------------- | -------------------------------------------------------------------------- | | New customer profitability | Calculate if first-time orders cover fulfillment costs | | CAC payback analysis | Include total fulfillment burden in acquisition cost calculation | | Segment comparison | Compare against returning customer fulfillment to identify efficiency gaps | | 3PL negotiations | Benchmark new customer fulfillment costs for volume discounts | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------ | | [Total Fulfillment Cost](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | Parent metric including all customer types | | [New Customer Shipping Cost](/reference/metrics/orders/fulfillment/new-customer-shipping-cost) | Shipping component of this total | | [New Customer Handling Cost](/reference/metrics/orders/fulfillment/new-customer-handling-cost) | Handling component of this total | | [New Customer Other Fulfillment Cost](/reference/metrics/orders/fulfillment/new-customer-other-fulfillment-cost) | Other component of this total | | [New Customer Contribution Margin](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) | Margin after fulfillment and other costs | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # New Customer Handling Cost: First-Time Buyer Fulfillment Fees Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/new-customer-handling-cost Track total handling costs for new customer orders. Understand first-time buyer fulfillment expenses including global and per-product handling fees. Total handling costs for orders placed by new (first-time) customers. ## Formula **New Customer Handling Cost** = **SUM** ( [**Handling Cost**](/reference/metrics/orders/fulfillment/handling-cost) ) **WHERE** [customer\_type = new\_customer](/data-dictionary/measures-and-dimensions#visitor-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | | [**Handling Cost**](/reference/metrics/orders/fulfillment/handling-cost) | Total handling costs including global handling fees and per-product handling fees | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to customers placing their first order with your store | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store processed **\$2,340** in handling costs for new customers last month: | Customer Type | Handling Cost | Orders | Per Order | | ------------------- | ------------- | ------- | ---------- | | New Customers | \$2,340 | 312 | \$7.50 | | Returning Customers | \$1,890 | 468 | \$4.04 | | **Total** | **\$4,230** | **780** | **\$5.42** | *** ## How It Works New Customer Handling Cost sums all handling fees from orders where the customer is making their first purchase. Handling costs include both global per-order fees and per-product handling charges configured in your cost settings. Customer type is determined by whether they have prior orders in your Shopify history. *** ## When to Use | Scenario | Action | | -------------------------- | --------------------------------------------------------------------- | | New customer profitability | Calculate if first-time orders are profitable after fulfillment costs | | CAC payback analysis | Include in total acquisition costs for new customers | | Pricing decisions | Ensure pricing covers higher handling costs for new buyers | | Segment comparison | Compare with returning customer handling to identify efficiency gaps | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Handling Cost](/reference/metrics/orders/fulfillment/handling-cost) | Parent metric including all customer types | | [Returning Customer Handling Cost](/reference/metrics/orders/fulfillment/returning-customer-handling-cost) | Counterpart for repeat buyers | | [Handling Cost Per Order](/reference/metrics/orders/fulfillment/handling-cost-per-order) | Average handling cost across all orders | | [Handling Cost %](/reference/metrics/orders/fulfillment/handling-cost-percent) | Handling as percentage of net revenue | | [Total Fulfillment Cost](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | Sum of shipping, handling, and other fulfillment | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # New Customer Other Fulfillment Cost: Custom Fulfillment Expenses Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/new-customer-other-fulfillment-cost Track user-defined fulfillment costs for new customer orders. Includes packaging, custom fees, and other fulfillment expenses for first-time buyers. User-defined fulfillment costs from order cost entries for new customer orders. ## Formula **New Customer Other Fulfillment Cost** = **SUM** ( [**Other Fulfillment Cost**](/reference/metrics/orders/fulfillment/other-fulfillment-cost) ) **WHERE** [customer\_type = new\_customer](/data-dictionary/measures-and-dimensions#visitor-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | | [**Other Fulfillment Cost**](/reference/metrics/orders/fulfillment/other-fulfillment-cost) | User-defined fulfillment costs from order cost entries with category Fulfillment | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to customers placing their first order with your store | | Metadata | | | --------------- | ----------------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store incurred **\$1,560** in custom fulfillment costs for new customers last month: | Customer Type | Other Fulfillment | Orders | Per Order | | ------------------- | ----------------- | ------- | ---------- | | New Customers | \$1,560 | 312 | \$5.00 | | Returning Customers | \$1,170 | 468 | \$2.50 | | **Total** | **\$2,730** | **780** | **\$3.50** | *** ## How It Works New Customer Other Fulfillment Cost sums all user-defined fulfillment expenses from orders where the customer is making their first purchase. These costs come from order cost entries you configure with the Fulfillment category—packaging materials, custom handling fees, and other fulfillment-related expenses beyond standard shipping and handling. *** ## When to Use | Scenario | Action | | -------------------------- | -------------------------------------------------------------------------- | | New customer profitability | Include in total costs when calculating first-order margins | | Custom packaging analysis | Track branded packaging or gift wrapping costs for new buyers | | Acquisition cost modeling | Add to CAC calculations for complete customer acquisition costs | | Segment comparison | Compare with returning customer costs to identify efficiency opportunities | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Other Fulfillment Cost](/reference/metrics/orders/fulfillment/other-fulfillment-cost) | Parent metric including all customer types | | [Returning Customer Other Fulfillment Cost](/reference/metrics/orders/fulfillment/returning-customer-other-fulfillment-cost) | Counterpart for repeat buyers | | [Total Fulfillment Cost](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | Sum of shipping, handling, and other fulfillment | | [New Customer Handling Cost](/reference/metrics/orders/fulfillment/new-customer-handling-cost) | Standard handling fees for new customers | | [New Customer Shipping Cost](/reference/metrics/orders/fulfillment/new-customer-shipping-cost) | Shipping expenses for new customers | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # New Customer Shipping Cost: First-Time Buyer Shipping Expenses Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/new-customer-shipping-cost Track total shipping costs for new customer orders. Understand first-time buyer fulfillment expenses to analyze acquisition profitability. Total shipping costs for orders placed by new (first-time) customers. ## Formula **New Customer Shipping Cost** = **SUM** ( [**Shipping Cost**](/reference/metrics/orders/fulfillment/shipping-cost) ) **WHERE** [customer\_type = new\_customer](/data-dictionary/measures-and-dimensions#visitor-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- | | [**Shipping Cost**](/reference/metrics/orders/fulfillment/shipping-cost) | Total shipping expenses incurred to fulfill orders | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to customers placing their first order with your store | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store spent **\$3,120** on shipping for new customers last month: | Customer Type | Shipping Cost | Orders | Per Order | | ------------------- | ------------- | --------- | ---------- | | New Customers | \$3,120 | 416 | \$7.50 | | Returning Customers | \$2,480 | 620 | \$4.00 | | **Total** | **\$5,600** | **1,036** | **\$5.41** | *** ## How It Works New Customer Shipping Cost sums shipping expenses from orders where the customer is making their first purchase. Shipping costs are applied based on rules you configure—flat rate, weight-based, zone-based, or carrier-calculated. Customer type is determined by whether they have prior orders in your Shopify history. *** ## When to Use | Scenario | Action | | -------------------------- | -------------------------------------------------------------------- | | New customer profitability | Calculate if first-time orders are profitable after shipping | | CAC payback analysis | Include in total acquisition costs for payback calculation | | Free shipping impact | Measure cost of free shipping promotions targeting new buyers | | Segment comparison | Compare with returning customer shipping to identify efficiency gaps | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------ | | [Shipping Cost](/reference/metrics/orders/fulfillment/shipping-cost) | Parent metric including all customer types | | [Returning Customer Shipping Cost](/reference/metrics/orders/fulfillment/returning-customer-shipping-cost) | Counterpart for repeat buyers | | [Shipping Cost Per Order](/reference/metrics/orders/fulfillment/shipping-cost-per-order) | Average shipping cost across all orders | | [New Customer Handling Cost](/reference/metrics/orders/fulfillment/new-customer-handling-cost) | Handling costs for new customers | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # Other Fulfillment Cost: Custom Fulfillment Expenses Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/other-fulfillment-cost Track user-defined fulfillment costs like packaging and custom fees. Learn how Other Fulfillment Cost contributes to total fulfillment and CM2 calculations. User-defined fulfillment costs from order cost entries, including packaging materials and other fulfillment fees. ## Formula **Other Fulfillment Cost** = **SUM** ( Order Cost Entries ) **WHERE** [category = Fulfillment](/data-dictionary/measures-and-dimensions) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------- | ------------------------------------------------------ | | **Order Cost Entries** | Cost line items you configure in Settings → Costs | | [**category = Fulfillment**](/data-dictionary/measures-and-dimensions) | Cost entries classified under the Fulfillment category | | Metadata | | | --------------- | ----------------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store incurred **\$2,730** in custom fulfillment costs last month across 780 orders: | Cost Type | Amount | Per Order | | --------------------------- | ----------- | ---------- | | Packaging Materials | \$1,560 | \$2.00 | | Gift Wrapping | \$624 | \$0.80 | | Custom Inserts | \$546 | \$0.70 | | **Total Other Fulfillment** | **\$2,730** | **\$3.50** | *** ## How It Works Other Fulfillment Cost sums all user-defined fulfillment expenses from your order cost entries. These are costs you configure with the Fulfillment category—packaging materials, branded inserts, gift wrapping fees, and other fulfillment-related expenses beyond standard shipping and handling. This metric combines with Shipping Cost and Handling Cost to form Total Fulfillment Cost. *** ## When to Use | Scenario | Action | | ------------------------------- | --------------------------------------------------------------- | | Packaging cost tracking | Monitor branded packaging and materials expenses | | Contribution margin analysis | Include as part of Total Fulfillment Cost for CM2 | | Custom fulfillment optimization | Identify opportunities to reduce non-shipping fulfillment costs | | Per-order profitability | Add to fulfillment burden when analyzing order-level margins | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [Total Fulfillment Cost](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | Sum of shipping, handling, and this metric | | [Shipping Cost](/reference/metrics/orders/fulfillment/shipping-cost) | Carrier expenses (separate from this metric) | | [Handling Cost](/reference/metrics/orders/fulfillment/handling-cost) | Warehouse fees (separate from this metric) | | [New Customer Other Fulfillment Cost](/reference/metrics/orders/fulfillment/new-customer-other-fulfillment-cost) | This metric filtered to first-time buyers | | [Returning Customer Other Fulfillment Cost](/reference/metrics/orders/fulfillment/returning-customer-other-fulfillment-cost) | This metric filtered to repeat buyers | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # Returning Customer Fulfillment Cost: Repeat Buyer Fulfillment Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/returning-customer-fulfillment-cost Track total fulfillment costs for returning customer orders. Includes shipping, handling, and other fulfillment fees for repeat buyers. Returning Customer Fulfillment Cost measures the total shipping, handling, and fulfillment costs for repeat buyer orders. ## Formula **RC Fulfillment Cost** = [**RC Shipping Cost**](/reference/metrics/orders/fulfillment/returning-customer-shipping-cost) + [**RC Handling Cost**](/reference/metrics/orders/fulfillment/returning-customer-handling-cost) + [**RC Other Fulfillment**](/reference/metrics/orders/fulfillment/returning-customer-other-fulfillment-cost) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | | [**RC Shipping Cost**](/reference/metrics/orders/fulfillment/returning-customer-shipping-cost) | Shipping costs for repeat buyer orders | | [**RC Handling Cost**](/reference/metrics/orders/fulfillment/returning-customer-handling-cost) | Handling costs for repeat buyer orders | | [**RC Other Fulfillment**](/reference/metrics/orders/fulfillment/returning-customer-other-fulfillment-cost) | Additional fulfillment costs for repeat buyers | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to repeat buyer orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your Shopify store incurred \$13,500 in fulfillment costs for 900 returning customer orders. | Cost Category | Value | | ------------------------ | ------------ | | RC Shipping Cost | \$9,000 | | RC Handling Cost | \$3,600 | | RC Other Fulfillment | \$900 | | **RC Total Fulfillment** | **\$13,500** | *** ## How It Works Returning Customer Fulfillment Cost combines all costs associated with getting products to repeat buyers. This includes carrier shipping fees, warehouse handling costs, packaging materials, and other fulfillment-related expenses. These costs are deducted from CM1 to calculate CM2. *** ## When to Use | Scenario | Action | | --------------------------------- | ----------------------------------------------------- | | Comparing NC vs RC fulfillment | Track if repeat buyers have lower fulfillment costs | | Evaluating loyalty shipping perks | Monitor impact of RC-specific shipping offers | | Optimizing fulfillment efficiency | Identify opportunities to reduce RC fulfillment costs | | Setting free shipping thresholds | Protect RC CM2 margins | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------------ | --------------------------------------- | | [New Customer Fulfillment Cost](/reference/metrics/orders/fulfillment/new-customer-fulfillment-cost) | Fulfillment costs for first-time buyers | | [Total Fulfillment Cost](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | All fulfillment costs | | [Returning Customer CM2 Per Order](/reference/metrics/orders/contribution-margin/returning-customer-cm2-per-order) | Margin after RC fulfillment | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # Returning Customer Handling Cost: Repeat Buyer Fulfillment Fees Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/returning-customer-handling-cost Track total handling costs for returning customer orders. Analyze repeat buyer fulfillment expenses to optimize pricing and profitability. Total handling costs for orders placed by returning (repeat) customers. ## Formula **Returning Customer Handling Cost** = **SUM** ( [**Handling Cost**](/reference/metrics/orders/fulfillment/handling-cost) ) **WHERE** [customer\_type = returning\_customer](/data-dictionary/measures-and-dimensions#visitor-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | | [**Handling Cost**](/reference/metrics/orders/fulfillment/handling-cost) | Total handling costs including global handling fees and per-product handling fees | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to customers who have placed at least one prior order | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store incurred **\$1,890** in handling costs for returning customers last month: | Customer Type | Handling Cost | Orders | Per Order | | ------------------- | ------------- | ------- | ---------- | | Returning Customers | \$1,890 | 468 | \$4.04 | | New Customers | \$2,340 | 312 | \$7.50 | | **Total** | **\$4,230** | **780** | **\$5.42** | *** ## How It Works Returning Customer Handling Cost sums all handling fees from orders where the customer has made at least one previous purchase. Handling costs include both global per-order fees and per-product handling charges configured in your cost settings. Customer type is determined by whether they have prior orders in your Shopify history. *** ## When to Use | Scenario | Action | | -------------------------- | ------------------------------------------------------------------------------------ | | Repeat buyer profitability | Evaluate if returning customer orders remain profitable after handling costs | | Loyalty program ROI | Factor handling costs into lifetime value calculations | | Operational efficiency | Compare with new customers to identify if repeat buyers have lower handling overhead | | Segment comparison | Compare with new customer handling to identify cost efficiency patterns | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Handling Cost](/reference/metrics/orders/fulfillment/handling-cost) | Parent metric including all customer types | | [New Customer Handling Cost](/reference/metrics/orders/fulfillment/new-customer-handling-cost) | Counterpart for first-time buyers | | [Handling Cost Per Order](/reference/metrics/orders/fulfillment/handling-cost-per-order) | Average handling cost across all orders | | [Handling Cost %](/reference/metrics/orders/fulfillment/handling-cost-percent) | Handling as percentage of net revenue | | [Total Fulfillment Cost](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | Sum of shipping, handling, and other fulfillment | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # Returning Customer Other Fulfillment Cost: Custom Fulfillment Expenses Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/returning-customer-other-fulfillment-cost Track user-defined fulfillment costs for returning customer orders. Includes packaging, custom fees, and other fulfillment expenses for repeat buyers. User-defined fulfillment costs from order cost entries for returning customer orders. ## Formula **Returning Customer Other Fulfillment Cost** = **SUM** ( [**Other Fulfillment Cost**](/reference/metrics/orders/fulfillment/other-fulfillment-cost) ) **WHERE** [customer\_type = returning\_customer](/data-dictionary/measures-and-dimensions#visitor-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | | [**Other Fulfillment Cost**](/reference/metrics/orders/fulfillment/other-fulfillment-cost) | User-defined fulfillment costs from order cost entries with category Fulfillment | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to customers who have placed at least one prior order | | Metadata | | | --------------- | ----------------------------------------------- | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store incurred **\$1,170** in custom fulfillment costs for returning customers last month: | Customer Type | Other Fulfillment | Orders | Per Order | | ------------------- | ----------------- | ------- | ---------- | | Returning Customers | \$1,170 | 468 | \$2.50 | | New Customers | \$1,560 | 312 | \$5.00 | | **Total** | **\$2,730** | **780** | **\$3.50** | *** ## How It Works Returning Customer Other Fulfillment Cost sums all user-defined fulfillment expenses from orders where the customer has purchased before. These costs come from order cost entries you configure with the Fulfillment category—packaging materials, custom handling fees, and other fulfillment-related expenses beyond standard shipping and handling. *** ## When to Use | Scenario | Action | | -------------------------------- | --------------------------------------------------------------------- | | Customer retention profitability | Include in total costs when calculating repeat-order margins | | Segment comparison | Compare with new customer costs to identify efficiency opportunities | | Contribution margin by segment | Track fulfillment costs separately for NC vs RC profitability | | LTV analysis | Include in lifetime value calculations for total customer cost burden | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Other Fulfillment Cost](/reference/metrics/orders/fulfillment/other-fulfillment-cost) | Parent metric including all customer types | | [New Customer Other Fulfillment Cost](/reference/metrics/orders/fulfillment/new-customer-other-fulfillment-cost) | Counterpart for first-time buyers | | [Total Fulfillment Cost](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | Sum of shipping, handling, and other fulfillment | | [Returning Customer Handling Cost](/reference/metrics/orders/fulfillment/returning-customer-handling-cost) | Standard handling fees for returning customers | | [Returning Customer Shipping Cost](/reference/metrics/orders/fulfillment/returning-customer-shipping-cost) | Shipping expenses for returning customers | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # Returning Customer Shipping Cost: Repeat Buyer Delivery Fees Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/returning-customer-shipping-cost Track total shipping costs for returning customer orders. Analyze repeat buyer delivery expenses to optimize fulfillment pricing and profitability. Total shipping costs for orders placed by returning (repeat) customers. ## Formula **Returning Customer Shipping Cost** = **SUM** ( [**Shipping Cost**](/reference/metrics/orders/fulfillment/shipping-cost) ) **WHERE** [customer\_type = returning\_customer](/data-dictionary/measures-and-dimensions#visitor-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | | [**Shipping Cost**](/reference/metrics/orders/fulfillment/shipping-cost) | Shipping costs from your configured cost rules | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#visitor-dimensions) | Filters to customers who have placed at least one prior order | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store incurred **\$3,120** in shipping costs for returning customers last month: | Customer Type | Shipping Cost | Orders | Per Order | | ------------------- | ------------- | ------- | ---------- | | Returning Customers | \$3,120 | 468 | \$6.67 | | New Customers | \$2,496 | 312 | \$8.00 | | **Total** | **\$5,616** | **780** | **\$7.20** | *** ## How It Works Returning Customer Shipping Cost sums all shipping expenses from orders where the customer has made at least one previous purchase. Shipping costs are calculated based on your configured cost rules in Upstack. Customer type is determined by whether they have prior orders in your Shopify history. *** ## When to Use | Scenario | Action | | -------------------------- | ----------------------------------------------------------------------- | | Repeat buyer profitability | Evaluate if returning customer orders remain profitable after shipping | | Loyalty program ROI | Factor shipping costs into lifetime value calculations | | Free shipping threshold | Determine if repeat buyers qualify for reduced shipping costs | | Segment comparison | Compare with new customer shipping to identify cost efficiency patterns | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Shipping Cost](/reference/metrics/orders/fulfillment/shipping-cost) | Parent metric including all customer types | | [New Customer Shipping Cost](/reference/metrics/orders/fulfillment/new-customer-shipping-cost) | Counterpart for first-time buyers | | [Shipping Cost Per Order](/reference/metrics/orders/fulfillment/shipping-cost-per-order) | Average shipping cost across all orders | | [Shipping Cost %](/reference/metrics/orders/fulfillment/shipping-cost-percent) | Shipping as percentage of net revenue | | [Total Fulfillment Cost](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | Sum of shipping, handling, and other fulfillment | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # Shipping Cost: Total Order Fulfillment Shipping Expense Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/shipping-cost Track Shipping Cost to measure total fulfillment shipping expenses across all orders — essential for contribution margin and profitability analysis. Shipping Cost measures the total shipping expenses incurred to fulfill orders, based on your configured shipping cost rules. ## Formula **Shipping Cost** = **SUM** ( [Shipping Cost per Order](/reference/metrics/orders/fulfillment/shipping-cost-per-order) ) ### Formula Components | Metric | Definition | | --------------------------- | ----------------------------------------------------------------------- | | **Shipping Cost per Order** | Individual shipping fees applied per order from your cost configuration | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store fulfilled **2,847 orders** in February with total shipping expenses of **\$14,235**, averaging **\$5.00** per order shipped. | Month | Orders | Shipping Cost | Per Order | | -------- | ------ | ------------- | --------- | | February | 2,847 | \$14,235 | \$5.00 | | March | 3,120 | \$15,288 | \$4.90 | *** ## How It Works Shipping Cost aggregates the shipping expenses from your cost configuration. These costs are applied to each order based on rules you define — flat rate, weight-based, zone-based, or carrier-calculated. The metric is deducted from revenue when calculating contribution margin. *** ## When to Use | Scenario | Action | | ---------------------------- | ----------------------------------------------------- | | Contribution margin analysis | Deduct from CM1 to calculate CM2 | | Carrier negotiation | Track trends to justify volume discounts | | Free shipping threshold | Compare shipping cost vs revenue lift from higher AOV | | Regional profitability | Segment by shipping zone to identify cost outliers | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | -------------------------------------------- | | [Shipping Cost Per Order](/reference/metrics/orders/fulfillment/shipping-cost-per-order) | Average shipping expense per order | | [Shipping Cost %](/reference/metrics/orders/fulfillment/shipping-cost-percent) | Shipping as percentage of net revenue | | [Total Fulfillment Cost](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | Combined shipping, handling, and fulfillment | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # Shipping Cost per Order: Average Carrier Cost Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/shipping-cost-per-order Track shipping cost per order for your Shopify store. Measure the average carrier shipping cost per order. Shipping Cost per Order measures the average carrier cost per order—the postage and freight expenses to deliver orders to customers. ## Formula **Shipping Cost per Order** = [**Total Shipping Cost**](/reference/metrics/orders/fulfillment/shipping-cost) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | ---------------------------- | | [**Total Shipping Cost**](/reference/metrics/orders/fulfillment/shipping-cost) | Total carrier shipping costs | | [**Orders**](/reference/metrics/orders/counts/orders) | Count of orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Costs](/sources/catalog/upstack-costs), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your Shopify store has **\$15,000** shipping costs across **1,000** orders. | Component | Value | Calculation | | --------------------------- | -------- | ---------------- | | Total Shipping Cost | \$15,000 | Carrier costs | | Orders | 1,000 | Order count | | **Shipping Cost per Order** | **\$15** | \$15,000 ÷ 1,000 | *** ## How It Works Shipping Cost per Order can be calculated from actual carrier costs (ShipStation, ShipBob integrations) or configured as an average in Cost Settings. *** ## When to Use | Scenario | Action | | ----------------------- | -------------------------------------- | | CM2 calculation | Shipping reduces CM1 to CM2 | | Free shipping threshold | Set thresholds based on shipping costs | | Carrier comparison | Compare costs across carriers | | Pricing decisions | Factor shipping into product pricing | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------ | | [Shipping Cost](/reference/metrics/orders/fulfillment/shipping-cost) | Total shipping costs | | [Shipping Revenue](/reference/metrics/orders/adjustments/shipping-revenue) | Revenue collected for shipping | | [Fulfillment Cost per Order](/reference/metrics/orders/fulfillment/fulfillment-cost-per-order) | Total fulfillment per order | | [Handling Cost per Order](/reference/metrics/orders/fulfillment/handling-cost-per-order) | Picking/packing per order | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # Shipping Cost %: Fulfillment Shipping as Share of Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/shipping-cost-percent Track Shipping Cost % to measure shipping expenses as a percentage of revenue — essential for profitability analysis and optimizing fulfillment economics. Shipping Cost % measures your shipping expenses as a share of net revenue, showing the fulfillment burden on your margins. ## Formula **Shipping Cost %** = ( [**Shipping Cost**](/reference/metrics/orders/fulfillment/shipping-cost) ÷ [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------ | -------------------------------------------------- | | [**Shipping Cost**](/reference/metrics/orders/fulfillment/shipping-cost) | Total shipping expenses from configured cost rules | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Your store generated **\$125,000** in net revenue last month, with **\$6,250** in shipping costs. | Period | Shipping Cost | Net Revenue | Shipping Cost % | | -------- | ------------- | ----------- | --------------- | | January | \$6,250 | \$125,000 | 5.0% | | February | \$7,150 | \$130,000 | 5.5% | | March | \$5,600 | \$140,000 | 4.0% | *** ## How It Works Shipping Cost % divides your total shipping expenses by net revenue. Unlike Shipping %, which tracks shipping revenue collected from customers, this metric tracks your actual fulfillment cost burden. A lower percentage indicates better shipping economics or improved carrier negotiations. *** ## When to Use | Scenario | Action | | ---------------------------- | ---------------------------------------------- | | Contribution margin analysis | Track CM2 impact from fulfillment costs | | Carrier negotiation | Benchmark trends before and after rate changes | | Free shipping strategy | Compare cost burden vs revenue impact | | Profitability optimization | Identify when shipping costs erode margins | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Shipping Cost](/reference/metrics/orders/fulfillment/shipping-cost) | Numerator — total shipping expenses | | [Shipping Cost Per Order](/reference/metrics/orders/fulfillment/shipping-cost-per-order) | Per-order shipping expense | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Denominator — revenue basis | | [Shipping %](/reference/metrics/orders/adjustments/shipping-percent) | Shipping revenue as % of total (customer-facing) | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # Total Fulfillment Cost: Combined Shipping and Handling Expenses Source: https://docs.upstackdata.com/reference/metrics/orders/fulfillment/total-fulfillment-cost Track Total Fulfillment Cost to measure combined shipping, handling, and fulfillment expenses — a key input for contribution margin analysis. Total Fulfillment Cost measures all expenses related to getting orders to customers—shipping, handling, and any additional user-defined fulfillment costs. ## Formula **Total Fulfillment Cost** = [**Shipping Cost**](/reference/metrics/orders/fulfillment/shipping-cost) + [**Handling Cost**](/reference/metrics/orders/fulfillment/handling-cost) + [**Other Fulfillment Cost**](/reference/metrics/orders/fulfillment/other-fulfillment-cost) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------ | | [**Shipping Cost**](/reference/metrics/orders/fulfillment/shipping-cost) | Total shipping expenses from your cost configuration | | [**Handling Cost**](/reference/metrics/orders/fulfillment/handling-cost) | Order handling expenses including warehouse and picking fees | | [**Other Fulfillment Cost**](/reference/metrics/orders/fulfillment/other-fulfillment-cost) | User-defined fulfillment costs from order cost entries | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Sum | *** ## Example Your store processed **3,215 orders** in March with total fulfillment costs of **\$22,505**: | Component | Amount | Share | | ----------------- | -------- | ----- | | Shipping Cost | \$16,075 | 71% | | Handling Cost | \$4,823 | 21% | | Other Fulfillment | \$1,607 | 8% | *** ## How It Works Total Fulfillment Cost aggregates all costs related to order fulfillment. Shipping and handling costs are calculated from your cost configuration rules. Other fulfillment costs come from user-defined entries with the Fulfillment category. This total is deducted from CM1 when calculating CM2 contribution margin. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------------ | | Contribution margin analysis | Deduct from CM1 to calculate CM2 | | Fulfillment optimization | Identify largest cost drivers across shipping, handling, and other | | 3PL cost comparison | Benchmark total fulfillment against third-party logistics quotes | | Profitability by channel | Compare fulfillment burden across acquisition sources | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ---------------------------------------------------------- | | [Shipping Cost](/reference/metrics/orders/fulfillment/shipping-cost) | Carrier and delivery expenses included in this total | | [Handling Cost](/reference/metrics/orders/fulfillment/handling-cost) | Warehouse and order processing fees included in this total | | [Other Fulfillment Cost](/reference/metrics/orders/fulfillment/other-fulfillment-cost) | User-defined fulfillment expenses included in this total | | [CM1](/reference/metrics/orders/contribution-margin/cm1) | Gross margin before fulfillment costs | | [CM2](/reference/metrics/orders/contribution-margin/cm2) | Margin after deducting fulfillment costs | [See all Fulfillment metrics →](/reference/metrics/orders/fulfillment) # Lifetime Value Metrics Source: https://docs.upstackdata.com/reference/metrics/orders/ltv Measure customer lifetime value, payback periods, and long-term profitability from Shopify order data. Lifetime Value metrics help you understand the long-term profitability of your customers and evaluate the sustainability of your acquisition strategy. ## Available Metrics | Metric | Description | | ---------------------------------------------------------- | ------------------------------------------------------------------- | | [LTV](/reference/metrics/orders/ltv/ltv) | Average total revenue per customer across all purchases | | [CLV 30](/reference/metrics/orders/ltv/clv-30) | Total revenue from customers within 30 days of first purchase | | [CLV 180](/reference/metrics/orders/ltv/clv-180) | Total revenue from customers within 180 days of first purchase | | [LTV:CAC](/reference/metrics/orders/ltv/ltv-cac) | Ratio of customer lifetime value to acquisition cost | | [Payback Days](/reference/metrics/orders/ltv/payback-days) | Days until cumulative contribution margin recovers acquisition cost | ## Why LTV Matters Understanding customer lifetime value allows you to: * **Set sustainable CAC targets** — Know how much you can afford to spend acquiring customers * **Evaluate channel quality** — Compare which acquisition channels produce the most valuable customers * **Plan cash flow** — Predict when acquisition investments will become profitable * **Optimize retention** — Focus on strategies that extend customer lifetime and increase repeat purchases # CLV 120: 120-Day Cohort Lifetime Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/clv-120 Track total cohort revenue within 120 days of first purchase. Use CLV 120 to evaluate acquisition quality and measure mid-term customer value. Total revenue generated by all customers within 120 days of their first purchase—a cohort-level sum, not a per-customer average. ## Formula **CLV 120** = **SUM** ( [Customer Revenue](/reference/metrics/orders/revenue/total-revenue) ) **WHERE** days since first order ≤ 120 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | [**Customer Revenue**](/reference/metrics/orders/revenue/total-revenue) | Total revenue from all customer orders | | [**days since first order ≤ 120**](/data-dictionary/measures-and-dimensions) | Filters to orders placed within 120 days of each customer's first purchase | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Customers acquired in January generated **\$188,160** in total CLV 120: | Cohort | Customers | First Orders | Repeat Orders (120d) | CLV 120 | | ------- | --------- | ------------ | -------------------- | ------------- | | January | 1,200 | \$72,000 | \$116,160 | **\$188,160** | This is the combined revenue from all 1,200 customers' orders within their first 120 days. To get the average per customer (\$156.80), divide by customer count—that metric is [LTV 120](/reference/metrics/orders/ltv/ltv-120). *** ## How It Works CLV 120 sums all revenue from each customer's orders placed within 120 days of their first purchase. This 4-month window captures 1-2 repeat purchase cycles for most e-commerce brands, providing a balance between short-term payback evaluation and longer-term value projection without waiting a full year. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------------ | | Evaluating acquisition spend | Compare CLV 120 to total acquisition cost for the cohort | | Measuring campaign ROI | Track total revenue generated from a specific campaign's customers | | Forecasting cohort value | Use CLV 120 growth curves to project longer-term revenue | | Budget allocation | Shift spend toward channels producing higher CLV 120 totals | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------ | ------------------------------------------------ | | [LTV 120](/reference/metrics/orders/ltv/ltv-120) | Average per-customer value (CLV 120 ÷ Customers) | | [CLV 90](/reference/metrics/orders/ltv/clv-90) | Shorter 90-day cohort value window | | [CLV 180](/reference/metrics/orders/ltv/clv-180) | Extended 180-day cohort value window | | [New Customers](/reference/metrics/orders/customers/new-customers) | Cohort customer count | [See all Lifetime Value metrics →](/reference/metrics/orders/ltv) # CLV 180: 180-Day Cohort Lifetime Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/clv-180 Track total revenue from all customers within 180 days of first purchase. Learn the formula, see examples, and measure 6-month cohort revenue performance. Total revenue generated by all customers within 180 days (6 months) of their first purchase. ## Formula **CLV 180** = **SUM** ( [Customer Revenue](/reference/metrics/orders/revenue/total-revenue) ) **WHERE** days since first order ≤ 180 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | [**Customer Revenue**](/reference/metrics/orders/revenue/total-revenue) | Total revenue from all customer orders | | [**days since first order ≤ 180**](/data-dictionary/measures-and-dimensions#cohort-filters) | Filters to orders placed within 180 days of each customer's first purchase | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Analyzing customers acquired in January shows **\$127,800** in CLV 180: | Cohort | Customers | First Orders | Repeat Orders (180d) | CLV 180 | | -------- | --------- | ------------ | -------------------- | --------- | | January | 1,200 | \$72,000 | \$55,800 | \$127,800 | | February | 1,450 | \$87,000 | \$71,050 | \$158,050 | | March | 1,100 | \$66,000 | \$52,800 | \$118,800 | The January cohort's CLV 180 of \$127,800 represents all revenue from those 1,200 customers within 6 months of their first purchase. *** ## How It Works CLV 180 sums all revenue from each customer's orders within 180 days of their first purchase. This includes their initial order plus any repeat purchases made in that window. Unlike [LTV 180](/reference/metrics/orders/ltv/ltv-180) which calculates an average per customer, CLV 180 shows the total dollar value generated by the entire cohort—making it ideal for measuring aggregate cohort performance and ROI. *** ## When to Use | Scenario | Action | | ------------------------------ | ----------------------------------------------------------------- | | Measuring cohort ROI | Compare CLV 180 against total acquisition spend for the cohort | | Budgeting acquisition spend | Set monthly acquisition budgets based on expected CLV 180 returns | | Evaluating marketing campaigns | Track CLV 180 for customers acquired during specific campaigns | | Forecasting 6-month revenue | Project total revenue from newly acquired customer cohorts | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | ----------------------------------------------------------- | | [CLV 90](/reference/metrics/orders/ltv/clv-90) | Shorter 90-day window for faster cohort performance signals | | [CLV 365](/reference/metrics/orders/ltv/clv-365) | Full-year total for complete cohort value assessment | | [LTV 180](/reference/metrics/orders/ltv/ltv-180) | Average per-customer value (same 180-day window) | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | Total revenue across all customers and timeframes | [See all Lifetime Value metrics →](/reference/metrics/orders/ltv) # CLV 30: 30-Day Cohort Lifetime Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/clv-30 Track total cohort revenue within 30 days of first purchase. Use CLV 30 to evaluate acquisition quality and project early customer value. Total revenue generated by all customers within 30 days of their first purchase—a cohort-level sum, not a per-customer average. ## Formula **CLV 30** = **SUM** ( [Customer Revenue](/reference/metrics/orders/revenue/total-revenue) ) **WHERE** days since first order ≤ 30 ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------- | ------------------------------------------------------------------------- | | [**Customer Revenue**](/reference/metrics/orders/revenue/total-revenue) | Total revenue from all customer orders | | [**days since first order ≤ 30**](/data-dictionary/measures-and-dimensions) | Filters to orders placed within 30 days of each customer's first purchase | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Customers acquired in January generated **\$89,400** in total CLV 30: | Cohort | Customers | First Orders | Repeat Orders (30d) | CLV 30 | | ------- | --------- | ------------ | ------------------- | ------------ | | January | 1,200 | \$72,000 | \$17,400 | **\$89,400** | This is the combined revenue from all 1,200 customers' orders within their first 30 days. To get the average per customer (\$74.50), divide by customer count—that metric is [LTV 30](/reference/metrics/orders/ltv/ltv-30). *** ## How It Works CLV 30 sums all revenue from each customer's orders placed within 30 days of their first purchase. This includes initial orders plus any repeat purchases in that window. The metric captures total cohort value rather than per-customer averages, making it useful for aggregate financial analysis. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------------ | | Evaluating acquisition spend | Compare CLV 30 to total acquisition cost for the cohort | | Measuring campaign ROI | Track total revenue generated from a specific campaign's customers | | Forecasting cohort value | Use CLV 30 growth curves to project longer-term revenue | | Budget allocation | Shift spend toward channels producing higher CLV 30 totals | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------ | ----------------------------------------------- | | [LTV 30](/reference/metrics/orders/ltv/ltv-30) | Average per-customer value (CLV 30 ÷ Customers) | | [CLV 60](/reference/metrics/orders/ltv/clv-60) | Extended 60-day cohort value window | | [CLV 90](/reference/metrics/orders/ltv/clv-90) | Extended 90-day cohort value window | | [New Customers](/reference/metrics/orders/customers/new-customers) | Cohort customer count | [See all Lifetime Value metrics →](/reference/metrics/orders/ltv) # CLV 365: 365-Day Cohort Lifetime Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/clv-365 Track total cohort revenue within 365 days of first purchase. Use CLV 365 to measure annual customer value and benchmark acquisition ROI. Total revenue generated by all customers within 365 days of their first purchase—a cohort-level sum, not a per-customer average. ## Formula **CLV 365** = **SUM** ( [Customer Revenue](/reference/metrics/orders/revenue/total-revenue) ) **WHERE** days since first order ≤ 365 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------- | | [**Customer Revenue**](/reference/metrics/orders/revenue/total-revenue) | Total revenue from all customer orders | | [**days since first order ≤ 365**](/data-dictionary/measures-and-dimensions) | Filters to orders placed within 365 days of each customer's first purchase | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Customers acquired in January generated **\$892,500** in total CLV 365: | Cohort | Customers | First Orders | Repeat Orders (365d) | CLV 365 | | ------- | --------- | ------------ | -------------------- | ------------- | | January | 2,500 | \$312,500 | \$580,000 | **\$892,500** | This is the combined revenue from all 2,500 customers' orders within their first year. To get the average per customer (\$357), divide by customer count—that metric is [LTV 365](/reference/metrics/orders/ltv/ltv-365). *** ## How It Works CLV 365 sums all revenue from each customer's orders placed within 365 days (one year) of their first purchase. This includes initial orders plus any repeat purchases in that window. The metric captures total annual cohort value rather than per-customer averages, making it the standard benchmark for yearly acquisition ROI. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------------- | | Evaluating annual acquisition ROI | Compare CLV 365 to total acquisition cost for the cohort | | Setting yearly revenue targets | Use CLV 365 trends to forecast annual cohort revenue | | Measuring campaign effectiveness | Track total yearly revenue generated from campaign customers | | Budget planning | Allocate acquisition spend based on projected CLV 365 returns | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------ | ------------------------------------------------ | | [LTV 365](/reference/metrics/orders/ltv/ltv-365) | Average per-customer value (CLV 365 ÷ Customers) | | [CLV 180](/reference/metrics/orders/ltv/clv-180) | Shorter 180-day cohort value window | | [CLV 90](/reference/metrics/orders/ltv/clv-90) | Shorter 90-day cohort value window | | [New Customers](/reference/metrics/orders/customers/new-customers) | Cohort customer count | [See all Lifetime Value metrics →](/reference/metrics/orders/ltv) # CLV 60: 60-Day Cohort Lifetime Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/clv-60 Track total cohort revenue within 60 days of first purchase. Use CLV 60 to evaluate acquisition quality and project early customer value. Total revenue generated by all customers within 60 days of their first purchase—a cohort-level sum, not a per-customer average. ## Formula **CLV 60** = **SUM** ( [Customer Revenue](/reference/metrics/orders/revenue/total-revenue) ) **WHERE** days since first order ≤ 60 ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------- | ------------------------------------------------------------------------- | | [**Customer Revenue**](/reference/metrics/orders/revenue/total-revenue) | Total revenue from all customer orders | | [**days since first order ≤ 60**](/data-dictionary/measures-and-dimensions) | Filters to orders placed within 60 days of each customer's first purchase | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Customers acquired in January generated **\$142,800** in total CLV 60: | Cohort | Customers | First Orders | Repeat Orders (60d) | CLV 60 | | ------- | --------- | ------------ | ------------------- | ------------- | | January | 1,200 | \$72,000 | \$70,800 | **\$142,800** | This is the combined revenue from all 1,200 customers' orders within their first 60 days. To get the average per customer (\$119.00), divide by customer count—that metric is [LTV 60](/reference/metrics/orders/ltv/ltv-60). *** ## How It Works CLV 60 sums all revenue from each customer's orders placed within 60 days of their first purchase. This includes initial orders plus any repeat purchases in that window. The metric captures total cohort value rather than per-customer averages, making it useful for aggregate financial analysis and comparing total returns across acquisition channels. *** ## When to Use | Scenario | Action | | ---------------------------- | ------------------------------------------------------------------ | | Evaluating acquisition spend | Compare CLV 60 to total acquisition cost for the cohort | | Measuring campaign ROI | Track total revenue generated from a specific campaign's customers | | Forecasting cohort value | Use CLV 60 growth curves to project longer-term revenue | | Budget allocation | Shift spend toward channels producing higher CLV 60 totals | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------ | ----------------------------------------------- | | [LTV 60](/reference/metrics/orders/ltv/ltv-60) | Average per-customer value (CLV 60 ÷ Customers) | | [CLV 30](/reference/metrics/orders/ltv/clv-30) | Shorter 30-day cohort value window | | [CLV 90](/reference/metrics/orders/ltv/clv-90) | Extended 90-day cohort value window | | [New Customers](/reference/metrics/orders/customers/new-customers) | Cohort customer count | [See all Lifetime Value metrics →](/reference/metrics/orders/ltv) # CLV 90: 90-Day Cohort Lifetime Value - Total Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/clv-90 Track total revenue from customers within 90 days of first purchase. Measure cohort-level revenue performance and early customer value realization. Total revenue generated by all customers within 90 days of their first purchase. ## Formula **CLV 90** = **SUM** ( [Customer Revenue](/reference/metrics/orders/revenue/total-revenue) ) **WHERE** days since first order ≤ 90 ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | | [**Customer Revenue**](/reference/metrics/orders/revenue/total-revenue) | Total revenue from all customer orders | | [**days since first order ≤ 90**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to orders placed within 90 days of each customer's first purchase | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your January cohort generated **\$153,000** in total revenue within their first 90 days: | Cohort | Customers | CLV 90 | | ------------- | --------- | --------- | | January 2024 | 1,200 | \$153,000 | | February 2024 | 980 | \$118,580 | | March 2024 | 1,450 | \$195,750 | The March cohort has the highest CLV 90 despite February having fewer customers—indicating stronger early purchase behavior in that acquisition period. *** ## How It Works CLV 90 sums all revenue from orders placed within 90 days of each customer's first purchase. Unlike [LTV 90](/reference/metrics/orders/ltv/ltv-90) which calculates the average per customer, CLV 90 shows the total dollar value realized from a cohort. This makes it useful for measuring aggregate revenue performance and forecasting cohort-level returns. *** ## When to Use | Scenario | Action | | ----------------------- | ------------------------------------------------------------ | | Cohort revenue tracking | Measure total revenue generated by acquisition cohorts | | Budget forecasting | Project aggregate revenue from recent customer cohorts | | Marketing ROI analysis | Compare total cohort revenue to total acquisition spend | | Cohort comparison | Identify which acquisition periods generate more total value | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | ------------------------------------------------- | | [LTV 90](/reference/metrics/orders/ltv/ltv-90) | Average revenue per customer (CLV 90 ÷ Customers) | | [CLV 180](/reference/metrics/orders/ltv/clv-180) | Extended 180-day total revenue window | | [CLV 365](/reference/metrics/orders/ltv/clv-365) | Full-year total cohort revenue | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | All-time total revenue (not cohort-windowed) | [See all LTV metrics →](/reference/metrics/orders/ltv) # Cohort AOV: Average Order Value by Customer Cohort Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/cohort-aov Track average order value for orders placed by customers in each cohort. Monitor Shopify AOV trends as cohorts mature over time. Average order value for orders placed by customers in the cohort, tracked over time as the cohort matures. ## Formula **Cohort AOV** = [**Cohort Revenue**](/reference/metrics/orders/ltv/cohort-net-revenue) ÷ **Cohort Order Count** ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------- | --------------------------------------------- | | [**Cohort Revenue**](/reference/metrics/orders/ltv/cohort-net-revenue) | Total revenue from orders by cohort customers | | **Cohort Order Count** | Number of orders placed by cohort customers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example AOV trends for a Q1 2024 cohort across their purchase history: | Order Number | Cohort AOV | Change | | ------------ | ---------- | ------ | | 1st Order | \$75 | — | | 2nd Order | \$82 | +9.3% | | 3rd Order | \$95 | +15.9% | | 4th+ Orders | \$110 | +15.8% | *** ## How It Works Cohort AOV tracks whether customers increase their order sizes over time. Many businesses see AOV grow as customers become more familiar with the product range. This metric helps distinguish between cohorts that grow basket sizes versus those that maintain flat spending patterns. Data is synced from your Shopify orders. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------ | | Tracking customer maturity | See if repeat customers spend more per order | | Evaluating cross-sell success | Rising AOV indicates effective upselling | | Comparing cohort quality | Some acquisition sources attract higher spenders | | Forecasting revenue | Combine with retention to project cohort value | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ------------------------------------ | | [Total AOV](/reference/metrics/orders/aov/total-aov) | Overall average order value | | [Cohort Revenue](/reference/metrics/orders/ltv/cohort-net-revenue) | Numerator of this calculation | | [Cohort Retention %](/reference/metrics/orders/ltv/cohort-retention-percent) | How many customers continue ordering | | [Units Per Order](/reference/metrics/orders/counts/units-per-order) | Basket size driver of AOV | [See all LTV metrics →](/reference/metrics/orders/ltv) # Cohort CM1: Gross Margin per Customer by Cohort Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/cohort-cm1 Track cumulative gross margin (CM1) per customer for each acquisition cohort. Measure Shopify profitability before fulfillment costs. Cumulative gross margin (net revenue minus COGS) per customer over time, showing profit before fulfillment and marketing costs. ## Formula **Cohort CM1** = **Cumulative CM1** ÷ [**Cohort Customers**](/reference/metrics/orders/ltv/cohort-customers) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------- | ---------------------------------------------------------- | | **Cumulative CM1** | Total gross margin (Net Revenue − COGS) from cohort orders | | [**Cohort Customers**](/reference/metrics/orders/ltv/cohort-customers) | Number of customers in the acquisition cohort | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Cumulative CM1 per customer for a January 2024 cohort: | Period | Cumulative CM1/Customer | Margin % | | -------- | ----------------------- | -------- | | Month 1 | \$28 | 35% | | Month 3 | \$48 | 36% | | Month 6 | \$72 | 37% | | Month 12 | \$105 | 38% | *** ## How It Works Cohort CM1 tracks the gross profit generated per customer after subtracting cost of goods sold. This reveals how much profit each cohort generates before fulfillment and marketing expenses. Higher CM1 cohorts can support greater acquisition spend. COGS is automatically pulled from your Shopify product data. *** ## When to Use | Scenario | Action | | ------------------------- | ----------------------------------------------------- | | Setting CAC targets | CM1 provides the ceiling for acquisition spend | | Evaluating product mix | Cohorts buying higher-margin products show better CM1 | | Forecasting profitability | Project profit contribution by cohort maturity | | Comparing to CM2 | Understand fulfillment impact on margins | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ------------------------------------------ | | [Cohort CM2](/reference/metrics/orders/ltv/cohort-cm2) | CM2 subtracts fulfillment costs from CM1 | | [Contribution Margin](/reference/metrics/orders/contribution-margin/contribution-margin) | Non-cohort contribution margin | | [COGS](/reference/metrics/orders/cogs/cogs) | The cost component subtracted from revenue | | [Cohort Net Revenue](/reference/metrics/orders/ltv/cohort-net-revenue) | Revenue before COGS deduction | [See all LTV metrics →](/reference/metrics/orders/ltv) # Cohort CM2: Contribution Margin After Fulfillment by Cohort Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/cohort-cm2 Track cumulative CM2 (after fulfillment costs) per customer by cohort. Measure Shopify profitability before marketing spend. Cumulative contribution margin after fulfillment and transaction costs per customer, showing profit before marketing spend. ## Formula **Cohort CM2** = **Cumulative CM2** ÷ [**Cohort Customers**](/reference/metrics/orders/ltv/cohort-customers) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------- | ------------------------------------------------------------- | | **Cumulative CM2** | Total CM2 (CM1 − Fulfillment − Transaction Costs) from cohort | | [**Cohort Customers**](/reference/metrics/orders/ltv/cohort-customers) | Number of customers in the acquisition cohort | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Cumulative CM2 per customer for a January 2024 cohort: | Period | Cumulative CM2/Customer | vs CM1 | | -------- | ----------------------- | ---------- | | Month 1 | \$18 | 64% of CM1 | | Month 3 | \$32 | 67% of CM1 | | Month 6 | \$50 | 69% of CM1 | | Month 12 | \$76 | 72% of CM1 | *** ## How It Works Cohort CM2 extends CM1 by also subtracting fulfillment costs (shipping, handling) and transaction costs (payment processing). This represents the profit available to cover marketing and fixed costs. As cohorts mature and order more, fulfillment efficiency often improves. Costs are configured in your Upstack Cost Settings. *** ## When to Use | Scenario | Action | | --------------------------------- | ---------------------------------------------------- | | Determining marketing budget | CM2 is the max you can spend on marketing profitably | | Evaluating fulfillment efficiency | Compare CM2 to CM1 across cohorts | | Calculating payback period | How long until CM2 covers CAC | | Comparing shipping strategies | Free shipping cohorts may have lower CM2 | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ----------------------------------------- | | [Cohort CM1](/reference/metrics/orders/ltv/cohort-cm1) | CM1 before fulfillment costs are deducted | | [Total Fulfillment Cost](/reference/metrics/orders/fulfillment/total-fulfillment-cost) | Costs subtracted from CM1 to get CM2 | | [CAC](/reference/metrics/orders/performance/cac) | Compare to CM2 for payback analysis | | [Contribution Margin](/reference/metrics/orders/contribution-margin/contribution-margin) | Non-cohort contribution margin | [See all LTV metrics →](/reference/metrics/orders/ltv) # Cohort Customers: Customer Count by Acquisition Period Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/cohort-customers Track the number of customers acquired in each cohort period. Understand acquisition volume trends for your Shopify store's LTV analysis. The number of customers who made their first purchase in the cohort period. ## Formula **Cohort Customers** = **COUNT** ( [Unique Customers](/reference/metrics/orders/customers/unique-customers) ) **WHERE** First Purchase in Cohort Period ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | ---------------------------------------------------------- | | [**Unique Customers**](/reference/metrics/orders/customers/unique-customers) | Distinct customers with at least one order | | **First Purchase** | Customer's initial order date determines cohort membership | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Count | *** ## Example Monthly customer acquisition cohorts for Q1 2024: | Cohort Period | Cohort Customers | Avg First Order Value | | ------------- | ---------------- | --------------------- | | January 2024 | 1,250 | \$85 | | February 2024 | 980 | \$92 | | March 2024 | 1,420 | \$78 | *** ## How It Works Cohort Customers counts the distinct customers who made their first-ever purchase during a specific period. This forms the denominator for all per-customer cohort metrics like LTV and cohort revenue. Each customer belongs to exactly one cohort based on their initial purchase date from your Shopify store. *** ## When to Use | Scenario | Action | | --------------------------- | ----------------------------------------------------- | | Normalizing cohort metrics | Divide revenue by cohort size for per-customer values | | Tracking acquisition growth | Monitor how customer acquisition scales over time | | Evaluating campaign reach | See how many new customers each campaign acquired | | Comparing cohort quality | Larger cohorts aren't always better—pair with LTV | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ------------------------------------ | | [New Customers](/reference/metrics/orders/customers/new-customers) | Non-cohort new customer count | | [Cohort Retention %](/reference/metrics/orders/ltv/cohort-retention-percent) | How many repurchase over time | | [Cohort Gross Revenue](/reference/metrics/orders/ltv/cohort-gross-revenue) | Total revenue from the cohort | | [CAC](/reference/metrics/orders/performance/cac) | Cost to acquire each cohort customer | [See all LTV metrics →](/reference/metrics/orders/ltv) # Cohort Gross Revenue: Cumulative Revenue by Customer Cohort Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/cohort-gross-revenue Track cumulative gross revenue generated by customer cohorts over time. Analyze LTV trends and identify high-value acquisition periods in your Shopify store. Cumulative gross revenue generated by a customer cohort over time, used for LTV analysis across acquisition periods. ## Formula **Cohort Gross Revenue** = **SUM** ( [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) ) **FOR** Customers in Cohort ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | ---------------------------------------------- | | [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Total revenue before refunds and discounts | | **Cohort** | Group of customers acquired in the same period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example A January 2024 cohort of 500 customers generates cumulative gross revenue tracked over time: | Period | Cumulative Gross Revenue | Per Customer | | -------- | ------------------------ | ------------ | | Month 1 | \$45,000 | \$90 | | Month 3 | \$67,500 | \$135 | | Month 6 | \$85,000 | \$170 | | Month 12 | \$112,500 | \$225 | *** ## How It Works Cohort Gross Revenue tracks the total gross revenue generated by all customers who made their first purchase during a specific period. The metric accumulates over time, showing how much value each acquisition cohort delivers as they mature. This is pulled directly from your Shopify order data. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------------- | | Comparing acquisition quality | Track which cohorts generate more revenue over time | | Evaluating marketing campaigns | See if certain campaigns attract higher-value customers | | Forecasting LTV | Project future revenue based on cohort maturity curves | | Identifying seasonality | Compare cohorts from different seasons or promotions | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------- | --------------------------------------- | | [Cohort Net Revenue](/reference/metrics/orders/ltv/cohort-net-revenue) | Net version after refunds and discounts | | [Cohort Customers](/reference/metrics/orders/ltv/cohort-customers) | Number of customers in the cohort | | [Cohort AOV](/reference/metrics/orders/ltv/cohort-aov) | Average order value within the cohort | | [LTV](/reference/metrics/orders/ltv/ltv) | Lifetime value per customer | [See all LTV metrics →](/reference/metrics/orders/ltv) # Cohort Net Revenue: Cumulative Net Revenue by Customer Cohort Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/cohort-net-revenue Track cumulative net revenue from customer cohorts after discounts and refunds. Measure true LTV by acquisition period for your Shopify store. Cumulative net revenue (after discounts and refunds) from a customer cohort over time. ## Formula **Cohort Net Revenue** = **SUM** ( [Net Revenue](/reference/metrics/orders/revenue/net-revenue) ) **FOR** Customers in Cohort ### Formula Components | Metric | Definition | | ---------------------------------------------------------------- | ---------------------------------------------- | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds | | **Cohort** | Group of customers acquired in the same period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example A Q1 2024 cohort of 1,000 customers generates cumulative net revenue over 12 months: | Period | Cumulative Net Revenue | Per Customer | | -------- | ---------------------- | ------------ | | Month 1 | \$72,000 | \$72 | | Month 3 | \$108,000 | \$108 | | Month 6 | \$144,000 | \$144 | | Month 12 | \$192,000 | \$192 | *** ## How It Works Cohort Net Revenue tracks the true revenue generated by customers acquired in a specific period, accounting for all discounts and refunds. Unlike gross revenue, this reflects the actual dollars retained from each cohort. This data syncs with your Shopify orders in real-time to provide accurate LTV measurement. *** ## When to Use | Scenario | Action | | -------------------------- | ----------------------------------------------------- | | Calculating true LTV | Use net revenue for accurate lifetime value | | Evaluating refund impact | Compare to gross to see revenue leakage | | Setting CAC targets | Base acquisition spend on actual retained revenue | | Analyzing discount effects | Understand how promotions affect cohort profitability | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | ----------------------------------------- | | [Cohort Gross Revenue](/reference/metrics/orders/ltv/cohort-gross-revenue) | Gross version before deductions | | [Cohort Customers](/reference/metrics/orders/ltv/cohort-customers) | Denominator for per-customer calculations | | [Cohort CM1](/reference/metrics/orders/ltv/cohort-cm1) | Profit margin version after COGS | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Non-cohort net revenue metric | [See all LTV metrics →](/reference/metrics/orders/ltv) # Cohort Retention %: Customer Retention Rate by Cohort Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/cohort-retention-percent Track what percentage of customers in each cohort make repeat purchases over time. Measure Shopify store retention to optimize LTV. The percentage of customers in a cohort who made an additional purchase in a subsequent period. ## Formula **Cohort Retention %** = ( [**Returning Cohort Customers**](/reference/metrics/orders/customers/returning-customers) ÷ [**Initial Cohort Customers**](/reference/metrics/orders/ltv/cohort-customers) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | ------------------------------------------------------------------ | | **Returning Cohort Customers** | Customers who made another purchase after their initial order | | [**Initial Cohort Customers**](/reference/metrics/orders/ltv/cohort-customers) | Total customers who made their first purchase in the cohort period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Retention rates for a January 2024 cohort of 1,000 customers: | Period After First Purchase | Returning Customers | Retention % | | --------------------------- | ------------------- | ----------- | | Month 2 | 180 | 18.0% | | Month 3 | 245 | 24.5% | | Month 6 | 320 | 32.0% | | Month 12 | 385 | 38.5% | *** ## How It Works Cohort Retention % measures what fraction of customers acquired in a given period come back to make additional purchases. Higher retention directly drives LTV since returning customers generate incremental revenue without additional acquisition cost. This is calculated from your Shopify transactions. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------------ | | Evaluating product-market fit | Strong retention signals customer satisfaction | | Comparing acquisition channels | Some sources attract more loyal customers | | Measuring retention programs | Track impact of loyalty or email campaigns | | Forecasting LTV | Higher retention correlates with higher lifetime value | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ----------------------------------------- | | [Cohort Customers](/reference/metrics/orders/ltv/cohort-customers) | The denominator (initial cohort size) | | [Repeat Rate](/reference/metrics/orders/performance/repeat-rate) | Overall (non-cohort) repeat purchase rate | | [Purchase Frequency](/reference/metrics/orders/performance/purchase-frequency) | How often retained customers buy | | [LTV](/reference/metrics/orders/ltv/ltv) | Retention is the primary driver of LTV | [See all LTV metrics →](/reference/metrics/orders/ltv) # LTV 120: 120-Day Customer Lifetime Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/ltv-120 Measure average revenue per customer within 120 days of their first purchase. Use LTV 120 to evaluate mid-term acquisition payback and retention trends. Average revenue generated per customer within 120 days (4 months) of their first purchase. ## Formula **LTV 120** = **Total Revenue (120d Window)** ÷ [**Customer Count**](/reference/metrics/orders/customers/unique-customers) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | ------------------------------------------------------ | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Sum of order revenue within 120 days of first purchase | | [**Customer Count**](/reference/metrics/orders/customers/unique-customers) | Number of customers in the cohort | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your January cohort of **850 new customers** generated **\$80,750** within their first 120 days: | Cohort | Customers | Revenue (120d) | LTV 120 | | -------- | --------- | -------------- | -------- | | January | 850 | \$80,750 | \$95.00 | | February | 920 | \$92,000 | \$100.00 | | March | 780 | \$70,200 | \$90.00 | *** ## How It Works LTV 120 calculates the average total revenue per customer within 120 days of their first purchase. Each customer's orders placed within this 120-day window are summed, then averaged across all customers in the cohort. The 4-month window captures mid-term repurchase behavior and provides a balance between short-term payback (LTV 90) and longer evaluation periods (LTV 180/365). *** ## When to Use | Scenario | Action | | ------------------------------ | ----------------------------------------------------------- | | Quarterly acquisition planning | Compare LTV 120 against CAC to evaluate 4-month payback | | Retention program evaluation | Track if loyalty programs improve LTV 120 vs baseline | | Subscription product analysis | Assess value from initial purchase plus first renewal cycle | | Seasonal cohort comparison | Compare cohorts acquired in different quarters | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | ---------------------------------------------------- | | [LTV 90](/reference/metrics/orders/ltv/ltv-90) | Shorter window (90 days) for faster payback analysis | | [LTV 180](/reference/metrics/orders/ltv/ltv-180) | Extended window (180 days) for longer-term value | | [LTV 365](/reference/metrics/orders/ltv/ltv-365) | Full-year customer value benchmark | | [AOV](/reference/metrics/orders/aov/total-aov) | Per-order value vs per-customer value | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | Revenue without time-window constraints | [See all LTV metrics →](/reference/metrics/orders/ltv) # LTV 180: 6-Month Customer Lifetime Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/ltv-180 Track customer lifetime value at 180 days post-acquisition. Measure 6-month revenue per customer to evaluate mid-term acquisition ROI. Average revenue generated per customer within 180 days (6 months) of their first purchase. ## Formula **LTV 180** = **Total Revenue (180d Window)** ÷ [**Customer Count**](/reference/metrics/orders/customers/unique-customers) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Sum of all order revenue within 180 days of each customer's first purchase | | **Customer Count** | Number of unique customers in the cohort who made their first purchase during the selected period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your Q1 cohort of **2,500 new customers** generated **\$312,500** within their first 180 days: | Cohort | Customers | Revenue (180d) | LTV 180 | | ------- | --------- | -------------- | -------- | | Q1 2024 | 2,500 | \$312,500 | \$125.00 | | Q2 2024 | 2,800 | \$378,000 | \$135.00 | | Q3 2024 | 2,200 | \$308,000 | \$140.00 | If your average CAC is \$45, the Q3 cohort's 6-month LTV:CAC ratio is **3.1×**—indicating healthy acquisition economics. *** ## How It Works LTV 180 calculates the average total revenue per customer within 180 days of their first purchase. This 6-month window captures two to three typical purchase cycles for most repeat-buy categories like consumables, skincare, and apparel—making it ideal for evaluating mid-term acquisition payback. *** ## When to Use | Scenario | Action | | ----------------------------------------- | ----------------------------------------------------------------------------------------- | | Evaluating acquisition channel efficiency | Compare LTV 180 across channels to identify which sources deliver the best mid-term value | | Setting CAC targets for paid media | Use LTV 180 to establish maximum acceptable acquisition costs with 6-month payback | | Measuring retention program impact | Track LTV 180 before and after launching loyalty or subscription programs | | Forecasting cohort revenue | Project 6-month revenue for new customer cohorts based on historical LTV 180 | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------ | -------------------------------------------------- | | [LTV 90](/reference/metrics/orders/ltv/ltv-90) | Shorter 90-day window for faster payback analysis | | [LTV 120](/reference/metrics/orders/ltv/ltv-120) | 4-month window between short and mid-term | | [LTV 365](/reference/metrics/orders/ltv/ltv-365) | Full-year LTV for long-term acquisition benchmarks | | [AOV](/reference/metrics/orders/aov/total-aov) | Per-order value vs per-customer value | [See all LTV metrics →](/reference/metrics/orders/ltv) # LTV 30: 30-Day Customer Lifetime Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/ltv-30 Measure average revenue per customer within 30 days of first purchase. Track early customer value to optimize acquisition spend and onboarding. Average revenue generated per customer within the first 30 days following their initial purchase. ## Formula **LTV 30** = **Total Revenue (30d Window)** ÷ [**Customer Count**](/reference/metrics/orders/customers/unique-customers) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | --------------------------------------------------------------------- | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Sum of order revenue within 30 days of first purchase | | [**Unique Customers**](/reference/metrics/orders/customers/unique-customers) | Count of customers who made their first purchase in the cohort period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Customers acquired in January generated **\$127.50** average revenue within their first 30 days: | Metric | Value | | -------------------- | ------------ | | Total 30-day Revenue | \$63,750 | | New Customers | 500 | | **LTV 30** | **\$127.50** | A customer who spent \$80 on their first order and \$60 on a second order within 30 days contributes \$140 to the numerator. Orders placed after day 30 are excluded from this metric. *** ## How It Works LTV 30 cohorts customers by their initial order date, then sums all revenue from orders placed within 30 days of that first purchase. The total is divided by the number of customers in the cohort. This 30-day window captures early repeat purchase behavior before longer-term retention patterns emerge. *** ## When to Use | Scenario | Action | | --------------------------- | ---------------------------------------------------------------------- | | Setting acquisition budgets | Compare LTV 30 to Customer Acquisition Cost (CAC) for payback planning | | Evaluating channel quality | Identify which sources bring customers with higher early value | | Measuring onboarding impact | Track whether welcome flows increase revenue in the first month | | Quick cohort comparison | Compare cohorts without waiting for longer LTV windows to mature | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------ | ---------------------------------------------------- | | [LTV 60](/reference/metrics/orders/ltv/ltv-60) | Extended 60-day lifetime value window | | [LTV 90](/reference/metrics/orders/ltv/ltv-90) | Extended 90-day lifetime value window | | [Total AOV](/reference/metrics/orders/aov/total-aov) | Per-order average vs. per-customer average over time | | [New Customers](/reference/metrics/orders/customers/new-customers) | First-time buyer count used in cohort denominators | [See all LTV metrics →](/reference/metrics/orders/ltv) # LTV 365: Full-Year Customer Lifetime Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/ltv-365 Track customer lifetime value at 365 days from first purchase. The standard full-year LTV benchmark for evaluating acquisition quality and long-term retention. Average revenue generated per customer within 365 days (1 year) of their first purchase—the standard full-year LTV benchmark. ## Formula **LTV 365** = **Total Revenue (365d Window)** ÷ [**Customer Count**](/reference/metrics/orders/customers/unique-customers) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Sum of order revenue within 365 days of first purchase | | [**Customer Count**](/reference/metrics/orders/customers/unique-customers) | Number of unique customers in the cohort who made their first purchase during the selected period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your January cohort of **500 new customers** generated **\$175,000** in total revenue within their first 365 days: | Cohort | Customers | Revenue (365d) | LTV 365 | | -------- | --------- | -------------- | -------- | | January | 500 | \$175,000 | \$350.00 | | February | 450 | \$144,000 | \$320.00 | | March | 525 | \$199,500 | \$380.00 | If your average CAC is \$75, the January cohort's full-year LTV:CAC ratio is **4.7×**—indicating strong acquisition economics with annual payback. *** ## How It Works LTV 365 calculates the average revenue per customer over their first full year. Customers are grouped by first purchase date (cohort), and their cumulative spending is tracked for 365 days. This provides the industry-standard timeframe to compare customer value across acquisition channels, campaigns, and seasons. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------------------------------------------------------ | | Annual acquisition benchmarking | Compare full-year LTV across Meta, Google, TikTok, and organic to identify highest-value sources | | Setting annual CAC targets | Use LTV 365 to determine sustainable acquisition costs with 12-month payback expectations | | Measuring retention program ROI | Track how loyalty and subscription programs affect long-term customer value | | Forecasting annual revenue | Project year-over-year revenue from recent cohorts using historical LTV 365 data | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------ | -------------------------------------------------------- | | [LTV 180](/reference/metrics/orders/ltv/ltv-180) | 6-month mid-term value for faster payback analysis | | [LTV 120](/reference/metrics/orders/ltv/ltv-120) | 4-month window for quarterly payback assessment | | [LTV 90](/reference/metrics/orders/ltv/ltv-90) | 90-day short-term value for quick acquisition evaluation | | [LTV](/reference/metrics/orders/ltv/ltv) | All-time lifetime value without time cap | | [LTV:CAC](/reference/metrics/orders/ltv/ltv-cac) | Ratio of customer value to acquisition cost | [See all LTV metrics →](/reference/metrics/orders/ltv) # LTV 60: 60-Day Customer Lifetime Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/ltv-60 Track 60-day customer lifetime value to measure early revenue per customer. Evaluate acquisition quality and predict long-term customer profitability. Average revenue generated per customer within 60 days of their first purchase. ## Formula **LTV 60** = **Total Revenue (60d Window)** ÷ [**Customer Count**](/reference/metrics/orders/customers/unique-customers) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | ----------------------------------------------------- | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Sum of order revenue within 60 days of first purchase | | **Customer Count** | Number of unique customers in the cohort | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Customers acquired in January generated **\$89.50** average LTV within 60 days: | Cohort | Customers | Total Revenue | LTV 60 | | ------------- | --------- | ------------- | ------- | | January 2024 | 1,247 | \$111,612 | \$89.50 | | February 2024 | 1,089 | \$103,455 | \$95.00 | | March 2024 | 1,456 | \$116,480 | \$80.00 | *** ## How It Works LTV 60 measures the cumulative revenue each customer generates within their first 60 days. Upstack tracks each customer's first order date, then sums all subsequent orders within the 60-day window. The metric is calculated per cohort (customers acquired in the same period). *** ## When to Use | Scenario | Action | | ------------------------------ | ---------------------------------------------------------- | | Evaluating acquisition quality | Compare 60-day LTV across marketing channels | | Predicting long-term value | Use LTV 60 as an early indicator for LTV 90/180/365 | | Setting CAC targets | Ensure customer acquisition cost stays below LTV 60 | | Optimizing retention efforts | Identify cohorts with low early LTV for targeted campaigns | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------ | ----------------------------------------------- | | [LTV 30](/reference/metrics/orders/ltv/ltv-30) | Shorter 30-day window for earliest value signal | | [LTV 90](/reference/metrics/orders/ltv/ltv-90) | Extended 90-day window for fuller picture | | [LTV 180](/reference/metrics/orders/ltv/ltv-180) | Captures mid-term customer value | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | The numerator summed across all customers | | [New Customers](/reference/metrics/orders/customers/new-customers) | Contributes to the cohort customer count | [See all Lifetime Value metrics →](/reference/metrics/orders/ltv) # LTV 90: 90-Day Customer Lifetime Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/ltv-90 Track customer lifetime value at 90 days from first purchase. Evaluate short-term payback on acquisition spend and optimize marketing ROI. Average revenue generated per customer within 90 days of their first purchase. ## Formula **LTV 90** = **Total Revenue (90d Window)** ÷ [**Customer Count**](/reference/metrics/orders/customers/unique-customers) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | ----------------------------------------------------- | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Sum of order revenue within 90 days of first purchase | | [**Customer Count**](/reference/metrics/orders/customers/unique-customers) | Number of customers in the cohort | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your January cohort of **1,200 new customers** generated **\$84,000** within their first 90 days: | Cohort | Customers | Revenue (90d) | LTV 90 | | -------- | --------- | ------------- | ------- | | January | 1,200 | \$84,000 | \$70.00 | | February | 1,450 | \$101,500 | \$70.00 | | March | 1,100 | \$88,000 | \$80.00 | *** ## How It Works LTV 90 calculates the average total revenue per customer within 90 days of their first purchase. Each customer's orders placed within this 90-day window are summed, then averaged across all customers in the cohort. This captures short-term repurchase behavior and helps evaluate acquisition payback. *** ## When to Use | Scenario | Action | | ------------------------------ | ------------------------------------------------------------------ | | Evaluating acquisition payback | Compare LTV 90 to Customer Acquisition Cost (CAC) | | Optimizing ad spend | Ensure LTV 90 exceeds blended CPA for sustainability | | Comparing cohort quality | Identify which acquisition channels produce higher-value customers | | Forecasting revenue | Project short-term revenue from new customer acquisition | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | ---------------------------------------------------- | | [LTV 60](/reference/metrics/orders/ltv/ltv-60) | Shorter window (60 days) for faster payback analysis | | [LTV 180](/reference/metrics/orders/ltv/ltv-180) | Extended window (180 days) for longer-term value | | [LTV 365](/reference/metrics/orders/ltv/ltv-365) | Full-year customer value | | [AOV](/reference/metrics/orders/aov/total-aov) | Per-order value vs per-customer value | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | Revenue without time-window constraints | [See all LTV metrics →](/reference/metrics/orders/ltv) # LTV:CAC: Customer Lifetime Value to Acquisition Cost Ratio Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/ltv-cac Track LTV:CAC ratio to measure customer acquisition efficiency. Compare lifetime value to acquisition cost and optimize marketing spend for sustainable growth. The ratio of customer lifetime value to customer acquisition cost—a healthy LTV:CAC is 3:1 or higher, meaning each customer generates \$3 in value for every \$1 spent acquiring them. ## Formula **LTV:CAC** = [**Customer Lifetime Value (LTV)**](/reference/metrics/orders/ltv/ltv-365) ÷ [**Customer Acquisition Cost (CAC)**](/reference/metrics/orders/performance/cac) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | | [**Customer Lifetime Value (LTV)**](/reference/metrics/orders/ltv/ltv-365) | Average total revenue generated per customer over 365 days from first purchase | | [**Customer Acquisition Cost (CAC)**](/reference/metrics/orders/performance/cac) | Total advertising spend divided by number of new customers acquired | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your store acquired **500 new customers** last quarter with a **\$45,000** marketing spend, and your customers have an average 365-day lifetime value of **\$270**: | Metric | Value | | ----------- | --------- | | LTV (365d) | \$270 | | CAC | \$90 | | **LTV:CAC** | **3.0:1** | A **3:1 LTV:CAC ratio** means each customer generates \$3 in lifetime value for every \$1 spent acquiring them—the industry benchmark for healthy unit economics. *** ## How It Works LTV:CAC divides the average revenue a customer generates over their lifetime (typically measured at 365 days) by the cost to acquire that customer. This ratio reveals whether your customer acquisition is sustainable—if you spend more to acquire customers than they're worth, growth becomes unprofitable. *** ## When to Use | Scenario | Action | | ------------------------------------- | ------------------------------------------------------------------------ | | Evaluating acquisition sustainability | Ensure LTV:CAC stays above 3:1 for healthy unit economics | | Setting marketing budgets | Use LTV:CAC to determine maximum sustainable CAC | | Comparing acquisition channels | Identify which channels produce highest-value customers relative to cost | | Forecasting profitability | Project long-term returns on customer acquisition investments | *** ## Interpretation Guide | LTV:CAC Ratio | Interpretation | | ------------- | ---------------------------------------------------------------- | | Below 1:1 | Unsustainable—spending more to acquire than customers generate | | 1:1 to 2:1 | Marginally profitable—limited room for overhead and reinvestment | | 3:1 | Industry benchmark—healthy acquisition economics | | Above 5:1 | May indicate underinvestment in growth opportunities | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------- | --------------------------------------------- | | [LTV 365d](/reference/metrics/orders/ltv/ltv-365) | Numerator—full-year customer lifetime value | | [CAC](/reference/metrics/orders/performance/cac) | Denominator—cost to acquire each new customer | | [LTV 90d](/reference/metrics/orders/ltv/ltv-90) | Short-term LTV for faster payback analysis | | [Payback Days](/reference/metrics/orders/ltv/payback-days) | Time to recover acquisition cost | [See all LTV metrics →](/reference/metrics/orders/ltv) # LTV CM1: Lifetime Gross Margin Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/ltv-cm1 Track LTV CM1 for your Shopify store. Measure the total gross margin a customer generates over their relationship with your brand. LTV CM1 measures the total gross margin (revenue minus COGS) a customer generates over their lifetime—their true value before fulfillment and other costs. ## Formula **LTV CM1** = [**Total CM1**](/reference/metrics/orders/contribution-margin/cm1) ÷ [**Customers**](/reference/metrics/orders/customers) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | ---------------------------- | | [**Total CM1**](/reference/metrics/orders/contribution-margin/cm1) | Gross margin from all orders | | [**Customers**](/reference/metrics/orders/customers/unique-customers) | Count of unique customers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Your Shopify store has **\$600,000** total CM1 from **10,000** customers. | Component | Value | Calculation | | ----------- | --------- | ------------------ | | Total CM1 | \$600,000 | Gross margin | | Customers | 10,000 | Unique buyers | | **LTV CM1** | **\$60** | \$600,000 ÷ 10,000 | *** ## How It Works LTV CM1 shows the gross margin contribution per customer before fulfillment and marketing costs. This is useful for understanding baseline customer value and setting acquisition cost targets. *** ## When to Use | Scenario | Action | | --------------------- | --------------------------------------- | | CAC targeting | Set max CPA based on LTV CM1 | | Product mix analysis | Higher-margin products increase LTV CM1 | | Customer segmentation | Compare LTV CM1 across segments | | Pricing decisions | Evaluate margin impact on LTV | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------- | ----------------------- | | [LTV](/reference/metrics/orders/ltv/ltv) | Lifetime revenue value | | [LTV CM2](/reference/metrics/orders/ltv/ltv-cm2) | After fulfillment costs | | [CM1](/reference/metrics/orders/contribution-margin/cm1) | Total gross margin | | [LTV:CAC](/reference/metrics/orders/ltv/ltv-cac) | Acquisition efficiency | [See all LTV metrics →](/reference/metrics/orders/ltv) # LTV CM2: Lifetime Variable Margin Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/ltv-cm2 Track LTV CM2 for your Shopify store. Measure the total variable margin a customer generates over their relationship with your brand. LTV CM2 measures the total variable margin (after COGS and fulfillment) a customer generates over their lifetime—their true contribution before marketing costs. ## Formula **LTV CM2** = [**Total CM2**](/reference/metrics/orders/contribution-margin/cm2) ÷ [**Customers**](/reference/metrics/orders/customers) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | ------------------------------- | | [**Total CM2**](/reference/metrics/orders/contribution-margin/cm2) | Variable margin from all orders | | [**Customers**](/reference/metrics/orders/customers/unique-customers) | Count of unique customers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Your Shopify store has **\$480,000** total CM2 from **10,000** customers. | Component | Value | Calculation | | ----------- | --------- | ------------------ | | Total CM2 | \$480,000 | Variable margin | | Customers | 10,000 | Unique buyers | | **LTV CM2** | **\$48** | \$480,000 ÷ 10,000 | *** ## How It Works LTV CM2 shows the variable margin contribution per customer after accounting for product costs and fulfillment. This is the most practical LTV measure for setting marketing budgets because it represents what's available to cover marketing costs. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------ | | Marketing budget | LTV CM2 sets max allowable CAC | | Channel profitability | Compare LTV CM2 to CAC by channel | | Cohort analysis | Track how LTV CM2 develops over time | | Unit economics | Core input to profitability models | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------- | ---------------------- | | [LTV CM1](/reference/metrics/orders/ltv/ltv-cm1) | Before fulfillment | | [LTV CM3](/reference/metrics/orders/ltv/ltv-cm3) | After marketing | | [CM2](/reference/metrics/orders/contribution-margin/cm2) | Total variable margin | | [LTV:CAC](/reference/metrics/orders/ltv/ltv-cac) | Acquisition efficiency | [See all LTV metrics →](/reference/metrics/orders/ltv) # LTV CM3: Lifetime Contribution Margin Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/ltv-cm3 Track LTV CM3 for your Shopify store. Measure the total contribution margin a customer generates over their relationship with your brand. LTV CM3 measures the total contribution margin (after all variable costs including marketing) a customer generates over their lifetime—their net contribution to profit. ## Formula **LTV CM3** = [**Total CM3**](/reference/metrics/orders/contribution-margin/contribution-margin) ÷ [**Customers**](/reference/metrics/orders/customers) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------- | ----------------------------------- | | [**Total CM3**](/reference/metrics/orders/contribution-margin/contribution-margin) | Contribution margin from all orders | | [**Customers**](/reference/metrics/orders/customers/unique-customers) | Count of unique customers | | Metadata | | | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Average | *** ## Example Your Shopify store has **\$300,000** total CM3 from **10,000** customers. | Component | Value | Calculation | | ----------- | --------- | ------------------- | | Total CM3 | \$300,000 | Contribution margin | | Customers | 10,000 | Unique buyers | | **LTV CM3** | **\$30** | \$300,000 ÷ 10,000 | *** ## How It Works LTV CM3 shows the contribution margin per customer after all variable costs, including ad spend. This represents the true variable profit per customer—what's left to cover fixed overhead. *** ## When to Use | Scenario | Action | | ------------------------- | -------------------------------------------- | | Break-even analysis | LTV CM3 must exceed 0 for profitability | | Fixed cost coverage | LTV CM3 × Customers must cover OPEX | | Customer quality | Compare LTV CM3 across acquisition sources | | Business model validation | Positive LTV CM3 means viable unit economics | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ------------------------- | | [LTV CM2](/reference/metrics/orders/ltv/ltv-cm2) | Before marketing costs | | [LTV CM4](/reference/metrics/orders/ltv/ltv-cm4) | After fixed costs | | [CM3](/reference/metrics/orders/contribution-margin/contribution-margin) | Total contribution margin | | [LTV:CAC](/reference/metrics/orders/ltv/ltv-cac) | Acquisition efficiency | [See all LTV metrics →](/reference/metrics/orders/ltv) # LTV CM4: Lifetime Operating Profit Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/ltv-cm4 Track LTV CM4 for your Shopify store. Measure the total operating profit a customer generates over their relationship with your brand. LTV CM4 measures the total operating profit (after all costs including OPEX) a customer generates over their lifetime—the true bottom-line value per customer. ## Formula **LTV CM4** = [**Total CM4**](/reference/metrics/orders/contribution-margin/cm4) ÷ [**Customers**](/reference/metrics/orders/customers) ### Formula Components | Metric | Definition | | --------------------------------------------------------------------- | -------------------------------- | | [**Total CM4**](/reference/metrics/orders/contribution-margin/cm4) | Operating profit from all orders | | [**Customers**](/reference/metrics/orders/customers/unique-customers) | Count of unique customers | | Metadata | | | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Average | *** ## Example Your Shopify store has **\$200,000** total CM4 from **10,000** customers. | Component | Value | Calculation | | ----------- | --------- | ------------------ | | Total CM4 | \$200,000 | Operating profit | | Customers | 10,000 | Unique buyers | | **LTV CM4** | **\$20** | \$200,000 ÷ 10,000 | *** ## How It Works LTV CM4 shows the fully-loaded profit per customer after all costs. This is the ultimate measure of customer value—how much each customer contributes to your bottom line. *** ## When to Use | Scenario | Action | | -------------------- | ----------------------------------------------------- | | Profitability | LTV CM4 > 0 means customers are profitable | | Valuation | LTV CM4 × Customers = enterprise value component | | Investment decisions | Determines sustainable growth rate | | Pricing strategy | Higher LTV CM4 enables lower prices or more marketing | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------- | ------------------------ | | [LTV CM3](/reference/metrics/orders/ltv/ltv-cm3) | Before fixed costs | | [CM4](/reference/metrics/orders/contribution-margin/cm4) | Total operating profit | | [LTV:CAC](/reference/metrics/orders/ltv/ltv-cac) | Acquisition efficiency | | [OPEX](/reference/metrics/orders/cogs/opex) | Fixed costs per customer | [See all LTV metrics →](/reference/metrics/orders/ltv) # New Customer LTV: First-Order Customer Lifetime Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/new-customer-ltv Track new customer LTV for your Shopify store. Measure the average first-order revenue from newly acquired customers. New Customer LTV measures the average revenue from first-time customer orders—the starting point for lifetime value before repeat purchases. ## Formula **New Customer LTV** = [**New Customer Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) ÷ [**New Customers**](/reference/metrics/orders/customers/new-customers) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------- | ------------------------------------ | | [**New Customer Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) | Revenue from first-time buyer orders | | [**New Customers**](/reference/metrics/orders/customers/new-customers) | Count of first-time buyers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your Shopify store generates **\$50,000** from **500** new customers. | Component | Value | Calculation | | -------------------- | --------- | ----------------- | | New Customer Revenue | \$50,000 | First-order sales | | New Customers | 500 | First-time buyers | | **New Customer LTV** | **\$100** | \$50,000 ÷ 500 | *** ## How It Works New Customer LTV represents the initial revenue value of acquired customers. This is the baseline—actual LTV grows as customers make repeat purchases over time. *** ## When to Use | Scenario | Action | | --------------------- | -------------------------------------------------- | | CAC payback | Compare to CPA for first-order payback | | Cohort analysis | Track how first-order value trends | | Acquisition targeting | Higher New Customer LTV indicates better targeting | | AOV optimization | Strategies to increase first-order value | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | --------------------------- | | [LTV](/reference/metrics/orders/ltv/ltv) | Full lifetime revenue value | | [New Customer AOV](/reference/metrics/orders/aov/new-customer-total-aov) | Same metric, different name | | [New Customer CPA](/reference/metrics/orders/performance/cac) | Cost to acquire | | [Returning Customer LTV](/reference/metrics/orders/ltv/returning-customer-ltv) | Repeat order value | [See all LTV metrics →](/reference/metrics/orders/ltv) # New Customer LTV CM1: First-Order Gross Margin Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/new-customer-ltv-cm1 Track new customer LTV CM1 for your Shopify store. Measure the average first-order gross margin from newly acquired customers. New Customer LTV CM1 measures the average gross margin from first-time customer orders—the starting margin value before fulfillment costs. ## Formula **New Customer LTV CM1** = [**New Customer CM1**](/reference/metrics/orders/contribution-margin/new-customer-cm1) ÷ [**New Customers**](/reference/metrics/orders/customers/new-customers) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ----------------------------------------- | | [**New Customer CM1**](/reference/metrics/orders/contribution-margin/new-customer-cm1) | Gross margin from first-time buyer orders | | [**New Customers**](/reference/metrics/orders/customers/new-customers) | Count of first-time buyers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Your Shopify store generates **\$30,000** CM1 from **500** new customers. | Component | Value | Calculation | | ------------------------ | -------- | ------------------------ | | New Customer CM1 | \$30,000 | First-order gross margin | | New Customers | 500 | First-time buyers | | **New Customer LTV CM1** | **\$60** | \$30,000 ÷ 500 | *** ## How It Works New Customer LTV CM1 shows the gross margin contribution from each acquired customer's first order. This helps set target CPAs based on first-order margin rather than revenue. *** ## When to Use | Scenario | Action | | ------------------ | --------------------------------------------------- | | CPA targeting | New Customer LTV CM1 sets margin-based CPA ceiling | | Product strategy | Higher-margin products improve New Customer LTV CM1 | | Channel comparison | Compare first-order margin by acquisition channel | | Margin analysis | Understand first-order economics | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | -------------------------- | | [LTV CM1](/reference/metrics/orders/ltv/ltv-cm1) | Full lifetime gross margin | | [New Customer LTV CM2](/reference/metrics/orders/ltv/new-customer-ltv-cm2) | After fulfillment | | [New Customer CM1](/reference/metrics/orders/contribution-margin/new-customer-cm1) | Total first-order margin | | [New Customer CPA](/reference/metrics/orders/performance/cac) | Acquisition cost | [See all LTV metrics →](/reference/metrics/orders/ltv) # New Customer LTV CM2: First-Order Variable Margin Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/new-customer-ltv-cm2 Track new customer LTV CM2 for your Shopify store. Measure the average first-order variable margin from newly acquired customers. New Customer LTV CM2 measures the average variable margin from first-time customer orders—what's available to cover marketing costs after COGS and fulfillment. ## Formula **New Customer LTV CM2** = [**New Customer CM2**](/reference/metrics/orders/contribution-margin/new-customer-cm2) ÷ [**New Customers**](/reference/metrics/orders/customers/new-customers) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | -------------------------------------------- | | [**New Customer CM2**](/reference/metrics/orders/contribution-margin/new-customer-cm2) | Variable margin from first-time buyer orders | | [**New Customers**](/reference/metrics/orders/customers/new-customers) | Count of first-time buyers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Your Shopify store generates **\$22,000** CM2 from **500** new customers. | Component | Value | Calculation | | ------------------------ | -------- | --------------------------- | | New Customer CM2 | \$22,000 | First-order variable margin | | New Customers | 500 | First-time buyers | | **New Customer LTV CM2** | **\$44** | \$22,000 ÷ 500 | *** ## How It Works New Customer LTV CM2 is the most practical first-order value for setting CPA targets. It shows what's left after COGS and fulfillment to cover acquisition costs. *** ## When to Use | Scenario | Action | | ------------------ | ------------------------------------------ | | Break-even CPA | New Customer LTV CM2 = max first-order CPA | | Marketing budget | Budget based on first-order margins | | Channel efficiency | Compare first-order CM2 by source | | Unit economics | Key input for acquisition models | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ----------------------------- | | [LTV CM2](/reference/metrics/orders/ltv/ltv-cm2) | Full lifetime variable margin | | [New Customer LTV CM1](/reference/metrics/orders/ltv/new-customer-ltv-cm1) | Before fulfillment | | [New Customer CM2](/reference/metrics/orders/contribution-margin/new-customer-cm2) | Total first-order CM2 | | [New Customer CPA](/reference/metrics/orders/performance/cac) | Acquisition cost | [See all LTV metrics →](/reference/metrics/orders/ltv) # Payback Days: Time to Recover Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/payback-days Measure how many days it takes to recover customer acquisition costs through cumulative contribution margin from Shopify order data. The number of days it takes for a customer cohort's cumulative contribution margin to equal the cost of acquiring them. ## Formula **Payback Days** = **Days** until [**Cumulative Contribution Margin**](/reference/metrics/orders/contribution-margin/contribution-margin) ≥ [**CAC**](/reference/metrics/orders/performance/cac) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | [**Cumulative Contribution Margin**](/reference/metrics/orders/contribution-margin/contribution-margin) | Running total of contribution margin generated by a customer cohort over time | | [**CAC**](/reference/metrics/orders/performance/cac) | Customer Acquisition Cost — total ad spend divided by new customers acquired | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number (Days) | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your January cohort of **500 new customers** cost **\$25,000** to acquire (CAC = \$50/customer): | Days Since Acquisition | Cumulative CM | % of CAC Recovered | | ---------------------- | ------------- | ------------------ | | 30 days | \$15,000 | 60% | | 60 days | \$22,500 | 90% | | **75 days** | **\$25,000** | **100%** | | 90 days | \$30,000 | 120% | **Payback Days = 75** — it took 75 days for this cohort to generate enough contribution margin to cover their acquisition cost. *** ## How It Works Payback Days tracks a customer cohort from acquisition through subsequent purchases, summing the contribution margin from each order. The metric identifies the day when cumulative contribution margin equals or exceeds the original customer acquisition cost. Shorter payback periods indicate healthier unit economics and faster reinvestment of marketing capital. *** ## When to Use | Scenario | Action | | --------------------------------- | ----------------------------------------------------------------- | | Evaluating acquisition efficiency | Compare payback across channels to find fastest-returning sources | | Cash flow planning | Shorter payback means faster capital recovery for reinvestment | | LTV:CAC analysis | Payback under 12 months typically indicates sustainable growth | | Seasonal planning | Account for longer payback during low-margin periods | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------ | | [Contribution Margin](/reference/metrics/orders/contribution-margin/contribution-margin) | The margin used to calculate cumulative payback | | [CAC](/reference/metrics/orders/performance/cac) | The acquisition cost that payback recovers | | [LTV](/reference/metrics/orders/ltv/ltv) | Lifetime value — compare to CAC alongside payback | | [LTV:CAC](/reference/metrics/orders/ltv/ltv-cac) | Ratio showing how many times over customers repay acquisition cost | [See all Lifetime Value metrics →](/reference/metrics/orders/ltv) # Returning Customer LTV: Repeat Order Customer Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/returning-customer-ltv Track returning customer LTV for your Shopify store. Measure the average repeat order revenue from existing customers. Returning Customer LTV measures the average revenue from repeat customer orders—the additional value customers generate after their first purchase. ## Formula **Returning Customer LTV** = [**Returning Customer Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) ÷ [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------- | -------------------------------- | | [**Returning Customer Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Revenue from repeat buyer orders | | [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) | Count of repeat buyers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your Shopify store generates **\$100,000** from **800** returning customers. | Component | Value | Calculation | | -------------------------- | --------- | ------------------ | | Returning Customer Revenue | \$100,000 | Repeat order sales | | Returning Customers | 800 | Repeat buyers | | **Returning Customer LTV** | **\$125** | \$100,000 ÷ 800 | *** ## How It Works Returning Customer LTV represents the average revenue from customers making repeat purchases. This demonstrates customer retention value and helps justify acquisition costs. *** ## When to Use | Scenario | Action | | --------------------- | ------------------------------------------- | | Retention value | Measure revenue from repeat purchases | | LTV projection | Combine with New Customer LTV for total LTV | | Retention investment | Justify spending on loyalty programs | | Customer segmentation | Identify high-value repeat customers | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | --------------------------- | | [LTV](/reference/metrics/orders/ltv/ltv) | Full lifetime revenue value | | [Returning Customer AOV](/reference/metrics/orders/aov/returning-customer-total-aov) | Per-order repeat value | | [New Customer LTV](/reference/metrics/orders/ltv/new-customer-ltv) | First-order value | | [Repeat Purchase Rate](/reference/metrics/funnel/conversions/repeat-purchase-rate) | Likelihood of returning | [See all LTV metrics →](/reference/metrics/orders/ltv) # Returning Customer LTV CM1: Repeat Order Gross Margin Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/returning-customer-ltv-cm1 Track returning customer LTV CM1 for your Shopify store. Measure the average repeat order gross margin from existing customers. Returning Customer LTV CM1 measures the average gross margin from repeat customer orders—the additional margin value from customer retention. ## Formula **Returning Customer LTV CM1** = [**Returning Customer CM1**](/reference/metrics/orders/contribution-margin/returning-customer-cm1) ÷ [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ------------------------------------- | | [**Returning Customer CM1**](/reference/metrics/orders/contribution-margin/returning-customer-cm1) | Gross margin from repeat buyer orders | | [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) | Count of repeat buyers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Your Shopify store generates **\$60,000** CM1 from **800** returning customers. | Component | Value | Calculation | | ------------------------------ | -------- | ------------------------- | | Returning Customer CM1 | \$60,000 | Repeat order gross margin | | Returning Customers | 800 | Repeat buyers | | **Returning Customer LTV CM1** | **\$75** | \$60,000 ÷ 800 | *** ## How It Works Returning Customer LTV CM1 shows the gross margin contribution from repeat purchases. Since these customers are already acquired, this margin is nearly pure profit contribution (minus fulfillment). *** ## When to Use | Scenario | Action | | ------------------ | ------------------------------------ | | Retention value | Measure margin from repeat purchases | | Loyalty investment | Justify retention program costs | | LTV projection | Build lifetime margin models | | Customer quality | Compare repeat margin by segment | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | -------------------------- | | [LTV CM1](/reference/metrics/orders/ltv/ltv-cm1) | Full lifetime gross margin | | [Returning Customer LTV CM2](/reference/metrics/orders/ltv/returning-customer-ltv-cm2) | After fulfillment | | [New Customer LTV CM1](/reference/metrics/orders/ltv/new-customer-ltv-cm1) | First-order margin | [See all LTV metrics →](/reference/metrics/orders/ltv) # Returning Customer LTV CM2: Repeat Order Variable Margin Value Source: https://docs.upstackdata.com/reference/metrics/orders/ltv/returning-customer-ltv-cm2 Track returning customer LTV CM2 for your Shopify store. Measure the average repeat order variable margin from existing customers. Returning Customer LTV CM2 measures the average variable margin from repeat customer orders—nearly pure profit since no acquisition cost is needed. ## Formula **Returning Customer LTV CM2** = [**Returning Customer CM2**](/reference/metrics/orders/contribution-margin/returning-customer-cm2) ÷ [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ---------------------------------------- | | [**Returning Customer CM2**](/reference/metrics/orders/contribution-margin/returning-customer-cm2) | Variable margin from repeat buyer orders | | [**Returning Customers**](/reference/metrics/orders/customers/returning-customers) | Count of repeat buyers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Your Shopify store generates **\$48,000** CM2 from **800** returning customers. | Component | Value | Calculation | | ------------------------------ | -------- | ---------------------------- | | Returning Customer CM2 | \$48,000 | Repeat order variable margin | | Returning Customers | 800 | Repeat buyers | | **Returning Customer LTV CM2** | **\$60** | \$48,000 ÷ 800 | *** ## How It Works Returning Customer LTV CM2 shows the variable margin from repeat purchases after COGS and fulfillment. Since no acquisition cost is needed, this is largely contribution to profit. *** ## When to Use | Scenario | Action | | ------------------- | ------------------------------------------ | | Retention ROI | Compare to retention marketing costs | | LTV modeling | Key input for full LTV calculations | | Segment analysis | Compare repeat value across customer types | | Loyalty program ROI | Measure margin uplift from programs | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ----------------------------- | | [LTV CM2](/reference/metrics/orders/ltv/ltv-cm2) | Full lifetime variable margin | | [Returning Customer LTV CM1](/reference/metrics/orders/ltv/returning-customer-ltv-cm1) | Before fulfillment | | [New Customer LTV CM2](/reference/metrics/orders/ltv/new-customer-ltv-cm2) | First-order margin | [See all LTV metrics →](/reference/metrics/orders/ltv) # Performance Metrics Source: https://docs.upstackdata.com/reference/metrics/orders/performance Order performance and efficiency metrics. Cost per unit, operational efficiency, and performance ratios from Shopify order data. Performance metrics help you understand operational efficiency at the unit level. These metrics focus on per-item costs and ratios that reveal how efficiently you're selling products. ## Available Metrics Average cost of goods sold per unit. ## Key Insights | Metric | Use Case | | -------------------------------------------------------------------- | --------------------------------------------------- | | [Cost Per Unit](/reference/metrics/orders/performance/cost-per-unit) | Track per-item profitability and pricing efficiency | ## Data Source Performance metrics are calculated from [Shopify](/sources/catalog/shopify) order data, specifically using cost of goods sold and unit quantities from your order history. # Average Days Between Orders: Purchase Frequency Metric Source: https://docs.upstackdata.com/reference/metrics/orders/performance/average-days-between-orders Measure how many days pass between repeat purchases. Track customer buying frequency to optimize retention campaigns and predict reorder timing. The average number of days between a customer's consecutive orders. ## Formula **Average Days Between Orders** = **Sum of Days Between Consecutive Orders** ÷ **Number of Repeat Purchase Intervals** ### Formula Components | Metric | Definition | | ----------------------------- | -------------------------------------------------------------- | | **Days Between Orders** | Calendar days from one order to the next for the same customer | | **Repeat Purchase Intervals** | Count of order pairs (2nd order, 3rd order, etc.) | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your store's customers place repeat orders an average of **32 days** apart: | Customer Segment | Avg Days | Interpretation | | ------------------- | -------- | -------------------------- | | Subscription buyers | 28 days | Regular monthly cycle | | Consumables | 35 days | Product lifespan \~5 weeks | | Apparel | 62 days | Seasonal buying patterns | *** ## How It Works Average Days Between Orders calculates the time gap between each customer's consecutive purchases, then averages across all repeat purchase intervals in your selected period. Only customers with 2+ orders contribute to this metric—first-time buyers are excluded since they have no interval to measure. *** ## When to Use | Scenario | Action | | ---------------------- | ---------------------------------------------------------- | | Setting email cadence | Time win-back flows to trigger before the average interval | | Subscription pricing | Set billing cycles to match natural purchase frequency | | Inventory planning | Forecast demand based on typical reorder timing | | Retention benchmarking | Compare segments to identify high-frequency cohorts | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | --------------------------------------------------------- | | [Purchase Frequency](/reference/metrics/orders/performance/purchase-frequency) | Orders per customer (inverse relationship) | | [Returning Customer %](/reference/metrics/orders/customers/returning-customer-percent) | % of customers who reorder (prerequisite for this metric) | | [LTV 365](/reference/metrics/orders/ltv/ltv-365) | Shorter intervals often correlate with higher LTV | [See all Performance metrics →](/reference/metrics/orders/performance) # CAC: Customer Acquisition Cost Source: https://docs.upstackdata.com/reference/metrics/orders/performance/cac Track your Customer Acquisition Cost (CAC) to understand how much you spend to acquire each new customer. Optimize marketing efficiency and improve profitability. The average cost to acquire a new customer, calculated by dividing total ad spend by the number of new customers. ## Formula **Customer Acquisition Cost** = [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**New Customers**](/reference/metrics/orders/customers/new-customers) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------- | ---------------------------------------------------------- | | [**Blended Spend**](/reference/metrics/advertising/blended/blended-spend) | Sum of advertising costs across all connected ad platforms | | [**New Customers**](/reference/metrics/orders/customers/new-customers) | Count of unique first-time buyers in the period | | Metadata | | | --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads), [TikTok Ads](/sources/catalog/tiktok), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store acquired **312 new customers** in January with a total ad spend of **\$15,600**: | Metric | Value | | -------------- | ----------- | | Total Ad Spend | \$15,600 | | New Customers | 312 | | **CAC** | **\$50.00** | A \$50 CAC means you spend \$50 on average to acquire each new customer. *** ## How It Works CAC divides your total advertising spend by the number of unique new customers acquired during the period. Unlike CPA (Cost Per Acquisition), which measures cost per order, CAC focuses specifically on customer-level acquisition—counting each person once regardless of how many orders they place. *** ## When to Use | Scenario | Action | | --------------------------------- | ---------------------------------------------------------------------------- | | Evaluating acquisition efficiency | Compare CAC to customer lifetime value (LTV) | | Budget planning | Set target CAC based on first-order margins | | Channel comparison | Identify which platforms acquire customers most efficiently | | Profitability analysis | Ensure CAC stays below first-order profit to maintain healthy unit economics | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [LTV](/reference/metrics/orders/ltv/ltv) | Customer lifetime value—compare to CAC for payback analysis | | [Blended CPA](/reference/metrics/advertising/blended/blended-cost-per-acquisition) | Cost per conversion (orders, not customers) | | [New Customers](/reference/metrics/orders/customers/new-customers) | Denominator for CAC calculation | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | Numerator for CAC calculation | [See all Performance metrics →](/reference/metrics/orders/performance) # CM1 MER: Gross Margin Marketing Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/cm1-mer Track CM1 MER for your Shopify store. Measure gross margin as a percentage of ad spend. CM1 MER measures gross margin as a percentage of ad spend—how much gross profit your advertising budget generates. ## Formula **CM1 MER** = ( [**CM1**](/reference/metrics/orders/contribution-margin/cm1) ÷ [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ) × 100 ### Formula Components | Metric | Definition | | --------------------------------------------------------------------------- | ------------------------------------------- | | [**CM1 (Gross Margin)**](/reference/metrics/orders/contribution-margin/cm1) | Profit after COGS | | **Total Ad Spend** | Combined advertising spend across platforms | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$75,000** CM1 and spent **\$25,000** on advertising. | Component | Value | Calculation | | ----------- | -------- | ------------------------- | | CM1 | \$75,000 | Gross margin | | Ad Spend | \$25,000 | Advertising cost | | **CM1 MER** | **300%** | \$75,000 ÷ \$25,000 × 100 | *** ## How It Works CM1 MER shows gross margin relative to ad spend. A 300% CM1 MER means your ads generate 3x their cost in gross margin. Higher is better—it indicates more margin available to cover fulfillment, marketing, and fixed costs. *** ## When to Use | Scenario | Action | | --------------------------------- | ---------------------------------------------------- | | Measuring gross margin efficiency | Track CM1 MER for product-level efficiency | | Setting targets | CM1 MER should exceed 100% for positive gross margin | | Comparing campaigns | Identify campaigns with highest CM1 MER | | Product analysis | See which products drive best CM1 MER | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------- | -------------------------------------------------- | | [CM1 ROAS](/reference/metrics/orders/performance/cm1-roas) | CM1 per ad dollar (same concept, different format) | | [CM2 MER](/reference/metrics/orders/performance/cm2-mer) | Variable margin as % of ad spend | | [MER](/reference/metrics/orders/performance/mer) | Ad spend as % of revenue | [See all Performance metrics →](/reference/metrics/orders/performance) # CM1 ROAS: Gross Margin Return on Ad Spend Source: https://docs.upstackdata.com/reference/metrics/orders/performance/cm1-roas Track your gross margin return on ad spend. Measure how much CM1 profit you generate for every dollar spent on advertising. CM1 ROAS measures how much gross margin (revenue minus COGS) you earn for every dollar spent on advertising. ## Formula **CM1 ROAS** = [**CM1**](/reference/metrics/orders/contribution-margin/cm1) ÷ [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | ------------------------------------------------------------------ | | [**CM1**](/reference/metrics/orders/contribution-margin/contribution-margin) | Gross margin after subtracting cost of goods sold from net revenue | | **Total Ad Spend** | Combined advertising spend across all connected platforms | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Multiplier | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generated **\$150,000** in CM1 (gross margin) while spending **\$50,000** on advertising. | Metric | Value | Calculation | | ------------------ | --------- | -------------------- | | CM1 (Gross Margin) | \$150,000 | Net Revenue − COGS | | Total Ad Spend | \$50,000 | All ad platforms | | CM1 ROAS | 3.0x | \$150,000 ÷ \$50,000 | A CM1 ROAS of 3.0x means you earn \$3 in gross margin for every \$1 spent on advertising. *** ## How It Works CM1 ROAS calculates the ratio of gross margin to advertising spend. Unlike revenue-based ROAS, it accounts for product costs, giving you a more accurate picture of advertising profitability at the gross margin level. *** ## When to Use | Scenario | Action | | ------------------------------------------------ | ------------------------------------------------------------ | | Evaluating ad profitability | Use CM1 ROAS to see actual profit contribution per ad dollar | | Comparing campaigns with different product mixes | CM1 ROAS normalizes for COGS differences | | Setting advertising budgets | Target a minimum CM1 ROAS to ensure gross margin coverage | | Assessing high-COGS products | Understand if ads are profitable after product costs | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------- | ------------------------------------------------------ | | [CM2 ROAS](/reference/metrics/orders/performance/cm2-roas) | Includes fulfillment costs in the margin calculation | | [CM3 ROAS](/reference/metrics/orders/performance/cm3-roas) | Includes all marketing costs in the margin calculation | | [ROAS](/reference/metrics/orders/performance/roas) | Revenue-based return, doesn't account for costs | | [Contribution Margin](/reference/metrics/orders/contribution-margin/contribution-margin) | The numerator in this calculation | [See all Performance metrics →](/reference/metrics/orders/performance) # CM2 MER: Variable Margin Marketing Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/cm2-mer Track CM2 MER for your Shopify store. Measure variable margin as a percentage of ad spend. CM2 MER measures variable margin (after fulfillment) as a percentage of ad spend—how much margin your advertising budget generates. ## Formula **CM2 MER** = ( [**CM2**](/reference/metrics/orders/contribution-margin/cm2) ÷ [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ----------------------------------------------------- | | [**CM2 (After Fulfillment)**](/reference/metrics/orders/contribution-margin/cm2) | Profit after COGS, fulfillment, and transaction costs | | **Total Ad Spend** | Combined advertising spend across platforms | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$62,500** CM2 and spent **\$25,000** on advertising. | Component | Value | Calculation | | ----------- | -------- | ------------------------- | | CM2 | \$62,500 | Variable margin | | Ad Spend | \$25,000 | Advertising cost | | **CM2 MER** | **250%** | \$62,500 ÷ \$25,000 × 100 | *** ## How It Works CM2 MER shows variable margin relative to ad spend. A 250% CM2 MER means your ads generate 2.5x their cost in variable margin. This margin must cover marketing costs and fixed expenses for true profitability. *** ## When to Use | Scenario | Action | | ------------------------------------ | ----------------------------------------------------- | | Measuring variable margin efficiency | Track CM2 MER for cost-aware efficiency | | Setting targets | CM2 MER should exceed 100% + your marketing cost rate | | Comparing campaigns | Identify campaigns with highest CM2 MER | | Budget planning | Use CM2 MER to determine sustainable spend | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------- | -------------------------------------------------- | | [CM2 ROAS](/reference/metrics/orders/performance/cm2-roas) | CM2 per ad dollar (same concept, different format) | | [CM1 MER](/reference/metrics/orders/performance/cm1-mer) | Gross margin as % of ad spend | | [CM3 MER](/reference/metrics/orders/performance/cm3-mer) | Contribution margin as % of ad spend | [See all Performance metrics →](/reference/metrics/orders/performance) # CM2 ROAS: Variable Margin Return on Ad Spend Source: https://docs.upstackdata.com/reference/metrics/orders/performance/cm2-roas Track CM2 ROAS for your Shopify store. Measure variable margin return per dollar of ad spend. CM2 ROAS measures how much variable margin (after fulfillment) you earn for every dollar spent on advertising. ## Formula **CM2 ROAS** = [**CM2**](/reference/metrics/orders/contribution-margin/cm2) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ----------------------------------------------------- | | [**CM2 (After Fulfillment)**](/reference/metrics/orders/contribution-margin/cm2) | Profit after COGS, fulfillment, and transaction costs | | **Ad Spend** | Total advertising spend across platforms | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Multiplier | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$62,500** CM2 and spent **\$25,000** on advertising. | Component | Value | Calculation | | ------------ | -------- | ------------------- | | CM2 | \$62,500 | Variable margin | | Ad Spend | \$25,000 | Advertising cost | | **CM2 ROAS** | **2.5x** | \$62,500 ÷ \$25,000 | *** ## How It Works CM2 ROAS shows how much variable margin your advertising generates. A 2.5x CM2 ROAS means every dollar of ad spend generates \$2.50 in variable margin. This margin must cover marketing costs and fixed expenses to be profitable. *** ## When to Use | Scenario | Action | | ----------------------- | ------------------------------------------------- | | Measuring ad efficiency | Track CM2 ROAS for margin-aware efficiency | | Setting ROAS targets | CM2 ROAS > 1x means ads generate positive margin | | Comparing campaigns | Identify which campaigns deliver highest CM2 ROAS | | Budget allocation | Shift spend toward higher CM2 ROAS channels | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------- | --------------------------------- | | [CM1 ROAS](/reference/metrics/orders/performance/cm1-roas) | Gross margin per ad dollar | | [CM3 ROAS](/reference/metrics/orders/performance/cm3-roas) | Contribution margin per ad dollar | | [ROAS](/reference/metrics/orders/performance/roas) | Revenue per ad dollar | [See all Performance metrics →](/reference/metrics/orders/performance) # CM3 MER: Contribution Margin Marketing Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/cm3-mer Track CM3 MER for your Shopify store. Measure contribution margin as a percentage of ad spend. CM3 MER measures contribution margin (after marketing) as a percentage of ad spend—how much profit your advertising generates after all variable costs. ## Formula **CM3 MER** = ( [**CM3**](/reference/metrics/orders/contribution-margin/cm3-per-order) ÷ [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | --------------------------------------------- | | [**CM3 (Contribution Margin)**](/reference/metrics/orders/contribution-margin/contribution-margin) | Profit after COGS, fulfillment, and marketing | | **Total Ad Spend** | Combined advertising spend across platforms | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$42,500** CM3 and spent **\$25,000** on advertising. | Component | Value | Calculation | | ----------- | -------- | ------------------------- | | CM3 | \$42,500 | Contribution margin | | Ad Spend | \$25,000 | Advertising cost | | **CM3 MER** | **170%** | \$42,500 ÷ \$25,000 × 100 | *** ## How It Works CM3 MER shows contribution margin relative to ad spend. A 170% CM3 MER means your ads generate 1.7x their cost in contribution margin. This margin covers agency fees, OPEX, and other fixed costs. *** ## When to Use | Scenario | Action | | -------------------------- | -------------------------------------------------- | | Measuring ad profitability | CM3 MER > 100% means positive contribution margin | | Setting efficiency targets | Track CM3 MER against your fixed cost requirements | | Campaign optimization | Focus spend on campaigns with highest CM3 MER | | Profitability modeling | Use CM3 MER for break-even analysis | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------- | -------------------------------------------------- | | [CM3 ROAS](/reference/metrics/orders/performance/cm3-roas) | CM3 per ad dollar (same concept, different format) | | [CM2 MER](/reference/metrics/orders/performance/cm2-mer) | Variable margin as % of ad spend | | [CM4 MER](/reference/metrics/orders/performance/cm4-mer) | Operating profit as % of ad spend | [See all Performance metrics →](/reference/metrics/orders/performance) # CM3 ROAS: Contribution Margin Return on Ad Spend Source: https://docs.upstackdata.com/reference/metrics/orders/performance/cm3-roas Track CM3 ROAS for your Shopify store. Measure contribution margin return per dollar of ad spend. CM3 ROAS measures how much contribution margin (after marketing) you earn for every dollar spent on advertising. ## Formula **CM3 ROAS** = [**CM3**](/reference/metrics/orders/contribution-margin/cm3-per-order) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | --------------------------------------------- | | [**CM3 (Contribution Margin)**](/reference/metrics/orders/contribution-margin/contribution-margin) | Profit after COGS, fulfillment, and marketing | | **Ad Spend** | Total advertising spend across platforms | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Multiplier | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$42,500** CM3 and spent **\$25,000** on advertising. | Component | Value | Calculation | | ------------ | -------- | ------------------- | | CM3 | \$42,500 | Contribution margin | | Ad Spend | \$25,000 | Advertising cost | | **CM3 ROAS** | **1.7x** | \$42,500 ÷ \$25,000 | *** ## How It Works CM3 ROAS shows how much contribution margin your advertising generates after all variable and marketing costs. A 1.7x CM3 ROAS means every ad dollar produces \$1.70 in contribution margin—profit available to cover fixed costs. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------------ | | Measuring true ad profitability | CM3 ROAS shows margin after marketing costs | | Setting efficiency targets | CM3 ROAS > 1x means positive contribution margin | | Campaign optimization | Focus on campaigns with highest CM3 ROAS | | Profitability modeling | Use CM3 ROAS for break-even analysis | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------- | ------------------------------ | | [CM2 ROAS](/reference/metrics/orders/performance/cm2-roas) | Variable margin per ad dollar | | [CM4 ROAS](/reference/metrics/orders/performance/cm4-roas) | Operating profit per ad dollar | | [ROAS](/reference/metrics/orders/performance/roas) | Revenue per ad dollar | [See all Performance metrics →](/reference/metrics/orders/performance) # CM4 MER: Operating Profit Marketing Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/cm4-mer Track CM4 MER for your Shopify store. Measure operating profit as a percentage of ad spend. CM4 MER measures operating profit as a percentage of ad spend—the ultimate efficiency metric showing true profit from advertising. ## Formula **CM4 MER** = ( [**CM4**](/reference/metrics/orders/contribution-margin/cm4) ÷ [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------- | ------------------------------------------- | | [**CM4 (Operating Profit)**](/reference/metrics/orders/contribution-margin/cm4) | Profit after all costs including OPEX | | **Total Ad Spend** | Combined advertising spend across platforms | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$20,000** CM4 and spent **\$25,000** on advertising. | Component | Value | Calculation | | ----------- | -------- | ------------------------- | | CM4 | \$20,000 | Operating profit | | Ad Spend | \$25,000 | Advertising cost | | **CM4 MER** | **80%** | \$20,000 ÷ \$25,000 × 100 | *** ## How It Works CM4 MER shows operating profit relative to ad spend. An 80% CM4 MER means your ads generate 80% of their cost in operating profit—you're losing 20% on your ad investment when accounting for all costs. *** ## When to Use | Scenario | Action | | ------------------------ | -------------------------------------------------- | | Measuring true ad ROI | CM4 MER > 100% means net positive profit from ads | | Investment decisions | Use CM4 MER to validate ad spending sustainability | | Performance benchmarking | Track CM4 MER trends to monitor efficiency | | Budget optimization | Allocate toward channels with highest CM4 MER | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------- | -------------------------------------------------- | | [CM4 ROAS](/reference/metrics/orders/performance/cm4-roas) | CM4 per ad dollar (same concept, different format) | | [CM3 MER](/reference/metrics/orders/performance/cm3-mer) | Contribution margin as % of ad spend | | [CM4](/reference/metrics/orders/contribution-margin/cm4) | Total operating profit | [See all Performance metrics →](/reference/metrics/orders/performance) # CM4 ROAS: Operating Profit Return on Ad Spend Source: https://docs.upstackdata.com/reference/metrics/orders/performance/cm4-roas Track CM4 ROAS for your Shopify store. Measure operating profit return per dollar of ad spend. CM4 ROAS measures how much operating profit you earn for every dollar spent on advertising—the ultimate ad efficiency metric. ## Formula **CM4 ROAS** = [**CM4**](/reference/metrics/orders/contribution-margin/cm4) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------- | ---------------------------------------- | | [**CM4 (Operating Profit)**](/reference/metrics/orders/contribution-margin/cm4) | Profit after all costs including OPEX | | **Ad Spend** | Total advertising spend across platforms | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Multiplier | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$20,000** CM4 and spent **\$25,000** on advertising. | Component | Value | Calculation | | ------------ | -------- | ------------------- | | CM4 | \$20,000 | Operating profit | | Ad Spend | \$25,000 | Advertising cost | | **CM4 ROAS** | **0.8x** | \$20,000 ÷ \$25,000 | *** ## How It Works CM4 ROAS shows true operating profit per ad dollar after all costs. A 0.8x CM4 ROAS means each ad dollar generates only \$0.80 in operating profit. CM4 ROAS below 1x indicates ads don't fully cover their allocation of fixed costs. *** ## When to Use | Scenario | Action | | ------------------------------- | -------------------------------------------------- | | Measuring true ad profitability | CM4 ROAS is the ultimate efficiency metric | | Investment decisions | CM4 ROAS > 1x means ads generate net profit | | Budget planning | Use CM4 ROAS to determine sustainable spend levels | | Performance benchmarking | Track CM4 ROAS trends over time | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------- | --------------------------------- | | [CM3 ROAS](/reference/metrics/orders/performance/cm3-roas) | Contribution margin per ad dollar | | [CM4](/reference/metrics/orders/contribution-margin/cm4) | Total operating profit | | [ROAS](/reference/metrics/orders/performance/roas) | Revenue per ad dollar | [See all Performance metrics →](/reference/metrics/orders/performance) # Cost Per Unit: Average Product Cost Per Item Sold Source: https://docs.upstackdata.com/reference/metrics/orders/performance/cost-per-unit Track the average cost of goods sold per unit. Learn the formula, see examples, and optimize product cost efficiency across your catalog. The average cost of goods sold per unit sold. ## Formula **Cost Per Unit** = [**COGS**](/reference/metrics/orders/cogs/cogs) ÷ [**Units Sold**](/reference/metrics/orders/counts/units-sold) ### Formula Components | Metric | Definition | | ------------------------------------------------------------- | ------------------------------------------------------------------ | | [**COGS**](/reference/metrics/orders/cogs/cogs) | Total cost of goods sold including manufacturing or purchase costs | | [**Units Sold**](/reference/metrics/orders/counts/units-sold) | Total quantity of individual product units sold | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your store sold **8,500 units** this month with a total COGS of **\$42,500**: | Metric | Value | | ----------------- | ---------- | | Total COGS | \$42,500 | | Units Sold | 8,500 | | **Cost Per Unit** | **\$5.00** | *** ## How It Works Cost Per Unit divides your total cost of goods sold by the number of units sold. This gives you the average cost to produce or acquire each unit in your catalog. Unlike COGS Per Order, this metric focuses on individual items rather than order baskets. *** ## When to Use | Scenario | Action | | -------------------------- | ------------------------------------------------- | | Evaluating product margins | Compare cost per unit against selling price | | Pricing decisions | Ensure prices cover unit costs plus target margin | | Supplier negotiations | Benchmark against industry standards | | Inventory optimization | Identify high-cost products to prioritize | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | ---------------------------------------------------- | | [COGS](/reference/metrics/orders/cogs/cogs) | Numerator—total cost divided to get per-unit average | | [Units Sold](/reference/metrics/orders/counts/units-sold) | Denominator—count of items sold | | [COGS Per Order](/reference/metrics/orders/cogs/cogs-per-order) | Similar metric but per order instead of per unit | | [Gross Profit](/reference/metrics/orders/contribution-margin/gross-profit) | Revenue impact after subtracting product costs | [See all Performance metrics →](/reference/metrics/orders/performance) # MER (Gross Sales): Marketing Efficiency on Gross Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/performance/gross-mer Track MER using gross sales for your Shopify store. Measure marketing efficiency before discounts and refunds. MER (Gross Sales) measures what percentage of your gross order sales is spent on advertising—marketing efficiency before discounts and refunds. ## Formula **MER (Gross Sales)** = ( [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Gross Order Sales** ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | ----------------------------------------------- | | **Total Ad Spend** | Combined spend across all advertising platforms | | [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Order revenue before discounts and refunds | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$20,000** on ads and generated **\$200,000** in gross sales. | Component | Value | Calculation | | --------------- | --------- | -------------------------- | | Ad Spend | \$20,000 | Total advertising | | Gross Sales | \$200,000 | Before discounts | | **MER (Gross)** | **10%** | \$20,000 ÷ \$200,000 × 100 | *** ## How It Works MER (Gross Sales) uses gross revenue before discounts and refunds are applied. This shows marketing efficiency against your top-line sales number. Lower is better—a 10% MER means you spend 10 cents to generate every dollar of gross sales. *** ## When to Use | Scenario | Action | | ---------------------------- | ----------------------------------------------- | | Tracking top-line efficiency | Monitor MER against gross revenue | | Comparing to net MER | See how discounts impact efficiency | | Benchmarking | Compare against industry gross MER standards | | Budget planning | Set spend limits based on gross revenue targets | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | ---------------------------- | | [MER](/reference/metrics/orders/performance/mer) | MER using total revenue | | [MER (Net Sales)](/reference/metrics/orders/performance/net-mer) | MER using net revenue | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Revenue base for calculation | [See all Performance metrics →](/reference/metrics/orders/performance) # RAAD (Gross): Gross Revenue After Ad Spend Source: https://docs.upstackdata.com/reference/metrics/orders/performance/gross-raad Track Gross RAAD for your Shopify store. Measure gross revenue remaining after advertising costs. RAAD (Gross) measures gross order revenue minus advertising spend—revenue after ads, before discounts and refunds. ## Formula **RAAD (Gross)** = **Gross Order Revenue** − [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | ------------------------------------------ | | [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Order revenue before discounts and refunds | | **Ad Spend** | Total advertising spend across platforms | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Sum | *** ## Example Your Shopify store generated **\$220,000** gross revenue and spent **\$25,000** on ads. | Component | Amount | Calculation | | ---------------- | ------------- | -------------------- | | Gross Revenue | \$220,000 | Before discounts | | Ad Spend | \$25,000 | Advertising cost | | **RAAD (Gross)** | **\$195,000** | \$220,000 − \$25,000 | *** ## How It Works RAAD (Gross) uses gross revenue before discounts and refunds are applied. It shows the top-line revenue impact of advertising. Compare against RAAD (Net) to see how adjustments affect the result. *** ## When to Use | Scenario | Action | | --------------------- | --------------------------------------- | | Top-line analysis | See gross revenue after ad costs | | Comparing to net RAAD | Measure discount/refund impact | | Campaign evaluation | Track gross RAAD by campaign | | Budget planning | Set spend against gross revenue targets | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | ------------------------------- | | [RAAD (Total)](/reference/metrics/orders/performance/total-raad) | Total revenue minus ad spend | | [RAAD (Net)](/reference/metrics/orders/performance/net-raad) | Net revenue minus ad spend | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Revenue base before adjustments | [See all Performance metrics →](/reference/metrics/orders/performance) # RAAD % (Gross): Gross Revenue After Ad Spend Percentage Source: https://docs.upstackdata.com/reference/metrics/orders/performance/gross-raad-percent Track Gross RAAD percentage for your Shopify store. Measure what percentage of gross revenue remains after ads. RAAD % (Gross) measures what percentage of gross revenue remains after subtracting advertising spend. ## Formula **RAAD % (Gross)** = ( [**RAAD (Gross)**](/reference/metrics/orders/performance/gross-raad) ÷ [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | ------------------------------------------ | | [**RAAD (Gross)**](/reference/metrics/orders/performance/gross-raad) | Gross revenue minus ad spend | | [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Order revenue before discounts and refunds | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$195,000** Gross RAAD from **\$220,000** gross revenue. | Component | Value | Calculation | | ------------------ | --------- | --------------------------- | | RAAD (Gross) | \$195,000 | After ad spend | | Gross Revenue | \$220,000 | Revenue base | | **RAAD % (Gross)** | **88.6%** | \$195,000 ÷ \$220,000 × 100 | *** ## How It Works RAAD % (Gross) uses gross revenue before discounts and refunds. Compare against RAAD % (Net) to see how adjustments impact your ad efficiency. *** ## When to Use | Scenario | Action | | ------------------- | ----------------------------------------- | | Top-line efficiency | Track efficiency against gross revenue | | Comparing variants | See how discounts impact RAAD % | | Trend analysis | Monitor gross RAAD % over time | | Campaign comparison | Benchmark campaigns against gross revenue | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | --------------------------------------------- | | [RAAD (Gross)](/reference/metrics/orders/performance/gross-raad) | Dollar amount that RAAD % (Gross) is based on | | [RAAD % (Total)](/reference/metrics/orders/performance/total-raad-percent) | Total revenue version | | [RAAD % (Net)](/reference/metrics/orders/performance/net-raad-percent) | Net revenue version | [See all Performance metrics →](/reference/metrics/orders/performance) # MER: Marketing Efficiency Ratio Source: https://docs.upstackdata.com/reference/metrics/orders/performance/mer Track what percentage of revenue you spend on advertising. Calculate MER to monitor ad spend efficiency—lower MER means more revenue per dollar spent. MER (Marketing Efficiency Ratio) measures what percentage of your total revenue is spent on advertising—lower is better. ## Formula **Marketing Efficiency Ratio** = ( [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | ------------------------------------------------------- | | [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Sum of advertising spend across all connected platforms | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Complete order revenue including shipping and taxes | | Metadata | | | --------------- | ---------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Ad Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your store generated **\$250,000** in order revenue while spending **\$50,000** on ads: | Total Revenue | Total Ad Spend | MER | | ------------- | -------------- | --- | | \$250,000 | \$50,000 | 20% | | \$250,000 | \$75,000 | 30% | | \$250,000 | \$30,000 | 12% | A 20% MER means you spent \$0.20 on ads for every \$1.00 of revenue. Lower MER indicates better efficiency—you're keeping more of each revenue dollar. *** ## How It Works MER divides your total advertising spend by your total order revenue, then multiplies by 100 to express it as a percentage. Unlike ROAS (which is Revenue ÷ Spend), MER shows the inverse—what fraction of your revenue goes to advertising. Lower MER values indicate better efficiency. *** ## When to Use | Scenario | Action | | -------------------------- | ----------------------------------------------------- | | Setting efficiency targets | Define maximum acceptable ad spend as % of revenue | | Comparing time periods | Track if marketing efficiency improves over time | | Budget planning | Determine how much revenue to reinvest in ads | | Profitability analysis | Combine with margin data to ensure ads are profitable | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------- | -------------------------------------------------- | | [ROAS](/reference/metrics/orders/performance/roas) | Inverse metric: Revenue ÷ Spend (higher is better) | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | The denominator in MER calculation | | [Blended Spend](/reference/metrics/advertising/blended/blended-spend) | The numerator in MER calculation | | [CAC](/reference/metrics/orders/performance/cac) | Cost per new customer acquired | [See all Performance metrics →](/reference/metrics/orders/performance) # MER (Net Sales): Marketing Efficiency on Net Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/performance/net-mer Track MER using net sales for your Shopify store. Measure marketing efficiency after discounts and refunds. MER (Net Sales) measures what percentage of your net order sales is spent on advertising—marketing efficiency after discounts and refunds. ## Formula **MER (Net Sales)** = ( [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Net Order Sales** ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------- | ----------------------------------------------- | | **Total Ad Spend** | Combined spend across all advertising platforms | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Order revenue after discounts and refunds | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store spent **\$20,000** on ads and generated **\$160,000** in net sales. | Component | Value | Calculation | | ------------- | --------- | -------------------------- | | Ad Spend | \$20,000 | Total advertising | | Net Sales | \$160,000 | After discounts/refunds | | **MER (Net)** | **12.5%** | \$20,000 ÷ \$160,000 × 100 | *** ## How It Works MER (Net Sales) uses net revenue after discounts and refunds. This is the most conservative MER calculation, showing efficiency against actual realized revenue. Higher discounts and refunds will increase your net MER versus gross MER. *** ## When to Use | Scenario | Action | | -------------------------------- | --------------------------------------------------- | | Conservative efficiency tracking | Use net MER for realistic marketing efficiency | | Measuring discount impact | Compare net MER to gross MER to see discount effect | | Profitability planning | Net MER aligns closer with true revenue | | Setting efficiency targets | Use net MER for conservative budget planning | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------- | ---------------------------- | | [MER](/reference/metrics/orders/performance/mer) | MER using total revenue | | [MER (Gross Sales)](/reference/metrics/orders/performance/gross-mer) | MER using gross revenue | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue base for calculation | [See all Performance metrics →](/reference/metrics/orders/performance) # RAAD (Net): Net Revenue After Ad Spend Source: https://docs.upstackdata.com/reference/metrics/orders/performance/net-raad Track Net RAAD for your Shopify store. Measure net revenue remaining after advertising costs. RAAD (Net) measures net order revenue minus advertising spend—the most conservative revenue after ad spend calculation. ## Formula **RAAD (Net)** = **Net Order Revenue** − [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------- | ----------------------------------------- | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Order revenue after discounts and refunds | | **Ad Spend** | Total advertising spend across platforms | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Sum | *** ## Example Your Shopify store generated **\$180,000** net revenue and spent **\$25,000** on ads. | Component | Amount | Calculation | | -------------- | ------------- | ----------------------- | | Net Revenue | \$180,000 | After discounts/refunds | | Ad Spend | \$25,000 | Advertising cost | | **RAAD (Net)** | **\$155,000** | \$180,000 − \$25,000 | *** ## How It Works RAAD (Net) uses net revenue after discounts and refunds. This is the most conservative RAAD calculation, showing realized revenue minus ad costs. It's the closest to actual cash impact. *** ## When to Use | Scenario | Action | | ----------------------- | -------------------------------------------------- | | Conservative analysis | RAAD (Net) shows actual realized revenue after ads | | Profitability planning | Use for cash flow projections | | Comparing to gross RAAD | See discount/refund impact | | Setting targets | Plan against net revenue goals | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | ------------------------------ | | [RAAD (Total)](/reference/metrics/orders/performance/total-raad) | Total revenue minus ad spend | | [RAAD (Gross)](/reference/metrics/orders/performance/gross-raad) | Gross revenue minus ad spend | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue base after adjustments | [See all Performance metrics →](/reference/metrics/orders/performance) # RAAD % (Net): Net Revenue After Ad Spend Percentage Source: https://docs.upstackdata.com/reference/metrics/orders/performance/net-raad-percent Track Net RAAD percentage for your Shopify store. Measure what percentage of net revenue remains after ads. RAAD % (Net) measures what percentage of net revenue remains after subtracting advertising spend—the most conservative RAAD % calculation. ## Formula **RAAD % (Net)** = ( [**RAAD (Net)**](/reference/metrics/orders/performance/net-raad) ÷ [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------- | ----------------------------------------- | | [**RAAD (Net)**](/reference/metrics/orders/performance/net-raad) | Net revenue minus ad spend | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Order revenue after discounts and refunds | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$155,000** Net RAAD from **\$180,000** net revenue. | Component | Value | Calculation | | ---------------- | --------- | --------------------------- | | RAAD (Net) | \$155,000 | After ad spend | | Net Revenue | \$180,000 | Revenue base | | **RAAD % (Net)** | **86.1%** | \$155,000 ÷ \$180,000 × 100 | *** ## How It Works RAAD % (Net) uses net revenue after discounts and refunds. This is the most conservative calculation, showing efficiency against realized revenue. Lower than Gross RAAD % reflects discount and refund impact. *** ## When to Use | Scenario | Action | | ----------------------- | ------------------------------------------ | | Conservative efficiency | RAAD % (Net) shows realistic ad efficiency | | Cash flow planning | Use for revenue after adjustments | | Comparing variants | See discount/refund impact on efficiency | | Setting targets | Plan against conservative benchmarks | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | ------------------------------------------- | | [RAAD (Net)](/reference/metrics/orders/performance/net-raad) | Dollar amount that RAAD % (Net) is based on | | [RAAD % (Total)](/reference/metrics/orders/performance/total-raad-percent) | Total revenue version | | [RAAD % (Gross)](/reference/metrics/orders/performance/gross-raad-percent) | Gross revenue version | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer CM1 MER: First-Order Gross Margin Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-cm1-mer Track new customer CM1 MER for your Shopify store. Measure gross margin generated per dollar of ad spend on first orders. New Customer CM1 MER measures how much gross margin (revenue minus COGS) you generate from first orders per dollar of ad spend. ## Formula **New Customer CM1 MER** = [**New Customer CM1**](/reference/metrics/orders/contribution-margin/new-customer-cm1) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ----------------------------------------- | | [**New Customer CM1**](/reference/metrics/orders/contribution-margin/new-customer-cm1) | Gross margin from first-time buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$30,000** CM1 from new customers and spends **\$15,000** on ads. | Component | Value | Calculation | | ------------------------ | -------- | ------------------------ | | New Customer CM1 | \$30,000 | First-order gross margin | | Ad Spend | \$15,000 | Marketing cost | | **New Customer CM1 MER** | **2.0** | \$30,000 ÷ \$15,000 | *** ## How It Works New Customer CM1 MER shows gross margin efficiency for acquired customers. A value of 2.0 means you're generating \$2 of first-order gross margin for every \$1 spent on ads. This helps evaluate if acquisition costs are sustainable at the gross margin level. *** ## Benchmarks | Rating | Range | | ------------ | --------- | | Excellent | > 2.5 | | Good | 1.5 – 2.5 | | Moderate | 1.0 – 1.5 | | Unprofitable | \< 1.0 | Break-even at CM1 level requires CM1 MER of at least 1.0. *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ------------------------ | | [New Customer CM1](/reference/metrics/orders/contribution-margin/new-customer-cm1) | Numerator (gross margin) | | [CM1 MER](/reference/metrics/orders/performance/cm1-mer) | Overall CM1 efficiency | | [New Customer CM2 MER](/reference/metrics/orders/performance/new-customer-cm2-mer) | After fulfillment costs | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer CM1 ROAS: Acquisition Gross Margin Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-cm1-roas Track new customer gross margin return on ad spend. Measure how much CM1 profit from first-time buyers you generate per ad dollar. New Customer CM1 ROAS measures how much gross margin from first-time buyer orders you earn for every dollar spent on advertising. ## Formula **NC CM1 ROAS** = [**New Customer CM1**](/reference/metrics/orders/contribution-margin/new-customer-cm1) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------ | | [**New Customer CM1**](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) | Gross margin from new customer orders after COGS | | **Ad Spend** | Total advertising spend across all platforms | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Multiplier | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generated **\$45,000** in new customer CM1 while spending **\$50,000** on advertising. | Metric | Value | Calculation | | ---------------- | -------- | ------------------------ | | New Customer CM1 | \$45,000 | NC Net Revenue − NC COGS | | Total Ad Spend | \$50,000 | All ad platforms | | NC CM1 ROAS | 0.9x | \$45,000 ÷ \$50,000 | A NC CM1 ROAS of 0.9x means you earn \$0.90 in gross margin from new customers for every \$1 spent on advertising. *** ## How It Works NC CM1 ROAS isolates the gross margin contribution from new customer acquisitions relative to advertising spend. This helps you understand if your acquisition efforts are profitable at the gross margin level before accounting for fulfillment and marketing costs. *** ## When to Use | Scenario | Action | | -------------------------------------- | ---------------------------------------------------------- | | Evaluating acquisition campaigns | Compare NC CM1 ROAS across acquisition channels | | Setting CAC payback targets | Understand first-order gross margin per ad dollar | | Product-mix analysis for new customers | See if high-COGS products affect acquisition profitability | | Prospecting vs retargeting comparison | Compare NC vs RC CM1 ROAS | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ---------------------------------------------- | | [CM1 ROAS](/reference/metrics/orders/performance/cm1-roas) | Total CM1 ROAS including all customers | | [NC CM2 ROAS](/reference/metrics/orders/performance/new-customer-cm2-roas) | Includes fulfillment costs for new customers | | [NC CM3 ROAS](/reference/metrics/orders/performance/new-customer-cm3-roas) | Includes all marketing costs for new customers | | [New Customer ROAS](/reference/metrics/orders/performance/new-customer-roas) | Revenue-based return for new customers | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer CM2 MER: First-Order Variable Margin Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-cm2-mer Track new customer CM2 MER for your Shopify store. Measure variable margin generated per dollar of ad spend on first orders. New Customer CM2 MER measures how much variable margin (after COGS and fulfillment) you generate from first orders per dollar of ad spend. ## Formula **New Customer CM2 MER** = [**New Customer CM2**](/reference/metrics/orders/contribution-margin/new-customer-cm2) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | -------------------------------------------- | | [**New Customer CM2**](/reference/metrics/orders/contribution-margin/new-customer-cm2) | Variable margin from first-time buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$22,000** CM2 from new customers and spends **\$15,000** on ads. | Component | Value | Calculation | | ------------------------ | -------- | --------------------------- | | New Customer CM2 | \$22,000 | First-order variable margin | | Ad Spend | \$15,000 | Marketing cost | | **New Customer CM2 MER** | **1.47** | \$22,000 ÷ \$15,000 | *** ## How It Works New Customer CM2 MER shows variable margin efficiency after accounting for both COGS and fulfillment costs. This is more realistic than CM1 MER for evaluating acquisition economics because it includes shipping and handling. *** ## Benchmarks | Rating | Range | | ------------ | --------- | | Excellent | > 2.0 | | Good | 1.2 – 2.0 | | Moderate | 0.8 – 1.2 | | Unprofitable | \< 0.8 | A value below 1.0 means fulfillment-adjusted margin doesn't cover ad spend. *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | --------------------------- | | [New Customer CM2](/reference/metrics/orders/contribution-margin/new-customer-cm2) | Numerator (variable margin) | | [CM2 MER](/reference/metrics/orders/performance/cm2-mer) | Overall CM2 efficiency | | [New Customer CM3 MER](/reference/metrics/orders/performance/new-customer-cm3-mer) | After transaction costs | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer CM2 ROAS: First-Order Variable Margin ROAS Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-cm2-roas Track new customer CM2 ROAS for your Shopify store. Measure variable margin generated per dollar of ad spend on first orders. New Customer CM2 ROAS measures how much variable margin (after COGS and fulfillment) you generate from first orders per dollar of ad spend. ## Formula **New Customer CM2 ROAS** = [**New Customer CM2**](/reference/metrics/orders/contribution-margin/new-customer-cm2) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | -------------------------------------------- | | [**New Customer CM2**](/reference/metrics/orders/contribution-margin/new-customer-cm2) | Variable margin from first-time buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$22,000** CM2 from new customers and spends **\$15,000** on ads. | Component | Value | Calculation | | ------------------------- | -------- | --------------------------- | | New Customer CM2 | \$22,000 | First-order variable margin | | Ad Spend | \$15,000 | Marketing cost | | **New Customer CM2 ROAS** | **1.47** | \$22,000 ÷ \$15,000 | *** ## How It Works New Customer CM2 ROAS shows margin-adjusted acquisition efficiency. Unlike revenue-based ROAS, this accounts for product costs and fulfillment—giving a more realistic picture of acquisition economics. *** ## Benchmarks | Rating | Range | | ------------ | --------- | | Excellent | > 2.0 | | Good | 1.2 – 2.0 | | Break-even | 1.0 | | Unprofitable | \< 1.0 | A CM2 ROAS below 1.0 means fulfillment-adjusted margin doesn't cover ad spend. *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | --------------------------- | | [New Customer CM2](/reference/metrics/orders/contribution-margin/new-customer-cm2) | Numerator (variable margin) | | [CM2 ROAS](/reference/metrics/orders/performance/cm2-roas) | Overall CM2 ROAS | | [Returning Customer CM2 ROAS](/reference/metrics/orders/performance/returning-customer-cm2-roas) | Repeat order CM2 ROAS | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer CM3 MER: First-Order Contribution Margin Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-cm3-mer Track new customer CM3 MER for your Shopify store. Measure contribution margin generated per dollar of ad spend on first orders. New Customer CM3 MER measures how much contribution margin (after all variable costs including ad spend) you generate from first orders per dollar of ad spend. ## Formula **New Customer CM3 MER** = [**New Customer CM3**](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------ | | [**New Customer CM3**](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) | Contribution margin from first-time buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$7,000** CM3 from new customers and spends **\$15,000** on ads. | Component | Value | Calculation | | ------------------------ | -------- | ------------------------------- | | New Customer CM3 | \$7,000 | First-order contribution margin | | Ad Spend | \$15,000 | Marketing cost | | **New Customer CM3 MER** | **0.47** | \$7,000 ÷ \$15,000 | *** ## How It Works New Customer CM3 MER is often below 1.0 because first-order contribution margin already includes ad spend as a deduction. This ratio shows how efficiently you're acquiring customers at the fully-loaded variable cost level. *** ## Interpretation | Scenario | Meaning | | ------------ | ----------------------------------------------------------- | | CM3 MER > 0 | First orders contribute positively after all variable costs | | CM3 MER = 0 | First orders break even on variable costs | | CM3 MER \< 0 | First orders lose money on variable costs | First-order CM3 MER is often low; profitability depends on repeat purchases. *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ------------------------------- | | [New Customer CM3](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) | Numerator (contribution margin) | | [CM3 MER](/reference/metrics/orders/performance/cm3-mer) | Overall CM3 efficiency | | [New Customer CM4 MER](/reference/metrics/orders/performance/new-customer-cm4-mer) | After fixed costs | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer CM3 ROAS: First-Order Contribution Margin ROAS Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-cm3-roas Track new customer CM3 ROAS for your Shopify store. Measure contribution margin generated per dollar of ad spend on first orders. New Customer CM3 ROAS measures how much contribution margin (after all variable costs including ad spend) you generate from first orders per dollar of ad spend. ## Formula **New Customer CM3 ROAS** = [**New Customer CM3**](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------ | | [**New Customer CM3**](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) | Contribution margin from first-time buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$7,000** CM3 from new customers and spends **\$15,000** on ads. | Component | Value | Calculation | | ------------------------- | -------- | ------------------------------- | | New Customer CM3 | \$7,000 | First-order contribution margin | | Ad Spend | \$15,000 | Marketing cost | | **New Customer CM3 ROAS** | **0.47** | \$7,000 ÷ \$15,000 | *** ## How It Works New Customer CM3 ROAS is often below 1.0 because first-order contribution margin already deducts the ad spend. This metric shows true acquisition profitability at the variable cost level. *** ## Interpretation | Scenario | Meaning | | ------------- | ----------------------------------------- | | CM3 ROAS > 0 | First orders contribute positively | | CM3 ROAS = 0 | First orders break even on variable costs | | CM3 ROAS \< 0 | First orders lose money on variable costs | First-order CM3 ROAS is typically low—repeat purchases drive profitability. *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ------------------------------- | | [New Customer CM3](/reference/metrics/orders/contribution-margin/new-customer-contribution-margin) | Numerator (contribution margin) | | [CM3 ROAS](/reference/metrics/orders/performance/cm3-roas) | Overall CM3 ROAS | | [Returning Customer CM3 ROAS](/reference/metrics/orders/performance/returning-customer-cm3-roas) | Repeat order CM3 ROAS | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer CM4 MER: First-Order Operating Profit Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-cm4-mer Track new customer CM4 MER for your Shopify store. Measure operating profit generated per dollar of ad spend on first orders. New Customer CM4 MER measures how much operating profit (after all costs including OPEX) you generate from first orders per dollar of ad spend. ## Formula **New Customer CM4 MER** = [**New Customer CM4**](/reference/metrics/orders/contribution-margin/new-customer-cm4) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | --------------------------------------------- | | [**New Customer CM4**](/reference/metrics/orders/contribution-margin/new-customer-cm4) | Operating profit from first-time buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$2,000** CM4 from new customers and spends **\$15,000** on ads. | Component | Value | Calculation | | ------------------------ | -------- | ---------------------------- | | New Customer CM4 | \$2,000 | First-order operating profit | | Ad Spend | \$15,000 | Marketing cost | | **New Customer CM4 MER** | **0.13** | \$2,000 ÷ \$15,000 | *** ## How It Works New Customer CM4 MER is typically low or negative because first orders must cover acquisition costs plus their share of fixed overhead. The key question is whether lifetime value from repeat purchases makes acquisition profitable. *** ## Interpretation | Scenario | Meaning | | ------------ | ---------------------------------------------- | | CM4 MER > 0 | First orders profitable after all costs | | CM4 MER = 0 | First orders break even fully loaded | | CM4 MER \< 0 | First orders lose money; need repeat purchases | Most DTC brands have negative first-order CM4 MER; profitability comes from LTV. *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ---------------------------- | | [New Customer CM4](/reference/metrics/orders/contribution-margin/new-customer-cm4) | Numerator (operating profit) | | [CM4 MER](/reference/metrics/orders/performance/cm4-mer) | Overall CM4 efficiency | | [Returning Customer CM4 MER](/reference/metrics/orders/performance/returning-customer-cm4-mer) | Repeat order efficiency | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer CM4 ROAS: First-Order Operating Profit ROAS Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-cm4-roas Track new customer CM4 ROAS for your Shopify store. Measure operating profit generated per dollar of ad spend on first orders. New Customer CM4 ROAS measures how much operating profit (after all costs including OPEX) you generate from first orders per dollar of ad spend. ## Formula **New Customer CM4 ROAS** = [**New Customer CM4**](/reference/metrics/orders/contribution-margin/new-customer-cm4) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | --------------------------------------------- | | [**New Customer CM4**](/reference/metrics/orders/contribution-margin/new-customer-cm4) | Operating profit from first-time buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$2,000** CM4 from new customers and spends **\$15,000** on ads. | Component | Value | Calculation | | ------------------------- | -------- | ---------------------------- | | New Customer CM4 | \$2,000 | First-order operating profit | | Ad Spend | \$15,000 | Marketing cost | | **New Customer CM4 ROAS** | **0.13** | \$2,000 ÷ \$15,000 | *** ## How It Works New Customer CM4 ROAS is typically low or negative because first orders must cover acquisition costs plus fixed overhead. This is the most stringent profitability test for customer acquisition. *** ## Interpretation | Scenario | Meaning | | ------------- | --------------------------------------------------- | | CM4 ROAS > 0 | First orders profitable after all costs | | CM4 ROAS = 0 | First orders break even fully loaded | | CM4 ROAS \< 0 | First orders lose money; profitability requires LTV | Most brands have negative first-order CM4 ROAS—lifetime value makes acquisition profitable. *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | ---------------------------- | | [New Customer CM4](/reference/metrics/orders/contribution-margin/new-customer-cm4) | Numerator (operating profit) | | [CM4 ROAS](/reference/metrics/orders/performance/cm4-roas) | Overall CM4 ROAS | | [Returning Customer CM4 ROAS](/reference/metrics/orders/performance/returning-customer-cm4-roas) | Repeat order CM4 ROAS | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer MER (Gross Sales): Acquisition Gross Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-gross-mer Track new customer marketing efficiency using gross sales. Understand what percentage of new customer gross revenue is spent on ads. New Customer MER (Gross) measures what percentage of your new customer gross sales (before discounts and refunds) is spent on advertising. ## Formula **NC MER (Gross)** = ( [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **NC Gross Order Sales** ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------ | ------------------------------------------------------------- | | **Total Ad Spend** | Combined advertising spend across all connected platforms | | [**NC Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Gross order sales from new customers before discounts/refunds | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generated **\$90,000** in new customer gross sales while spending **\$40,000** on advertising. | Metric | Value | Calculation | | -------------- | -------- | --------------------------- | | Total Ad Spend | \$40,000 | All ad platforms | | NC Gross Sales | \$90,000 | Before discounts/refunds | | NC MER (Gross) | 44.4% | (\$40,000 ÷ \$90,000) × 100 | A NC Gross MER of 44.4% means you spend \$0.44 on advertising for every \$1 of new customer gross sales. *** ## How It Works NC Gross MER uses new customer gross sales as the revenue base, excluding the impact of discounts offered to first-time buyers. This helps you understand acquisition efficiency before welcome discounts or first-order promos are applied. *** ## When to Use | Scenario | Action | | ------------------------------- | ----------------------------------------------- | | Welcome offer analysis | See MER before welcome discount impact | | Acquisition campaign comparison | Normalize for different discount strategies | | Isolating marketing performance | Remove promo noise from NC efficiency | | Pre-discount acquisition cost | Understand true cost relative to intended spend | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ---------------------------------------- | | [NC MER](/reference/metrics/orders/performance/new-customer-total-mer) | NC MER using total revenue | | [NC MER (Net)](/reference/metrics/orders/performance/new-customer-net-mer) | NC MER using net revenue after discounts | | [MER (Gross)](/reference/metrics/orders/performance/gross-mer) | Gross MER for all customers | | [NC Gross Revenue](/reference/metrics/orders/revenue/new-customer-gross-revenue) | The denominator in this calculation | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer MER: First-Order Marketing Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-mer Track New Customer MER for your Shopify store. Measure marketing efficiency for acquiring first-time buyers. New Customer MER measures what percentage of new customer order revenue is spent on advertising—marketing efficiency for customer acquisition. ## Formula **NC MER** = ( [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **NC Order Revenue** ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | -------------------------------- | | **Ad Spend** | Total advertising spend | | [**NC Total Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) | Revenue from new customer orders | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to first-time buyers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$20,000** on ads and new customers generated **\$80,000** in revenue. | Component | Value | Calculation | | ---------- | -------- | ------------------------- | | Ad Spend | \$20,000 | Total advertising | | NC Revenue | \$80,000 | First-time buyer revenue | | **NC MER** | **25%** | \$20,000 ÷ \$80,000 × 100 | *** ## How It Works NC MER shows marketing efficiency specifically for customer acquisition. A 25% NC MER means 25% of new customer revenue goes to advertising. Compare against RC MER to see how much more efficient repeat customers are. *** ## When to Use | Scenario | Action | | -------------------------------- | ---------------------------------------------------- | | Measuring acquisition efficiency | Track NC MER to optimize acquisition spend | | Comparing customer segments | NC MER vs RC MER shows retention value | | Setting CAC targets | NC MER helps determine sustainable acquisition costs | | Channel optimization | Compare NC MER across acquisition channels | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------- | ---------------------------------- | | [MER](/reference/metrics/orders/performance/mer) | Overall marketing efficiency ratio | | [RC MER](/reference/metrics/orders/performance/returning-customer-mer) | MER for returning customers | | [CAC](/reference/metrics/orders/performance/cac) | Cost to acquire new customers | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer MER (Net Sales): Acquisition Net Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-net-mer Track new customer marketing efficiency using net sales. Understand what percentage of new customer net revenue is spent on ads. New Customer MER (Net) measures what percentage of your new customer net sales (after discounts and refunds) is spent on advertising. ## Formula **NC MER (Net)** = ( [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **NC Net Order Sales** ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------- | ---------------------------------------------------------- | | **Total Ad Spend** | Combined advertising spend across all connected platforms | | [**NC Net Revenue**](/reference/metrics/orders/revenue/new-customer-net-revenue) | Net order sales from new customers after discounts/refunds | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generated **\$70,000** in new customer net sales while spending **\$40,000** on advertising. | Metric | Value | Calculation | | -------------- | -------- | --------------------------- | | Total Ad Spend | \$40,000 | All ad platforms | | NC Net Sales | \$70,000 | After discounts/refunds | | NC MER (Net) | 57.1% | (\$40,000 ÷ \$70,000) × 100 | A NC Net MER of 57.1% means you spend \$0.57 on advertising for every \$1 of new customer net sales actually collected. *** ## How It Works NC Net MER uses new customer net sales as the revenue base, accounting for welcome discounts, first-order promos, and refunds. This gives you the most accurate view of acquisition efficiency relative to revenue actually kept from new customers. *** ## When to Use | Scenario | Action | | ------------------------------ | ----------------------------------------- | | True acquisition cost analysis | Include discount and refund impact | | Heavy welcome offer strategies | See real MER after promo impact | | High first-order refund rates | Understand true marketing cost | | Setting break-even CAC targets | Ensure NC MER allows for positive margins | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ----------------------------------- | | [NC MER](/reference/metrics/orders/performance/new-customer-total-mer) | NC MER using total revenue | | [NC MER (Gross)](/reference/metrics/orders/performance/new-customer-gross-mer) | NC MER using gross revenue | | [MER (Net)](/reference/metrics/orders/performance/net-mer) | Net MER for all customers | | [NC Net Revenue](/reference/metrics/orders/revenue/new-customer-net-revenue) | The denominator in this calculation | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer Order Ratio: Measure Acquisition Mix Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-order-ratio Track the ratio of new customer orders to total orders from Shopify. Monitor customer acquisition mix and balance growth vs. retention strategies. The ratio of orders from first-time buyers compared to all orders in a given period. ## Formula **New Customer Order Ratio** = [**New Customer Orders**](/reference/metrics/orders/counts/orders) ÷ [**Total Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------ | --------------------------------------------------------------- | | [**New Customer Orders**](/reference/metrics/orders/counts/orders) | Count of orders placed by customers making their first purchase | | [**Total Orders**](/reference/metrics/orders/counts/orders) | Count of all completed orders in the selected period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store processed **1,247 orders** in January with **623 from new customers**: | Metric | Value | Interpretation | | ------------------- | -------- | ------------------- | | New Customer Orders | 623 | First-time buyers | | Total Orders | 1,247 | All orders | | **NC Order Ratio** | **0.50** | 50% acquisition mix | A ratio of 0.50 means half your orders come from new customers—a balanced acquisition/retention split. *** ## How It Works Shopify identifies new customers by checking if the order is their first completed purchase in your store. The NC Order Ratio divides these first-time buyer orders by your total order count, giving you a decimal between 0 and 1 that represents your acquisition mix. *** ## When to Use | Scenario | Action | | -------------------------------- | --------------------------------------------------------- | | Balancing growth vs. retention | Target 0.3–0.5 ratio for healthy DTC businesses | | Evaluating acquisition campaigns | Rising ratio during campaigns confirms new customer reach | | Diagnosing declining revenue | Low ratio with flat sales suggests retention issues | | Seasonal planning | Compare ratios across holiday periods to set expectations | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | -------------------------------------------- | | [New Customer %](/reference/metrics/orders/customers/new-customer-percent) | This ratio expressed as a percentage (× 100) | | [Returning Customer %](/reference/metrics/orders/customers/returning-customer-percent) | The inverse (1 − NC Order Ratio) | | [New Customers](/reference/metrics/orders/customers/new-customers) | The numerator count | | [Total Orders](/reference/metrics/orders/counts/orders) | The denominator count | | [New Customer Revenue Ratio](/reference/metrics/orders/performance/new-customer-revenue-ratio) | Revenue version of this metric | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer Revenue Ratio: Revenue from First-Time Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-revenue-ratio Measure the percentage of total revenue from new customers. Track acquisition revenue contribution and balance your customer mix for sustainable growth. The percentage of total revenue generated by new (first-time) customers. ## Formula **New Customer Revenue Ratio** = [**New Customer Total Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) ÷ [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | ----------------------------------------------- | | [**New Customer Total Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) | Revenue from orders placed by first-time buyers | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Combined revenue from all orders in the period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store generated **38% of revenue from new customers** in Q1, with \$152,000 from first-time buyers out of \$400,000 total revenue. | Segment | Revenue | Share | | ------------------- | --------- | ----- | | New Customers | \$152,000 | 38% | | Returning Customers | \$248,000 | 62% | *** ## How It Works Divides new customer revenue by total revenue and multiplies by 100. Shopify classifies each order as new or returning at purchase time based on the customer's order history. *** ## When to Use | Scenario | Action | | -------------------------- | ----------------------------------------------------------- | | Evaluating acquisition ROI | Higher ratios justify continued acquisition spend | | Retention health check | Declining ratios may indicate strong repeat purchasing | | Channel comparison | Compare acquisition revenue share across marketing channels | | Seasonal analysis | Track how promotions affect new vs returning revenue mix | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ------------------------------------------------- | | [New Customer Total Revenue](/reference/metrics/orders/revenue/new-customer-total-revenue) | The numerator in this calculation | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | The denominator in this calculation | | [New Customer %](/reference/metrics/orders/customers/new-customer-percent) | Order count equivalent (this metric uses revenue) | | [Returning Customer Total Revenue](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Complement showing returning customer revenue | | [New Customer Order Ratio](/reference/metrics/orders/performance/new-customer-order-ratio) | Order count version of this metric | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer ROAS: First-Order Return on Ad Spend Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-roas Track new customer ROAS for your Shopify store. Measure revenue generated from first orders per dollar of ad spend. New Customer ROAS measures how much revenue you generate from first-time customer orders per dollar of ad spend. ## Formula **New Customer ROAS** = [**New Customer Total Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | ------------------------------------ | | [**New Customer Total Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) | Revenue from first-time buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$50,000** from new customer orders and spends **\$15,000** on ads. | Component | Value | Calculation | | --------------------- | -------- | ------------------- | | New Customer Revenue | \$50,000 | First-order sales | | Ad Spend | \$15,000 | Marketing cost | | **New Customer ROAS** | **3.33** | \$50,000 ÷ \$15,000 | *** ## How It Works New Customer ROAS shows acquisition efficiency at the revenue level. A ROAS of 3.33 means you're generating \$3.33 of first-order revenue for every \$1 spent on ads. However, revenue doesn't equal profit—use CM ROAS for margin-adjusted efficiency. *** ## Benchmarks | Rating | Range | | ----------- | --------- | | Excellent | > 4.0 | | Good | 2.5 – 4.0 | | Moderate | 1.5 – 2.5 | | Challenging | \< 1.5 | Note: Required ROAS varies by margin structure. High-margin products need lower ROAS to be profitable. *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | -------------------------- | | [New Customer Total Revenue](/reference/metrics/orders/revenue/new-customer-total-revenue) | Numerator (revenue) | | [ROAS](/reference/metrics/orders/performance/roas) | Overall return on ad spend | | [Returning Customer ROAS](/reference/metrics/orders/performance/returning-customer-roas) | Repeat order ROAS | | [New Customer CM2 ROAS](/reference/metrics/orders/performance/new-customer-cm2-roas) | Margin-adjusted ROAS | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer MER: Acquisition Marketing Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-total-mer Track your new customer marketing efficiency ratio. Understand what percentage of new customer revenue is spent on advertising. New Customer MER measures what percentage of your new customer order revenue is spent on advertising. This is a key metric for understanding customer acquisition efficiency. ## Formula **NC MER** = ( [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **New Customer Order Revenue** ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------- | --------------------------------------------------------- | | **Total Ad Spend** | Combined advertising spend across all connected platforms | | [**New Customer Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) | Total revenue from first-time buyer orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generated **\$80,000** in new customer revenue while spending **\$40,000** on advertising. | Metric | Value | Calculation | | -------------------- | -------- | --------------------------- | | Total Ad Spend | \$40,000 | All ad platforms | | New Customer Revenue | \$80,000 | First-time buyers | | NC MER | 50% | (\$40,000 ÷ \$80,000) × 100 | A NC MER of 50% means you spend \$0.50 on advertising for every \$1 of new customer revenue. *** ## How It Works NC MER isolates marketing efficiency for customer acquisition. Since new customers typically cost more to acquire than returning customers to retain, NC MER is usually higher than overall MER. Comparing NC MER to total MER reveals how much your returning customers improve blended efficiency. *** ## When to Use | Scenario | Action | | ------------------------------- | ------------------------------------------- | | Acquisition budget planning | Set target NC MER based on allowable CAC | | Prospecting campaign evaluation | Compare NC MER across acquisition channels | | LTV:CAC analysis | Ensure NC MER allows for profitable payback | | Budget allocation decisions | Compare NC MER to RC MER for optimal split | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ----------------------------------------- | | [MER](/reference/metrics/orders/performance/total-mer) | Total MER including all customers | | [NC MER (Gross)](/reference/metrics/orders/performance/new-customer-gross-mer) | NC MER using gross revenue | | [NC MER (Net)](/reference/metrics/orders/performance/new-customer-net-mer) | NC MER using net revenue | | [New Customer ROAS](/reference/metrics/orders/performance/new-customer-roas) | Revenue-based efficiency (inverse metric) | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer RAAD: First-Order Revenue After Ad Spend Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-total-raad Track New Customer RAAD for your Shopify store. Measure first-order revenue remaining after advertising. New Customer RAAD measures new customer order revenue minus advertising spend—what remains from first-order revenue after paying for ads. ## Formula **NC RAAD** = **NC Total Order Revenue** − [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------- | ---------------------------------------- | | [**NC Total Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) | Total revenue from new customer orders | | **Ad Spend** | Total advertising spend across platforms | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to first-time buyers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Sum | *** ## Example New customers generated **\$80,000** revenue and you spent **\$25,000** on ads. | Component | Amount | Calculation | | ----------- | ------------ | ------------------------ | | NC Revenue | \$80,000 | First-time buyer revenue | | Ad Spend | \$25,000 | Advertising cost | | **NC RAAD** | **\$55,000** | \$80,000 − \$25,000 | *** ## How It Works NC RAAD shows how much new customer revenue remains after advertising costs. Positive NC RAAD means your acquisition spend is justified by first-order revenue. Compare to RC RAAD to see retention value. *** ## When to Use | Scenario | Action | | ------------------------- | -------------------------------------------- | | Measuring acquisition ROI | Positive NC RAAD validates acquisition spend | | Comparing segments | NC RAAD vs RC RAAD shows retention impact | | Budget planning | Set acquisition budgets against NC RAAD | | Channel optimization | Compare NC RAAD across channels | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ------------------------------ | | [RC RAAD](/reference/metrics/orders/performance/returning-customer-total-raad) | RAAD from returning customers | | [RAAD (Total)](/reference/metrics/orders/performance/total-raad) | Overall revenue after ad spend | | [CAC](/reference/metrics/orders/performance/cac) | Cost per new customer | [See all Performance metrics →](/reference/metrics/orders/performance) # New Customer RAAD %: First-Order Revenue Retention Rate Source: https://docs.upstackdata.com/reference/metrics/orders/performance/new-customer-total-raad-percent Track new customer RAAD percentage for your Shopify store. Measure what share of first-order revenue remains after ad spend. New Customer RAAD % measures what share of first-order revenue remains after subtracting ad spend—showing acquisition efficiency as a margin. ## Formula **New Customer RAAD %** = ( [**New Customer Total Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) − [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ) ÷ [**New Customer Total Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | ------------------------------------ | | [**New Customer Total Revenue**](/reference/metrics/orders/revenue/new-customer-total-revenue) | Revenue from first-time buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$50,000** from new customer orders and spends **\$15,000** on ads. | Component | Value | Calculation | | ----------------------- | -------- | ------------------- | | New Customer Revenue | \$50,000 | First-order sales | | Ad Spend | \$15,000 | Marketing cost | | RAAD Amount | \$35,000 | \$50,000 − \$15,000 | | **New Customer RAAD %** | **70%** | \$35,000 ÷ \$50,000 | *** ## How It Works New Customer RAAD % expresses acquisition efficiency as a margin. Higher percentages mean you retain more of first-order revenue after advertising costs. This helps evaluate if your acquisition costs are sustainable relative to first-order value. *** ## Benchmarks | Rating | Range | | ----------- | --------- | | Excellent | > 60% | | Good | 40% – 60% | | Moderate | 20% – 40% | | Challenging | \< 20% | Note: First-order margins are typically lower than overall RAAD % because acquisition costs are concentrated on new customers. *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------- | ------------------------------ | | [New Customer RAAD](/reference/metrics/orders/performance/new-customer-total-raad) | Absolute amount | | [RAAD %](/reference/metrics/orders/performance/total-raad-percent) | Overall revenue retention rate | | [New Customer CPA](/reference/metrics/orders/performance/cac) | Cost to acquire each customer | [See all Performance metrics →](/reference/metrics/orders/performance) # Purchase Frequency: Average Orders per Customer Source: https://docs.upstackdata.com/reference/metrics/orders/performance/purchase-frequency Track how many times customers purchase from your store on average. Learn the formula, see examples, and optimize retention strategies. The average number of orders placed per unique customer in the selected period. ## Formula **Purchase Frequency** = [**Total Orders**](/reference/metrics/orders/counts/orders) ÷ [**Unique Customers**](/reference/metrics/orders/customers/unique-customers) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------- | ------------------------------------------------ | | [**Total Orders**](/reference/metrics/orders/counts/orders) | Number of orders placed in the period | | [**Unique Customers**](/reference/metrics/orders/customers/unique-customers) | Distinct customers who placed at least one order | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Number | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store had **2,847 orders** from **1,890 unique customers** this month: | Metric | Value | | ---------------------- | -------- | | Total Orders | 2,847 | | Unique Customers | 1,890 | | **Purchase Frequency** | **1.51** | On average, each customer placed 1.51 orders during the month, indicating healthy repeat purchasing behavior. *** ## How It Works Purchase Frequency divides total orders by the count of unique customers who placed those orders. A frequency of 1.0 means every customer ordered exactly once. Higher values indicate stronger repeat purchase behavior and customer loyalty. *** ## When to Use | Scenario | Action | | ----------------------------- | ------------------------------------------------------------- | | Measuring customer loyalty | Higher frequency signals stronger retention and repeat buyers | | Evaluating retention programs | Track if loyalty initiatives increase repeat purchases | | Comparing customer segments | New vs. returning customers often show different frequencies | | Forecasting revenue | Combine with AOV to project customer lifetime value | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ----------------------------------------------------------- | | [Average Order Value](/reference/metrics/orders/aov/total-aov) | Revenue per order; multiply by frequency for customer value | | [Total Orders](/reference/metrics/orders/counts/orders) | Numerator in the frequency calculation | | [Unique Customers](/reference/metrics/orders/customers/unique-customers) | Denominator in the frequency calculation | [See all Performance metrics →](/reference/metrics/orders/performance) # Repeat Rate: Measure Customer Retention Performance Source: https://docs.upstackdata.com/reference/metrics/orders/performance/repeat-rate Track what percentage of orders come from returning customers. Learn the formula, see examples, and use Repeat Rate to measure customer loyalty and retention. The percentage of total orders placed by returning customers. ## Formula **Repeat Rate** = [**Returning Customer Orders**](/reference/metrics/orders/counts/orders) ÷ [**Total Orders**](/reference/metrics/orders/counts/orders) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [**Returning Customer Orders**](/reference/metrics/orders/customers/returning-customers) | Orders placed by customers with at least one prior purchase | | [**Total Orders**](/reference/metrics/orders/counts/orders) | All orders placed in the selected period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store processed **1,247 orders** in January with a **38% Repeat Rate**: | Customer Type | Orders | Share | | ------------------- | ------ | ----- | | New Customers | 773 | 62% | | Returning Customers | 474 | 38% | *** ## How It Works Repeat Rate measures customer loyalty by calculating what percentage of orders come from customers who have purchased before. Shopify identifies returning customers based on their email address matching a previous order. Higher repeat rates indicate stronger customer retention and brand loyalty. *** ## When to Use | Scenario | Action | | ----------------------------- | ----------------------------------------------------------- | | Measuring retention health | Track repeat rate trends to gauge customer loyalty | | Evaluating loyalty programs | Compare repeat rate before and after launching initiatives | | Assessing acquisition quality | Low repeat rates may indicate poor customer-product fit | | Forecasting revenue | Higher repeat rates enable more predictable revenue streams | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------ | ------------------------------------------------------- | | [Orders](/reference/metrics/orders/counts/orders) | The denominator in the Repeat Rate formula | | [Returning Customers](/reference/metrics/orders/customers/returning-customers) | The numerator in the Repeat Rate formula | | [New Customer %](/reference/metrics/orders/customers/new-customer-percent) | The inverse segment (100% − Repeat Rate) | | [Customer Lifetime Value](/reference/metrics/orders/ltv/ltv-365) | Higher repeat rates typically correlate with higher LTV | | [Average Order Value](/reference/metrics/orders/aov/total-aov) | Compare AOV between new and returning customers | [See all Performance metrics →](/reference/metrics/orders/performance) # Returning Customer CM1 MER: Repeat Order Gross Margin Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/returning-customer-cm1-mer Track returning customer CM1 MER for your Shopify store. Measure gross margin generated per dollar of ad spend on repeat orders. Returning Customer CM1 MER measures how much gross margin (revenue minus COGS) you generate from repeat orders per dollar of ad spend. ## Formula **Returning Customer CM1 MER** = [**Returning Customer CM1**](/reference/metrics/orders/contribution-margin/returning-customer-cm1) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ------------------------------------- | | [**Returning Customer CM1**](/reference/metrics/orders/contribution-margin/returning-customer-cm1) | Gross margin from repeat buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$60,000** CM1 from returning customers and spends **\$15,000** on ads. | Component | Value | Calculation | | ------------------------------ | -------- | ------------------------- | | Returning Customer CM1 | \$60,000 | Repeat order gross margin | | Ad Spend | \$15,000 | Marketing cost | | **Returning Customer CM1 MER** | **4.0** | \$60,000 ÷ \$15,000 | *** ## How It Works Returning Customer CM1 MER shows gross margin efficiency for repeat customers. This is typically higher than New Customer CM1 MER because repeat customers don't require acquisition costs—they're already in your customer base. *** ## Benchmarks | Rating | Range | | ---------- | --------- | | Excellent | > 4.0 | | Good | 2.5 – 4.0 | | Moderate | 1.5 – 2.5 | | Concerning | \< 1.5 | Returning customer CM1 MER should be meaningfully higher than new customer CM1 MER. *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------ | | [Returning Customer CM1](/reference/metrics/orders/contribution-margin/returning-customer-cm1) | Numerator (gross margin) | | [CM1 MER](/reference/metrics/orders/performance/cm1-mer) | Overall CM1 efficiency | | [New Customer CM1 MER](/reference/metrics/orders/performance/new-customer-cm1-mer) | First-order efficiency | [See all Performance metrics →](/reference/metrics/orders/performance) # Returning Customer CM1 ROAS: Retention Gross Margin Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/returning-customer-cm1-roas Track returning customer gross margin return on ad spend. Measure how much CM1 profit from repeat buyers you generate per ad dollar. Returning Customer CM1 ROAS measures how much gross margin from repeat buyer orders you earn for every dollar spent on advertising. ## Formula **RC CM1 ROAS** = [**Returning Customer CM1**](/reference/metrics/orders/contribution-margin/returning-customer-cm1) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------ | | [**Returning Customer CM1**](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) | Gross margin from returning customer orders after COGS | | **Ad Spend** | Total advertising spend across all platforms | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Multiplier | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generated **\$105,000** in returning customer CM1 while spending **\$50,000** on advertising. | Metric | Value | Calculation | | ---------------------- | --------- | ------------------------ | | Returning Customer CM1 | \$105,000 | RC Net Revenue − RC COGS | | Total Ad Spend | \$50,000 | All ad platforms | | RC CM1 ROAS | 2.1x | \$105,000 ÷ \$50,000 | A RC CM1 ROAS of 2.1x means you earn \$2.10 in gross margin from returning customers for every \$1 spent on advertising. *** ## How It Works RC CM1 ROAS isolates the gross margin contribution from repeat customer purchases relative to advertising spend. Returning customers typically have higher CM1 ROAS than new customers because remarketing costs are often lower. *** ## When to Use | Scenario | Action | | -------------------------------------- | ----------------------------------------------------- | | Evaluating remarketing campaigns | Compare RC CM1 ROAS to NC CM1 ROAS | | Retention program ROI | Measure gross margin from loyalty efforts | | Product-mix analysis for repeat buyers | See if returning customers buy higher-margin products | | Budget split decisions | Allocate spend based on RC vs NC efficiency | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------- | ---------------------------------------------------- | | [CM1 ROAS](/reference/metrics/orders/performance/cm1-roas) | Total CM1 ROAS including all customers | | [RC CM2 ROAS](/reference/metrics/orders/performance/returning-customer-cm2-roas) | Includes fulfillment costs for returning customers | | [RC CM3 ROAS](/reference/metrics/orders/performance/returning-customer-cm3-roas) | Includes all marketing costs for returning customers | | [NC CM1 ROAS](/reference/metrics/orders/performance/new-customer-cm1-roas) | Gross margin efficiency for new customers | [See all Performance metrics →](/reference/metrics/orders/performance) # Returning Customer CM2 MER: Repeat Order Variable Margin Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/returning-customer-cm2-mer Track returning customer CM2 MER for your Shopify store. Measure variable margin generated per dollar of ad spend on repeat orders. Returning Customer CM2 MER measures how much variable margin (after COGS and fulfillment) you generate from repeat orders per dollar of ad spend. ## Formula **Returning Customer CM2 MER** = [**Returning Customer CM2**](/reference/metrics/orders/contribution-margin/returning-customer-cm2) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ---------------------------------------- | | [**Returning Customer CM2**](/reference/metrics/orders/contribution-margin/returning-customer-cm2) | Variable margin from repeat buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$48,000** CM2 from returning customers and spends **\$15,000** on ads. | Component | Value | Calculation | | ------------------------------ | -------- | ---------------------------- | | Returning Customer CM2 | \$48,000 | Repeat order variable margin | | Ad Spend | \$15,000 | Marketing cost | | **Returning Customer CM2 MER** | **3.2** | \$48,000 ÷ \$15,000 | *** ## How It Works Returning Customer CM2 MER shows variable margin efficiency for repeat orders. Since returning customers don't require acquisition costs, this ratio is typically higher than the new customer equivalent. *** ## Benchmarks | Rating | Range | | ---------- | --------- | | Excellent | > 3.5 | | Good | 2.0 – 3.5 | | Moderate | 1.2 – 2.0 | | Concerning | \< 1.2 | Strong returning customer CM2 MER indicates healthy repeat purchase economics. *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | --------------------------- | | [Returning Customer CM2](/reference/metrics/orders/contribution-margin/returning-customer-cm2) | Numerator (variable margin) | | [CM2 MER](/reference/metrics/orders/performance/cm2-mer) | Overall CM2 efficiency | | [New Customer CM2 MER](/reference/metrics/orders/performance/new-customer-cm2-mer) | First-order efficiency | [See all Performance metrics →](/reference/metrics/orders/performance) # Returning Customer CM2 ROAS: Repeat Order Variable Margin ROAS Source: https://docs.upstackdata.com/reference/metrics/orders/performance/returning-customer-cm2-roas Track returning customer CM2 ROAS for your Shopify store. Measure variable margin generated per dollar of ad spend on repeat orders. Returning Customer CM2 ROAS measures how much variable margin (after COGS and fulfillment) you generate from repeat orders per dollar of ad spend. ## Formula **Returning Customer CM2 ROAS** = [**Returning Customer CM2**](/reference/metrics/orders/contribution-margin/returning-customer-cm2) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ---------------------------------------- | | [**Returning Customer CM2**](/reference/metrics/orders/contribution-margin/returning-customer-cm2) | Variable margin from repeat buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$48,000** CM2 from returning customers and spends **\$15,000** on ads. | Component | Value | Calculation | | ------------------------------- | -------- | ---------------------------- | | Returning Customer CM2 | \$48,000 | Repeat order variable margin | | Ad Spend | \$15,000 | Marketing cost | | **Returning Customer CM2 ROAS** | **3.2** | \$48,000 ÷ \$15,000 | *** ## How It Works Returning Customer CM2 ROAS shows margin-adjusted efficiency for repeat orders. Since repeat customers are already acquired, this ratio should be substantially higher than new customer CM2 ROAS. *** ## Benchmarks | Rating | Range | | ---------- | --------- | | Excellent | > 3.5 | | Good | 2.0 – 3.5 | | Moderate | 1.2 – 2.0 | | Concerning | \< 1.2 | High returning customer CM2 ROAS indicates strong repeat purchase economics. *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | --------------------------- | | [Returning Customer CM2](/reference/metrics/orders/contribution-margin/returning-customer-cm2) | Numerator (variable margin) | | [CM2 ROAS](/reference/metrics/orders/performance/cm2-roas) | Overall CM2 ROAS | | [New Customer CM2 ROAS](/reference/metrics/orders/performance/new-customer-cm2-roas) | First-order CM2 ROAS | [See all Performance metrics →](/reference/metrics/orders/performance) # Returning Customer CM3 MER: Repeat Order Contribution Margin Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/returning-customer-cm3-mer Track returning customer CM3 MER for your Shopify store. Measure contribution margin generated per dollar of ad spend on repeat orders. Returning Customer CM3 MER measures how much contribution margin (after all variable costs including ad spend) you generate from repeat orders per dollar of ad spend. ## Formula **Returning Customer CM3 MER** = [**Returning Customer CM3**](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------------------ | -------------------------------------------- | | [**Returning Customer CM3**](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) | Contribution margin from repeat buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$33,000** CM3 from returning customers and spends **\$15,000** on ads. | Component | Value | Calculation | | ------------------------------ | -------- | -------------------------------- | | Returning Customer CM3 | \$33,000 | Repeat order contribution margin | | Ad Spend | \$15,000 | Marketing cost | | **Returning Customer CM3 MER** | **2.2** | \$33,000 ÷ \$15,000 | *** ## How It Works Returning Customer CM3 MER shows contribution margin efficiency for repeat orders. This is typically much higher than new customer CM3 MER because repeat orders don't carry acquisition costs—just their share of ongoing ad spend. *** ## Benchmarks | Rating | Range | | ---------- | --------- | | Excellent | > 2.5 | | Good | 1.5 – 2.5 | | Moderate | 0.8 – 1.5 | | Concerning | \< 0.8 | Strong returning customer CM3 MER indicates healthy repeat purchase contribution. *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | ------------------------------- | | [Returning Customer CM3](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) | Numerator (contribution margin) | | [CM3 MER](/reference/metrics/orders/performance/cm3-mer) | Overall CM3 efficiency | | [New Customer CM3 MER](/reference/metrics/orders/performance/new-customer-cm3-mer) | First-order efficiency | [See all Performance metrics →](/reference/metrics/orders/performance) # Returning Customer CM3 ROAS: Repeat Order Contribution Margin ROAS Source: https://docs.upstackdata.com/reference/metrics/orders/performance/returning-customer-cm3-roas Track returning customer CM3 ROAS for your Shopify store. Measure contribution margin generated per dollar of ad spend on repeat orders. Returning Customer CM3 ROAS measures how much contribution margin (after all variable costs including ad spend) you generate from repeat orders per dollar of ad spend. ## Formula **Returning Customer CM3 ROAS** = [**Returning Customer CM3**](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------------------------------ | -------------------------------------------- | | [**Returning Customer CM3**](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) | Contribution margin from repeat buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$33,000** CM3 from returning customers and spends **\$15,000** on ads. | Component | Value | Calculation | | ------------------------------- | -------- | -------------------------------- | | Returning Customer CM3 | \$33,000 | Repeat order contribution margin | | Ad Spend | \$15,000 | Marketing cost | | **Returning Customer CM3 ROAS** | **2.2** | \$33,000 ÷ \$15,000 | *** ## How It Works Returning Customer CM3 ROAS shows contribution margin efficiency for repeat purchases. This should be much higher than new customer CM3 ROAS since repeat orders don't carry acquisition costs. *** ## Benchmarks | Rating | Range | | ---------- | --------- | | Excellent | > 2.5 | | Good | 1.5 – 2.5 | | Moderate | 0.8 – 1.5 | | Concerning | \< 0.8 | Strong returning customer CM3 ROAS indicates healthy repeat purchase contribution. *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | ------------------------------- | | [Returning Customer CM3](/reference/metrics/orders/contribution-margin/returning-customer-contribution-margin) | Numerator (contribution margin) | | [CM3 ROAS](/reference/metrics/orders/performance/cm3-roas) | Overall CM3 ROAS | | [New Customer CM3 ROAS](/reference/metrics/orders/performance/new-customer-cm3-roas) | First-order CM3 ROAS | [See all Performance metrics →](/reference/metrics/orders/performance) # Returning Customer CM4 MER: Repeat Order Operating Profit Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/returning-customer-cm4-mer Track returning customer CM4 MER for your Shopify store. Measure operating profit generated per dollar of ad spend on repeat orders. Returning Customer CM4 MER measures how much operating profit (after all costs including OPEX) you generate from repeat orders per dollar of ad spend. ## Formula **Returning Customer CM4 MER** = [**Returning Customer CM4**](/reference/metrics/orders/contribution-margin/returning-customer-cm4) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ----------------------------------------- | | [**Returning Customer CM4**](/reference/metrics/orders/contribution-margin/returning-customer-cm4) | Operating profit from repeat buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$28,000** CM4 from returning customers and spends **\$15,000** on ads. | Component | Value | Calculation | | ------------------------------ | -------- | ----------------------------- | | Returning Customer CM4 | \$28,000 | Repeat order operating profit | | Ad Spend | \$15,000 | Marketing cost | | **Returning Customer CM4 MER** | **1.87** | \$28,000 ÷ \$15,000 | *** ## How It Works Returning Customer CM4 MER shows fully-loaded profitability for repeat orders. This should be substantially higher than new customer CM4 MER since repeat orders don't carry acquisition costs and benefit from operational efficiency. *** ## Benchmarks | Rating | Range | | ---------- | --------- | | Excellent | > 2.0 | | Good | 1.2 – 2.0 | | Moderate | 0.6 – 1.2 | | Concerning | \< 0.6 | Strong returning customer CM4 MER is essential for overall profitability. *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ---------------------------- | | [Returning Customer CM4](/reference/metrics/orders/contribution-margin/returning-customer-cm4) | Numerator (operating profit) | | [CM4 MER](/reference/metrics/orders/performance/cm4-mer) | Overall CM4 efficiency | | [New Customer CM4 MER](/reference/metrics/orders/performance/new-customer-cm4-mer) | First-order efficiency | [See all Performance metrics →](/reference/metrics/orders/performance) # Returning Customer CM4 ROAS: Repeat Order Operating Profit ROAS Source: https://docs.upstackdata.com/reference/metrics/orders/performance/returning-customer-cm4-roas Track returning customer CM4 ROAS for your Shopify store. Measure operating profit generated per dollar of ad spend on repeat orders. Returning Customer CM4 ROAS measures how much operating profit (after all costs including OPEX) you generate from repeat orders per dollar of ad spend. ## Formula **Returning Customer CM4 ROAS** = [**Returning Customer CM4**](/reference/metrics/orders/contribution-margin/returning-customer-cm4) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | ----------------------------------------- | | [**Returning Customer CM4**](/reference/metrics/orders/contribution-margin/returning-customer-cm4) | Operating profit from repeat buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$28,000** CM4 from returning customers and spends **\$15,000** on ads. | Component | Value | Calculation | | ------------------------------- | -------- | ----------------------------- | | Returning Customer CM4 | \$28,000 | Repeat order operating profit | | Ad Spend | \$15,000 | Marketing cost | | **Returning Customer CM4 ROAS** | **1.87** | \$28,000 ÷ \$15,000 | *** ## How It Works Returning Customer CM4 ROAS shows fully-loaded profitability for repeat orders. This should be substantially higher than new customer CM4 ROAS since repeat orders don't carry acquisition costs. *** ## Benchmarks | Rating | Range | | ---------- | --------- | | Excellent | > 2.0 | | Good | 1.2 – 2.0 | | Moderate | 0.6 – 1.2 | | Concerning | \< 0.6 | Strong returning customer CM4 ROAS is essential for overall profitability. *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ---------------------------- | | [Returning Customer CM4](/reference/metrics/orders/contribution-margin/returning-customer-cm4) | Numerator (operating profit) | | [CM4 ROAS](/reference/metrics/orders/performance/cm4-roas) | Overall CM4 ROAS | | [New Customer CM4 ROAS](/reference/metrics/orders/performance/new-customer-cm4-roas) | First-order CM4 ROAS | [See all Performance metrics →](/reference/metrics/orders/performance) # Returning Customer MER (Gross Sales): Retention Gross Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/returning-customer-gross-mer Track returning customer marketing efficiency using gross sales. Understand what percentage of repeat buyer gross revenue is spent on ads. Returning Customer MER (Gross) measures what percentage of your returning customer gross sales (before discounts and refunds) is spent on advertising. ## Formula **RC MER (Gross)** = ( [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **RC Gross Order Sales** ) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------- | | **Total Ad Spend** | Combined advertising spend across all connected platforms | | [**RC Gross Revenue**](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Gross order sales from returning customers before discounts/refunds | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generated **\$130,000** in returning customer gross sales while spending **\$40,000** on advertising. | Metric | Value | Calculation | | -------------- | --------- | ---------------------------- | | Total Ad Spend | \$40,000 | All ad platforms | | RC Gross Sales | \$130,000 | Before discounts/refunds | | RC MER (Gross) | 30.8% | (\$40,000 ÷ \$130,000) × 100 | A RC Gross MER of 30.8% means you spend \$0.31 on advertising for every \$1 of returning customer gross sales. *** ## How It Works RC Gross MER uses returning customer gross sales as the revenue base, excluding the impact of loyalty discounts or refunds. This helps you understand retention efficiency before repeat customer promotions are applied. *** ## When to Use | Scenario | Action | | --------------------------------- | ----------------------------------------------- | | Loyalty discount analysis | See MER before loyalty promo impact | | Retention campaign comparison | Normalize for different discount strategies | | Isolating remarketing performance | Remove promo noise from RC efficiency | | Pre-discount retention cost | Understand true cost relative to intended spend | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ---------------------------------------- | | [RC MER](/reference/metrics/orders/performance/returning-customer-total-mer) | RC MER using total revenue | | [RC MER (Net)](/reference/metrics/orders/performance/returning-customer-net-mer) | RC MER using net revenue after discounts | | [MER (Gross)](/reference/metrics/orders/performance/gross-mer) | Gross MER for all customers | | [RC Gross Revenue](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | The denominator in this calculation | [See all Performance metrics →](/reference/metrics/orders/performance) # Returning Customer MER: Repeat Order Marketing Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/returning-customer-mer Track Returning Customer MER for your Shopify store. Measure marketing efficiency for repeat buyers. Returning Customer MER measures what percentage of returning customer order revenue is spent on advertising—marketing efficiency for retention. ## Formula **RC MER** = ( [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **RC Order Revenue** ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | -------------------------------------- | | **Ad Spend** | Total advertising spend | | [**RC Total Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Revenue from returning customer orders | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to repeat buyers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$20,000** on ads and returning customers generated **\$120,000** in revenue. | Component | Value | Calculation | | ---------- | --------- | -------------------------- | | Ad Spend | \$20,000 | Total advertising | | RC Revenue | \$120,000 | Repeat buyer revenue | | **RC MER** | **16.7%** | \$20,000 ÷ \$120,000 × 100 | *** ## How It Works RC MER shows marketing efficiency for returning customers. It's typically lower than NC MER because repeat customers don't require acquisition cost—they're already in your database. The gap between NC MER and RC MER shows the efficiency gain from retention. *** ## When to Use | Scenario | Action | | ------------------------------ | --------------------------------------------- | | Measuring retention efficiency | Track RC MER vs NC MER | | Validating retention value | Lower RC MER = more efficient repeat business | | Budget allocation | Shift spend toward segments with better MER | | LTV modeling | Use RC MER for lifetime value projections | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | ---------------------------------- | | [MER](/reference/metrics/orders/performance/mer) | Overall marketing efficiency ratio | | [NC MER](/reference/metrics/orders/performance/new-customer-mer) | MER for new customers | | [LTV](/reference/metrics/orders/ltv/ltv) | Customer lifetime value | [See all Performance metrics →](/reference/metrics/orders/performance) # Returning Customer MER (Net Sales): Retention Net Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/returning-customer-net-mer Track returning customer marketing efficiency using net sales. Understand what percentage of repeat buyer net revenue is spent on ads. Returning Customer MER (Net) measures what percentage of your returning customer net sales (after discounts and refunds) is spent on advertising. ## Formula **RC MER (Net)** = ( [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **RC Net Order Sales** ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | | **Total Ad Spend** | Combined advertising spend across all connected platforms | | [**RC Net Revenue**](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Net order sales from returning customers after discounts/refunds | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generated **\$110,000** in returning customer net sales while spending **\$40,000** on advertising. | Metric | Value | Calculation | | -------------- | --------- | ---------------------------- | | Total Ad Spend | \$40,000 | All ad platforms | | RC Net Sales | \$110,000 | After discounts/refunds | | RC MER (Net) | 36.4% | (\$40,000 ÷ \$110,000) × 100 | A RC Net MER of 36.4% means you spend \$0.36 on advertising for every \$1 of returning customer net sales actually collected. *** ## How It Works RC Net MER uses returning customer net sales as the revenue base, accounting for loyalty discounts and refunds. This gives you the most accurate view of retention efficiency relative to revenue actually kept from repeat customers. *** ## When to Use | Scenario | Action | | --------------------------------- | ----------------------------------------- | | True retention cost analysis | Include discount and refund impact | | Heavy loyalty discount strategies | See real MER after promo impact | | High repeat customer refund rates | Understand true marketing cost | | Setting retention budget limits | Ensure RC MER allows for positive margins | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | ----------------------------------- | | [RC MER](/reference/metrics/orders/performance/returning-customer-total-mer) | RC MER using total revenue | | [RC MER (Gross)](/reference/metrics/orders/performance/returning-customer-gross-mer) | RC MER using gross revenue | | [MER (Net)](/reference/metrics/orders/performance/net-mer) | Net MER for all customers | | [RC Net Revenue](/reference/metrics/orders/revenue/returning-customer-net-revenue) | The denominator in this calculation | [See all Performance metrics →](/reference/metrics/orders/performance) # Returning Customer ROAS: Repeat Order Return on Ad Spend Source: https://docs.upstackdata.com/reference/metrics/orders/performance/returning-customer-roas Track returning customer ROAS for your Shopify store. Measure revenue generated from repeat orders per dollar of ad spend. Returning Customer ROAS measures how much revenue you generate from repeat customer orders per dollar of ad spend. ## Formula **Returning Customer ROAS** = [**Returning Customer Total Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) ÷ [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------- | -------------------------------- | | [**Returning Customer Total Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Revenue from repeat buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Ratio | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$100,000** from returning customer orders and spends **\$15,000** on ads. | Component | Value | Calculation | | --------------------------- | --------- | -------------------- | | Returning Customer Revenue | \$100,000 | Repeat order sales | | Ad Spend | \$15,000 | Marketing cost | | **Returning Customer ROAS** | **6.67** | \$100,000 ÷ \$15,000 | *** ## How It Works Returning Customer ROAS shows how efficiently your ad spend drives repeat revenue. This is typically higher than New Customer ROAS because repeat customers are already acquired—they just need to be retained or reminded. *** ## Benchmarks | Rating | Range | | ---------- | --------- | | Excellent | > 8.0 | | Good | 5.0 – 8.0 | | Moderate | 3.0 – 5.0 | | Concerning | \< 3.0 | Returning customer ROAS should be meaningfully higher than new customer ROAS. *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | -------------------------- | | [Returning Customer Total Revenue](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Numerator (revenue) | | [ROAS](/reference/metrics/orders/performance/roas) | Overall return on ad spend | | [New Customer ROAS](/reference/metrics/orders/performance/new-customer-roas) | First-order ROAS | [See all Performance metrics →](/reference/metrics/orders/performance) # Returning Customer MER: Retention Marketing Efficiency Source: https://docs.upstackdata.com/reference/metrics/orders/performance/returning-customer-total-mer Track your returning customer marketing efficiency ratio. Understand what percentage of repeat buyer revenue is spent on advertising. Returning Customer MER measures what percentage of your returning customer order revenue is spent on advertising. This is a key metric for understanding retention marketing efficiency. ## Formula **RC MER** = ( [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Returning Customer Order Revenue** ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | | **Total Ad Spend** | Combined advertising spend across all connected platforms | | [**Returning Customer Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Total revenue from repeat buyer orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generated **\$120,000** in returning customer revenue while spending **\$40,000** on advertising. | Metric | Value | Calculation | | -------------------------- | --------- | ---------------------------- | | Total Ad Spend | \$40,000 | All ad platforms | | Returning Customer Revenue | \$120,000 | Repeat buyers | | RC MER | 33.3% | (\$40,000 ÷ \$120,000) × 100 | A RC MER of 33.3% means you spend \$0.33 on advertising for every \$1 of returning customer revenue. *** ## How It Works RC MER isolates marketing efficiency for customer retention. Since returning customers are typically cheaper to convert than new customers, RC MER is usually lower than NC MER. The difference reveals how much value your existing customer base adds to blended efficiency. *** ## When to Use | Scenario | Action | | -------------------------------- | ---------------------------------------------- | | Retention marketing evaluation | Measure remarketing efficiency | | Budget allocation decisions | Compare RC MER to NC MER for optimal split | | Loyalty program ROI | Understand cost to generate repeat purchases | | Identifying retention efficiency | Lower RC MER indicates strong customer loyalty | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | -------------------------------------- | | [MER](/reference/metrics/orders/performance/total-mer) | Total MER including all customers | | [RC MER (Gross)](/reference/metrics/orders/performance/returning-customer-gross-mer) | RC MER using gross revenue | | [RC MER (Net)](/reference/metrics/orders/performance/returning-customer-net-mer) | RC MER using net revenue | | [NC MER](/reference/metrics/orders/performance/new-customer-total-mer) | Marketing efficiency for new customers | [See all Performance metrics →](/reference/metrics/orders/performance) # Returning Customer RAAD: Repeat Order Revenue After Ad Spend Source: https://docs.upstackdata.com/reference/metrics/orders/performance/returning-customer-total-raad Track Returning Customer RAAD for your Shopify store. Measure repeat order revenue remaining after advertising. Returning Customer RAAD measures returning customer order revenue minus advertising spend—what remains from repeat order revenue after paying for ads. ## Formula **RC RAAD** = **RC Total Order Revenue** − [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [**RC Total Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Total revenue from returning customer orders | | **Ad Spend** | Total advertising spend across platforms | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions#customer-type) | Filters to repeat buyers | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Sum | *** ## Example Returning customers generated **\$120,000** revenue and you spent **\$25,000** on ads. | Component | Amount | Calculation | | ----------- | ------------ | -------------------- | | RC Revenue | \$120,000 | Repeat buyer revenue | | Ad Spend | \$25,000 | Advertising cost | | **RC RAAD** | **\$95,000** | \$120,000 − \$25,000 | *** ## How It Works RC RAAD shows how much returning customer revenue remains after advertising costs. RC RAAD is typically higher than NC RAAD because repeat customers generate revenue without requiring new acquisition cost. *** ## When to Use | Scenario | Action | | ------------------------- | ----------------------------------------------- | | Measuring retention value | RC RAAD shows repeat order impact after ads | | Comparing segments | RC RAAD vs NC RAAD demonstrates retention value | | LTV analysis | Use RC RAAD for lifetime value projections | | Budget allocation | Higher RC RAAD suggests investing in retention | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | ------------------------------ | | [NC RAAD](/reference/metrics/orders/performance/new-customer-total-raad) | RAAD from new customers | | [RAAD (Total)](/reference/metrics/orders/performance/total-raad) | Overall revenue after ad spend | | [LTV](/reference/metrics/orders/ltv/ltv) | Customer lifetime value | [See all Performance metrics →](/reference/metrics/orders/performance) # Returning Customer RAAD %: Repeat Order Revenue Retention Rate Source: https://docs.upstackdata.com/reference/metrics/orders/performance/returning-customer-total-raad-percent Track returning customer RAAD percentage for your Shopify store. Measure what share of repeat order revenue remains after ad spend. Returning Customer RAAD % measures what share of repeat order revenue remains after subtracting ad spend—showing retention profitability as a margin. ## Formula **Returning Customer RAAD %** = ( [**Returning Customer Total Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) − [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ) ÷ [**Returning Customer Total Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------- | -------------------------------- | | [**Returning Customer Total Revenue**](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Revenue from repeat buyer orders | | [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Total advertising spend | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Advertising Platforms](/sources/catalog/facebook-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generates **\$100,000** from returning customer orders and spends **\$15,000** on ads. | Component | Value | Calculation | | ----------------------------- | --------- | -------------------- | | Returning Customer Revenue | \$100,000 | Repeat order sales | | Ad Spend | \$15,000 | Marketing cost | | RAAD Amount | \$85,000 | \$100,000 − \$15,000 | | **Returning Customer RAAD %** | **85%** | \$85,000 ÷ \$100,000 | *** ## How It Works Returning Customer RAAD % shows how profitable your repeat customer revenue is relative to ad spend. Repeat customers typically have higher RAAD % because no acquisition cost is needed—they're already customers. *** ## Benchmarks | Rating | Range | | ------------ | --------- | | Excellent | > 85% | | Good | 70% – 85% | | Moderate | 50% – 70% | | Needs Review | \< 50% | Returning customer RAAD % should be significantly higher than new customer RAAD % since no acquisition cost is incurred. *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------ | | [Returning Customer RAAD](/reference/metrics/orders/performance/returning-customer-total-raad) | Absolute amount | | [RAAD %](/reference/metrics/orders/performance/total-raad-percent) | Overall revenue retention rate | | [New Customer RAAD %](/reference/metrics/orders/performance/new-customer-total-raad-percent) | First-order retention rate | [See all Performance metrics →](/reference/metrics/orders/performance) # ROAS: Return on Ad Spend from Shopify Orders Source: https://docs.upstackdata.com/reference/metrics/orders/performance/roas Track ROAS to measure how many dollars of order revenue you generate for every dollar spent on advertising. The core efficiency metric for e-commerce. ROAS (Return on Ad Spend) measures how many dollars of order revenue you generate for every dollar spent on advertising. ## Formula **Return on Ad Spend** = [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) ÷ [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------- | ------------------------------------------------------- | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Complete order revenue including shipping and taxes | | [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) | Sum of advertising spend across all connected platforms | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Multiplier (e.g., 3.5×) | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store spent **\$25,000** on advertising last month and generated **\$87,500** in order revenue: | Metric | Value | | -------------- | -------- | | Total Revenue | \$87,500 | | Total Ad Spend | \$25,000 | | **ROAS** | **3.5×** | A ROAS of 3.5× means you generated \$3.50 in revenue for every \$1 spent on ads. *** ## How It Works ROAS divides your total Shopify order revenue by your total advertising spend. A ROAS of 3× means every advertising dollar returns \$3 in revenue. This metric helps you evaluate whether your ad spend is profitable and compare efficiency across campaigns and time periods. *** ## When to Use | Scenario | Action | | ------------------------ | -------------------------------------------------------- | | Evaluating ad efficiency | Compare ROAS against your break-even threshold | | Setting budget targets | Use ROAS to determine sustainable spend levels | | Campaign comparisons | Identify which campaigns deliver the best return | | Profitability analysis | Combine with margin data to assess true ad profitability | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ---------------------------------------------- | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | Numerator — total order revenue | | [CAC](/reference/metrics/orders/performance/cac) | Cost per new customer acquired | | [New Customer ROAS](/reference/metrics/orders/performance/new-customer-roas) | ROAS from first-time buyers only | | [MER](/reference/metrics/orders/performance/mer) | Inverse ratio — spend as percentage of revenue | [See all Performance metrics →](/reference/metrics/orders/performance) # Subscription Initial Purchase CPA: Cost Per Subscription Acquisition Source: https://docs.upstackdata.com/reference/metrics/orders/performance/subscription-initial-purchase-cpa Track cost per subscription initial purchase for your Shopify store. Optimize ad spend efficiency for subscription-based customer acquisition. The cost to acquire a subscription initial purchase order, calculated as ad spend divided by subscription initial purchase orders. ## Formula **Subscription Initial Purchase CPA** = **Spend** ÷ [**Subscription Initial Purchase Orders**](/reference/metrics/orders/counts/subscription-initial-purchase-orders) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | | **Spend** | Total advertising spend for the selected period and attribution window | | [**Subscription Initial Purchase Orders**](/reference/metrics/orders/counts/subscription-initial-purchase-orders) | Number of attributed orders that were subscription initial purchases | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Subscription acquisition costs across different ad campaigns: | Campaign | Ad Spend | Initial Sub. Purchases | CPA | | ----------------- | -------- | ---------------------- | ------- | | Meta Subscription | \$5,000 | 125 | \$40.00 | | Google Search | \$3,200 | 64 | \$50.00 | | TikTok | \$2,500 | 42 | \$59.52 | *** ## How It Works Subscription Initial Purchase CPA measures how efficiently your advertising drives subscription sign-ups. It only counts orders identified as subscription initial purchases through matching with subscription\_initial\_purchase events. Lower CPA means more efficient acquisition of recurring customers from your Shopify store. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------------------ | | Evaluating subscription campaigns | Compare CPA across channels targeting subscriptions | | Setting subscription CAC targets | Use CPA to establish profitable acquisition thresholds | | Comparing to one-time CPA | See premium/discount for acquiring subscribers vs. one-time buyers | | Forecasting subscription LTV | Pair with subscription retention for payback analysis | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | [Subscription Initial Purchase ROAS](/reference/metrics/orders/performance/subscription-initial-purchase-roas) | Revenue efficiency for subscription acquisitions | | [Subscription Initial Purchase Orders](/reference/metrics/orders/counts/subscription-initial-purchase-orders) | Denominator in this calculation | | [CAC](/reference/metrics/orders/performance/cac) | Overall customer acquisition cost | | [CPA](/reference/metrics/orders/performance/cac) | General cost per acquisition | [See all Performance metrics →](/reference/metrics/orders/performance) # Subscription Initial Purchase ROAS: Return on Subscription Ads Source: https://docs.upstackdata.com/reference/metrics/orders/performance/subscription-initial-purchase-roas Track return on ad spend for subscription initial purchases in your Shopify store. Measure revenue efficiency of subscription acquisition campaigns. Revenue generated from subscription initial purchase orders per dollar spent on advertising. ## Formula **Subscription Initial Purchase ROAS** = [**Subscription Initial Purchase Revenue**](/reference/metrics/orders/revenue/subscription-initial-purchase-revenue) ÷ **Spend** ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | | [**Subscription Initial Purchase Revenue**](/reference/metrics/orders/revenue/subscription-initial-purchase-revenue) | Total revenue from subscription initial purchase orders | | **Spend** | Total advertising spend for the selected period and attribution window | | Metadata | | | --------------- | ------------------------------------------------------------ | | **Type** | Multiplier | | **Data Source** | [Upstack Pixel](/pixel), [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Subscription ROAS performance across advertising channels: | Channel | Sub. Initial Revenue | Ad Spend | ROAS | | ------- | -------------------- | -------- | ---- | | Meta | \$18,500 | \$5,000 | 3.7x | | Google | \$12,800 | \$3,200 | 4.0x | | TikTok | \$8,400 | \$2,500 | 3.4x | *** ## How It Works Subscription Initial Purchase ROAS measures the revenue return specifically from orders that start subscriptions. A 3x ROAS means you earn \$3 in subscription initial purchase revenue for every \$1 spent on ads. Since subscribers typically have higher LTV, even lower initial ROAS may be profitable. Data syncs from your Shopify subscription orders. *** ## When to Use | Scenario | Action | | --------------------------------- | ---------------------------------------------------------- | | Optimizing subscription campaigns | Allocate budget to highest subscription ROAS channels | | Comparing to standard ROAS | See if subscription-focused ads perform differently | | Forecasting subscriber value | Initial ROAS × expected retention = projected total return | | Setting efficiency targets | Establish minimum subscription ROAS for profitability | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------- | --------------------------------- | | [Subscription Initial Purchase CPA](/reference/metrics/orders/performance/subscription-initial-purchase-cpa) | Cost efficiency for same audience | | [Subscription Initial Purchase Revenue](/reference/metrics/orders/revenue/subscription-initial-purchase-revenue) | Numerator of this calculation | | [ROAS](/reference/metrics/orders/performance/roas) | Overall return on ad spend | | [New Customer ROAS](/reference/metrics/orders/performance/new-customer-roas) | ROAS for all new customers | [See all Performance metrics →](/reference/metrics/orders/performance) # Marketing Efficiency Ratio (MER): Ad Spend to Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/performance/total-mer Track your marketing efficiency ratio for Shopify stores. Understand what percentage of total order revenue is spent on advertising. Marketing Efficiency Ratio (MER) measures what percentage of your order revenue is spent on advertising. Lower is better—it means more revenue per ad dollar. ## Formula **MER** = ( [**Total Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ÷ **Total Order Revenue** ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | --------------------------------------------------------- | | **Total Ad Spend** | Combined advertising spend across all connected platforms | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Total order revenue including shipping and taxes | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store generated **\$200,000** in total revenue while spending **\$40,000** on advertising. | Metric | Value | Calculation | | ------------------- | --------- | ---------------------------- | | Total Ad Spend | \$40,000 | All ad platforms | | Total Order Revenue | \$200,000 | All Shopify orders | | MER | 20% | (\$40,000 ÷ \$200,000) × 100 | A MER of 20% means you spend \$0.20 on advertising for every \$1 of revenue generated. *** ## How It Works MER is the inverse of ROAS expressed as a percentage. While ROAS tells you how much revenue per ad dollar, MER tells you what portion of revenue goes to advertising. MER is often preferred for budget planning because it directly shows ad spend as a percentage of revenue. *** ## When to Use | Scenario | Action | | ------------------------ | ------------------------------------------------- | | Budget planning | Set target MER as percentage of projected revenue | | Cross-channel comparison | Compare MER across platforms | | Profitability analysis | Ensure MER leaves room for margins | | Trend monitoring | Track MER over time to spot efficiency changes | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------- | ------------------------------------------------ | | [MER (Gross Sales)](/reference/metrics/orders/performance/gross-mer) | MER using gross revenue before discounts/refunds | | [MER (Net Sales)](/reference/metrics/orders/performance/net-mer) | MER using net revenue after discounts/refunds | | [ROAS](/reference/metrics/orders/performance/roas) | The inverse metric (revenue per ad dollar) | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | The denominator in this calculation | [See all Performance metrics →](/reference/metrics/orders/performance) # Revenue After Ad Spend (RAAD): Net Revenue Minus Ads Source: https://docs.upstackdata.com/reference/metrics/orders/performance/total-raad Track Revenue After Ad Spend for your Shopify store. Measure total revenue remaining after advertising costs. Revenue After Ad Spend (RAAD) measures total order revenue minus advertising spend—how much revenue remains after paying for ads. ## Formula **RAAD** = **Total Order Revenue** − [**Ad Spend**](/reference/metrics/advertising/blended/blended-spend) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | --------------------------------------------------- | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Complete order revenue including shipping and taxes | | **Ad Spend** | Total advertising spend across platforms | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Sum | *** ## Example Your Shopify store generated **\$200,000** total revenue and spent **\$25,000** on ads. | Component | Amount | Calculation | | ------------- | ------------- | -------------------- | | Total Revenue | \$200,000 | All order revenue | | Ad Spend | \$25,000 | Advertising cost | | **RAAD** | **\$175,000** | \$200,000 − \$25,000 | *** ## How It Works RAAD shows the revenue remaining after advertising costs. It's a simple but powerful metric—positive RAAD means your ads cost less than the revenue they help generate. Track RAAD alongside ROAS for a complete picture. *** ## When to Use | Scenario | Action | | ----------------------- | ------------------------------------- | | Measuring dollar impact | RAAD shows absolute revenue after ads | | Budget planning | Ensure RAAD covers remaining costs | | Trend analysis | Track RAAD growth over time | | Comparing periods | See absolute revenue improvement | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | ----------------------------- | | [RAAD (Gross)](/reference/metrics/orders/performance/gross-raad) | Gross revenue minus ad spend | | [RAAD (Net)](/reference/metrics/orders/performance/net-raad) | Net revenue minus ad spend | | [ROAS](/reference/metrics/orders/performance/roas) | Revenue per ad dollar (ratio) | [See all Performance metrics →](/reference/metrics/orders/performance) # RAAD % (Total): Revenue After Ad Spend Percentage Source: https://docs.upstackdata.com/reference/metrics/orders/performance/total-raad-percent Track RAAD percentage for your Shopify store. Measure what percentage of revenue remains after advertising. RAAD % measures what percentage of total revenue remains after subtracting advertising spend. ## Formula **RAAD %** = ( **RAAD** ÷ [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) ) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | ---------------------------- | | [**RAAD (Total)**](/reference/metrics/orders/performance/total-raad) | Total revenue minus ad spend | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Complete order revenue | | Metadata | | | --------------- | ------------------------------------------------------------------------------------------------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Meta Ads](/sources/catalog/facebook-ads), [Google Ads](/sources/catalog/google-ads) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$175,000** RAAD from **\$200,000** total revenue. | Component | Value | Calculation | | ------------- | --------- | --------------------------- | | RAAD | \$175,000 | After ad spend | | Total Revenue | \$200,000 | Revenue base | | **RAAD %** | **87.5%** | \$175,000 ÷ \$200,000 × 100 | *** ## How It Works RAAD % normalizes revenue after ad spend as a percentage. An 87.5% RAAD % means 87.5% of your revenue remains after paying for ads. Higher is better—it means ads consume less of your revenue. *** ## When to Use | Scenario | Action | | ------------------- | ------------------------------------------------- | | Tracking efficiency | Monitor RAAD % as a normalized metric | | Comparing periods | See efficiency trends regardless of revenue scale | | Benchmarking | Compare RAAD % across channels or campaigns | | Setting targets | Define RAAD % goals for budget planning | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | ------------------------------------- | | [RAAD (Total)](/reference/metrics/orders/performance/total-raad) | Dollar amount that RAAD % is based on | | [RAAD % (Gross)](/reference/metrics/orders/performance/gross-raad-percent) | Gross revenue version | | [RAAD % (Net)](/reference/metrics/orders/performance/net-raad-percent) | Net revenue version | [See all Performance metrics →](/reference/metrics/orders/performance) # Product Margin Metrics Source: https://docs.upstackdata.com/reference/metrics/orders/product-margin Measure product profitability using cost of goods data from Shopify. Track margin percentages to optimize pricing and product mix decisions. Product margin metrics help you understand the profitability of your products by comparing revenue to cost of goods sold. These metrics use product cost data from Shopify to calculate margins. ## Available Metrics | Metric | Description | | ----------------------------------------------------------------------------------- | -------------------------------------------------- | | [Product Margin %](/reference/metrics/orders/product-margin/product-margin-percent) | Percentage of revenue retained after product costs | ## Data Requirements Product margin calculations require cost of goods data in Shopify. Configure product costs through: * **Shopify inventory settings** — Set cost per item on product variants * **Shopify metafields** — Store custom cost data for advanced scenarios [Learn how to configure contribution margin →](/analytics/configure-contribution-margin) # New Customer Product Margin: Profitability from First-Time Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/product-margin/new-customer-product-margin Track product margin from new customer orders. Measure gross revenue minus COGS for first-time buyers to evaluate acquisition profitability. The total product-level profit from new customer orders, calculated as gross revenue minus cost of goods sold (COGS). ## Formula **New Customer Product Margin** = [**New Customer Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) − [**New Customer COGS**](/reference/metrics/orders/cogs/new-customer-cogs) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | | [**New Customer Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Total revenue from first-time buyer orders before deductions | | [**New Customer COGS**](/reference/metrics/orders/cogs/new-customer-cogs) | Cost of goods sold for products purchased by new customers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store acquired **847 new customers** in March with **\$42,350** in product margin: | Segment | Revenue | COGS | Product Margin | | ------------------- | --------- | --------- | -------------- | | New Customers | \$127,050 | \$84,700 | **\$42,350** | | Returning Customers | \$198,200 | \$118,920 | \$79,280 | New customer product margin is **\$42,350**, representing a 33% gross margin on acquisition revenue. *** ## How It Works New Customer Product Margin isolates profitability from first-time buyers by subtracting [New Customer COGS](/reference/metrics/orders/cogs/new-customer-cogs) from [New Customer Gross Revenue](/reference/metrics/orders/revenue/new-customer-gross-revenue). This excludes returning customer orders, showing only the product-level profit generated by customer acquisition. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------------ | | Evaluating acquisition ROI | Compare product margin against customer acquisition cost | | Setting CPA targets | Use as the ceiling for profitable acquisition spend | | Analyzing new vs returning mix | Compare profitability between customer segments | | Product selection for acquisition | Identify which products drive profitable new customer orders | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | | [Product Margin](/reference/metrics/orders/product-margin/product-margin) | Total product margin across all customers | | [Returning Customer Product Margin](/reference/metrics/orders/product-margin/returning-customer-product-margin) | Same calculation for repeat buyers | | [New Customer Gross Revenue](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Revenue component before subtracting COGS | | [New Customer COGS](/reference/metrics/orders/cogs/new-customer-cogs) | Cost component subtracted from revenue | [See all Product Margin metrics →](/reference/metrics/orders/product-margin) # New Customer Product Margin %: First-Time Buyer Gross Profit Rate Source: https://docs.upstackdata.com/reference/metrics/orders/product-margin/new-customer-product-margin-percent Track what percentage of new customer revenue remains as gross profit after product costs. Measure first-time buyer margin efficiency. The percentage of first-time buyer revenue remaining as gross profit after subtracting product costs. ## Formula **New Customer Product Margin %** = ( [**New Customer Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) − [**New Customer COGS**](/reference/metrics/orders/cogs/new-customer-cogs) ) ÷ [**New Customer Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | | [**New Customer Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Total product revenue from first-time buyers before discounts and refunds | | [**New Customer COGS**](/reference/metrics/orders/cogs/new-customer-cogs) | Cost of goods sold for first-time buyer orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example A supplement brand analyzes first-time buyer margins across quarters: | Quarter | NC Gross Revenue | NC COGS | NC Product Margin % | | ------- | ---------------- | -------- | ------------------- | | Q1 | \$42,000 | \$14,700 | **65.0%** | | Q2 | \$56,500 | \$18,645 | **67.0%** | | Q3 | \$61,200 | \$19,584 | **68.0%** | Q3's higher margin (68%) indicates improved product mix or cost efficiency for new customers. *** ## How It Works This metric calculates the percentage of gross revenue retained after product costs for new customer orders only. It divides the difference between [New Customer Gross Revenue](/reference/metrics/orders/revenue/new-customer-gross-revenue) and [New Customer COGS](/reference/metrics/orders/cogs/new-customer-cogs) by gross revenue, then multiplies by 100. Higher percentages mean more margin retained per dollar of new customer revenue. *** ## When to Use | Scenario | Action | | ----------------------------- | --------------------------------------------------------------------- | | Evaluating acquisition offers | Check if new customer promotions erode product margins | | Comparing customer segments | Compare to returning customer margin to identify differences | | Product mix analysis | Identify if first-time buyers gravitate toward higher-margin products | | Setting pricing strategy | Ensure prices support target margins for customer acquisition | *** ## Related Metrics | Metric | Relationship | | --------------------------------------------------------------------------------------------------- | --------------------------------------- | | [New Customer COGS](/reference/metrics/orders/cogs/new-customer-cogs) | Product costs subtracted from revenue | | [New Customer Gross Revenue](/reference/metrics/orders/revenue/new-customer-gross-revenue) | The revenue base for this calculation | | [New Customer COGS Gross Rate](/reference/metrics/orders/cogs/new-customer-cogs-gross-rate) | The inverse—shows costs as % of revenue | | [New Customer Product Margin](/reference/metrics/orders/product-margin/new-customer-product-margin) | Dollar amount instead of percentage | [See all Product Margin metrics →](/reference/metrics/orders/product-margin) # Product Margin Per Order: Average Profit Per Transaction Source: https://docs.upstackdata.com/reference/metrics/orders/product-margin/product-margin-per-order Track average product margin per order to measure per-transaction profitability. Learn the formula, see examples, and optimize your product mix. The average profit from products per order, calculated before fulfillment and transaction costs. ## Formula **Product Margin Per Order** = [**Product Margin**](/reference/metrics/orders/product-margin/product-margin) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ----------------------------------------------------------------------------- | ---------------------------------------------- | | [**Product Margin**](/reference/metrics/orders/product-margin/product-margin) | Gross revenue minus cost of goods sold | | [**Orders**](/reference/metrics/orders/counts/orders) | Total number of completed orders in the period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your store processed **1,247 orders** in January with a total Product Margin of **\$31,175**: | Metric | Value | Calculation | | ---------------------------- | ----------- | -------------------- | | Gross Product Revenue | \$87,290 | Sum of product sales | | Product COGS | \$56,115 | Sum of product costs | | Product Margin | \$31,175 | \$87,290 − \$56,115 | | **Product Margin Per Order** | **\$25.00** | \$31,175 ÷ 1,247 | *** ## How It Works Product Margin Per Order divides total [Product Margin](/reference/metrics/orders/product-margin/product-margin) by [Order Count](/reference/metrics/orders/counts/orders). Product Margin is the difference between [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) and [COGS](/reference/metrics/orders/cogs/cogs). This metric isolates product profitability before fulfillment costs, transaction fees, and other variable expenses are applied. *** ## When to Use | Scenario | Action | | ------------------------------------ | --------------------------------------------------- | | Evaluating product mix profitability | Compare margin per order across product categories | | Setting free shipping thresholds | Ensure threshold covers product margin | | Analyzing bundle performance | Check if bundles improve per-order margin | | Identifying margin erosion | Track trends to catch declining profitability early | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------- | ------------------------------------------- | | [Product Margin](/reference/metrics/orders/product-margin/product-margin) | Numerator: total margin across all orders | | [Orders](/reference/metrics/orders/counts/orders) | Denominator: order count for averaging | | [COGS Per Order](/reference/metrics/orders/cogs/cogs-per-order) | The cost component per transaction | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Revenue component of the margin calculation | [See all Product Margin metrics →](/reference/metrics/orders/product-margin) # Product Margin %: Profitability as Percentage of Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/product-margin/product-margin-percent Track the percentage of revenue retained after product costs. Learn the formula, see examples, and optimize product profitability across your Shopify store. The percentage of revenue remaining after subtracting the cost of goods sold. ## Formula **Product Margin %** = ( [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) − [**COGS**](/reference/metrics/orders/cogs/cogs) ) ÷ [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) × 100 ### Formula Components | Metric | Definition | | -------------------------------------------------------------------- | ----------------------------------------------------------------- | | [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Total revenue from product sales before discounts and adjustments | | [**COGS**](/reference/metrics/orders/cogs/cogs) | Cost of goods sold from Shopify product inventory data | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Weighted Average | *** ## Example Your store generated **\$50,000** in revenue with **\$30,000** in product costs, resulting in a **40%** product margin: | Category | Revenue | COGS | Margin % | | ----------- | ------------ | ------------ | -------- | | Apparel | \$25,000 | \$12,500 | 50% | | Accessories | \$15,000 | \$10,500 | 30% | | Home Goods | \$10,000 | \$7,000 | 30% | | **Total** | **\$50,000** | **\$30,000** | **40%** | *** ## How It Works Product Margin % calculates the percentage of each revenue dollar that remains after covering product costs. Shopify provides product cost data through inventory settings or metafields. This metric aggregates across all line items in orders, weighted by revenue contribution. *** ## When to Use | Scenario | Action | | -------------------------------- | --------------------------------------------- | | Evaluating product profitability | Identify high-margin products to promote | | Pricing decisions | Adjust prices on low-margin items | | Supplier negotiations | Flag products with eroding margins | | Ad spend allocation | Focus budget on products with healthy margins | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------- | --------------------------------------- | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Revenue before deductions (denominator) | | [COGS](/reference/metrics/orders/cogs/cogs) | Product costs subtracted from revenue | | [Product Margin](/reference/metrics/orders/product-margin/product-margin) | Dollar amount instead of percentage | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds | [See all Product Margin metrics →](/reference/metrics/orders/product-margin) # Returning Customer Product Margin: Repeat Buyer Profitability Source: https://docs.upstackdata.com/reference/metrics/orders/product-margin/returning-customer-product-margin Track product-level profitability from returning customers. Calculate margin after COGS to measure repeat buyer value and retention economics. The total product margin generated by returning customer orders, calculated as gross revenue minus cost of goods sold. ## Formula **Returning Customer Product Margin** = [**Returning Customer Gross Revenue**](/reference/metrics/orders/revenue/returning-customer-gross-revenue) − [**Returning Customer COGS**](/reference/metrics/orders/cogs/returning-customer-cogs) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------- | | [**Returning Customer Gross Revenue**](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Gross revenue from repeat buyers before discounts and refunds | | [**Returning Customer COGS**](/reference/metrics/orders/cogs/returning-customer-cogs) | Cost of goods sold for returning customer orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your returning customers generated **\$28,400** in product margin last month: | Segment | Gross Revenue | COGS | Product Margin | | ------------------- | ------------- | -------- | -------------- | | Returning Customers | \$85,200 | \$56,800 | **\$28,400** | | New Customers | \$42,100 | \$29,470 | \$12,630 | *** ## How It Works Returning Customer Product Margin captures the gross profit from repeat buyers at the product level. It subtracts [Returning Customer COGS](/reference/metrics/orders/cogs/returning-customer-cogs) from [Returning Customer Gross Revenue](/reference/metrics/orders/revenue/returning-customer-gross-revenue), showing how much you keep after product costs. This metric excludes fulfillment, transaction fees, and marketing costs. *** ## When to Use | Scenario | Action | | ----------------------------- | -------------------------------------------------------------------------- | | Measuring retention value | Compare RC margin to NC margin to see if repeat buyers are more profitable | | Evaluating loyalty economics | High RC margin indicates sustainable retention without heavy discounting | | Setting retention goals | Use as a target for retention campaigns and loyalty programs | | Analyzing customer mix impact | Track how shifts in NC/RC ratio affect overall profitability | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ----------------------------------------- | | [New Customer Product Margin](/reference/metrics/orders/product-margin/new-customer-product-margin) | Same calculation for first-time buyers | | [Product Margin](/reference/metrics/orders/product-margin/product-margin) | Total product margin across all customers | | [Returning Customer Gross Revenue](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Revenue component of this calculation | | [Returning Customer COGS](/reference/metrics/orders/cogs/returning-customer-cogs) | Cost component subtracted from revenue | [See all Product Margin metrics →](/reference/metrics/orders/product-margin) # Revenue Metrics: Track Total, Gross, and Net Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/revenue Track revenue metrics in Upstack. Includes Total Revenue, Gross Revenue, Net Revenue by customer type with formulas and examples. Revenue metrics track the monetary value of orders at different calculation levels. Use these to analyze top-line performance across customer segments. **Data Source:** [Shopify](/sources/catalog/shopify)\ **Metrics:** 13 ## Metrics in This Group The tables below highlight the most commonly used metrics in this group — browse the full list in the sidebar. | Metric | Description | When to Use | | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------- | ------------------------------- | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | Sum of all order revenue | High-level sales reporting | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Revenue before discounts and refunds | Measure full price demand | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds | Actual cash collected | | [New Customer Total Revenue](/reference/metrics/orders/revenue/new-customer-total-revenue) | Total revenue from new customers | Track acquisition revenue | | [New Customer Gross Revenue](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Gross revenue from new customers | New customer full-price demand | | [New Customer Net Revenue](/reference/metrics/orders/revenue/new-customer-net-revenue) | Net revenue from new customers | Actual new customer collections | | [Returning Customer Total Revenue](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Total revenue from returning customers | Track retention revenue | | [Returning Customer Gross Revenue](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Gross revenue from returning customers | Returning customer demand | | [Returning Customer Net Revenue](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Net revenue from returning customers | Returning customer collections | | [Subscription Initial Purchase Revenue](/reference/metrics/orders/revenue/subscription-initial-purchase-revenue) | Revenue from first-time subscription orders | Value subscription acquisitions | ## How These Metrics Relate Revenue metrics follow a hierarchy: * **Gross Revenue** = Product price × Quantity (before any adjustments) * **Net Revenue** = [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) - [**Discounts**](/reference/metrics/orders/adjustments/discount-amount) - [**Refunds**](/reference/metrics/orders/adjustments/refund-amount) * **Total Revenue** = [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) + Shipping + [**Tax**](/reference/metrics/orders/adjustments/tax) (what customer paid) Each level is available segmented by New Customer and Returning Customer. ## Choosing the Right Metric * **Sales reporting**: Use Total Revenue for headline numbers * **Demand analysis**: Use Gross Revenue to see full-price demand * **Cash flow**: Use Net Revenue for actual money collected * **Customer segmentation**: Compare New vs Returning to understand revenue mix * **Subscription value**: Use Subscription Initial Purchase Revenue to value subscriptions # Gross Revenue: Product Sales Before Adjustments Source: https://docs.upstackdata.com/reference/metrics/orders/revenue/gross-revenue Track gross revenue from product sales before discounts and refunds. Use for margin calculations and understanding baseline product revenue. Revenue from product sales before subtracting discounts or refunds. ## Formula **Gross Revenue** = **SUM** ( Product Line Item Prices ) ### Formula Components | Metric | Definition | | ---------------------------- | ---------------------------------------------------------------- | | **Product Line Item Prices** | Original price of each product at time of sale, before discounts | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store generated **\$125,000** in gross revenue in March: | Product Category | Gross Revenue | Share | | ---------------- | ------------- | ----- | | Apparel | \$62,500 | 50% | | Accessories | \$37,500 | 30% | | Footwear | \$25,000 | 20% | After applying discounts (\$8,750) and processing refunds (\$3,125), your Net Revenue was \$113,125. *** ## How It Works Gross Revenue sums the `grossSalePrice` field from each order—the total of all product line item prices at time of sale. This excludes shipping, taxes, discounts, and refunds, representing your theoretical maximum revenue if every order paid full price and no products were returned. *** ## When to Use | Scenario | Action | | ---------------------------- | ----------------------------------------------------- | | Calculating gross margin | Compare against COGS to find product profitability | | Measuring discount impact | Compare Gross vs Net Revenue to quantify promotions | | Tracking refund rates | Divide refunds by Gross Revenue for return percentage | | Forecasting baseline revenue | Use as the starting point for financial projections | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | ----------------------------------- | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | Includes shipping and taxes | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Gross Revenue − Discounts − Refunds | | [Average Order Value](/reference/metrics/orders/aov/total-aov) | Revenue per order | | [Orders](/reference/metrics/orders/counts/orders) | Count of completed orders | [See all Revenue metrics →](/reference/metrics/orders/revenue) # Net Plus Shipping: Net Revenue Including Shipping Source: https://docs.upstackdata.com/reference/metrics/orders/revenue/net-plus-shipping Track net plus shipping for your Shopify store. Measure net revenue with shipping charges included. Net Plus Shipping measures net revenue with shipping charges included—useful when shipping is a meaningful revenue component. ## Formula **Net Plus Shipping** = [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) + [**Shipping Revenue**](/reference/metrics/orders/adjustments/shipping-revenue) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | ----------------------------------------- | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Gross revenue minus discounts and refunds | | [**Shipping Revenue**](/reference/metrics/orders/adjustments/shipping-revenue) | Shipping charges collected from customers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store has **\$160,000** net revenue and **\$12,000** shipping revenue. | Component | Amount | Calculation | | --------------------- | ------------- | ----------------------- | | Net Revenue | \$160,000 | After discounts/refunds | | Shipping Revenue | \$12,000 | Customer-paid shipping | | **Net Plus Shipping** | **\$172,000** | \$160,000 + \$12,000 | *** ## How It Works Net Plus Shipping adds shipping charges back to net revenue. This is useful for businesses where shipping revenue is significant and partially or fully offsets shipping costs. *** ## When to Use | Scenario | Action | | ------------------------- | -------------------------------------------- | | Shipping revenue tracking | Include shipping in revenue analysis | | Profitability analysis | Match shipping revenue against shipping cost | | Revenue completeness | See total revenue collected | | ROAS calculations | Use when shipping is part of order value | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------- | -------------------------- | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue without shipping | | [Shipping Revenue](/reference/metrics/orders/adjustments/shipping-revenue) | Shipping charges collected | | [Shipping Cost](/reference/metrics/orders/fulfillment/shipping-cost) | Cost to ship orders | [See all Revenue metrics →](/reference/metrics/orders/revenue) # Net Revenue: Revenue After Discounts and Refunds Source: https://docs.upstackdata.com/reference/metrics/orders/revenue/net-revenue Track net revenue from Shopify orders after discounts and refunds. The primary metric for profitability analysis with formula and examples. Revenue after subtracting discounts and refunds from gross revenue—the primary metric for profitability analysis. ## Formula **Net Revenue** = [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) − [**Discounts**](/reference/metrics/orders/adjustments/discount-amount) − [**Refunds**](/reference/metrics/orders/adjustments/refund-amount) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------- | -------------------------------------------- | | [**Gross Revenue**](/reference/metrics/orders/revenue/gross-revenue) | Product revenue before discounts and refunds | | [**Discounts**](/reference/metrics/orders/adjustments/discount-amount) | Total discount amount applied to orders | | [**Refunds**](/reference/metrics/orders/adjustments/refund-amount) | Total refund amount issued | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store generated **\$156,400** in net revenue this quarter: | Component | Amount | Impact | | --------------- | ------------- | ------------------ | | Gross Revenue | \$178,200 | Starting point | | Discounts | −\$15,400 | 8.6% discount rate | | Refunds | −\$6,400 | 3.6% refund rate | | **Net Revenue** | **\$156,400** | Final revenue | *** ## How It Works Net Revenue starts with Gross Revenue (product sales before adjustments), then subtracts all discount codes and promotional offers applied at checkout, and all refunds issued post-purchase. This gives you the actual revenue retained from customer transactions. *** ## When to Use | Scenario | Action | | -------------------------- | -------------------------------------------------------- | | Profitability analysis | Use Net Revenue as your baseline for margin calculations | | Discount impact assessment | Compare to Gross Revenue to measure promotion costs | | Refund rate monitoring | Track refund amount as a percentage of gross | | Financial reporting | Report Net Revenue as actual earned revenue | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------- | ------------------------------------------------------------- | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Revenue before deductions (Net = Gross − Discounts − Refunds) | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | Includes shipping and taxes | | [Net AOV](/reference/metrics/orders/aov/net-aov) | Net Revenue ÷ Order Count | | [Orders](/reference/metrics/orders/counts/orders) | Count of orders generating this revenue | [See all Revenue metrics →](/reference/metrics/orders/revenue) # New Customer Gross Revenue: First-Purchase Product Sales Source: https://docs.upstackdata.com/reference/metrics/orders/revenue/new-customer-gross-revenue Track gross revenue from first-time buyers before discounts and refunds. Measure acquisition value, compare to returning customers, and calculate new customer gross margin. Gross product revenue from new customers before discounts and refunds. ## Formula **New Customer Gross Revenue** = **SUM** ( Product Revenue ) **WHERE** customer\_type = new\_customer ### Formula Components | Metric | Definition | | ---------------------------------- | ------------------------------------------------------------------------------ | | **Product Revenue** | Sum of product line item totals before discounts, refunds, shipping, and taxes | | **customer\_type = new\_customer** | Filter for customers placing their first order | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store generated **\$47,200** in new customer gross revenue this month: | Week | New Customer Gross Revenue | Orders | | ------ | -------------------------- | ------ | | Week 1 | \$12,450 | 89 | | Week 2 | \$11,800 | 84 | | Week 3 | \$10,950 | 78 | | Week 4 | \$12,000 | 86 | *** ## How It Works New Customer Gross Revenue sums the product line item totals from first-time buyer orders. It excludes shipping, taxes, discounts, and refunds—giving you the raw product sales value before any deductions. A customer is classified as "new" if this is their first order in your Shopify store. *** ## When to Use | Scenario | Action | | ------------------------------- | -------------------------------------------------- | | Measuring acquisition value | Compare new customer gross revenue to ad spend | | Calculating new customer margin | Subtract COGS from gross revenue for profitability | | Comparing customer segments | Compare to returning customer gross revenue | | Evaluating product mix | Identify which products drive first purchases | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | --------------------------- | | [New Customer Net Revenue](/reference/metrics/orders/revenue/new-customer-net-revenue) | After discounts and refunds | | [New Customer Total Revenue](/reference/metrics/orders/revenue/new-customer-total-revenue) | Includes shipping and taxes | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | All customers combined | | [Returning Customer Gross Revenue](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Repeat buyer comparison | [See all Orders Revenue metrics →](/reference/metrics/orders/revenue) # New Customer Net Revenue: First-Order Revenue After Deductions Source: https://docs.upstackdata.com/reference/metrics/orders/revenue/new-customer-net-revenue Track net revenue from first-time buyers after discounts and refunds. The clearest measure of first-order monetization for acquisition profitability analysis. Net revenue from new customers after discounts and refunds—the clearest measure of first-order monetization. ## Formula **New Customer Net Revenue** = [**New Customer Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) − **New Customer Discounts** − **New Customer Refunds** ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------------------------------- | ---------------------------------------------------- | | [**New Customer Gross Revenue**](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Product revenue from new customers before deductions | | [**New Customer Discounts**](/reference/metrics/orders/adjustments/new-customer-discounts) | Discount amount applied to new customer orders | | [**New Customer Refunds**](/reference/metrics/orders/adjustments/new-customer-refunds) | Refund amount issued on new customer orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store generated **\$38,640** in new customer net revenue this month: | Component | Amount | Impact | | ------------------ | ------------ | ------------------- | | NC Gross Revenue | \$47,200 | Starting point | | NC Discounts | −\$6,120 | 13.0% discount rate | | NC Refunds | −\$2,440 | 5.2% refund rate | | **NC Net Revenue** | **\$38,640** | Actual retained | *** ## How It Works New Customer Net Revenue starts with gross product sales from first-time buyers, then subtracts discounts applied at checkout and any refunds issued post-purchase. This gives you the actual revenue retained from acquisition efforts—critical for calculating true customer acquisition cost payback. *** ## When to Use | Scenario | Action | | ---------------------------- | ----------------------------------------------------- | | Acquisition profitability | Compare NC Net Revenue to ad spend for true ROI | | Discount strategy evaluation | Monitor if acquisition discounts are sustainable | | Refund impact analysis | Track refund rates on first-time orders | | LTV baseline | Use as the true first-order value for LTV projections | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------- | ---------------------------- | | [New Customer Gross Revenue](/reference/metrics/orders/revenue/new-customer-gross-revenue) | Before discounts and refunds | | [New Customer Total Revenue](/reference/metrics/orders/revenue/new-customer-total-revenue) | Includes shipping and taxes | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | All customers combined | | [Returning Customer Net Revenue](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Repeat buyer comparison | [See all Revenue metrics →](/reference/metrics/orders/revenue) # New Customer Total Revenue: First-Time Buyer Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/revenue/new-customer-total-revenue Track total revenue from first-time buyers including shipping and taxes. Measure acquisition value and compare against returning customer revenue. Total revenue collected from first-time buyers including shipping and taxes. ## Formula **New Customer Total Revenue** = **SUM** ( Order Total ) **WHERE** customer\_type = new\_customer ### Formula Components | Metric | Definition | | ---------------------------------- | -------------------------------------------------------------------- | | **Order Total** | Complete order value including product subtotal, shipping, and taxes | | **customer\_type = new\_customer** | Filter for customers placing their first order | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store generated **\$127,450** from new customers in April: | Week | NC Revenue | Orders | Avg Order | | ------ | ---------- | ------ | --------- | | Week 1 | \$28,340 | 312 | \$90.83 | | Week 2 | \$35,120 | 389 | \$90.28 | | Week 3 | \$31,890 | 347 | \$91.90 | | Week 4 | \$32,100 | 356 | \$90.17 | *** ## How It Works New Customer Total Revenue sums the complete order value—product subtotal, shipping, and taxes—for every customer placing their first order. Shopify determines new vs returning status based on email address match against prior orders. *** ## When to Use | Scenario | Action | | -------------------------------- | -------------------------------------------------------------- | | Measure acquisition ROI | Compare against ad spend to calculate new customer ROAS | | Track revenue mix | Monitor the split between new and returning customer revenue | | Evaluate acquisition campaigns | Assess whether promotions attract high-value first-time buyers | | Forecast customer lifetime value | Use as the first-order revenue baseline for LTV projections | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ---------------------------------------- | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | All customers combined (NC + RC) | | [Returning Customer Total Revenue](/reference/metrics/orders/revenue/returning-customer-total-revenue) | The retention counterpart to this metric | | [New Customer Net Revenue](/reference/metrics/orders/revenue/new-customer-net-revenue) | Same segment, excludes shipping/taxes | | [New Customer Total AOV](/reference/metrics/orders/aov/new-customer-total-aov) | This metric ÷ New Customer Orders | [See all Revenue metrics →](/reference/metrics/orders/revenue) # Returning Customer Gross Revenue: Repeat Buyer Product Sales Source: https://docs.upstackdata.com/reference/metrics/orders/revenue/returning-customer-gross-revenue Track gross revenue from returning customers before discounts and refunds. Compare against new customer gross revenue to measure retention product value. Gross product revenue from returning customers before discounts and refunds. ## Formula **Returning Customer Gross Revenue** = **SUM** ( Product Revenue ) **WHERE** customer\_type = returning\_customer ### Formula Components | Metric | Definition | | ---------------------------------------- | ------------------------------------------------------------------------------ | | **Product Revenue** | Sum of product line item totals before discounts, refunds, shipping, and taxes | | **customer\_type = returning\_customer** | Filter for customers who have placed at least one prior order | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store generated **\$87,500** in returning customer gross revenue in March: | Category | RC Gross Revenue | Share | | ----------- | ---------------- | ----- | | Apparel | \$43,750 | 50% | | Accessories | \$26,250 | 30% | | Footwear | \$17,500 | 20% | After applying loyalty discounts (\$6,125) and refunds (\$1,750), your RC Net Revenue was \$79,625. *** ## How It Works Returning Customer Gross Revenue sums the product line item totals from customers who have placed at least one prior order. Shopify identifies returning customers by matching the customer email against previous orders. This metric excludes shipping, taxes, discounts, and refunds—representing your theoretical repeat-buyer revenue before any deductions. *** ## When to Use | Scenario | Action | | ---------------------------------------- | ------------------------------------------------------ | | Calculate returning customer margin | Compare against RC COGS for repeat-buyer profitability | | Measure discount impact on repeat buyers | Compare RC Gross vs RC Net Revenue | | Track retention product value | Monitor how much returning customers spend on products | | Segment revenue analysis | Compare against New Customer Gross Revenue | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ------------------------------------------ | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | All customers combined (NC + RC) | | [New Customer Gross Revenue](/reference/metrics/orders/revenue/new-customer-gross-revenue) | The acquisition counterpart to this metric | | [Returning Customer Net Revenue](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Same segment, minus discounts and refunds | | [Returning Customer Total Revenue](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Includes shipping and taxes | [See all Revenue metrics →](/reference/metrics/orders/revenue) # Returning Customer Net Revenue: Repeat Buyer Collections Source: https://docs.upstackdata.com/reference/metrics/orders/revenue/returning-customer-net-revenue Track net revenue from returning customers after discounts and refunds. Key input for repeat-purchase profitability and retention analysis. Net revenue from returning customers after discounts and refunds—key input for repeat-purchase profitability. ## Formula **Returning Customer Net Revenue** = [**RC Gross Revenue**](/reference/metrics/orders/revenue/returning-customer-gross-revenue) − [**RC Discounts**](/reference/metrics/orders/adjustments/returning-customer-discounts) − [**RC Refunds**](/reference/metrics/orders/adjustments/returning-customer-refunds) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------- | | [**RC Gross Revenue**](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Product revenue from returning customers before discounts and refunds | | [**RC Discounts**](/reference/metrics/orders/adjustments/returning-customer-discounts) | Total discount amount applied to returning customer orders | | [**RC Refunds**](/reference/metrics/orders/adjustments/returning-customer-refunds) | Total refund amount issued on returning customer orders | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your returning customers generated **\$89,640** in net revenue this month: | Component | Amount | Impact | | ------------------ | ------------ | ------------------ | | RC Gross Revenue | \$102,800 | Starting point | | RC Discounts | −\$9,240 | 9.0% discount rate | | RC Refunds | −\$3,920 | 3.8% refund rate | | **RC Net Revenue** | **\$89,640** | Final collections | *** ## How It Works Returning Customer Net Revenue starts with gross product revenue from customers who have placed at least one prior order, then subtracts all discounts and refunds for those orders. Shopify identifies returning customers by email address match against previous orders. *** ## When to Use | Scenario | Action | | ------------------------- | ---------------------------------------------------------------------- | | Retention profitability | Use as the revenue baseline for returning customer margin calculations | | Compare customer segments | Measure whether returning customers use more discounts than new | | Track refund patterns | Monitor if repeat buyers have different refund rates | | LTV analysis | Factor into customer lifetime value calculations | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | -------------------------------------------- | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | All customers combined (NC + RC Net Revenue) | | [New Customer Net Revenue](/reference/metrics/orders/revenue/new-customer-net-revenue) | The acquisition counterpart to this metric | | [Returning Customer Total Revenue](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Same segment, includes shipping and taxes | | [Returning Customer Gross Revenue](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Same segment, before discounts and refunds | [See all Revenue metrics →](/reference/metrics/orders/revenue) # Returning Customer Total Revenue: Repeat Buyer Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/revenue/returning-customer-total-revenue Track total revenue from returning customers including shipping and taxes. Measure retention value and compare against new customer revenue. Total revenue from repeat buyers including shipping and taxes. ## Formula **Returning Customer Total Revenue** = **SUM** ( Order Total ) **WHERE** customer\_type = returning\_customer ### Formula Components | Metric | Definition | | ---------------------------------------- | -------------------------------------------------------------------- | | **Order Total** | Complete order value including product subtotal, shipping, and taxes | | **customer\_type = returning\_customer** | Filter for customers who have placed at least one prior order | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store generated **\$215,780** from returning customers in April: | Week | RC Revenue | Orders | Avg Order | | ------ | ---------- | ------ | --------- | | Week 1 | \$48,920 | 412 | \$118.74 | | Week 2 | \$56,340 | 478 | \$117.87 | | Week 3 | \$52,180 | 439 | \$118.86 | | Week 4 | \$58,340 | 491 | \$118.82 | *** ## How It Works Returning Customer Total Revenue sums the complete order value—product subtotal, shipping, and taxes—for every customer who has placed at least one prior order. Shopify determines returning status based on email address match against previous orders. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------------ | | Measure retention value | Quantify revenue from your existing customer base | | Track revenue mix | Monitor the split between new and returning customer revenue | | Evaluate loyalty programs | Assess whether retention efforts drive repeat purchases | | Calculate customer lifetime value | Use as the repeat-order revenue component for LTV | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------ | ------------------------------------------ | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | All customers combined (NC + RC) | | [New Customer Total Revenue](/reference/metrics/orders/revenue/new-customer-total-revenue) | The acquisition counterpart to this metric | | [Returning Customer Net Revenue](/reference/metrics/orders/revenue/returning-customer-net-revenue) | Same segment, excludes shipping/taxes | | [Returning Customer Gross Revenue](/reference/metrics/orders/revenue/returning-customer-gross-revenue) | Same segment, before discounts and refunds | [See all Revenue metrics →](/reference/metrics/orders/revenue) # Subscription Initial Purchase Revenue: First-Time Subscription Value Source: https://docs.upstackdata.com/reference/metrics/orders/revenue/subscription-initial-purchase-revenue Track revenue from first-time subscription orders in Shopify. Measure subscription program value, compare acquisition revenue, and optimize recurring revenue growth. Total revenue from orders where a customer starts a new subscription for the first time. ## Formula **Subscription Initial Purchase Revenue** = **SUM** ( Order Revenue ) **WHERE** order\_type = subscription\_initial\_purchase ### Formula Components | Metric | Definition | | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------- | | **Order Revenue** | Total revenue value of each order | | **order\_type = subscription\_initial\_purchase** | Filter for orders that initiate a new subscription (excludes recurring renewals and one-time purchases) | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store generated **\$18,630** in subscription initial purchase revenue in Q1: | Month | Revenue | New Subscribers | Avg Initial Order | | -------- | ------- | --------------- | ----------------- | | January | \$5,390 | 98 | \$55.00 | | February | \$6,205 | 107 | \$58.00 | | March | \$7,035 | 119 | \$59.12 | *** ## How It Works This metric sums revenue from a customer's first subscription order. It excludes subsequent recurring charges and one-time purchases. Subscription initial purchases are identified by matching a `subscription_initial_purchase` event with the same order ID. *** ## When to Use | Scenario | Action | | ------------------------------- | ---------------------------------------------------------- | | Value subscription acquisitions | Measure revenue from new subscriber signups | | Calculate subscription CAC | Compare against marketing spend for subscriber acquisition | | Analyze subscription pricing | Track average first-order value for new subscribers | | Forecast recurring revenue | Project LTV from initial subscription value | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- | | [Subscription Initial Purchase Orders](/reference/metrics/orders/counts/subscription-initial-purchase-orders) | Count of initial subscriptions (this metric sums their value) | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | All order revenue including subscriptions | | [New Customer Total Revenue](/reference/metrics/orders/revenue/new-customer-total-revenue) | Revenue from first-time buyers (different from first-time subscribers) | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds | [See all Revenue metrics →](/reference/metrics/orders/revenue) # Subscription Revenue: Recurring Order Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/revenue/subscription-revenue Track subscription revenue for your Shopify store. Measure revenue from subscription orders vs one-time purchases. Subscription Revenue measures the total revenue from subscription-based orders—recurring revenue from customers on subscription plans. ## Formula **Subscription Revenue** = **SUM** ( Revenue from [orders](/reference/metrics/orders/counts/orders) flagged as subscription ) ### Formula Components | Metric | Definition | | ----------------------- | ------------------------------------------- | | **Subscription Orders** | Orders identified as recurring/subscription | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store processes **150** subscription orders totaling **\$18,000**. | Order Type | Orders | Revenue | | ----------------------- | ------- | ------------ | | One-time purchases | 850 | \$132,000 | | **Subscription orders** | **150** | **\$18,000** | | Total | 1,000 | \$150,000 | *** ## How It Works Subscription Revenue is identified through Shopify order tags or subscription app integrations (Recharge, Bold, etc.). This separates recurring revenue from one-time purchases for better forecasting. *** ## When to Use | Scenario | Action | | ------------------ | ----------------------------------------- | | Revenue mix | Track subscription vs one-time ratio | | MRR calculation | Subscription Revenue is monthly recurring | | Retention analysis | Subscription revenue indicates retention | | Forecasting | Subscription revenue is more predictable | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | --------------------------------------- | | [Total Revenue](/reference/metrics/orders/revenue/total-revenue) | All revenue | | [Subscription Orders](/reference/metrics/orders/counts/subscription-orders) | Order count | | [Subscription AOV](/reference/metrics/orders/aov/subscription-aov) | Per-subscription value | | [Returning Customer Revenue](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Repeat revenue (includes subscriptions) | [See all Revenue metrics →](/reference/metrics/orders/revenue) # Subtotal: Order Subtotal Amount Source: https://docs.upstackdata.com/reference/metrics/orders/revenue/subtotal Track order subtotal for your Shopify store. Measure product value before shipping, taxes, and adjustments. Subtotal measures the total product value in orders before shipping, taxes, discounts, and other adjustments are applied. ## Formula **Subtotal** = **SUM** ( Order line item prices × quantities ) ### Formula Components | Metric | Definition | | -------------------- | ---------------------------------- | | **Line Item Prices** | Product prices from Shopify orders | | **Quantities** | Units ordered per line item | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your Shopify store processes orders with a combined subtotal of **\$180,000**. | Order | Products | Subtotal | | --------- | -------- | ------------- | | #1001 | 3 items | \$150 | | #1002 | 1 item | \$75 | | #1003 | 5 items | \$280 | | ... | ... | ... | | **Total** | | **\$180,000** | *** ## How It Works Subtotal is pulled directly from your Shopify order data. It represents the pure product value before any modifications. Shipping, taxes, discounts, and refunds are applied on top of subtotal to arrive at total and net revenue. *** ## When to Use | Scenario | Action | | ---------------------- | --------------------------------------- | | Product value analysis | Track pure product sales | | Discount impact | Compare subtotal to net revenue | | AOV breakdown | Understand product value per order | | Shipping analysis | Compare subtotal to total with shipping | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------ | -------------------------------- | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Subtotal plus shipping and taxes | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | After discounts and refunds | | [Discount Amount](/reference/metrics/orders/adjustments/discount-amount) | Reduces subtotal to net | [See all Revenue metrics →](/reference/metrics/orders/revenue) # Total Revenue: Complete Order Revenue Including Shipping and Taxes Source: https://docs.upstackdata.com/reference/metrics/orders/revenue/total-revenue Track total revenue from all orders including shipping and taxes. The headline revenue number showing complete customer payments. The total dollar amount collected from all orders including product prices, shipping, and taxes—before any refunds. ## Formula **Total Revenue** = **SUM** ( Order Total Price ) ### Formula Components | Metric | Definition | | --------------------- | ---------------------------------------------------------------- | | **Order Total Price** | Complete checkout amount including products, shipping, and taxes | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store collected **\$156,250** in total revenue in January: | Component | Amount | % of Total | | --------- | --------- | ---------- | | Products | \$125,000 | 80.0% | | Shipping | \$18,750 | 12.0% | | Tax | \$12,500 | 8.0% | This headline number represents everything customers paid—use it for high-level sales reporting and trend analysis. *** ## How It Works Total Revenue captures the full order amount at checkout before any post-purchase adjustments like refunds. It includes product revenue, shipping fees, and taxes—giving you the complete picture of customer payments rather than just product sales. *** ## When to Use | Scenario | Action | | --------------------- | ---------------------------------------------------- | | Sales reporting | Use as the headline revenue figure for stakeholders | | Trend analysis | Track week-over-week or month-over-month growth | | Revenue forecasting | Project future revenue based on historical totals | | Customer segmentation | Compare against New/Returning Customer Total Revenue | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------ | ---------------------------------------------------------------- | | [Gross Revenue](/reference/metrics/orders/revenue/gross-revenue) | Product revenue before discounts/refunds (excludes shipping/tax) | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Gross Revenue − Discounts − Refunds | | [New Customer Total Revenue](/reference/metrics/orders/revenue/new-customer-total-revenue) | Total Revenue from first-time buyers | | [Orders](/reference/metrics/orders/counts/orders) | Count of completed orders | [See all Revenue metrics →](/reference/metrics/orders/revenue) # Transaction Costs: Track Payment Gateway Fees Source: https://docs.upstackdata.com/reference/metrics/orders/transaction Track transaction cost metrics in Upstack. Includes Gateway Cost, Transaction Fees, and payment processing expenses by customer type. Transaction cost metrics track payment processing expenses—gateway fees, interchange costs, and other transaction charges. **Data Source:** [Shopify](/sources/catalog/shopify)\ **Metrics:** 13 ## Metrics in This Group The tables below highlight the most commonly used metrics in this group — browse the full list in the sidebar. | Metric | Description | When to Use | | ---------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------- | --------------------------- | | [Gateway Cost](/reference/metrics/orders/transaction/gateway-cost) | Payment gateway fees | Track processing costs | | [Gateway Cost Per Order](/reference/metrics/orders/transaction/gateway-cost-per-order) | Gateway cost per order | Per-order fees | | [Gateway Cost %](/reference/metrics/orders/transaction/gateway-cost-percent) | Gateway as % of revenue | Fee burden | | [Other Transaction Cost](/reference/metrics/orders/transaction/other-transaction-cost) | Additional transaction fees | Misc processing costs | | [Total Transaction Cost](/reference/metrics/orders/transaction/total-transaction-cost) | All transaction costs combined | Total processing burden | | [New Customer Gateway Cost](/reference/metrics/orders/transaction/new-customer-gateway-cost) | Gateway fees for new customers | Segment analysis | | [Returning Customer Gateway Cost](/reference/metrics/orders/transaction/returning-customer-gateway-cost) | Gateway fees for returning customers | Compare segments | | [New Customer Other Transaction Cost](/reference/metrics/orders/transaction/new-customer-other-transaction-cost) | Other fees for new customers | Detailed new customer costs | | [Returning Customer Other Transaction Cost](/reference/metrics/orders/transaction/returning-customer-other-transaction-cost) | Other fees for returning customers | Detailed returning costs | | [New Customer Total Transaction Cost](/reference/metrics/orders/transaction/new-customer-total-transaction-cost) | All transaction costs for new customers | Total NC payment burden | | [Returning Customer Transaction Cost](/reference/metrics/orders/transaction/returning-customer-transaction-cost) | All transaction costs for returning customers | Total RC payment burden | ## How These Metrics Relate Transaction costs impact contribution margin at the CM2 level: * **Total Transaction Cost** = [**Gateway Cost**](/reference/metrics/orders/transaction/gateway-cost) + [**Other Transaction Cost**](/reference/metrics/orders/transaction/other-transaction-cost) * **New Customer Total Transaction Cost** = [**NC Gateway Cost**](/reference/metrics/orders/transaction/new-customer-gateway-cost) + NC Other Transaction Cost * **Returning Customer Transaction Cost** = [**RC Gateway Cost**](/reference/metrics/orders/transaction/returning-customer-gateway-cost) + RC Other Transaction Cost * **CM2** = [**CM1**](/reference/metrics/orders/contribution-margin/cm1) - [**Fulfillment Costs**](/reference/metrics/orders/fulfillment) - [**Transaction Costs**](/reference/metrics/orders/transaction) * Gateway Cost % typically ranges from 2-3% of revenue for most processors ## Choosing the Right Metric * **Payment optimization**: Use Gateway Cost % to benchmark processor fees * **Per-order economics**: Use Per Order metrics for unit economics * **Total processing**: Use Total Transaction Cost for full payment burden * **Customer profitability**: Compare New vs Returning transaction costs # Gateway Cost: Track Payment Processing Fees Source: https://docs.upstackdata.com/reference/metrics/orders/transaction/gateway-cost Track total payment gateway processing fees in Upstack. Includes flat fees and percentage-based charges from Stripe, PayPal, and other processors. Gateway Cost measures the total payment gateway processing fees charged by payment processors like Stripe, PayPal, or Shopify Payments. ## Formula **Gateway Cost** = **SUM** ( Payment Gateway Fees ) ### Formula Components | Metric | Definition | | ------------------------ | ------------------------------------------------------------------------------- | | **Payment Gateway Fees** | Flat fees + percentage-based fees charged per transaction by payment processors | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store processed **\$125,000** in revenue across **1,247 orders** in January. With a 2.9% + \$0.30 fee structure: | Component | Calculation | Amount | | ---------------------- | ---------------- | ----------- | | Percentage fees | \$125,000 × 2.9% | \$3,625 | | Flat fees | 1,247 × \$0.30 | \$374 | | **Total Gateway Cost** | | **\$3,999** | *** ## How It Works Gateway Cost aggregates all payment processing fees from your payment processor. This includes both the percentage-based fee (typically 2.4-3.5% of transaction value) and any flat per-transaction fees (\$0.30 is common). The metric pulls from Shopify's transaction data. *** ## When to Use | Scenario | Action | | ------------------------------- | ----------------------------------------------------------------------- | | Evaluating payment processors | Compare Gateway Cost across different processors to find the best rates | | Calculating contribution margin | Deduct from revenue at CM2 level for accurate profitability | | Benchmarking processing costs | Target 2-3% of revenue for typical e-commerce | | Analyzing per-order economics | Combine with per-order metrics to understand unit costs | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ----------------------------------------- | | [Gateway Cost Per Order](/reference/metrics/orders/transaction/gateway-cost-per-order) | Average gateway fee per order | | [Gateway Cost %](/reference/metrics/orders/transaction/gateway-cost-percent) | Gateway fees as percentage of net revenue | | [Total Transaction Cost](/reference/metrics/orders/transaction/total-transaction-cost) | Gateway Cost + Other Transaction costs | [See all Transaction Cost metrics →](/reference/metrics/orders/transaction) # Gateway Cost Per Order: Average Processing Fee Per Transaction Source: https://docs.upstackdata.com/reference/metrics/orders/transaction/gateway-cost-per-order Track average payment gateway processing fees per order in Upstack. Monitor per-transaction costs from Stripe, PayPal, Shopify Payments, and other processors. Gateway Cost Per Order measures the average payment gateway processing fee charged per order by payment processors like Stripe, PayPal, or Shopify Payments. ## Formula **Gateway Cost Per Order** = [**Gateway Cost**](/reference/metrics/orders/transaction/gateway-cost) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------- | ------------------------------------- | | [**Gateway Cost**](/reference/metrics/orders/transaction/gateway-cost) | Total payment gateway processing fees | | [**Orders**](/reference/metrics/orders/counts/orders) | Total number of orders in the period | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Average | *** ## Example Your store processed **1,247 orders** in January with a total **Gateway Cost of \$3,999**: | Metric | Value | | -------------------------- | ---------- | | Gateway Cost | \$3,999 | | Orders | 1,247 | | **Gateway Cost Per Order** | **\$3.21** | With a typical fee structure of 2.9% + \$0.30, an average order value of \$100 results in roughly \$3.20 per order in gateway fees. *** ## How It Works Gateway Cost Per Order divides total payment processing fees by the number of orders. This metric helps you understand the fixed and variable components of your payment costs on a per-transaction basis. Higher AOV orders typically have higher absolute gateway costs but lower costs as a percentage of revenue. *** ## When to Use | Scenario | Action | | ---------------------------- | -------------------------------------------------------------------- | | Evaluating flat-fee impact | Compare against AOV to see how the flat fee (\$0.30) impacts margins | | Unit economics analysis | Include in per-order cost calculations for profitability | | Payment processor comparison | Compare per-order costs across different payment methods | | Pricing decisions | Factor into minimum order thresholds or small-cart surcharges | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------- | ----------------------------------------- | | [Gateway Cost](/reference/metrics/orders/transaction/gateway-cost) | Numerator: total processing fees | | [Orders](/reference/metrics/orders/counts/orders) | Denominator: order count | | [Gateway Cost %](/reference/metrics/orders/transaction/gateway-cost-percent) | Gateway fees as percentage of net revenue | [See all Transaction Cost metrics →](/reference/metrics/orders/transaction) # Gateway Cost %: Payment Fees as Share of Revenue Source: https://docs.upstackdata.com/reference/metrics/orders/transaction/gateway-cost-percent Track gateway cost as a percentage of net revenue. Measure payment processing fee burden and optimize processor selection for your Shopify store. Payment gateway cost as a percentage of net revenue. ## Formula **Gateway Cost %** = ( [**Gateway Cost**](/reference/metrics/orders/transaction/gateway-cost) ÷ [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) ) × 100 ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------- | ------------------------------------- | | [**Gateway Cost**](/reference/metrics/orders/transaction/gateway-cost) | Total payment gateway processing fees | | [**Net Revenue**](/reference/metrics/orders/revenue/net-revenue) | Revenue after discounts and refunds | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Ratio | *** ## Example Your store processed **\$125,000** in net revenue with **\$3,125** in gateway fees: | Month | Net Revenue | Gateway Cost | Gateway Cost % | | -------- | ----------- | ------------ | -------------- | | January | \$125,000 | \$3,125 | 2.5% | | February | \$142,000 | \$3,692 | 2.6% | | March | \$118,000 | \$2,832 | 2.4% | *** ## How It Works Gateway Cost % divides total payment gateway fees by net revenue, showing what percentage of each sale goes to payment processing. This metric helps benchmark processor costs—typical rates range from 2% to 3% depending on payment method mix and processor agreements. *** ## When to Use | Scenario | Action | | ----------------------- | ------------------------------------------------------- | | Processor benchmarking | Compare your rate against industry standards (2-3%) | | Negotiating rates | Use historical data to negotiate better processor terms | | Payment method analysis | Identify high-cost payment methods driving up fees | | Margin optimization | Find opportunities to reduce transaction costs | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | --------------------------------------------- | | [Gateway Cost](/reference/metrics/orders/transaction/gateway-cost) | Numerator—total gateway fees | | [Net Revenue](/reference/metrics/orders/revenue/net-revenue) | Denominator—revenue after adjustments | | [Gateway Cost Per Order](/reference/metrics/orders/transaction/gateway-cost-per-order) | Per-order view of gateway fees | | [Total Transaction Cost](/reference/metrics/orders/transaction/total-transaction-cost) | Includes gateway plus other transaction costs | [See all Transaction Cost metrics →](/reference/metrics/orders/transaction) # New Customer Gateway Cost: Payment Processing for First-Time Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/transaction/new-customer-gateway-cost Track payment gateway fees from new customer orders. Understand first-time buyer processing costs and segment transaction expenses by customer type. Total payment gateway fees for orders placed by new customers. ## Formula **New Customer Gateway Cost** = **SUM** ( [**Gateway Cost**](/reference/metrics/orders/transaction/gateway-cost) ) **WHERE** [customer\_type = new\_customer](/data-dictionary/measures-and-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------ | ----------------------------------------------------------------------------- | | [**Gateway Cost**](/reference/metrics/orders/transaction/gateway-cost) | Payment gateway processing fees including flat fees and percentage-based fees | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions) | Filter to include only first-time purchasers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store processed **\$1,247** in gateway fees from new customers in January: | Customer Type | Orders | Gateway Cost | Avg per Order | | ------------------- | ------ | ------------ | ------------- | | New Customers | 412 | \$1,247 | \$3.03 | | Returning Customers | 835 | \$2,089 | \$2.50 | New customers have higher per-order gateway costs due to smaller average order values. *** ## How It Works This metric sums all payment gateway processing fees—including percentage-based fees and flat per-transaction charges—for orders placed by first-time customers. Shopify identifies new customers as those with no prior order history in your store. *** ## When to Use | Scenario | Action | | ----------------------------- | ----------------------------------------------------------------- | | Customer acquisition analysis | Compare gateway costs between new and returning segments | | LTV modeling | Include acquisition-phase transaction costs in customer economics | | Processor negotiation | Benchmark new customer fees to negotiate better rates | | CM2 segmentation | Understand how transaction costs vary by customer type | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------------------------- | -------------------------------------------- | | [Gateway Cost](/reference/metrics/orders/transaction/gateway-cost) | Parent metric (all customers combined) | | [Returning Customer Gateway Cost](/reference/metrics/orders/transaction/returning-customer-gateway-cost) | Same metric for repeat buyers | | [Total Transaction Cost](/reference/metrics/orders/transaction/total-transaction-cost) | Includes gateway plus other transaction fees | | [New Customer Revenue](/reference/metrics/orders/revenue/new-customer-total-revenue) | Revenue side of new customer economics | [See all Transaction Cost metrics →](/reference/metrics/orders/transaction) # New Customer Other Transaction Cost: Custom Fees for First-Time Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/transaction/new-customer-other-transaction-cost Track user-defined transaction costs from order cost entries for new customer orders. Analyze custom processing fees and interchange expenses affecting first-time buyer profitability. The total user-defined transaction costs from order cost entries for new customer orders. ## Formula **New Customer Other Transaction Cost** = **SUM** ( [**Other Transaction Cost**](/reference/metrics/orders/transaction/other-transaction-cost) ) **WHERE** [customer\_type = new\_customer](/data-dictionary/measures-and-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------- | | [**Other Transaction Cost**](/reference/metrics/orders/transaction/other-transaction-cost) | User-defined transaction costs from order cost entries | | [**customer\_type = new\_customer**](/data-dictionary/measures-and-dimensions) | Filter to orders placed by first-time buyers with no prior purchase history | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store incurred **\$1,247** in custom transaction costs for new customer orders in March: | Week | NC Other Transaction Cost | NC Orders | Cost/Order | | ------ | ------------------------- | --------- | ---------- | | Week 1 | \$287 | 142 | \$2.02 | | Week 2 | \$324 | 168 | \$1.93 | | Week 3 | \$298 | 151 | \$1.97 | | Week 4 | \$338 | 176 | \$1.92 | Stable per-order costs indicate consistent payment method mix among new customers. *** ## How It Works This metric sums all user-defined transaction costs from order cost entries specifically for new customer orders. A customer is classified as "new" when they have no prior completed orders in Shopify. These costs are distinct from gateway fees and typically include interchange markups, currency conversion charges, or custom payment processing fees you've defined in your order cost configuration. *** ## When to Use | Scenario | Action | | ------------------------ | -------------------------------------------------------------- | | Analyzing CAC components | Include in total customer acquisition cost calculations | | Comparing payment costs | Benchmark new vs. returning customer transaction costs | | Margin optimization | Identify if payment method preferences differ by customer type | | Unit economics analysis | Calculate true per-order costs for new customer acquisition | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- | | [Returning Customer Other Transaction Cost](/reference/metrics/orders/transaction/returning-customer-other-transaction-cost) | Compare new vs. returning customer costs | | [New Customer Gateway Cost](/reference/metrics/orders/transaction/new-customer-gateway-cost) | Primary payment processing fees for new customers | | [Other Transaction Cost](/reference/metrics/orders/transaction/other-transaction-cost) | Total other transaction costs across all customers | | [Total Transaction Cost](/reference/metrics/orders/transaction/total-transaction-cost) | Combined gateway and other transaction fees | [See all Transaction Cost metrics →](/reference/metrics/orders/transaction) # New Customer Total Transaction Cost: Combined Payment Fees for First-Time Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/transaction/new-customer-total-transaction-cost Track total transaction costs for new customer orders including gateway fees and user-defined charges. Analyze payment processing impact on first-time buyer unit economics. The total cost of processing payments for new customer orders, combining gateway fees and any additional user-defined transaction costs. ## Formula **New Customer Total Transaction Cost** = [**New Customer Gateway Cost**](/reference/metrics/orders/transaction/new-customer-gateway-cost) + [**New Customer Other Transaction Cost**](/reference/metrics/orders/transaction/new-customer-other-transaction-cost) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | | [**New Customer Gateway Cost**](/reference/metrics/orders/transaction/new-customer-gateway-cost) | Payment gateway processing fees for new customer orders | | [**New Customer Other Transaction Cost**](/reference/metrics/orders/transaction/new-customer-other-transaction-cost) | User-defined transaction costs from order cost entries for new customers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store processed **847 new customer orders** in April with **\$3,124** in total transaction costs: | Component | Amount | % of NC Revenue | | ----------------------------- | ----------- | --------------- | | NC Gateway Cost | \$2,541 | 3.0% | | NC Other Transaction Cost | \$583 | 0.7% | | **NC Total Transaction Cost** | **\$3,124** | **3.7%** | Transaction costs for new customers are slightly higher as a percentage of revenue compared to returning customers due to lower average order values. *** ## How It Works New Customer Total Transaction Cost aggregates all payment-related fees specifically for first-time buyer orders. Gateway costs are pulled from Shopify's transaction data for orders where the customer had no prior purchase history. Other Transaction costs come from user-defined order cost entries with the "Transaction" category. This metric is deducted from NC CM1 to calculate NC CM2. *** ## When to Use | Scenario | Action | | ---------------------------- | --------------------------------------------------------- | | Calculating new customer CAC | Include in true customer acquisition cost analysis | | Comparing customer segments | Benchmark NC vs. RC transaction costs | | Unit economics modeling | Factor into per-new-customer profitability | | Payment method optimization | Identify if new customers use higher-cost payment methods | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | | [New Customer Gateway Cost](/reference/metrics/orders/transaction/new-customer-gateway-cost) | Component: payment processor fees for new customers | | [New Customer Other Transaction Cost](/reference/metrics/orders/transaction/new-customer-other-transaction-cost) | Component: user-defined transaction costs for new customers | | [Total Transaction Cost](/reference/metrics/orders/transaction/total-transaction-cost) | All customers' transaction costs combined | | [Returning Customer Transaction Cost](/reference/metrics/orders/transaction/returning-customer-transaction-cost) | Compare to returning customer transaction costs | [See all Transaction Cost metrics →](/reference/metrics/orders/transaction) # Other Transaction Cost: Custom Payment Processing Fees Source: https://docs.upstackdata.com/reference/metrics/orders/transaction/other-transaction-cost Track user-defined transaction costs from order cost entries. Includes additional payment processing fees beyond standard gateway charges. User-defined transaction costs from order cost entries—additional payment processing fees beyond standard gateway charges. ## Formula **Other Transaction Cost** = **SUM** ( Order Cost Entries ) **WHERE** [category = Transaction](/data-dictionary/measures-and-dimensions) ### Formula Components | Metric | Definition | | ---------------------------------------------------------------------- | --------------------------------------------------- | | **Order Cost Entries** | Custom costs you've assigned to orders in Shopify | | [**category = Transaction**](/data-dictionary/measures-and-dimensions) | Filter for entries categorized as transaction costs | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store had **\$1,247** in other transaction costs this month across 892 orders: | Cost Type | Amount | Per Order | | ------------------------ | ------ | --------- | | Currency conversion fees | \$523 | \$0.59 | | Cross-border processing | \$412 | \$0.46 | | Chargeback fees | \$312 | \$0.35 | *** ## How It Works Other Transaction Cost sums custom transaction-related expenses you've added to order cost entries with the Transaction category. These fees are separate from standard gateway processing fees and typically include currency conversion, cross-border charges, or specialized payment method costs. *** ## When to Use | Scenario | Action | | ------------------------ | ---------------------------------------------------- | | Track non-gateway fees | Monitor currency conversion and cross-border costs | | Calculate true CM2 | Include all transaction costs in contribution margin | | Audit payment expenses | Identify hidden costs beyond standard gateway fees | | Optimize payment methods | Compare total cost of different payment options | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- | | [Gateway Cost](/reference/metrics/orders/transaction/gateway-cost) | Standard payment gateway fees (this metric captures additional fees) | | [Total Transaction Cost](/reference/metrics/orders/transaction/total-transaction-cost) | Gateway Cost + Other Transaction Cost | | [New Customer Other Transaction Cost](/reference/metrics/orders/transaction/new-customer-other-transaction-cost) | This metric filtered to new customers | | [Returning Customer Other Transaction Cost](/reference/metrics/orders/transaction/returning-customer-other-transaction-cost) | This metric filtered to returning customers | [See all Transaction Cost metrics →](/reference/metrics/orders/transaction) # Returning Customer Gateway Cost: Payment Processing for Repeat Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/transaction/returning-customer-gateway-cost Track payment gateway fees from returning customer orders. Analyze repeat buyer processing costs and compare transaction expenses across customer segments. Total payment gateway fees for orders placed by returning customers. ## Formula **Returning Customer Gateway Cost** = **SUM** ( [**Gateway Cost**](/reference/metrics/orders/transaction/gateway-cost) ) **WHERE** [customer\_type = returning\_customer](/data-dictionary/measures-and-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------- | | [**Gateway Cost**](/reference/metrics/orders/transaction/gateway-cost) | Payment gateway processing fees including flat fees and percentage-based fees | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions) | Filter to include only repeat purchasers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store processed **\$2,089** in gateway fees from returning customers in January: | Customer Type | Orders | Gateway Cost | Avg per Order | | ------------------- | ------ | ------------ | ------------- | | Returning Customers | 835 | \$2,089 | \$2.50 | | New Customers | 412 | \$1,247 | \$3.03 | Returning customers have lower per-order gateway costs due to higher average order values and repeat purchase patterns. *** ## How It Works This metric sums all payment gateway processing fees—including percentage-based fees and flat per-transaction charges—for orders placed by returning customers. Shopify identifies returning customers as those who have at least one prior order in your store history. *** ## When to Use | Scenario | Action | | ------------------- | --------------------------------------------------------------------- | | Retention economics | Evaluate profitability of repeat buyers including transaction costs | | LTV refinement | Include returning customer transaction costs in lifetime value models | | Segment comparison | Compare gateway costs between new and returning customers | | CM2 calculation | Factor transaction costs into contribution margin by segment | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------------------ | -------------------------------------------- | | [Gateway Cost](/reference/metrics/orders/transaction/gateway-cost) | Parent metric (all customers combined) | | [New Customer Gateway Cost](/reference/metrics/orders/transaction/new-customer-gateway-cost) | Same metric for first-time buyers | | [Total Transaction Cost](/reference/metrics/orders/transaction/total-transaction-cost) | Includes gateway plus other transaction fees | | [Returning Customer Revenue](/reference/metrics/orders/revenue/returning-customer-total-revenue) | Revenue side of returning customer economics | [See all Transaction Cost metrics →](/reference/metrics/orders/transaction) # Returning Customer Other Transaction Cost: Custom Fees for Repeat Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/transaction/returning-customer-other-transaction-cost Track user-defined transaction costs from order cost entries for returning customer orders. Analyze custom processing fees and interchange expenses affecting repeat buyer profitability. The total user-defined transaction costs from order cost entries for returning customer orders. ## Formula **Returning Customer Other Transaction Cost** = **SUM** ( [**Other Transaction Cost**](/reference/metrics/orders/transaction/other-transaction-cost) ) **WHERE** [customer\_type = returning\_customer](/data-dictionary/measures-and-dimensions) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------- | | [**Other Transaction Cost**](/reference/metrics/orders/transaction/other-transaction-cost) | User-defined transaction costs from order cost entries | | [**customer\_type = returning\_customer**](/data-dictionary/measures-and-dimensions) | Filter to orders placed by customers with at least one prior completed purchase | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store incurred **\$2,856** in custom transaction costs for returning customer orders in March: | Week | RC Other Transaction Cost | RC Orders | Cost/Order | | ------ | ------------------------- | --------- | ---------- | | Week 1 | \$687 | 342 | \$2.01 | | Week 2 | \$724 | 368 | \$1.97 | | Week 3 | \$698 | 351 | \$1.99 | | Week 4 | \$747 | 376 | \$1.99 | Consistent per-order costs indicate stable payment method preferences among returning customers. *** ## How It Works This metric sums all user-defined transaction costs from order cost entries specifically for returning customer orders. A customer is classified as "returning" when they have at least one prior completed order in Shopify. These costs are distinct from gateway fees and typically include interchange markups, currency conversion charges, or custom payment processing fees you've defined in your order cost configuration. *** ## When to Use | Scenario | Action | | --------------------------------- | ------------------------------------------------------------------ | | Analyzing retention profitability | Include in contribution margin calculations for repeat buyers | | Comparing payment costs | Benchmark new vs. returning customer transaction costs | | Margin optimization | Identify if payment method preferences differ by customer type | | LTV analysis | Factor transaction costs into customer lifetime value calculations | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | [New Customer Other Transaction Cost](/reference/metrics/orders/transaction/new-customer-other-transaction-cost) | Compare new vs. returning customer costs | | [Returning Customer Gateway Cost](/reference/metrics/orders/transaction/returning-customer-gateway-cost) | Primary payment processing fees for returning customers | | [Other Transaction Cost](/reference/metrics/orders/transaction/other-transaction-cost) | Total other transaction costs across all customers | | [Total Transaction Cost](/reference/metrics/orders/transaction/total-transaction-cost) | Combined gateway and other transaction fees | [See all Transaction Cost metrics →](/reference/metrics/orders/transaction) # Returning Customer Transaction Cost: Combined Payment Fees for Repeat Buyers Source: https://docs.upstackdata.com/reference/metrics/orders/transaction/returning-customer-transaction-cost Track total transaction costs for returning customer orders including gateway fees and user-defined charges. Analyze payment processing impact on repeat buyer unit economics. The total cost of processing payments for returning customer orders, combining gateway fees and any additional user-defined transaction costs. ## Formula **Returning Customer Transaction Cost** = [**Returning Customer Gateway Cost**](/reference/metrics/orders/transaction/returning-customer-gateway-cost) + [**Returning Customer Other Transaction Cost**](/reference/metrics/orders/transaction/returning-customer-other-transaction-cost) ### Formula Components | Metric | Definition | | -------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | | [**Returning Customer Gateway Cost**](/reference/metrics/orders/transaction/returning-customer-gateway-cost) | Payment gateway processing fees for returning customer orders | | [**Returning Customer Other Transaction Cost**](/reference/metrics/orders/transaction/returning-customer-other-transaction-cost) | User-defined transaction costs from order cost entries for returning customers | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store processed **1,256 returning customer orders** in April with **\$4,892** in total transaction costs: | Component | Amount | % of RC Revenue | | ----------------------------- | ----------- | --------------- | | RC Gateway Cost | \$3,841 | 2.8% | | RC Other Transaction Cost | \$1,051 | 0.8% | | **RC Total Transaction Cost** | **\$4,892** | **3.6%** | Transaction costs for returning customers are typically lower as a percentage of revenue compared to new customers due to higher average order values. *** ## How It Works Returning Customer Transaction Cost aggregates all payment-related fees specifically for repeat buyer orders. Gateway costs are pulled from Shopify's transaction data for orders where the customer has at least one prior purchase. Other Transaction costs come from user-defined order cost entries with the "Transaction" category. This metric is deducted from RC CM1 to calculate RC CM2. *** ## When to Use | Scenario | Action | | ----------------------------------- | -------------------------------------------------------------- | | Calculating retention profitability | Include in true lifetime value analysis | | Comparing customer segments | Benchmark RC vs. NC transaction costs | | Unit economics modeling | Factor into per-returning-customer profitability | | Payment method optimization | Identify if returning customers use lower-cost payment methods | *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- | | [Returning Customer Gateway Cost](/reference/metrics/orders/transaction/returning-customer-gateway-cost) | Component: payment processor fees for returning customers | | [Returning Customer Other Transaction Cost](/reference/metrics/orders/transaction/returning-customer-other-transaction-cost) | Component: user-defined transaction costs for returning customers | | [Total Transaction Cost](/reference/metrics/orders/transaction/total-transaction-cost) | All customers' transaction costs combined | | [New Customer Total Transaction Cost](/reference/metrics/orders/transaction/new-customer-total-transaction-cost) | Compare to new customer transaction costs | [See all Transaction Cost metrics →](/reference/metrics/orders/transaction) # Total Transaction Cost: Combined Payment Processing Fees Source: https://docs.upstackdata.com/reference/metrics/orders/transaction/total-transaction-cost Track total transaction costs including gateway fees and user-defined transaction costs. Understand payment processing impact on contribution margin. The total cost of processing payments, combining gateway fees and any additional user-defined transaction costs. ## Formula **Total Transaction Cost** = [**Gateway Cost**](/reference/metrics/orders/transaction/gateway-cost) + [**Other Transaction Cost**](/reference/metrics/orders/transaction/other-transaction-cost) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------ | | [**Gateway Cost**](/reference/metrics/orders/transaction/gateway-cost) | Payment gateway processing fees including flat and percentage-based fees | | [**Other Transaction Cost**](/reference/metrics/orders/transaction/other-transaction-cost) | User-defined transaction costs from order cost entries | | Metadata | | | --------------- | ----------------------------------- | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify) | | **Aggregation** | Sum | *** ## Example Your store processed **\$125,000** in orders this month with **\$4,875** in total transaction costs: | Component | Amount | % of Revenue | | -------------------------- | ----------- | ------------ | | Gateway Cost | \$3,750 | 3.0% | | Other Transaction Cost | \$1,125 | 0.9% | | **Total Transaction Cost** | **\$4,875** | **3.9%** | *** ## How It Works Total Transaction Cost aggregates all payment-related fees from your orders. Gateway costs are pulled from Shopify's transaction data, while Other Transaction costs come from user-defined order cost entries with the "Transaction" category. This metric is deducted from CM1 to calculate CM2. *** ## When to Use | Scenario | Action | | ------------------------------- | ---------------------------------------------- | | Calculating contribution margin | Deduct from CM1 alongside fulfillment costs | | Evaluating payment processors | Compare total processing costs across gateways | | Pricing strategy | Factor transaction costs into product margins | | Profitability analysis | Track how payment fees impact net margins | *** ## Related Metrics | Metric | Relationship | | -------------------------------------------------------------------------------------- | ----------------------------------------------- | | [Gateway Cost](/reference/metrics/orders/transaction/gateway-cost) | Component: payment processor fees | | [Other Transaction Cost](/reference/metrics/orders/transaction/other-transaction-cost) | Component: user-defined transaction costs | | [Gateway Cost %](/reference/metrics/orders/transaction/gateway-cost-percent) | Gateway fees as percentage of revenue | | [CM1](/reference/metrics/orders/contribution-margin/cm1) | Margin before transaction and fulfillment costs | | [CM2](/reference/metrics/orders/contribution-margin/cm2) | Margin after deducting this cost | [See all Transaction Cost metrics →](/reference/metrics/orders/transaction) # Transaction Cost per Order: Average Payment Processing Cost Source: https://docs.upstackdata.com/reference/metrics/orders/transaction/transaction-cost-per-order Track transaction cost per order for your Shopify store. Measure the average payment processing fee per order. Transaction Cost per Order measures the average payment processing fee per order—Shopify Payments, Stripe, PayPal, and other gateway fees. ## Formula **Transaction Cost per Order** = [**Total Transaction Costs**](/reference/metrics/orders/transaction/total-transaction-cost) ÷ [**Orders**](/reference/metrics/orders/counts/orders) ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------- | ----------------------------- | | [**Total Transaction Costs**](/reference/metrics/orders/transaction/total-transaction-cost) | Total payment processing fees | | [**Orders**](/reference/metrics/orders/counts/orders) | Count of orders | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Currency | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Average | *** ## Example Your Shopify store has **\$4,500** transaction costs across **1,000** orders. | Component | Value | Calculation | | ------------------------------ | ---------- | --------------- | | Transaction Costs | \$4,500 | Payment fees | | Orders | 1,000 | Order count | | **Transaction Cost per Order** | **\$4.50** | \$4,500 ÷ 1,000 | *** ## How It Works Transaction costs are typically calculated as a percentage of revenue plus a fixed fee per transaction (e.g., 2.9% + \$0.30). Higher AOV orders have lower transaction cost as a percentage. *** ## When to Use | Scenario | Action | | ----------------------- | ------------------------------------ | | CM2 calculation | Transaction costs reduce CM1 | | Payment method analysis | Compare costs by payment type | | Pricing decisions | Factor transaction fees into margins | | Gateway comparison | Evaluate payment processor costs | *** ## Related Metrics | Metric | Relationship | | ------------------------------------------------------------------------------------ | ------------------------------ | | [Transaction Cost](/reference/metrics/orders/transaction/total-transaction-cost) | Total payment fees | | [Transaction Cost %](/reference/metrics/orders/transaction/transaction-cost-percent) | Percentage of revenue | | [CM2 per Order](/reference/metrics/orders/contribution-margin/cm2-per-order) | Margin after transaction costs | [See all Transaction metrics →](/reference/metrics/orders/transaction) # Transaction Cost %: Payment Processing Rate Source: https://docs.upstackdata.com/reference/metrics/orders/transaction/transaction-cost-percent Track transaction cost percentage for your Shopify store. Measure payment processing fees as a percentage of revenue. Transaction Cost % measures payment processing fees as a percentage of revenue—showing the true cost of accepting payments. ## Formula **Transaction Cost %** = [**Total Transaction Costs**](/reference/metrics/orders/transaction/total-transaction-cost) ÷ [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) × 100 ### Formula Components | Metric | Definition | | ------------------------------------------------------------------------------------------- | ----------------------------- | | [**Total Transaction Costs**](/reference/metrics/orders/transaction/total-transaction-cost) | Total payment processing fees | | [**Total Revenue**](/reference/metrics/orders/revenue/total-revenue) | Total order revenue | | Metadata | | | --------------- | ------------------------------------------------------------------------------------ | | **Type** | Percentage | | **Data Source** | [Shopify](/sources/catalog/shopify), [Upstack Costs](/sources/catalog/upstack-costs) | | **Aggregation** | Ratio | *** ## Example Your Shopify store has **\$4,500** transaction costs on **\$150,000** revenue. | Component | Value | Calculation | | ---------------------- | --------- | ------------------- | | Transaction Costs | \$4,500 | Payment fees | | Total Revenue | \$150,000 | Order revenue | | **Transaction Cost %** | **3.0%** | \$4,500 ÷ \$150,000 | *** ## How It Works Transaction Cost % varies by payment method and order size. Credit cards typically cost 2.4-3.0%, while Shop Pay and other methods may differ. Higher AOV reduces the effective percentage due to fixed per-transaction fees. *** ## Benchmarks | Rating | Range | | --------- | ----------- | | Excellent | \< 2.5% | | Typical | 2.5% – 3.0% | | High | 3.0% – 3.5% | | Very High | > 3.5% | Note: International transactions and certain card types cost more. *** ## Related Metrics | Metric | Relationship | | ---------------------------------------------------------------------------------------------- | ------------------------------ | | [Transaction Cost](/reference/metrics/orders/transaction/total-transaction-cost) | Absolute amount | | [Transaction Cost per Order](/reference/metrics/orders/transaction/transaction-cost-per-order) | Per-order average | | [CM2 %](/reference/metrics/orders/contribution-margin/cm2-percent) | Margin after transaction costs | [See all Transaction metrics →](/reference/metrics/orders/transaction) # How to find my Upstack Data Pixel ID? Source: https://docs.upstackdata.com/resources/how-to-find-my-upstack-data-pixel-id Find your Upstack Data Pixel ID in the dashboard under System → Events Manager — required for installing the tracking script on Shopify, headless storefronts, and third-party landing pages. *** ## **Prerequisites** * An [Upstack Data](https://app.upstackdata.com/login) account with the email and password you used during sign-up. * The Upstack Data app installed on your Shopify store (your Pixel ID is generated when the app is installed). ## **Steps to Locate Your Pixel ID** ## **Step 1: Sign in to your Upstack Data account** * Go to [https://app.upstackdata.com/login](https://app.upstackdata.com/login). * Enter your **email and password**. * Click **Sign In**. *** ## **Step 2: Open Events Manager** * Once signed in, open **System** in the [Upstack dashboard](https://app.upstackdata.com) sidebar. * Click **Events Manager**. The same Pixel ID also appears on **Destinations** and **Data Sources**. Upstack dashboard System menu with Events Manager *** ## **Step 3: Locate your Pixel ID** * Your Pixel ID is displayed in the page header, clearly labelled **Pixel ID**. Click it to copy. Events Manager header displaying the Pixel ID Your Upstack Pixel ID format is a UUID like: `XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX` For example: `58284d43-85f6-41fb-b2e0-f32f8ecb4e9b` **Note:** Your Pixel ID will be different from this example as it is unique to your Shopify store. *** ## **Step 4: Copy and save your Pixel ID** * **Copy** your Pixel ID for use in your setup, and **store** it in a secure location for future reference. * Paste it exactly as shown — Pixel IDs are case-sensitive and any extra whitespace will break tracking. *** ## **Step 5: Verify the Pixel ID works** * Paste the Pixel ID into the destination you're configuring (landing page, GTM, Checkout Champ, etc.). * Visit the page in a browser and use the [Upstack Data Pixel Helper](/guides/pixel-helper/how-to-install-upstack-data-pixel-helper) to confirm the pixel fires with this Pixel ID. * In the [Upstack dashboard](https://app.upstackdata.com) under **Events Manager**, confirm the new events arrive against your Pixel ID. *** ## **Can't see your Pixel ID?** * Make sure you're on **Events Manager**, **Destinations**, or **Data Sources** in the [Upstack dashboard](https://app.upstackdata.com). * Confirm the Upstack Data app is still installed in your Shopify Admin under **Settings → Apps and sales channels**. * Contact Upstack support at [support@upstackdata.com](mailto:support@upstackdata.com). # How to invite a team member to your Upstack account Source: https://docs.upstackdata.com/resources/how-to-invite-a-team-member-to-your-upstack-account A step-by-step guide for account owners and admins to invite a teammate, agency partner, or stakeholder to their Upstack workspace, including roles and common scenarios. This is a step-by-step guide for account owners and admins who need to add a teammate — a developer, marketer, agency partner, or another stakeholder — to their Upstack workspace. ## Steps Sign in to your Upstack account. Open **Settings**. It sits in the bottom-left of the navigation. Upstack dashboard navigation with Settings in the bottom-left Go to the **Team** tab inside Settings, then click **Add Team member**. Team tab inside Upstack Settings Add team member form in Upstack Settings * Enter the new teammate's **email address** in the email field. * Choose a **role**. For full access — including the ability to invite others, manage billing, and remove users — select **Admin**. * Click **Add Email** for each user you add. You can add multiple users. When you're done, click **Send Invitations** to invite everyone you added. Adding emails and sending invitations to team members The user receives an invite like the following: Example team invitation email from Upstack After accepting the invite, the user is prompted to create their credentials. They can then log in and see the organization's dashboard in the platform. ## What the invitee should expect An email invite arrives in the inbox of the address you entered. If they don't see it, ask them to search their inbox for "upstack" — the from address and subject line both reference the brand. Check the spam folder in case it isn't in the main inbox. They click the link in the email to confirm the invite and finish signing in. Invites are time-limited. They are valid for 5 days before the invitee link expires. To send a fresh one, go back to the Team page and re-add the email. If they already have an Upstack login under that email, accepting the invite simply attaches the new account to their existing user. They can switch between accounts from the account switcher. ## Common scenarios A teammate may accidentally create their own Upstack account instead of joining yours. Invite their email to the correct account as an admin. Have them log out, accept the invite from their email, sign back in, and switch into the shared account. They can then cancel the duplicate account they created. Yes. Use the same flow — add their work email as an admin, or a more limited role if available on your plan. Remove them from the Team page when the engagement ends. Re-send by re-adding the email on the Team page. The previous invite is automatically superseded. ## Roles | Role | Typical use | | ------ | -------------------------------------------------------------------------------- | | Admin | Full access — manage users, billing, integrations, and data. | | Owner | Account creator; only another owner can remove an owner. | | Member | Can view dashboards and event streams but cannot modify integrations or billing. | # How to Set up Upstack Data on a Landing Page or Subdomain Source: https://docs.upstackdata.com/resources/how-to-set-up-upstack-data-on-a-landing-page-or-subdomain Install the Upstack Data Pixel on a landing page or subdomain by adding the script with your Pixel ID into the page's head — enabling tracking and attribution for non-Shopify domains. *** ## **Quick Summary** * **Copy your Pixel ID** from the [Upstack dashboard](https://app.upstackdata.com). * **Insert the Pixel ID** into the script below. * Place the script **inside the `` section** of your webpage. * **Publish** or **update** your landing page. * **Verify** your installation. *** ## **Prerequisites** * An [Upstack Data](https://app.upstackdata.com) account with the Upstack Data app installed on your Shopify store. * Your Upstack Pixel ID (UUID format: `XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`, e.g., `58284d43-85f6-41fb-b2e0-f32f8ecb4e9b`). See [How to find my Upstack Data Pixel ID](/resources/how-to-find-my-upstack-data-pixel-id). * Edit access to the landing page or subdomain (admin access in the page builder, CMS, or static host). * Ability to add code to the `` section (Custom Code / Header Code area in your tool). *** ## **Configuration Steps** ## **Step 1: Find and copy your Upstack Pixel ID** Your **Upstack Pixel ID** is a unique identifier linked to your Shopify store. This ID is used to track browser events and associate them with your account. For step-by-step instructions on locating your Upstack Pixel ID, see: [How to find my Upstack Data Pixel ID?](/resources/how-to-find-my-upstack-data-pixel-id) *** ## **Step 2: Insert your Pixel ID into the script** * Open the Upstack Pixel script provided below. * Replace the placeholder Pixel ID with your own ID. ### Upstack Pixel Snippet ```html theme={null} ``` **Important:** * **Replace `XXXX-XXXX-XXXXX-XXXX` with the Pixel ID** you obtained in Step 1 (UUID format: `XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`). * Enter the Pixel ID exactly as provided — extra whitespace or quotation mismatches will break tracking. *** ## **Step 3: Add the script to your landing page** * Open the landing page editor or HTML settings of your third-party tool. * Locate the **Custom Code** or **Header Code** section. * Paste the complete script into the `` section of the page. *** ## **Step 4: Publish or update your landing page** * Save and republish the page so the script goes live. *** ## **Step 5: Verify the installation** * Visit your landing page in a browser. * Use the [Upstack Data Pixel Helper](/guides/pixel-helper/how-to-install-upstack-data-pixel-helper) to confirm the pixel is firing correctly with your Pixel ID. * In the [Upstack dashboard](https://app.upstackdata.com) under **Events Manager**, confirm `PageView` events from the new landing page arrive within a few minutes. *** **Need help?** If you encounter any issues during setup, contact our support team and we'll help diagnose the problem. # How to Set up Upstack Data on Checkout Champ Source: https://docs.upstackdata.com/resources/how-to-set-up-upstack-data-on-checkout-champ Install the Upstack Data Pixel on Checkout Champ by pasting the script with your Pixel ID into the Global Scripts section — enabling tracking and attribution across all funnels. *** ## Quick Summary * **Copy your Pixel ID** from the [Upstack dashboard](https://app.upstackdata.com). * **Insert the Pixel ID** into the script below. * Add the script to the **Global Scripts** section in your Checkout Champ admin, loaded in the `` of every funnel. * **Disable the native Checkout Champ Facebook Pixel** to avoid duplicate tracking. * **Save** your changes. * **Verify** your installation. *** ## Prerequisites * An [Upstack Data](https://app.upstackdata.com) account with the Upstack Data app installed on your Shopify store. * Your Upstack Pixel ID (UUID format: `XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`, e.g., `58284d43-85f6-41fb-b2e0-f32f8ecb4e9b`). See [How to find my Upstack Data Pixel ID](/resources/how-to-find-my-upstack-data-pixel-id). * Admin access to your Checkout Champ admin panel with permission to edit **Global Scripts** and disable native pixel integrations. * Coordination with the Upstack Data team to receive the **full** Checkout Champ tracking script block during onboarding. *** ## Configuration Steps ## Step 1: Find and copy your Upstack Pixel ID Your **Upstack Pixel ID** is a unique identifier linked to your store. This ID is used to track browser events and associate them with your account. For step-by-step instructions on locating your Upstack Pixel ID, see: [How to find my Upstack Data Pixel ID?](/resources/how-to-find-my-upstack-data-pixel-id) *** ## Step 2: Disable the native Checkout Champ Facebook Pixel **Critical: do this first!** Before adding the Upstack scripts, you **must** disable the native Checkout Champ Facebook Pixel integration. Running both simultaneously will cause **duplicate event tracking**, which leads to inflated metrics and poor ad optimization. * Sign in to your Checkout Champ admin panel. * Navigate to the **Facebook Pixel** settings (typically found under tracking or integration settings). * **Remove or disable** any existing Facebook Pixel ID configured in the native integration. * **Save** your changes. This ensures Upstack Data is the sole source of pixel events, preventing duplication and ensuring accurate attribution. *** ## Step 3: Insert your Pixel ID into the script * Open the Upstack Pixel script provided below. * Replace the placeholder Pixel ID with your own ID. ### Upstack Pixel Snippet ```html theme={null} ``` **Important:** * **Replace `XXXX-XXXX-XXXXX-XXXX` with the Pixel ID** you obtained in Step 1 (UUID format: `XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`). * Enter the Pixel ID exactly as provided — extra whitespace or quotation mismatches will break tracking. The complete Checkout Champ tracking script includes additional event tracking scripts for **ccpurchase**, **initiate\_checkout**, **shared utilities**, **add\_to\_cart**, **add\_shipping\_info**, and **add\_payment\_info**. The full script block will be provided by the Upstack Data team during onboarding. Paste the Global Script above along with all event tracking scripts together into the Global Scripts section. *** ## Step 4: Add the script to Checkout Champ Global Scripts * Sign in to your Checkout Champ admin panel. * Navigate to the **Global Scripts** section. * Paste the **entire script block** (Global Script plus all event tracking scripts). * Ensure the script is set to load in the `` of every funnel page. * **Save** your changes. *** ## Step 5: Verify the installation * Visit one of your funnel pages in a browser. * Use the [Upstack Data Pixel Helper](/guides/pixel-helper/how-to-install-upstack-data-pixel-helper) (or your browser developer console) to confirm the pixel is firing correctly with your Pixel ID. * Walk through a test checkout end-to-end to verify each event fires. * In the [Upstack dashboard](https://app.upstackdata.com) under **Events Manager**, confirm `page`, `initiate_checkout`, and `purchase` events arrive against your Pixel ID. *** ## Events tracked Once installed, the following events are automatically tracked: * **page** — Fires on every page load. * **initiate\_checkout** — Fires when a customer enters their email or an order begins. * **add\_to\_cart** — Fires when items are added to the cart. * **add\_shipping\_info** — Fires when shipping information is provided. * **add\_payment\_info** — Fires when payment details are entered. * **purchase** — Fires on completed (non-partial) orders. *** **Need help?** If you encounter any issues during setup, contact our support team and we'll help diagnose the problem. # Implementing Upstack Data on Landing Pages, Subdomains, and Third-Party Sites Source: https://docs.upstackdata.com/resources/implementing-upstack-data-on-landing-pages Install the Upstack Data Pixel on landing pages, subdomains, headless storefronts, and third-party platforms — track events and attribute conversions beyond your Shopify store. When your marketing funnel extends beyond your Shopify storefront — landing pages, subdomains, headless commerce frontends, WordPress sites, or third-party quiz/survey platforms — you need to install the Upstack Pixel manually to capture events and maintain attribution continuity. This guide covers two implementation methods: * **Direct installation** — Add the pixel script directly to your page's HTML * **Google Tag Manager (GTM)** — Deploy via your GTM container for centralized tag management For the full event payload reference — including all required and optional properties — see [Standard Events Reference](/event-tracking/event-taxonomy/standard-events) and [Properties & Context](/event-tracking/event-taxonomy). *** ## When You Need This Guide Install the Upstack Pixel manually when you have: * **Landing pages** — Unbounce, Instapage, Webflow, Carrd, or custom HTML pages * **Subdomains** — `shop.yourdomain.com` or `promo.yourdomain.com` running outside Shopify * **Headless storefronts** — Custom React, Next.js, or Vue frontends using Shopify's Storefront API * **WordPress / WooCommerce** — Sites that redirect to Shopify checkout * **Quiz or survey tools** — Octane AI, Typeform, or Jotform funnels * **Third-party checkout platforms** — Checkout Champ, ClickFunnels, or custom checkout flows *** ## Prerequisites * An [Upstack Data](https://app.upstackdata.com) account with the Upstack Data app installed on your Shopify store * Your Upstack Pixel ID (UUID format: `XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`, e.g., `58284d43-85f6-41fb-b2e0-f32f8ecb4e9b`). See [How to find my Upstack Data Pixel ID](/resources/how-to-find-my-upstack-data-pixel-id) * Edit access to the site or landing page (admin access in your page builder, CMS, or GTM container) *** ## Step 1: Find Your Upstack Pixel ID Your **Upstack Pixel ID** is a unique identifier linked to your Shopify store. This ID connects browser events from external sites to your Upstack account. For step-by-step instructions, see: [How to find my Upstack Data Pixel ID?](/resources/how-to-find-my-upstack-data-pixel-id) *** ## Step 2: Choose Your Implementation Method Add the pixel script directly to your page's `` section. This is the simplest approach for landing pages and sites without a tag manager. ### Base Pixel Snippet (Required on Every Page) ```html theme={null} ``` **Replace `YOUR_PIXEL_ID`** with the Pixel ID you obtained in Step 1 (UUID format: `XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX`). Deploy the pixel via GTM for centralized tag management and conditional triggering. 1. Sign in to [Google Tag Manager](https://tagmanager.google.com) and open your container 2. Navigate to **Tags → New** 3. Select **Custom HTML** as the tag type 4. Paste the pixel snippet into the HTML editor 5. Set the trigger to **All Pages** (or specific page conditions) ### GTM Custom HTML Tag ```html theme={null} ``` For e-commerce events, you can use GTM Data Layer variables to dynamically populate event properties. See Step 3 for event snippets. *** ## Step 3: Track Events Beyond page views, you'll want to track key conversion events. Each event follows the same pattern: ```javascript theme={null} window._upstack('track', 'event_name', { /* event properties */ }); ``` For the complete list of standard events and their required properties, see the [Standard Events Reference](/event-tracking/event-taxonomy/standard-events). ### Event Snippets Reference Fires when a visitor views a product or content page. ```html theme={null} ``` **Required properties:** `value`, `currency`, `items` See [ViewContent in Standard Events](/event-tracking/event-taxonomy/standard-events) for the full specification. Fires when a visitor adds an item to their cart. ```html theme={null} ``` **Required properties:** `value`, `currency`, `items` See [AddToCart in Standard Events](/event-tracking/event-taxonomy/standard-events) for the full specification. Fires when a visitor starts the checkout flow. ```html theme={null} ``` **Required properties:** `value`, `currency`, `items` **Recommended:** Include identity fields (`email`, `phone`, `firstName`, `lastName`) to improve destination match quality. See [InitiateCheckout in Standard Events](/event-tracking/event-taxonomy/standard-events) for the full specification. Fires when an order is completed. This is the most important conversion event. ```html theme={null} ``` **Required properties:** `transactionId` or `orderId`, `value`, `currency`, `items` **Recommended:** Include all identity fields for maximum match quality at destinations. See [Purchase in Standard Events](/event-tracking/event-taxonomy/standard-events) for the full specification. Fires when a visitor submits a lead form, quiz, or survey. ```html theme={null} ``` **Required properties:** At least one identity field (`email` or `phone`) See [Lead in Standard Events](/event-tracking/event-taxonomy/standard-events) for the full specification. Fires when a visitor subscribes to email or SMS marketing. ```html theme={null} ``` See [Subscribe in Standard Events](/event-tracking/event-taxonomy/standard-events) for the full specification. *** ## Step 4: Preserve UTM Parameters Across Pages If your landing page links to your Shopify store or checkout, preserve UTM parameters and click IDs to maintain attribution continuity. Add this script to automatically append the current page's query string to all outbound links: ```html theme={null} ``` This ensures `fbclid`, `gclid`, `ttclid`, and UTM parameters flow through to Shopify checkout. *** ## Step 5: Verify Your Installation 1. **Visit your site** and trigger each event you configured (page view, lead capture, purchase, etc.) 2. **Use the Pixel Helper** — Install the [Upstack Data Pixel Helper](/guides/pixel-helper/how-to-install-upstack-data-pixel-helper) browser extension to confirm events fire with the expected parameters 3. **Check Events Manager** — In the [Upstack dashboard](https://app.upstackdata.com) under **Events Manager**, confirm events arrive with your Pixel ID and correct properties If using GTM, use **Preview / Debug** mode to verify tags fire on the correct triggers before publishing. *** ## Platform-Specific Guides Quick setup for Unbounce, Instapage, Webflow, and custom landing pages. Full integration guide for Checkout Champ implementations. *** ## Reference Documentation Overview of the Upstack event model and how events flow through the pipeline. Complete specification for every standard event — required properties, optional fields, and example payloads. Full reference for user data, custom data, and context fields attached to events. Define your own events for interactions beyond the standard taxonomy. *** **Health and Wellness stores:** If you're in the health/wellness category and need to use custom event names for platform compliance, see [Health and Wellness Custom Event Mappings →](/destinations/catalog/meta-capi/health-and-wellness-custom-event-mappings) # Implementing Upstack Data on WordPress via Google Tag Manager (GTM) Source: https://docs.upstackdata.com/resources/implementing-upstack-data-on-wordpress-via-google-tag-manager-gtm Implement Upstack Data pixel and event tracking on a WordPress site using Google Tag Manager: head tag snippet, view_content, add_to_cart, initiate_checkout, purchase, and lead event templates with GTM tag and trigger setup. In order to set up the Upstack pixel using Google Tag Manager, you instrument the relevant Upstack tags and populate the dynamic variables using GTM tag variables. ## Step 1: Find and copy your Upstack Pixel ID Your **Upstack Data Pixel ID** is a unique identifier linked to your Shopify store. It's used to track browser events and associate them with your account. See [How to find my Upstack Data Pixel ID](/resources/how-to-find-my-upstack-data-pixel-id). ## Step 2: JavaScript snippets for Upstack Data ### 1. JS head tag snippet (loaded on every page) ```html theme={null} ``` **Important:** Replace `XXXXXXXXXXXXXXXXX` with the Pixel ID from Step 1, exactly as provided, to ensure proper tracking across all pages. ### 2. View Content event snippet ```html theme={null} ``` ### 3. Add to Cart event snippet ```html theme={null} ``` ### 4. Initiate Checkout event snippet ```html theme={null} ``` ### 5. Purchase event snippet ```html theme={null} ``` ### 6. Lead event snippet ```html theme={null} ``` ## Step 3: Create the event tag in Google Tag Manager 1. In Google Tag Manager, go to **Tags → New**. 2. Select **Custom HTML** as the tag type. 3. Paste the Upstack Data script template into the HTML editor. ## Step 4: Configure triggering Set up triggers to fire your tag on the relevant pages or events. Example triggers: * **All Pages** * **Page View** on specific URLs * **Click Triggers** or **Custom Events** ## Step 5: Set up data layer variables (if required) * If the script uses a **dataLayer** object, configure GTM variables to pull in the values. * WordPress plugins (like WooCommerce) may already push dataLayer values for e-commerce actions. ## Step 6: Preview and debug Use Google Tag Manager's **Preview/Debug mode** to test your implementation. Validate that events are firing correctly and data is being passed as expected. ## Step 7: Publish your container Once everything looks correct, click **Submit** and publish your container. This pushes the Upstack Data tracking live on your WordPress site. ## Step 8: Validate events in Upstack Data * Confirm that the Upstack Data dashboard is receiving events. * Cross-check against expected event flows. For stores under Meta's Health & Wellness restrictions, see [Health and Wellness custom event mappings](/destinations/catalog/meta-capi/health-and-wellness-custom-event-mappings). # Upstack-Enhanced Klaviyo Abandonment Flows (Overview & FAQs) Source: https://docs.upstackdata.com/resources/upstack-enhanced-klaviyo-abandonment-flows-overview-faqs Recover 30-50% more cart, checkout, and browse abandonment revenue with Upstack-enhanced Klaviyo flows — how identity resolution feeds Klaviyo with more triggerable shoppers, plus setup FAQs. *** ## **Summary** **Klaviyo “abandonment” flows** *(browse, cart, checkout abandonment emails)* are a proven way to recover otherwise lost sales by reminding shoppers to finish their purchase. Upstack Data integrates with Klaviyo to supercharge these flows – ensuring **more of your visitors actually receive those follow-up emails**. In fact, most brands see a **30 to 50% lift** in triggered abandonment emails (and revenue) within the first few weeks of Upstack Data. Below, we willll explain how the abandonment flows are set up with Upstack Data, their purpose and mechanics, and answer frequently asked questions (FAQs). *** ## **What Are Klaviyo Abandonment Flows and Why Do They Matter?** **Abandonment flows** in Klaviyo are automated email sequences that reach out to customers who *almost* bought something but left before completing a purchase. These typically include: * **Browse Abandonment** – triggers when a known visitor views a product page but leaves without adding it to cart or purchasing. * **Cart Abandonment** – triggers when a shopper adds items to their cart but doesn’t check out. * **Checkout Abandonment** – triggers when a shopper begins the checkout process (e.g. enters their email at checkout) but doesn’t finish the purchase. Each of these flows will send a timely email (or series of emails) reminding the customer of what they viewed or left in their cart, often with a gentle nudge or incentive to return and complete the purchase. The goal is to **re-engage the shopper and recover the sale** that might otherwise be lost. This is a well-known high-ROI tactic – for example, sending an abandoned cart email with a discount can win back a significant portion of would-be drop-offs. However, **these automated emails only work if the shopper’s identity (email) is recognized** at the time they abandon. Klaviyo needs to know *who* to email – typically this means the customer is already in your Klaviyo database (e.g. they subscribed or made a past purchase) *and* is identified during their session. If the customer isn’t identified (no email captured or no cookie linking to their profile), the abandonment flow **won’t trigger at all**. For instance, if someone visits your site, enters their email for a discount code, but later returns on a different device or a cleared browser, Klaviyo might not realize it’s the same person – so an abandoned cart event could go un-emailed. **Capturing the visitor’s email** (via a sign-up pop-up or at least at checkout) is a crucial first step for any abandonment flow to work *** ## **Why Some Shoppers Don’t Get Abandonment Emails (The Identification Gap)** In today’s world, shoppers often switch devices, use private browsing, or reject cookies – which can break the chain of identity needed for Klaviyo’s flows. If a returning visitor isn’t recognized as an existing contact, **Klaviyo’s flow won’t fire at all**, meaning no abandonment email is sent. This is a common gap: you might be “dropping” a large chunk of potential follow-ups simply because the customer’s sessions appear fragmented. In fact, without advanced identity resolution, as much as *half* of returning visitors can go unrecognized by marketing tools – resulting in many would-be abandonment emails never being delivered. Consider a simple example: **Customer Bob** signs up with his email to get a 10% off coupon. A week later, Bob comes back to browse products but does so on a different browser or device; he adds something to his cart but doesn’t buy. Klaviyo sees an anonymous cart abandoner (because Bob isn’t identified in that new session), so **no cart abandonment email goes out**. The opportunity to remind Bob about his cart is lost entirely. This scenario is surprisingly common – cookies expire or get cleared, mobile in-app browsers don’t share identifiers, etc. – and it means **missed revenue** because your customer engagement system didn’t realize Bob was the same person who had given his email before. *** ## **How Upstack Data Enhances Your Abandonment Flows** Upstack Data fixes this problem by using **identity resolution** to connect those fragmented sessions and ensure the shopper *is* recognized. Upstack Data’s technology “stitches” together data from multiple visits and devices, so we know when Bob comes back even if he looks anonymous to Klaviyo. Upstack Data is especially strong at recognizing returning buyers **even months later across devices**. In practice, **Upstack Data ensures that the abandonment flow *will* trigger for Bob** by matching him to his known email/profile – in other words, we *“trigger the flow that would otherwise be left untriggered.”* This dramatically increases the reach of your abandonment emails and recaptures revenue that would have been lost. *** ## **What does Upstack Data do in Klaviyo?** We set up **“enriched” abandonment flows** in your Klaviyo account that run in **parallel** with your standard flows. Each Upstack flow acts as a safety net to catch the customers your normal flows miss. Here’s how it works: ### **Dual-Flow Setup** * For each type of abandonment (browse, cart, checkout), you keep your **standard Klaviyo flow** intact, and we create an **Upstack flow** alongside it. The Upstack flow is essentially a duplicate automation that will send the same kind of email – but only to shoppers who *didn’t* get captured by the standard flow. ### **Timing Coordination** * The Upstack-triggered flow is set to wait a short period (e.g. \~30 minutes) after the abandonment event before it sends anything. This delay gives the standard Klaviyo flow time to fire first if it’s going to. If the standard email was sent, great – **we don’t need to send another.** If the standard flow did *not* send (because the user wasn’t identified in time), then Upstack’s flow will now kick in and send the abandonment email. ### **No Duplicate Emails** * We configure the Upstack flows with proper filters so that **anyone who already received the standard Klaviyo email is excluded** from the Upstack flow. This means your customer will **never get two emails** for the same abandoned cart. Either they get the normal one, or (if that failed) they get the Upstack Data one – but **not both**. We’re only capturing the missed opportunities, not doubling up on messaging. ### **“Enriched” Identification** * Upstack Data’s script on your site works behind the scenes to identify visitors by their email or other identifiers. If someone abandons and Klaviyo didn’t recognize them initially, Upstack Data may identify them moments later (for example, by matching their device or browsing behavior to a known profile in our system). Once identified, we send that info to Klaviyo and trigger the Upstack flow email to that person. These are **emails that would have never been sent if not for Upstack’s data enrichment**. ### **Content and Branding** * You don’t have to craft entirely new emails for the Upstack flows – typically, we’ll mirror the content and timing of your existing abandonment emails (or whatever you prefer). The customer experience remains on-brand; the only difference is *more* of your shoppers will actually receive the messages. (If you haven’t set up abandonment emails yet, we’ll help you get the basic flows in place – Upstack’s team can even advise on content best practices while configuring the flows.) ## **Setting it up** The configuration of these parallel flows is handled by our team as part of your Upstack Data onboarding. We will usually ask you to **invite our team to your Klaviyo account** as a manager/admin user so we can create and test the necessary flow rules. If you prefer to do it yourself, we can walk you through it, but most clients let us take care of this step for speed and accuracy. We make sure the triggers, delays, and exclusion conditions are correct so that everything runs smoothly. Once set up, **Upstack Data’s enrichment flows run automatically in the background** – you don’t need to babysit them. They work alongside your normal Klaviyo operations without interfering in any way (you continue business as usual with campaigns, other flows, etc.). ## **What impact can you expect?** In short, significantly more recovered revenue. By “plugging the leaks” in identification, Upstack typically **increases the audience for your abandonment emails by \~30% on average**. That means about 30% more would-be buyers get an email that brings them back, which often translates to a substantial jump in monthly sales from these flows. Many brands using Upstack Data see on the order of one-third to one-half more revenue from abandonment flows compared to before. For example, one apparel brand’s standard Klaviyo flows were generating about $115k/month, and after Upstack Data they saw **an additional $95k per month\*\* from the Upstack-triggered abandonment emails – roughly an **80% increase** in recovered revenue (an exceptional case, but it shows what’s possible). In their case this was equivalent to a **90× ROI** on the Upstack product. Even if your results are more average, capturing 30% to 50% more abandoned carts can easily mean tens of thousands in recouped sales. And because Upstack Data keeps learning (every new visitor identified today is one more person we’ll recognize tomorrow), these benefits can **compound over time** as your repeat visitors grow. In summary, **Upstack Data’s enriched abandonment flows ensure no potential customer falls through the cracks**. You spend money and effort to get these shoppers to your site. Upstack Data helps make sure a faulty identification or cookie doesn’t prevent your follow-up emails from doing their job. It’s a seamless enhancement on top of Klaviyo that boosts one of your most important revenue-driving automations. *** ## **Frequently Asked Questions (FAQ)** ### **Will my customers get duplicate abandonment emails?** * **No.** Upstack’s flows are specifically configured *not* to double-email anyone. The Upstack flow only targets people who *did not* get the standard Klaviyo email, and we exclude anyone who already received the normal flow. In practice, a customer either gets your usual abandonment email or an Upstack Data one – never both for the same event. ### **How much of a lift in sales/emails will we see with Upstack Data?** * Most brands see on the order of a **30–50% increase** in the volume of abandonment emails sent (and proportional uplift in recovered revenue) after Upstack Data is implemented. This can vary based on your business – e.g. stores with lots of repeat customers or long purchase cycles tend to benefit even more over time as Upstack Data recognizes more return visitors. In one case study, a merchant’s abandonment flow revenue jumped from $115k to about $210k per month (a \~80% increase) by using Upstack Data’s enriched flows. While that was an unusually strong result, it underscores that the upside can be very large. Generally, you should expect at least a few tens of percent improvement relatively quickly, since **Upstack Data will capture those extra abandonment events that were previously invisible**. ### **Which abandonment flows does Upstack Data set up or enhance?** * We typically focus on the three core flows: **browse abandonment, cart abandonment, and checkout abandonment**. These cover the key stages where shoppers drop off. (If you have other Klaviyo flows like a post-purchase or win-back series, Upstack Data doesn’t need to modify those – we target the flows related to pre-purchase abandonment.) * We can also work alongside your **welcome flow** (for new subscribers) in the sense that Upstack Data helps identify leads, but welcome emails send normally since those don’t require a second-chance trigger. The main lift comes from the browse/cart/checkout abandon sequences. ### **Do I need to create new emails or content for the Upstack flows?** * Not necessarily. In most cases, we **reuse your existing abandonment email content and timing** – essentially cloning your email templates into the Upstack-triggered flow. This keeps messaging consistent. If you already have effective emails for cart or browse recovery, those same emails will be sent, just to more people now. If you **don’t yet have these flows set up** or lack content, we’ll help you get the basics in place (for example, a simple 1- or 2-email sequence for each abandonment type) and you can always refine the content later. Upstack Data’s primary job is making sure the *right people get the email*; the content of the email remains under your control, just as with any Klaviyo flow. ### **How will Upstack Data get added to my Klaviyo account?** * Our team will coordinate with you to do the setup. Typically, we ask you to **invite an Upstack Data specialist as a user in your Klaviyo** (with manager or admin permissions) so we can build the flow logic for you. This is usually done during your onboarding call. We’ll create the additional flows, set the triggers and filters, and test that everything works. It’s a quick process (often we complete it in the same session). If you prefer, we can also send you instructions to implement the flows yourself, but most clients find it easier to let us handle it. After setup, you can always review the flows in Klaviyo – they will be clearly labeled (e.g. “Upstack Cart Abandonment”) – and you retain full control over them. ### **Does this integration disrupt anything in my store or Klaviyo?** * **No, not at all.** Upstack Data doesn’t require you to remove or pause your existing Klaviyo flows; we **operate in the background** and only augment what’s there. Your standard flows, Shopify checkout, and other tracking all remain unchanged. Upstack Data simply adds extra data to Klaviyo and uses Klaviyo’s normal flow mechanism to send more emails to those who qualify. There’s no impact on site performance either – the identification happens via a lightweight script on your site and server-side matching. In short, it’s a seamless addition, and if for any reason you disabled Upstack Data, your original flows would continue as they were. ### **What if we haven’t set up Klaviyo flows (or we use a different email platform)?** * You’ll get the most value if you are using Klaviyo’s abandonment flows, since that’s what Upstack Data ties into. If you’re new to Klaviyo or just migrating, we recommend first creating the basic browse, cart, and checkout flow in Klaviyo (even a simple one-email flow to start). Our team can guide you on this. Once those flows exist (even if inactive), **let us know and we will configure the advanced Upstack Data portions** for you. * Currently, Upstack Data’s enhanced flows are purpose-built for Klaviyo on Shopify. We do integrate with many marketing platforms, but the out-of-the-box abandonment email solution is via Klaviyo. If you use a different email tool, Upstack Data’s identity resolution will still improve your data (which could help your other platform in theory), but we may not be able to set up parallel flows automatically as we do with Klaviyo. Feel free to discuss your setup with us – we can often find a workaround or at least you’ll know what benefits to expect. ### **Will Upstack Data affect my email deliverability or subscriber list?** * **No** – Upstack Datadoes **not** add any new contacts who weren’t already in your system. We only target people who have engaged with your site and provided their email (or are existing customers). In other words, we’re not injecting third-party emails or doing cold outreach. We’re simply making sure your **own leads and customers** get the emails they *should* be getting. In fact, this approach is healthier than some alternatives where third-party data is used: one brand we onboarded had been feeding purchased contact lists into Klaviyo (via another tool), which hurt their deliverability (spam complaints, etc.). Upstack Data helped them remove that practice and instead capture more revenue *organically* by emailing *real visitors* who showed intent – leading to better deliverability and engagement. So you should see **no negative impact on deliverability** since we stick to your opt-in audience. *** These illustrate the typical setup and benefits of Upstack Data’s enriched abandonment flows, as well as real-world results seen by merchants. This feature is a key driver of ROI for many Upstack Data clients, and we want to ensure you’re fully set up to take advantage of it. By closing the gaps in who gets your abandonment emails, **Upstack Data helps you convert more sales on autopilot** – leveraging the customer interest you already generated. It’s a “low hanging fruit” win for your email marketing, and we’re here to help you make the most of it. Enjoy those recovered carts and happy emailing! 🚀 *** If you have any other questions about Upstack Data’s Klaviyo abandonment flow integration, please reach out to our support team. For further reading or specific examples, please refer to the Upstack Data knowledge base or contact us for detailed case studies. **Sources:** Upstack Data internal case studies, onboarding guides, and FAQ documentation have informed the above (e.g. Perfect White Tee Klaviyo flow case study, and Upstack Data Customer FAQ docs. # All data sources Source: https://docs.upstackdata.com/sources/catalog Every data source Upstack Data supports — Shopify store data and ad platform spend from Meta, Google Ads, and TikTok. Click any card for setup guides.
Every source that feeds reporting data into Upstack Data. Click any card for setup guides. ## Store data Pull orders and customer data from your Shopify store. Ingest real-time Shopify webhook events. Capture storefront events automatically via the theme app extension. ## Ad platforms Pull ad spend and campaign data from Meta Ads Manager. Pull ad spend and campaign data from Google Ads. Pull ad spend and campaign data from TikTok Ads Manager. ## Costs Configure business costs for contribution margin and profitability metrics.
# Connect Facebook Ads Source: https://docs.upstackdata.com/sources/catalog/facebook-ads Connect your Facebook Ads account as a source to import campaign spend, impressions, clicks, and performance metrics into Upstack Data. **Data direction:** This is a **source** — data flows **into** Upstack from this platform for analytics, reporting, and enrichment. Connecting Facebook Ads as a source brings ad spend and campaign performance data into Upstack, enabling cost-per-acquisition (CPA) reporting, return on ad spend (ROAS) calculations, and blended attribution across paid and organic channels. ## Prerequisites **Prerequisites:** * An Upstack Data account ([sign up for free](https://app.upstackdata.com)) * Access to your workspace in the Upstack dashboard You'll also need: * A **Meta Business Manager** account with admin access * At least one **Facebook Ads account** with active or historical campaigns * The **Ad Account ID** you want to connect (found in Meta Business Settings → Ad Accounts) This is a **source** connection — it pulls cost and performance data **into** Upstack. To send conversion events **to** Meta, see the [Meta CAPI destination guide](/destinations/catalog/meta-capi). ## Setup In the Upstack dashboard, navigate to **Integrations → Sources** and click **Connect Facebook Ads**. Click **Sign in with Meta** to begin the OAuth flow. Log in to your Meta Business Manager account and grant Upstack permission to read your advertising data. Upstack requests read-only permissions: `ads_read` and `read_insights`. No permissions to create, modify, or spend on campaigns are requested. After authentication, Upstack displays all ad accounts associated with your Meta Business Manager. Select the account(s) you want to sync. You can connect multiple ad accounts if you manage separate accounts for different brands or regions. Each account appears as a separate source in the Upstack dashboard. **Select the correct accounts.** Upstack imports spend data for the selected accounts and uses it for ROAS calculations. If you connect the wrong account, your cost metrics won't match your conversion data. Review the data access summary and click **Confirm**. Upstack immediately begins syncing your ad account data. The initial sync imports the last 90 days of campaign performance data. After the initial sync, Upstack pulls updated metrics every 6 hours. ## What Data Flows In | Metric | Description | Granularity | | --------------- | ----------------------------------------- | ------------------ | | **Spend** | Total amount spent per campaign/ad set/ad | Daily | | **Impressions** | Number of times ads were shown | Daily | | **Clicks** | Link clicks on ads | Daily | | **CPM** | Cost per thousand impressions | Daily (calculated) | | **CPC** | Cost per click | Daily (calculated) | | **CTR** | Click-through rate | Daily (calculated) | | **Reach** | Unique accounts that saw ads | Daily | ### Campaign Structure Upstack also imports the full campaign hierarchy: * **Campaigns** — name, objective, status, budget * **Ad Sets** — name, targeting, placement, bid strategy * **Ads** — name, creative ID, status This structure enables drill-down reporting from campaign-level ROAS down to individual ad performance inside the Upstack dashboard. Upstack syncs data at the **ad level** and aggregates up. This means you can report at any level of the campaign hierarchy — campaign, ad set, or ad — without any additional configuration. ## You'll Know It's Working When... **Verification checklist:** Complete all items below to confirm your setup is working correctly. If any check fails, see the troubleshooting section below or the relevant [troubleshooting guide](/troubleshooting/destination-shows-disconnected). * [ ] Your Facebook Ads source shows **Connected** status in the Upstack dashboard under **Integrations → Sources** * [ ] Campaign data appears in the **Sources → Facebook Ads** detail page within 30 minutes of initial connection * [ ] Spend metrics are visible in **Analytics → Attribution** reports alongside your conversion data * [ ] ROAS calculations populate for campaigns that have both spend data and attributed conversions ## Troubleshooting **Check the sync status** in **Integrations → Sources → Facebook Ads**. The initial 90-day backfill can take up to 30 minutes depending on the volume of campaigns. If no data appears after 1 hour: 1. Verify the connected ad account has campaigns with spend in the last 90 days 2. Check that your Meta Business Manager token hasn't been revoked (go to **Meta Business Settings → Users → System Users** and verify the Upstack integration is still authorized) 3. Try disconnecting and reconnecting the source Small discrepancies (under 5%) between Upstack and Meta Ads Manager are normal due to timezone differences and Meta's post-attribution adjustments. **Common causes of larger discrepancies:** * **Timezone mismatch** — Upstack normalizes spend to UTC. If your Meta account uses a different timezone, daily totals may shift between days. * **Attribution window differences** — Upstack imports raw spend (actual dollars spent), not attributed spend. If you're comparing to a Meta report using attributed metrics, the totals will differ. * **Multiple ad accounts** — ensure you've connected all ad accounts that contribute spend for your store. Meta OAuth tokens can expire or be revoked if your Business Manager permissions change. If the source status shows an error: 1. Go to **Integrations → Sources → Facebook Ads** 2. Click **Reconnect** to re-authenticate with Meta 3. Re-select your ad accounts and confirm Data sync resumes automatically after reconnection. Any data missed during the disconnection is backfilled during the next sync cycle. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. ## Related Send conversion events **to** Meta — the outbound counterpart to this inbound source. How Upstack blends ad spend data with conversion events to calculate ROAS and CPA. Import Google Ads spend data to get a complete picture of your paid media performance. Browse all available sources and destinations. # Connect Google Ads Source: https://docs.upstackdata.com/sources/catalog/google-ads Connect your Google Ads account as a source to import campaign spend, clicks, impressions, and performance metrics into Upstack Data. **Data direction:** This is a **source** — data flows **into** Upstack from this platform for analytics, reporting, and enrichment. Connecting Google Ads as a source brings campaign cost data into Upstack, enabling cost-per-acquisition (CPA) reporting, return on ad spend (ROAS) calculations, and unified attribution across Google Search, Shopping, Display, and YouTube campaigns. ## Prerequisites **Prerequisites:** * An Upstack Data account ([sign up for free](https://app.upstackdata.com)) * Access to your workspace in the Upstack dashboard You'll also need: * A **Google Ads account** with active or historical campaigns * **Admin** or **Standard** access to the Google Ads account you want to connect * If you use a **Google Ads Manager Account** (MCC), you'll need access to the specific sub-accounts you want to sync ## Setup In the Upstack dashboard, navigate to **Integrations → Sources** and click **Connect Google Ads**. Click **Sign in with Google** to begin the OAuth flow. Log in with the Google account that has access to your Google Ads account and grant Upstack permission to read your advertising data. Upstack requests read-only access to your Google Ads data. No permissions to create, modify, or spend on campaigns are requested. After authentication, Upstack lists all Google Ads accounts (including sub-accounts under an MCC) accessible to your Google account. Select the account(s) you want to sync. Each selected account appears as a separate data source in the Upstack dashboard with its own sync status and metrics. **Match accounts to your store.** Select only the Google Ads accounts that drive traffic to the Shopify store connected to Upstack. Connecting unrelated accounts will skew your ROAS and CPA metrics. Review the data access summary and click **Confirm**. Upstack begins syncing your Google Ads data immediately. The initial sync imports the last 90 days of campaign performance data. After the initial sync, Upstack pulls updated metrics every 6 hours. ## What Data Flows In | Metric | Description | Granularity | | --------------- | -------------------------------------------- | ------------------ | | **Spend** | Total cost per campaign/ad group/ad | Daily | | **Clicks** | Total clicks on ads | Daily | | **Impressions** | Number of times ads were shown | Daily | | **Conversions** | Google-reported conversions (for comparison) | Daily | | **CPC** | Cost per click | Daily (calculated) | | **CPM** | Cost per thousand impressions | Daily (calculated) | | **CTR** | Click-through rate | Daily (calculated) | ### Campaign Structure Upstack imports the full Google Ads hierarchy: * **Campaigns** — name, type (Search, Shopping, Display, Video, Performance Max), status, budget * **Ad Groups** — name, targeting, bid strategy * **Ads** — name, type, status Google Ads data is synced at the **ad group level** and aggregated up. Performance Max campaigns are reported at the campaign level since Google doesn't expose ad group details for pMax. ### Click ID Tracking When visitors arrive at your store from Google Ads, the `gclid` (Google Click ID) parameter is captured by the Upstack Pixel and stored in the visitor's session. This `gclid` links the ad click to any subsequent conversion events, enabling deterministic click-to-conversion attribution. ## You'll Know It's Working When... **Verification checklist:** Complete all items below to confirm your setup is working correctly. If any check fails, see the troubleshooting section below or the relevant [troubleshooting guide](/troubleshooting/destination-shows-disconnected). * [ ] Your Google Ads source shows **Connected** status in the Upstack dashboard under **Integrations → Sources** * [ ] Campaign data appears in the **Sources → Google Ads** detail page within 30 minutes of initial connection * [ ] Spend metrics are visible in **Analytics → Attribution** reports alongside your conversion data * [ ] ROAS calculations populate for campaigns that have both spend data and attributed conversions ## Troubleshooting **Check the sync status** in **Integrations → Sources → Google Ads**. The initial 90-day backfill can take up to 30 minutes. If no data appears after 1 hour: 1. Verify the connected account has campaigns with spend in the last 90 days 2. Confirm you selected the correct account (check the Account ID matches what you see in Google Ads) 3. If using an MCC, ensure you selected the sub-account, not the manager account itself 4. Try disconnecting and reconnecting the source Small discrepancies (under 5%) are normal due to timezone normalization and Google's post-click adjustments. **Common causes of larger discrepancies:** * **Timezone mismatch** — Upstack normalizes spend to UTC. Google Ads accounts may use a different timezone, causing daily totals to shift between days. * **Currency conversion** — if your Google Ads account bills in a different currency than your Shopify store, exchange rate timing can cause minor differences. * **Invalid clicks** — Google periodically removes invalid click charges. These adjustments may not be reflected in Upstack's data until the next sync cycle. Google OAuth tokens can expire if you change your Google account password, revoke third-party access, or if the token's refresh cycle fails. To fix: 1. Go to **Integrations → Sources → Google Ads** 2. Click **Reconnect** to re-authenticate with Google 3. Re-select your ad accounts and confirm Data sync resumes immediately. Any data missed during the disconnection is backfilled during the next sync. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. ## Related Send server-side conversion events to GA4 — the outbound counterpart to this inbound source. How Upstack blends ad spend data with conversion events to calculate ROAS and CPA. Import Facebook Ads spend data for a complete view of paid media performance. Browse all available sources and destinations. # Data sources Source: https://docs.upstackdata.com/sources/catalog/overview Connect the platforms that feed data into Upstack Data for analytics, attribution, and activation. Data sources are integrations that bring data **into** Upstack Data. They provide the raw signals — page views, add-to-carts, purchases, ad spend, campaign metadata — that power everything from real-time dashboards to multi-touch attribution. ## How data sources work Each source connects to an external platform and pulls (or receives) data on your behalf: * **Shopify** streams storefront events via the browser pixel and receives order/product updates through webhooks. This is your primary event source. * **Ad platform sources** (Facebook Ads, Google Ads, TikTok) sync campaign structure, spend, and performance metrics on a recurring schedule so you can blend cost data with conversion data inside Upstack. Every Upstack account starts with Shopify as its first source. Ad platform sources are optional and unlock cost-per-acquisition reporting and ROAS calculations. ## Available Sources Storefront events, orders, products, and customer data via pixel and webhooks. **Required** — this is the foundation of your tracking. Campaign structure, ad spend, and performance metrics from your Facebook and Instagram ad accounts. Campaign structure, ad spend, and performance metrics from your Google Ads account. Campaign structure, ad spend, and performance metrics from your TikTok Ads account. Customer-configured costs including COGS overrides, handling, fulfillment, fixed costs, and OPEX for margin calculations. ## What Happens After Connection Once a source is connected, Upstack immediately begins ingesting data: 1. **Events are normalized** into a consistent schema regardless of which source produced them. 2. **Identity resolution** links anonymous visitor sessions to known customer profiles across sources. 3. **Data becomes queryable** in your dashboard and available for forwarding to any configured destination. You can monitor ingestion health and event volume for each source from the **Sources** tab in your Upstack dashboard. # Connect Shopify Source: https://docs.upstackdata.com/sources/catalog/shopify Connect your Shopify store as a source to capture storefront events, orders, products, and customer data via the Upstack Pixel and webhooks. **Data direction:** This is a **source** — data flows **into** Upstack from this platform for analytics, reporting, and enrichment. Shopify is your primary data source. Once connected, Upstack installs a lightweight pixel on your storefront to capture real-time visitor events and registers webhooks to receive order, product, and customer updates directly from Shopify's backend. ## Prerequisites **Prerequisites:** * An Upstack Data account ([sign up for free](https://app.upstackdata.com)) * Access to your workspace in the Upstack dashboard You'll also need: * An **active Shopify store** on any plan (Basic, Shopify, Advanced, or Plus) * **Store owner** or **staff** access with permission to install apps ## Setup Visit the [Shopify App Store listing for Upstack Data](https://apps.shopify.com) and click **Install**. Alternatively, in the Upstack dashboard navigate to **Integrations → Sources** and click **Connect Shopify** to be redirected to the Shopify install flow. If your organization manages multiple Shopify stores, you'll repeat this process for each store. Each store gets its own Pixel ID and appears as a separate source in your Upstack dashboard. Shopify prompts you to review the permissions Upstack requires: * **Read products** — to sync your product catalog for content ID matching * **Read orders** — to ingest purchase events and revenue data * **Read customers** — to enrich identity resolution with customer profiles * **Read and write script tags** — to install the Upstack tracking pixel on your storefront Click **Install app** to grant access. Upstack immediately begins configuring your store connection. After installation, navigate to **Settings → Pixel** in the Upstack dashboard. You should see your Shopify store listed with a **Connected** status and a Pixel ID assigned. Open your Shopify storefront in a browser, browse a product page, and check the **Live Event Stream** in the Upstack dashboard. Events should appear within 60 seconds. ## What Data Is Ingested Shopify provides three categories of data to Upstack: | Data Type | Source | Frequency | Key Fields | | --------------------- | ------------------- | -------------- | ----------------------------------------------------------------- | | **Storefront events** | Browser pixel | Real-time | Page views, product views, add-to-cart, checkout, purchase | | **Order data** | Webhooks | Near real-time | Order ID, line items, revenue, discounts, shipping, customer info | | **Product catalog** | API sync | Every 6 hours | Product ID, title, variants, price, images, inventory status | | **Customer profiles** | API sync + webhooks | Near real-time | Email, name, address, order history, tags | Upstack also performs a **historical backfill** of your last 90 days of orders and customer data during initial setup. This gives you attribution data from day one without waiting for new events to accumulate. ## You'll Know It's Working When... **Verification checklist:** Complete all items below to confirm your setup is working correctly. If any check fails, see the troubleshooting section below or the relevant [troubleshooting guide](/troubleshooting/destination-shows-disconnected). * [ ] Your Shopify store shows **Connected** status in the Upstack dashboard under **Integrations → Sources** * [ ] A Pixel ID is assigned and visible under **Settings → Pixel** * [ ] Browsing your storefront generates `PageView` events in the **Live Event Stream** within 60 seconds * [ ] A test order generates a `Purchase` event with correct revenue and order details ## Troubleshooting **Check that the pixel is installed correctly** by inspecting your storefront's page source. Search for `upstack` in the HTML — you should see the pixel script tag in the `` section. **Steps to fix:** 1. Go to **Settings → Pixel** in the Upstack dashboard and confirm the status is **Connected** 2. Open your storefront in an incognito/private browser window (extensions and ad blockers can interfere) 3. Browse a product page, then check the Live Event Stream 4. If still no events, go to your Shopify admin → **Settings → Customer events** and verify the Upstack pixel is listed and enabled If the pixel is missing from Shopify's customer events, try uninstalling and reinstalling the Upstack app. Order data arrives via Shopify webhooks. If orders are missing: 1. Check **Integrations → Sources → Shopify** in the Upstack dashboard for any webhook error indicators 2. Verify your Shopify store hasn't hit webhook rate limits (common during flash sales) 3. Confirm the Upstack app still has **Read orders** permission in your Shopify admin → **Settings → Apps and sales channels → Upstack Data** Webhooks that fail are retried automatically by Shopify for up to 48 hours. If data is delayed but eventually arrives, this is normal behavior during high-traffic periods. The initial backfill of historical orders and customers can take up to 2 hours depending on your store's volume. Check the **Sources** tab for a progress indicator. If backfill hasn't completed after 4 hours, contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. ## Related Complete reference for automatically captured Shopify events. How Upstack uses Shopify webhooks for real-time order and customer updates. Step-by-step guide to confirm your Shopify source is working end-to-end. Learn how the Upstack Pixel captures events and why server-side delivery matters. # Shopify Automatic Event Tracking Source: https://docs.upstackdata.com/sources/catalog/shopify-automatic-tracking How Upstack Data automatically captures all customer journey events from your Shopify store — page views, add to cart, checkout, and purchases with no config. When you install Upstack on your Shopify store, we automatically capture customer journey events without any additional configuration. This document explains what events are tracked and when they fire. No manual setup required — all standard e-commerce events are captured automatically once the Upstack app is installed. ## Tracking Methods Upstack captures events through two complementary methods: ### Customer Events API (Checkout) Shopify's official [Customer Events API](https://shopify.dev/docs/api/customer-events) provides real-time checkout events. This is the most reliable method for conversion tracking and captures: * Checkout started, progressed, and completed * Payment information entered * Shipping information entered * Cart interactions during checkout ### URL-Based Detection (Storefront) For storefront browsing, Upstack automatically detects page types based on URL patterns: | URL Pattern | Event Fired | | ---------------- | --------------- | | `/products/*` | `view_content` | | `/collections/*` | `view_category` | | `/cart` | `view_cart` | | `/search?*` | `search` | No configuration required — events fire automatically when visitors browse these pages. *** ## Event Mapping The following table shows all automatically captured events: | Customer Action | Upstack Event | Data Captured | | ----------------------- | --------------------------- | ------------------------------------------------- | | Views any page | `page_view` | URL, title, referrer | | Views a product page | `view_content` | Product ID, name, price, variant, URL | | Views a collection | `view_category` | Collection handle, URL | | Searches the store | `search` | Search query, results count | | Views their cart | `view_cart` | All cart items, cart value, currency | | Adds item to cart | `add_to_cart` | Product ID, name, price, quantity, variant | | Removes item from cart | `product_removed_from_cart` | Product ID, quantity removed | | Starts checkout | `initiate_checkout` | Cart items, value, currency | | Enters contact info | `add_shipping_info` | Email, phone (+ triggers identity capture) | | Enters shipping address | `add_shipping_info` | Address fields (+ triggers identity capture) | | Selects shipping method | `add_shipping_info` | Shipping tier selection | | Enters payment info | `add_payment_info` | Payment method type (no card data) | | Completes order | `purchase` | Full order: items, value, tax, shipping, customer | *** ## Data Payloads The JSON examples below show **destination wire format** — what Meta CAPI, TikTok, and other destinations receive after Upstack transforms the event. Event names are converted to PascalCase (e.g., `AddToCart`) for destination compatibility. When using the SDK directly, always use **snake\_case** (e.g., `add_to_cart`). ### Product View (`view_content`) Automatically captured when a visitor views any `/products/*` page: ```json theme={null} // Destination wire format (what Meta CAPI receives) { "event_name": "ViewContent", "event_time": "2026-02-18T14:31:12.000Z", "event_source_url": "https://example-store.com/products/classic-tee", "user_data": { "client_ip_address": "203.0.113.42", "client_user_agent": "Mozilla/5.0...", "fbp": "fb.1.1708271400.XyZ789" }, "custom_data": { "content_ids": ["8012345678"], "content_type": "product", "content_name": "Classic Cotton Tee", "value": 34.99, "currency": "USD" } } ``` ### Add to Cart (`add_to_cart`) Captured when a visitor adds an item to their cart: ```json theme={null} // Destination wire format (what Meta CAPI receives) { "event_name": "AddToCart", "event_time": "2026-02-18T14:32:05.000Z", "event_source_url": "https://example-store.com/products/classic-tee", "user_data": { "client_ip_address": "203.0.113.42", "client_user_agent": "Mozilla/5.0...", "fbp": "fb.1.1708271400.XyZ789" }, "custom_data": { "content_ids": ["8012345678"], "content_type": "product", "content_name": "Classic Cotton Tee", "value": 34.99, "currency": "USD", "num_items": 1 } } ``` ### Checkout Started (`initiate_checkout`) Captured when checkout begins: ```json theme={null} // Destination wire format (what Meta CAPI receives) { "event_name": "InitiateCheckout", "event_time": "2026-02-18T14:33:45.000Z", "event_source_url": "https://example-store.com/checkout", "user_data": { "client_ip_address": "203.0.113.42", "client_user_agent": "Mozilla/5.0...", "fbc": "fb.1.1708271400.AbC123", "fbp": "fb.1.1708271400.XyZ789" }, "custom_data": { "content_ids": ["8012345678", "8012345679"], "content_type": "product", "value": 89.98, "currency": "USD", "num_items": 2 } } ``` ### Purchase (`purchase`) Captured when an order is completed: ```json theme={null} // Destination wire format (what Meta CAPI receives) { "event_name": "Purchase", "event_time": "2026-02-18T14:35:20.000Z", "event_source_url": "https://example-store.com/thank-you", "user_data": { "em": "a1b2c3d4e5f6...hashed", "ph": "f6e5d4c3b2a1...hashed", "client_ip_address": "203.0.113.42", "client_user_agent": "Mozilla/5.0...", "fbc": "fb.1.1708271400.AbC123", "fbp": "fb.1.1708271400.XyZ789", "external_id": "cust_12345" }, "custom_data": { "content_ids": ["8012345678", "8012345679"], "content_type": "product", "value": 89.98, "currency": "USD", "order_id": "#1042", "num_items": 2 } } ``` *** ## Identity Capture When customers enter contact information during checkout, Upstack automatically: 1. **Captures email and phone** from the contact info step 2. **Associates the session** with the customer identity 3. **Persists identity** for cross-session attribution This happens when customers enter contact or address information during checkout. No additional configuration is required. Identity data enables cross-device attribution and improves match quality with ad platforms like Meta and TikTok. *** ## Consent Handling Upstack respects Shopify's customer consent settings: * If **analytics consent** is not granted, tracking is limited to essential events * **Marketing consent** affects which destinations receive forwarded events * Consent state is captured and included with each event ```json theme={null} { "consent": { "analytics": true, "marketing": false, "preferences": true } } ``` *** ## What's NOT Automatically Tracked The following events require manual implementation: | Event | Why Not Automatic | How to Track | | ------------------ | ------------------------- | -------------------------------------------------------------------------------------------------- | | Product list views | No standard Shopify event | Call `_upstack('track', 'view_item_list', {...})` | | Newsletter signups | Form depends on theme | Use [Form Capture Integrations](/guides/integrations/form-capture-integrations) or manual tracking | | Wishlist actions | Third-party apps vary | Call `_upstack('track', 'add_to_wishlist', {...})` | | Custom conversions | Business-specific | Define and track [custom events](/guides/custom-events/how-to-create-custom-event-triggers) | ## Related Documentation Full reference with JavaScript snippets for manual event tracking. Complete API reference for the Upstack JavaScript SDK. Reference for item arrays, customer data, and auto-captured fields. Track custom interactions beyond the standard taxonomy. Automatic lead capture from Klaviyo, Postscript, and more. Initial setup guide for connecting your Shopify store. # Shopify Webhooks Source: https://docs.upstackdata.com/sources/catalog/shopify-webhooks How Upstack uses Shopify webhooks for real-time order, customer, and product updates — which webhooks are registered, what they do, and how to verify they're working. **Data direction:** This is a **source** — data flows **into** Upstack from this platform for analytics, reporting, and enrichment. Shopify webhooks deliver real-time notifications to Upstack whenever data changes in your store — new orders, customer updates, product modifications, and app lifecycle events. This ensures your Upstack dashboard reflects changes within seconds instead of waiting for periodic API syncs. ## Registered Webhooks When you install the Upstack Data app, the following webhooks are automatically registered with your Shopify store: | Webhook Topic | Fires When | What Upstack Does | | ------------------ | ----------------------------------------------------------------- | ---------------------------------------------------------------- | | `orders/create` | A new order is placed | Ingests order data for purchase attribution and revenue tracking | | `orders/updated` | An existing order is modified (fulfillment, refund, cancellation) | Updates attributed revenue and order status | | `orders/cancelled` | An order is cancelled | Marks the conversion as cancelled and adjusts revenue | | `customers/create` | A new customer account is created | Adds the customer to the identity graph | | `customers/update` | Customer profile changes (email, address, tags) | Merges updated data into the existing identity profile | | `products/create` | A new product is published | Updates the product catalog for content ID matching | | `products/update` | A product is modified (price, title, variants) | Syncs product changes for accurate event parameters | | `app/uninstalled` | The Upstack app is removed from the store | Deactivates the source and stops data collection | Upstack does not register webhooks for draft orders, inventory, or fulfillment events. These may be added in future releases based on customer demand. ## How Webhook Processing Works When Shopify fires a webhook, the following pipeline executes: 1. **Receive** — Upstack's ingestion endpoint receives the webhook payload and validates the HMAC signature to confirm it originated from Shopify. 2. **Normalize** — The raw Shopify payload is transformed into Upstack's internal event schema. For example, an `orders/create` webhook becomes a `Purchase` event with standardized fields. 3. **Enrich** — The event is passed through identity resolution. If the order includes a customer email, Upstack links it to any existing anonymous sessions from that visitor. 4. **Store and forward** — The normalized event is stored for analytics and simultaneously queued for delivery to any active destinations. **HMAC validation is mandatory.** Every incoming webhook is verified against your store's shared secret. If validation fails, the payload is rejected and logged as a security event. You do not need to configure this — it's handled automatically during app installation. ## Retry and Reliability Shopify's webhook infrastructure includes automatic retry logic: * If Upstack's endpoint returns a non-2xx response, Shopify retries the webhook up to **19 times** over a 48-hour period with exponential backoff. * If all retries fail, Shopify marks the webhook as failed. Upstack's daily reconciliation sync catches these gaps by pulling any missing orders via the Shopify API. * Webhooks that consistently fail may cause Shopify to automatically remove the webhook registration. If this happens, Upstack detects the removal and re-registers the webhook. This dual approach (webhooks + daily reconciliation) ensures no data is permanently lost, even during extended outages or high-traffic events like flash sales. ## Verifying Webhooks Are Working Navigate to **Integrations → Sources → Shopify**. The source detail page shows a **Webhook Health** indicator: * **Healthy** (green) — webhooks are being received and processed normally * **Delayed** (yellow) — some webhooks have failed but retries are in progress * **Failing** (red) — webhooks are consistently failing; check Shopify admin for details Place a test order on your Shopify store (you can use Shopify's **Bogus Gateway** for free test transactions). Within 30 seconds, the order should appear in the Upstack **Live Event Stream** as a `Purchase` event. In your Shopify admin, go to **Settings → Notifications → Webhooks**. Shopify shows recent webhook deliveries with status codes. Look for deliveries to Upstack's endpoint — they should all show `200` responses. Shopify's webhook log in the admin panel shows the last 30 days of delivery attempts. Use this to diagnose intermittent failures. ## Troubleshooting If Shopify reports webhook delivery failures to Upstack's endpoint: 1. Check the [Upstack status page](https://status.upstackdata.com) for any ongoing incidents 2. Verify your Shopify store hasn't recently changed its domain (this can invalidate webhook registrations) 3. In the Upstack dashboard, go to **Integrations → Sources → Shopify** and click **Reconnect** to re-register webhooks Failed webhooks are retried by Shopify for up to 48 hours, and Upstack's daily reconciliation sync fills any remaining gaps. Brief delays (under 5 minutes) are normal during high-traffic periods. Shopify queues webhooks and delivers them in order, which can introduce latency during peak times like Black Friday. If delays consistently exceed 30 minutes, check whether your Shopify store is near its API rate limit. High-volume stores on the Basic plan may experience more webhook queuing than stores on Advanced or Plus plans. Shopify automatically removes webhook registrations if the receiving endpoint returns errors for an extended period. Upstack monitors for this and re-registers webhooks automatically. If you notice a gap in data, check **Integrations → Sources → Shopify** for a "Webhooks re-registered" notification. Any missed data during the gap is recovered during the next daily reconciliation sync. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. ## Related Step-by-step setup guide for connecting your Shopify store. End-to-end diagnostic guide when source data stops flowing into Upstack. How Shopify webhook events map to Upstack's standard event taxonomy. # TikTok Ads source Source: https://docs.upstackdata.com/sources/catalog/tiktok Connect your TikTok Ads account to Upstack to import ad spend, campaign structure, and performance data for unified reporting. **Data direction:** This is a **source** — data flows **into** Upstack from this platform for analytics, reporting, and enrichment. Connecting TikTok Ads as a source brings ad spend and campaign performance data into Upstack, enabling cost-per-acquisition (CPA) reporting, return on ad spend (ROAS) calculations, and blended attribution alongside your other paid channels. This is a **source** connection — it pulls cost and performance data **into** Upstack for reporting. To send conversion events **to** TikTok for ad optimization, see the [TikTok Events API destination](/destinations/catalog/tiktok). ## Prerequisites **Prerequisites:** * An Upstack Data account ([sign up for free](https://app.upstackdata.com)) * Access to your workspace in the Upstack dashboard You'll also need: * A **TikTok Business Center** account with admin access * At least one **TikTok Ads account** with active or historical campaigns * The **Advertiser ID** for the ad account you want to connect (found in TikTok Ads Manager → Account Info) ## What This Source Provides | Metric | Description | Granularity | | --------------- | -------------------------------------------- | ------------------ | | **Spend** | Total cost per campaign / ad group / ad | Daily | | **Impressions** | Number of times ads were shown | Daily | | **Clicks** | Total clicks on ads | Daily | | **CPM** | Cost per thousand impressions | Daily (calculated) | | **CPC** | Cost per click | Daily (calculated) | | **CTR** | Click-through rate | Daily (calculated) | | **Conversions** | TikTok-reported conversions (for comparison) | Daily | ### Campaign Structure Upstack imports the full TikTok Ads hierarchy: * **Campaigns** — name, objective, status, budget * **Ad Groups** — name, targeting, placement, bid strategy * **Ads** — name, creative, status This structure powers drill-down reporting from campaign-level ROAS down to individual ad performance inside the Upstack dashboard. ### Click ID Tracking When visitors arrive at your store from a TikTok ad, the `ttclid` (TikTok Click ID) parameter is captured by the Upstack Pixel and stored in the visitor's session. This `ttclid` links the ad click to subsequent conversion events for deterministic click-to-conversion attribution. ## Why It Matters The TikTok Ads source pairs with the [TikTok Events API destination](/destinations/catalog/tiktok) to give you a full closed-loop view: * **The destination** sends purchases, add-to-carts, and checkouts **to** TikTok so its algorithm can optimize ad delivery. * **The source** pulls the resulting **spend, impression, and click data back** into Upstack so you can calculate true ROAS, compare TikTok performance to other channels, and report on blended attribution. Without the source connected, you'll see TikTok-attributed conversions in Upstack but no cost data to divide them against. ## Setup In the Upstack dashboard, navigate to **Integrations → Sources** and click **Connect TikTok Ads**. Follow the prompts to authorize Upstack to read data from your TikTok Business Center. Upstack requests read-only access to your TikTok Ads data. No permissions to create, modify, or spend on campaigns are requested. After connecting, Upstack lists all ad accounts accessible from your TikTok Business Center. Select the account(s) you want to sync. Each selected account appears as a separate data source in the Upstack dashboard with its own sync status and metrics. **Match accounts to your store.** Select only the TikTok Ads accounts that drive traffic to the Shopify store connected to Upstack. Connecting unrelated accounts will skew your ROAS and CPA metrics. Review the data access summary and click **Confirm**. Upstack begins syncing your TikTok Ads data immediately. The initial sync imports the last 90 days of campaign performance data. After the initial sync, Upstack pulls updated metrics every 6 hours. ## You'll Know It's Working When... **Verification checklist:** Complete all items below to confirm your setup is working correctly. If any check fails, see the troubleshooting section below or the relevant [troubleshooting guide](/troubleshooting/destination-shows-disconnected). * [ ] Your TikTok Ads source shows **Connected** status in the Upstack dashboard under **Integrations → Sources** * [ ] Campaign data appears in the **Sources → TikTok Ads** detail page within 30 minutes of initial connection * [ ] Spend metrics are visible in **Analytics → Attribution** reports alongside your conversion data * [ ] ROAS calculations populate for campaigns that have both spend data and attributed conversions ## Troubleshooting **Check the sync status** in **Integrations → Sources → TikTok Ads**. The initial 90-day backfill can take up to 30 minutes depending on the volume of campaigns. If no data appears after 1 hour: 1. Verify the connected ad account has campaigns with spend in the last 90 days 2. Confirm you selected the correct account (check the Advertiser ID matches what you see in TikTok Ads Manager) 3. Try disconnecting and reconnecting the source Small discrepancies (under 5%) between Upstack and TikTok Ads Manager are normal due to timezone differences and TikTok's post-attribution adjustments. **Common causes of larger discrepancies:** * **Timezone mismatch** — Upstack normalizes spend to UTC. If your TikTok account uses a different timezone, daily totals may shift between days. * **Currency conversion** — if your TikTok Ads account bills in a different currency than your Shopify store, exchange rate timing can cause minor differences. * **Multiple ad accounts** — ensure you've connected all ad accounts that contribute spend for your store. If the source status shows an error, the connection to TikTok may need to be re-established. To fix: 1. Go to **Integrations → Sources → TikTok Ads** 2. Click **Reconnect** 3. Re-select your ad accounts and confirm Data sync resumes immediately. Any data missed during the disconnection is backfilled during the next sync cycle. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. ## Related Send conversion events **to** TikTok — the outbound counterpart to this inbound source. Step-by-step walkthrough for setting up TikTok end-to-end in Upstack. Import Facebook Ads spend data for a complete view of paid social performance. How Upstack blends ad spend data with conversion events to calculate ROAS and CPA. # Upstack Costs Source: https://docs.upstackdata.com/sources/catalog/upstack-costs Configure handling costs, fulfillment costs, per-order costs, fixed costs, and OPEX in Upstack Data to calculate accurate contribution margin and profitability metrics. Upstack Costs is an internal data source where you configure your business costs for accurate margin and profitability calculations. Unlike other sources that pull data from external platforms, Upstack Costs uses values you configure directly in the Upstack dashboard. ## What Upstack Costs Provides Upstack Costs powers metrics in the **Orders** category, including: * **Handling Costs** — Per-unit costs for picking, packing, and processing * **Fulfillment Costs** — Shipping and delivery costs * **Transaction Costs** — Payment gateway fees * **Cost of Goods Sold (COGS)** — Product costs (auto-pulled from Shopify, overridable) * **Fixed Costs & OPEX** — Monthly operating expenses These costs feed into contribution margin calculations (CM1, CM2, CM3, CM4) and profitability metrics. ## How It Works In your Upstack dashboard, go to **Settings → Cost settings**. Set up variable costs: * **Handling fee** — Fixed amount charged on every unit sold (e.g., \$2.50) * **Shipping cost** — Use Shopify's shipping charges, a fixed rate per order, or shipping profiles by country and weight * **Gateway/transaction fees** — Percentage of order value (e.g., 2.9% + \$0.30) Choose how COGS are calculated: * **From Shopify** — Auto-pulled from product cost data in Shopify (default) * **Fixed percentage** — Set a default percentage of net revenue (e.g., "10% of net revenue") * **Custom per-product** — Override COGS for specific products Add monthly operating expenses: * **Agency fees** — Monthly retainer or percentage of ad spend * **Software costs** — Monthly SaaS subscriptions * **Other OPEX** — Any other fixed monthly costs ## Cost Data Sources | Cost Type | Default Source | Override Options | | -------------------------- | -------------------------- | ---------------------------- | | **COGS** | Shopify product cost field | Fixed %, custom per-product | | **Handling** | Upstack Cost Settings | Per-order amount | | **Shipping (fulfillment)** | Upstack Cost Settings | Fixed or % of order | | **Gateway fees** | Upstack Cost Settings | % of order + fixed fee | | **Agency fees** | Upstack Cost Settings | Monthly amount or % of spend | | **OPEX** | Upstack Cost Settings | Monthly amount | ## COGS Configuration Cost of Goods Sold is the only cost type with multiple data source options: ### Option 1: Auto-pull from Shopify (Recommended) If your Shopify products have cost data populated, Upstack automatically pulls this for accurate per-product COGS calculations. To populate product costs in Shopify, go to **Products → \[Product] → Pricing → Cost per item**. ### Option 2: Default percentage Set a blanket COGS percentage that applies to all products: ``` COGS = Net Revenue × (COGS Percentage / 100) ``` For example, if you set "10% of net revenue" and an order has $100 net revenue, COGS = $10. ### Option 3: Override per product For products where Shopify data is missing or inaccurate, set custom COGS values in Upstack's product cost overrides. ## Contribution Margin Calculations Upstack uses your configured costs to calculate contribution margins at four levels: | Margin Level | Formula | | ------------ | ---------------------------------------------- | | **CM1** | Net Revenue − COGS | | **CM2** | CM1 − Fulfillment Costs (handling + shipping) | | **CM3** | CM2 − Transaction Costs (gateway fees) | | **CM4** | CM3 − Marketing Costs (ad spend + agency fees) | Higher contribution margin levels subtract more costs, giving you increasingly accurate views of true profitability. ## Related Metrics Metrics powered by Upstack Costs: | Category | Metrics | | ------------------------------------------------------------------------ | ----------------------------------------------------- | | **[COGS](/reference/metrics/orders/cogs)** | COGS, COGS per Order, COGS Rate | | **[Fulfillment](/reference/metrics/orders/fulfillment)** | Handling Cost, Shipping Cost, Total Fulfillment | | **[Transaction](/reference/metrics/orders/transaction)** | Gateway Cost, Transaction Cost | | **[Contribution Margin](/reference/metrics/orders/contribution-margin)** | CM1, CM2, CM3, CM4, Marketing Cost, Agency Fees, OPEX | | **[Product Margin](/reference/metrics/orders/product-margin)** | Gross Profit, Gross Profit % | ## Best Practices Contribution margin calculations are only as good as your COGS data. Populate product costs in Shopify first, then use Upstack overrides for exceptions. Fulfillment rates, gateway fees, and agency retainers can change. Set a monthly reminder to review and update your cost configuration. If you don't have exact costs, use conservative estimates. It's better to slightly overestimate costs than to show inflated margins. Upstack calculates separate contribution margins for new vs. returning customers. This helps you understand acquisition profitability vs. retention profitability. ## Related Cost of goods sold metrics and formulas. CM1 through CM4 metrics and calculations. Handling and shipping cost metrics. How Upstack pulls COGS data from Shopify products. # Ad spend data from Meta or Google Ads is not updating Source: https://docs.upstackdata.com/troubleshooting/ad-spend-data-not-updating Meta or Google Ads spend data stale in Upstack? The OAuth token likely expired — Meta tokens expire after 60 days. Reconnect the source and sync now; the next sync backfills up to 30 days. **Quick check:** Go to **Settings → Sources** in your Upstack dashboard and check the **Last synced** timestamp and health indicator for the affected ad platform source. **Likely cause:** The OAuth token for the ad platform source has expired. Meta tokens expire every 60 days unless refreshed, and Google Ads tokens can be revoked if the authorizing user changes their password or disables third-party app access. **Fix:** 1. Go to **Settings → Sources** and click the affected ad platform source (e.g., Facebook Ads, Google Ads). 2. If the status shows **Auth Error** or **Token Expired**, click **Reconnect**. 3. Sign in with the same account that originally authorized the connection. Ensure this account still has access to the ad accounts you want to sync. 4. After reconnecting, click **Sync Now** to trigger an immediate data pull. 5. To prevent future expiration issues: * **Meta:** Upstack automatically refreshes tokens, but if the user's Meta account password changes or 2FA is reset, a manual reconnection is required. * **Google Ads:** Use a service account or a dedicated Google account that won't have its password changed frequently. 6. Ad spend data syncs every 6 hours. After reconnecting, the next sync will backfill up to 30 days of missed data. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. ## Related guides Why connections break and how to prevent future disconnections. Why Google Ads sources disconnect and how reporting is affected. # I can't see my ads account in Upstack Data Source: https://docs.upstackdata.com/troubleshooting/ads-account-missing Missing ad accounts usually mean missing Business Manager permissions or a stale Facebook connection. Verify admin access, reconnect with all accounts selected, and allow 10–15 minutes to sync. If your ads account isn't showing in Upstack Data, it's usually due to **missing permissions or connection issues**. Here's what to check: ## 1. Verify permissions Make sure you have **admin access** to the ad account and the connected **Business Manager**. ## 2. Reconnect Facebook Go to your Upstack Data integrations and reauthorize Facebook. When reconnecting, select **"Edit Settings"** and make sure **all ad accounts, pixels, and pages** are checked — accounts left unchecked won't be imported. ## 3. Allow time for syncing Once reconnected, it may take up to **10–15 minutes** for your accounts to appear. ## 4. Check ad account ownership If the account is owned by a partner agency, make sure they've granted your user full access in Business Manager. If it still doesn't appear after reconnecting, contact support — we'll help verify the integration and get your ad account showing correctly. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. ## Related guides Reconnect a destination that dropped offline. General integration connection troubleshooting. # Can I get TikTok attribution in Upstack Data? Source: https://docs.upstackdata.com/troubleshooting/can-i-get-tiktok-attribution Yes — connect TikTok as a destination with your TikTok Pixel ID and Events API token, and Upstack attributes TikTok ad conversions in your dashboard. **Yes.** Upstack Data tracks and attributes TikTok conversions. Connect TikTok as a destination using your **TikTok Pixel ID** and an **Events API access token** — see the [TikTok destination guide](/destinations/catalog/tiktok) for the full setup. Once connected, you can see how your TikTok ads contribute to sales and other key metrics in your Upstack Data dashboard. For end-to-end onboarding, follow the [TikTok Ads onboarding guide](/destinations/catalog/tiktok/complete-how-to-guide-for-onboarding-tiktok-ads-in-upstack-data). *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. # How do I cancel my subscription? Source: https://docs.upstackdata.com/troubleshooting/cancel-subscription Cancel by uninstalling the app if you're billed through Shopify, or via the red Cancel button in Settings → Billing if you're on Stripe direct billing. How you cancel depends on your billing method — see [Identify your billing method](/billing/how-do-i-identify-my-billing-method) if you're unsure which one you're on. ## Shopify billing If you're billed through Shopify, **uninstalling the Upstack Data app cancels your subscription automatically**. You won't be charged after the app is removed. If you ever want to use Upstack Data again, you can reinstall and your store can be reconnected — see [Install Upstack on Shopify](/quickstart/install-on-shopify). ## Stripe (direct) billing If you pay by credit card through Stripe, uninstalling is not enough. Cancel from the dashboard: 1. Log in to your [Upstack Data dashboard](https://app.upstackdata.com/) and go to **Settings → Billing**. 2. Click the red **Cancel** button and confirm. For full step-by-step instructions with screenshots, see [How do I cancel my subscription?](/billing/how-do-i-cancel-my-subscription) *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. # Complete setup guide for Shopify brands Source: https://docs.upstackdata.com/troubleshooting/complete-shopify-setup-guide Install Upstack Data on Shopify end to end: connect the app, enable the theme extension or custom pixel, set consent preferences, and configure multi-domain, multi-store, and custom-page (Replo) tracking. This guide covers everything you need to set up Upstack Data tracking on your Shopify store — from connecting the app through advanced configurations for custom pages and multi-store brands. ## Prerequisites * **Active Shopify store** with admin access * **Facebook Business Manager account** with an active Ads account * **Meta Pixel** already created (if not, you can create one during Upstack setup) ## Part 1: Connect Upstack Data and enable tracking ### Step 1: Connect the app Connect Shopify from inside the Upstack dashboard — not from the Shopify App Store: 1. Sign in to your [Upstack Data dashboard](https://app.upstackdata.com/). 2. Open **Data Sources → Shopify**, then authorize the install in your Shopify Admin. For a detailed walkthrough, see [How to download and install the Upstack Data app in Shopify](/guides/shopify/how-to-download-and-install-upstack-data-app-in-shopify). **What permissions does Upstack Data need?** We need access to your Shopify customer events (purchases, add-to-cart, page views) to send accurate data to Meta. We don't store any customer data — we only forward events to your destinations. ### Step 2: Enable the Theme App Extension After connecting, enable the Theme App Extension — this is required for tracking to work: 1. In the Upstack Data app, look for the **Theme App Extension** section. 2. Click **Enable Theme App Extension** (or **Activate on theme**). 3. Select your active Shopify theme and click **Confirm**. **What does the Theme App Extension do?** It adds the Upstack tracking code to your store's theme without modifying the code directly, so theme updates won't break your tracking. If you have multiple themes, repeat this for each one you want to track. See [How to ensure the theme app extension is enabled](/guides/shopify/how-to-ensure-upstack-data-theme-app-extension-is-enabled). ### Step 3: Add a Custom Pixel (alternative method) If the Theme App Extension doesn't work for your setup (rare), you can install a Custom Pixel instead: 1. Go to your **Shopify Admin → Settings → Customer events**. 2. Click **Add custom pixel** and select **Upstack Data**. 3. Click **Add pixel** and follow the setup prompts in the Upstack Data app. Custom Pixels work the same way as Theme App Extensions but are managed separately. Use one or the other, not both. ### Step 4: Set consent and privacy settings Before your pixel starts firing, configure your consent and privacy preferences: 1. In the Upstack Data app, go to **Settings** or **Configuration** and look for **Consent** or **Privacy** options. 2. Choose your consent preferences: * **Functional** — required for core tracking (recommended) * **Marketing** — for ad optimization and retargeting * **Analytics** — for audience insights 3. Save your settings. Full walkthrough: [How to set up custom pixel privacy settings](/guides/shopify/how-to-setup-upstack-custom-pixel-privacy-settings). **Does Upstack Data respect user consent?** Yes. We honor your Shopify consent banner and Meta Conversions API consent settings. We only send data that your customers have consented to share. ### Basic setup complete At this point your Upstack Data pixel should be: * ✓ Installed on your Shopify store * ✓ Firing page views, add-to-cart, and purchase events * ✓ Respecting user consent * ✓ Sending data to your destinations ## Part 2: Multi-domain and multi-store configuration ### Single domain (most common) If your store uses one domain (e.g., `mystore.shopify.com` or `www.mystore.com`), the setup above is complete — your pixel is automatically configured for your primary domain. ### Subdomains (www vs. non-www) If you use multiple versions of your domain (`mystore.com` AND `www.mystore.com`): 1. In Shopify, go to **Settings → Domains** and verify all your primary and secondary domains are listed. 2. In the Upstack Data app, check if there's a **Domain Configuration** section. 3. If your subdomains aren't tracking, you may need to hard-code the pixel script (see [Part 3](#part-3-custom-page-and-replo-setup)). **Best practice:** use a redirect to consolidate to one primary domain (e.g., `mystore.com` → `www.mystore.com`). This ensures all traffic hits the same domain and tracking is consistent. ### Alias domains or secondary domains If you have a secondary or alias domain (e.g., `mystore.com` is primary, `mystorealias.com` is an alias): 1. **Option A (recommended):** hard-code the pixel on the alias domain manually (see [Part 3](#part-3-custom-page-and-replo-setup)). 2. **Option B:** ask Upstack support to configure server-side pixel tracking for your alias domain. 3. **Verify:** use Pixel Helper on both domains to confirm events are firing. Server-side tracking ensures Click ID is preserved even when users are redirected between domains. See [Set up Upstack Data on a landing page or subdomain](/resources/how-to-set-up-upstack-data-on-a-landing-page-or-subdomain). ### Multi-store brands (multiple Shopify stores) Each store needs its own Upstack setup: 1. **Store 1:** connect Upstack Data and complete setup (as above). 2. **Store 2:** repeat the process — see [Using Upstack Data on multiple stores](/troubleshooting/multiple-stores-and-pricing). 3. **Each store should have its own Meta Pixel ID** (or use one pixel for all stores if intentional). 4. **Verify in Meta Events Manager** that events from each domain arrive correctly. ## Part 3: Custom page and Replo setup ### Understanding custom pages Shopify's native pages include product pages, cart, checkout, and collection pages. Many brands also use builders like **Replo** for landing pages, thank-you pages, or custom storefronts. Pages built outside Shopify (even if hosted on your domain) won't automatically include the Upstack Data pixel — you'll need to hard-code the tracking script. ### Hard-code the pixel on Replo pages (or other custom pages) **Step 1: Get your Meta Pixel ID** 1. In the Upstack Data app, find your **Meta Pixel ID** (usually visible on the dashboard). 2. Copy this ID. **Step 2: Add the pixel script to your custom page** In Replo (or your custom page builder), find the **Head Code** or **Custom Code** section: 1. Go to your **Replo Editor → Settings → Head Code** (or **Custom Code**). 2. Paste the pixel script, replacing `YOUR_PIXEL_ID` with your actual Meta Pixel ID: ```html theme={null} ``` **Step 3: Use async instead of defer** **Critical:** always use `async` loading, NOT `defer`. If you use `defer` and users bounce within 2–3 seconds, the pixel won't fire. ```html theme={null} ``` **Step 4: Verify Click ID preservation** If you're using Replo for checkout pages: 1. In Replo settings, find **Redirect** or **Checkout Integration**. 2. Ensure the `fbclid` parameter is passed along in the redirect URL. 3. Test with Pixel Helper to confirm Click ID appears in the pixel event. **What is Click ID?** It's Meta's way of tracking which ad led to a conversion. If Click ID is lost during a redirect, Meta can't attribute the purchase to your ad, and your ROAS will be inaccurate. See also [Implementing Upstack Data on landing pages](/resources/implementing-upstack-data-on-landing-pages). ### Verify custom page tracking 1. Open Pixel Helper and visit your custom page (Replo landing page, thank-you page, etc.). 2. Confirm that a **PageView** event fires. 3. Check that **Click ID** is present in the event details. 4. Add an item to cart or make a purchase (if applicable) and confirm **AddToCart** or **Purchase** events fire with correct values. ## Part 4: Handling common setup issues ### Issue: app onboarding not working (pre-authenticated store) If you installed Upstack Data before and are setting it up again, the app may not show the login form. **Fix:** in the Upstack Data app settings, enable **"Always Show Login Form"**, then log out and back in — the full setup flow should now appear. ### Issue: events not firing after installation **Check these in order:** 1. **Theme App Extension enabled?** Go to **Settings → Customer events** and confirm Upstack Data is active. 2. **Custom Pixel installed?** If using a Custom Pixel instead of the Theme Extension, confirm it's added. 3. **Is your theme compatible?** Older custom themes may not support Theme App Extensions — contact Upstack support. 4. **Is JavaScript enabled in your browser?** Some privacy extensions block scripts. For deeper diagnosis, see [How to troubleshoot your pixel](/troubleshooting/troubleshoot-pixel-issues). ### Issue: conversion value is wrong **Most common cause:** your products are bundled or discounted, but your pixel fires with the pre-discount price. **Example:** a $150 bundle is discounted to $80, but your pixel fires with value: \$150. **Fix:** in your bundle/discount app settings (Kaching, Bold, Recharge, etc.), configure it to send **zero-dollar values** for bundled items — or ensure the pixel fires **after** the discount is applied. Test in Pixel Helper to confirm the correct (discounted) value fires. ### Issue: multiple pixels firing (duplicate tracking) If Pixel Helper shows the same event twice, you have duplicate tracking: 1. **GTM installed?** Check if GTM is also firing the Meta pixel. 2. **Stape or Triple Whale?** These data layer tools may fire duplicate events. 3. **Two custom pixels installed?** Go to **Settings → Customer events** and verify only one Upstack pixel is active. **Fix:** disable the duplicate source or coordinate with your analytics team about which tool is primary. ## Part 5: Verify your setup is complete After installation, confirm these events are tracking: * **Page View** — every time someone visits a page * **Add to Cart** — when someone adds a product to their cart * **Purchase** — when someone completes a purchase, with correct value ### Quick verification checklist * [ ] Theme App Extension is enabled (or Custom Pixel is added) * [ ] Pixel Helper shows events firing on your store * [ ] Event values match your product prices (post-discount) * [ ] Click ID is present in event details * [ ] Meta Events Manager shows events arriving in real time * [ ] Custom pages (Replo, etc.) have the pixel hard-coded with `async` loading * [ ] No duplicate events in Pixel Helper **All checks passing?** Great! Your Upstack Data setup is complete and tracking correctly. For a full verification walkthrough, see [Verify your Shopify pixel](/troubleshooting/verify-your-shopify-pixel). ## When to contact Upstack support Reach out if you encounter: * Theme App Extension won't enable * Custom Pixel won't install * Events fire in Pixel Helper but not in Meta Events Manager * Setup flow doesn't appear after app installation * Multi-domain or multi-store specific issues * Custom page integrations (Replo, Kaching, etc.) aren't tracking * Conversion values are consistently incorrect **Include with your request:** * Screenshot of your Shopify theme settings * Screenshot of Pixel Helper (with events visible) * Your store domain(s) * Description of what you're trying to set up *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. ## Summary: setup path for different scenarios **For a standard Shopify store (most common):** connect the app → enable Theme App Extension → set consent/privacy settings → verify with Pixel Helper → done! **For multiple domains (www vs. non-www):** follow standard setup, hard-code the pixel on any subdomains that aren't tracking, and verify on each domain with Pixel Helper. **For custom pages (Replo, Kaching, etc.):** follow standard setup, hard-code the pixel script on custom pages with `async` loading, verify Click ID, and test each page with Pixel Helper. **For multiple Shopify stores:** repeat standard setup on each store, give each store its own Meta Pixel ID, and verify in Meta Events Manager that events from each store arrive separately. Most brands complete setup in under 15 minutes. Custom page configurations may take an additional 10–15 minutes depending on complexity. # How to connect marketing channels Source: https://docs.upstackdata.com/troubleshooting/connect-marketing-channels Connect Facebook, Google Ads, TikTok, and other marketing channels to Upstack Data from the dashboard so performance data flows into your attribution reports. Marketing channels are the ad platforms and email tools Upstack pulls performance data from. Connecting them lets Upstack attribute sales to your campaigns. ## Steps 1. Log in to your [Upstack Data dashboard](https://app.upstackdata.com/). 2. Navigate to the **Settings** tab. 3. Click **Marketing Channels** under the **Marketing** section. 4. Select the marketing channels you want to connect (e.g., Facebook, Google Ads). 5. Follow the prompts to authenticate and connect your account for each channel. 6. Once connected, your marketing performance data starts flowing into the Upstack Data app. Depending on the marketing channel, you may need to grant the app certain permissions or access to your data to complete the connection. Follow the prompts in the app for each channel. ## Channel-specific guides Connect your Facebook ads account. Connect your Google Ads account. TikTok destination setup. All supported destinations. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. # Conversions are attributed to the wrong day Source: https://docs.upstackdata.com/troubleshooting/conversions-attributed-to-wrong-day Conversions landing on different days per platform? Timezone mismatches between Upstack, Meta, and Google Analytics shift late-night conversions across calendar days. Align reporting timezones. **Likely cause:** Timezone mismatch between platforms. If Upstack, Meta, and Google Analytics use different reporting timezones, a conversion at 11 PM EST may appear on different calendar days depending on each platform's setting. **How to reconcile:** 1. Check your Upstack reporting timezone: go to **Settings → Workspace** and note the timezone. 2. Check Meta Ads Manager: go to **Ad Account Settings** and note the timezone. 3. Check Google Analytics: go to **Admin → Property Settings** and note the timezone. 4. Align all platforms to the same timezone for the most accurate comparison. In Upstack, you can change the reporting timezone under **Settings → Workspace** (this only affects how data is displayed, not how it's collected). 5. When comparing, always specify the exact same date range in UTC or use the same local timezone across all tools. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. # My data isn't showing correctly Source: https://docs.upstackdata.com/troubleshooting/data-not-showing-correctly Inaccurate dashboard data usually means an integration isn't fully connected or syncing is still in progress. Verify integrations, check permissions, allow sync time, and review your tracking setup. If your dashboard data doesn't look accurate, don't worry — this usually happens when an integration isn't fully connected or data syncing is still in progress. ## What to check first ### 1. Verify your integrations Make sure Shopify, Facebook, Google Ads, Klaviyo, and your other platforms are all properly connected in Upstack Data. See [connecting marketing channels](/troubleshooting/connect-marketing-channels) for the connection flow. ### 2. Check connection permissions Ensure you have admin access on each platform and that data-sharing or pixel permissions are correctly enabled. ### 3. Allow time for syncing It may take a few hours for new or updated connections to reflect in your dashboard. See [events delayed in dashboard](/troubleshooting/events-delayed-in-dashboard). ### 4. Review your tracking setup Follow the setup guides for your integrations to confirm all tags and pixels are firing correctly — start with [how to troubleshoot your pixel](/troubleshooting/troubleshoot-pixel-issues). ## Digging deeper If the issue is specific, these guides cover the most common cases: Store data isn't updating. Integration is live but silent. Timezone and attribution timing. Double-counted revenue. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. # Some events are delivered, but the event count is much lower than expected Source: https://docs.upstackdata.com/troubleshooting/destination-event-count-lower-than-expected Destination receiving fewer events than Upstack captures? The destination's API rate limit is throttling delivery. Check for 429 errors in the event log and raise your API tier if needed. **Likely cause:** The destination's API rate limit is being hit, causing Upstack to throttle or drop events. This is more common during flash sales or high-traffic events. **Fix:** 1. Check the destination's **Event Log** in Upstack for rate-limit errors (HTTP `429` responses). 2. If you see 429 errors, Upstack automatically retries with backoff — most events will be delivered within 30 minutes. 3. For sustained high-traffic stores, consider upgrading your destination platform's API tier: * Meta: Standard access tokens support up to 2,000 events/hour. Request **Advanced Access** in Meta Business Settings for higher limits. * TikTok: Contact your TikTok rep to increase API quota. 4. Check your Upstack plan — some plans have monthly event forwarding limits. Go to **Settings → Subscription** to see your usage. [View plans and pricing](/billing/plans-and-pricing) if you need to upgrade. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. ## Related guides Why deduplication differences cause a small, expected gap between platforms. # Destination shows 'Disconnected' or 'Not Connected' Source: https://docs.upstackdata.com/troubleshooting/destination-shows-disconnected A destination showing Disconnected or Not Connected was never fully authorized or the OAuth flow was interrupted. Reconnect it and grant all requested permissions to restore delivery. **Likely cause:** The destination was never fully connected, or the OAuth authorization flow was interrupted before completion. **Fix:** 1. Go to **Destinations** and click the affected destination. 2. If the status says **Not Connected**, click **Connect** to start the authorization flow. 3. Complete the full OAuth flow in the popup window — make sure to grant all requested permissions. For Meta, ensure you select the correct Ad Account and Pixel. For TikTok, select the correct Advertiser Account. 4. After authorization, return to Upstack and confirm the status changes to **Connected** (green). 5. Trigger a test event on your store and check the Live Event Stream to verify the destination receives it. Pop-up blockers can silently prevent the OAuth window from opening. If clicking **Connect** does nothing, allow pop-ups for `app.upstackdata.com`. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. ## Related guides Connect Meta CAPI as your first server-side destination with Upstack Signal. Why connections break and how to prevent future disconnections. # Destination was working but stopped with an 'Auth Error' or 'Token Expired' Source: https://docs.upstackdata.com/troubleshooting/destination-token-expired-or-auth-error An Auth Error or Token Expired status means the destination's OAuth token expired or was revoked — often after a password change. Re-authorize and check the event log to confirm delivery resumed. **Likely cause:** The API token or OAuth refresh token for the destination has expired or been revoked. This commonly happens when someone changes the password on the connected ad account, or when Meta/TikTok rotates tokens after a security event. **Fix:** 1. Go to **Destinations** → click the affected destination. 2. Click **Reconnect** or **Re-authorize** to initiate a fresh OAuth flow. 3. Sign into the destination platform and grant permissions again. 4. After reconnecting, check the destination's **Event Log** in Upstack. You should see new events being delivered within a few minutes. 5. For Meta specifically: if you manage multiple Business Managers, verify you're authorizing with the account that owns the target Pixel — using a different account will cause a permissions error. For the full reconnect walkthrough with screenshots, see [How to reconnect a disconnected integration](/troubleshooting/integration-connection-errors-and-disconnections#how-to-reconnect-a-disconnected-integration). *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. # Events are delivered but the destination reports 0 conversions or a low match rate Source: https://docs.upstackdata.com/troubleshooting/destination-zero-conversions-or-low-match-rate Events delivered but Meta or TikTok reports zero conversions? Event mapping is likely misconfigured. Verify Upstack events map to the right destination events and required parameters are present. **Likely cause:** Event mapping is misconfigured — the events Upstack sends don't match the conversion events the destination expects, or required parameters are missing. **Fix:** 1. Go to **Destinations** → click the destination → **Event Mapping** tab. 2. Verify that Upstack events are mapped to the correct destination events. For example: * `Purchase` → Meta's `Purchase` (not `AddToCart`) * `AddToCart` → TikTok's `AddToCart` (case-sensitive) * `PageView` → GA4's `page_view` 3. Check that required parameters are mapped — most Conversion APIs require `event_time`, `event_source_url`, and at least one identity field (email or phone). 4. For Meta CAPI: open Meta Events Manager → **Test Events** tab and compare the parameters Upstack sends against what Meta expects. 5. Save any mapping changes and monitor the event log for the next 15 minutes. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. # PageView or AddToCart events are doubled on certain pages Source: https://docs.upstackdata.com/troubleshooting/duplicate-pageview-or-addtocart-events PageView or AddToCart events doubled on specific pages? A page reload or SPA navigation quirk is firing the pixel twice. Check for duplicate Upstack scripts and AJAX cart reload behavior. **Likely cause:** A page reload or client-side navigation quirk is causing the Upstack pixel to fire twice. Common triggers include Shopify's AJAX cart updates (which some themes handle as full page reloads) and single-page app themes that fire both a `popstate` event and a full page load. **Fix:** 1. Open your store in Chrome → DevTools → **Network** tab. Filter by `upstack` or your pixel endpoint. 2. Navigate to the page where duplicates occur. Watch for two network requests firing for the same event. 3. If you see two requests: * Check if your theme uses AJAX cart functionality — some themes trigger a full page reload after adding to cart, which fires `PageView` again. * Check if you have a custom Upstack initialization script in addition to the app embed — only one should be active. 4. Go to **Online Store → Themes → Customize → App embeds** and ensure only the official **Upstack Data** embed is enabled. Remove any manual ` ``` **Why this matters:** If your pixel uses `defer` instead of `async`, it won't load until after the page is fully rendered. If users bounce within the first 2–3 seconds, the pixel never fires, causing major under-counting. **How to fix:** Contact Upstack support with a screenshot of your script tag. We can update your pixel configuration to use `async` loading. ## Step 4: Check for competing tracking tools If you're seeing **double the events** (e.g., Upstack shows 10,000 page views but Facebook shows 20,000), you likely have duplicate pixel tracking. **Common culprits:** * Google Tag Manager (GTM) firing the same pixel * Stape (a data layer tool) sending duplicate events * Triple Whale Sonar tracking the same conversions * Multiple Upstack Data pixels installed * Replo or custom page tracking firing the same events **To fix:** Disable the duplicate tracking source — usually by keeping Upstack Data as your primary tracking method and removing others. Check GTM for conflicting Meta pixel tags, and in Shopify go to **Settings → Customer events** to verify only one Upstack pixel is active. ## Step 5: Audit third-party app configurations If you're using apps like Replo (custom pages), Kaching (one-click upsells), or other checkout builders, they may be sending their own conversion data that conflicts with Upstack. **Apps to check:** * **Replo** — Verify the pixel script is set to `async` loading, not `defer`. * **Kaching** — Check if it's tracking Add to Cart or Purchase separately. * **Bundle/discount apps** — These often send inflated values because they show the full price before discount. Custom theme code can also interfere — if you've modified your theme, check that no custom scripts conflict with the pixel, and temporarily disable suspect apps to see if the error clears. ## Step 6: Fix bundle and discount tracking issues **The problem:** When products are bundled with a discount, your store shows the full price first, then applies the discount at checkout. Your pixel may capture the full (inflated) price, causing Meta to optimize for the wrong bid. **Example:** A $150 bundle shows as $150 in inventory, but costs $80 at checkout. Your pixel fires with value: $150, Facebook optimizes for high AOV, bid errors occur. **How to fix:** 1. Find your bundle or discount app settings. 2. Configure it to send **zero-dollar values** for discounted bundle items. 3. Or, ensure your pixel only fires with **post-discount prices**. ## Step 7: Check for redirect loops and domain issues If your Click ID is being lost, or if events aren't firing on subdomains, you likely have a domain configuration issue. **Common problems:** * **Subdomains** — If you have `www.example.com` and `example.com`, the pixel may not recognize both. * **Alias domains** — Secondary domains may need server-side pixel setup. * **Redirects** — A redirect loop can break Click ID preservation. **How to fix:** 1. Consolidate to one primary domain if possible. 2. For subdomains, ensure the pixel is hard-coded on all domains. 3. For redirects, remove redirect loops in your domain configuration. 4. Contact Upstack support — we can configure server-side pixel tracking if needed. ## When to escalate to Upstack support If you've worked through the above steps and still have issues, gather this information and contact us: 1. **Screenshot of Pixel Helper** showing the event (or lack thereof). 2. **Screenshot of your script tag** (from browser Inspector). 3. **List of third-party apps** you have installed. 4. **Comparison of Upstack vs. Facebook event counts** for the last 24–48 hours. 5. **Your Shopify store domain(s).** 6. **Exact event counts** — what you expect vs. what you're seeing. ## Summary: the diagnostic path 1. **Open Pixel Helper** — events firing? → Go to Step 2. 2. **No events?** → Check script tag (Step 3), verify app installation, ensure consent is enabled. 3. **Double events?** → Check for competing trackers (Step 4) or third-party apps (Step 5). 4. **Wrong values?** → Check bundle/discount config (Step 6). 5. **Missing Click ID?** → Check domain setup (Step 7). 6. **Still stuck?** → Escalate with screenshots and details. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. ## Related guides Full verification walkthrough with Pixel Helper and Events Manager. When events never reach Upstack at all. Fix double-counted conversions in Upstack. Server-side setup for alias domains. # Upstack shows more (or fewer) conversions than Meta Ads Manager Source: https://docs.upstackdata.com/troubleshooting/upstack-meta-conversions-dont-match Upstack and Meta count conversions differently — Meta defaults to 7-day click / 1-day view, Upstack to last-touch. Compare 7-day click-only in Meta against Upstack's last-touch model. **Likely cause:** Upstack and Meta use different attribution models. Meta defaults to **7-day click / 1-day view** attribution, meaning it credits a conversion to an ad if the user clicked within 7 days or viewed within 1 day. Upstack uses a **last-touch** model by default, which credits the most recent touchpoint regardless of platform. **How to reconcile:** 1. Understand that these are fundamentally different measurements — neither is "wrong." 2. In your Upstack dashboard, go to **Analytics → Attribution** and note which model is active (last-touch, first-touch, or linear). 3. In Meta Ads Manager, click **Columns → Customize** and check the **Attribution setting** at the bottom. Note the click and view windows. 4. Common reasons Upstack shows *more* conversions than Meta: * Upstack attributes organic and direct conversions that Meta doesn't claim. * Meta's attribution window may have expired for some conversions. 5. Common reasons Upstack shows *fewer* conversions than Meta: * Meta uses view-through attribution — Upstack's last-touch model won't credit an ad the user only saw but didn't click. * Meta may attribute the same conversion to multiple campaigns (especially with overlapping audiences). 6. For the closest comparison, set Meta to **7-day click only** (disable view-through) and compare with Upstack's last-touch model. Small discrepancies (5–15%) between platforms are expected and normal. If you're seeing discrepancies greater than 20% consistently, contact support with screenshots and the attribution model configured in each platform. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. ## Related guides Understand how Upstack attributes conversions across marketing touchpoints. Explore Upstack's attribution reporting dashboard and multi-touch models. # Revenue in Upstack doesn't match Shopify order totals Source: https://docs.upstackdata.com/troubleshooting/upstack-revenue-doesnt-match-shopify Shopify reports gross revenue including tax and shipping; Upstack reports the Purchase event value (typically cart subtotal). Learn how to compare the two accurately and account for refunds. **Likely cause:** Differences in how revenue is calculated — Shopify reports gross revenue including taxes and shipping by default, while Upstack reports the `Purchase` event value as sent by the pixel, which typically reflects the cart subtotal. **How to reconcile:** 1. In Shopify admin, go to **Analytics → Reports** and export the order data for the time range you're comparing. 2. Note whether Shopify includes taxes, shipping, discounts, and refunds in the total. 3. In Upstack, the `Purchase` event captures the `value` property from the checkout. This usually equals the cart subtotal before tax and shipping. 4. To compare accurately: * Shopify gross revenue **minus** taxes **minus** shipping should approximate Upstack's reported revenue. * If you've configured Upstack to include tax/shipping in the event value, the numbers should be closer. 5. Refunds also cause drift — Shopify retroactively adjusts revenue, while Upstack records the purchase at the time it occurred. Check **Events → Purchase** and filter by the date range to see the raw event values. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. # Using UTM tags in dynamic product ads Source: https://docs.upstackdata.com/troubleshooting/utm-tags-in-dpa-ads Yes — dynamic product ads support UTM tags. Build utm_source, utm_medium, and utm_campaign parameters with a URL builder and append them to your product links. **Yes, you can use UTM tags in dynamic product ads (DPAs) on Facebook.** UTM tags identify the source of traffic to your website or landing page. Adding them to your DPA links lets you track ad performance in Google Analytics or other web analytics tools. ## Configuration steps 1. Create your UTM parameters using [Google's Campaign URL Builder](https://ga-dev-tools.google/campaign-url-builder/) or another UTM generator. 2. Append the parameters to your DPA link. For example, if your DPA link is `https://www.example.com/product/123`, the tagged link looks like: ``` https://www.example.com/product/123?utm_source=facebook&utm_medium=cpc&utm_campaign=dpa ``` 3. Use the tagged link in your ad creative or ad copy. With tags in place, your analytics tool can attribute traffic and conversions to the specific campaign, giving you clearer insight into which channels drive results. ## Related guides How Upstack Data uses UTM parameters for attribution. # Verify your Upstack Data Shopify pixel is working Source: https://docs.upstackdata.com/troubleshooting/verify-your-shopify-pixel Verify your Upstack Data pixel with Meta Pixel Helper and Events Manager: confirm events fire once with correct post-discount values, Click ID is preserved, and counts match within 5–10%. After setting up Upstack Data, the critical next step is verification. This guide shows you exactly how to check that your pixel is firing correctly, tracking the right values, and sending accurate data to Meta. ## What you'll verify * **Page View events** are firing and matching your actual site traffic * **Add to Cart events** are firing once per user action (no duplicates) * **Purchase events** are firing with correct values (post-discount) * **Click ID is preserved** for accurate campaign attribution * **No duplicate tracking** from competing tools * **Real-time event flow** from your store to Meta's system ## Tool 1: Pixel Helper (real-time event checking) Pixel Helper is Meta's official browser extension that shows all Meta pixel events firing on your site in real time. ### Install Pixel Helper 1. Open your browser and visit [Meta Pixel Helper](https://www.facebook.com/business/tools/pixel-helper). 2. Click **Add to Chrome** (or your browser). 3. Confirm the installation. 4. You'll see a new icon in your browser toolbar — click it to open Pixel Helper. ### Use Pixel Helper to check events 1. Open Pixel Helper (click the icon in your toolbar). 2. Navigate to your Shopify store (e.g., mystore.com). 3. Watch for events in real time as you act: * Page loads → **PageView** event should appear * Click a product → **ViewContent** event should appear * Add to cart → **AddToCart** event should appear * Complete purchase → **Purchase** event should appear ### What good Pixel Helper output looks like Each event in Pixel Helper shows: * **Event name** (PageView, ViewContent, AddToCart, Purchase) * **Event time** (when it fired) * **Event value** (the monetary value if applicable) * **Click ID** (Meta's attribution ID) * **User ID** (if available) * **Additional properties** (product name, quantity, etc.) Example — Purchase event: ``` Event: Purchase Time: 2:47 PM Value: $89.99 Currency: USD Properties: - Content Name: Order #12345 - Content Type: product - Content IDs: [prod_123, prod_456] - Quantity: 2 - Click ID: 5a1b2c3d... ``` ### Red flags in Pixel Helper * **Duplicate events appearing** — the same event fires twice at the exact same time; you have duplicate tracking. See [Step 4](#step-4-check-for-competing-tracking). * **Missing events** — you perform an action and no event appears; your pixel isn't firing. See [troubleshooting: pixel not firing](#troubleshooting-pixel-not-firing). * **Value: \$0** — your bundle/discount logic may be configured incorrectly. See [Step 5](#step-5-check-bundle-and-discount-values). * **No Click ID** — you may have a domain configuration issue. See [Step 7](#step-7-check-domain-configuration-and-click-id-preservation). ## Tool 2: Meta Events Manager (official source of truth) While Pixel Helper shows you what's firing on your site, Meta Events Manager is where the data is actually recorded. ### Access Meta Events Manager 1. Go to [Meta Business Suite](https://business.facebook.com). 2. In the left sidebar, go to **Events Manager**. 3. Select your **Pixel** (usually named "Upstack Data" or your store name). 4. Click on the **Test Events** tab. ### Set up real-time event testing The Test Events feature lets you see events arriving at Meta in real time (with a 5–15 second delay). The test event code tells Meta to log these events separately, so they don't affect your ad optimization or reporting. 1. Keep **Events Manager open** in one browser tab. 2. **Open another tab** and log into your [Meta Business Suite](https://business.facebook.com) (so Meta recognizes you). 3. **In a third tab**, visit your Shopify store. 4. **Perform actions** on your store (page view, add to cart, purchase). 5. **Watch Events Manager** — events should arrive within 5–15 seconds. ### What good Events Manager data looks like | Time | Event Name | Event Value | Currency | Status | | ---------- | ----------- | ----------- | -------- | ---------- | | 2:45:32 PM | PageView | — | — | ✓ Complete | | 2:45:45 PM | ViewContent | — | — | ✓ Complete | | 2:46:12 PM | AddToCart | \$29.99 | USD | ✓ Complete | | 2:48:05 PM | Purchase | \$89.99 | USD | ✓ Complete | **Status = Complete** means Meta successfully received and processed the event. ### Compare Pixel Helper to Events Manager | Data Point | Pixel Helper | Events Manager | Should Match? | | ------------ | ----------------------------- | -------------- | ------------- | | Event count | 10 page views | 10 page views | ✓ Yes, 1:1 | | Event values | \$89.99 | \$89.99 | ✓ Yes | | Click ID | Present | Present | ✓ Yes | | Event names | PageView, AddToCart, Purchase | Same names | ✓ Yes | If counts differ significantly (e.g., Pixel Helper shows 10 events but Events Manager shows 5), something is blocking data flow to Meta. See [Step 8](#step-8-compare-event-counts-pixel-helper-vs-events-manager). ## Step-by-step verification process ### Step 1: Confirm basic event firing **Objective:** Make sure your pixel is firing at all. 1. Open Pixel Helper and visit your Shopify home page. 2. Wait 2–3 seconds for the page to fully load. 3. Check Pixel Helper — you should see a **PageView** event. 4. If you see it: ✓ Good! Your pixel is firing. Continue to Step 2. 5. If you don't: see [troubleshooting: pixel not firing](#troubleshooting-pixel-not-firing). ### Step 2: Test Page View accuracy Page views should match your actual site traffic within 5–10%. 1. In Pixel Helper, note the total **PageView** count. 2. Visit multiple pages on your store (home, product, collection, about). 3. Each page load should fire a **PageView** event. 4. Count total PageViews and note the number. **Expected result:** If you visited 10 pages, Pixel Helper should show approximately 10 PageView events (allowing for 5–10% variance due to bot filtering or caching). **If PageViews are significantly lower:** Your script may be set to `defer` instead of `async`, or your consent settings are blocking events. See [troubleshooting: low page views](#troubleshooting-low-page-view-counts). ### Step 3: Test Add to Cart events Add to Cart events should fire **once per user action** (no duplicates). 1. Open Pixel Helper and clear previous events (refresh the page). 2. Add a product to your cart. 3. Look for an **AddToCart** event. 4. Expected result: exactly **1 AddToCart** event fires (not 2 or more), showing the product price (post-discount), currency, content IDs, and quantity. **If you see duplicate AddToCart events:** see [Step 4](#step-4-check-for-competing-tracking). **If value is incorrect:** see [Step 5](#step-5-check-bundle-and-discount-values). ### Step 4: Check for competing tracking If Pixel Helper shows **duplicate events** (the exact same event firing twice), you likely have two tracking tools active. **Common culprits:** * **Google Tag Manager (GTM)** also firing the Meta pixel * **Stape** data layer sending duplicate events * **Triple Whale Sonar** tracking the same conversions * **Multiple Upstack pixels** installed by accident * **Third-party apps** (Replo, Kaching) with their own tracking **To identify duplicates:** add a product to cart and check Pixel Helper — two AddToCart events at the same time means duplicates; one means you're clean. **To find and fix the source:** 1. **Check GTM:** open your Shopify container in [Google Tag Manager](https://tagmanager.google.com), search for "Meta" or "Facebook", and disable any conflicting pixel tags. 2. **Check Stape:** verify it's not configured to send the same events. 3. **Check Triple Whale:** in Triple Whale settings, check if Sonar is enabled and sending pixel events. 4. **Check for multiple Upstack pixels:** in Shopify admin, go to **Settings → Customer events** and verify only one Upstack Data pixel is installed. **To fix:** disable the duplicate source or coordinate with your analytics team to use a single pixel. Most brands choose Upstack Data as the primary pixel. ### Step 5: Check bundle and discount values Your pixel should fire with the **final, post-discount price** — not the original price. **Example scenario:** a product listed at $150 with a 50% discount code should fire AddToCart/Purchase with value: $75 (not \$150). **To test this:** 1. Find a discounted product or bundle on your store and note the original and discounted prices. 2. Open Pixel Helper and add the item to cart. 3. Check the AddToCart event value: * ✓ Correct: shows \$75 (post-discount) * ✗ Wrong: shows \$150 (pre-discount) 4. Complete a purchase with the discount and check the Purchase event the same way. **If values are wrong:** the issue is likely in your bundle or discount app configuration — see [troubleshooting: incorrect conversion values](#troubleshooting-incorrect-conversion-values). ### Step 6: Verify Purchase events and conversion values This is the most critical event — it directly impacts your ROAS and ad optimization. 1. Add a product to cart (note the final price you'll pay) and complete checkout. 2. In Pixel Helper, look for a Purchase event and verify: * Event name: **Purchase** * Value: **exact amount you paid** (e.g., \$89.99) * Currency: **correct currency** (USD, CAD, etc.) * Content IDs: **product IDs from your order** * Quantity: **number of items purchased** **If the value is wrong:** check your discount/bundle logic ([Step 5](#step-5-check-bundle-and-discount-values)) or see [troubleshooting: incorrect conversion values](#troubleshooting-incorrect-conversion-values). **If Click ID is missing:** see [Step 7](#step-7-check-domain-configuration-and-click-id-preservation). ### Step 7: Check domain configuration and Click ID preservation Click ID is Meta's way of attributing purchases back to ad clicks. If Click ID is missing, your ROAS reporting will be inaccurate. **To check Click ID in events:** 1. Open Pixel Helper and click on any event (PageView, AddToCart, or Purchase). 2. Look for a field labeled **Click ID** or **fbclid**. 3. If present: ✓ Good, Click ID is being preserved. 4. If missing: ✗ You have a domain or redirect issue. **Common Click ID issues:** | Issue | Cause | Fix | | ----------------------------------------- | ------------------------------ | ----------------------------------------------------------- | | No Click ID on any events | Domain configuration | Ensure primary domain is properly configured in Shopify | | Click ID on homepage, missing on checkout | Redirect loop between domains | Consolidate to one domain or configure server-side tracking | | Click ID missing on custom pages (Replo) | Pixel not hard-coded correctly | Verify `fbclid` parameter is passed in redirects | **To fix domain issues:** 1. Go to Shopify **Settings → Domains** and note your primary domain. 2. Verify your store URL matches the domain in your browser. 3. If you have multiple domains (e.g., `mystore.com` AND `www.mystore.com`), consolidate to one or configure server-side tracking. 4. If you use custom pages (Replo), ensure the `fbclid` parameter is preserved in redirects. **Test Click ID preservation on redirect:** 1. Visit your store with a Meta ad parameter: add `?fbclid=ABC123` to your URL. 2. Proceed through checkout (allowing redirects to happen). 3. In Pixel Helper, check the Purchase event for Click ID. 4. If present: ✓ Good, redirects preserve Click ID. 5. If missing: ✗ You need to configure server-side tracking — [contact Upstack support](#when-to-contact-upstack-support). ### Step 8: Compare event counts (Pixel Helper vs. Events Manager) Event counts should be approximately the same across both tools. 1. Note Pixel Helper totals for the last 24 hours (PageView, AddToCart, Purchase counts). 2. In Meta Events Manager, select your pixel and go to **Diagnostics** or **Event Source Quality**. 3. Look at the event counts for the same 24-hour period and compare: | Event Type | Pixel Helper | Events Manager | Expected Match | | ---------- | ------------ | -------------- | -------------------- | | PageView | 1,000 | 950 | ✓ 95% (within 5–10%) | | AddToCart | 100 | 95 | ✓ 95% (within 5–10%) | | Purchase | 50 | 50 | ✓ 100% (exact match) | **If counts differ significantly:** * **More in Pixel Helper than Events Manager:** events fire on your site but don't reach Meta (consent/privacy issue). * **More in Events Manager than Pixel Helper:** another source may be sending data (check for duplicate tracking). * **Fewer Purchase events:** some checkout sessions may be incomplete or blocked. ## Troubleshooting common issues ### Troubleshooting: pixel not firing **Problem:** Pixel Helper is open but no events appear. Check in order: 1. **Is Pixel Helper showing the correct store?** Make sure you're visiting your actual Shopify store and check the URL in your address bar. 2. **Is your Theme App Extension enabled?** Go to Shopify admin → **Settings → Customer events** and confirm Upstack Data is listed and active. If not, follow the [complete Shopify setup guide](/troubleshooting/complete-shopify-setup-guide) to enable it. 3. **Is your theme compatible?** Some older custom themes don't support Theme App Extensions — try installing a Custom Pixel instead (see the setup guide). 4. **Is JavaScript enabled in your browser?** Privacy extensions (Privacy Badger, uBlock, etc.) block scripts — disable them temporarily or test in a private/incognito window. 5. **Did you just install the app?** It can take 5–15 minutes for the pixel to fully activate — wait a few minutes and refresh. **Still not working?** [Contact Upstack support](#when-to-contact-upstack-support) with a screenshot of your Shopify theme settings and Pixel Helper. ### Troubleshooting: low page view counts **Problem:** Page views fire but are significantly lower than expected. **Likely cause:** your pixel script is set to `defer` instead of `async`. If users bounce within 2–3 seconds (before the page fully loads), the pixel never fires — this causes massive under-counting. **To check:** inspect your store page, search for `fbq`, and verify the script tag uses `async`: ```html theme={null} ``` **To fix:** contact Upstack support with a screenshot of your script tag — we'll update your pixel configuration to use `async` loading. ### Troubleshooting: duplicate events firing **Problem:** Pixel Helper shows the same event twice (e.g., two AddToCart events at 2:46:12 PM). **Likely cause:** competing pixel tracking from GTM, Stape, Triple Whale, or multiple Upstack pixels. **To fix:** 1. In [Google Tag Manager](https://tagmanager.google.com), open your Shopify container, search for "Meta", "Facebook", or "Pixel", and disable or remove any conflicting tags. 2. If you use Stape or Triple Whale, verify they're not configured to send the same events. 3. In Shopify admin → **Settings → Customer events**, confirm only ONE Upstack Data pixel is installed — remove any duplicate. 4. **Verify the fix:** refresh your store in Pixel Helper, perform actions, and confirm only ONE event per action. ### Troubleshooting: incorrect conversion values **Problem:** the Purchase event shows the wrong value (e.g., $150 instead of $75 after discount). **Likely cause:** your bundle or discount app is not configured correctly. 1. Identify your bundle/discount app (Kaching, Bold, Recharge, etc.) and open its settings in Shopify admin. 2. Find the **Tracking** or **Pixel** configuration section and look for options to: * Send zero-dollar values for bundled items * Wait until the discount is applied before firing events * Use post-checkout prices only 3. Alternatively, configure the app to send the **post-discount price** to the pixel. 4. **Test:** make a discounted test purchase and verify the Purchase event shows the correct value in Pixel Helper. **If you need help:** contact Upstack support with details about your discount/bundle app setup. ### Troubleshooting: missing Click ID **Problem:** events fire, but Click ID is missing. **Likely cause:** domain configuration issue or redirect loop. 1. Go to Shopify admin → **Settings → Domains** and note your primary domain; verify your store URL matches it. 2. **Consolidate multiple domains** — if you have `mystore.com` and `www.mystore.com`, set up a redirect to use only one. 3. **For custom pages (Replo):** verify the `fbclid` parameter is passed in redirects and check Replo's **Redirect Configuration**. 4. **Test:** visit your store with `?fbclid=ABC123`, proceed to checkout, and check Pixel Helper for Click ID in the Purchase event. **If Click ID is still missing:** you may need server-side pixel tracking — contact Upstack support. ## When to contact Upstack support Reach out if: * Pixel Helper shows no events firing (after checking all steps above) * Events fire but don't reach Meta Events Manager * Your script tag shows `defer` instead of `async` * You have bundle/discount value issues and need configuration help * You need server-side pixel setup for domain/redirect issues * Custom page tracking (Replo, etc.) isn't working * You're seeing duplicate events and can't find the source **Include with your request:** * Screenshot of **Pixel Helper** (showing events or lack thereof) * Screenshot of your **script tag** (from browser Inspector, showing `async` or `defer`) * Screenshot of **Shopify theme settings** (showing Theme App Extension status) * **List of third-party apps** installed (GTM, Stape, etc.) * **Expected vs. actual event counts** (last 24–48 hours) * **Your Shopify store domain** * **Any error messages** you've seen *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. ## Quick verification checklist * [ ] Pixel Helper installed and active * [ ] PageView events firing (1 per page load) * [ ] AddToCart events firing (1 per add action, no duplicates) * [ ] Purchase events firing with correct value (post-discount) * [ ] Click ID present in all events * [ ] No duplicate events from competing tools * [ ] Event counts match between Pixel Helper and Events Manager (within 5–10%) * [ ] Meta Events Manager shows events arriving in real time * [ ] Conversion values are accurate in Meta * [ ] Custom pages have pixel hard-coded (if applicable) **All checks passing?** Your Upstack Data pixel is working correctly and tracking accurately. Most brands complete this verification in 15–20 minutes. If you encounter issues, the troubleshooting section above covers the most common problems. ## Related guides The diagnostic companion to this guide. Install and configure Upstack Data end to end. Confirm events are arriving in the Upstack dashboard. # Why turn off Facebook and Instagram data sharing? Source: https://docs.upstackdata.com/troubleshooting/why-disable-facebook-instagram-data-sharing Shopify's Facebook & Instagram data sharing sends Meta its own conversion events, which overlap with Upstack tracking and cause double counting — disable it so Upstack is your single source of truth. We recommend turning off **Facebook and Instagram data sharing** in Shopify to prevent duplicate or conflicting tracking between your Meta accounts and Upstack Data. When data sharing is enabled, Meta receives its own conversion events directly from Shopify that overlap with the events Upstack tracks and forwards. That overlap causes **double counting**, **inaccurate attribution**, and **inflated results** in your reports. Disabling data sharing makes Upstack Data the **single source of truth** for your tracking and attribution — cleaner data in, more accurate performance insights out. For the step-by-step walkthrough, see [Disable Facebook and Instagram data sharing in Shopify](/destinations/catalog/meta-capi/how-to-disable-facebook-and-instagram-data-sharing-in-shopify). The same principle applies to other channels — see [Disable existing tracking](/guides/migrations/disable-existing-tracking). *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. # Dashboard shows a different store or stays at zero despite correct setup Source: https://docs.upstackdata.com/troubleshooting/wrong-store-or-zero-events-in-dashboard Dashboard showing another store's events or zero events despite a correct setup? Your theme's Pixel ID doesn't match your Upstack workspace. Compare IDs and update the app embed. **Likely cause:** The Pixel ID configured in your theme does not match the Pixel ID for your Upstack workspace. This can happen if you copied the snippet from a different store's settings, or if your workspace was recently recreated. **Fix:** 1. In your Upstack dashboard, go to **Settings → Pixel** and copy your **Pixel ID** (it looks like `px_abc123def456`). 2. In Shopify admin, go to **Online Store → Themes → Customize → App embeds → Upstack Data**. 3. Compare the Pixel ID shown in the embed configuration with the one from step 1. They must match exactly. 4. If they differ, update the embed to use the correct Pixel ID, click **Save**, and test again. 5. Note: if you recently deleted and recreated your Upstack workspace, you will have a new Pixel ID that needs to be updated in all theme embeds. *** **Still stuck?** Contact [support@upstackdata.com](mailto:support@upstackdata.com) with your Pixel ID and a description of the issue. We typically respond within a few hours. ## Related guides Locate the Pixel ID for your Upstack Data workspace. # Improve Meta CAPI Match Quality Source: https://docs.upstackdata.com/use-cases/improve-meta-match-quality Send identity-enriched server-side events to Meta Conversions API for higher Event Match Quality scores. Event Match Quality (EMQ) is Meta's 0–10 score for how well conversion events link to the right ad interactions. Higher EMQ means Meta's algorithm gets clearer signal — lower cost per acquisition, better audience optimization, and more reliable ROAS reporting. Why it matters: Meta rewards high-EMQ events with improved attribution and campaign optimization. Events with weak or missing match keys (email, phone, click IDs) receive low scores. Ad blockers and iOS privacy limits often block browser-side pixels before they fire, so many conversion events arrive at Meta with minimal match data. Upstack improves EMQ by sending **server-side events** via the Conversions API, enriched with identity resolution. Every event carries hashed email (`em`), hashed phone (`ph`), `fbclid`, `fbp`, and other match keys whenever Upstack ID has resolved the visitor — even for events that fired when the visitor was still anonymous (session stitching attaches identity retroactively). Merchants using Upstack Signal typically see 20–35% higher EMQ compared to browser-only pixel implementations. ## How to set this up Install the Upstack Pixel on your store to capture events. Configure the Meta Conversions API destination. Understand how Upstack ID enriches events with match keys. ## Related Articles # Recover Abandoned Carts via Klaviyo Source: https://docs.upstackdata.com/use-cases/recover-abandoned-carts Trigger abandoned cart flows in Klaviyo using identity-resolved customer data from Upstack. Abandoned cart flows only fire when Klaviyo knows who the abandoner is. Shopify's native integration identifies visitors who log in or enter their email at checkout — but many abandoners browse anonymously, add to cart, and leave without ever identifying themselves. Those carts are invisible to Klaviyo. Upstack fixes this with identity resolution. When a visitor adds to cart or initiates checkout, Upstack ID resolves them — using cookies, click IDs, and cross-session behavior — and sends enriched `AddToCart` and `InitiateCheckout` events to Klaviyo with the customer's email attached. Klaviyo can now trigger the abandoned cart flow even when Shopify's native integration would have missed the visitor. Stores using Upstack Flows with Klaviyo typically see a 20–40% increase in abandoned cart flows triggered compared to Klaviyo's native Shopify integration alone. ## How to set this up Configure the Klaviyo destination and flow triggers. How Upstack ID identifies anonymous abandoners. Add and configure destinations in the dashboard. ## Related Articles # Resolve Anonymous Visitors to Customers Source: https://docs.upstackdata.com/use-cases/resolve-visitor-identities Match anonymous browsing sessions to known customers for better ad targeting and attribution. Most store visitors browse anonymously until they log in or enter an email at checkout. Without identity resolution, each anonymous session looks like a different person — your attribution fragments, retargeting audiences shrink, and conversion APIs receive events with weak match signals. Identity resolution stitches anonymous sessions to known customers. A visitor browses your store, adds to cart, leaves — then returns and completes checkout with their email. Upstack ID links that checkout identity to all prior anonymous events in the session and across devices. Suddenly Meta, TikTok, and Klaviyo can match conversions to the right profiles. Why it matters for ad platforms: higher match rates mean better optimization, larger retargeting pools, and more accurate ROAS. Upstack ID typically increases identified sessions by 30–60% compared to cookie-only tracking. Identity resolution happens automatically after you install the pixel and connect destinations. Upstack ID uses deterministic matching (email, phone, Shopify customer ID) and session stitching to link anonymous events to known customers. ## How to set this up How Upstack ID connects anonymous sessions to known customers. Fields and semantics for resolved identity. How events are retroactively attributed within sessions. ## Related Articles # Send Conversions to Multiple Platforms Source: https://docs.upstackdata.com/use-cases/send-to-multiple-platforms Forward purchase and conversion events to Meta, TikTok, Klaviyo, and GA4 simultaneously. Managing separate integrations for each ad platform and marketing tool is time-consuming and error-prone. Each integration requires its own setup, schema mapping, and maintenance — and you often end up with inconsistent data and duplicated configuration. Upstack unifies conversion forwarding: one integration captures events from your storefront, and you configure which destinations receive them. Meta, TikTok, Klaviyo, Google Analytics, and webhooks all get the same high-quality, identity-enriched data. Upstack transforms the canonical event schema into each platform's expected format — so you don't map events manually per destination. Turn destinations on or off independently. Start with Meta CAPI, then add TikTok, Klaviyo, or GA4 when ready — no need to reinstall or reconfigure event capture. ## How to set this up Install the pixel to begin capturing events. Add your first destination in the dashboard. Send events to Facebook and Instagram. Forward conversions to TikTok. Sync events for email and flow triggers. Send events to GA4 Measurement Protocol. ## Related Articles # Track Shopify Events Server-Side Source: https://docs.upstackdata.com/use-cases/track-server-side-events Capture every storefront interaction server-side, immune to ad blockers and iOS privacy restrictions. Browser-based tracking is increasingly unreliable. Ad blockers defeat pixels before they load. iOS App Tracking Transparency limits cookie-based tracking. Safari's Intelligent Tracking Prevention caps third-party cookie lifetimes. The result: conversion events vanish, attribution gaps widen, and ad platforms optimize on incomplete data. Server-side tracking captures events outside the browser — at the edge or in your backend. Upstack does this via an edge pixel plus Shopify webhooks. The lightweight pixel fires first-party requests to Cloudflare's edge, so ad blockers cannot strip the tracking call. Purchase and checkout events are also confirmed server-side via Shopify webhooks, giving you near-complete coverage. Most stores recover 20–40% of events that client-side scripts miss. Server-side tracking is especially critical for purchases: Meta and TikTok need accurate conversion data. Upstack captures 100% of completed orders via Shopify webhooks, regardless of ad blocker usage. ## How to set this up Install the Upstack Pixel to enable server-side capture. Learn how edge capture and webhooks work. See all events Upstack captures and their properties. ## Related Articles # What are data sources in Upstack Data? Source: https://docs.upstackdata.com/what-are-data-sources Data sources are the platforms Upstack pulls data from to power your attribution dashboard. Learn how Shopify, Facebook Ads, Google Ads, and TikTok sources work. Data sources — referred to in the Upstack dashboard simply as **Sources** — are the platforms that Upstack pulls data from to power your attribution dashboard and analytics. While [destinations](/what-are-destinations) handle sending event data **out** to your ad platforms, data sources handle bringing reporting data **in** — ad spend, campaign structure, impressions, clicks, and order information. The product term in the dashboard is **Sources**. We use "data sources" throughout this article for clarity, but they are the same thing. ## Why data sources matter Without data sources, your Upstack [attribution dashboard](/concepts/attribution-and-reporting) would only show one side of the equation: revenue. You'd know which orders came in and how they were attributed, but you wouldn't know how much you spent to generate those orders. Data sources complete the picture by providing: * **Ad spend by channel, campaign, and ad set** — so you can calculate ROAS. * **Campaign structure** — so you can drill down into performance at the campaign, ad set, and ad level. * **Impression and click data** — so you can understand the full funnel from ad exposure to purchase. * **Order and product data** — from Shopify, which is the foundation for revenue attribution. When both destinations and data sources are connected, Upstack combines outbound conversion data with inbound spend data to give you a unified attribution view that no single ad platform can provide on its own. ## Available data sources Upstack supports four data sources today, all connected via OAuth. Orders, revenue, products, customer data, and refunds. **Required** — this is the foundation of your tracking. Campaign structure, ad spend, impressions, and clicks from your Facebook and Instagram ad accounts. Campaign structure, ad spend, impressions, and clicks from your Google Ads account. Campaign structure, ad spend, impressions, and clicks from your TikTok Ads account. ### Shopify Shopify is the foundational data source for Upstack. It provides the order and customer data that everything else is built on. **What Upstack pulls:** * Order details (order ID, total value, currency, line items) * Product information (product names, SKUs, categories, prices) * Customer data (new vs. returning status, email, order history) * Refund and cancellation data * Discount and coupon usage **How it's connected:** Shopify is typically connected automatically when you install the Upstack app from the Shopify App Store. The app requests the necessary API permissions during installation. See [Install on Shopify](/quickstart/install-on-shopify). **Why it matters:** Every attribution metric in Upstack starts with Shopify order data. Without it, there's no revenue to attribute. Shopify data also powers features like new vs. returning customer classification (used for `nc_purchase` and `rc_purchase` events). ### Facebook Ads (Meta) Facebook Ads as a data source provides the spend and campaign performance data Upstack needs to calculate ROAS for your Facebook and Instagram advertising. **What Upstack pulls:** * Daily ad spend (at the campaign, ad set, and ad level) * Impressions and reach * Clicks and click-through rates * Campaign, ad set, and ad names and IDs * Campaign objective and optimization settings **Why it matters:** Meta is typically the largest ad spend channel for Shopify brands. Without Facebook spend data, your Upstack dashboard can't calculate Meta ROAS or show accurate cross-channel comparisons. ### Google Ads Google Ads as a data source provides spend and performance data for your Google advertising — Search, Shopping, Performance Max, Display, and YouTube campaigns. **What Upstack pulls:** * Daily ad spend (at the campaign level) * Impressions and clicks * Campaign names and IDs * Campaign type and bidding strategy **Why it matters:** Google Ads is often the second-largest spend channel for Shopify brands. Connecting it lets you compare Google and Meta performance side by side using the same attribution model. ### TikTok TikTok as a data source brings TikTok ad spend and campaign performance into your attribution dashboard so you can compare it directly with other paid channels. **What Upstack pulls:** * Daily ad spend (at the campaign and ad group level) * Impressions and clicks * Campaign and ad group names and IDs ## What data becomes available after connecting Once your data sources are connected, your Upstack attribution dashboard can display: | Metric | Requires | | ----------------------------- | ----------------------------------------------- | | Revenue by channel | Shopify (orders) + destination event data | | Ad spend by channel | Ad platform data sources (Meta, Google, TikTok) | | ROAS by channel | Both revenue attribution and ad spend data | | Cost per acquisition (CPA) | Ad spend + order count | | New customer acquisition cost | Ad spend + new customer order data | | Campaign-level performance | Ad platform data sources | Without ad platform data sources connected, you'll see revenue and order metrics but **not** spend, ROAS, or cost-per-acquisition. ## How to connect a new data source Navigate to the **Sources** section in your Upstack dashboard. Choose Shopify, Facebook Ads, Google Ads, or TikTok. You'll be redirected to log in and grant Upstack read access to the platform's reporting data. Pick the specific ad account or property to pull data from. Confirm the connection. Data typically begins populating within a few hours, with historical data backfilling over the following 24–48 hours. ## Common issues You've connected Shopify and your destinations, but you haven't connected your ad platforms as data sources. Remember: destinations send events out, data sources pull spend data in. You need both. See [Destinations vs sources](/concepts/destinations-vs-data-sources) for a full explanation. * **Check the time zone.** If your Upstack account and Facebook ad account use different time zones, yesterday's data may not have fully synced yet. * **Verify account access.** If your Facebook authentication has expired or permissions have changed, Upstack may not be able to pull spend data. Try re-authenticating the connection. * **Confirm you had active campaigns.** If no campaigns were running, \$0 is correct. Campaign-level data requires the ad platform data source to be connected and the API permissions to include campaign-level reporting access. Verify your connection has the necessary permissions. After connecting a new data source, historical data may take 24–48 hours to fully backfill. If data is still missing after 48 hours, the platform's API may limit how far back data can be retrieved. Contact Upstack support for assistance. * **Meta:** Ensure you have admin access to the Facebook Business Manager and the specific ad account you're connecting. Standard or analyst roles may not have sufficient permissions. * **Google:** Ensure you have at least read access to the Google Ads account. MCC (manager) accounts can also be used if your account is managed through one. ## Frequently asked questions In most cases, yes. When you install Upstack from the Shopify App Store, the app requests the API permissions needed to access your order and product data. You shouldn't need to configure Shopify as a data source separately. Ad spend data is typically refreshed daily. There may be a delay of several hours between when spend occurs on the ad platform and when it appears in your Upstack dashboard. Shopify order data is processed more frequently, often in near real-time. This depends on your Upstack plan and the platform. If you run ads from multiple Meta ad accounts, you may need to connect each one separately. If you move your advertising to a new ad account, you'll need to connect the new account as a data source. Historical data from the old account will remain in your dashboard, but new spend data will come from the newly connected account. ## Related See every supported data source and how each one is connected. Learn how Upstack pushes enriched event data **out** to your ad platforms. A full breakdown of how the two integration types work together. How Upstack combines source data with conversion events to attribute revenue. Shopify is the foundational data source. Start here. # What are event destinations? Source: https://docs.upstackdata.com/what-are-destinations Event destinations are the ad platforms and marketing tools where Upstack Data sends conversion events server-side. Learn what they do and which platforms are supported. Event destinations are the ad platforms and marketing tools that receive event data from Upstack Data. When a customer interacts with your Shopify store — viewing a product, adding to cart, completing a purchase — Upstack captures that event, enriches it with identity data, and delivers it to your connected destinations through their server-side APIs. Event destinations are how Upstack pushes data **out** to your ad platforms and marketing tools. If you're looking for how Upstack pulls reporting data **in** (ad spend, campaign structure, orders), see [Sources](/sources/catalog/overview). ## How event destinations work Every destination follows the same core flow: A page view, product view, add-to-cart, checkout initiation, or purchase happens on your storefront. The event enters Upstack's server-side pipeline, which runs independently of the customer's browser. Upstack's identity engine adds available customer identifiers — hashed email, phone number, name, IP address, user agent, ad platform click IDs (`fbclid`, `gclid`, `ttclid`), and browser fingerprint data. This enrichment is what makes [server-side tracking](/concepts/server-side-tracking) through Upstack more effective than browser-only pixel tracking. Events are sent via each platform's server-side API ([Meta CAPI](/destinations/catalog/meta-capi), [Google Ads](/destinations/catalog/google-ads) offline conversions, [TikTok](/destinations/catalog/tiktok) Events API, and others). See [Conversion API forwarding](/concepts/conversion-api-forwarding) for technical detail. Using the identity parameters Upstack attached, the platform matches the conversion to a user in its system, which improves attribution accuracy and ad optimization. Because this happens server-side, it's not affected by browser ad blockers, cookie restrictions, or iOS tracking limitations that degrade browser-only pixel tracking. ## Available event destinations Upstack supports the following destinations. Click any destination for a full setup guide. Send Purchase, AddToCart, ViewContent, InitiateCheckout, and custom events to Facebook and Instagram via the Conversions API. Forward purchase and conversion events via Offline Conversions and Enhanced Conversions for Smart Bidding. Send funnel events to TikTok via the Events API for conversion-optimized campaigns. Sync browse, cart, and purchase events to power Klaviyo flows and segments. Send conversion events via the Pinterest Conversions API. Send conversion events via the Snapchat Conversions API. Sync customer events and profiles to Omnisend for email/SMS automation and abandonment flows. Deliver raw event payloads to any HTTP endpoint for custom integrations and data warehouses. ### What each destination receives | Destination | API used | Events sent | Identity data sent | | -------------- | ------------------------------ | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | | **Meta CAPI** | Conversions API | Purchase, AddToCart, ViewContent, InitiateCheckout, PageView, custom events (`nc_purchase`, `rc_purchase`) | Hashed email (`em`), phone (`ph`), name (`fn`/`ln`), IP, user agent, `fbclid`, `fbp`, external ID | | **Google Ads** | Offline / Enhanced Conversions | Purchase, conversion events | `gclid`, hashed email, hashed phone | | **TikTok** | Events API | Purchase, AddToCart, ViewContent, CompletePayment, funnel events | Hashed email, phone, IP, user agent, `ttclid` | | **Pinterest** | Conversions API | Purchase, AddToCart, ViewContent, Checkout | Hashed email, click ID, IP, user agent | | **Klaviyo** | Klaviyo API | Browse, cart, purchase events | Email, customer properties (name, location), event metadata | | **Snapchat** | Conversions API | Purchase, conversion events | Hashed email, phone, IP, click ID | | **Omnisend** | Omnisend API | Browse, cart, purchase events | Email, customer properties, event metadata | | **Webhooks** | Custom HTTP | Any configured event | Full enriched event payload | GA4 is no longer a supported destination for new connections and is being deprecated. Use Google Ads for ad-platform conversion forwarding. ## How Upstack enriches data before sending The key advantage of Upstack over direct pixel tracking is the enrichment that happens before data reaches your destinations: * **Identity resolution** stitches sessions across devices and browsers. If a customer clicks a Facebook ad on their phone and later purchases on their laptop, Upstack can connect those sessions and send the complete identity data with the purchase event. * **Click ID persistence** ensures ad platform click IDs (`fbclid`, `gclid`, `ttclid`) are captured and stored server-side, surviving browser cookie expiration and cross-session navigation. * **Customer data enrichment** pulls additional customer data from Shopify (email, phone, address) and attaches it to events when available, increasing the number of identity parameters sent to each platform. This enrichment is why Upstack typically delivers higher Event Match Quality scores and better ad platform attribution than browser-only tracking. ## How to check if a destination is working ### In the destination platform 1. Go to [Facebook Events Manager](https://business.facebook.com/events_manager). 2. Select your pixel. 3. Look for events labeled **Server** in the connection method column — these are events received via CAPI from Upstack. 4. Check Event Match Quality (EMQ) scores for each event type. See [Why is my Meta EMQ panel showing zeros?](/destinations/catalog/meta-capi/why-is-my-meta-emq-panel-showing-zeros-0-0-10) if EMQ shows 0.0. 1. Go to **Google Ads → Tools & Settings → Conversions**. 2. Check that your conversion actions show recent conversion data. 3. Look for the conversion source showing offline/upload data. 1. Go to TikTok Events Manager. 2. Select your pixel. 3. Filter for **Server** events to see data coming through the Events API. 1. Go to **Klaviyo → Analytics → Metrics**. 2. Look for events like Started Checkout or Viewed Product that show Upstack as the source or integration. ## Common issues and troubleshooting * **Wait at least 1–2 hours.** Some platforms have a delay between receiving events and displaying them. * **Verify your pixel/conversion ID.** An incorrect ID means events are being sent to the wrong pixel or rejected. * **Check API permissions.** Each destination requires specific permissions. If permissions have changed or expired, events will fail to deliver. * **Check identity parameters.** Low EMQ usually means events are missing key identity fields like email or phone. Verify that your Shopify checkout collects this information. * **Review click ID capture.** If `fbclid` or `gclid` aren't being captured, match rates will be lower for users who clicked an ad. Ensure Upstack's tracking script is properly installed. If you have both Upstack sending server-side events and a browser pixel sending the same events, the ad platform may see duplicates. Upstack uses event deduplication IDs to prevent this, but you may need to [disable Shopify's built-in data sharing](/guides/migrations/disable-existing-tracking) to avoid conflicts. Platform tokens can expire. If a destination stops working after previously working correctly, try disconnecting and reconnecting it from the destinations page in your Upstack dashboard. ## Frequently asked questions You should set up a destination for every platform where you want Upstack's enriched server-side data flowing. If you advertise on Meta and Google but not TikTok, connect Meta and Google. You can always add TikTok later. Upstack sends events server-side alongside your existing browser-side pixel. Platforms use event deduplication to avoid double-counting. However, you should [disable Shopify's built-in data sharing](/guides/migrations/disable-existing-tracking) (the native Facebook/Google integrations) to avoid conflicts, as Upstack replaces that functionality with better-enriched data. Events typically begin flowing within minutes of connecting a destination. It can take up to 24 hours for the destination platform's reporting to fully reflect the incoming data, and EMQ scores from Meta take 24–48 hours to calculate. Yes. Disconnecting a destination stops Upstack from sending future events to that platform. Historical data already sent remains in the destination platform. You can reconnect at any time to resume event delivery. ## Related See every supported destination and its configuration options. Learn how Upstack pulls data **in** for reporting and attribution. How Upstack delivers high-match-quality events to ad platforms. Why server-side delivery beats browser pixels for ad measurement. Step-by-step setup for your first destination.